@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,15 @@
1
+ /**
2
+ * @fileoverview Shared types for authentication middleware.
3
+ * @module src/mcp-server/transports/auth/core/auth.types
4
+ */
5
+ import type { AuthInfo as SdkAuthInfo } from "@modelcontextprotocol/sdk/server/auth/types.js";
6
+ /**
7
+ * Defines the structure for authentication information derived from a token.
8
+ * It extends the base SDK type to include common optional claims and IBM i specific context.
9
+ */
10
+ export type AuthInfo = SdkAuthInfo & {
11
+ subject?: string;
12
+ ibmiToken?: string;
13
+ ibmiHost?: string;
14
+ };
15
+ //# sourceMappingURL=authTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authTypes.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/lib/authTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,gDAAgD,CAAC;AAE9F;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @fileoverview Shared types for authentication middleware.
3
+ * @module src/mcp-server/transports/auth/core/auth.types
4
+ */
5
+ export {};
6
+ // The declaration for `http.IncomingMessage` is no longer needed here,
7
+ // as the new architecture avoids direct mutation where possible and handles
8
+ // the attachment within the Hono context.
9
+ //# sourceMappingURL=authTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authTypes.js","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/lib/authTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAeH,uEAAuE;AACvE,4EAA4E;AAC5E,0CAA0C"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileoverview Provides utility functions for authorization, specifically for
3
+ * checking token scopes against required permissions for a given operation.
4
+ * @module src/mcp-server/transports/auth/core/authUtils
5
+ */
6
+ /**
7
+ * Checks if the current authentication context contains all the specified scopes.
8
+ * This function is designed to be called within tool or resource handlers to
9
+ * enforce scope-based access control. It retrieves the authentication information
10
+ * from `authContext` (AsyncLocalStorage).
11
+ *
12
+ * @param requiredScopes - An array of scope strings that are mandatory for the operation.
13
+ * @throws {McpError} Throws an error with `BaseErrorCode.INTERNAL_ERROR` if the
14
+ * authentication context is missing, which indicates a server configuration issue.
15
+ * @throws {McpError} Throws an error with `BaseErrorCode.FORBIDDEN` if one or
16
+ * more required scopes are not present in the validated token.
17
+ */
18
+ export declare function withRequiredScopes(requiredScopes: string[]): void;
19
+ //# sourceMappingURL=authUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authUtils.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/lib/authUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAuDjE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @fileoverview Provides utility functions for authorization, specifically for
3
+ * checking token scopes against required permissions for a given operation.
4
+ * @module src/mcp-server/transports/auth/core/authUtils
5
+ */
6
+ import { JsonRpcErrorCode, McpError } from "../../../../types-global/errors.js";
7
+ import { logger, requestContextService } from "../../../../utils/index.js";
8
+ import { authContext } from "./authContext.js";
9
+ /**
10
+ * Checks if the current authentication context contains all the specified scopes.
11
+ * This function is designed to be called within tool or resource handlers to
12
+ * enforce scope-based access control. It retrieves the authentication information
13
+ * from `authContext` (AsyncLocalStorage).
14
+ *
15
+ * @param requiredScopes - An array of scope strings that are mandatory for the operation.
16
+ * @throws {McpError} Throws an error with `BaseErrorCode.INTERNAL_ERROR` if the
17
+ * authentication context is missing, which indicates a server configuration issue.
18
+ * @throws {McpError} Throws an error with `BaseErrorCode.FORBIDDEN` if one or
19
+ * more required scopes are not present in the validated token.
20
+ */
21
+ export function withRequiredScopes(requiredScopes) {
22
+ const operationName = "withRequiredScopesCheck";
23
+ const initialContext = requestContextService.createRequestContext({
24
+ operation: operationName,
25
+ requiredScopes,
26
+ });
27
+ logger.debug(initialContext, "Performing scope authorization check.");
28
+ const store = authContext.getStore();
29
+ if (!store || !store.authInfo) {
30
+ logger.crit(initialContext, "Authentication context is missing in withRequiredScopes. This is a server configuration error.");
31
+ // This is a server-side logic error; the auth middleware should always populate this.
32
+ throw new McpError(JsonRpcErrorCode.InternalError, "Authentication context is missing. This indicates a server configuration error.", {
33
+ ...initialContext,
34
+ error: "AuthStore not found in AsyncLocalStorage.",
35
+ });
36
+ }
37
+ const { scopes: grantedScopes, clientId, subject } = store.authInfo;
38
+ const grantedScopeSet = new Set(grantedScopes);
39
+ const missingScopes = requiredScopes.filter((scope) => !grantedScopeSet.has(scope));
40
+ const finalContext = {
41
+ ...initialContext,
42
+ grantedScopes,
43
+ clientId,
44
+ subject,
45
+ };
46
+ if (missingScopes.length > 0) {
47
+ const errorContext = { ...finalContext, missingScopes };
48
+ logger.warning(errorContext, "Authorization failed: Missing required scopes.");
49
+ throw new McpError(JsonRpcErrorCode.Forbidden, `Insufficient permissions. Missing required scopes: ${missingScopes.join(", ")}`, errorContext);
50
+ }
51
+ logger.debug(finalContext, "Scope authorization successful.");
52
+ }
53
+ //# sourceMappingURL=authUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authUtils.js","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/lib/authUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAAwB;IACzD,MAAM,aAAa,GAAG,yBAAyB,CAAC;IAChD,MAAM,cAAc,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;QAChE,SAAS,EAAE,aAAa;QACxB,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,uCAAuC,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;IAErC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gGAAgG,CACjG,CAAC;QACF,sFAAsF;QACtF,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,iFAAiF,EACjF;YACE,GAAG,cAAc;YACjB,KAAK,EAAE,2CAA2C;SACnD,CACF,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IACpE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CACzC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CACvC,CAAC;IAEF,MAAM,YAAY,GAAG;QACnB,GAAG,cAAc;QACjB,aAAa;QACb,QAAQ;QACR,OAAO;KACR,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,aAAa,EAAE,CAAC;QACxD,MAAM,CAAC,OAAO,CACZ,YAAY,EACZ,gDAAgD,CACjD,CAAC;QACF,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,SAAS,EAC1B,sDAAsD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAChF,YAAY,CACb,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;AAChE,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview Defines the interface for all authentication strategies.
3
+ * This interface establishes a contract for verifying authentication tokens,
4
+ * ensuring that any authentication method (JWT, OAuth, etc.) can be used
5
+ * interchangeably by the core authentication middleware.
6
+ * @module src/mcp-server/transports/auth/strategies/AuthStrategy
7
+ */
8
+ import type { AuthInfo } from "../lib/authTypes.js";
9
+ export interface AuthStrategy {
10
+ /**
11
+ * Verifies an authentication token.
12
+ * @param token The raw token string extracted from the request.
13
+ * @returns A promise that resolves with the AuthInfo on successful verification.
14
+ * @throws {McpError} if the token is invalid, expired, or fails verification for any reason.
15
+ */
16
+ verify(token: string): Promise<AuthInfo>;
17
+ }
18
+ //# sourceMappingURL=authStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authStrategy.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/authStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=authStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authStrategy.js","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/authStrategy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileoverview IBM i token authentication strategy implementation.
3
+ * Validates custom IBM i bearer tokens generated by TokenManager against
4
+ * authenticated connection pools. This strategy integrates the existing
5
+ * TokenManager system with the MCP authentication framework.
6
+ * @module src/mcp-server/transports/auth/strategies/IBMiTokenStrategy
7
+ */
8
+ import type { AuthInfo } from "../lib/authTypes.js";
9
+ import type { AuthStrategy } from "./authStrategy.js";
10
+ export declare class IBMiTokenStrategy implements AuthStrategy {
11
+ private tokenManager;
12
+ constructor();
13
+ /**
14
+ * Verifies an IBM i authentication token using the TokenManager
15
+ * @param token - The raw IBM i token string extracted from the Bearer header
16
+ * @returns A promise that resolves with AuthInfo on successful verification
17
+ * @throws {McpError} if the token is invalid, expired, or fails verification
18
+ */
19
+ verify(token: string): Promise<AuthInfo>;
20
+ }
21
+ //# sourceMappingURL=ibmiTokenStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibmiTokenStrategy.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/ibmiTokenStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,YAAY,CAAe;;IAgBnC;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAqD/C"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @fileoverview IBM i token authentication strategy implementation.
3
+ * Validates custom IBM i bearer tokens generated by TokenManager against
4
+ * authenticated connection pools. This strategy integrates the existing
5
+ * TokenManager system with the MCP authentication framework.
6
+ * @module src/mcp-server/transports/auth/strategies/IBMiTokenStrategy
7
+ */
8
+ import { JsonRpcErrorCode, McpError } from "../../../../types-global/errors.js";
9
+ import { logger, requestContextService } from "../../../../utils/index.js";
10
+ import { TokenManager } from "../../../../ibmi-mcp-server/auth/tokenManager.js";
11
+ export class IBMiTokenStrategy {
12
+ tokenManager;
13
+ constructor() {
14
+ const context = requestContextService.createRequestContext({
15
+ operation: "IBMiTokenStrategy.constructor",
16
+ });
17
+ logger.debug(context, "Initializing IBM i token authentication strategy...");
18
+ this.tokenManager = TokenManager.getInstance();
19
+ logger.info(context, "IBM i token strategy initialized successfully");
20
+ }
21
+ /**
22
+ * Verifies an IBM i authentication token using the TokenManager
23
+ * @param token - The raw IBM i token string extracted from the Bearer header
24
+ * @returns A promise that resolves with AuthInfo on successful verification
25
+ * @throws {McpError} if the token is invalid, expired, or fails verification
26
+ */
27
+ async verify(token) {
28
+ const context = requestContextService.createRequestContext({
29
+ operation: "IBMiTokenStrategy.verify",
30
+ });
31
+ logger.debug(context, "Attempting to verify IBM i authentication token");
32
+ // Use existing TokenManager validation
33
+ const validation = this.tokenManager.validateToken(token, context);
34
+ if (!validation.valid || !validation.session) {
35
+ logger.warning({
36
+ ...context,
37
+ tokenPrefix: token.substring(0, 10) + "...",
38
+ error: validation.error,
39
+ }, "IBM i token validation failed");
40
+ throw new McpError(JsonRpcErrorCode.Unauthorized, validation.error || "Invalid IBM i authentication token", {
41
+ ...context,
42
+ tokenPrefix: token.substring(0, 10) + "...",
43
+ });
44
+ }
45
+ // Convert to AuthInfo format expected by middleware
46
+ const authInfo = {
47
+ token,
48
+ clientId: validation.session.credentials.user, // Use IBM i username as clientId
49
+ scopes: ["ibmi:access"], // Standard scope for IBM i access
50
+ subject: validation.session.credentials.user,
51
+ // Add IBM i specific context for YAML tools to use
52
+ ibmiToken: token,
53
+ ibmiHost: validation.session.credentials.host,
54
+ };
55
+ logger.info({
56
+ ...context,
57
+ clientId: authInfo.clientId,
58
+ ibmiHost: validation.session.credentials.host,
59
+ scopes: authInfo.scopes,
60
+ }, "IBM i token verification successful");
61
+ return authInfo;
62
+ }
63
+ }
64
+ //# sourceMappingURL=ibmiTokenStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibmiTokenStrategy.js","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/ibmiTokenStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAItE,MAAM,OAAO,iBAAiB;IACpB,YAAY,CAAe;IAEnC;QACE,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,+BAA+B;SAC3C,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CACV,OAAO,EACP,qDAAqD,CACtD,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAE/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,+CAA+C,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,0BAA0B;SACtC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,iDAAiD,CAAC,CAAC;QAEzE,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEnE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,CAAC,OAAO,CACZ;gBACE,GAAG,OAAO;gBACV,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;gBAC3C,KAAK,EAAE,UAAU,CAAC,KAAK;aACxB,EACD,+BAA+B,CAChC,CAAC;YAEF,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,YAAY,EAC7B,UAAU,CAAC,KAAK,IAAI,oCAAoC,EACxD;gBACE,GAAG,OAAO;gBACV,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;aAC5C,CACF,CAAC;QACJ,CAAC;QAED,oDAAoD;QACpD,MAAM,QAAQ,GAAa;YACzB,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,iCAAiC;YAChF,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,kCAAkC;YAC3D,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;YAC5C,mDAAmD;YACnD,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;SAC9C,CAAC;QAEF,MAAM,CAAC,IAAI,CACT;YACE,GAAG,OAAO;YACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;YAC7C,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,EACD,qCAAqC,CACtC,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import type { AuthInfo } from "../lib/authTypes.js";
2
+ import type { AuthStrategy } from "./authStrategy.js";
3
+ export declare class JwtStrategy implements AuthStrategy {
4
+ private readonly secretKey;
5
+ constructor();
6
+ verify(token: string): Promise<AuthInfo>;
7
+ }
8
+ //# sourceMappingURL=jwtStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtStrategy.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/jwtStrategy.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;;IAkCxC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CA2H/C"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * @fileoverview Implements the JWT authentication strategy.
3
+ * This module provides a concrete implementation of the AuthStrategy for validating
4
+ * JSON Web Tokens (JWTs). It encapsulates all logic related to JWT verification,
5
+ * including secret key management and payload validation.
6
+ * @module src/mcp-server/transports/auth/strategies/JwtStrategy
7
+ */
8
+ import { jwtVerify } from "jose";
9
+ import { config, environment } from "../../../../config/index.js";
10
+ import { JsonRpcErrorCode, McpError } from "../../../../types-global/errors.js";
11
+ import { ErrorHandler, logger, requestContextService } from "../../../../utils/index.js";
12
+ export class JwtStrategy {
13
+ secretKey;
14
+ constructor() {
15
+ const context = requestContextService.createRequestContext({
16
+ operation: "JwtStrategy.constructor",
17
+ });
18
+ logger.debug(context, "Initializing JwtStrategy...");
19
+ if (config.mcpAuthMode === "jwt") {
20
+ if (environment === "production" && !config.mcpAuthSecretKey) {
21
+ logger.fatal(context, "CRITICAL: MCP_AUTH_SECRET_KEY is not set in production for JWT auth.");
22
+ throw new McpError(JsonRpcErrorCode.ConfigurationError, "MCP_AUTH_SECRET_KEY must be set for JWT auth in production.", context);
23
+ }
24
+ else if (!config.mcpAuthSecretKey) {
25
+ logger.warning(context, "MCP_AUTH_SECRET_KEY is not set. JWT auth will be bypassed (DEV ONLY).");
26
+ this.secretKey = null;
27
+ }
28
+ else {
29
+ logger.info(context, "JWT secret key loaded successfully.");
30
+ this.secretKey = new TextEncoder().encode(config.mcpAuthSecretKey);
31
+ }
32
+ }
33
+ else {
34
+ this.secretKey = null;
35
+ }
36
+ }
37
+ async verify(token) {
38
+ const context = requestContextService.createRequestContext({
39
+ operation: "JwtStrategy.verify",
40
+ });
41
+ logger.debug(context, "Attempting to verify JWT.");
42
+ // Handle development mode bypass
43
+ if (!this.secretKey) {
44
+ if (environment !== "production") {
45
+ logger.warning(context, "Bypassing JWT verification: No secret key (DEV ONLY).");
46
+ return {
47
+ token: "dev-mode-placeholder-token",
48
+ clientId: config.devMcpClientId || "dev-client-id",
49
+ scopes: config.devMcpScopes || ["dev-scope"],
50
+ };
51
+ }
52
+ // This path is defensive. The constructor should prevent this state in production.
53
+ logger.crit(context, "Auth secret key is missing in production.");
54
+ throw new McpError(JsonRpcErrorCode.ConfigurationError, "Auth secret key is missing in production. This indicates a server configuration error.", context);
55
+ }
56
+ try {
57
+ const { payload: decoded } = await jwtVerify(token, this.secretKey);
58
+ logger.debug({
59
+ ...context,
60
+ claims: decoded,
61
+ }, "JWT signature verified successfully.");
62
+ const clientId = typeof decoded.cid === "string"
63
+ ? decoded.cid
64
+ : typeof decoded.client_id === "string"
65
+ ? decoded.client_id
66
+ : undefined;
67
+ if (!clientId) {
68
+ logger.warning(context, "Invalid token: missing 'cid' or 'client_id' claim.");
69
+ throw new McpError(JsonRpcErrorCode.Unauthorized, "Invalid token: missing 'cid' or 'client_id' claim.", context);
70
+ }
71
+ let scopes = [];
72
+ if (Array.isArray(decoded.scp) &&
73
+ decoded.scp.every((s) => typeof s === "string")) {
74
+ scopes = decoded.scp;
75
+ }
76
+ else if (typeof decoded.scope === "string" && decoded.scope.trim()) {
77
+ scopes = decoded.scope.split(" ").filter(Boolean);
78
+ }
79
+ if (scopes.length === 0) {
80
+ logger.warning(context, "Invalid token: missing or empty 'scp' or 'scope' claim.");
81
+ throw new McpError(JsonRpcErrorCode.Unauthorized, "Token must contain valid, non-empty scopes.", context);
82
+ }
83
+ const authInfo = {
84
+ token,
85
+ clientId,
86
+ scopes,
87
+ subject: decoded.sub,
88
+ };
89
+ logger.info({
90
+ ...context,
91
+ clientId,
92
+ scopes,
93
+ }, "JWT verification successful.");
94
+ return authInfo;
95
+ }
96
+ catch (error) {
97
+ // If the error is already a structured McpError, re-throw it directly.
98
+ if (error instanceof McpError) {
99
+ throw error;
100
+ }
101
+ const message = error instanceof Error && error.name === "JWTExpired"
102
+ ? "Token has expired."
103
+ : "Token verification failed.";
104
+ logger.warning({
105
+ ...context,
106
+ errorName: error instanceof Error ? error.name : "Unknown",
107
+ }, `JWT verification failed: ${message}`);
108
+ throw ErrorHandler.handleError(error, {
109
+ operation: "JwtStrategy.verify",
110
+ context,
111
+ rethrow: true,
112
+ errorCode: JsonRpcErrorCode.Unauthorized,
113
+ errorMapper: () => new McpError(JsonRpcErrorCode.Unauthorized, message, context),
114
+ });
115
+ }
116
+ }
117
+ }
118
+ //# sourceMappingURL=jwtStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtStrategy.js","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/jwtStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AuthInfo } from "../lib/authTypes.js";
2
+ import type { AuthStrategy } from "./authStrategy.js";
3
+ export declare class OauthStrategy implements AuthStrategy {
4
+ private readonly jwks;
5
+ constructor();
6
+ verify(token: string): Promise<AuthInfo>;
7
+ }
8
+ //# sourceMappingURL=oauthStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthStrategy.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/oauthStrategy.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwC;;IAuDvD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAmG/C"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * @fileoverview Implements the OAuth 2.1 authentication strategy.
3
+ * This module provides a concrete implementation of the AuthStrategy for validating
4
+ * JWTs against a remote JSON Web Key Set (JWKS), as is common in OAuth 2.1 flows.
5
+ * @module src/mcp-server/transports/auth/strategies/OauthStrategy
6
+ */
7
+ import { createRemoteJWKSet, jwtVerify } from "jose";
8
+ import { config } from "../../../../config/index.js";
9
+ import { JsonRpcErrorCode, McpError } from "../../../../types-global/errors.js";
10
+ import { ErrorHandler, logger, requestContextService } from "../../../../utils/index.js";
11
+ export class OauthStrategy {
12
+ jwks;
13
+ constructor() {
14
+ const context = requestContextService.createRequestContext({
15
+ operation: "OauthStrategy.constructor",
16
+ });
17
+ logger.debug(context, "Initializing OauthStrategy...");
18
+ if (config.mcpAuthMode !== "oauth") {
19
+ // This check is for internal consistency, so a standard Error is acceptable here.
20
+ throw new Error("OauthStrategy instantiated for non-oauth auth mode.");
21
+ }
22
+ if (!config.oauthIssuerUrl || !config.oauthAudience) {
23
+ logger.fatal(context, "CRITICAL: OAUTH_ISSUER_URL and OAUTH_AUDIENCE must be set for OAuth mode.");
24
+ // This is a user-facing configuration error, so McpError is appropriate.
25
+ throw new McpError(JsonRpcErrorCode.ConfigurationError, "OAUTH_ISSUER_URL and OAUTH_AUDIENCE must be set for OAuth mode.", context);
26
+ }
27
+ try {
28
+ const jwksUrl = new URL(config.oauthJwksUri ||
29
+ `${config.oauthIssuerUrl.replace(/\/$/, "")}/.well-known/jwks.json`);
30
+ this.jwks = createRemoteJWKSet(jwksUrl, {
31
+ cooldownDuration: 300000, // 5 minutes
32
+ timeoutDuration: 5000, // 5 seconds
33
+ });
34
+ logger.info(context, `JWKS client initialized for URL: ${jwksUrl.href}`);
35
+ }
36
+ catch (error) {
37
+ logger.fatal({
38
+ ...context,
39
+ error: error,
40
+ }, "Failed to initialize JWKS client.");
41
+ // This is a critical startup failure, so a specific McpError is warranted.
42
+ throw new McpError(JsonRpcErrorCode.ServiceUnavailable, "Could not initialize JWKS client for OAuth strategy.", {
43
+ ...context,
44
+ originalError: error instanceof Error ? error.message : "Unknown",
45
+ });
46
+ }
47
+ }
48
+ async verify(token) {
49
+ const context = requestContextService.createRequestContext({
50
+ operation: "OauthStrategy.verify",
51
+ });
52
+ logger.debug(context, "Attempting to verify OAuth token via JWKS.");
53
+ try {
54
+ const { payload } = await jwtVerify(token, this.jwks, {
55
+ issuer: config.oauthIssuerUrl,
56
+ audience: config.oauthAudience,
57
+ });
58
+ logger.debug({
59
+ ...context,
60
+ claims: payload,
61
+ }, "OAuth token signature verified successfully.");
62
+ // Robust scope parsing (mirroring JwtStrategy):
63
+ let scopes = [];
64
+ // Check for 'scp' claim (array format)
65
+ if (Array.isArray(payload.scp) &&
66
+ payload.scp.every((s) => typeof s === "string")) {
67
+ scopes = payload.scp;
68
+ // Check for 'scope' claim (space-delimited string format)
69
+ }
70
+ else if (typeof payload.scope === "string" && payload.scope.trim()) {
71
+ scopes = payload.scope.split(" ").filter(Boolean);
72
+ }
73
+ if (scopes.length === 0) {
74
+ logger.warning(context, "Invalid token: missing or empty 'scope' claim.");
75
+ throw new McpError(JsonRpcErrorCode.Unauthorized, "Token must contain valid, non-empty scopes.", context);
76
+ }
77
+ const clientId = typeof payload.client_id === "string" ? payload.client_id : undefined;
78
+ if (!clientId) {
79
+ logger.warning(context, "Invalid token: missing 'client_id' claim.");
80
+ throw new McpError(JsonRpcErrorCode.Unauthorized, "Token must contain a 'client_id' claim.", context);
81
+ }
82
+ const authInfo = {
83
+ token,
84
+ clientId,
85
+ scopes,
86
+ subject: typeof payload.sub === "string" ? payload.sub : undefined,
87
+ };
88
+ logger.info({
89
+ ...context,
90
+ clientId,
91
+ scopes,
92
+ }, "OAuth token verification successful.");
93
+ return authInfo;
94
+ }
95
+ catch (error) {
96
+ // If the error is already a structured McpError, re-throw it directly.
97
+ if (error instanceof McpError) {
98
+ throw error;
99
+ }
100
+ const message = error instanceof Error && error.name === "JWTExpired"
101
+ ? "Token has expired."
102
+ : "OAuth token verification failed.";
103
+ logger.warning({
104
+ ...context,
105
+ errorName: error instanceof Error ? error.name : "Unknown",
106
+ }, `OAuth token verification failed: ${message}`);
107
+ // For all other errors, use the ErrorHandler to wrap them.
108
+ throw ErrorHandler.handleError(error, {
109
+ operation: "OauthStrategy.verify",
110
+ context,
111
+ rethrow: true,
112
+ errorCode: JsonRpcErrorCode.Unauthorized,
113
+ errorMapper: () => new McpError(JsonRpcErrorCode.Unauthorized, message, context),
114
+ });
115
+ }
116
+ }
117
+ }
118
+ //# sourceMappingURL=oauthStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthStrategy.js","sourceRoot":"","sources":["../../../../../src/mcp-server/transports/auth/strategies/oauthStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @fileoverview Implements the "auto" mode transport manager.
3
+ * This manager acts as a router, delegating requests to either a stateful or a
4
+ * stateless manager based on the request's characteristics. It encapsulates the
5
+ * logic for providing a hybrid session model.
6
+ * @module src/mcp-server/transports/core/autoTransportManager
7
+ */
8
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
9
+ import { RequestContext } from "../../../utils/index.js";
10
+ import { McpTransportRequest } from "./transportRequest.js";
11
+ import { StatefulTransportOptions } from "./statefulTransportManager.js";
12
+ import { TransportManager, TransportResponse } from "./transportTypes.js";
13
+ /**
14
+ * A transport manager that dynamically handles both stateful and stateless requests.
15
+ * It inspects each request and routes it to an underlying stateful manager if it
16
+ * contains a session ID or is an initialization request. Otherwise, it handles
17
+ * the request ephemerally using a temporary stateless manager.
18
+ */
19
+ export declare class AutoTransportManager implements TransportManager {
20
+ private readonly statefulManager;
21
+ private readonly statelessManager;
22
+ /**
23
+ * @param createServerInstanceFn A factory function to create new McpServer instances.
24
+ * @param options Configuration options, primarily for the underlying stateful manager.
25
+ */
26
+ constructor(createServerInstanceFn: () => Promise<McpServer>, options: StatefulTransportOptions);
27
+ /**
28
+ * Handles an incoming request by routing it to the appropriate manager.
29
+ * If the request is an `initialize` request or includes a session ID, it is
30
+ * delegated to the stateful manager. Otherwise, a new stateless manager is
31
+ * created to handle the single request.
32
+ * @param request The standardized transport request object.
33
+ * @returns A promise that resolves to a TransportResponse object.
34
+ */
35
+ handleRequest(request: McpTransportRequest): Promise<TransportResponse>;
36
+ /**
37
+ * Delegates a session deletion request to the underlying stateful manager.
38
+ * @param sessionId The ID of the session to delete.
39
+ * @param context The request context.
40
+ * @returns A promise resolving to a TransportResponse confirming closure.
41
+ */
42
+ handleDeleteRequest(sessionId: string, context: RequestContext): Promise<TransportResponse>;
43
+ /**
44
+ * Shuts down the underlying stateful manager, cleaning up all its resources.
45
+ */
46
+ shutdown(): Promise<void>;
47
+ }
48
+ //# sourceMappingURL=autoTransportManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoTransportManager.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/autoTransportManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAEL,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE1E;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B;IAE7D;;;OAGG;gBAED,sBAAsB,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAChD,OAAO,EAAE,wBAAwB;IAWnC;;;;;;;OAOG;IACG,aAAa,CACjB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAe7B;;;;;OAKG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAI7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}