mcp-server-framework 1.0.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 (673) hide show
  1. package/CHANGELOG.md +174 -0
  2. package/LICENSE-GPL.md +219 -0
  3. package/LICENSE.md +187 -0
  4. package/README.md +439 -0
  5. package/build/config/config-cache.d.ts +120 -0
  6. package/build/config/config-cache.d.ts.map +1 -0
  7. package/build/config/config-cache.js +310 -0
  8. package/build/config/config-cache.js.map +1 -0
  9. package/build/config/env.d.ts +476 -0
  10. package/build/config/env.d.ts.map +1 -0
  11. package/build/config/env.js +441 -0
  12. package/build/config/env.js.map +1 -0
  13. package/build/config/extensions.d.ts +107 -0
  14. package/build/config/extensions.d.ts.map +1 -0
  15. package/build/config/extensions.js +152 -0
  16. package/build/config/extensions.js.map +1 -0
  17. package/build/config/file/index.d.ts +8 -0
  18. package/build/config/file/index.d.ts.map +1 -0
  19. package/build/config/file/index.js +10 -0
  20. package/build/config/file/index.js.map +1 -0
  21. package/build/config/file/loader.d.ts +31 -0
  22. package/build/config/file/loader.d.ts.map +1 -0
  23. package/build/config/file/loader.js +313 -0
  24. package/build/config/file/loader.js.map +1 -0
  25. package/build/config/file/schema.d.ts +583 -0
  26. package/build/config/file/schema.d.ts.map +1 -0
  27. package/build/config/file/schema.js +388 -0
  28. package/build/config/file/schema.js.map +1 -0
  29. package/build/config/index.d.ts +15 -0
  30. package/build/config/index.d.ts.map +1 -0
  31. package/build/config/index.js +27 -0
  32. package/build/config/index.js.map +1 -0
  33. package/build/config/startup-warnings.d.ts +46 -0
  34. package/build/config/startup-warnings.d.ts.map +1 -0
  35. package/build/config/startup-warnings.js +61 -0
  36. package/build/config/startup-warnings.js.map +1 -0
  37. package/build/connection/connection-state.d.ts +196 -0
  38. package/build/connection/connection-state.d.ts.map +1 -0
  39. package/build/connection/connection-state.js +426 -0
  40. package/build/connection/connection-state.js.map +1 -0
  41. package/build/connection/core/base.d.ts +43 -0
  42. package/build/connection/core/base.d.ts.map +1 -0
  43. package/build/connection/core/base.js +82 -0
  44. package/build/connection/core/base.js.map +1 -0
  45. package/build/connection/core/constants.d.ts +121 -0
  46. package/build/connection/core/constants.d.ts.map +1 -0
  47. package/build/connection/core/constants.js +151 -0
  48. package/build/connection/core/constants.js.map +1 -0
  49. package/build/connection/core/index.d.ts +13 -0
  50. package/build/connection/core/index.d.ts.map +1 -0
  51. package/build/connection/core/index.js +14 -0
  52. package/build/connection/core/index.js.map +1 -0
  53. package/build/connection/core/types.d.ts +102 -0
  54. package/build/connection/core/types.d.ts.map +1 -0
  55. package/build/connection/core/types.js +31 -0
  56. package/build/connection/core/types.js.map +1 -0
  57. package/build/connection/index.d.ts +19 -0
  58. package/build/connection/index.d.ts.map +1 -0
  59. package/build/connection/index.js +22 -0
  60. package/build/connection/index.js.map +1 -0
  61. package/build/connection/types.d.ts +125 -0
  62. package/build/connection/types.d.ts.map +1 -0
  63. package/build/connection/types.js +39 -0
  64. package/build/connection/types.js.map +1 -0
  65. package/build/errors/categories/auth.d.ts +59 -0
  66. package/build/errors/categories/auth.d.ts.map +1 -0
  67. package/build/errors/categories/auth.js +111 -0
  68. package/build/errors/categories/auth.js.map +1 -0
  69. package/build/errors/categories/connection.d.ts +70 -0
  70. package/build/errors/categories/connection.d.ts.map +1 -0
  71. package/build/errors/categories/connection.js +120 -0
  72. package/build/errors/categories/connection.js.map +1 -0
  73. package/build/errors/categories/index.d.ts +14 -0
  74. package/build/errors/categories/index.d.ts.map +1 -0
  75. package/build/errors/categories/index.js +20 -0
  76. package/build/errors/categories/index.js.map +1 -0
  77. package/build/errors/categories/operation.d.ts +83 -0
  78. package/build/errors/categories/operation.d.ts.map +1 -0
  79. package/build/errors/categories/operation.js +149 -0
  80. package/build/errors/categories/operation.js.map +1 -0
  81. package/build/errors/categories/protocol.d.ts +68 -0
  82. package/build/errors/categories/protocol.d.ts.map +1 -0
  83. package/build/errors/categories/protocol.js +135 -0
  84. package/build/errors/categories/protocol.js.map +1 -0
  85. package/build/errors/categories/session.d.ts +50 -0
  86. package/build/errors/categories/session.d.ts.map +1 -0
  87. package/build/errors/categories/session.js +97 -0
  88. package/build/errors/categories/session.js.map +1 -0
  89. package/build/errors/categories/system.d.ts +95 -0
  90. package/build/errors/categories/system.d.ts.map +1 -0
  91. package/build/errors/categories/system.js +190 -0
  92. package/build/errors/categories/system.js.map +1 -0
  93. package/build/errors/categories/transport.d.ts +70 -0
  94. package/build/errors/categories/transport.d.ts.map +1 -0
  95. package/build/errors/categories/transport.js +148 -0
  96. package/build/errors/categories/transport.js.map +1 -0
  97. package/build/errors/categories/validation.d.ts +140 -0
  98. package/build/errors/categories/validation.d.ts.map +1 -0
  99. package/build/errors/categories/validation.js +311 -0
  100. package/build/errors/categories/validation.js.map +1 -0
  101. package/build/errors/core/base.d.ts +103 -0
  102. package/build/errors/core/base.d.ts.map +1 -0
  103. package/build/errors/core/base.js +219 -0
  104. package/build/errors/core/base.js.map +1 -0
  105. package/build/errors/core/constants.d.ts +40 -0
  106. package/build/errors/core/constants.d.ts.map +1 -0
  107. package/build/errors/core/constants.js +49 -0
  108. package/build/errors/core/constants.js.map +1 -0
  109. package/build/errors/core/error-codes.d.ts +72 -0
  110. package/build/errors/core/error-codes.d.ts.map +1 -0
  111. package/build/errors/core/error-codes.js +88 -0
  112. package/build/errors/core/error-codes.js.map +1 -0
  113. package/build/errors/core/http.d.ts +69 -0
  114. package/build/errors/core/http.d.ts.map +1 -0
  115. package/build/errors/core/http.js +106 -0
  116. package/build/errors/core/http.js.map +1 -0
  117. package/build/errors/core/index.d.ts +23 -0
  118. package/build/errors/core/index.d.ts.map +1 -0
  119. package/build/errors/core/index.js +41 -0
  120. package/build/errors/core/index.js.map +1 -0
  121. package/build/errors/core/json-rpc.d.ts +69 -0
  122. package/build/errors/core/json-rpc.d.ts.map +1 -0
  123. package/build/errors/core/json-rpc.js +79 -0
  124. package/build/errors/core/json-rpc.js.map +1 -0
  125. package/build/errors/core/messages.d.ts +51 -0
  126. package/build/errors/core/messages.d.ts.map +1 -0
  127. package/build/errors/core/messages.js +59 -0
  128. package/build/errors/core/messages.js.map +1 -0
  129. package/build/errors/core/types.d.ts +80 -0
  130. package/build/errors/core/types.d.ts.map +1 -0
  131. package/build/errors/core/types.js +10 -0
  132. package/build/errors/core/types.js.map +1 -0
  133. package/build/errors/factory.d.ts +199 -0
  134. package/build/errors/factory.d.ts.map +1 -0
  135. package/build/errors/factory.js +244 -0
  136. package/build/errors/factory.js.map +1 -0
  137. package/build/errors/index.d.ts +35 -0
  138. package/build/errors/index.d.ts.map +1 -0
  139. package/build/errors/index.js +67 -0
  140. package/build/errors/index.js.map +1 -0
  141. package/build/index.d.ts +93 -0
  142. package/build/index.d.ts.map +1 -0
  143. package/build/index.js +107 -0
  144. package/build/index.js.map +1 -0
  145. package/build/logger/core/constants.d.ts +143 -0
  146. package/build/logger/core/constants.d.ts.map +1 -0
  147. package/build/logger/core/constants.js +206 -0
  148. package/build/logger/core/constants.js.map +1 -0
  149. package/build/logger/core/context.d.ts +170 -0
  150. package/build/logger/core/context.d.ts.map +1 -0
  151. package/build/logger/core/context.js +237 -0
  152. package/build/logger/core/context.js.map +1 -0
  153. package/build/logger/core/errors.d.ts +101 -0
  154. package/build/logger/core/errors.d.ts.map +1 -0
  155. package/build/logger/core/errors.js +128 -0
  156. package/build/logger/core/errors.js.map +1 -0
  157. package/build/logger/core/format.d.ts +40 -0
  158. package/build/logger/core/format.d.ts.map +1 -0
  159. package/build/logger/core/format.js +47 -0
  160. package/build/logger/core/format.js.map +1 -0
  161. package/build/logger/core/index.d.ts +19 -0
  162. package/build/logger/core/index.d.ts.map +1 -0
  163. package/build/logger/core/index.js +47 -0
  164. package/build/logger/core/index.js.map +1 -0
  165. package/build/logger/core/trace-context.d.ts +51 -0
  166. package/build/logger/core/trace-context.d.ts.map +1 -0
  167. package/build/logger/core/trace-context.js +42 -0
  168. package/build/logger/core/trace-context.js.map +1 -0
  169. package/build/logger/core/types.d.ts +233 -0
  170. package/build/logger/core/types.d.ts.map +1 -0
  171. package/build/logger/core/types.js +10 -0
  172. package/build/logger/core/types.js.map +1 -0
  173. package/build/logger/factory.d.ts +150 -0
  174. package/build/logger/factory.d.ts.map +1 -0
  175. package/build/logger/factory.js +236 -0
  176. package/build/logger/factory.js.map +1 -0
  177. package/build/logger/formatters/index.d.ts +12 -0
  178. package/build/logger/formatters/index.d.ts.map +1 -0
  179. package/build/logger/formatters/index.js +15 -0
  180. package/build/logger/formatters/index.js.map +1 -0
  181. package/build/logger/formatters/json-formatter.d.ts +54 -0
  182. package/build/logger/formatters/json-formatter.d.ts.map +1 -0
  183. package/build/logger/formatters/json-formatter.js +80 -0
  184. package/build/logger/formatters/json-formatter.js.map +1 -0
  185. package/build/logger/formatters/schema.d.ts +230 -0
  186. package/build/logger/formatters/schema.d.ts.map +1 -0
  187. package/build/logger/formatters/schema.js +278 -0
  188. package/build/logger/formatters/schema.js.map +1 -0
  189. package/build/logger/formatters/text-formatter.d.ts +50 -0
  190. package/build/logger/formatters/text-formatter.d.ts.map +1 -0
  191. package/build/logger/formatters/text-formatter.js +93 -0
  192. package/build/logger/formatters/text-formatter.js.map +1 -0
  193. package/build/logger/index.d.ts +39 -0
  194. package/build/logger/index.d.ts.map +1 -0
  195. package/build/logger/index.js +43 -0
  196. package/build/logger/index.js.map +1 -0
  197. package/build/logger/logger.d.ts +278 -0
  198. package/build/logger/logger.d.ts.map +1 -0
  199. package/build/logger/logger.js +459 -0
  200. package/build/logger/logger.js.map +1 -0
  201. package/build/logger/mcp-logger.d.ts +177 -0
  202. package/build/logger/mcp-logger.d.ts.map +1 -0
  203. package/build/logger/mcp-logger.js +294 -0
  204. package/build/logger/mcp-logger.js.map +1 -0
  205. package/build/logger/scrubbing/index.d.ts +14 -0
  206. package/build/logger/scrubbing/index.d.ts.map +1 -0
  207. package/build/logger/scrubbing/index.js +16 -0
  208. package/build/logger/scrubbing/index.js.map +1 -0
  209. package/build/logger/scrubbing/injection-guard.d.ts +69 -0
  210. package/build/logger/scrubbing/injection-guard.d.ts.map +1 -0
  211. package/build/logger/scrubbing/injection-guard.js +102 -0
  212. package/build/logger/scrubbing/injection-guard.js.map +1 -0
  213. package/build/logger/scrubbing/secret-scrubber.d.ts +72 -0
  214. package/build/logger/scrubbing/secret-scrubber.d.ts.map +1 -0
  215. package/build/logger/scrubbing/secret-scrubber.js +177 -0
  216. package/build/logger/scrubbing/secret-scrubber.js.map +1 -0
  217. package/build/logger/writers/base-writer.d.ts +45 -0
  218. package/build/logger/writers/base-writer.d.ts.map +1 -0
  219. package/build/logger/writers/base-writer.js +41 -0
  220. package/build/logger/writers/base-writer.js.map +1 -0
  221. package/build/logger/writers/composite-writer.d.ts +83 -0
  222. package/build/logger/writers/composite-writer.d.ts.map +1 -0
  223. package/build/logger/writers/composite-writer.js +121 -0
  224. package/build/logger/writers/composite-writer.js.map +1 -0
  225. package/build/logger/writers/console-writer.d.ts +59 -0
  226. package/build/logger/writers/console-writer.d.ts.map +1 -0
  227. package/build/logger/writers/console-writer.js +73 -0
  228. package/build/logger/writers/console-writer.js.map +1 -0
  229. package/build/logger/writers/file-writer.d.ts +160 -0
  230. package/build/logger/writers/file-writer.d.ts.map +1 -0
  231. package/build/logger/writers/file-writer.js +345 -0
  232. package/build/logger/writers/file-writer.js.map +1 -0
  233. package/build/logger/writers/index.d.ts +15 -0
  234. package/build/logger/writers/index.d.ts.map +1 -0
  235. package/build/logger/writers/index.js +19 -0
  236. package/build/logger/writers/index.js.map +1 -0
  237. package/build/mcp/capabilities/apps/define-app.d.ts +68 -0
  238. package/build/mcp/capabilities/apps/define-app.d.ts.map +1 -0
  239. package/build/mcp/capabilities/apps/define-app.js +127 -0
  240. package/build/mcp/capabilities/apps/define-app.js.map +1 -0
  241. package/build/mcp/capabilities/apps/index.d.ts +10 -0
  242. package/build/mcp/capabilities/apps/index.d.ts.map +1 -0
  243. package/build/mcp/capabilities/apps/index.js +10 -0
  244. package/build/mcp/capabilities/apps/index.js.map +1 -0
  245. package/build/mcp/capabilities/capabilities.d.ts +24 -0
  246. package/build/mcp/capabilities/capabilities.d.ts.map +1 -0
  247. package/build/mcp/capabilities/capabilities.js +50 -0
  248. package/build/mcp/capabilities/capabilities.js.map +1 -0
  249. package/build/mcp/capabilities/index.d.ts +17 -0
  250. package/build/mcp/capabilities/index.d.ts.map +1 -0
  251. package/build/mcp/capabilities/index.js +20 -0
  252. package/build/mcp/capabilities/index.js.map +1 -0
  253. package/build/mcp/capabilities/prompts/define-prompt.d.ts +95 -0
  254. package/build/mcp/capabilities/prompts/define-prompt.d.ts.map +1 -0
  255. package/build/mcp/capabilities/prompts/define-prompt.js +109 -0
  256. package/build/mcp/capabilities/prompts/define-prompt.js.map +1 -0
  257. package/build/mcp/capabilities/prompts/index.d.ts +10 -0
  258. package/build/mcp/capabilities/prompts/index.d.ts.map +1 -0
  259. package/build/mcp/capabilities/prompts/index.js +10 -0
  260. package/build/mcp/capabilities/prompts/index.js.map +1 -0
  261. package/build/mcp/capabilities/registry/base-registry.d.ts +95 -0
  262. package/build/mcp/capabilities/registry/base-registry.d.ts.map +1 -0
  263. package/build/mcp/capabilities/registry/base-registry.js +149 -0
  264. package/build/mcp/capabilities/registry/base-registry.js.map +1 -0
  265. package/build/mcp/capabilities/registry/index.d.ts +16 -0
  266. package/build/mcp/capabilities/registry/index.d.ts.map +1 -0
  267. package/build/mcp/capabilities/registry/index.js +34 -0
  268. package/build/mcp/capabilities/registry/index.js.map +1 -0
  269. package/build/mcp/capabilities/registry/prompt-registry.d.ts +116 -0
  270. package/build/mcp/capabilities/registry/prompt-registry.d.ts.map +1 -0
  271. package/build/mcp/capabilities/registry/prompt-registry.js +232 -0
  272. package/build/mcp/capabilities/registry/prompt-registry.js.map +1 -0
  273. package/build/mcp/capabilities/registry/reset.d.ts +30 -0
  274. package/build/mcp/capabilities/registry/reset.d.ts.map +1 -0
  275. package/build/mcp/capabilities/registry/reset.js +48 -0
  276. package/build/mcp/capabilities/registry/reset.js.map +1 -0
  277. package/build/mcp/capabilities/registry/resource-registry.d.ts +152 -0
  278. package/build/mcp/capabilities/registry/resource-registry.d.ts.map +1 -0
  279. package/build/mcp/capabilities/registry/resource-registry.js +430 -0
  280. package/build/mcp/capabilities/registry/resource-registry.js.map +1 -0
  281. package/build/mcp/capabilities/registry/scope-enforcement.d.ts +48 -0
  282. package/build/mcp/capabilities/registry/scope-enforcement.d.ts.map +1 -0
  283. package/build/mcp/capabilities/registry/scope-enforcement.js +62 -0
  284. package/build/mcp/capabilities/registry/scope-enforcement.js.map +1 -0
  285. package/build/mcp/capabilities/registry/task-tool-registry.d.ts +96 -0
  286. package/build/mcp/capabilities/registry/task-tool-registry.d.ts.map +1 -0
  287. package/build/mcp/capabilities/registry/task-tool-registry.js +190 -0
  288. package/build/mcp/capabilities/registry/task-tool-registry.js.map +1 -0
  289. package/build/mcp/capabilities/registry/tool-registry.d.ts +100 -0
  290. package/build/mcp/capabilities/registry/tool-registry.d.ts.map +1 -0
  291. package/build/mcp/capabilities/registry/tool-registry.js +242 -0
  292. package/build/mcp/capabilities/registry/tool-registry.js.map +1 -0
  293. package/build/mcp/capabilities/resources/define-resource.d.ts +103 -0
  294. package/build/mcp/capabilities/resources/define-resource.d.ts.map +1 -0
  295. package/build/mcp/capabilities/resources/define-resource.js +137 -0
  296. package/build/mcp/capabilities/resources/define-resource.js.map +1 -0
  297. package/build/mcp/capabilities/resources/index.d.ts +10 -0
  298. package/build/mcp/capabilities/resources/index.d.ts.map +1 -0
  299. package/build/mcp/capabilities/resources/index.js +10 -0
  300. package/build/mcp/capabilities/resources/index.js.map +1 -0
  301. package/build/mcp/capabilities/server-capabilities.d.ts +33 -0
  302. package/build/mcp/capabilities/server-capabilities.d.ts.map +1 -0
  303. package/build/mcp/capabilities/server-capabilities.js +16 -0
  304. package/build/mcp/capabilities/server-capabilities.js.map +1 -0
  305. package/build/mcp/capabilities/tasks/define-task.d.ts +75 -0
  306. package/build/mcp/capabilities/tasks/define-task.d.ts.map +1 -0
  307. package/build/mcp/capabilities/tasks/define-task.js +93 -0
  308. package/build/mcp/capabilities/tasks/define-task.js.map +1 -0
  309. package/build/mcp/capabilities/tasks/index.d.ts +11 -0
  310. package/build/mcp/capabilities/tasks/index.d.ts.map +1 -0
  311. package/build/mcp/capabilities/tasks/index.js +11 -0
  312. package/build/mcp/capabilities/tasks/index.js.map +1 -0
  313. package/build/mcp/capabilities/tools/define-tool.d.ts +62 -0
  314. package/build/mcp/capabilities/tools/define-tool.d.ts.map +1 -0
  315. package/build/mcp/capabilities/tools/define-tool.js +73 -0
  316. package/build/mcp/capabilities/tools/define-tool.js.map +1 -0
  317. package/build/mcp/capabilities/tools/index.d.ts +10 -0
  318. package/build/mcp/capabilities/tools/index.d.ts.map +1 -0
  319. package/build/mcp/capabilities/tools/index.js +10 -0
  320. package/build/mcp/capabilities/tools/index.js.map +1 -0
  321. package/build/mcp/handlers/index.d.ts +19 -0
  322. package/build/mcp/handlers/index.d.ts.map +1 -0
  323. package/build/mcp/handlers/index.js +26 -0
  324. package/build/mcp/handlers/index.js.map +1 -0
  325. package/build/mcp/handlers/ping.d.ts +27 -0
  326. package/build/mcp/handlers/ping.d.ts.map +1 -0
  327. package/build/mcp/handlers/ping.js +61 -0
  328. package/build/mcp/handlers/ping.js.map +1 -0
  329. package/build/mcp/handlers/progress.d.ts +41 -0
  330. package/build/mcp/handlers/progress.d.ts.map +1 -0
  331. package/build/mcp/handlers/progress.js +79 -0
  332. package/build/mcp/handlers/progress.js.map +1 -0
  333. package/build/mcp/index.d.ts +28 -0
  334. package/build/mcp/index.d.ts.map +1 -0
  335. package/build/mcp/index.js +34 -0
  336. package/build/mcp/index.js.map +1 -0
  337. package/build/mcp/responses/helpers.d.ts +146 -0
  338. package/build/mcp/responses/helpers.d.ts.map +1 -0
  339. package/build/mcp/responses/helpers.js +197 -0
  340. package/build/mcp/responses/helpers.js.map +1 -0
  341. package/build/mcp/responses/index.d.ts +9 -0
  342. package/build/mcp/responses/index.d.ts.map +1 -0
  343. package/build/mcp/responses/index.js +12 -0
  344. package/build/mcp/responses/index.js.map +1 -0
  345. package/build/mcp/types/context.d.ts +371 -0
  346. package/build/mcp/types/context.d.ts.map +1 -0
  347. package/build/mcp/types/context.js +17 -0
  348. package/build/mcp/types/context.js.map +1 -0
  349. package/build/mcp/types/definition.d.ts +727 -0
  350. package/build/mcp/types/definition.d.ts.map +1 -0
  351. package/build/mcp/types/definition.js +29 -0
  352. package/build/mcp/types/definition.js.map +1 -0
  353. package/build/mcp/types/handler.d.ts +58 -0
  354. package/build/mcp/types/handler.d.ts.map +1 -0
  355. package/build/mcp/types/handler.js +10 -0
  356. package/build/mcp/types/handler.js.map +1 -0
  357. package/build/mcp/types/index.d.ts +21 -0
  358. package/build/mcp/types/index.d.ts.map +1 -0
  359. package/build/mcp/types/index.js +18 -0
  360. package/build/mcp/types/index.js.map +1 -0
  361. package/build/mcp/types/response.d.ts +79 -0
  362. package/build/mcp/types/response.d.ts.map +1 -0
  363. package/build/mcp/types/response.js +10 -0
  364. package/build/mcp/types/response.js.map +1 -0
  365. package/build/server/auth/auth-context.d.ts +52 -0
  366. package/build/server/auth/auth-context.d.ts.map +1 -0
  367. package/build/server/auth/auth-context.js +45 -0
  368. package/build/server/auth/auth-context.js.map +1 -0
  369. package/build/server/auth/guards.d.ts +72 -0
  370. package/build/server/auth/guards.d.ts.map +1 -0
  371. package/build/server/auth/guards.js +103 -0
  372. package/build/server/auth/guards.js.map +1 -0
  373. package/build/server/auth/index.d.ts +21 -0
  374. package/build/server/auth/index.d.ts.map +1 -0
  375. package/build/server/auth/index.js +20 -0
  376. package/build/server/auth/index.js.map +1 -0
  377. package/build/server/auth/oidc-discovery.d.ts +68 -0
  378. package/build/server/auth/oidc-discovery.d.ts.map +1 -0
  379. package/build/server/auth/oidc-discovery.js +234 -0
  380. package/build/server/auth/oidc-discovery.js.map +1 -0
  381. package/build/server/auth/oidc-provider.d.ts +96 -0
  382. package/build/server/auth/oidc-provider.d.ts.map +1 -0
  383. package/build/server/auth/oidc-provider.js +126 -0
  384. package/build/server/auth/oidc-provider.js.map +1 -0
  385. package/build/server/auth/types.d.ts +204 -0
  386. package/build/server/auth/types.d.ts.map +1 -0
  387. package/build/server/auth/types.js +29 -0
  388. package/build/server/auth/types.js.map +1 -0
  389. package/build/server/auth/upstream-provider.d.ts +161 -0
  390. package/build/server/auth/upstream-provider.d.ts.map +1 -0
  391. package/build/server/auth/upstream-provider.js +411 -0
  392. package/build/server/auth/upstream-provider.js.map +1 -0
  393. package/build/server/builder/constants.d.ts +45 -0
  394. package/build/server/builder/constants.d.ts.map +1 -0
  395. package/build/server/builder/constants.js +54 -0
  396. package/build/server/builder/constants.js.map +1 -0
  397. package/build/server/builder/index.d.ts +24 -0
  398. package/build/server/builder/index.d.ts.map +1 -0
  399. package/build/server/builder/index.js +25 -0
  400. package/build/server/builder/index.js.map +1 -0
  401. package/build/server/builder/primitive-collector.d.ts +24 -0
  402. package/build/server/builder/primitive-collector.d.ts.map +1 -0
  403. package/build/server/builder/primitive-collector.js +89 -0
  404. package/build/server/builder/primitive-collector.js.map +1 -0
  405. package/build/server/builder/server-builder.d.ts +53 -0
  406. package/build/server/builder/server-builder.d.ts.map +1 -0
  407. package/build/server/builder/server-builder.js +132 -0
  408. package/build/server/builder/server-builder.js.map +1 -0
  409. package/build/server/builder/types.d.ts +93 -0
  410. package/build/server/builder/types.d.ts.map +1 -0
  411. package/build/server/builder/types.js +25 -0
  412. package/build/server/builder/types.js.map +1 -0
  413. package/build/server/builder/validation.d.ts +36 -0
  414. package/build/server/builder/validation.d.ts.map +1 -0
  415. package/build/server/builder/validation.js +44 -0
  416. package/build/server/builder/validation.js.map +1 -0
  417. package/build/server/create-server.d.ts +57 -0
  418. package/build/server/create-server.d.ts.map +1 -0
  419. package/build/server/create-server.js +104 -0
  420. package/build/server/create-server.js.map +1 -0
  421. package/build/server/http/express-app.d.ts +103 -0
  422. package/build/server/http/express-app.d.ts.map +1 -0
  423. package/build/server/http/express-app.js +391 -0
  424. package/build/server/http/express-app.js.map +1 -0
  425. package/build/server/http/http-server.d.ts +67 -0
  426. package/build/server/http/http-server.d.ts.map +1 -0
  427. package/build/server/http/http-server.js +188 -0
  428. package/build/server/http/http-server.js.map +1 -0
  429. package/build/server/http/http-transport.d.ts +33 -0
  430. package/build/server/http/http-transport.d.ts.map +1 -0
  431. package/build/server/http/http-transport.js +84 -0
  432. package/build/server/http/http-transport.js.map +1 -0
  433. package/build/server/http/index.d.ts +15 -0
  434. package/build/server/http/index.d.ts.map +1 -0
  435. package/build/server/http/index.js +11 -0
  436. package/build/server/http/index.js.map +1 -0
  437. package/build/server/index.d.ts +25 -0
  438. package/build/server/index.d.ts.map +1 -0
  439. package/build/server/index.js +41 -0
  440. package/build/server/index.js.map +1 -0
  441. package/build/server/lifecycle.d.ts +114 -0
  442. package/build/server/lifecycle.d.ts.map +1 -0
  443. package/build/server/lifecycle.js +30 -0
  444. package/build/server/lifecycle.js.map +1 -0
  445. package/build/server/middleware/bearer-auth.d.ts +43 -0
  446. package/build/server/middleware/bearer-auth.d.ts.map +1 -0
  447. package/build/server/middleware/bearer-auth.js +75 -0
  448. package/build/server/middleware/bearer-auth.js.map +1 -0
  449. package/build/server/middleware/custom-header-auth.d.ts +40 -0
  450. package/build/server/middleware/custom-header-auth.d.ts.map +1 -0
  451. package/build/server/middleware/custom-header-auth.js +90 -0
  452. package/build/server/middleware/custom-header-auth.js.map +1 -0
  453. package/build/server/middleware/dns-rebinding.d.ts +25 -0
  454. package/build/server/middleware/dns-rebinding.d.ts.map +1 -0
  455. package/build/server/middleware/dns-rebinding.js +94 -0
  456. package/build/server/middleware/dns-rebinding.js.map +1 -0
  457. package/build/server/middleware/index.d.ts +69 -0
  458. package/build/server/middleware/index.d.ts.map +1 -0
  459. package/build/server/middleware/index.js +68 -0
  460. package/build/server/middleware/index.js.map +1 -0
  461. package/build/server/middleware/logging.d.ts +21 -0
  462. package/build/server/middleware/logging.d.ts.map +1 -0
  463. package/build/server/middleware/logging.js +36 -0
  464. package/build/server/middleware/logging.js.map +1 -0
  465. package/build/server/middleware/oauth-router.d.ts +50 -0
  466. package/build/server/middleware/oauth-router.d.ts.map +1 -0
  467. package/build/server/middleware/oauth-router.js +53 -0
  468. package/build/server/middleware/oauth-router.js.map +1 -0
  469. package/build/server/middleware/protocol-version.d.ts +13 -0
  470. package/build/server/middleware/protocol-version.d.ts.map +1 -0
  471. package/build/server/middleware/protocol-version.js +48 -0
  472. package/build/server/middleware/protocol-version.js.map +1 -0
  473. package/build/server/middleware/rate-limit.d.ts +47 -0
  474. package/build/server/middleware/rate-limit.d.ts.map +1 -0
  475. package/build/server/middleware/rate-limit.js +109 -0
  476. package/build/server/middleware/rate-limit.js.map +1 -0
  477. package/build/server/middleware/trust-proxy.d.ts +37 -0
  478. package/build/server/middleware/trust-proxy.d.ts.map +1 -0
  479. package/build/server/middleware/trust-proxy.js +154 -0
  480. package/build/server/middleware/trust-proxy.js.map +1 -0
  481. package/build/server/option-overrides.d.ts +25 -0
  482. package/build/server/option-overrides.d.ts.map +1 -0
  483. package/build/server/option-overrides.js +85 -0
  484. package/build/server/option-overrides.js.map +1 -0
  485. package/build/server/routes/health.d.ts +87 -0
  486. package/build/server/routes/health.d.ts.map +1 -0
  487. package/build/server/routes/health.js +183 -0
  488. package/build/server/routes/health.js.map +1 -0
  489. package/build/server/routes/index.d.ts +16 -0
  490. package/build/server/routes/index.d.ts.map +1 -0
  491. package/build/server/routes/index.js +18 -0
  492. package/build/server/routes/index.js.map +1 -0
  493. package/build/server/routes/metrics.d.ts +40 -0
  494. package/build/server/routes/metrics.d.ts.map +1 -0
  495. package/build/server/routes/metrics.js +81 -0
  496. package/build/server/routes/metrics.js.map +1 -0
  497. package/build/server/routes/oauth-router.d.ts +50 -0
  498. package/build/server/routes/oauth-router.d.ts.map +1 -0
  499. package/build/server/routes/oauth-router.js +53 -0
  500. package/build/server/routes/oauth-router.js.map +1 -0
  501. package/build/server/routes/readiness-status.d.ts +25 -0
  502. package/build/server/routes/readiness-status.d.ts.map +1 -0
  503. package/build/server/routes/readiness-status.js +27 -0
  504. package/build/server/routes/readiness-status.js.map +1 -0
  505. package/build/server/routes/sse-router.d.ts +43 -0
  506. package/build/server/routes/sse-router.d.ts.map +1 -0
  507. package/build/server/routes/sse-router.js +92 -0
  508. package/build/server/routes/sse-router.js.map +1 -0
  509. package/build/server/routes/streamable-http-router.d.ts +36 -0
  510. package/build/server/routes/streamable-http-router.d.ts.map +1 -0
  511. package/build/server/routes/streamable-http-router.js +59 -0
  512. package/build/server/routes/streamable-http-router.js.map +1 -0
  513. package/build/server/server-instance.d.ts +185 -0
  514. package/build/server/server-instance.d.ts.map +1 -0
  515. package/build/server/server-instance.js +615 -0
  516. package/build/server/server-instance.js.map +1 -0
  517. package/build/server/server-options.d.ts +411 -0
  518. package/build/server/server-options.d.ts.map +1 -0
  519. package/build/server/server-options.js +17 -0
  520. package/build/server/server-options.js.map +1 -0
  521. package/build/server/session/in-memory-store.d.ts +128 -0
  522. package/build/server/session/in-memory-store.d.ts.map +1 -0
  523. package/build/server/session/in-memory-store.js +312 -0
  524. package/build/server/session/in-memory-store.js.map +1 -0
  525. package/build/server/session/index.d.ts +43 -0
  526. package/build/server/session/index.d.ts.map +1 -0
  527. package/build/server/session/index.js +47 -0
  528. package/build/server/session/index.js.map +1 -0
  529. package/build/server/session/mcp-session.d.ts +210 -0
  530. package/build/server/session/mcp-session.d.ts.map +1 -0
  531. package/build/server/session/mcp-session.js +428 -0
  532. package/build/server/session/mcp-session.js.map +1 -0
  533. package/build/server/session/session-factory.d.ts +119 -0
  534. package/build/server/session/session-factory.d.ts.map +1 -0
  535. package/build/server/session/session-factory.js +131 -0
  536. package/build/server/session/session-factory.js.map +1 -0
  537. package/build/server/session/session-housekeeper.d.ts +100 -0
  538. package/build/server/session/session-housekeeper.d.ts.map +1 -0
  539. package/build/server/session/session-housekeeper.js +217 -0
  540. package/build/server/session/session-housekeeper.js.map +1 -0
  541. package/build/server/session/session-manager.d.ts +227 -0
  542. package/build/server/session/session-manager.d.ts.map +1 -0
  543. package/build/server/session/session-manager.js +282 -0
  544. package/build/server/session/session-manager.js.map +1 -0
  545. package/build/server/session/session-store.d.ts +95 -0
  546. package/build/server/session/session-store.d.ts.map +1 -0
  547. package/build/server/session/session-store.js +13 -0
  548. package/build/server/session/session-store.js.map +1 -0
  549. package/build/server/session/session.d.ts +132 -0
  550. package/build/server/session/session.d.ts.map +1 -0
  551. package/build/server/session/session.js +61 -0
  552. package/build/server/session/session.js.map +1 -0
  553. package/build/server/transport/constants.d.ts +85 -0
  554. package/build/server/transport/constants.d.ts.map +1 -0
  555. package/build/server/transport/constants.js +103 -0
  556. package/build/server/transport/constants.js.map +1 -0
  557. package/build/server/transport/index.d.ts +21 -0
  558. package/build/server/transport/index.d.ts.map +1 -0
  559. package/build/server/transport/index.js +28 -0
  560. package/build/server/transport/index.js.map +1 -0
  561. package/build/server/transport/sse/handler.d.ts +46 -0
  562. package/build/server/transport/sse/handler.d.ts.map +1 -0
  563. package/build/server/transport/sse/handler.js +189 -0
  564. package/build/server/transport/sse/handler.js.map +1 -0
  565. package/build/server/transport/sse/index.d.ts +15 -0
  566. package/build/server/transport/sse/index.d.ts.map +1 -0
  567. package/build/server/transport/sse/index.js +14 -0
  568. package/build/server/transport/sse/index.js.map +1 -0
  569. package/build/server/transport/sse/transport.d.ts +94 -0
  570. package/build/server/transport/sse/transport.d.ts.map +1 -0
  571. package/build/server/transport/sse/transport.js +175 -0
  572. package/build/server/transport/sse/transport.js.map +1 -0
  573. package/build/server/transport/stdio-transport.d.ts +23 -0
  574. package/build/server/transport/stdio-transport.d.ts.map +1 -0
  575. package/build/server/transport/stdio-transport.js +59 -0
  576. package/build/server/transport/stdio-transport.js.map +1 -0
  577. package/build/server/transport/streamable-http/index.d.ts +9 -0
  578. package/build/server/transport/streamable-http/index.d.ts.map +1 -0
  579. package/build/server/transport/streamable-http/index.js +9 -0
  580. package/build/server/transport/streamable-http/index.js.map +1 -0
  581. package/build/server/transport/streamable-http/stateful-handler.d.ts +41 -0
  582. package/build/server/transport/streamable-http/stateful-handler.d.ts.map +1 -0
  583. package/build/server/transport/streamable-http/stateful-handler.js +264 -0
  584. package/build/server/transport/streamable-http/stateful-handler.js.map +1 -0
  585. package/build/server/transport/streamable-http/stateless-handler.d.ts +28 -0
  586. package/build/server/transport/streamable-http/stateless-handler.d.ts.map +1 -0
  587. package/build/server/transport/streamable-http/stateless-handler.js +81 -0
  588. package/build/server/transport/streamable-http/stateless-handler.js.map +1 -0
  589. package/build/server/transport/streamable-http/transport.d.ts +110 -0
  590. package/build/server/transport/streamable-http/transport.d.ts.map +1 -0
  591. package/build/server/transport/streamable-http/transport.js +118 -0
  592. package/build/server/transport/streamable-http/transport.js.map +1 -0
  593. package/build/server/transport/transport-context.d.ts +67 -0
  594. package/build/server/transport/transport-context.d.ts.map +1 -0
  595. package/build/server/transport/transport-context.js +38 -0
  596. package/build/server/transport/transport-context.js.map +1 -0
  597. package/build/server/transport/types.d.ts +56 -0
  598. package/build/server/transport/types.d.ts.map +1 -0
  599. package/build/server/transport/types.js +11 -0
  600. package/build/server/transport/types.js.map +1 -0
  601. package/build/server/transport-options.d.ts +248 -0
  602. package/build/server/transport-options.d.ts.map +1 -0
  603. package/build/server/transport-options.js +18 -0
  604. package/build/server/transport-options.js.map +1 -0
  605. package/build/server/types.d.ts +172 -0
  606. package/build/server/types.d.ts.map +1 -0
  607. package/build/server/types.js +9 -0
  608. package/build/server/types.js.map +1 -0
  609. package/build/telemetry/connection-telemetry-bridge.d.ts +30 -0
  610. package/build/telemetry/connection-telemetry-bridge.d.ts.map +1 -0
  611. package/build/telemetry/connection-telemetry-bridge.js +54 -0
  612. package/build/telemetry/connection-telemetry-bridge.js.map +1 -0
  613. package/build/telemetry/core/config.d.ts +38 -0
  614. package/build/telemetry/core/config.d.ts.map +1 -0
  615. package/build/telemetry/core/config.js +54 -0
  616. package/build/telemetry/core/config.js.map +1 -0
  617. package/build/telemetry/core/constants.d.ts +183 -0
  618. package/build/telemetry/core/constants.d.ts.map +1 -0
  619. package/build/telemetry/core/constants.js +207 -0
  620. package/build/telemetry/core/constants.js.map +1 -0
  621. package/build/telemetry/core/diag-logger.d.ts +35 -0
  622. package/build/telemetry/core/diag-logger.d.ts.map +1 -0
  623. package/build/telemetry/core/diag-logger.js +54 -0
  624. package/build/telemetry/core/diag-logger.js.map +1 -0
  625. package/build/telemetry/core/index.d.ts +12 -0
  626. package/build/telemetry/core/index.d.ts.map +1 -0
  627. package/build/telemetry/core/index.js +32 -0
  628. package/build/telemetry/core/index.js.map +1 -0
  629. package/build/telemetry/core/types.d.ts +106 -0
  630. package/build/telemetry/core/types.d.ts.map +1 -0
  631. package/build/telemetry/core/types.js +10 -0
  632. package/build/telemetry/core/types.js.map +1 -0
  633. package/build/telemetry/index.d.ts +59 -0
  634. package/build/telemetry/index.d.ts.map +1 -0
  635. package/build/telemetry/index.js +79 -0
  636. package/build/telemetry/index.js.map +1 -0
  637. package/build/telemetry/metrics.d.ts +127 -0
  638. package/build/telemetry/metrics.d.ts.map +1 -0
  639. package/build/telemetry/metrics.js +337 -0
  640. package/build/telemetry/metrics.js.map +1 -0
  641. package/build/telemetry/sdk.d.ts +110 -0
  642. package/build/telemetry/sdk.d.ts.map +1 -0
  643. package/build/telemetry/sdk.js +547 -0
  644. package/build/telemetry/sdk.js.map +1 -0
  645. package/build/telemetry/tracing.d.ts +78 -0
  646. package/build/telemetry/tracing.d.ts.map +1 -0
  647. package/build/telemetry/tracing.js +257 -0
  648. package/build/telemetry/tracing.js.map +1 -0
  649. package/build/utils/env-helpers.d.ts +46 -0
  650. package/build/utils/env-helpers.d.ts.map +1 -0
  651. package/build/utils/env-helpers.js +54 -0
  652. package/build/utils/env-helpers.js.map +1 -0
  653. package/build/utils/index.d.ts +14 -0
  654. package/build/utils/index.d.ts.map +1 -0
  655. package/build/utils/index.js +19 -0
  656. package/build/utils/index.js.map +1 -0
  657. package/build/utils/sensitive-keys.d.ts +48 -0
  658. package/build/utils/sensitive-keys.d.ts.map +1 -0
  659. package/build/utils/sensitive-keys.js +131 -0
  660. package/build/utils/sensitive-keys.js.map +1 -0
  661. package/build/utils/string-helpers.d.ts +126 -0
  662. package/build/utils/string-helpers.d.ts.map +1 -0
  663. package/build/utils/string-helpers.js +189 -0
  664. package/build/utils/string-helpers.js.map +1 -0
  665. package/build/utils/validation.d.ts +84 -0
  666. package/build/utils/validation.d.ts.map +1 -0
  667. package/build/utils/validation.js +111 -0
  668. package/build/utils/validation.js.map +1 -0
  669. package/build/utils/zod-helpers.d.ts +92 -0
  670. package/build/utils/zod-helpers.d.ts.map +1 -0
  671. package/build/utils/zod-helpers.js +120 -0
  672. package/build/utils/zod-helpers.js.map +1 -0
  673. package/package.json +133 -0
@@ -0,0 +1,312 @@
1
+ /**
2
+ * In-Memory Session Store
3
+ *
4
+ * Built-in session store implementation using a `Map`.
5
+ * Suitable for single-instance deployments.
6
+ *
7
+ * For horizontal scaling, implement the {@link SessionStore} interface
8
+ * with a shared backend (Redis, PostgreSQL, etc.).
9
+ *
10
+ * Contains NO timer logic — background tasks are handled by SessionHousekeeper.
11
+ *
12
+ * @module server/session/in-memory-store
13
+ */
14
+ import { logger as baseLogger } from "../../logger/index.js";
15
+ import { createSession, SESSION_STATES, SESSION_CLOSE_REASONS } from "./session.js";
16
+ // ============================================================================
17
+ // Constants
18
+ // ============================================================================
19
+ const LOG_COMPONENT = "session-store";
20
+ const LogMessages = {
21
+ SESSION_CREATED: "Session created: %s type=%s (active=%d)",
22
+ SESSION_CLOSED: "Session closed: %s reason=%s (active=%d)",
23
+ SESSION_LIMIT_REACHED: "Session limit reached: %d/%d",
24
+ BROADCAST_TOOL_LIST: "Broadcasting tool list changed to %d sessions",
25
+ BROADCAST_RESOURCE_LIST: "Broadcasting resource list changed to %d sessions",
26
+ BROADCAST_PROMPT_LIST: "Broadcasting prompt list changed to %d sessions",
27
+ SHUTDOWN_STARTED: "Closing all sessions (%d active)",
28
+ SHUTDOWN_COMPLETE: "All sessions closed",
29
+ };
30
+ const logger = baseLogger.child({ component: LOG_COMPONENT });
31
+ // ============================================================================
32
+ // In-Memory Session Store
33
+ // ============================================================================
34
+ /**
35
+ * Built-in in-memory session store using a `Map`.
36
+ *
37
+ * Suitable for single-instance deployments. For horizontal scaling,
38
+ * implement the {@link SessionStore} interface with a shared backend.
39
+ *
40
+ * Responsibilities:
41
+ * - Create, get, close, and query sessions
42
+ * - Enforce capacity limits
43
+ * - Track statistics (created, peak, by transport type)
44
+ * - Broadcast notifications to all connected clients
45
+ *
46
+ * Does NOT manage timers or background tasks.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const store = new InMemorySessionStore(100);
51
+ *
52
+ * const session = store.create({ transportType: 'http', transport, mcpSession });
53
+ * const found = store.get(session.id);
54
+ * store.broadcastToolListChanged();
55
+ * await store.close(session.id, SESSION_CLOSE_REASONS.CLIENT_DISCONNECT);
56
+ * ```
57
+ */
58
+ export class InMemorySessionStore {
59
+ maxSessions;
60
+ /** Active sessions indexed by session ID */
61
+ sessions = new Map();
62
+ /** Statistics counters */
63
+ statsCounters = {
64
+ totalCreated: 0,
65
+ peakConcurrent: 0,
66
+ timeoutCount: 0,
67
+ heartbeatFailureCount: 0,
68
+ };
69
+ /** Sessions by transport type (for stats) */
70
+ byTransportType = {
71
+ http: 0,
72
+ https: 0,
73
+ sse: 0,
74
+ stdio: 0,
75
+ };
76
+ /** Whether the store is rejecting new sessions */
77
+ isShuttingDown = false;
78
+ constructor(maxSessions) {
79
+ this.maxSessions = maxSessions;
80
+ }
81
+ // ==========================================================================
82
+ // Properties
83
+ // ==========================================================================
84
+ get size() {
85
+ return this.sessions.size;
86
+ }
87
+ get stats() {
88
+ return {
89
+ activeCount: this.sessions.size,
90
+ maxSessions: this.maxSessions,
91
+ totalCreated: this.statsCounters.totalCreated,
92
+ peakConcurrent: this.statsCounters.peakConcurrent,
93
+ timeoutCount: this.statsCounters.timeoutCount,
94
+ heartbeatFailureCount: this.statsCounters.heartbeatFailureCount,
95
+ byTransportType: { ...this.byTransportType },
96
+ };
97
+ }
98
+ // ==========================================================================
99
+ // CRUD Operations
100
+ // ==========================================================================
101
+ /**
102
+ * Creates and registers a new session.
103
+ *
104
+ * Capacity check and insertion are synchronous (no await between them),
105
+ * which is safe in Node.js single-threaded event loop. Do NOT introduce
106
+ * any async operations between hasCapacity() and sessions.set().
107
+ *
108
+ * @param options - Session creation options
109
+ * @returns The created session, or undefined if at max capacity or shutting down
110
+ */
111
+ create(options) {
112
+ if (this.isShuttingDown || this.sessions.size >= this.maxSessions) {
113
+ if (!this.isShuttingDown) {
114
+ logger.warn(LogMessages.SESSION_LIMIT_REACHED, this.sessions.size, this.maxSessions);
115
+ }
116
+ return undefined;
117
+ }
118
+ // IMPORTANT: No await between capacity check above and Map.set() below.
119
+ // This keeps the check-and-insert atomic within the same microtask.
120
+ const session = createSession(options);
121
+ session.state = SESSION_STATES.ACTIVE;
122
+ this.sessions.set(session.id, session);
123
+ // Update statistics
124
+ this.statsCounters.totalCreated++;
125
+ this.byTransportType[session.transport.type]++;
126
+ if (this.sessions.size > this.statsCounters.peakConcurrent) {
127
+ this.statsCounters.peakConcurrent = this.sessions.size;
128
+ }
129
+ logger.info(LogMessages.SESSION_CREATED, session.id, session.transport.type, this.sessions.size);
130
+ return session;
131
+ }
132
+ /**
133
+ * Gets an active session by ID.
134
+ * Does NOT update activity time (use touch() for that).
135
+ */
136
+ get(sessionId) {
137
+ const session = this.sessions.get(sessionId);
138
+ if (session && session.state === SESSION_STATES.ACTIVE) {
139
+ return session;
140
+ }
141
+ return undefined;
142
+ }
143
+ /**
144
+ * Checks if a session exists and is active.
145
+ */
146
+ has(sessionId) {
147
+ const session = this.sessions.get(sessionId);
148
+ return session !== undefined && session.state === SESSION_STATES.ACTIVE;
149
+ }
150
+ /**
151
+ * Updates the last activity time for a session.
152
+ * Also resets missed heartbeat count.
153
+ */
154
+ touch(sessionId) {
155
+ const session = this.sessions.get(sessionId);
156
+ if (session && session.state === SESSION_STATES.ACTIVE) {
157
+ session.metadata.lastActivityAt = new Date();
158
+ session.transport.heartbeat = {
159
+ ...session.transport.heartbeat,
160
+ missedCount: 0,
161
+ };
162
+ return true;
163
+ }
164
+ return false;
165
+ }
166
+ /**
167
+ * Checks if there's capacity for new sessions.
168
+ */
169
+ hasCapacity() {
170
+ return this.sessions.size < this.maxSessions;
171
+ }
172
+ // ==========================================================================
173
+ // Lifecycle
174
+ // ==========================================================================
175
+ /**
176
+ * Removes a session from the store and updates statistics.
177
+ *
178
+ * Pure data operation — does NOT close transport or dispose MCP session.
179
+ * The caller (SessionManager) is responsible for I/O teardown.
180
+ *
181
+ * @param sessionId - Session identifier
182
+ * @param reason - Reason for closure (tracked in stats)
183
+ * @returns The removed session, or undefined if not found
184
+ */
185
+ remove(sessionId, reason) {
186
+ const session = this.sessions.get(sessionId);
187
+ if (!session) {
188
+ return undefined;
189
+ }
190
+ // Track close reason in stats
191
+ if (reason === SESSION_CLOSE_REASONS.TIMEOUT) {
192
+ this.statsCounters.timeoutCount++;
193
+ }
194
+ else if (reason === SESSION_CLOSE_REASONS.HEARTBEAT_FAILURE) {
195
+ this.statsCounters.heartbeatFailureCount++;
196
+ }
197
+ session.state = SESSION_STATES.CLOSING;
198
+ this.byTransportType[session.transport.type]--;
199
+ this.sessions.delete(sessionId);
200
+ logger.info(LogMessages.SESSION_CLOSED, sessionId, reason, this.sessions.size);
201
+ return session;
202
+ }
203
+ /**
204
+ * Removes all sessions from the store during shutdown.
205
+ * Returns the removed sessions for the caller to handle I/O teardown.
206
+ */
207
+ removeAll() {
208
+ this.isShuttingDown = true;
209
+ const sessionCount = this.sessions.size;
210
+ logger.info(LogMessages.SHUTDOWN_STARTED, sessionCount);
211
+ const removed = [];
212
+ for (const sessionId of Array.from(this.sessions.keys())) {
213
+ const session = this.remove(sessionId, SESSION_CLOSE_REASONS.SHUTDOWN);
214
+ if (session) {
215
+ removed.push(session);
216
+ }
217
+ }
218
+ logger.info(LogMessages.SHUTDOWN_COMPLETE);
219
+ return removed;
220
+ }
221
+ /**
222
+ * Marks the store as shutting down (rejects new sessions).
223
+ */
224
+ markShuttingDown() {
225
+ this.isShuttingDown = true;
226
+ }
227
+ // ==========================================================================
228
+ // Queries
229
+ // ==========================================================================
230
+ /**
231
+ * Iterates over all active sessions.
232
+ */
233
+ forEach(callback) {
234
+ for (const session of this.sessions.values()) {
235
+ callback(session, session.id);
236
+ }
237
+ }
238
+ /**
239
+ * Finds sessions matching a predicate.
240
+ */
241
+ filter(predicate) {
242
+ const results = [];
243
+ for (const session of this.sessions.values()) {
244
+ if (predicate(session)) {
245
+ results.push(session);
246
+ }
247
+ }
248
+ return results;
249
+ }
250
+ /**
251
+ * Gets all sessions of a specific transport type.
252
+ */
253
+ getByTransportType(type) {
254
+ return this.filter((session) => session.transport.type === type);
255
+ }
256
+ // ==========================================================================
257
+ // Broadcasting
258
+ // ==========================================================================
259
+ /**
260
+ * Broadcasts tool list changed notification to all active sessions.
261
+ */
262
+ broadcastToolListChanged() {
263
+ this.broadcastToSessions(LogMessages.BROADCAST_TOOL_LIST, (sdk) => sdk.sendToolListChanged());
264
+ }
265
+ broadcastResourceListChanged() {
266
+ this.broadcastToSessions(LogMessages.BROADCAST_RESOURCE_LIST, (sdk) => sdk.sendResourceListChanged());
267
+ }
268
+ broadcastPromptListChanged() {
269
+ this.broadcastToSessions(LogMessages.BROADCAST_PROMPT_LIST, (sdk) => sdk.sendPromptListChanged());
270
+ }
271
+ broadcastResourceUpdated(uri) {
272
+ const activeCount = this.sessions.size;
273
+ if (activeCount === 0) {
274
+ return;
275
+ }
276
+ for (const session of this.sessions.values()) {
277
+ if (session.state === SESSION_STATES.ACTIVE) {
278
+ // Delegate to McpSession which checks subscription state
279
+ session.mcpSession.sendResourceUpdated(uri).catch((error) => {
280
+ logger.warn("Error sending resource updated to session %s: %s", session.id, String(error));
281
+ });
282
+ }
283
+ }
284
+ }
285
+ /**
286
+ * Broadcasts a notification to all active sessions.
287
+ * @internal
288
+ */
289
+ broadcastToSessions(logMessage, action) {
290
+ const activeCount = this.sessions.size;
291
+ if (activeCount === 0) {
292
+ return;
293
+ }
294
+ logger.trace(logMessage, activeCount);
295
+ for (const session of this.sessions.values()) {
296
+ if (session.state === SESSION_STATES.ACTIVE) {
297
+ try {
298
+ const result = action(session.mcpSession.sdk);
299
+ if (result instanceof Promise) {
300
+ result.catch((error) => {
301
+ logger.warn("Error broadcasting to session %s: %s", session.id, String(error));
302
+ });
303
+ }
304
+ }
305
+ catch (error) {
306
+ logger.warn("Error broadcasting to session %s: %s", session.id, String(error));
307
+ }
308
+ }
309
+ }
310
+ }
311
+ }
312
+ //# sourceMappingURL=in-memory-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../../src/server/session/in-memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Session Module
3
+ *
4
+ * Unified session management for the MCP Server Framework.
5
+ * The Session is the single source of truth for each connected MCP client.
6
+ *
7
+ * ## Architecture
8
+ *
9
+ * ```
10
+ * Session (source of truth per client)
11
+ * ├── id (unique identifier)
12
+ * ├── state (lifecycle: created → active → closing → closed)
13
+ * ├── transport → TransportContext
14
+ * │ ├── type (http | sse | stdio)
15
+ * │ ├── transport (MCP SDK transport)
16
+ * │ └── heartbeat (state tracking)
17
+ * ├── mcpSession → McpSession
18
+ * │ ├── sdk (MCP SDK server)
19
+ * │ └── register*() (SDK registration methods)
20
+ * ├── auth → AuthContext (auth/)
21
+ * │ ├── sdkAuthInfo (SDK AuthInfo wrapper)
22
+ * │ ├── userId? (authenticated user)
23
+ * │ └── permissions (access scopes)
24
+ * ├── clientInfo (name, version, remoteAddress)
25
+ * └── metadata → SessionMetadata (createdAt, lastActivityAt)
26
+ * ```
27
+ *
28
+ * @module server/session
29
+ */
30
+ export type { TransportType, HeartbeatCapableTransport, HeartbeatState, TransportContext, } from "../transport/transport-context.js";
31
+ export { createTransportContext, isHeartbeatCapable } from "../transport/transport-context.js";
32
+ export type { AuthInfo, AuthContext } from "../auth/index.js";
33
+ export { ANONYMOUS_AUTH, createAuthContext } from "../auth/index.js";
34
+ export type { SessionState, SessionCloseReason, ClientInfo, SessionMetadata, Session, ReadonlySession, CreateSessionOptions, } from "./session.js";
35
+ export { createSession, SESSION_STATES, SESSION_CLOSE_REASONS } from "./session.js";
36
+ export type { SessionConfig, SessionConfigInput, SessionLifecycleHooks, SessionStats, SessionManager, } from "./session-manager.js";
37
+ export { SessionManagerImpl } from "./session-manager.js";
38
+ export type { SessionStore } from "./session-store.js";
39
+ export { InMemorySessionStore } from "./in-memory-store.js";
40
+ export { SessionHousekeeper, type HousekeeperConfig, type CloseSessionCallback } from "./session-housekeeper.js";
41
+ export { McpSession, type McpSessionOptions, type CloseCallback, type ErrorCallback } from "./mcp-session.js";
42
+ export { McpSessionFactory, type SessionFactoryConfig } from "./session-factory.js";
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,YAAY,EACV,aAAa,EACb,yBAAyB,EACzB,cAAc,EACd,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAM/F,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAMrE,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,OAAO,EACP,eAAe,EACf,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAMpF,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM5D,OAAO,EAAE,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMjH,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAM9G,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Session Module
3
+ *
4
+ * Unified session management for the MCP Server Framework.
5
+ * The Session is the single source of truth for each connected MCP client.
6
+ *
7
+ * ## Architecture
8
+ *
9
+ * ```
10
+ * Session (source of truth per client)
11
+ * ├── id (unique identifier)
12
+ * ├── state (lifecycle: created → active → closing → closed)
13
+ * ├── transport → TransportContext
14
+ * │ ├── type (http | sse | stdio)
15
+ * │ ├── transport (MCP SDK transport)
16
+ * │ └── heartbeat (state tracking)
17
+ * ├── mcpSession → McpSession
18
+ * │ ├── sdk (MCP SDK server)
19
+ * │ └── register*() (SDK registration methods)
20
+ * ├── auth → AuthContext (auth/)
21
+ * │ ├── sdkAuthInfo (SDK AuthInfo wrapper)
22
+ * │ ├── userId? (authenticated user)
23
+ * │ └── permissions (access scopes)
24
+ * ├── clientInfo (name, version, remoteAddress)
25
+ * └── metadata → SessionMetadata (createdAt, lastActivityAt)
26
+ * ```
27
+ *
28
+ * @module server/session
29
+ */
30
+ export { createTransportContext, isHeartbeatCapable } from "../transport/transport-context.js";
31
+ export { ANONYMOUS_AUTH, createAuthContext } from "../auth/index.js";
32
+ export { createSession, SESSION_STATES, SESSION_CLOSE_REASONS } from "./session.js";
33
+ export { SessionManagerImpl } from "./session-manager.js";
34
+ export { InMemorySessionStore } from "./in-memory-store.js";
35
+ // ============================================================================
36
+ // Session Housekeeper (internal building block, exposed for advanced use)
37
+ // ============================================================================
38
+ export { SessionHousekeeper } from "./session-housekeeper.js";
39
+ // ============================================================================
40
+ // MCP Session (per-client SDK wrapper)
41
+ // ============================================================================
42
+ export { McpSession } from "./mcp-session.js";
43
+ // ============================================================================
44
+ // MCP Session Factory
45
+ // ============================================================================
46
+ export { McpSessionFactory } from "./session-factory.js";
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAQ/F,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAgBrE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAcpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAE/E,OAAO,EAAE,kBAAkB,EAAqD,MAAM,0BAA0B,CAAC;AAEjH,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAkE,MAAM,kBAAkB,CAAC;AAE9G,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,iBAAiB,EAA6B,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * MCP Session
3
+ *
4
+ * Represents a single MCP client session. Each session wraps an SDK McpServer
5
+ * instance with SDK-native cancellation and progress support.
6
+ *
7
+ * Key responsibilities:
8
+ * - One client = one session = one SDK McpServer (1:1 per MCP spec)
9
+ * - Delegates tool/resource/prompt/task registration to registrar modules
10
+ * - Manages per-session resource subscriptions
11
+ * - Uses SDK's native AbortSignal for cancellation (per-request, protocol-managed)
12
+ *
13
+ * @module server/session/mcp-session
14
+ */
15
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
16
+ import type { TaskStore, TaskMessageQueue } from "@modelcontextprotocol/sdk/experimental/tasks/interfaces.js";
17
+ import type { HandlersConfig, ToolDefinition, TaskToolDefinition, ResourceStaticDefinition, ResourceTemplateDefinition, PromptDefinition } from "../../mcp/types/index.js";
18
+ import type { LogNotificationHandler, McpLogLevel } from "../../logger/index.js";
19
+ /**
20
+ * Options for creating an McpSession instance.
21
+ */
22
+ export interface McpSessionOptions {
23
+ /** Server name */
24
+ name: string;
25
+ /** Server version */
26
+ version: string;
27
+ /** Pre-built SDK capabilities (from builder) */
28
+ capabilities: Record<string, unknown>;
29
+ /** Protocol handler hooks */
30
+ handlers?: HandlersConfig | undefined;
31
+ /** Whether this session operates in stateless mode */
32
+ stateless?: boolean | undefined;
33
+ /**
34
+ * Task store for experimental task support.
35
+ *
36
+ * When provided, enables `tasks/*` protocol methods and allows
37
+ * task-based tools to use `extra.taskStore` in their handlers.
38
+ *
39
+ * @experimental MCP Tasks is an experimental SDK feature
40
+ */
41
+ taskStore?: TaskStore | undefined;
42
+ /**
43
+ * Task message queue for experimental task support.
44
+ *
45
+ * Manages server-initiated messages that will be delivered through
46
+ * the `tasks/result` response stream.
47
+ *
48
+ * @experimental MCP Tasks is an experimental SDK feature
49
+ */
50
+ taskMessageQueue?: TaskMessageQueue | undefined;
51
+ }
52
+ /**
53
+ * Callback for session close events.
54
+ */
55
+ export type CloseCallback = () => void;
56
+ /**
57
+ * Callback for session error events.
58
+ */
59
+ export type ErrorCallback = (error: Error) => void;
60
+ /**
61
+ * A managed MCP client session.
62
+ *
63
+ * Each session wraps an SDK McpServer instance. Cancellation and progress
64
+ * are handled natively by the SDK — no additional tracking layer needed.
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const session = new McpSession({
69
+ * name: 'my-server',
70
+ * version: '1.0.0',
71
+ * capabilities: { tools: {} },
72
+ * });
73
+ *
74
+ * // Access underlying SDK server for transport connection
75
+ * await session.sdk.connect(transport);
76
+ * ```
77
+ */
78
+ export declare class McpSession implements LogNotificationHandler {
79
+ /** The underlying MCP SDK server instance */
80
+ readonly sdk: McpServer;
81
+ /** Session options */
82
+ readonly options: Readonly<McpSessionOptions>;
83
+ /** URIs this session has subscribed to for resource update notifications */
84
+ private readonly subscribedURIs;
85
+ private readonly logger;
86
+ private onCloseCallback?;
87
+ private onErrorCallback?;
88
+ /**
89
+ * Creates a new McpSession instance.
90
+ *
91
+ * Cancellation is handled natively by the SDK's Protocol layer
92
+ * (per-request AbortController, keyed by real JSON-RPC request ID).
93
+ * Progress reporting uses the SDK's extra.sendNotification with
94
+ * rate-limiting applied by createProgressReporter().
95
+ *
96
+ * @param options - Session configuration options
97
+ */
98
+ constructor(options: McpSessionOptions);
99
+ /** Server name */
100
+ get name(): string;
101
+ /** Server version */
102
+ get version(): string;
103
+ /**
104
+ * Set callback for session close events.
105
+ */
106
+ onClose(callback: CloseCallback): this;
107
+ /**
108
+ * Set callback for session error events.
109
+ */
110
+ onError(callback: ErrorCallback): this;
111
+ /**
112
+ * Clean up session resources.
113
+ *
114
+ * Closes the underlying SDK McpServer, releasing protocol-level resources
115
+ * (pending requests, open streams, registered handlers). This is the
116
+ * counterpart to `sdk.connect(transport)` — every connected session
117
+ * should be disposed when no longer needed.
118
+ *
119
+ * Called by:
120
+ * - SessionManager (stateful sessions — on close/closeAll)
121
+ * - StreamableHttpTransport (stateless sessions — on response close)
122
+ *
123
+ * Safe to call multiple times — sdk.close() is idempotent.
124
+ */
125
+ dispose(): Promise<void>;
126
+ /**
127
+ * Registers all tools with the MCP SDK server.
128
+ * Delegates to ToolRegistry.bindToSdk().
129
+ */
130
+ registerTools(tools: readonly ToolDefinition[]): void;
131
+ /**
132
+ * Registers task tools with the MCP SDK's experimental tasks API.
133
+ * Delegates to TaskToolRegistry.bindToSdk().
134
+ *
135
+ * @experimental MCP Tasks is an experimental SDK feature
136
+ */
137
+ registerTaskTools(taskTools: readonly TaskToolDefinition[]): void;
138
+ /**
139
+ * Registers all resources (static + templates) with the MCP SDK server.
140
+ * Delegates to ResourceRegistry.bindToSdk().
141
+ */
142
+ registerResources(resources: readonly ResourceStaticDefinition[], templates: readonly ResourceTemplateDefinition[]): void;
143
+ /**
144
+ * Registers all prompts with the MCP SDK server.
145
+ * Delegates to PromptRegistry.bindToSdk().
146
+ */
147
+ registerPrompts(prompts: readonly PromptDefinition[]): void;
148
+ /**
149
+ * Registers request handlers for `resources/subscribe` and `resources/unsubscribe`.
150
+ *
151
+ * @sdk-constraint — The SDK's high-level `McpServer` does not handle subscription
152
+ * requests. This uses the low-level `Server.setRequestHandler()` API to register
153
+ * handlers for the subscribe/unsubscribe JSON-RPC methods.
154
+ *
155
+ * Subscription tracking is per-session (this `McpSession` instance).
156
+ * When `notifyResourceUpdated(uri)` is called, only sessions that
157
+ * subscribed to the given URI receive `notifications/resources/updated`.
158
+ *
159
+ * In stateless mode, subscriptions are not meaningful (no persistent session),
160
+ * so this method should not be called for stateless sessions.
161
+ */
162
+ registerSubscriptionHandlers(): void;
163
+ /**
164
+ * Sends a `notifications/resources/updated` notification to this session's client
165
+ * if the session has subscribed to the given URI.
166
+ *
167
+ * @param uri - The resource URI that was updated
168
+ */
169
+ sendResourceUpdated(uri: string): Promise<void>;
170
+ /**
171
+ * Sends a log notification to the connected MCP client.
172
+ * Implements {@link LogNotificationHandler} so this session can be
173
+ * registered directly with the MCP notification logger.
174
+ */
175
+ sendLogNotification(level: McpLogLevel, message: string): Promise<void>;
176
+ /**
177
+ * Registers a request handler for `logging/setLevel`.
178
+ *
179
+ * Per MCP Spec: When the server declares `logging: {}` capability, clients
180
+ * can send `logging/setLevel` to control which log notifications they receive.
181
+ * The handler updates the McpNotificationLogger's minimum level so that
182
+ * only messages at or above the requested level are forwarded.
183
+ *
184
+ * @param onSetLevel - Callback to apply the requested level (typically mcpLogger.setMinLevel)
185
+ */
186
+ registerSetLevelHandler(onSetLevel: (level: McpLogLevel) => void): void;
187
+ /**
188
+ * Overrides `tools/list`, `resources/list`, `resources/templates/list`, and `prompts/list`
189
+ * handlers to filter out entries whose `requiredScopes` are not satisfied by the
190
+ * requesting user's token scopes.
191
+ *
192
+ * This wraps the SDK's original handlers — the full list is constructed by the SDK,
193
+ * then filtered before being returned to the client.
194
+ *
195
+ * Call this AFTER all tools/resources/prompts have been registered via `registerTools()` etc.
196
+ *
197
+ * @param options - All registered definitions (used to build scope lookup maps)
198
+ */
199
+ registerScopeFilteredListHandlers(options: {
200
+ tools: readonly ToolDefinition[];
201
+ resources: readonly ResourceStaticDefinition[];
202
+ templates: readonly ResourceTemplateDefinition[];
203
+ prompts: readonly PromptDefinition[];
204
+ }): void;
205
+ /**
206
+ * Sets up lifecycle callbacks on the underlying SDK server.
207
+ */
208
+ private setupLifecycleCallbacks;
209
+ }
210
+ //# sourceMappingURL=mcp-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-session.d.ts","sourceRoot":"","sources":["../../../src/server/session/mcp-session.ts"],"names":[],"mappings":"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"}