@mcp-abap-adt/core 2.1.3 → 2.1.4

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 (417) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/bin/help.d.ts +6 -0
  3. package/dist/bin/help.d.ts.map +1 -0
  4. package/dist/bin/help.js +59 -0
  5. package/dist/bin/mcp-abap-adt-v2.d.ts +9 -0
  6. package/dist/bin/mcp-abap-adt-v2.d.ts.map +1 -0
  7. package/dist/bin/mcp-abap-adt-v2.js +247 -0
  8. package/dist/handlers/behavior_definition/readonly/handleGetBdef.d.ts +21 -0
  9. package/dist/handlers/behavior_definition/readonly/handleGetBdef.d.ts.map +1 -0
  10. package/dist/handlers/behavior_definition/readonly/handleGetBdef.js +24 -0
  11. package/dist/handlers/behavior_definition/readonly/handleGetBdef.js.map +1 -0
  12. package/dist/handlers/class/high/handleCreateLocalTestClass.d.ts.map +1 -1
  13. package/dist/handlers/class/high/handleCreateLocalTestClass.js +6 -1
  14. package/dist/handlers/class/high/handleCreateLocalTestClass.js.map +1 -1
  15. package/dist/handlers/class/high/handleGetUnitTest.d.ts +38 -0
  16. package/dist/handlers/class/high/handleGetUnitTest.d.ts.map +1 -0
  17. package/dist/handlers/class/high/handleGetUnitTest.js +73 -0
  18. package/dist/handlers/class/high/handleGetUnitTest.js.map +1 -0
  19. package/dist/handlers/class/high/handleRunUnitTest.d.ts +122 -0
  20. package/dist/handlers/class/high/handleRunUnitTest.d.ts.map +1 -0
  21. package/dist/handlers/class/high/handleRunUnitTest.js +133 -0
  22. package/dist/handlers/class/high/handleRunUnitTest.js.map +1 -0
  23. package/dist/handlers/class/readonly/handleGetClass.d.ts +23 -0
  24. package/dist/handlers/class/readonly/handleGetClass.d.ts.map +1 -0
  25. package/dist/handlers/class/readonly/handleGetClass.js +77 -0
  26. package/dist/handlers/class/readonly/handleGetClass.js.map +1 -0
  27. package/dist/handlers/data_element/readonly/handleGetDataElement.d.ts +23 -0
  28. package/dist/handlers/data_element/readonly/handleGetDataElement.d.ts.map +1 -0
  29. package/dist/handlers/data_element/readonly/handleGetDataElement.js +79 -0
  30. package/dist/handlers/data_element/readonly/handleGetDataElement.js.map +1 -0
  31. package/dist/handlers/domain/readonly/handleGetDomain.d.ts +23 -0
  32. package/dist/handlers/domain/readonly/handleGetDomain.d.ts.map +1 -0
  33. package/dist/handlers/domain/readonly/handleGetDomain.js +79 -0
  34. package/dist/handlers/domain/readonly/handleGetDomain.js.map +1 -0
  35. package/dist/handlers/function/readonly/handleGetFunctionGroup.d.ts +23 -0
  36. package/dist/handlers/function/readonly/handleGetFunctionGroup.d.ts.map +1 -0
  37. package/dist/handlers/function/readonly/handleGetFunctionGroup.js +77 -0
  38. package/dist/handlers/function/readonly/handleGetFunctionGroup.js.map +1 -0
  39. package/dist/handlers/interface/readonly/handleGetInterface.d.ts +23 -0
  40. package/dist/handlers/interface/readonly/handleGetInterface.d.ts.map +1 -0
  41. package/dist/handlers/interface/readonly/handleGetInterface.js +77 -0
  42. package/dist/handlers/interface/readonly/handleGetInterface.js.map +1 -0
  43. package/dist/handlers/package/readonly/handleGetPackage.d.ts +22 -0
  44. package/dist/handlers/package/readonly/handleGetPackage.d.ts.map +1 -0
  45. package/dist/handlers/package/readonly/handleGetPackage.js +108 -0
  46. package/dist/handlers/package/readonly/handleGetPackage.js.map +1 -0
  47. package/dist/handlers/program/readonly/handleGetProgram.d.ts +23 -0
  48. package/dist/handlers/program/readonly/handleGetProgram.d.ts.map +1 -0
  49. package/dist/handlers/program/readonly/handleGetProgram.js +77 -0
  50. package/dist/handlers/program/readonly/handleGetProgram.js.map +1 -0
  51. package/dist/handlers/service_definition/readonly/handleGetServiceDefinition.d.ts +18 -0
  52. package/dist/handlers/service_definition/readonly/handleGetServiceDefinition.d.ts.map +1 -0
  53. package/dist/handlers/service_definition/readonly/handleGetServiceDefinition.js +109 -0
  54. package/dist/handlers/service_definition/readonly/handleGetServiceDefinition.js.map +1 -0
  55. package/dist/handlers/structure/readonly/handleGetStructure.d.ts +23 -0
  56. package/dist/handlers/structure/readonly/handleGetStructure.d.ts.map +1 -0
  57. package/dist/handlers/structure/readonly/handleGetStructure.js +77 -0
  58. package/dist/handlers/structure/readonly/handleGetStructure.js.map +1 -0
  59. package/dist/handlers/table/readonly/handleGetTable.d.ts +23 -0
  60. package/dist/handlers/table/readonly/handleGetTable.d.ts.map +1 -0
  61. package/dist/handlers/table/readonly/handleGetTable.js +77 -0
  62. package/dist/handlers/table/readonly/handleGetTable.js.map +1 -0
  63. package/dist/handlers/view/readonly/handleGetView.d.ts +33 -0
  64. package/dist/handlers/view/readonly/handleGetView.d.ts.map +1 -0
  65. package/dist/handlers/view/readonly/handleGetView.js +90 -0
  66. package/dist/handlers/view/readonly/handleGetView.js.map +1 -0
  67. package/dist/index.d.ts +126 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +2979 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/lib/ServerConfigManager.d.ts +90 -0
  72. package/dist/lib/ServerConfigManager.d.ts.map +1 -0
  73. package/dist/lib/ServerConfigManager.js +237 -0
  74. package/dist/lib/ServerConfigManager.js.map +1 -0
  75. package/dist/lib/activationUtils.d.ts +59 -0
  76. package/dist/lib/activationUtils.d.ts.map +1 -0
  77. package/dist/lib/activationUtils.js +168 -0
  78. package/dist/lib/authBrokerFactory.d.ts +96 -0
  79. package/dist/lib/authBrokerFactory.d.ts.map +1 -0
  80. package/dist/lib/authBrokerFactory.js +531 -0
  81. package/dist/lib/authBrokerFactory.js.map +1 -0
  82. package/dist/lib/config/ServerConfig.d.ts +17 -0
  83. package/dist/lib/config/ServerConfig.d.ts.map +1 -0
  84. package/dist/lib/config/ServerConfig.js +7 -0
  85. package/dist/lib/config/ServerConfig.js.map +1 -0
  86. package/dist/lib/getFullCodeCache.d.ts +3 -0
  87. package/dist/lib/getFullCodeCache.d.ts.map +1 -0
  88. package/dist/lib/getFullCodeCache.js +56 -0
  89. package/dist/lib/handlers/handlers/base/BaseHandlerGroup.d.ts +36 -0
  90. package/dist/lib/handlers/handlers/base/BaseHandlerGroup.d.ts.map +1 -0
  91. package/dist/lib/handlers/handlers/base/BaseHandlerGroup.js +268 -0
  92. package/dist/lib/handlers/handlers/base/BaseHandlerGroup.js.map +1 -0
  93. package/dist/lib/handlers/handlers/examples/usage-example.d.ts +29 -0
  94. package/dist/lib/handlers/handlers/examples/usage-example.d.ts.map +1 -0
  95. package/dist/lib/handlers/handlers/examples/usage-example.js +119 -0
  96. package/dist/lib/handlers/handlers/examples/usage-example.js.map +1 -0
  97. package/dist/lib/handlers/handlers/groups/HighLevelHandlersGroup.d.ts +14 -0
  98. package/dist/lib/handlers/handlers/groups/HighLevelHandlersGroup.d.ts.map +1 -0
  99. package/dist/lib/handlers/handlers/groups/HighLevelHandlersGroup.js +322 -0
  100. package/dist/lib/handlers/handlers/groups/HighLevelHandlersGroup.js.map +1 -0
  101. package/dist/lib/handlers/handlers/groups/LowLevelHandlersGroup.d.ts +14 -0
  102. package/dist/lib/handlers/handlers/groups/LowLevelHandlersGroup.d.ts.map +1 -0
  103. package/dist/lib/handlers/handlers/groups/LowLevelHandlersGroup.js +1214 -0
  104. package/dist/lib/handlers/handlers/groups/LowLevelHandlersGroup.js.map +1 -0
  105. package/dist/lib/handlers/handlers/groups/ReadOnlyHandlersGroup.d.ts +14 -0
  106. package/dist/lib/handlers/handlers/groups/ReadOnlyHandlersGroup.d.ts.map +1 -0
  107. package/dist/lib/handlers/handlers/groups/ReadOnlyHandlersGroup.js +232 -0
  108. package/dist/lib/handlers/handlers/groups/ReadOnlyHandlersGroup.js.map +1 -0
  109. package/dist/lib/handlers/handlers/groups/SearchHandlersGroup.d.ts +14 -0
  110. package/dist/lib/handlers/handlers/groups/SearchHandlersGroup.d.ts.map +1 -0
  111. package/dist/lib/handlers/handlers/groups/SearchHandlersGroup.js +57 -0
  112. package/dist/lib/handlers/handlers/groups/SearchHandlersGroup.js.map +1 -0
  113. package/dist/lib/handlers/handlers/groups/SystemHandlersGroup.d.ts +14 -0
  114. package/dist/lib/handlers/handlers/groups/SystemHandlersGroup.d.ts.map +1 -0
  115. package/dist/lib/handlers/handlers/groups/SystemHandlersGroup.js +176 -0
  116. package/dist/lib/handlers/handlers/groups/SystemHandlersGroup.js.map +1 -0
  117. package/dist/lib/handlers/handlers/groups/index.d.ts +13 -0
  118. package/dist/lib/handlers/handlers/groups/index.d.ts.map +1 -0
  119. package/dist/lib/handlers/handlers/groups/index.js +21 -0
  120. package/dist/lib/handlers/handlers/groups/index.js.map +1 -0
  121. package/dist/lib/handlers/handlers/index.d.ts +14 -0
  122. package/dist/lib/handlers/handlers/index.d.ts.map +1 -0
  123. package/dist/lib/handlers/handlers/index.js +37 -0
  124. package/dist/lib/handlers/handlers/index.js.map +1 -0
  125. package/dist/lib/handlers/handlers/interfaces.d.ts +67 -0
  126. package/dist/lib/handlers/handlers/interfaces.d.ts.map +1 -0
  127. package/dist/lib/handlers/handlers/interfaces.js +3 -0
  128. package/dist/lib/handlers/handlers/interfaces.js.map +1 -0
  129. package/dist/lib/handlers/handlers/registry/CompositeHandlersRegistry.d.ts +49 -0
  130. package/dist/lib/handlers/handlers/registry/CompositeHandlersRegistry.d.ts.map +1 -0
  131. package/dist/lib/handlers/handlers/registry/CompositeHandlersRegistry.js +88 -0
  132. package/dist/lib/handlers/handlers/registry/CompositeHandlersRegistry.js.map +1 -0
  133. package/dist/lib/runtimeConfig.d.ts +20 -0
  134. package/dist/lib/runtimeConfig.d.ts.map +1 -0
  135. package/dist/lib/runtimeConfig.js +130 -0
  136. package/dist/lib/runtimeConfig.js.map +1 -0
  137. package/dist/lib/servers/BaseMcpServer.d.ts +56 -0
  138. package/dist/lib/servers/BaseMcpServer.d.ts.map +1 -0
  139. package/dist/lib/servers/BaseMcpServer.js +198 -0
  140. package/dist/lib/servers/BaseMcpServer.js.map +1 -0
  141. package/dist/lib/servers/ConnectionContext.d.ts +20 -0
  142. package/dist/lib/servers/ConnectionContext.d.ts.map +1 -0
  143. package/dist/lib/servers/ConnectionContext.js +3 -0
  144. package/dist/lib/servers/ConnectionContext.js.map +1 -0
  145. package/dist/lib/servers/SseServer.d.ts +32 -0
  146. package/dist/lib/servers/SseServer.d.ts.map +1 -0
  147. package/dist/lib/servers/SseServer.js +139 -0
  148. package/dist/lib/servers/SseServer.js.map +1 -0
  149. package/dist/lib/servers/StdioServer.d.ts +20 -0
  150. package/dist/lib/servers/StdioServer.d.ts.map +1 -0
  151. package/dist/lib/servers/StdioServer.js +32 -0
  152. package/dist/lib/servers/StdioServer.js.map +1 -0
  153. package/dist/lib/servers/StreamableHttpServer.d.ts +30 -0
  154. package/dist/lib/servers/StreamableHttpServer.d.ts.map +1 -0
  155. package/dist/lib/servers/StreamableHttpServer.js +83 -0
  156. package/dist/lib/servers/StreamableHttpServer.js.map +1 -0
  157. package/dist/lib/servers/handlers/base/BaseHandlerGroup.d.ts +36 -0
  158. package/dist/lib/servers/handlers/base/BaseHandlerGroup.d.ts.map +1 -0
  159. package/dist/lib/servers/handlers/base/BaseHandlerGroup.js +268 -0
  160. package/dist/lib/servers/handlers/base/BaseHandlerGroup.js.map +1 -0
  161. package/dist/lib/servers/handlers/examples/usage-example.d.ts +29 -0
  162. package/dist/lib/servers/handlers/examples/usage-example.d.ts.map +1 -0
  163. package/dist/lib/servers/handlers/examples/usage-example.js +119 -0
  164. package/dist/lib/servers/handlers/examples/usage-example.js.map +1 -0
  165. package/dist/lib/servers/handlers/groups/HighLevelHandlersGroup.d.ts +14 -0
  166. package/dist/lib/servers/handlers/groups/HighLevelHandlersGroup.d.ts.map +1 -0
  167. package/dist/lib/servers/handlers/groups/HighLevelHandlersGroup.js +322 -0
  168. package/dist/lib/servers/handlers/groups/HighLevelHandlersGroup.js.map +1 -0
  169. package/dist/lib/servers/handlers/groups/LowLevelHandlersGroup.d.ts +14 -0
  170. package/dist/lib/servers/handlers/groups/LowLevelHandlersGroup.d.ts.map +1 -0
  171. package/dist/lib/servers/handlers/groups/LowLevelHandlersGroup.js +1214 -0
  172. package/dist/lib/servers/handlers/groups/LowLevelHandlersGroup.js.map +1 -0
  173. package/dist/lib/servers/handlers/groups/ReadOnlyHandlersGroup.d.ts +14 -0
  174. package/dist/lib/servers/handlers/groups/ReadOnlyHandlersGroup.d.ts.map +1 -0
  175. package/dist/lib/servers/handlers/groups/ReadOnlyHandlersGroup.js +232 -0
  176. package/dist/lib/servers/handlers/groups/ReadOnlyHandlersGroup.js.map +1 -0
  177. package/dist/lib/servers/handlers/groups/SearchHandlersGroup.d.ts +14 -0
  178. package/dist/lib/servers/handlers/groups/SearchHandlersGroup.d.ts.map +1 -0
  179. package/dist/lib/servers/handlers/groups/SearchHandlersGroup.js +57 -0
  180. package/dist/lib/servers/handlers/groups/SearchHandlersGroup.js.map +1 -0
  181. package/dist/lib/servers/handlers/groups/SystemHandlersGroup.d.ts +14 -0
  182. package/dist/lib/servers/handlers/groups/SystemHandlersGroup.d.ts.map +1 -0
  183. package/dist/lib/servers/handlers/groups/SystemHandlersGroup.js +176 -0
  184. package/dist/lib/servers/handlers/groups/SystemHandlersGroup.js.map +1 -0
  185. package/dist/lib/servers/handlers/groups/index.d.ts +13 -0
  186. package/dist/lib/servers/handlers/groups/index.d.ts.map +1 -0
  187. package/dist/lib/servers/handlers/groups/index.js +21 -0
  188. package/dist/lib/servers/handlers/groups/index.js.map +1 -0
  189. package/dist/lib/servers/handlers/index.d.ts +14 -0
  190. package/dist/lib/servers/handlers/index.d.ts.map +1 -0
  191. package/dist/lib/servers/handlers/index.js +37 -0
  192. package/dist/lib/servers/handlers/index.js.map +1 -0
  193. package/dist/lib/servers/handlers/interfaces.d.ts +67 -0
  194. package/dist/lib/servers/handlers/interfaces.d.ts.map +1 -0
  195. package/dist/lib/servers/handlers/interfaces.js +3 -0
  196. package/dist/lib/servers/handlers/interfaces.js.map +1 -0
  197. package/dist/lib/servers/handlers/registry/CompositeHandlersRegistry.d.ts +49 -0
  198. package/dist/lib/servers/handlers/registry/CompositeHandlersRegistry.d.ts.map +1 -0
  199. package/dist/lib/servers/handlers/registry/CompositeHandlersRegistry.js +88 -0
  200. package/dist/lib/servers/handlers/registry/CompositeHandlersRegistry.js.map +1 -0
  201. package/dist/lib/servers/index.d.ts +5 -0
  202. package/dist/lib/servers/index.d.ts.map +1 -0
  203. package/dist/lib/servers/index.js +21 -0
  204. package/dist/lib/servers/index.js.map +1 -0
  205. package/dist/lib/servers/launcher.d.ts +2 -0
  206. package/dist/lib/servers/launcher.d.ts.map +1 -0
  207. package/dist/lib/servers/launcher.js +123 -0
  208. package/dist/lib/servers/launcher.js.map +1 -0
  209. package/dist/lib/servers/mcp_handlers.d.ts +25 -0
  210. package/dist/lib/servers/mcp_handlers.d.ts.map +1 -0
  211. package/dist/lib/servers/mcp_handlers.js +822 -0
  212. package/dist/lib/servers/mcp_handlers.js.map +1 -0
  213. package/dist/lib/servers/mcp_server.d.ts +7 -0
  214. package/dist/lib/servers/mcp_server.d.ts.map +1 -0
  215. package/dist/lib/servers/mcp_server.js +12 -0
  216. package/dist/lib/servers/utils.d.ts +42 -0
  217. package/dist/lib/servers/utils.d.ts.map +1 -0
  218. package/dist/lib/servers/utils.js +620 -0
  219. package/dist/lib/servers/utils.js.map +1 -0
  220. package/dist/lib/servers/v2/__tests__/unit/McpServer.test.d.ts +7 -0
  221. package/dist/lib/servers/v2/__tests__/unit/McpServer.test.d.ts.map +1 -0
  222. package/dist/lib/servers/v2/__tests__/unit/McpServer.test.js +218 -0
  223. package/dist/lib/servers/v2/connection/LocalConnectionProvider.d.ts +20 -0
  224. package/dist/lib/servers/v2/connection/LocalConnectionProvider.d.ts.map +1 -0
  225. package/dist/lib/servers/v2/connection/LocalConnectionProvider.js +70 -0
  226. package/dist/lib/servers/v2/connection/RemoteConnectionProvider.d.ts +21 -0
  227. package/dist/lib/servers/v2/connection/RemoteConnectionProvider.d.ts.map +1 -0
  228. package/dist/lib/servers/v2/connection/RemoteConnectionProvider.js +36 -0
  229. package/dist/lib/servers/v2/connection/index.d.ts +6 -0
  230. package/dist/lib/servers/v2/connection/index.d.ts.map +1 -0
  231. package/dist/lib/servers/v2/connection/index.js +10 -0
  232. package/dist/lib/servers/v2/factory/AuthBrokerFactory.d.ts +29 -0
  233. package/dist/lib/servers/v2/factory/AuthBrokerFactory.d.ts.map +1 -0
  234. package/dist/lib/servers/v2/factory/AuthBrokerFactory.js +79 -0
  235. package/dist/lib/servers/v2/factory/LocalModeFactory.d.ts +38 -0
  236. package/dist/lib/servers/v2/factory/LocalModeFactory.d.ts.map +1 -0
  237. package/dist/lib/servers/v2/factory/LocalModeFactory.js +38 -0
  238. package/dist/lib/servers/v2/factory/index.d.ts +6 -0
  239. package/dist/lib/servers/v2/factory/index.d.ts.map +1 -0
  240. package/dist/lib/servers/v2/factory/index.js +10 -0
  241. package/dist/lib/servers/v2/index.d.ts +9 -0
  242. package/dist/lib/servers/v2/index.d.ts.map +1 -0
  243. package/dist/lib/servers/v2/index.js +27 -0
  244. package/dist/lib/servers/v2/index.js.map +1 -0
  245. package/dist/lib/servers/v2/interfaces/connection.d.ts +188 -0
  246. package/dist/lib/servers/v2/interfaces/connection.d.ts.map +1 -0
  247. package/dist/lib/servers/v2/interfaces/connection.js +7 -0
  248. package/dist/lib/servers/v2/interfaces/index.d.ts +10 -0
  249. package/dist/lib/servers/v2/interfaces/index.d.ts.map +1 -0
  250. package/dist/lib/servers/v2/interfaces/index.js +25 -0
  251. package/dist/lib/servers/v2/interfaces/protocol.d.ts +30 -0
  252. package/dist/lib/servers/v2/interfaces/protocol.d.ts.map +1 -0
  253. package/dist/lib/servers/v2/interfaces/protocol.js +7 -0
  254. package/dist/lib/servers/v2/interfaces/session.d.ts +98 -0
  255. package/dist/lib/servers/v2/interfaces/session.d.ts.map +1 -0
  256. package/dist/lib/servers/v2/interfaces/session.js +7 -0
  257. package/dist/lib/servers/v2/interfaces/transport.d.ts +88 -0
  258. package/dist/lib/servers/v2/interfaces/transport.d.ts.map +1 -0
  259. package/dist/lib/servers/v2/interfaces/transport.js +7 -0
  260. package/dist/lib/servers/v2/protocol/ProtocolHandler.d.ts +21 -0
  261. package/dist/lib/servers/v2/protocol/ProtocolHandler.d.ts.map +1 -0
  262. package/dist/lib/servers/v2/protocol/ProtocolHandler.js +77 -0
  263. package/dist/lib/servers/v2/protocol/index.d.ts +5 -0
  264. package/dist/lib/servers/v2/protocol/index.d.ts.map +1 -0
  265. package/dist/lib/servers/v2/protocol/index.js +8 -0
  266. package/dist/lib/servers/v2/server/McpServer.d.ts +76 -0
  267. package/dist/lib/servers/v2/server/McpServer.d.ts.map +1 -0
  268. package/dist/lib/servers/v2/server/McpServer.js +243 -0
  269. package/dist/lib/servers/v2/server/index.d.ts +5 -0
  270. package/dist/lib/servers/v2/server/index.d.ts.map +1 -0
  271. package/dist/lib/servers/v2/server/index.js +8 -0
  272. package/dist/lib/servers/v2/session/SessionManager.d.ts +40 -0
  273. package/dist/lib/servers/v2/session/SessionManager.d.ts.map +1 -0
  274. package/dist/lib/servers/v2/session/SessionManager.js +136 -0
  275. package/dist/lib/servers/v2/session/index.d.ts +5 -0
  276. package/dist/lib/servers/v2/session/index.d.ts.map +1 -0
  277. package/dist/lib/servers/v2/session/index.js +8 -0
  278. package/dist/lib/servers/v2/transports/SseTransport.d.ts +49 -0
  279. package/dist/lib/servers/v2/transports/SseTransport.d.ts.map +1 -0
  280. package/dist/lib/servers/v2/transports/SseTransport.js +89 -0
  281. package/dist/lib/servers/v2/transports/StdioTransport.d.ts +31 -0
  282. package/dist/lib/servers/v2/transports/StdioTransport.d.ts.map +1 -0
  283. package/dist/lib/servers/v2/transports/StdioTransport.js +91 -0
  284. package/dist/lib/servers/v2/transports/StreamableHttpTransport.d.ts +51 -0
  285. package/dist/lib/servers/v2/transports/StreamableHttpTransport.d.ts.map +1 -0
  286. package/dist/lib/servers/v2/transports/StreamableHttpTransport.js +147 -0
  287. package/dist/lib/servers/v2/transports/index.d.ts +7 -0
  288. package/dist/lib/servers/v2/transports/index.d.ts.map +1 -0
  289. package/dist/lib/servers/v2/transports/index.js +12 -0
  290. package/dist/lib/servers/v2/types/common.d.ts +17 -0
  291. package/dist/lib/servers/v2/types/common.d.ts.map +1 -0
  292. package/dist/lib/servers/v2/types/common.js +6 -0
  293. package/dist/lib/servers/v2/types/common.js.map +1 -0
  294. package/dist/lib/servers/v2/types/index.d.ts +8 -0
  295. package/dist/lib/servers/v2/types/index.d.ts.map +1 -0
  296. package/dist/lib/servers/v2/types/index.js +24 -0
  297. package/dist/lib/servers/v2/types/index.js.map +1 -0
  298. package/dist/lib/servers/v2/types/transport.d.ts +28 -0
  299. package/dist/lib/servers/v2/types/transport.d.ts.map +1 -0
  300. package/dist/lib/servers/v2/types/transport.js +8 -0
  301. package/dist/lib/servers/v2/types/transport.js.map +1 -0
  302. package/dist/lib/servers/v2/utils/StdioLogger.d.ts +17 -0
  303. package/dist/lib/servers/v2/utils/StdioLogger.d.ts.map +1 -0
  304. package/dist/lib/servers/v2/utils/StdioLogger.js +33 -0
  305. package/dist/lib/servers/v2/utils/StdioLogger.js.map +1 -0
  306. package/dist/lib/stores/UnixFileServiceKeyStore.d.ts +42 -0
  307. package/dist/lib/stores/UnixFileServiceKeyStore.d.ts.map +1 -0
  308. package/dist/lib/stores/UnixFileServiceKeyStore.js +53 -0
  309. package/dist/lib/stores/UnixFileSessionStore.d.ts +54 -0
  310. package/dist/lib/stores/UnixFileSessionStore.d.ts.map +1 -0
  311. package/dist/lib/stores/UnixFileSessionStore.js +70 -0
  312. package/dist/lib/stores/WindowsFileServiceKeyStore.d.ts +42 -0
  313. package/dist/lib/stores/WindowsFileServiceKeyStore.d.ts.map +1 -0
  314. package/dist/lib/stores/WindowsFileServiceKeyStore.js +53 -0
  315. package/dist/lib/stores/WindowsFileSessionStore.d.ts +54 -0
  316. package/dist/lib/stores/WindowsFileSessionStore.d.ts.map +1 -0
  317. package/dist/lib/stores/WindowsFileSessionStore.js +70 -0
  318. package/dist/lib/toolsRegistry.d.ts +13 -0
  319. package/dist/lib/toolsRegistry.d.ts.map +1 -0
  320. package/dist/lib/toolsRegistry.js +410 -0
  321. package/dist/lib/transportConfig.d.ts +27 -0
  322. package/dist/lib/transportConfig.d.ts.map +1 -0
  323. package/dist/lib/transportConfig.js +124 -0
  324. package/dist/lib/transports/stdio.d.ts +10 -0
  325. package/dist/lib/transports/stdio.d.ts.map +1 -0
  326. package/dist/lib/transports/stdio.js +73 -0
  327. package/dist/lib/yamlConfig.d.ts +59 -0
  328. package/dist/lib/yamlConfig.d.ts.map +1 -0
  329. package/dist/lib/yamlConfig.js +349 -0
  330. package/dist/lib/yamlConfig.js.map +1 -0
  331. package/dist/server/v1/AuthBrokerConfig.d.ts +19 -0
  332. package/dist/server/v1/AuthBrokerConfig.d.ts.map +1 -0
  333. package/dist/server/v1/AuthBrokerConfig.js +44 -0
  334. package/dist/server/v1/AuthBrokerConfig.js.map +1 -0
  335. package/dist/server/v1/IServerConfig.d.ts +17 -0
  336. package/dist/server/v1/IServerConfig.d.ts.map +1 -0
  337. package/dist/server/v1/IServerConfig.js +7 -0
  338. package/dist/server/v1/IServerConfig.js.map +1 -0
  339. package/dist/server/v1/ServerConfig.d.ts +16 -0
  340. package/dist/server/v1/ServerConfig.d.ts.map +1 -0
  341. package/dist/server/v1/ServerConfig.js +6 -0
  342. package/dist/server/v1/ServerConfig.js.map +1 -0
  343. package/dist/server/v1/embeddable-server.d.ts +89 -0
  344. package/dist/server/v1/embeddable-server.d.ts.map +1 -0
  345. package/dist/server/v1/embeddable-server.js +83 -0
  346. package/dist/server/v1/embeddable-server.js.map +1 -0
  347. package/dist/server/v1/index.d.ts +30 -0
  348. package/dist/server/v1/index.d.ts.map +1 -0
  349. package/dist/server/v1/index.js +65 -0
  350. package/dist/server/v1/index.js.map +1 -0
  351. package/dist/server/v1/legacy-server.d.ts +141 -0
  352. package/dist/server/v1/legacy-server.d.ts.map +1 -0
  353. package/dist/server/v1/legacy-server.js +2099 -0
  354. package/dist/server/v1/legacy-server.js.map +1 -0
  355. package/dist/server/v1/mcp_handlers.d.ts +19 -0
  356. package/dist/server/v1/mcp_handlers.d.ts.map +1 -0
  357. package/dist/server/v1/mcp_handlers.js +85 -0
  358. package/dist/server/v1/mcp_handlers.js.map +1 -0
  359. package/dist/server/v2/AuthBrokerConfig.d.ts +22 -0
  360. package/dist/server/v2/AuthBrokerConfig.d.ts.map +1 -0
  361. package/dist/server/v2/AuthBrokerConfig.js +46 -0
  362. package/dist/server/v2/AuthBrokerConfig.js.map +1 -0
  363. package/dist/server/v2/BaseMcpServer.d.ts +67 -0
  364. package/dist/server/v2/BaseMcpServer.d.ts.map +1 -0
  365. package/dist/server/v2/BaseMcpServer.js +273 -0
  366. package/dist/server/v2/BaseMcpServer.js.map +1 -0
  367. package/dist/server/v2/ConnectionContext.d.ts +20 -0
  368. package/dist/server/v2/ConnectionContext.d.ts.map +1 -0
  369. package/dist/server/v2/ConnectionContext.js +3 -0
  370. package/dist/server/v2/ConnectionContext.js.map +1 -0
  371. package/dist/server/v2/IHttpApplication.d.ts +42 -0
  372. package/dist/server/v2/IHttpApplication.d.ts.map +1 -0
  373. package/dist/server/v2/IHttpApplication.js +3 -0
  374. package/dist/server/v2/IHttpApplication.js.map +1 -0
  375. package/dist/server/v2/IServerConfig.d.ts +15 -0
  376. package/dist/server/v2/IServerConfig.d.ts.map +1 -0
  377. package/dist/server/v2/IServerConfig.js +7 -0
  378. package/dist/server/v2/IServerConfig.js.map +1 -0
  379. package/dist/server/v2/ServerConfig.d.ts +16 -0
  380. package/dist/server/v2/ServerConfig.d.ts.map +1 -0
  381. package/dist/server/v2/ServerConfig.js +6 -0
  382. package/dist/server/v2/ServerConfig.js.map +1 -0
  383. package/dist/server/v2/SseServer.d.ts +95 -0
  384. package/dist/server/v2/SseServer.d.ts.map +1 -0
  385. package/dist/server/v2/SseServer.js +217 -0
  386. package/dist/server/v2/SseServer.js.map +1 -0
  387. package/dist/server/v2/StdioServer.d.ts +20 -0
  388. package/dist/server/v2/StdioServer.d.ts.map +1 -0
  389. package/dist/server/v2/StdioServer.js +32 -0
  390. package/dist/server/v2/StdioServer.js.map +1 -0
  391. package/dist/server/v2/StreamableHttpServer.d.ts +94 -0
  392. package/dist/server/v2/StreamableHttpServer.d.ts.map +1 -0
  393. package/dist/server/v2/StreamableHttpServer.js +170 -0
  394. package/dist/server/v2/StreamableHttpServer.js.map +1 -0
  395. package/dist/server/v2/index.d.ts +6 -0
  396. package/dist/server/v2/index.d.ts.map +1 -0
  397. package/dist/server/v2/index.js +22 -0
  398. package/dist/server/v2/index.js.map +1 -0
  399. package/dist/server/v2/launcher.d.ts +2 -0
  400. package/dist/server/v2/launcher.d.ts.map +1 -0
  401. package/dist/server/v2/launcher.js +181 -0
  402. package/dist/server/v2/launcher.js.map +1 -0
  403. package/dist/server/v2/mcp_handlers.d.ts +25 -0
  404. package/dist/server/v2/mcp_handlers.d.ts.map +1 -0
  405. package/dist/server/v2/mcp_handlers.js +828 -0
  406. package/dist/server/v2/mcp_handlers.js.map +1 -0
  407. package/dist/server/v2/utils.d.ts +42 -0
  408. package/dist/server/v2/utils.d.ts.map +1 -0
  409. package/dist/server/v2/utils.js +620 -0
  410. package/dist/server/v2/utils.js.map +1 -0
  411. package/dist/tools/test-v2-server-stdio-compiled.js +132 -0
  412. package/dist/utils/lockStateManager.d.ts +2 -12
  413. package/dist/utils/lockStateManager.d.ts.map +1 -1
  414. package/dist/utils/lockStateManager.js +4 -63
  415. package/dist/utils/lockStateManager.js.map +1 -1
  416. package/docs/user-guide/AVAILABLE_TOOLS.md +1 -1
  417. package/package.json +1 -1
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseMcpServer = void 0;
4
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
+ const connection_1 = require("@mcp-abap-adt/connection");
6
+ const CompositeHandlersRegistry_js_1 = require("./handlers/registry/CompositeHandlersRegistry.js");
7
+ const logger_1 = require("@mcp-abap-adt/logger");
8
+ const utils_js_1 = require("../utils.js");
9
+ /**
10
+ * Base MCP Server class that extends SDK McpServer
11
+ * Manages connection context and provides connection injection for handlers
12
+ */
13
+ class BaseMcpServer extends mcp_js_1.McpServer {
14
+ /**
15
+ * Logger used for handler context
16
+ */
17
+ logger;
18
+ /**
19
+ * Connection context (set per request for SSE/HTTP, once for stdio)
20
+ */
21
+ connectionContext = null;
22
+ /**
23
+ * Auth broker for token and service key management
24
+ */
25
+ authBroker;
26
+ constructor(options) {
27
+ super({ name: options.name, version: options.version ?? "1.0.0" });
28
+ this.logger = options.logger ?? logger_1.defaultLogger;
29
+ }
30
+ /**
31
+ * Sets connection context using auth broker
32
+ * For stdio: called once on startup
33
+ * For SSE/HTTP: called per-request
34
+ */
35
+ async setConnectionContext(destination, authBroker) {
36
+ this.authBroker = authBroker;
37
+ // Register broker so destination-aware connections can refresh tokens
38
+ (0, utils_js_1.registerAuthBroker)(destination, authBroker);
39
+ // Get connection parameters from broker
40
+ // AuthBroker.getConnectionConfig() automatically checks session store first, then service key store
41
+ const connectionConfig = await authBroker.getConnectionConfig(destination);
42
+ if (!connectionConfig) {
43
+ throw new Error(`Connection config not found for destination: ${destination}`);
44
+ }
45
+ // Try to get fresh token from broker
46
+ // If broker can't refresh (no UAA credentials), use existing token from connectionConfig
47
+ let freshToken;
48
+ try {
49
+ freshToken = await authBroker.getToken(destination);
50
+ }
51
+ catch (error) {
52
+ // Broker can't provide/refresh token (e.g., no UAA credentials for .env-only setup)
53
+ // Use existing token from connectionConfig - user is responsible for token management
54
+ this.logger.debug(`Broker can't refresh token, using existing token from session: ${error instanceof Error ? error.message : String(error)}`);
55
+ freshToken = connectionConfig.authorizationToken;
56
+ }
57
+ const tokenToUse = freshToken || connectionConfig.authorizationToken || '';
58
+ // Determine auth type from connection config
59
+ const authType = connectionConfig.authType ||
60
+ (connectionConfig.username && connectionConfig.password ? 'basic' : 'jwt');
61
+ this.connectionContext = {
62
+ sessionId: destination,
63
+ connectionParams: authType === 'basic'
64
+ ? {
65
+ url: connectionConfig.serviceUrl || '',
66
+ authType: 'basic',
67
+ username: connectionConfig.username || '',
68
+ password: connectionConfig.password || '',
69
+ client: connectionConfig.sapClient || '',
70
+ }
71
+ : {
72
+ url: connectionConfig.serviceUrl || '',
73
+ authType: 'jwt',
74
+ jwtToken: tokenToUse, // broker keeps it fresh
75
+ client: connectionConfig.sapClient || '',
76
+ },
77
+ metadata: {
78
+ destination,
79
+ },
80
+ };
81
+ }
82
+ /**
83
+ * Gets current connection context
84
+ */
85
+ getConnectionContext() {
86
+ return this.connectionContext;
87
+ }
88
+ /**
89
+ * Gets ABAP connection from connection context
90
+ * Creates connection using connectionParams from context
91
+ * Automatically refreshes token via AuthBroker if available (inside makeAdtRequest)
92
+ */
93
+ async getConnection() {
94
+ if (!this.connectionContext?.connectionParams) {
95
+ throw new Error('Connection context not set. Call setConnectionContext() first.');
96
+ }
97
+ const connection = (0, connection_1.createAbapConnection)(this.connectionContext.connectionParams);
98
+ const destination = this.connectionContext.metadata?.destination;
99
+ if (destination) {
100
+ const { createDestinationAwareConnection } = await import('../utils.js');
101
+ return createDestinationAwareConnection(connection, destination);
102
+ }
103
+ return connection;
104
+ }
105
+ /**
106
+ * Registers handlers from registry
107
+ * Wraps handlers to inject connection as first parameter
108
+ *
109
+ * Handler signature: (connection: AbapConnection, args: any) => Promise<any>
110
+ * Registered as: (args: any) => handler(getConnection(), args)
111
+ *
112
+ * This ensures connection is injected but NOT exposed in MCP tool signature
113
+ */
114
+ registerHandlers(handlersRegistry) {
115
+ // Get handler groups from registry
116
+ if (handlersRegistry instanceof CompositeHandlersRegistry_js_1.CompositeHandlersRegistry) {
117
+ const groups = handlersRegistry.getHandlerGroups();
118
+ for (const group of groups) {
119
+ const handlers = group.getHandlers();
120
+ for (const entry of handlers) {
121
+ // Wrap handler to inject connection from context
122
+ // Original handler: (context: HandlerContext, args: any) => Promise<any>
123
+ const wrappedHandler = async (args) => {
124
+ // Get connection from context (this.connectionContext)
125
+ // Token will be automatically refreshed via AuthBroker if needed
126
+ const context = {
127
+ connection: await this.getConnection(),
128
+ logger: this.logger,
129
+ };
130
+ // If handler expects context+args (preferred), pass both.
131
+ // Otherwise, update group context and call with args only for backward compatibility.
132
+ // NOTE: Always await the handler result to ensure we get the resolved value for normalization
133
+ let handlerPromise;
134
+ if (entry.handler.length >= 2) {
135
+ handlerPromise = entry.handler(context, args);
136
+ }
137
+ else {
138
+ try {
139
+ if (typeof group.setContext === 'function') {
140
+ group.setContext(context);
141
+ }
142
+ else {
143
+ group.context = context;
144
+ }
145
+ }
146
+ catch {
147
+ // ignore if group doesn't expose context setter
148
+ }
149
+ handlerPromise = entry.handler(args);
150
+ }
151
+ const result = await handlerPromise;
152
+ // Handle errors: if handler returns isError, throw McpError
153
+ if (result?.isError) {
154
+ const { ErrorCode, McpError } = await import('@modelcontextprotocol/sdk/types.js');
155
+ const errorText = (result.content || [])
156
+ .map((item) => {
157
+ if (item?.type === 'json' && item.json !== undefined) {
158
+ return JSON.stringify(item.json);
159
+ }
160
+ return item?.text || String(item);
161
+ })
162
+ .join('\n') || 'Unknown error';
163
+ throw new McpError(ErrorCode.InternalError, errorText);
164
+ }
165
+ // Normalize content: SDK expects text/image/audio/resource, convert custom json to text
166
+ const content = (result?.content || []).map((item) => {
167
+ if (item?.type === 'json' && item.json !== undefined) {
168
+ return {
169
+ type: 'text',
170
+ text: JSON.stringify(item.json),
171
+ };
172
+ }
173
+ // Ensure all items have proper text type structure
174
+ return {
175
+ type: 'text',
176
+ text: item?.text || String(item || ''),
177
+ };
178
+ });
179
+ return { content };
180
+ };
181
+ // Register wrapped handler via SDK registerTool
182
+ // Note: connection is NOT part of MCP tool signature
183
+ this.registerTool(entry.toolDefinition.name, {
184
+ description: entry.toolDefinition.description,
185
+ inputSchema: entry.toolDefinition.inputSchema,
186
+ }, wrappedHandler);
187
+ }
188
+ }
189
+ }
190
+ else {
191
+ // Fallback: use registerAllTools directly (handlers won't have connection injected)
192
+ // This should not happen in normal flow
193
+ handlersRegistry.registerAllTools(this);
194
+ }
195
+ }
196
+ }
197
+ exports.BaseMcpServer = BaseMcpServer;
198
+ //# sourceMappingURL=BaseMcpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseMcpServer.js","sourceRoot":"","sources":["../../../src/lib/servers/BaseMcpServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { SapConfig } from "@mcp-abap-adt/connection";
2
+ /**
3
+ * Connection context for MCP server
4
+ * Contains connection parameters and session information
5
+ */
6
+ export interface ConnectionContext {
7
+ /**
8
+ * Connection parameters (SAP URL, auth, client)
9
+ */
10
+ connectionParams: SapConfig;
11
+ /**
12
+ * Session ID for this connection context
13
+ */
14
+ sessionId: string;
15
+ /**
16
+ * Optional metadata for additional context information
17
+ */
18
+ metadata?: Record<string, any>;
19
+ }
20
+ //# sourceMappingURL=ConnectionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionContext.d.ts","sourceRoot":"","sources":["../../../src/lib/servers/ConnectionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,gBAAgB,EAAE,SAAS,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ConnectionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionContext.js","sourceRoot":"","sources":["../../../src/lib/servers/ConnectionContext.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import type { Logger } from "@mcp-abap-adt/logger";
2
+ import { IHandlersRegistry } from "./handlers/interfaces.js";
3
+ import { AuthBrokerFactory } from "../authBrokerFactory.js";
4
+ export interface SseServerOptions {
5
+ host?: string;
6
+ port?: number;
7
+ ssePath?: string;
8
+ postPath?: string;
9
+ defaultDestination?: string;
10
+ logger?: Logger;
11
+ version?: string;
12
+ }
13
+ /**
14
+ * Minimal SSE server: creates a new BaseMcpServer per GET connection, routes POST by sessionId.
15
+ */
16
+ export declare class SseServer {
17
+ private readonly handlersRegistry;
18
+ private readonly authBrokerFactory;
19
+ private readonly host;
20
+ private readonly port;
21
+ private readonly ssePath;
22
+ private readonly postPath;
23
+ private readonly defaultDestination?;
24
+ private readonly sessions;
25
+ private readonly logger;
26
+ private readonly version;
27
+ constructor(handlersRegistry: IHandlersRegistry, authBrokerFactory: AuthBrokerFactory, opts?: SseServerOptions);
28
+ start(): Promise<void>;
29
+ private handleGet;
30
+ private handlePost;
31
+ }
32
+ //# sourceMappingURL=SseServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SseServer.d.ts","sourceRoot":"","sources":["../../../src/lib/servers/SseServer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD;;GAEG;AACH,qBAAa,SAAS;IAWlB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAXpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAGd,gBAAgB,EAAE,iBAAiB,EACnC,iBAAiB,EAAE,iBAAiB,EACrD,IAAI,CAAC,EAAE,gBAAgB;IAWnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBd,SAAS;YAgET,UAAU;CA2BzB"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SseServer = void 0;
7
+ const express_1 = __importDefault(require("express"));
8
+ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
9
+ const handlerLogger_js_1 = require("../handlerLogger.js");
10
+ const BaseMcpServer_js_1 = require("./BaseMcpServer.js");
11
+ const DEFAULT_VERSION = process.env.npm_package_version ?? "1.0.0";
12
+ /**
13
+ * Minimal SSE server: creates a new BaseMcpServer per GET connection, routes POST by sessionId.
14
+ */
15
+ class SseServer {
16
+ handlersRegistry;
17
+ authBrokerFactory;
18
+ host;
19
+ port;
20
+ ssePath;
21
+ postPath;
22
+ defaultDestination;
23
+ sessions = new Map();
24
+ logger;
25
+ version;
26
+ constructor(handlersRegistry, authBrokerFactory, opts) {
27
+ this.handlersRegistry = handlersRegistry;
28
+ this.authBrokerFactory = authBrokerFactory;
29
+ this.host = opts?.host ?? "127.0.0.1";
30
+ this.port = opts?.port ?? 3001;
31
+ this.ssePath = opts?.ssePath ?? "/sse";
32
+ this.postPath = opts?.postPath ?? "/messages";
33
+ this.defaultDestination = opts?.defaultDestination;
34
+ this.logger = opts?.logger ?? handlerLogger_js_1.noopLogger;
35
+ this.version = opts?.version ?? DEFAULT_VERSION;
36
+ }
37
+ async start() {
38
+ const app = (0, express_1.default)();
39
+ app.use(express_1.default.json());
40
+ app.get(this.ssePath, async (req, res) => {
41
+ await this.handleGet(req, res);
42
+ });
43
+ app.post(this.postPath, async (req, res) => {
44
+ const url = new URL(req.originalUrl, `http://${req.headers.host}`);
45
+ await this.handlePost(req, res, url);
46
+ });
47
+ await new Promise((resolve, reject) => {
48
+ const srv = app
49
+ .listen(this.port, this.host, () => resolve())
50
+ .on("error", reject);
51
+ });
52
+ }
53
+ async handleGet(req, res) {
54
+ const destinationHeader = req.headers["x-mcp-destination"] ??
55
+ req.headers["X-MCP-Destination"];
56
+ const destination = destinationHeader || this.defaultDestination;
57
+ if (!destination) {
58
+ this.logger.error("SSE GET: Destination not provided");
59
+ res.writeHead(400).end("Destination not provided");
60
+ return;
61
+ }
62
+ this.logger.debug(`SSE GET: destination=${destination}`);
63
+ const broker = await this.authBrokerFactory.getOrCreateAuthBroker(destination);
64
+ if (!broker) {
65
+ this.logger.error(`SSE GET: Auth broker not available for ${destination}`);
66
+ res.writeHead(400).end("Auth broker not available");
67
+ return;
68
+ }
69
+ class SessionServer extends BaseMcpServer_js_1.BaseMcpServer {
70
+ registry;
71
+ loggerImpl;
72
+ ver;
73
+ constructor(registry, loggerImpl, ver) {
74
+ super({ name: "mcp-abap-adt-sse", version: ver, logger: loggerImpl });
75
+ this.registry = registry;
76
+ this.loggerImpl = loggerImpl;
77
+ this.ver = ver;
78
+ }
79
+ async init(dest, b) {
80
+ await this.setConnectionContext(dest, b);
81
+ this.registerHandlers(this.registry);
82
+ }
83
+ }
84
+ const server = new SessionServer(this.handlersRegistry, this.logger, this.version);
85
+ await server.init(destination, broker);
86
+ const transport = new sse_js_1.SSEServerTransport(this.postPath, res);
87
+ const sessionId = transport.sessionId;
88
+ console.error(`[SSE GET] Created session ${sessionId} for destination ${destination}`);
89
+ this.sessions.set(sessionId, { server, transport });
90
+ console.error(`[SSE GET] Session stored, total sessions: ${this.sessions.size}`);
91
+ // Connect transport to server BEFORE registering close handler
92
+ // This ensures connection is established before any cleanup can happen
93
+ try {
94
+ await server.connect(transport);
95
+ this.logger.debug(`SSE GET: server connected for session ${sessionId}`);
96
+ }
97
+ catch (error) {
98
+ this.logger.error(`SSE GET: failed to connect for session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`);
99
+ this.sessions.delete(sessionId);
100
+ if (!res.headersSent) {
101
+ res.writeHead(500).end("Internal Server Error");
102
+ }
103
+ return;
104
+ }
105
+ // Register cleanup handler AFTER successful connection
106
+ res.on("close", () => {
107
+ console.error(`[SSE CLOSE] Connection closed for session ${sessionId}`);
108
+ this.sessions.delete(sessionId);
109
+ void transport.close();
110
+ void server.close();
111
+ });
112
+ }
113
+ async handlePost(req, res, url) {
114
+ const sessionId = (url?.searchParams.get("sessionId") || req.headers["x-session-id"] || "");
115
+ console.error(`[SSE POST] sessionId=${sessionId}, activeSessions=${this.sessions.size}, keys=[${Array.from(this.sessions.keys()).join(', ')}]`);
116
+ const entry = this.sessions.get(sessionId);
117
+ if (!entry) {
118
+ console.error(`[SSE POST] Invalid session ${sessionId} - session not found!`);
119
+ res.writeHead(400).end("Invalid session");
120
+ return;
121
+ }
122
+ // Pass pre-parsed body from express.json() middleware (like reference implementation)
123
+ // express.json() already read and parsed the body into req.body
124
+ console.error(`[SSE POST] Calling handlePostMessage with req.body for session ${sessionId}`);
125
+ try {
126
+ await entry.transport.handlePostMessage(req, res, req.body);
127
+ console.error(`[SSE POST] Successfully processed for session ${sessionId}`);
128
+ }
129
+ catch (error) {
130
+ console.error(`[SSE POST] FAILED for session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`);
131
+ console.error(`[SSE POST] Error stack:`, error);
132
+ if (!res.headersSent) {
133
+ res.writeHead(500).end("Internal Server Error");
134
+ }
135
+ }
136
+ }
137
+ }
138
+ exports.SseServer = SseServer;
139
+ //# sourceMappingURL=SseServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SseServer.js","sourceRoot":"","sources":["../../../src/lib/servers/SseServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { AuthBroker } from "@mcp-abap-adt/auth-broker";
2
+ import type { Logger } from "@mcp-abap-adt/logger";
3
+ import { BaseMcpServer } from "./BaseMcpServer.js";
4
+ import { IHandlersRegistry } from "./handlers/interfaces.js";
5
+ export interface StdioServerOptions {
6
+ name?: string;
7
+ version?: string;
8
+ logger?: Logger;
9
+ }
10
+ /**
11
+ * Minimal stdio server implementation based on BaseMcpServer.
12
+ * Sets connection context once at startup and connects stdio transport.
13
+ */
14
+ export declare class StdioServer extends BaseMcpServer {
15
+ private readonly handlersRegistry;
16
+ private readonly broker;
17
+ constructor(handlersRegistry: IHandlersRegistry, broker: AuthBroker, opts?: StdioServerOptions);
18
+ start(destination: string): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=StdioServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StdioServer.d.ts","sourceRoot":"","sources":["../../../src/lib/servers/StdioServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAE1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,gBAAgB,EAAE,iBAAiB,EACnC,MAAM,EAAE,UAAU,EACnC,IAAI,CAAC,EAAE,kBAAkB;IASrB,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOhD"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StdioServer = void 0;
4
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
5
+ const handlerLogger_js_1 = require("../handlerLogger.js");
6
+ const BaseMcpServer_js_1 = require("./BaseMcpServer.js");
7
+ const DEFAULT_VERSION = process.env.npm_package_version ?? "1.0.0";
8
+ /**
9
+ * Minimal stdio server implementation based on BaseMcpServer.
10
+ * Sets connection context once at startup and connects stdio transport.
11
+ */
12
+ class StdioServer extends BaseMcpServer_js_1.BaseMcpServer {
13
+ handlersRegistry;
14
+ broker;
15
+ constructor(handlersRegistry, broker, opts) {
16
+ super({
17
+ name: opts?.name ?? "mcp-abap-adt",
18
+ version: opts?.version ?? DEFAULT_VERSION,
19
+ logger: opts?.logger ?? handlerLogger_js_1.noopLogger,
20
+ });
21
+ this.handlersRegistry = handlersRegistry;
22
+ this.broker = broker;
23
+ }
24
+ async start(destination) {
25
+ await this.setConnectionContext(destination, this.broker);
26
+ this.registerHandlers(this.handlersRegistry);
27
+ const transport = new stdio_js_1.StdioServerTransport();
28
+ await this.connect(transport);
29
+ }
30
+ }
31
+ exports.StdioServer = StdioServer;
32
+ //# sourceMappingURL=StdioServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StdioServer.js","sourceRoot":"","sources":["../../../src/lib/servers/StdioServer.ts"],"names":[],"mappings":";;;AAAA,wEAAiF;AAGjF,0DAAiD;AACjD,yDAAmD;AAEnD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC;AAQnE;;;GAGG;AACH,MAAa,WAAY,SAAQ,gCAAa;IAEzB;IACA;IAFnB,YACmB,gBAAmC,EACnC,MAAkB,EACnC,IAAyB;QAEzB,KAAK,CAAC;YACJ,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,cAAc;YAClC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,eAAe;YACzC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,6BAAU;SACnC,CAAC,CAAC;QARc,qBAAgB,GAAhB,gBAAgB,CAAmB;QACnC,WAAM,GAAN,MAAM,CAAY;IAQrC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,WAAmB;QAC7B,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE7C,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;CACF;AApBD,kCAoBC"}
@@ -0,0 +1,30 @@
1
+ import type { Logger } from "@mcp-abap-adt/logger";
2
+ import { BaseMcpServer } from "./BaseMcpServer.js";
3
+ import { IHandlersRegistry } from "./handlers/interfaces.js";
4
+ import { AuthBrokerFactory } from "../authBrokerFactory.js";
5
+ export interface StreamableHttpServerOptions {
6
+ host?: string;
7
+ port?: number;
8
+ enableJsonResponse?: boolean;
9
+ defaultDestination?: string;
10
+ path?: string;
11
+ logger?: Logger;
12
+ version?: string;
13
+ }
14
+ /**
15
+ * Minimal Streamable HTTP server implementation.
16
+ * Для кожного HTTP POST створюємо новий транспорт і прокидуємо запит у вже створений MCP сервер.
17
+ * Destination береться з header `x-mcp-destination` або з defaultDestination, інакше 400.
18
+ */
19
+ export declare class StreamableHttpServer extends BaseMcpServer {
20
+ private readonly handlersRegistry;
21
+ private readonly authBrokerFactory;
22
+ private readonly host;
23
+ private readonly port;
24
+ private readonly enableJsonResponse;
25
+ private readonly defaultDestination?;
26
+ private readonly path;
27
+ constructor(handlersRegistry: IHandlersRegistry, authBrokerFactory: AuthBrokerFactory, opts?: StreamableHttpServerOptions);
28
+ start(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=StreamableHttpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamableHttpServer.d.ts","sourceRoot":"","sources":["../../../src/lib/servers/StreamableHttpServer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IAQnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IARpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAGX,gBAAgB,EAAE,iBAAiB,EACnC,iBAAiB,EAAE,iBAAiB,EACrD,IAAI,CAAC,EAAE,2BAA2B;IAgB9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAkD7B"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StreamableHttpServer = void 0;
7
+ const express_1 = __importDefault(require("express"));
8
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
9
+ const handlerLogger_js_1 = require("../handlerLogger.js");
10
+ const BaseMcpServer_js_1 = require("./BaseMcpServer.js");
11
+ const DEFAULT_VERSION = process.env.npm_package_version ?? "1.0.0";
12
+ /**
13
+ * Minimal Streamable HTTP server implementation.
14
+ * Для кожного HTTP POST створюємо новий транспорт і прокидуємо запит у вже створений MCP сервер.
15
+ * Destination береться з header `x-mcp-destination` або з defaultDestination, інакше 400.
16
+ */
17
+ class StreamableHttpServer extends BaseMcpServer_js_1.BaseMcpServer {
18
+ handlersRegistry;
19
+ authBrokerFactory;
20
+ host;
21
+ port;
22
+ enableJsonResponse;
23
+ defaultDestination;
24
+ path;
25
+ constructor(handlersRegistry, authBrokerFactory, opts) {
26
+ super({
27
+ name: "mcp-abap-adt",
28
+ version: opts?.version ?? DEFAULT_VERSION,
29
+ logger: opts?.logger ?? handlerLogger_js_1.noopLogger,
30
+ });
31
+ this.handlersRegistry = handlersRegistry;
32
+ this.authBrokerFactory = authBrokerFactory;
33
+ this.host = opts?.host ?? "127.0.0.1";
34
+ this.port = opts?.port ?? 3000;
35
+ this.enableJsonResponse = opts?.enableJsonResponse ?? false;
36
+ this.defaultDestination = opts?.defaultDestination;
37
+ this.path = opts?.path ?? "/";
38
+ // Регіструємо хендлери один раз для спільного MCP сервера
39
+ this.registerHandlers(this.handlersRegistry);
40
+ }
41
+ async start() {
42
+ const app = (0, express_1.default)();
43
+ app.use(express_1.default.json());
44
+ const handle = async (req, res) => {
45
+ const destinationHeader = req.headers["x-mcp-destination"] ??
46
+ req.headers["X-MCP-Destination"];
47
+ const destination = destinationHeader || this.defaultDestination;
48
+ if (!destination) {
49
+ res.status(400).send("Destination not provided");
50
+ return;
51
+ }
52
+ try {
53
+ const broker = await this.authBrokerFactory.getOrCreateAuthBroker(destination);
54
+ if (!broker) {
55
+ res.status(400).send("Auth broker not available");
56
+ return;
57
+ }
58
+ await this.setConnectionContext(destination, broker);
59
+ const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
60
+ sessionIdGenerator: undefined, // stateless mode to avoid ID collisions
61
+ enableJsonResponse: this.enableJsonResponse,
62
+ });
63
+ res.on("close", () => {
64
+ void transport.close();
65
+ });
66
+ await this.connect(transport);
67
+ await transport.handleRequest(req, res, req.body);
68
+ }
69
+ catch (err) {
70
+ res.status(500).send("Internal Server Error");
71
+ }
72
+ };
73
+ app.get(this.path, handle);
74
+ app.post(this.path, handle);
75
+ await new Promise((resolve, reject) => {
76
+ const srv = app
77
+ .listen(this.port, this.host, () => resolve())
78
+ .on("error", reject);
79
+ });
80
+ }
81
+ }
82
+ exports.StreamableHttpServer = StreamableHttpServer;
83
+ //# sourceMappingURL=StreamableHttpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamableHttpServer.js","sourceRoot":"","sources":["../../../src/lib/servers/StreamableHttpServer.ts"],"names":[],"mappings":"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"}