@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,175 @@
1
+ /**
2
+ * @fileoverview YAML Tool Processor - Simplified pipeline for YAML tool processing
3
+ * Consolidates YAML parsing, tool configuration creation, and dependency management
4
+ * into a single, cohesive class with a simple 3-step workflow: parse → create → cache
5
+ *
6
+ * @module src/ibmi-mcp-server/utils/yaml/yamlToolProcessor
7
+ */
8
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
9
+ import { RequestContext } from "../../../utils/internal/requestContext.js";
10
+ import { CachedToolConfig, ConfigBuildResult } from "./types.js";
11
+ import { SqlToolsConfig } from "../../schemas/index.js";
12
+ /**
13
+ * Result of tool processing operation
14
+ */
15
+ export interface ToolProcessingResult {
16
+ /** Whether processing was successful */
17
+ success: boolean;
18
+ /** Number of tools processed */
19
+ toolCount: number;
20
+ /** Number of sources registered */
21
+ sourceCount: number;
22
+ /** Error message if processing failed */
23
+ error?: string;
24
+ /** Processing statistics */
25
+ stats?: {
26
+ toolsProcessed: number;
27
+ sourcesRegistered: number;
28
+ toolsetMappings: number;
29
+ };
30
+ }
31
+ /**
32
+ * YAML Tool Processor - Simplified pipeline for YAML tool processing
33
+ *
34
+ * Provides a clean, simple workflow:
35
+ * 1. Parse YAML tools from configuration
36
+ * 2. Create standardized tool configurations
37
+ * 3. Cache configurations for fast registration
38
+ *
39
+ * Internally manages all dependencies and complexity, exposing only a simple API.
40
+ */
41
+ export declare class ToolProcessor {
42
+ private sourceManager;
43
+ private toolsetManager;
44
+ private isInitialized;
45
+ private yamlConfig;
46
+ private processedTools;
47
+ private toolConfigs;
48
+ private static changeCallbacks;
49
+ private static nextCallbackId;
50
+ private static watchers;
51
+ private static watchedPaths;
52
+ constructor();
53
+ /**
54
+ * Initialize the processor and all internal dependencies
55
+ * @param context - Request context for logging
56
+ */
57
+ initialize(context?: RequestContext): Promise<void>;
58
+ /**
59
+ * Process YAML tools into standardized configurations
60
+ * @param context - Request context for logging
61
+ * @returns Tool processing result
62
+ */
63
+ processTools(context?: RequestContext): Promise<ToolProcessingResult>;
64
+ /**
65
+ * Register processed tools with MCP server
66
+ * @param server - MCP server instance
67
+ * @param context - Request context for logging
68
+ */
69
+ registerWithServer(server: McpServer, context?: RequestContext): Promise<void>;
70
+ /**
71
+ * Get processed tool configurations (for caching)
72
+ * @returns Array of cached tool configurations
73
+ */
74
+ getToolConfigurations(): CachedToolConfig[];
75
+ /**
76
+ * Get the YAML configuration
77
+ * @returns The parsed YAML configuration
78
+ */
79
+ getYamlConfig(): SqlToolsConfig | null;
80
+ /**
81
+ * Check if a tool should be registered based on toolsets filtering
82
+ * @param toolName - Name of the tool to check
83
+ * @returns Whether the tool should be registered
84
+ */
85
+ shouldRegisterToolPublic(toolName: string): boolean;
86
+ /**
87
+ * Check if a tool should be registered based on toolsets filtering
88
+ * @param toolName - Name of the tool to check
89
+ * @returns Whether the tool should be registered
90
+ * @private
91
+ */
92
+ private shouldRegisterTool;
93
+ /**
94
+ * Get processing statistics
95
+ * @returns Processing statistics
96
+ */
97
+ getStats(): {
98
+ initialized: boolean;
99
+ toolCount: number;
100
+ sourceCount: number;
101
+ toolsetCount: number;
102
+ };
103
+ /**
104
+ * Parse YAML configuration from configured path
105
+ * @param context - Request context for logging
106
+ * @returns Parsed YAML configuration
107
+ * @private
108
+ */
109
+ private parseYamlConfig;
110
+ /**
111
+ * Build configuration sources based on YAML tools path type
112
+ * @param yamlToolsPath - Path to YAML tools
113
+ * @param context - Request context
114
+ * @private
115
+ */
116
+ private buildConfigSources;
117
+ /**
118
+ * Register sources from YAML configuration
119
+ * @param sources - Source configurations
120
+ * @param context - Request context
121
+ * @private
122
+ */
123
+ private registerSources;
124
+ /**
125
+ * Process tools from YAML configuration
126
+ * @param _context - Request context
127
+ * @returns Array of processed tools
128
+ * @private
129
+ */
130
+ private processYamlTools;
131
+ /**
132
+ * Create tool configurations from processed tools using standardized builder
133
+ * @param processedTools - Array of processed tools
134
+ * @param context - Request context
135
+ * @returns Array of cached tool configurations
136
+ * @private
137
+ */
138
+ private createToolConfigurations;
139
+ /**
140
+ * Clear all data and reset (for testing)
141
+ */
142
+ clearAll(): void;
143
+ /**
144
+ * Register a callback to be called when YAML configuration files change
145
+ * @param callback - Function to call when files change
146
+ * @returns Callback ID for unregistering
147
+ */
148
+ static registerChangeCallback(callback: (filePath: string, eventType: string, context?: RequestContext) => void): string;
149
+ /**
150
+ * Unregister a change callback
151
+ * @param callbackId - ID returned from registerChangeCallback
152
+ * @returns True if callback was found and removed
153
+ */
154
+ static unregisterChangeCallback(callbackId: string): boolean;
155
+ /**
156
+ * Get the number of registered change callbacks
157
+ * @returns Number of registered callbacks
158
+ */
159
+ static getCallbackCount(): number;
160
+ /**
161
+ * Start watching YAML configuration files for changes
162
+ * @param filePaths - Array of file paths to watch
163
+ * @param context - Request context for logging
164
+ */
165
+ static startWatching(filePaths: string[], context?: RequestContext): void;
166
+ /**
167
+ * Stop watching all files and clear watchers
168
+ */
169
+ static clearWatchers(): void;
170
+ static fromFile(filePath: string, context?: RequestContext): Promise<ConfigBuildResult>;
171
+ static fromFiles(filePaths: string[], context?: RequestContext): Promise<ConfigBuildResult>;
172
+ static fromDirectory(directoryPath: string, context?: RequestContext): Promise<ConfigBuildResult>;
173
+ static fromGlob(pattern: string, baseDir?: string, context?: RequestContext): Promise<ConfigBuildResult>;
174
+ }
175
+ //# sourceMappingURL=toolProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolProcessor.d.ts","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,460 @@
1
+ /**
2
+ * @fileoverview YAML Tool Processor - Simplified pipeline for YAML tool processing
3
+ * Consolidates YAML parsing, tool configuration creation, and dependency management
4
+ * into a single, cohesive class with a simple 3-step workflow: parse → create → cache
5
+ *
6
+ * @module src/ibmi-mcp-server/utils/yaml/yamlToolProcessor
7
+ */
8
+ import { watch } from "fs";
9
+ import { config } from "../../../config/index.js";
10
+ import { SourceManager } from "../../services/sourceManager.js";
11
+ import { SQLToolFactory } from "./toolFactory.js";
12
+ import { ToolsetManager } from "./toolsetManager.js";
13
+ import { ErrorHandler, logger } from "../../../utils/internal/index.js";
14
+ import { requestContextService, } from "../../../utils/internal/requestContext.js";
15
+ import { JsonRpcErrorCode, McpError } from "../../../types-global/errors.js";
16
+ import { resolve } from "path";
17
+ import { existsSync, statSync } from "fs";
18
+ import { ToolConfigBuilder } from "./toolConfigBuilder.js";
19
+ import { createHandlerFromDefinition } from "./toolDefinitions.js";
20
+ /**
21
+ * YAML Tool Processor - Simplified pipeline for YAML tool processing
22
+ *
23
+ * Provides a clean, simple workflow:
24
+ * 1. Parse YAML tools from configuration
25
+ * 2. Create standardized tool configurations
26
+ * 3. Cache configurations for fast registration
27
+ *
28
+ * Internally manages all dependencies and complexity, exposing only a simple API.
29
+ */
30
+ export class ToolProcessor {
31
+ sourceManager;
32
+ toolsetManager;
33
+ isInitialized = false;
34
+ yamlConfig = null;
35
+ processedTools = [];
36
+ toolConfigs = [];
37
+ // File watching capabilities
38
+ static changeCallbacks = new Map();
39
+ static nextCallbackId = 1;
40
+ static watchers = new Map();
41
+ static watchedPaths = new Set();
42
+ constructor() {
43
+ // Initialize internal dependencies
44
+ this.sourceManager = SourceManager.getInstance();
45
+ this.toolsetManager = ToolsetManager.getInstance();
46
+ }
47
+ /**
48
+ * Initialize the processor and all internal dependencies
49
+ * @param context - Request context for logging
50
+ */
51
+ async initialize(context) {
52
+ const operationContext = context ||
53
+ requestContextService.createRequestContext({
54
+ operation: "ToolProcessor.initialize",
55
+ });
56
+ return ErrorHandler.tryCatch(async () => {
57
+ if (this.isInitialized) {
58
+ logger.debug(operationContext, "ToolProcessor already initialized");
59
+ return;
60
+ }
61
+ logger.info(operationContext, "Initializing YAML Tool Processor");
62
+ // Validate configuration
63
+ if (!config.toolsYamlPath) {
64
+ throw new McpError(JsonRpcErrorCode.InvalidParams, "YAML tools path not configured. Please set TOOLS_YAML_PATH.", { toolsYamlPath: config.toolsYamlPath });
65
+ }
66
+ // Parse YAML configuration
67
+ this.yamlConfig = await this.parseYamlConfig(operationContext);
68
+ // Register sources with source manager
69
+ if (this.yamlConfig.sources) {
70
+ await this.registerSources(this.yamlConfig.sources, operationContext);
71
+ }
72
+ // Initialize SQL executor
73
+ SQLToolFactory.initialize(this.sourceManager);
74
+ // Initialize toolset manager
75
+ await this.toolsetManager.initialize(this.yamlConfig, operationContext);
76
+ this.isInitialized = true;
77
+ logger.info(operationContext, "YAML Tool Processor initialized successfully");
78
+ }, {
79
+ operation: "ToolProcessor.initialize",
80
+ context: operationContext,
81
+ errorCode: JsonRpcErrorCode.InternalError,
82
+ });
83
+ }
84
+ /**
85
+ * Process YAML tools into standardized configurations
86
+ * @param context - Request context for logging
87
+ * @returns Tool processing result
88
+ */
89
+ async processTools(context) {
90
+ const operationContext = context ||
91
+ requestContextService.createRequestContext({
92
+ operation: "ToolProcessor.processTools",
93
+ });
94
+ return ErrorHandler.tryCatch(async () => {
95
+ if (!this.isInitialized) {
96
+ throw new McpError(JsonRpcErrorCode.InternalError, "ToolProcessor not initialized. Call initialize() first.");
97
+ }
98
+ logger.info(operationContext, "Processing YAML tools into configurations");
99
+ // Process tools from YAML config
100
+ this.processedTools = await this.processYamlTools(operationContext);
101
+ // Apply toolsets filtering if specified
102
+ let filteredTools = this.processedTools;
103
+ const selectedToolsets = config.selectedToolsets;
104
+ if (selectedToolsets &&
105
+ Array.isArray(selectedToolsets) &&
106
+ selectedToolsets.length > 0) {
107
+ const configBuilder = ToolConfigBuilder.getInstance();
108
+ filteredTools = configBuilder.filterToolsByToolsets(this.processedTools, selectedToolsets);
109
+ logger.info(operationContext, `Filtered tools by toolsets [${selectedToolsets.join(", ")}]: ${filteredTools.length}/${this.processedTools.length} tools selected`);
110
+ }
111
+ // Create tool configurations
112
+ this.toolConfigs = await this.createToolConfigurations(filteredTools, operationContext);
113
+ const result = {
114
+ success: true,
115
+ toolCount: this.toolConfigs.length,
116
+ sourceCount: Object.keys(this.yamlConfig?.sources || {}).length,
117
+ stats: {
118
+ toolsProcessed: this.processedTools.length,
119
+ sourcesRegistered: Object.keys(this.sourceManager.getSourcesStatus()).length,
120
+ toolsetMappings: this.toolsetManager.getToolsetStats().totalTools,
121
+ },
122
+ };
123
+ logger.info({ ...operationContext, result }, `YAML tools processed successfully: ${result.toolCount} tools, ${result.sourceCount} sources`);
124
+ return result;
125
+ }, {
126
+ operation: "ToolProcessor.processTools",
127
+ context: operationContext,
128
+ errorCode: JsonRpcErrorCode.InternalError,
129
+ });
130
+ }
131
+ /**
132
+ * Register processed tools with MCP server
133
+ * @param server - MCP server instance
134
+ * @param context - Request context for logging
135
+ */
136
+ async registerWithServer(server, context) {
137
+ const operationContext = context ||
138
+ requestContextService.createRequestContext({
139
+ operation: "ToolProcessor.registerWithServer",
140
+ });
141
+ return ErrorHandler.tryCatch(async () => {
142
+ // Register YAML-generated tools
143
+ if (this.toolConfigs.length > 0) {
144
+ logger.info(operationContext, `Registering ${this.toolConfigs.length} YAML-generated tools with MCP server`);
145
+ let yamlRegisteredCount = 0;
146
+ for (const config of this.toolConfigs) {
147
+ try {
148
+ const handler = createHandlerFromDefinition(config);
149
+ server.registerTool(config.name, {
150
+ title: config.title,
151
+ description: config.description,
152
+ inputSchema: config.inputSchema.shape,
153
+ outputSchema: config.outputSchema.shape,
154
+ annotations: config.annotations,
155
+ }, handler);
156
+ yamlRegisteredCount++;
157
+ }
158
+ catch (error) {
159
+ logger.error(operationContext, `Failed to register YAML tool ${config.name}: ${error instanceof Error ? error.message : String(error)}`);
160
+ }
161
+ }
162
+ logger.info(operationContext, `Successfully registered ${yamlRegisteredCount} YAML-generated tools`);
163
+ }
164
+ logger.info(operationContext, `Total tools registered with MCP server: ${this.toolConfigs.length}`);
165
+ }, {
166
+ operation: "ToolProcessor.registerWithServer",
167
+ context: operationContext,
168
+ errorCode: JsonRpcErrorCode.InternalError,
169
+ });
170
+ }
171
+ /**
172
+ * Get processed tool configurations (for caching)
173
+ * @returns Array of cached tool configurations
174
+ */
175
+ getToolConfigurations() {
176
+ return [...this.toolConfigs];
177
+ }
178
+ /**
179
+ * Get the YAML configuration
180
+ * @returns The parsed YAML configuration
181
+ */
182
+ getYamlConfig() {
183
+ return this.yamlConfig;
184
+ }
185
+ /**
186
+ * Check if a tool should be registered based on toolsets filtering
187
+ * @param toolName - Name of the tool to check
188
+ * @returns Whether the tool should be registered
189
+ */
190
+ shouldRegisterToolPublic(toolName) {
191
+ return this.shouldRegisterTool(toolName);
192
+ }
193
+ /**
194
+ * Check if a tool should be registered based on toolsets filtering
195
+ * @param toolName - Name of the tool to check
196
+ * @returns Whether the tool should be registered
197
+ * @private
198
+ */
199
+ shouldRegisterTool(toolName) {
200
+ const selectedToolsets = config.selectedToolsets;
201
+ // If no toolsets filter is applied, register all tools
202
+ if (!selectedToolsets || selectedToolsets.length === 0) {
203
+ return true;
204
+ }
205
+ // Find which toolsets contain this tool
206
+ if (!this.yamlConfig?.toolsets) {
207
+ return false;
208
+ }
209
+ for (const [toolsetName, toolsetConfig] of Object.entries(this.yamlConfig.toolsets)) {
210
+ if (toolsetConfig.tools.includes(toolName) &&
211
+ selectedToolsets.includes(toolsetName)) {
212
+ return true;
213
+ }
214
+ }
215
+ return false;
216
+ }
217
+ /**
218
+ * Get processing statistics
219
+ * @returns Processing statistics
220
+ */
221
+ getStats() {
222
+ return {
223
+ initialized: this.isInitialized,
224
+ toolCount: this.toolConfigs.length,
225
+ sourceCount: Object.keys(this.yamlConfig?.sources || {}).length,
226
+ toolsetCount: Object.keys(this.toolsetManager.getSummary()).length,
227
+ };
228
+ }
229
+ /**
230
+ * Parse YAML configuration from configured path
231
+ * @param context - Request context for logging
232
+ * @returns Parsed YAML configuration
233
+ * @private
234
+ */
235
+ async parseYamlConfig(context) {
236
+ const configBuilder = ToolConfigBuilder.getInstance();
237
+ // Configure sources based on configured path
238
+ const sources = this.buildConfigSources(config.toolsYamlPath, context);
239
+ // Build configuration using ToolConfigBuilder
240
+ const configResult = await configBuilder.buildFromSources(sources, undefined, context);
241
+ if (!configResult.success || !configResult.config) {
242
+ const errorMessage = configResult.errors
243
+ ? configResult.errors.join(", ")
244
+ : "Unknown build error";
245
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `Failed to build YAML configuration: ${errorMessage}`, {
246
+ toolsYamlPath: config.toolsYamlPath,
247
+ errors: configResult.errors,
248
+ });
249
+ }
250
+ if (configResult.resolvedFilePaths?.length) {
251
+ ToolProcessor.startWatching(configResult.resolvedFilePaths, context);
252
+ }
253
+ return configResult.config;
254
+ }
255
+ /**
256
+ * Build configuration sources based on YAML tools path type
257
+ * @param yamlToolsPath - Path to YAML tools
258
+ * @param context - Request context
259
+ * @private
260
+ */
261
+ buildConfigSources(yamlToolsPath, context) {
262
+ if (Array.isArray(yamlToolsPath)) {
263
+ return yamlToolsPath.map((path) => ({
264
+ type: "file",
265
+ path,
266
+ required: true,
267
+ }));
268
+ }
269
+ const resolvedPath = resolve(yamlToolsPath);
270
+ if (existsSync(resolvedPath)) {
271
+ const stats = statSync(resolvedPath);
272
+ if (stats.isDirectory()) {
273
+ logger.debug(context, `Detected directory path: ${yamlToolsPath}`);
274
+ return [{ type: "directory", path: yamlToolsPath, required: true }];
275
+ }
276
+ else {
277
+ logger.debug(context, `Detected file path: ${yamlToolsPath}`);
278
+ return [{ type: "file", path: yamlToolsPath, required: true }];
279
+ }
280
+ }
281
+ else {
282
+ // Path doesn't exist, treat as file (ToolConfigBuilder will validate appropriately)
283
+ return [{ type: "file", path: yamlToolsPath, required: true }];
284
+ }
285
+ }
286
+ /**
287
+ * Register sources from YAML configuration
288
+ * @param sources - Source configurations
289
+ * @param context - Request context
290
+ * @private
291
+ */
292
+ async registerSources(sources, context) {
293
+ logger.info(context, `Registering ${Object.keys(sources).length} sources`);
294
+ for (const [sourceName, sourceConfig] of Object.entries(sources)) {
295
+ await this.sourceManager.registerSource(sourceName, sourceConfig, context);
296
+ }
297
+ }
298
+ /**
299
+ * Process tools from YAML configuration
300
+ * @param _context - Request context
301
+ * @returns Array of processed tools
302
+ * @private
303
+ */
304
+ async processYamlTools(_context) {
305
+ const processedTools = [];
306
+ if (!this.yamlConfig?.tools) {
307
+ return processedTools;
308
+ }
309
+ for (const [toolName, toolConfig] of Object.entries(this.yamlConfig.tools)) {
310
+ const sourceConfig = this.yamlConfig.sources?.[toolConfig.source];
311
+ if (!sourceConfig) {
312
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `Tool '${toolName}' references non-existent source '${toolConfig.source}'`);
313
+ }
314
+ // Find toolsets that contain this tool
315
+ const toolsets = [];
316
+ if (this.yamlConfig.toolsets) {
317
+ for (const [toolsetName, toolsetConfig] of Object.entries(this.yamlConfig.toolsets)) {
318
+ if (toolsetConfig.tools.includes(toolName)) {
319
+ toolsets.push(toolsetName);
320
+ }
321
+ }
322
+ }
323
+ processedTools.push({
324
+ name: toolName,
325
+ config: toolConfig,
326
+ source: sourceConfig,
327
+ toolsets,
328
+ metadata: {
329
+ name: toolName,
330
+ description: toolConfig.description,
331
+ domain: toolConfig.domain,
332
+ category: toolConfig.category,
333
+ toolsets,
334
+ },
335
+ });
336
+ }
337
+ return processedTools;
338
+ }
339
+ /**
340
+ * Create tool configurations from processed tools using standardized builder
341
+ * @param processedTools - Array of processed tools
342
+ * @param context - Request context
343
+ * @returns Array of cached tool configurations
344
+ * @private
345
+ */
346
+ async createToolConfigurations(processedTools, context) {
347
+ const { ToolConfigBuilder } = await import("./toolConfigBuilder.js");
348
+ const configBuilder = ToolConfigBuilder.getInstance();
349
+ const toolConfigs = [];
350
+ for (const processedTool of processedTools) {
351
+ const toolConfig = await configBuilder.buildToolConfig(processedTool.name, processedTool.config, processedTool.toolsets, context);
352
+ toolConfigs.push(toolConfig);
353
+ }
354
+ return toolConfigs;
355
+ }
356
+ /**
357
+ * Clear all data and reset (for testing)
358
+ */
359
+ clearAll() {
360
+ this.sourceManager.clearAllSources();
361
+ this.toolsetManager.clearAll();
362
+ this.isInitialized = false;
363
+ this.yamlConfig = null;
364
+ this.processedTools = [];
365
+ this.toolConfigs = [];
366
+ }
367
+ // ============================================================================
368
+ // Simplified File Watching (moved from YamlConfigBuilder)
369
+ // ============================================================================
370
+ /**
371
+ * Register a callback to be called when YAML configuration files change
372
+ * @param callback - Function to call when files change
373
+ * @returns Callback ID for unregistering
374
+ */
375
+ static registerChangeCallback(callback) {
376
+ const id = `callback_${ToolProcessor.nextCallbackId++}`;
377
+ ToolProcessor.changeCallbacks.set(id, callback);
378
+ return id;
379
+ }
380
+ /**
381
+ * Unregister a change callback
382
+ * @param callbackId - ID returned from registerChangeCallback
383
+ * @returns True if callback was found and removed
384
+ */
385
+ static unregisterChangeCallback(callbackId) {
386
+ return ToolProcessor.changeCallbacks.delete(callbackId);
387
+ }
388
+ /**
389
+ * Get the number of registered change callbacks
390
+ * @returns Number of registered callbacks
391
+ */
392
+ static getCallbackCount() {
393
+ return ToolProcessor.changeCallbacks.size;
394
+ }
395
+ /**
396
+ * Start watching YAML configuration files for changes
397
+ * @param filePaths - Array of file paths to watch
398
+ * @param context - Request context for logging
399
+ */
400
+ static startWatching(filePaths, context) {
401
+ if (!config.yamlAutoReload) {
402
+ return;
403
+ }
404
+ for (const filePath of filePaths) {
405
+ if (ToolProcessor.watchedPaths.has(filePath)) {
406
+ continue; // Already watching this path
407
+ }
408
+ try {
409
+ const watcher = watch(filePath, { persistent: false }, (eventType) => {
410
+ logger.info(context || {}, `YAML file changed (${eventType}): ${filePath}`);
411
+ // Call all registered callbacks
412
+ for (const callback of ToolProcessor.changeCallbacks.values()) {
413
+ try {
414
+ callback(filePath, eventType, context);
415
+ }
416
+ catch (error) {
417
+ logger.error(context || {}, `Error in YAML change callback: ${error instanceof Error ? error.message : String(error)}`);
418
+ }
419
+ }
420
+ });
421
+ ToolProcessor.watchers.set(filePath, watcher);
422
+ ToolProcessor.watchedPaths.add(filePath);
423
+ logger.debug(context || {}, `Started watching YAML file: ${filePath}`);
424
+ }
425
+ catch (error) {
426
+ logger.warning(context || {}, `Failed to watch YAML file: ${filePath}. ${error instanceof Error ? error.message : String(error)}`);
427
+ }
428
+ }
429
+ }
430
+ /**
431
+ * Stop watching all files and clear watchers
432
+ */
433
+ static clearWatchers() {
434
+ for (const watcher of ToolProcessor.watchers.values()) {
435
+ try {
436
+ watcher.close();
437
+ }
438
+ catch {
439
+ // Ignore errors when closing watchers
440
+ }
441
+ }
442
+ ToolProcessor.watchers.clear();
443
+ ToolProcessor.watchedPaths.clear();
444
+ ToolProcessor.changeCallbacks.clear();
445
+ }
446
+ // Static factory methods for convenience (replaces YamlConfigBuilder static methods)
447
+ static async fromFile(filePath, context) {
448
+ return ToolConfigBuilder.fromFile(filePath, context);
449
+ }
450
+ static async fromFiles(filePaths, context) {
451
+ return ToolConfigBuilder.fromFiles(filePaths, context);
452
+ }
453
+ static async fromDirectory(directoryPath, context) {
454
+ return ToolConfigBuilder.fromDirectory(directoryPath, context);
455
+ }
456
+ static async fromGlob(pattern, baseDir, context) {
457
+ return ToolConfigBuilder.fromGlob(pattern, baseDir, context);
458
+ }
459
+ }
460
+ //# sourceMappingURL=toolProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolProcessor.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolProcessor.ts"],"names":[],"mappings":"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"}