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,131 @@
1
+ /**
2
+ * MCP Session Factory
3
+ *
4
+ * Responsible for creating fully-configured MCP sessions with pre-computed
5
+ * capabilities and all registered primitives. Capabilities are computed once
6
+ * at construction time since the input data (tools, resources, prompts) is
7
+ * immutable after server build.
8
+ *
9
+ * Extracted from McpServerInstance to satisfy the Single Responsibility
10
+ * Principle — the server orchestrates lifecycle, the factory creates sessions.
11
+ *
12
+ * @module server/session/session-factory
13
+ */
14
+ import { InMemoryTaskStore, InMemoryTaskMessageQueue, } from "@modelcontextprotocol/sdk/experimental/tasks/stores/in-memory.js";
15
+ import { buildCapabilities } from "../../mcp/capabilities/index.js";
16
+ import { McpSession } from "./mcp-session.js";
17
+ import { logger as frameworkLogger, mcpLogger } from "../../logger/index.js";
18
+ // ============================================================================
19
+ // Constants
20
+ // ============================================================================
21
+ const LOG_COMPONENT = "session-factory";
22
+ const SessionFactoryLogMessages = {
23
+ FACTORY_CREATED: "Session factory created: %s v%s (%d tools, %d resources, %d prompts)",
24
+ SESSION_CREATED: "New MCP session created",
25
+ SESSION_ERROR: "MCP session error:",
26
+ };
27
+ const logger = frameworkLogger.child({ component: LOG_COMPONENT });
28
+ // ============================================================================
29
+ // Session Factory Implementation
30
+ // ============================================================================
31
+ /**
32
+ * Creates fully-configured MCP sessions.
33
+ *
34
+ * Capabilities are pre-computed once in the constructor since the input
35
+ * data is immutable after server build. Each `create()` call produces
36
+ * a new McpSession with all primitives registered — ready for transport
37
+ * connection.
38
+ *
39
+ * @internal Created by McpServerBuilder — do not instantiate directly.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const factory = new McpSessionFactory({
44
+ * name: 'my-server',
45
+ * version: '1.0.0',
46
+ * tools: frozenToolArray,
47
+ * resources: frozenResourceArray,
48
+ * resourceTemplates: frozenTemplateArray,
49
+ * prompts: frozenPromptArray,
50
+ * });
51
+ *
52
+ * const session = factory.create(); // Ready for transport.connect()
53
+ * ```
54
+ */
55
+ export class McpSessionFactory {
56
+ config;
57
+ /** Pre-computed SDK capabilities (immutable after construction) */
58
+ computedCapabilities;
59
+ /** Task store instance (shared across all sessions) */
60
+ taskStore;
61
+ /** Task message queue instance (shared across all sessions) */
62
+ taskMessageQueue;
63
+ constructor(config) {
64
+ this.config = config;
65
+ // Compute capabilities ONCE — input data is immutable
66
+ this.computedCapabilities = buildCapabilities(config.capabilities, config.tools, config.resources, config.resourceTemplates, config.prompts, config.taskTools);
67
+ // Auto-create InMemoryTaskStore when task tools exist but no store provided
68
+ this.taskStore = config.taskStore ?? (config.taskTools.length > 0 ? new InMemoryTaskStore() : undefined);
69
+ // Auto-create InMemoryTaskMessageQueue when task tools exist but no queue provided
70
+ this.taskMessageQueue =
71
+ config.taskMessageQueue ?? (config.taskTools.length > 0 ? new InMemoryTaskMessageQueue() : undefined);
72
+ logger.trace(SessionFactoryLogMessages.FACTORY_CREATED, config.name, config.version, config.tools.length, config.resources.length + config.resourceTemplates.length, config.prompts.length);
73
+ }
74
+ /**
75
+ * Creates a new MCP session with all registered primitives.
76
+ *
77
+ * Called once for stdio mode, or per-client for HTTP mode.
78
+ * Each session wraps one SDK McpServer (1:1 per MCP spec).
79
+ *
80
+ * Session lifecycle is managed by the SessionManager —
81
+ * this factory only creates and configures sessions.
82
+ */
83
+ create() {
84
+ const session = new McpSession({
85
+ name: this.config.name,
86
+ version: this.config.version,
87
+ capabilities: this.computedCapabilities,
88
+ handlers: this.config.handlers,
89
+ stateless: this.config.stateless,
90
+ ...(this.taskStore && { taskStore: this.taskStore }),
91
+ ...(this.taskMessageQueue && { taskMessageQueue: this.taskMessageQueue }),
92
+ });
93
+ // Log session errors (lifecycle managed by SessionManager, not here)
94
+ session.onError((error) => {
95
+ logger.error(SessionFactoryLogMessages.SESSION_ERROR, error);
96
+ });
97
+ // Register all MCP primitives directly on the session
98
+ session.registerTools(this.config.tools);
99
+ session.registerResources(this.config.resources, this.config.resourceTemplates);
100
+ session.registerPrompts(this.config.prompts);
101
+ session.registerTaskTools(this.config.taskTools);
102
+ // Register subscription handlers when resources.subscribe capability is enabled
103
+ // and session is stateful (subscriptions require persistent sessions)
104
+ const resourceCaps = this.computedCapabilities.resources;
105
+ const hasSubscribe = typeof resourceCaps === "object" &&
106
+ resourceCaps !== null &&
107
+ "subscribe" in resourceCaps &&
108
+ // @type-narrowing — runtime checks above validate resourceCaps is a non-null object with 'subscribe'
109
+ resourceCaps.subscribe === true;
110
+ if (hasSubscribe && !this.config.stateless) {
111
+ session.registerSubscriptionHandlers();
112
+ }
113
+ // Register logging/setLevel handler when logging capability is enabled
114
+ const hasLogging = "logging" in this.computedCapabilities && this.computedCapabilities.logging != null;
115
+ if (hasLogging) {
116
+ session.registerSetLevelHandler((level) => mcpLogger.setMinLevel(level));
117
+ }
118
+ // Install scope-filtered list handlers (opt-in via auth.scopeFilterCapabilities)
119
+ if (this.config.scopeFilterCapabilities) {
120
+ session.registerScopeFilteredListHandlers({
121
+ tools: this.config.tools,
122
+ resources: this.config.resources,
123
+ templates: this.config.resourceTemplates,
124
+ prompts: this.config.prompts,
125
+ });
126
+ }
127
+ logger.debug(SessionFactoryLogMessages.SESSION_CREATED);
128
+ return session;
129
+ }
130
+ }
131
+ //# sourceMappingURL=session-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-factory.js","sourceRoot":"","sources":["../../../src/server/session/session-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Session Housekeeper
3
+ *
4
+ * Background task manager for session maintenance.
5
+ * Handles periodic cleanup of expired sessions and heartbeat monitoring.
6
+ *
7
+ * Contains NO CRUD logic — session operations are delegated to SessionStore.
8
+ *
9
+ * @module server/session/session-housekeeper
10
+ */
11
+ import type { SessionCloseReason } from "./session.js";
12
+ import type { SessionStore } from "./session-store.js";
13
+ /**
14
+ * Callback for the Housekeeper to request session closure.
15
+ * Implemented by SessionManager which owns the full teardown lifecycle.
16
+ * Returns void or Promise<void> to support async teardown.
17
+ */
18
+ export type CloseSessionCallback = (sessionId: string, reason: SessionCloseReason) => void | Promise<void>;
19
+ /**
20
+ * Configuration for the session housekeeper.
21
+ */
22
+ export interface HousekeeperConfig {
23
+ /** Session timeout in milliseconds (default: 30 minutes) */
24
+ readonly timeoutMs: number;
25
+ /** Cleanup interval in milliseconds (0 = disabled) */
26
+ readonly cleanupIntervalMs: number;
27
+ /** Keep-alive interval in milliseconds (0 = disabled) */
28
+ readonly keepAliveIntervalMs: number;
29
+ /** Max missed heartbeats before disconnect (default: 3) */
30
+ readonly maxMissedHeartbeats: number;
31
+ }
32
+ /**
33
+ * Manages periodic background tasks for session maintenance.
34
+ *
35
+ * Responsibilities:
36
+ * - Cleanup expired (idle) sessions at regular intervals
37
+ * - Send heartbeats and remove dead connections
38
+ *
39
+ * Timers are configured at construction and use `.unref()` to
40
+ * not prevent Node.js process exit.
41
+ *
42
+ * For stdio mode, pass `cleanupIntervalMs: 0` and `keepAliveIntervalMs: 0`
43
+ * to disable all background tasks.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const housekeeper = new SessionHousekeeper(store, {
48
+ * timeoutMs: 30 * 60_000,
49
+ * cleanupIntervalMs: 60_000,
50
+ * keepAliveIntervalMs: 30_000,
51
+ * maxMissedHeartbeats: 3,
52
+ * });
53
+ *
54
+ * // Later during shutdown:
55
+ * housekeeper.dispose();
56
+ * ```
57
+ */
58
+ export declare class SessionHousekeeper {
59
+ private readonly store;
60
+ private readonly config;
61
+ private readonly onCloseSession;
62
+ /** Cleanup interval timer */
63
+ private cleanupInterval;
64
+ /** Keep-alive interval timer */
65
+ private keepAliveInterval;
66
+ /** Whether the housekeeper is stopped */
67
+ private disposed;
68
+ constructor(store: SessionStore, config: HousekeeperConfig, onCloseSession: CloseSessionCallback);
69
+ /**
70
+ * Stops all background timers and marks as disposed.
71
+ */
72
+ dispose(): void;
73
+ /**
74
+ * Starts cleanup and heartbeat interval timers.
75
+ *
76
+ * Timers are only started when the corresponding interval is > 0.
77
+ * This allows stdio mode to skip background tasks entirely.
78
+ * Timers use .unref() to not prevent Node.js process exit.
79
+ */
80
+ private startTimers;
81
+ /**
82
+ * Runs a cleanup cycle to remove expired sessions.
83
+ *
84
+ * Iterates all sessions and closes those that have been idle
85
+ * longer than the configured timeout.
86
+ */
87
+ private runCleanupCycle;
88
+ /**
89
+ * Runs a heartbeat cycle to check connection health.
90
+ *
91
+ * Sends heartbeats to all sessions with heartbeat-capable transports.
92
+ * Sessions that exceed the maximum missed heartbeats are closed.
93
+ *
94
+ * NOTE: Heartbeat state mutations (missedCount, lastSuccessAt) are synchronous
95
+ * within the forEach callback — no async gap between read and write.
96
+ * This is safe in Node.js single-threaded event loop.
97
+ */
98
+ private runHeartbeatCycle;
99
+ }
100
+ //# sourceMappingURL=session-housekeeper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-housekeeper.d.ts","sourceRoot":"","sources":["../../../src/server/session/session-housekeeper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAM3G;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,sDAAsD;IACtD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,yDAAyD;IACzD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAErC,2DAA2D;IAC3D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,kBAAkB;IAW3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAZjC,6BAA6B;IAC7B,OAAO,CAAC,eAAe,CAA+B;IAEtD,gCAAgC;IAChC,OAAO,CAAC,iBAAiB,CAA+B;IAExD,yCAAyC;IACzC,OAAO,CAAC,QAAQ,CAAS;gBAGN,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,iBAAiB,EACzB,cAAc,EAAE,oBAAoB;IAYvD;;OAEG;IACH,OAAO,IAAI,IAAI;IAuBf;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAoBnB;;;;;OAKG;YACW,eAAe;IAyC7B;;;;;;;;;OASG;YACW,iBAAiB;CA+DhC"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Session Housekeeper
3
+ *
4
+ * Background task manager for session maintenance.
5
+ * Handles periodic cleanup of expired sessions and heartbeat monitoring.
6
+ *
7
+ * Contains NO CRUD logic — session operations are delegated to SessionStore.
8
+ *
9
+ * @module server/session/session-housekeeper
10
+ */
11
+ import { logger as baseLogger } from "../../logger/index.js";
12
+ import { isHeartbeatCapable } from "../transport/transport-context.js";
13
+ import { SESSION_STATES, SESSION_CLOSE_REASONS } from "./session.js";
14
+ // ============================================================================
15
+ // Constants
16
+ // ============================================================================
17
+ const LOG_COMPONENT = "session-housekeeper";
18
+ const LogMessages = {
19
+ STARTED: "Housekeeper started (timeout=%dmin, cleanup=%ds, heartbeat=%ds)",
20
+ SESSION_EXPIRED: "Session expired: %s (idle=%dms)",
21
+ SESSION_HEARTBEAT_FAILED: "Session heartbeat failed: %s (missed=%d)",
22
+ SESSION_CLOSE_ERROR: "Error closing session %s during %s: %s",
23
+ CLEANUP_CYCLE: "Cleanup cycle: expired=%d remaining=%d",
24
+ HEARTBEAT_CYCLE: "Heartbeat cycle: success=%d failed=%d removed=%d",
25
+ DISPOSED: "Housekeeper disposed",
26
+ };
27
+ const logger = baseLogger.child({ component: LOG_COMPONENT });
28
+ // ============================================================================
29
+ // Session Housekeeper
30
+ // ============================================================================
31
+ /**
32
+ * Manages periodic background tasks for session maintenance.
33
+ *
34
+ * Responsibilities:
35
+ * - Cleanup expired (idle) sessions at regular intervals
36
+ * - Send heartbeats and remove dead connections
37
+ *
38
+ * Timers are configured at construction and use `.unref()` to
39
+ * not prevent Node.js process exit.
40
+ *
41
+ * For stdio mode, pass `cleanupIntervalMs: 0` and `keepAliveIntervalMs: 0`
42
+ * to disable all background tasks.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const housekeeper = new SessionHousekeeper(store, {
47
+ * timeoutMs: 30 * 60_000,
48
+ * cleanupIntervalMs: 60_000,
49
+ * keepAliveIntervalMs: 30_000,
50
+ * maxMissedHeartbeats: 3,
51
+ * });
52
+ *
53
+ * // Later during shutdown:
54
+ * housekeeper.dispose();
55
+ * ```
56
+ */
57
+ export class SessionHousekeeper {
58
+ store;
59
+ config;
60
+ onCloseSession;
61
+ /** Cleanup interval timer */
62
+ cleanupInterval = null;
63
+ /** Keep-alive interval timer */
64
+ keepAliveInterval = null;
65
+ /** Whether the housekeeper is stopped */
66
+ disposed = false;
67
+ constructor(store, config, onCloseSession) {
68
+ this.store = store;
69
+ this.config = config;
70
+ this.onCloseSession = onCloseSession;
71
+ this.startTimers();
72
+ logger.trace(LogMessages.STARTED, Math.round(this.config.timeoutMs / 60000), Math.round(this.config.cleanupIntervalMs / 1000), Math.round(this.config.keepAliveIntervalMs / 1000));
73
+ }
74
+ /**
75
+ * Stops all background timers and marks as disposed.
76
+ */
77
+ dispose() {
78
+ if (this.disposed) {
79
+ return;
80
+ }
81
+ this.disposed = true;
82
+ if (this.cleanupInterval) {
83
+ clearInterval(this.cleanupInterval);
84
+ this.cleanupInterval = null;
85
+ }
86
+ if (this.keepAliveInterval) {
87
+ clearInterval(this.keepAliveInterval);
88
+ this.keepAliveInterval = null;
89
+ }
90
+ logger.trace(LogMessages.DISPOSED);
91
+ }
92
+ // ==========================================================================
93
+ // Timer Management
94
+ // ==========================================================================
95
+ /**
96
+ * Starts cleanup and heartbeat interval timers.
97
+ *
98
+ * Timers are only started when the corresponding interval is > 0.
99
+ * This allows stdio mode to skip background tasks entirely.
100
+ * Timers use .unref() to not prevent Node.js process exit.
101
+ */
102
+ startTimers() {
103
+ if (this.config.cleanupIntervalMs > 0) {
104
+ this.cleanupInterval = setInterval(() => {
105
+ void this.runCleanupCycle();
106
+ }, this.config.cleanupIntervalMs);
107
+ this.cleanupInterval.unref();
108
+ }
109
+ if (this.config.keepAliveIntervalMs > 0) {
110
+ this.keepAliveInterval = setInterval(() => {
111
+ void this.runHeartbeatCycle();
112
+ }, this.config.keepAliveIntervalMs);
113
+ this.keepAliveInterval.unref();
114
+ }
115
+ }
116
+ // ==========================================================================
117
+ // Cleanup Cycle
118
+ // ==========================================================================
119
+ /**
120
+ * Runs a cleanup cycle to remove expired sessions.
121
+ *
122
+ * Iterates all sessions and closes those that have been idle
123
+ * longer than the configured timeout.
124
+ */
125
+ async runCleanupCycle() {
126
+ if (this.disposed) {
127
+ return;
128
+ }
129
+ const now = Date.now();
130
+ const expiredIds = [];
131
+ this.store.forEach((session) => {
132
+ if (session.state !== SESSION_STATES.ACTIVE) {
133
+ return;
134
+ }
135
+ const idleTime = now - session.metadata.lastActivityAt.getTime();
136
+ if (idleTime > this.config.timeoutMs) {
137
+ expiredIds.push(session.id);
138
+ logger.debug(LogMessages.SESSION_EXPIRED, session.id, idleTime);
139
+ }
140
+ });
141
+ const results = await Promise.allSettled(expiredIds.map((sessionId) => Promise.resolve(this.onCloseSession(sessionId, SESSION_CLOSE_REASONS.TIMEOUT))));
142
+ for (let i = 0; i < results.length; i++) {
143
+ if (results[i]?.status === "rejected") {
144
+ // @ts-limitation — TS narrows status to 'rejected' but not the union discriminant on results[i]
145
+ const reason = results[i].reason;
146
+ logger.warn(LogMessages.SESSION_CLOSE_ERROR, expiredIds[i], "cleanup", String(reason));
147
+ }
148
+ }
149
+ if (expiredIds.length > 0) {
150
+ logger.trace(LogMessages.CLEANUP_CYCLE, expiredIds.length, this.store.size);
151
+ }
152
+ }
153
+ // ==========================================================================
154
+ // Heartbeat Cycle
155
+ // ==========================================================================
156
+ /**
157
+ * Runs a heartbeat cycle to check connection health.
158
+ *
159
+ * Sends heartbeats to all sessions with heartbeat-capable transports.
160
+ * Sessions that exceed the maximum missed heartbeats are closed.
161
+ *
162
+ * NOTE: Heartbeat state mutations (missedCount, lastSuccessAt) are synchronous
163
+ * within the forEach callback — no async gap between read and write.
164
+ * This is safe in Node.js single-threaded event loop.
165
+ */
166
+ async runHeartbeatCycle() {
167
+ if (this.disposed) {
168
+ return;
169
+ }
170
+ let successCount = 0;
171
+ let failedCount = 0;
172
+ const toRemove = [];
173
+ this.store.forEach((session) => {
174
+ if (session.state !== SESSION_STATES.ACTIVE) {
175
+ return;
176
+ }
177
+ const transport = session.transport.instance;
178
+ if (!isHeartbeatCapable(transport)) {
179
+ return;
180
+ }
181
+ const success = transport.sendHeartbeat();
182
+ if (success) {
183
+ successCount++;
184
+ session.metadata.lastActivityAt = new Date();
185
+ session.transport.heartbeat = {
186
+ ...session.transport.heartbeat,
187
+ missedCount: 0,
188
+ lastSuccessAt: new Date(),
189
+ };
190
+ }
191
+ else {
192
+ failedCount++;
193
+ const newMissedCount = session.transport.heartbeat.missedCount + 1;
194
+ session.transport.heartbeat = {
195
+ ...session.transport.heartbeat,
196
+ missedCount: newMissedCount,
197
+ };
198
+ if (newMissedCount >= this.config.maxMissedHeartbeats) {
199
+ toRemove.push(session.id);
200
+ logger.debug(LogMessages.SESSION_HEARTBEAT_FAILED, session.id, newMissedCount);
201
+ }
202
+ }
203
+ });
204
+ const results = await Promise.allSettled(toRemove.map((sessionId) => Promise.resolve(this.onCloseSession(sessionId, SESSION_CLOSE_REASONS.HEARTBEAT_FAILURE))));
205
+ for (let i = 0; i < results.length; i++) {
206
+ if (results[i]?.status === "rejected") {
207
+ // @ts-limitation — TS narrows status to 'rejected' but not the union discriminant on results[i]
208
+ const reason = results[i].reason;
209
+ logger.warn(LogMessages.SESSION_CLOSE_ERROR, toRemove[i], "heartbeat", String(reason));
210
+ }
211
+ }
212
+ if (successCount > 0 || failedCount > 0) {
213
+ logger.trace(LogMessages.HEARTBEAT_CYCLE, successCount, failedCount, toRemove.length);
214
+ }
215
+ }
216
+ }
217
+ //# sourceMappingURL=session-housekeeper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-housekeeper.js","sourceRoot":"","sources":["../../../src/server/session/session-housekeeper.ts"],"names":[],"mappings":"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"}