@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,57 @@
1
+ import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
2
+ import { StatefulTransportManager, } from "./statefulTransportManager.js";
3
+ import { StatelessTransportManager } from "./statelessTransportManager.js";
4
+ /**
5
+ * A transport manager that dynamically handles both stateful and stateless requests.
6
+ * It inspects each request and routes it to an underlying stateful manager if it
7
+ * contains a session ID or is an initialization request. Otherwise, it handles
8
+ * the request ephemerally using a temporary stateless manager.
9
+ */
10
+ export class AutoTransportManager {
11
+ statefulManager;
12
+ statelessManager;
13
+ /**
14
+ * @param createServerInstanceFn A factory function to create new McpServer instances.
15
+ * @param options Configuration options, primarily for the underlying stateful manager.
16
+ */
17
+ constructor(createServerInstanceFn, options) {
18
+ this.statefulManager = new StatefulTransportManager(createServerInstanceFn, options);
19
+ this.statelessManager = new StatelessTransportManager(createServerInstanceFn);
20
+ }
21
+ /**
22
+ * Handles an incoming request by routing it to the appropriate manager.
23
+ * If the request is an `initialize` request or includes a session ID, it is
24
+ * delegated to the stateful manager. Otherwise, a new stateless manager is
25
+ * created to handle the single request.
26
+ * @param request The standardized transport request object.
27
+ * @returns A promise that resolves to a TransportResponse object.
28
+ */
29
+ async handleRequest(request) {
30
+ const { body, sessionId } = request;
31
+ // Route to stateful manager if it's an initialize request or has a session ID
32
+ if (isInitializeRequest(body) || sessionId) {
33
+ // The plan describes an intermediate state for StatefulTransportManager's handleRequest,
34
+ // but for consistency with the new TransportManager interface, we will pass the whole request object.
35
+ // This anticipates the final state of the refactoring.
36
+ return this.statefulManager.handleRequest(request);
37
+ }
38
+ // Otherwise, handle as a one-off stateless request
39
+ return this.statelessManager.handleRequest(request);
40
+ }
41
+ /**
42
+ * Delegates a session deletion request to the underlying stateful manager.
43
+ * @param sessionId The ID of the session to delete.
44
+ * @param context The request context.
45
+ * @returns A promise resolving to a TransportResponse confirming closure.
46
+ */
47
+ async handleDeleteRequest(sessionId, context) {
48
+ return this.statefulManager.handleDeleteRequest(sessionId, context);
49
+ }
50
+ /**
51
+ * Shuts down the underlying stateful manager, cleaning up all its resources.
52
+ */
53
+ async shutdown() {
54
+ await this.statefulManager.shutdown();
55
+ }
56
+ }
57
+ //# sourceMappingURL=autoTransportManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoTransportManager.js","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/autoTransportManager.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EACL,wBAAwB,GAEzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IACd,eAAe,CAA2B;IAC1C,gBAAgB,CAA4B;IAE7D;;;OAGG;IACH,YACE,sBAAgD,EAChD,OAAiC;QAEjC,IAAI,CAAC,eAAe,GAAG,IAAI,wBAAwB,CACjD,sBAAsB,EACtB,OAAO,CACR,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,yBAAyB,CACnD,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CACjB,OAA4B;QAE5B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAEpC,8EAA8E;QAC9E,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;YAC3C,yFAAyF;YACzF,sGAAsG;YACtG,uDAAuD;YACvD,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;QAED,mDAAmD;QACnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CACvB,SAAiB,EACjB,OAAuB;QAEvB,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview Abstract base class for transport managers.
3
+ * @module src/mcp-server/transports/core/baseTransportManager
4
+ */
5
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import { McpTransportRequest } from "./transportRequest.js";
7
+ import { TransportManager, TransportResponse } from "./transportTypes.js";
8
+ /**
9
+ * Abstract base class for transport managers, providing common functionality.
10
+ */
11
+ export declare abstract class BaseTransportManager implements TransportManager {
12
+ protected readonly createServerInstanceFn: () => Promise<McpServer>;
13
+ constructor(createServerInstanceFn: () => Promise<McpServer>);
14
+ abstract handleRequest(request: McpTransportRequest): Promise<TransportResponse>;
15
+ abstract shutdown(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=baseTransportManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTransportManager.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/baseTransportManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE1E;;GAEG;AACH,8BAAsB,oBAAqB,YAAW,gBAAgB;IACpE,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;gBAExD,sBAAsB,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC;IAS5D,QAAQ,CAAC,aAAa,CACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAE7B,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CACnC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @fileoverview Abstract base class for transport managers.
3
+ * @module src/mcp-server/transports/core/baseTransportManager
4
+ */
5
+ import { logger, requestContextService } from "../../../utils/index.js";
6
+ /**
7
+ * Abstract base class for transport managers, providing common functionality.
8
+ */
9
+ export class BaseTransportManager {
10
+ createServerInstanceFn;
11
+ constructor(createServerInstanceFn) {
12
+ const context = requestContextService.createRequestContext({
13
+ operation: "BaseTransportManager.constructor",
14
+ managerType: this.constructor.name,
15
+ });
16
+ logger.debug(context, "Initializing transport manager.");
17
+ this.createServerInstanceFn = createServerInstanceFn;
18
+ }
19
+ }
20
+ //# sourceMappingURL=baseTransportManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTransportManager.js","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/baseTransportManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAIjE;;GAEG;AACH,MAAM,OAAgB,oBAAoB;IACrB,sBAAsB,CAA2B;IAEpE,YAAY,sBAAgD;QAC1D,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,kCAAkC;YAC7C,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;QACzD,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IACvD,CAAC;CAOF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @fileoverview Provides a utility for converting HTTP headers between Node.js
3
+ * and Web Standards formats, ensuring compliance and correctness.
4
+ * @module src/mcp-server/transports/core/headerUtils
5
+ */
6
+ import type { OutgoingHttpHeaders, IncomingHttpHeaders } from "http";
7
+ /**
8
+ * Converts Node.js-style OutgoingHttpHeaders to a Web-standard Headers object.
9
+ *
10
+ * This function is critical for interoperability between Node.js's `http` module
11
+ * and Web APIs like Fetch and Hono. It correctly handles multi-value headers
12
+ * (e.g., `Set-Cookie`), which Node.js represents as an array of strings, by
13
+ * using the `Headers.append()` method. Standard single-value headers are set
14
+ * using `Headers.set()`.
15
+ *
16
+ * @param nodeHeaders - The Node.js-style headers object to convert.
17
+ * @returns A Web-standard Headers object.
18
+ */
19
+ export declare function convertNodeHeadersToWebHeaders(nodeHeaders: OutgoingHttpHeaders): Headers;
20
+ /**
21
+ * Converts a Web-standard Headers object (used by Hono) to Node.js-style IncomingHttpHeaders.
22
+ *
23
+ * @param webHeaders - The Web-standard Headers object to convert.
24
+ * @returns A Node.js-style IncomingHttpHeaders object.
25
+ */
26
+ export declare function convertWebHeadersToNodeHeaders(webHeaders: Headers): IncomingHttpHeaders;
27
+ //# sourceMappingURL=headerUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headerUtils.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/headerUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,mBAAmB,GAC/B,OAAO,CAmBT;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,OAAO,GAClB,mBAAmB,CAQrB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @fileoverview Provides a utility for converting HTTP headers between Node.js
3
+ * and Web Standards formats, ensuring compliance and correctness.
4
+ * @module src/mcp-server/transports/core/headerUtils
5
+ */
6
+ /**
7
+ * Converts Node.js-style OutgoingHttpHeaders to a Web-standard Headers object.
8
+ *
9
+ * This function is critical for interoperability between Node.js's `http` module
10
+ * and Web APIs like Fetch and Hono. It correctly handles multi-value headers
11
+ * (e.g., `Set-Cookie`), which Node.js represents as an array of strings, by
12
+ * using the `Headers.append()` method. Standard single-value headers are set
13
+ * using `Headers.set()`.
14
+ *
15
+ * @param nodeHeaders - The Node.js-style headers object to convert.
16
+ * @returns A Web-standard Headers object.
17
+ */
18
+ export function convertNodeHeadersToWebHeaders(nodeHeaders) {
19
+ const webHeaders = new Headers();
20
+ for (const [key, value] of Object.entries(nodeHeaders)) {
21
+ // Skip undefined headers, which are valid in Node.js but not in Web Headers.
22
+ if (value === undefined) {
23
+ continue;
24
+ }
25
+ if (Array.isArray(value)) {
26
+ // For arrays, append each value to support multi-value headers.
27
+ for (const v of value) {
28
+ webHeaders.append(key, String(v));
29
+ }
30
+ }
31
+ else {
32
+ // For single values, set the header, overwriting any existing value.
33
+ webHeaders.set(key, String(value));
34
+ }
35
+ }
36
+ return webHeaders;
37
+ }
38
+ /**
39
+ * Converts a Web-standard Headers object (used by Hono) to Node.js-style IncomingHttpHeaders.
40
+ *
41
+ * @param webHeaders - The Web-standard Headers object to convert.
42
+ * @returns A Node.js-style IncomingHttpHeaders object.
43
+ */
44
+ export function convertWebHeadersToNodeHeaders(webHeaders) {
45
+ const nodeHeaders = {};
46
+ // The Headers.forEach provides the comma-separated string if multiple headers existed.
47
+ webHeaders.forEach((value, key) => {
48
+ // Node.js lowercases incoming header keys.
49
+ nodeHeaders[key.toLowerCase()] = value;
50
+ });
51
+ return nodeHeaders;
52
+ }
53
+ //# sourceMappingURL=headerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headerUtils.js","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/headerUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,8BAA8B,CAC5C,WAAgC;IAEhC,MAAM,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,6EAA6E;QAC7E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,gEAAgE;YAChE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qEAAqE;YACrE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,UAAmB;IAEnB,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,uFAAuF;IACvF,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAChC,2CAA2C;QAC3C,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @fileoverview Provides a high-fidelity bridge between the MCP SDK's Node.js-style
3
+ * streamable HTTP transport and Hono's Web Standards-based streaming response.
4
+ * This class is essential for adapting the Node.js `http.ServerResponse` API
5
+ * to a format consumable by modern web frameworks.
6
+ * @module src/mcp-server/transports/core/honoNodeBridge
7
+ */
8
+ import { PassThrough } from "stream";
9
+ import type { OutgoingHttpHeaders } from "http";
10
+ /**
11
+ * A mock `http.ServerResponse` that pipes all written data to a `PassThrough` stream.
12
+ *
13
+ * This class serves as a critical compatibility layer, emulating the behavior of a
14
+ * Node.js `ServerResponse` to capture status codes, headers, and the response body.
15
+ * The captured data can then be used to construct a Web-standard `Response` object,
16
+ * for instance in a Hono application. It pays close attention to the timing of when
17
+ * headers are considered "sent" to mimic Node.js behavior accurately.
18
+ */
19
+ export declare class HonoStreamResponse extends PassThrough {
20
+ statusCode: number;
21
+ headers: OutgoingHttpHeaders;
22
+ private _headersSent;
23
+ constructor();
24
+ /**
25
+ * A getter that reports whether the headers have been sent.
26
+ * In this emulation, headers are considered sent the first time `write()` or `end()` is called.
27
+ */
28
+ get headersSent(): boolean;
29
+ /**
30
+ * Sets the status code and headers for the response, mimicking `http.ServerResponse.writeHead`.
31
+ *
32
+ * @param statusCode - The HTTP status code.
33
+ * @param statusMessageOrHeaders - An optional status message (string) or headers object.
34
+ * @param headers - An optional headers object, used if the second argument is a status message.
35
+ * @returns The instance of the class for chaining.
36
+ */
37
+ writeHead(statusCode: number, statusMessageOrHeaders?: string | OutgoingHttpHeaders, headers?: OutgoingHttpHeaders): this;
38
+ /**
39
+ * Sets a single header value.
40
+ *
41
+ * @param name - The name of the header.
42
+ * @param value - The value of the header.
43
+ * @returns The instance of the class for chaining.
44
+ */
45
+ setHeader(name: string, value: string | number | string[]): this;
46
+ /**
47
+ * Gets a header that has been queued for the response.
48
+ * @param name - The name of the header.
49
+ * @returns The value of the header, or undefined if not set.
50
+ */
51
+ getHeader(name: string): string | number | string[] | undefined;
52
+ /**
53
+ * Returns a copy of the current outgoing headers.
54
+ */
55
+ getHeaders(): OutgoingHttpHeaders;
56
+ /**
57
+ * Removes a header that has been queued for the response.
58
+ * @param name - The name of the header to remove.
59
+ */
60
+ removeHeader(name: string): void;
61
+ /**
62
+ * A private helper to mark headers as sent. This is called implicitly
63
+ * before any part of the body is written.
64
+ */
65
+ private ensureHeadersSent;
66
+ /**
67
+ * Writes a chunk of the response body, mimicking `http.ServerResponse.write`.
68
+ * This is the first point where headers are implicitly flushed.
69
+ */
70
+ write(chunk: unknown, encodingOrCallback?: BufferEncoding | ((error: Error | null | undefined) => void), callback?: (error: Error | null | undefined) => void): boolean;
71
+ /**
72
+ * Finishes sending the response, mimicking `http.ServerResponse.end`.
73
+ * This also implicitly flushes headers if they haven't been sent yet.
74
+ */
75
+ end(chunk?: unknown, encodingOrCallback?: BufferEncoding | (() => void), callback?: () => void): this;
76
+ }
77
+ //# sourceMappingURL=honoNodeBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"honoNodeBridge.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/honoNodeBridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAGhD;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC1C,UAAU,SAAO;IACjB,OAAO,EAAE,mBAAmB,CAAM;IACzC,OAAO,CAAC,YAAY,CAAS;;IAM7B;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;;;OAOG;IACH,SAAS,CACP,UAAU,EAAE,MAAM,EAClB,sBAAsB,CAAC,EAAE,MAAM,GAAG,mBAAmB,EACrD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAsBP;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAmBhE;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAI/D;;OAEG;IACH,UAAU,IAAI,mBAAmB;IAIjC;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAkBhC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACH,KAAK,CACH,KAAK,EAAE,OAAO,EACd,kBAAkB,CAAC,EACf,cAAc,GACd,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC,EAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,GACnD,OAAO;IAcV;;;OAGG;IACH,GAAG,CACD,KAAK,CAAC,EAAE,OAAO,EACf,kBAAkB,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,EAClD,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,IAAI;CAeR"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @fileoverview Provides a high-fidelity bridge between the MCP SDK's Node.js-style
3
+ * streamable HTTP transport and Hono's Web Standards-based streaming response.
4
+ * This class is essential for adapting the Node.js `http.ServerResponse` API
5
+ * to a format consumable by modern web frameworks.
6
+ * @module src/mcp-server/transports/core/honoNodeBridge
7
+ */
8
+ import { PassThrough } from "stream";
9
+ import { logger, requestContextService } from "../../../utils/index.js";
10
+ /**
11
+ * A mock `http.ServerResponse` that pipes all written data to a `PassThrough` stream.
12
+ *
13
+ * This class serves as a critical compatibility layer, emulating the behavior of a
14
+ * Node.js `ServerResponse` to capture status codes, headers, and the response body.
15
+ * The captured data can then be used to construct a Web-standard `Response` object,
16
+ * for instance in a Hono application. It pays close attention to the timing of when
17
+ * headers are considered "sent" to mimic Node.js behavior accurately.
18
+ */
19
+ export class HonoStreamResponse extends PassThrough {
20
+ statusCode = 200;
21
+ headers = {};
22
+ _headersSent = false;
23
+ constructor() {
24
+ super();
25
+ }
26
+ /**
27
+ * A getter that reports whether the headers have been sent.
28
+ * In this emulation, headers are considered sent the first time `write()` or `end()` is called.
29
+ */
30
+ get headersSent() {
31
+ return this._headersSent;
32
+ }
33
+ /**
34
+ * Sets the status code and headers for the response, mimicking `http.ServerResponse.writeHead`.
35
+ *
36
+ * @param statusCode - The HTTP status code.
37
+ * @param statusMessageOrHeaders - An optional status message (string) or headers object.
38
+ * @param headers - An optional headers object, used if the second argument is a status message.
39
+ * @returns The instance of the class for chaining.
40
+ */
41
+ writeHead(statusCode, statusMessageOrHeaders, headers) {
42
+ if (this._headersSent) {
43
+ // Per Node.js spec, do nothing if headers are already sent.
44
+ return this;
45
+ }
46
+ this.statusCode = statusCode;
47
+ const headersArg = typeof statusMessageOrHeaders === "string"
48
+ ? headers
49
+ : statusMessageOrHeaders;
50
+ if (headersArg) {
51
+ for (const [key, value] of Object.entries(headersArg)) {
52
+ if (value !== undefined) {
53
+ this.setHeader(key, value);
54
+ }
55
+ }
56
+ }
57
+ return this;
58
+ }
59
+ /**
60
+ * Sets a single header value.
61
+ *
62
+ * @param name - The name of the header.
63
+ * @param value - The value of the header.
64
+ * @returns The instance of the class for chaining.
65
+ */
66
+ setHeader(name, value) {
67
+ if (this._headersSent) {
68
+ // Retrieve context if available, otherwise create a basic one
69
+ const context = requestContextService.createRequestContext({
70
+ operation: "HonoStreamResponse.setHeader",
71
+ component: "HonoNodeBridge",
72
+ });
73
+ // Replace console.warn with logger.warning
74
+ logger.warning({ ...context, headerName: name }, `[HonoBridge] Warning: Cannot set header "${name}" after headers are sent.`);
75
+ return this;
76
+ }
77
+ this.headers[name.toLowerCase()] = value;
78
+ return this;
79
+ }
80
+ /**
81
+ * Gets a header that has been queued for the response.
82
+ * @param name - The name of the header.
83
+ * @returns The value of the header, or undefined if not set.
84
+ */
85
+ getHeader(name) {
86
+ return this.headers[name.toLowerCase()];
87
+ }
88
+ /**
89
+ * Returns a copy of the current outgoing headers.
90
+ */
91
+ getHeaders() {
92
+ return { ...this.headers };
93
+ }
94
+ /**
95
+ * Removes a header that has been queued for the response.
96
+ * @param name - The name of the header to remove.
97
+ */
98
+ removeHeader(name) {
99
+ if (this._headersSent) {
100
+ // Retrieve context if available
101
+ const context = requestContextService.createRequestContext({
102
+ operation: "HonoStreamResponse.removeHeader",
103
+ component: "HonoNodeBridge",
104
+ });
105
+ // Replace console.warn with logger.warning
106
+ logger.warning({ ...context, headerName: name }, `[HonoBridge] Warning: Cannot remove header "${name}" after headers are sent.`);
107
+ return;
108
+ }
109
+ delete this.headers[name.toLowerCase()];
110
+ }
111
+ /**
112
+ * A private helper to mark headers as sent. This is called implicitly
113
+ * before any part of the body is written.
114
+ */
115
+ ensureHeadersSent() {
116
+ if (!this._headersSent) {
117
+ this._headersSent = true;
118
+ }
119
+ }
120
+ /**
121
+ * Writes a chunk of the response body, mimicking `http.ServerResponse.write`.
122
+ * This is the first point where headers are implicitly flushed.
123
+ */
124
+ write(chunk, encodingOrCallback, callback) {
125
+ this.ensureHeadersSent();
126
+ const encoding = typeof encodingOrCallback === "string" ? encodingOrCallback : undefined;
127
+ const cb = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
128
+ if (encoding) {
129
+ return super.write(chunk, encoding, cb);
130
+ }
131
+ return super.write(chunk, cb);
132
+ }
133
+ /**
134
+ * Finishes sending the response, mimicking `http.ServerResponse.end`.
135
+ * This also implicitly flushes headers if they haven't been sent yet.
136
+ */
137
+ end(chunk, encodingOrCallback, callback) {
138
+ this.ensureHeadersSent();
139
+ const encoding = typeof encodingOrCallback === "string" ? encodingOrCallback : undefined;
140
+ const cb = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
141
+ if (encoding) {
142
+ super.end(chunk, encoding, cb);
143
+ }
144
+ else {
145
+ super.end(chunk, cb);
146
+ }
147
+ return this;
148
+ }
149
+ }
150
+ //# sourceMappingURL=honoNodeBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"honoNodeBridge.js","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/honoNodeBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @fileoverview Implements a stateful transport manager for the MCP SDK.
3
+ *
4
+ * This manager handles multiple, persistent MCP sessions. It creates and maintains
5
+ * a dedicated McpServer and StreamableHTTPServerTransport instance for each session,
6
+ * allowing for stateful, multi-turn interactions. It includes robust mechanisms for
7
+ * session lifecycle management, including garbage collection of stale sessions and
8
+ * concurrency controls to prevent race conditions.
9
+ *
10
+ * SCALABILITY NOTE: This manager maintains all session state in local process memory.
11
+ * For horizontal scaling across multiple server instances, a load balancer with
12
+ * sticky sessions (session affinity) is required to ensure that all requests for a
13
+ * given session are routed to the same process instance that holds that session's state.
14
+ *
15
+ * @module src/mcp-server/transports/core/statefulTransportManager
16
+ */
17
+ import { RequestContext } from "../../../utils/index.js";
18
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
19
+ import { BaseTransportManager } from "./baseTransportManager.js";
20
+ import { McpTransportRequest } from "./transportRequest.js";
21
+ import { // Import SessionState
22
+ StatefulTransportManager as IStatefulTransportManager, TransportResponse, TransportSession } from "./transportTypes.js";
23
+ /**
24
+ * Defines the configuration options for the StatefulTransportManager.
25
+ */
26
+ export interface StatefulTransportOptions {
27
+ staleSessionTimeoutMs: number;
28
+ mcpHttpEndpointPath: string;
29
+ }
30
+ /**
31
+ * Manages persistent, stateful MCP sessions.
32
+ */
33
+ export declare class StatefulTransportManager extends BaseTransportManager implements IStatefulTransportManager {
34
+ private readonly transports;
35
+ private readonly servers;
36
+ private readonly sessions;
37
+ private readonly garbageCollector;
38
+ private readonly options;
39
+ /**
40
+ * @param createServerInstanceFn - A factory function to create new McpServer instances.
41
+ * @param options - Configuration options for the manager.
42
+ */
43
+ constructor(createServerInstanceFn: () => Promise<McpServer>, options: StatefulTransportOptions);
44
+ /**
45
+ * Initializes a new stateful session and handles the first request.
46
+ *
47
+ * @param headers - The incoming request headers.
48
+ * @param body - The parsed body of the request.
49
+ * @param context - The request context.
50
+ * @returns A promise resolving to a streaming TransportResponse with a session ID.
51
+ * @private
52
+ */
53
+ private initializeAndHandle;
54
+ /**
55
+ * The new public entry point that conforms to the TransportManager interface.
56
+ * It routes the request to the appropriate handler based on whether it's an
57
+ * initialization request or a subsequent request for an existing session.
58
+ */
59
+ handleRequest(request: McpTransportRequest): Promise<TransportResponse>;
60
+ /**
61
+ * Handles a request to explicitly delete a session.
62
+ */
63
+ handleDeleteRequest(sessionId: string, context: RequestContext): Promise<TransportResponse>;
64
+ /**
65
+ * Retrieves information about a specific session.
66
+ */
67
+ getSession(sessionId: string): TransportSession | undefined;
68
+ /**
69
+ * Gracefully shuts down the manager, closing all active sessions.
70
+ */
71
+ shutdown(): Promise<void>;
72
+ /**
73
+ * Closes a single session and releases its associated resources.
74
+ */
75
+ private closeSession;
76
+ /**
77
+ * Periodically runs to find and clean up stale, inactive sessions.
78
+ */
79
+ private cleanupStaleSessions;
80
+ }
81
+ //# sourceMappingURL=statefulTransportManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statefulTransportManager.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/statefulTransportManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAGL,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAES,sBAAsB;AACpC,wBAAwB,IAAI,yBAAyB,EACrD,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,wBACX,SAAQ,oBACR,YAAW,yBAAyB;IAEpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAGvB;IACJ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD;;;OAGG;gBAED,sBAAsB,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAChD,OAAO,EAAE,wBAAwB;IAkBnC;;;;;;;;OAQG;YACW,mBAAmB;IA2GjC;;;;OAIG;IACG,aAAa,CACjB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAoG7B;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,CAAC;IA8B7B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI3D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB/B;;OAEG;YACW,YAAY;IA8C1B;;OAEG;YACW,oBAAoB;CA6CnC"}