@j0hanz/superfetch 2.1.4 → 2.1.5

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 (550) hide show
  1. package/dist/cache.d.ts +1 -0
  2. package/dist/cache.d.ts.map +1 -0
  3. package/dist/cache.js +1 -0
  4. package/dist/cache.js.map +1 -0
  5. package/dist/config.d.ts +1 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +1 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/crypto.d.ts +1 -0
  10. package/dist/crypto.d.ts.map +1 -0
  11. package/dist/crypto.js +1 -0
  12. package/dist/crypto.js.map +1 -0
  13. package/dist/errors.d.ts +1 -0
  14. package/dist/errors.d.ts.map +1 -0
  15. package/dist/errors.js +1 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/fetch.d.ts +1 -0
  18. package/dist/fetch.d.ts.map +1 -0
  19. package/dist/fetch.js +1 -0
  20. package/dist/fetch.js.map +1 -0
  21. package/dist/http.d.ts +1 -0
  22. package/dist/http.d.ts.map +1 -0
  23. package/dist/http.js +1 -0
  24. package/dist/http.js.map +1 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/mcp.d.ts +1 -0
  29. package/dist/mcp.d.ts.map +1 -0
  30. package/dist/mcp.js +1 -0
  31. package/dist/mcp.js.map +1 -0
  32. package/dist/observability.d.ts +1 -0
  33. package/dist/observability.d.ts.map +1 -0
  34. package/dist/observability.js +1 -0
  35. package/dist/observability.js.map +1 -0
  36. package/dist/tools.d.ts +1 -0
  37. package/dist/tools.d.ts.map +1 -0
  38. package/dist/tools.js +1 -0
  39. package/dist/tools.js.map +1 -0
  40. package/dist/transform.d.ts +1 -0
  41. package/dist/transform.d.ts.map +1 -0
  42. package/dist/transform.js +1 -0
  43. package/dist/transform.js.map +1 -0
  44. package/dist/utils.d.ts +1 -0
  45. package/dist/utils.d.ts.map +1 -0
  46. package/dist/utils.js +1 -0
  47. package/dist/utils.js.map +1 -0
  48. package/dist/workers/transform-worker.d.ts +1 -0
  49. package/dist/workers/transform-worker.d.ts.map +1 -0
  50. package/dist/workers/transform-worker.js +1 -0
  51. package/dist/workers/transform-worker.js.map +1 -0
  52. package/package.json +5 -2
  53. package/dist/config/auth-config.d.ts +0 -16
  54. package/dist/config/auth-config.js +0 -53
  55. package/dist/config/constants.d.ts +0 -17
  56. package/dist/config/constants.d.ts.map +0 -1
  57. package/dist/config/constants.js +0 -22
  58. package/dist/config/constants.js.map +0 -1
  59. package/dist/config/env-parsers.d.ts +0 -8
  60. package/dist/config/env-parsers.js +0 -96
  61. package/dist/config/formatting.d.ts +0 -7
  62. package/dist/config/formatting.d.ts.map +0 -1
  63. package/dist/config/formatting.js +0 -9
  64. package/dist/config/formatting.js.map +0 -1
  65. package/dist/config/index.d.ts +0 -61
  66. package/dist/config/index.d.ts.map +0 -1
  67. package/dist/config/index.js +0 -107
  68. package/dist/config/index.js.map +0 -1
  69. package/dist/config/types/content.d.ts +0 -41
  70. package/dist/config/types/content.d.ts.map +0 -1
  71. package/dist/config/types/content.js +0 -1
  72. package/dist/config/types/content.js.map +0 -1
  73. package/dist/config/types/runtime.d.ts +0 -72
  74. package/dist/config/types/runtime.d.ts.map +0 -1
  75. package/dist/config/types/runtime.js +0 -1
  76. package/dist/config/types/runtime.js.map +0 -1
  77. package/dist/config/types/tools.d.ts +0 -28
  78. package/dist/config/types/tools.d.ts.map +0 -1
  79. package/dist/config/types/tools.js +0 -1
  80. package/dist/config/types/tools.js.map +0 -1
  81. package/dist/config/types.d.ts +0 -4
  82. package/dist/config/types.d.ts.map +0 -1
  83. package/dist/config/types.js +0 -2
  84. package/dist/config/types.js.map +0 -1
  85. package/dist/errors/app-error.d.ts +0 -7
  86. package/dist/errors/app-error.d.ts.map +0 -1
  87. package/dist/errors/app-error.js +0 -16
  88. package/dist/errors/app-error.js.map +0 -1
  89. package/dist/errors/index.d.ts +0 -2
  90. package/dist/errors/index.d.ts.map +0 -1
  91. package/dist/errors/index.js +0 -2
  92. package/dist/errors/index.js.map +0 -1
  93. package/dist/http/accept-policy.d.ts +0 -3
  94. package/dist/http/accept-policy.js +0 -45
  95. package/dist/http/async-handler.d.ts +0 -2
  96. package/dist/http/async-handler.js +0 -5
  97. package/dist/http/auth-introspection.d.ts +0 -2
  98. package/dist/http/auth-introspection.js +0 -141
  99. package/dist/http/auth-static.d.ts +0 -2
  100. package/dist/http/auth-static.js +0 -23
  101. package/dist/http/auth.d.ts +0 -3
  102. package/dist/http/auth.d.ts.map +0 -1
  103. package/dist/http/auth.js +0 -269
  104. package/dist/http/auth.js.map +0 -1
  105. package/dist/http/base-middleware.d.ts +0 -7
  106. package/dist/http/base-middleware.js +0 -143
  107. package/dist/http/cors.d.ts +0 -2
  108. package/dist/http/cors.d.ts.map +0 -1
  109. package/dist/http/cors.js +0 -9
  110. package/dist/http/cors.js.map +0 -1
  111. package/dist/http/download-routes.d.ts +0 -2
  112. package/dist/http/download-routes.d.ts.map +0 -1
  113. package/dist/http/download-routes.js +0 -104
  114. package/dist/http/download-routes.js.map +0 -1
  115. package/dist/http/error-handler.d.ts +0 -2
  116. package/dist/http/error-handler.js +0 -55
  117. package/dist/http/host-allowlist.d.ts +0 -3
  118. package/dist/http/host-allowlist.js +0 -117
  119. package/dist/http/jsonrpc-http.d.ts +0 -2
  120. package/dist/http/jsonrpc-http.js +0 -10
  121. package/dist/http/mcp-routes.d.ts +0 -9
  122. package/dist/http/mcp-routes.d.ts.map +0 -1
  123. package/dist/http/mcp-routes.js +0 -204
  124. package/dist/http/mcp-routes.js.map +0 -1
  125. package/dist/http/mcp-session-eviction.d.ts +0 -3
  126. package/dist/http/mcp-session-eviction.js +0 -24
  127. package/dist/http/mcp-session-helpers.d.ts +0 -12
  128. package/dist/http/mcp-session-helpers.d.ts.map +0 -1
  129. package/dist/http/mcp-session-helpers.js +0 -64
  130. package/dist/http/mcp-session-helpers.js.map +0 -1
  131. package/dist/http/mcp-session-init.d.ts +0 -7
  132. package/dist/http/mcp-session-init.js +0 -94
  133. package/dist/http/mcp-session-slots.d.ts +0 -17
  134. package/dist/http/mcp-session-slots.js +0 -55
  135. package/dist/http/mcp-session-transport-init.d.ts +0 -7
  136. package/dist/http/mcp-session-transport-init.js +0 -41
  137. package/dist/http/mcp-session-transport.d.ts +0 -7
  138. package/dist/http/mcp-session-transport.js +0 -57
  139. package/dist/http/mcp-session-types.d.ts +0 -5
  140. package/dist/http/mcp-session-types.js +0 -1
  141. package/dist/http/mcp-session.d.ts +0 -10
  142. package/dist/http/mcp-session.d.ts.map +0 -1
  143. package/dist/http/mcp-session.js +0 -23
  144. package/dist/http/mcp-session.js.map +0 -1
  145. package/dist/http/mcp-sessions.d.ts +0 -41
  146. package/dist/http/mcp-sessions.js +0 -392
  147. package/dist/http/mcp-validation.d.ts +0 -3
  148. package/dist/http/mcp-validation.d.ts.map +0 -1
  149. package/dist/http/mcp-validation.js +0 -14
  150. package/dist/http/mcp-validation.js.map +0 -1
  151. package/dist/http/protocol-policy.d.ts +0 -2
  152. package/dist/http/protocol-policy.js +0 -31
  153. package/dist/http/rate-limit.d.ts +0 -12
  154. package/dist/http/rate-limit.d.ts.map +0 -1
  155. package/dist/http/rate-limit.js +0 -93
  156. package/dist/http/rate-limit.js.map +0 -1
  157. package/dist/http/server-config.d.ts +0 -1
  158. package/dist/http/server-config.js +0 -40
  159. package/dist/http/server-middleware.d.ts +0 -7
  160. package/dist/http/server-middleware.d.ts.map +0 -1
  161. package/dist/http/server-middleware.js +0 -52
  162. package/dist/http/server-middleware.js.map +0 -1
  163. package/dist/http/server-shutdown.d.ts +0 -4
  164. package/dist/http/server-shutdown.js +0 -43
  165. package/dist/http/server-tuning.d.ts +0 -9
  166. package/dist/http/server-tuning.js +0 -45
  167. package/dist/http/server.d.ts +0 -3
  168. package/dist/http/server.d.ts.map +0 -1
  169. package/dist/http/server.js +0 -291
  170. package/dist/http/server.js.map +0 -1
  171. package/dist/http/session-cleanup.d.ts +0 -2
  172. package/dist/http/session-cleanup.d.ts.map +0 -1
  173. package/dist/http/session-cleanup.js +0 -40
  174. package/dist/http/session-cleanup.js.map +0 -1
  175. package/dist/http/sessions.d.ts +0 -14
  176. package/dist/http/sessions.d.ts.map +0 -1
  177. package/dist/http/sessions.js +0 -63
  178. package/dist/http/sessions.js.map +0 -1
  179. package/dist/middleware/error-handler.d.ts +0 -2
  180. package/dist/middleware/error-handler.d.ts.map +0 -1
  181. package/dist/middleware/error-handler.js +0 -56
  182. package/dist/middleware/error-handler.js.map +0 -1
  183. package/dist/middleware/rate-limiter.d.ts +0 -16
  184. package/dist/middleware/rate-limiter.d.ts.map +0 -1
  185. package/dist/middleware/rate-limiter.js +0 -111
  186. package/dist/middleware/rate-limiter.js.map +0 -1
  187. package/dist/parsers/base-html-element-parser.d.ts +0 -43
  188. package/dist/parsers/base-html-element-parser.d.ts.map +0 -1
  189. package/dist/parsers/base-html-element-parser.js +0 -59
  190. package/dist/parsers/base-html-element-parser.js.map +0 -1
  191. package/dist/parsers/heading-element-parser.d.ts +0 -14
  192. package/dist/parsers/heading-element-parser.d.ts.map +0 -1
  193. package/dist/parsers/heading-element-parser.js +0 -26
  194. package/dist/parsers/heading-element-parser.js.map +0 -1
  195. package/dist/parsers/image-element-parser.d.ts +0 -16
  196. package/dist/parsers/image-element-parser.d.ts.map +0 -1
  197. package/dist/parsers/image-element-parser.js +0 -33
  198. package/dist/parsers/image-element-parser.js.map +0 -1
  199. package/dist/parsers/link-element-parser.d.ts +0 -15
  200. package/dist/parsers/link-element-parser.d.ts.map +0 -1
  201. package/dist/parsers/link-element-parser.js +0 -28
  202. package/dist/parsers/link-element-parser.js.map +0 -1
  203. package/dist/parsers/open-graph-parser.d.ts +0 -17
  204. package/dist/parsers/open-graph-parser.d.ts.map +0 -1
  205. package/dist/parsers/open-graph-parser.js +0 -41
  206. package/dist/parsers/open-graph-parser.js.map +0 -1
  207. package/dist/parsers/schema-org-parser.d.ts +0 -17
  208. package/dist/parsers/schema-org-parser.d.ts.map +0 -1
  209. package/dist/parsers/schema-org-parser.js +0 -32
  210. package/dist/parsers/schema-org-parser.js.map +0 -1
  211. package/dist/parsers/standard-meta-parser.d.ts +0 -18
  212. package/dist/parsers/standard-meta-parser.d.ts.map +0 -1
  213. package/dist/parsers/standard-meta-parser.js +0 -32
  214. package/dist/parsers/standard-meta-parser.js.map +0 -1
  215. package/dist/parsers/twitter-card-parser.d.ts +0 -17
  216. package/dist/parsers/twitter-card-parser.d.ts.map +0 -1
  217. package/dist/parsers/twitter-card-parser.js +0 -41
  218. package/dist/parsers/twitter-card-parser.js.map +0 -1
  219. package/dist/prompts/index.d.ts +0 -3
  220. package/dist/prompts/index.d.ts.map +0 -1
  221. package/dist/prompts/index.js +0 -73
  222. package/dist/prompts/index.js.map +0 -1
  223. package/dist/resources/cached-content-params.d.ts +0 -5
  224. package/dist/resources/cached-content-params.js +0 -36
  225. package/dist/resources/cached-content.d.ts +0 -2
  226. package/dist/resources/cached-content.d.ts.map +0 -1
  227. package/dist/resources/cached-content.js +0 -132
  228. package/dist/resources/cached-content.js.map +0 -1
  229. package/dist/resources/index.d.ts +0 -2
  230. package/dist/resources/index.d.ts.map +0 -1
  231. package/dist/resources/index.js +0 -4
  232. package/dist/resources/index.js.map +0 -1
  233. package/dist/server.d.ts +0 -3
  234. package/dist/server.d.ts.map +0 -1
  235. package/dist/server.js +0 -94
  236. package/dist/server.js.map +0 -1
  237. package/dist/services/cache-events.d.ts +0 -8
  238. package/dist/services/cache-events.js +0 -19
  239. package/dist/services/cache-keys.d.ts +0 -7
  240. package/dist/services/cache-keys.js +0 -57
  241. package/dist/services/cache.d.ts +0 -17
  242. package/dist/services/cache.d.ts.map +0 -1
  243. package/dist/services/cache.js +0 -145
  244. package/dist/services/cache.js.map +0 -1
  245. package/dist/services/cache.service.d.ts +0 -52
  246. package/dist/services/cache.service.d.ts.map +0 -1
  247. package/dist/services/cache.service.js +0 -113
  248. package/dist/services/cache.service.js.map +0 -1
  249. package/dist/services/card-extractor.d.ts +0 -6
  250. package/dist/services/card-extractor.d.ts.map +0 -1
  251. package/dist/services/card-extractor.js +0 -199
  252. package/dist/services/card-extractor.js.map +0 -1
  253. package/dist/services/context.d.ts +0 -10
  254. package/dist/services/context.d.ts.map +0 -1
  255. package/dist/services/context.js +0 -14
  256. package/dist/services/context.js.map +0 -1
  257. package/dist/services/extractor.d.ts +0 -5
  258. package/dist/services/extractor.d.ts.map +0 -1
  259. package/dist/services/extractor.js +0 -142
  260. package/dist/services/extractor.js.map +0 -1
  261. package/dist/services/extractor.service.d.ts +0 -18
  262. package/dist/services/extractor.service.d.ts.map +0 -1
  263. package/dist/services/extractor.service.js +0 -75
  264. package/dist/services/extractor.service.js.map +0 -1
  265. package/dist/services/fetcher/agents.d.ts +0 -3
  266. package/dist/services/fetcher/agents.d.ts.map +0 -1
  267. package/dist/services/fetcher/agents.js +0 -100
  268. package/dist/services/fetcher/agents.js.map +0 -1
  269. package/dist/services/fetcher/dns-selection.d.ts +0 -2
  270. package/dist/services/fetcher/dns-selection.js +0 -72
  271. package/dist/services/fetcher/errors.d.ts +0 -4
  272. package/dist/services/fetcher/errors.d.ts.map +0 -1
  273. package/dist/services/fetcher/errors.js +0 -70
  274. package/dist/services/fetcher/errors.js.map +0 -1
  275. package/dist/services/fetcher/headers.d.ts +0 -2
  276. package/dist/services/fetcher/headers.d.ts.map +0 -1
  277. package/dist/services/fetcher/headers.js +0 -6
  278. package/dist/services/fetcher/headers.js.map +0 -1
  279. package/dist/services/fetcher/interceptors.d.ts +0 -10
  280. package/dist/services/fetcher/interceptors.d.ts.map +0 -1
  281. package/dist/services/fetcher/interceptors.js +0 -108
  282. package/dist/services/fetcher/interceptors.js.map +0 -1
  283. package/dist/services/fetcher/redirects.d.ts +0 -4
  284. package/dist/services/fetcher/redirects.d.ts.map +0 -1
  285. package/dist/services/fetcher/redirects.js +0 -78
  286. package/dist/services/fetcher/redirects.js.map +0 -1
  287. package/dist/services/fetcher/response.d.ts +0 -4
  288. package/dist/services/fetcher/response.d.ts.map +0 -1
  289. package/dist/services/fetcher/response.js +0 -104
  290. package/dist/services/fetcher/response.js.map +0 -1
  291. package/dist/services/fetcher/retry-policy.d.ts +0 -1
  292. package/dist/services/fetcher/retry-policy.d.ts.map +0 -1
  293. package/dist/services/fetcher/retry-policy.js +0 -131
  294. package/dist/services/fetcher/retry-policy.js.map +0 -1
  295. package/dist/services/fetcher.d.ts +0 -25
  296. package/dist/services/fetcher.d.ts.map +0 -1
  297. package/dist/services/fetcher.js +0 -607
  298. package/dist/services/fetcher.js.map +0 -1
  299. package/dist/services/fetcher.service.d.ts +0 -18
  300. package/dist/services/fetcher.service.d.ts.map +0 -1
  301. package/dist/services/fetcher.service.js +0 -122
  302. package/dist/services/fetcher.service.js.map +0 -1
  303. package/dist/services/fifo-queue.d.ts +0 -8
  304. package/dist/services/fifo-queue.js +0 -25
  305. package/dist/services/logger.d.ts +0 -5
  306. package/dist/services/logger.d.ts.map +0 -1
  307. package/dist/services/logger.js +0 -52
  308. package/dist/services/logger.js.map +0 -1
  309. package/dist/services/logger.service.d.ts +0 -5
  310. package/dist/services/logger.service.d.ts.map +0 -1
  311. package/dist/services/logger.service.js +0 -57
  312. package/dist/services/logger.service.js.map +0 -1
  313. package/dist/services/metadata-collector.d.ts +0 -2
  314. package/dist/services/metadata-collector.js +0 -80
  315. package/dist/services/parser.d.ts +0 -6
  316. package/dist/services/parser.d.ts.map +0 -1
  317. package/dist/services/parser.js +0 -278
  318. package/dist/services/parser.js.map +0 -1
  319. package/dist/services/parser.service.d.ts +0 -42
  320. package/dist/services/parser.service.d.ts.map +0 -1
  321. package/dist/services/parser.service.js +0 -209
  322. package/dist/services/parser.service.js.map +0 -1
  323. package/dist/services/session-manager.d.ts +0 -18
  324. package/dist/services/session-manager.d.ts.map +0 -1
  325. package/dist/services/session-manager.js +0 -73
  326. package/dist/services/session-manager.js.map +0 -1
  327. package/dist/services/telemetry.d.ts +0 -19
  328. package/dist/services/telemetry.js +0 -43
  329. package/dist/services/transform-worker-pool.d.ts +0 -11
  330. package/dist/services/transform-worker-pool.js +0 -244
  331. package/dist/services/transform-worker-types.d.ts +0 -32
  332. package/dist/services/transform-worker-types.js +0 -14
  333. package/dist/strategies/exponential-backoff-strategy.d.ts +0 -13
  334. package/dist/strategies/exponential-backoff-strategy.d.ts.map +0 -1
  335. package/dist/strategies/exponential-backoff-strategy.js +0 -32
  336. package/dist/strategies/exponential-backoff-strategy.js.map +0 -1
  337. package/dist/tools/handlers/fetch-links/link-extractor.d.ts +0 -4
  338. package/dist/tools/handlers/fetch-links/link-extractor.d.ts.map +0 -1
  339. package/dist/tools/handlers/fetch-links/link-extractor.js +0 -159
  340. package/dist/tools/handlers/fetch-links/link-extractor.js.map +0 -1
  341. package/dist/tools/handlers/fetch-links.tool.d.ts +0 -5
  342. package/dist/tools/handlers/fetch-links.tool.d.ts.map +0 -1
  343. package/dist/tools/handlers/fetch-links.tool.js +0 -98
  344. package/dist/tools/handlers/fetch-links.tool.js.map +0 -1
  345. package/dist/tools/handlers/fetch-markdown.tool.d.ts +0 -11
  346. package/dist/tools/handlers/fetch-markdown.tool.d.ts.map +0 -1
  347. package/dist/tools/handlers/fetch-markdown.tool.js +0 -97
  348. package/dist/tools/handlers/fetch-markdown.tool.js.map +0 -1
  349. package/dist/tools/handlers/fetch-single.shared.d.ts +0 -31
  350. package/dist/tools/handlers/fetch-single.shared.d.ts.map +0 -1
  351. package/dist/tools/handlers/fetch-single.shared.js +0 -223
  352. package/dist/tools/handlers/fetch-single.shared.js.map +0 -1
  353. package/dist/tools/handlers/fetch-url.tool.d.ts +0 -10
  354. package/dist/tools/handlers/fetch-url.tool.d.ts.map +0 -1
  355. package/dist/tools/handlers/fetch-url.tool.js +0 -119
  356. package/dist/tools/handlers/fetch-url.tool.js.map +0 -1
  357. package/dist/tools/handlers/fetch-urls/processor.d.ts +0 -13
  358. package/dist/tools/handlers/fetch-urls/processor.d.ts.map +0 -1
  359. package/dist/tools/handlers/fetch-urls/processor.js +0 -153
  360. package/dist/tools/handlers/fetch-urls/processor.js.map +0 -1
  361. package/dist/tools/handlers/fetch-urls/response.d.ts +0 -3
  362. package/dist/tools/handlers/fetch-urls/response.d.ts.map +0 -1
  363. package/dist/tools/handlers/fetch-urls/response.js +0 -79
  364. package/dist/tools/handlers/fetch-urls/response.js.map +0 -1
  365. package/dist/tools/handlers/fetch-urls/validation.d.ts +0 -5
  366. package/dist/tools/handlers/fetch-urls/validation.d.ts.map +0 -1
  367. package/dist/tools/handlers/fetch-urls/validation.js +0 -18
  368. package/dist/tools/handlers/fetch-urls/validation.js.map +0 -1
  369. package/dist/tools/handlers/fetch-urls.tool.d.ts +0 -5
  370. package/dist/tools/handlers/fetch-urls.tool.d.ts.map +0 -1
  371. package/dist/tools/handlers/fetch-urls.tool.js +0 -124
  372. package/dist/tools/handlers/fetch-urls.tool.js.map +0 -1
  373. package/dist/tools/index.d.ts +0 -3
  374. package/dist/tools/index.d.ts.map +0 -1
  375. package/dist/tools/index.js +0 -37
  376. package/dist/tools/index.js.map +0 -1
  377. package/dist/tools/schemas.d.ts +0 -12
  378. package/dist/tools/schemas.d.ts.map +0 -1
  379. package/dist/tools/schemas.js +0 -21
  380. package/dist/tools/schemas.js.map +0 -1
  381. package/dist/tools/utils/cache-vary.d.ts +0 -1
  382. package/dist/tools/utils/cache-vary.d.ts.map +0 -1
  383. package/dist/tools/utils/cache-vary.js +0 -12
  384. package/dist/tools/utils/cache-vary.js.map +0 -1
  385. package/dist/tools/utils/cached-markdown.d.ts +0 -5
  386. package/dist/tools/utils/cached-markdown.js +0 -46
  387. package/dist/tools/utils/common.d.ts +0 -5
  388. package/dist/tools/utils/common.d.ts.map +0 -1
  389. package/dist/tools/utils/common.js +0 -42
  390. package/dist/tools/utils/common.js.map +0 -1
  391. package/dist/tools/utils/content-shaping.d.ts +0 -4
  392. package/dist/tools/utils/content-shaping.js +0 -67
  393. package/dist/tools/utils/content-transform-async.d.ts +0 -6
  394. package/dist/tools/utils/content-transform-async.js +0 -33
  395. package/dist/tools/utils/content-transform-core.d.ts +0 -5
  396. package/dist/tools/utils/content-transform-core.js +0 -180
  397. package/dist/tools/utils/content-transform-workers.d.ts +0 -1
  398. package/dist/tools/utils/content-transform-workers.js +0 -1
  399. package/dist/tools/utils/content-transform.d.ts +0 -3
  400. package/dist/tools/utils/content-transform.d.ts.map +0 -1
  401. package/dist/tools/utils/content-transform.js +0 -41
  402. package/dist/tools/utils/content-transform.js.map +0 -1
  403. package/dist/tools/utils/fetch-pipeline.d.ts +0 -2
  404. package/dist/tools/utils/fetch-pipeline.d.ts.map +0 -1
  405. package/dist/tools/utils/fetch-pipeline.js +0 -98
  406. package/dist/tools/utils/fetch-pipeline.js.map +0 -1
  407. package/dist/tools/utils/frontmatter.d.ts +0 -3
  408. package/dist/tools/utils/frontmatter.js +0 -73
  409. package/dist/tools/utils/index.d.ts +0 -4
  410. package/dist/tools/utils/index.d.ts.map +0 -1
  411. package/dist/tools/utils/index.js +0 -3
  412. package/dist/tools/utils/index.js.map +0 -1
  413. package/dist/tools/utils/inline-content.d.ts +0 -10
  414. package/dist/tools/utils/inline-content.d.ts.map +0 -1
  415. package/dist/tools/utils/inline-content.js +0 -35
  416. package/dist/tools/utils/inline-content.js.map +0 -1
  417. package/dist/tools/utils/markdown-heuristics.d.ts +0 -1
  418. package/dist/tools/utils/markdown-heuristics.js +0 -19
  419. package/dist/tools/utils/markdown-signals.d.ts +0 -1
  420. package/dist/tools/utils/markdown-signals.js +0 -19
  421. package/dist/tools/utils/markdown-toc.d.ts +0 -3
  422. package/dist/tools/utils/markdown-toc.d.ts.map +0 -1
  423. package/dist/tools/utils/markdown-toc.js +0 -35
  424. package/dist/tools/utils/markdown-toc.js.map +0 -1
  425. package/dist/tools/utils/raw-markdown-frontmatter.d.ts +0 -3
  426. package/dist/tools/utils/raw-markdown-frontmatter.js +0 -73
  427. package/dist/tools/utils/raw-markdown.d.ts +0 -6
  428. package/dist/tools/utils/raw-markdown.js +0 -149
  429. package/dist/tools/utils/response-builder.d.ts +0 -3
  430. package/dist/tools/utils/response-builder.d.ts.map +0 -1
  431. package/dist/tools/utils/response-builder.js +0 -24
  432. package/dist/tools/utils/response-builder.js.map +0 -1
  433. package/dist/tools/utils/tool-response.d.ts +0 -9
  434. package/dist/tools/utils/tool-response.d.ts.map +0 -1
  435. package/dist/tools/utils/tool-response.js +0 -19
  436. package/dist/tools/utils/tool-response.js.map +0 -1
  437. package/dist/transformers/jsonl.transformer.d.ts +0 -2
  438. package/dist/transformers/jsonl.transformer.d.ts.map +0 -1
  439. package/dist/transformers/jsonl.transformer.js +0 -75
  440. package/dist/transformers/jsonl.transformer.js.map +0 -1
  441. package/dist/transformers/markdown/fenced-code-rule.d.ts +0 -2
  442. package/dist/transformers/markdown/fenced-code-rule.js +0 -38
  443. package/dist/transformers/markdown/frontmatter.d.ts +0 -2
  444. package/dist/transformers/markdown/frontmatter.js +0 -45
  445. package/dist/transformers/markdown/noise-rule.d.ts +0 -2
  446. package/dist/transformers/markdown/noise-rule.js +0 -80
  447. package/dist/transformers/markdown/turndown-instance.d.ts +0 -2
  448. package/dist/transformers/markdown/turndown-instance.js +0 -19
  449. package/dist/transformers/markdown.d.ts +0 -5
  450. package/dist/transformers/markdown.js +0 -314
  451. package/dist/transformers/markdown.transformer.d.ts +0 -2
  452. package/dist/transformers/markdown.transformer.d.ts.map +0 -1
  453. package/dist/transformers/markdown.transformer.js +0 -14
  454. package/dist/transformers/markdown.transformer.js.map +0 -1
  455. package/dist/types/content.types.d.ts +0 -63
  456. package/dist/types/content.types.d.ts.map +0 -1
  457. package/dist/types/content.types.js +0 -2
  458. package/dist/types/content.types.js.map +0 -1
  459. package/dist/types/index.d.ts +0 -2
  460. package/dist/types/index.d.ts.map +0 -1
  461. package/dist/types/index.js +0 -2
  462. package/dist/types/index.js.map +0 -1
  463. package/dist/types/schemas.d.ts +0 -49
  464. package/dist/types/schemas.d.ts.map +0 -1
  465. package/dist/types/schemas.js +0 -5
  466. package/dist/types/schemas.js.map +0 -1
  467. package/dist/utils/cached-payload.d.ts +0 -7
  468. package/dist/utils/cached-payload.js +0 -36
  469. package/dist/utils/cancellation.d.ts +0 -1
  470. package/dist/utils/cancellation.js +0 -18
  471. package/dist/utils/code-language-bash.d.ts +0 -1
  472. package/dist/utils/code-language-bash.js +0 -48
  473. package/dist/utils/code-language-core.d.ts +0 -2
  474. package/dist/utils/code-language-core.js +0 -13
  475. package/dist/utils/code-language-detectors.d.ts +0 -5
  476. package/dist/utils/code-language-detectors.js +0 -142
  477. package/dist/utils/code-language-helpers.d.ts +0 -5
  478. package/dist/utils/code-language-helpers.js +0 -62
  479. package/dist/utils/code-language-parsing.d.ts +0 -5
  480. package/dist/utils/code-language-parsing.js +0 -62
  481. package/dist/utils/code-language.d.ts +0 -2
  482. package/dist/utils/code-language.d.ts.map +0 -1
  483. package/dist/utils/code-language.js +0 -260
  484. package/dist/utils/code-language.js.map +0 -1
  485. package/dist/utils/concurrency.d.ts +0 -3
  486. package/dist/utils/concurrency.d.ts.map +0 -1
  487. package/dist/utils/concurrency.js +0 -38
  488. package/dist/utils/concurrency.js.map +0 -1
  489. package/dist/utils/content-cleaner.d.ts +0 -5
  490. package/dist/utils/content-cleaner.d.ts.map +0 -1
  491. package/dist/utils/content-cleaner.js +0 -77
  492. package/dist/utils/content-cleaner.js.map +0 -1
  493. package/dist/utils/crypto.d.ts +0 -2
  494. package/dist/utils/crypto.d.ts.map +0 -1
  495. package/dist/utils/crypto.js +0 -32
  496. package/dist/utils/crypto.js.map +0 -1
  497. package/dist/utils/download-url.d.ts +0 -16
  498. package/dist/utils/download-url.d.ts.map +0 -1
  499. package/dist/utils/download-url.js +0 -30
  500. package/dist/utils/download-url.js.map +0 -1
  501. package/dist/utils/error-details.d.ts +0 -3
  502. package/dist/utils/error-details.js +0 -12
  503. package/dist/utils/error-utils.d.ts +0 -3
  504. package/dist/utils/error-utils.d.ts.map +0 -1
  505. package/dist/utils/error-utils.js +0 -12
  506. package/dist/utils/error-utils.js.map +0 -1
  507. package/dist/utils/filename-generator.d.ts +0 -1
  508. package/dist/utils/filename-generator.d.ts.map +0 -1
  509. package/dist/utils/filename-generator.js +0 -81
  510. package/dist/utils/filename-generator.js.map +0 -1
  511. package/dist/utils/guards.d.ts +0 -1
  512. package/dist/utils/guards.js +0 -3
  513. package/dist/utils/header-normalizer.d.ts +0 -5
  514. package/dist/utils/header-normalizer.d.ts.map +0 -1
  515. package/dist/utils/header-normalizer.js +0 -31
  516. package/dist/utils/header-normalizer.js.map +0 -1
  517. package/dist/utils/host-normalizer.d.ts +0 -1
  518. package/dist/utils/host-normalizer.js +0 -37
  519. package/dist/utils/html-truncator.d.ts +0 -1
  520. package/dist/utils/html-truncator.d.ts.map +0 -1
  521. package/dist/utils/html-truncator.js +0 -13
  522. package/dist/utils/html-truncator.js.map +0 -1
  523. package/dist/utils/ip-address.d.ts +0 -4
  524. package/dist/utils/ip-address.js +0 -6
  525. package/dist/utils/language-detector.d.ts +0 -2
  526. package/dist/utils/language-detector.d.ts.map +0 -1
  527. package/dist/utils/language-detector.js +0 -39
  528. package/dist/utils/language-detector.js.map +0 -1
  529. package/dist/utils/sanitizer.d.ts +0 -2
  530. package/dist/utils/sanitizer.d.ts.map +0 -1
  531. package/dist/utils/sanitizer.js +0 -20
  532. package/dist/utils/sanitizer.js.map +0 -1
  533. package/dist/utils/tool-error-handler.d.ts +0 -3
  534. package/dist/utils/tool-error-handler.d.ts.map +0 -1
  535. package/dist/utils/tool-error-handler.js +0 -31
  536. package/dist/utils/tool-error-handler.js.map +0 -1
  537. package/dist/utils/url-redactor.d.ts +0 -1
  538. package/dist/utils/url-redactor.js +0 -13
  539. package/dist/utils/url-sanitizer.d.ts +0 -2
  540. package/dist/utils/url-sanitizer.d.ts.map +0 -1
  541. package/dist/utils/url-sanitizer.js +0 -12
  542. package/dist/utils/url-sanitizer.js.map +0 -1
  543. package/dist/utils/url-transformer.d.ts +0 -7
  544. package/dist/utils/url-transformer.js +0 -147
  545. package/dist/utils/url-validator.d.ts +0 -6
  546. package/dist/utils/url-validator.d.ts.map +0 -1
  547. package/dist/utils/url-validator.js +0 -156
  548. package/dist/utils/url-validator.js.map +0 -1
  549. package/dist/workers/content-transform.worker.d.ts +0 -1
  550. package/dist/workers/content-transform.worker.js +0 -40
@@ -1,117 +0,0 @@
1
- import { config } from '../config/index.js';
2
- const LOOPBACK_HOSTS = new Set(['localhost', '127.0.0.1', '::1']);
3
- function getNonEmptyStringHeader(value) {
4
- if (typeof value !== 'string')
5
- return null;
6
- const trimmed = value.trim();
7
- return trimmed === '' ? null : trimmed;
8
- }
9
- function respondHostNotAllowed(res) {
10
- res.status(403).json({
11
- error: 'Host not allowed',
12
- code: 'HOST_NOT_ALLOWED',
13
- });
14
- }
15
- function respondOriginNotAllowed(res) {
16
- res.status(403).json({
17
- error: 'Origin not allowed',
18
- code: 'ORIGIN_NOT_ALLOWED',
19
- });
20
- }
21
- function tryParseOriginHostname(originHeader) {
22
- try {
23
- return new URL(originHeader).hostname.toLowerCase();
24
- }
25
- catch {
26
- return null;
27
- }
28
- }
29
- function takeFirstHostValue(value) {
30
- const first = value.split(',')[0];
31
- if (!first)
32
- return null;
33
- const trimmed = first.trim();
34
- return trimmed ? trimmed : null;
35
- }
36
- function stripIpv6Brackets(value) {
37
- if (!value.startsWith('['))
38
- return null;
39
- const end = value.indexOf(']');
40
- if (end === -1)
41
- return null;
42
- return value.slice(1, end);
43
- }
44
- function stripPortIfPresent(value) {
45
- const colonIndex = value.indexOf(':');
46
- if (colonIndex === -1)
47
- return value;
48
- return value.slice(0, colonIndex);
49
- }
50
- function normalizeHost(value) {
51
- const trimmed = value.trim().toLowerCase();
52
- if (!trimmed)
53
- return null;
54
- const first = takeFirstHostValue(trimmed);
55
- if (!first)
56
- return null;
57
- const ipv6 = stripIpv6Brackets(first);
58
- if (ipv6)
59
- return ipv6;
60
- return stripPortIfPresent(first);
61
- }
62
- function isWildcardHost(host) {
63
- return host === '0.0.0.0' || host === '::';
64
- }
65
- function addLoopbackHosts(allowedHosts) {
66
- for (const host of LOOPBACK_HOSTS) {
67
- allowedHosts.add(host);
68
- }
69
- }
70
- function addConfiguredHost(allowedHosts) {
71
- const configuredHost = normalizeHost(config.server.host);
72
- if (!configuredHost)
73
- return;
74
- if (isWildcardHost(configuredHost))
75
- return;
76
- allowedHosts.add(configuredHost);
77
- }
78
- function addExplicitAllowedHosts(allowedHosts) {
79
- for (const host of config.security.allowedHosts) {
80
- allowedHosts.add(host);
81
- }
82
- }
83
- function buildAllowedHosts() {
84
- const allowedHosts = new Set();
85
- addLoopbackHosts(allowedHosts);
86
- addConfiguredHost(allowedHosts);
87
- addExplicitAllowedHosts(allowedHosts);
88
- return allowedHosts;
89
- }
90
- export function createHostValidationMiddleware() {
91
- const allowedHosts = buildAllowedHosts();
92
- return (req, res, next) => {
93
- const hostHeader = typeof req.headers.host === 'string' ? req.headers.host : '';
94
- const normalized = normalizeHost(hostHeader);
95
- if (!normalized || !allowedHosts.has(normalized)) {
96
- respondHostNotAllowed(res);
97
- return;
98
- }
99
- next();
100
- };
101
- }
102
- export function createOriginValidationMiddleware() {
103
- const allowedHosts = buildAllowedHosts();
104
- return (req, res, next) => {
105
- const originHeader = getNonEmptyStringHeader(req.headers.origin);
106
- if (!originHeader) {
107
- next();
108
- return;
109
- }
110
- const originHostname = tryParseOriginHostname(originHeader);
111
- if (!originHostname || !allowedHosts.has(originHostname)) {
112
- respondOriginNotAllowed(res);
113
- return;
114
- }
115
- next();
116
- };
117
- }
@@ -1,2 +0,0 @@
1
- import type { Response } from 'express';
2
- export declare function sendJsonRpcError(res: Response, code: number, message: string, status?: number): void;
@@ -1,10 +0,0 @@
1
- export function sendJsonRpcError(res, code, message, status = 400) {
2
- res.status(status).json({
3
- jsonrpc: '2.0',
4
- error: {
5
- code,
6
- message,
7
- },
8
- id: null,
9
- });
10
- }
@@ -1,9 +0,0 @@
1
- import type { Express, Request, Response } from 'express';
2
- import type { McpRequestBody } from '../config/types/runtime.js';
3
- import { type McpSessionOptions } from './mcp-sessions.js';
4
- export declare function isJsonRpcBatchRequest(body: unknown): boolean;
5
- export declare function isMcpRequestBody(body: unknown): body is McpRequestBody;
6
- export declare function ensureMcpProtocolVersionHeader(req: Request, res: Response): boolean;
7
- export declare function ensurePostAcceptHeader(req: Request): void;
8
- export declare function acceptsEventStream(req: Request): boolean;
9
- export declare function registerMcpRoutes(app: Express, options: McpSessionOptions): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-routes.d.ts","sourceRoot":"","sources":["../../src/http/mcp-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAQxE,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAoK1B,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAmBN;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,204 +0,0 @@
1
- import { z } from 'zod';
2
- import { logError, logInfo } from '../services/logger.js';
3
- import { getSessionId, resolveTransportForPost, sendJsonRpcError, } from './mcp-sessions.js';
4
- const paramsSchema = z.looseObject({});
5
- const mcpRequestSchema = z.looseObject({
6
- jsonrpc: z.literal('2.0'),
7
- method: z.string().min(1),
8
- id: z.union([z.string(), z.number()]).optional(),
9
- params: paramsSchema.optional(),
10
- });
11
- function wrapAsync(fn) {
12
- return (req, res, next) => {
13
- Promise.resolve(fn(req, res)).catch(next);
14
- };
15
- }
16
- export function isJsonRpcBatchRequest(body) {
17
- return Array.isArray(body);
18
- }
19
- export function isMcpRequestBody(body) {
20
- return mcpRequestSchema.safeParse(body).success;
21
- }
22
- function respondInvalidRequestBody(res) {
23
- sendJsonRpcError(res, -32600, 'Invalid Request: Malformed request body', 400);
24
- }
25
- function respondMissingSession(res) {
26
- sendJsonRpcError(res, -32600, 'Missing mcp-session-id header', 400);
27
- }
28
- function respondSessionNotFound(res) {
29
- sendJsonRpcError(res, -32600, 'Session not found', 404);
30
- }
31
- function validatePostPayload(payload, res) {
32
- if (isJsonRpcBatchRequest(payload)) {
33
- sendJsonRpcError(res, -32600, 'Batch requests are not supported', 400);
34
- return null;
35
- }
36
- if (!isMcpRequestBody(payload)) {
37
- respondInvalidRequestBody(res);
38
- return null;
39
- }
40
- return payload;
41
- }
42
- function logPostRequest(body, sessionId, options) {
43
- logInfo('[MCP POST]', {
44
- method: body.method,
45
- id: body.id,
46
- isInitialize: body.method === 'initialize',
47
- sessionCount: options.sessionStore.size(),
48
- });
49
- }
50
- async function handleTransportRequest(transport, req, res, body) {
51
- try {
52
- await dispatchTransportRequest(transport, req, res, body);
53
- }
54
- catch (error) {
55
- logError('MCP request handling failed', error instanceof Error ? error : undefined);
56
- handleTransportError(res);
57
- }
58
- }
59
- function handleTransportError(res) {
60
- if (res.headersSent)
61
- return;
62
- res.status(500).json({ error: 'Internal Server Error' });
63
- }
64
- function dispatchTransportRequest(transport, req, res, body) {
65
- return body
66
- ? transport.handleRequest(req, res, body)
67
- : transport.handleRequest(req, res);
68
- }
69
- function resolveSessionTransport(sessionId, options, res) {
70
- const { sessionStore } = options;
71
- if (!sessionId) {
72
- respondMissingSession(res);
73
- return null;
74
- }
75
- const session = sessionStore.get(sessionId);
76
- if (!session) {
77
- respondSessionNotFound(res);
78
- return null;
79
- }
80
- sessionStore.touch(sessionId);
81
- return session.transport;
82
- }
83
- const MCP_PROTOCOL_VERSION_HEADER = 'mcp-protocol-version';
84
- const MCP_PROTOCOL_VERSIONS = {
85
- defaultVersion: '2025-11-25',
86
- supported: new Set(['2025-11-25']),
87
- };
88
- function getHeaderValue(req, headerNameLower) {
89
- const value = req.headers[headerNameLower];
90
- if (typeof value === 'string')
91
- return value;
92
- if (Array.isArray(value))
93
- return value[0] ?? null;
94
- return null;
95
- }
96
- function setHeaderValue(req, headerNameLower, value) {
97
- // Express exposes req.headers as a plain object, but the type is readonly-ish.
98
- req.headers[headerNameLower] = value;
99
- }
100
- export function ensureMcpProtocolVersionHeader(req, res) {
101
- const raw = getHeaderValue(req, MCP_PROTOCOL_VERSION_HEADER);
102
- const version = raw?.trim();
103
- if (!version) {
104
- setHeaderValue(req, MCP_PROTOCOL_VERSION_HEADER, MCP_PROTOCOL_VERSIONS.defaultVersion);
105
- return true;
106
- }
107
- if (!MCP_PROTOCOL_VERSIONS.supported.has(version)) {
108
- sendJsonRpcError(res, -32600, `Unsupported MCP-Protocol-Version: ${version}`, 400);
109
- return false;
110
- }
111
- return true;
112
- }
113
- function getAcceptHeader(req) {
114
- const value = req.headers.accept;
115
- if (typeof value === 'string')
116
- return value;
117
- return '';
118
- }
119
- function setAcceptHeader(req, value) {
120
- req.headers.accept = value;
121
- const { rawHeaders } = req;
122
- if (!Array.isArray(rawHeaders))
123
- return;
124
- for (let i = 0; i + 1 < rawHeaders.length; i += 2) {
125
- const key = rawHeaders[i];
126
- if (typeof key === 'string' && key.toLowerCase() === 'accept') {
127
- rawHeaders[i + 1] = value;
128
- return;
129
- }
130
- }
131
- rawHeaders.push('Accept', value);
132
- }
133
- function hasToken(header, token) {
134
- return header
135
- .split(',')
136
- .map((part) => part.trim().toLowerCase())
137
- .some((part) => part === token || part.startsWith(`${token};`));
138
- }
139
- export function ensurePostAcceptHeader(req) {
140
- const accept = getAcceptHeader(req);
141
- // Some clients send */* or omit Accept; the SDK transport is picky.
142
- if (!accept || hasToken(accept, '*/*')) {
143
- setAcceptHeader(req, 'application/json, text/event-stream');
144
- return;
145
- }
146
- const hasJson = hasToken(accept, 'application/json');
147
- const hasSse = hasToken(accept, 'text/event-stream');
148
- if (!hasJson || !hasSse) {
149
- setAcceptHeader(req, 'application/json, text/event-stream');
150
- }
151
- }
152
- export function acceptsEventStream(req) {
153
- const accept = getAcceptHeader(req);
154
- if (!accept)
155
- return false;
156
- return hasToken(accept, 'text/event-stream');
157
- }
158
- async function handlePost(req, res, options) {
159
- ensurePostAcceptHeader(req);
160
- if (!ensureMcpProtocolVersionHeader(req, res))
161
- return;
162
- const sessionId = getSessionId(req);
163
- const payload = validatePostPayload(req.body, res);
164
- if (!payload)
165
- return;
166
- logPostRequest(payload, sessionId, options);
167
- const transport = await resolveTransportForPost({
168
- res,
169
- body: payload,
170
- sessionId,
171
- options,
172
- });
173
- if (!transport)
174
- return;
175
- await handleTransportRequest(transport, req, res, payload);
176
- }
177
- async function handleGet(req, res, options) {
178
- if (!ensureMcpProtocolVersionHeader(req, res))
179
- return;
180
- if (!acceptsEventStream(req)) {
181
- res.status(406).json({
182
- error: 'Not Acceptable',
183
- code: 'ACCEPT_NOT_SUPPORTED',
184
- });
185
- return;
186
- }
187
- const transport = resolveSessionTransport(getSessionId(req), options, res);
188
- if (!transport)
189
- return;
190
- await handleTransportRequest(transport, req, res);
191
- }
192
- async function handleDelete(req, res, options) {
193
- if (!ensureMcpProtocolVersionHeader(req, res))
194
- return;
195
- const transport = resolveSessionTransport(getSessionId(req), options, res);
196
- if (!transport)
197
- return;
198
- await handleTransportRequest(transport, req, res);
199
- }
200
- export function registerMcpRoutes(app, options) {
201
- app.post('/mcp', wrapAsync((req, res) => handlePost(req, res, options)));
202
- app.get('/mcp', wrapAsync((req, res) => handleGet(req, res, options)));
203
- app.delete('/mcp', wrapAsync((req, res) => handleDelete(req, res, options)));
204
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-routes.js","sourceRoot":"","sources":["../../src/http/mcp-routes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAEL,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,SAAS,gBAAgB,CACvB,GAAa,EACb,IAAY,EACZ,OAAe,EACf,MAAM,GAAG,GAAG;IAEZ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,IAAI;YACJ,OAAO;SACR;QACD,EAAE,EAAE,IAAI;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAa;IAC9C,gBAAgB,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,yCAAyC,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAa;IAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAa;IAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CACrB,IAAoB,EACpB,SAA6B,EAC7B,OAA0B;IAE1B,OAAO,CAAC,YAAY,EAAE;QACpB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,SAAS,EAAE,SAAS,IAAI,MAAM;QAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,KAAK,YAAY;QAC1C,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;KAC1C,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAwC,EACxC,GAAY,EACZ,GAAa,EACb,IAAqB;IAErB,IAAI,CAAC;QACH,MAAM,wBAAwB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CACN,6BAA6B,EAC7B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACF,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAa;IACzC,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO;IAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,wBAAwB,CAC/B,SAAwC,EACxC,GAAY,EACZ,GAAa,EACb,IAAqB;IAErB,OAAO,IAAI;QACT,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;QACzC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,uBAAuB,CAC9B,SAA6B,EAC7B,OAA0B,EAC1B,GAAa;IAEb,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,SAAS,CAAC;AAC3B,CAAC;AAED,SAAS,gCAAgC,CACvC,SAA6B,EAC7B,OAA0B;IAE1B,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,SAAS,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,GAAY,EACZ,GAAa,EACb,OAA0B;IAE1B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,GAAwB,CAAC;IAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAC7C,GAAG,EACH,GAAG,EACH,IAAI,EACJ,SAAS,EACT,OAAO,CACR,CAAC;IACF,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,GAAY,EACZ,GAAa,EACb,OAA0B;IAE1B,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,GAAY,EACZ,GAAa,EACb,OAA0B;IAE1B,MAAM,SAAS,GAAG,gCAAgC,CAChD,YAAY,CAAC,GAAG,CAAC,EACjB,OAAO,CACR,CAAC;IACF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,GAAY,EACZ,OAA0B;IAE1B,MAAM,YAAY,GAChB,CAAC,EAAkD,EAAE,EAAE,CACvD,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAClD,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEJ,GAAG,CAAC,IAAI,CACN,MAAM,EACN,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAC1D,CAAC;IACF,GAAG,CAAC,GAAG,CACL,MAAM,EACN,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CACzD,CAAC;IACF,GAAG,CAAC,MAAM,CACR,MAAM,EACN,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { SessionStore } from './sessions.js';
2
- export declare function evictExpiredSessions(store: SessionStore): number;
3
- export declare function evictOldestSession(store: SessionStore): boolean;
@@ -1,24 +0,0 @@
1
- import { logWarn } from '../services/logger.js';
2
- import { getErrorMessage } from '../utils/error-details.js';
3
- export function evictExpiredSessions(store) {
4
- const evicted = store.evictExpired();
5
- for (const session of evicted) {
6
- void session.transport.close().catch((error) => {
7
- logWarn('Failed to close expired session', {
8
- error: getErrorMessage(error),
9
- });
10
- });
11
- }
12
- return evicted.length;
13
- }
14
- export function evictOldestSession(store) {
15
- const session = store.evictOldest();
16
- if (!session)
17
- return false;
18
- void session.transport.close().catch((error) => {
19
- logWarn('Failed to close evicted session', {
20
- error: getErrorMessage(error),
21
- });
22
- });
23
- return true;
24
- }
@@ -1,12 +0,0 @@
1
- import type { Response } from 'express';
2
- import type { SessionStore } from './sessions.js';
3
- export interface SlotTracker {
4
- readonly releaseSlot: () => void;
5
- readonly markInitialized: () => void;
6
- readonly isInitialized: () => boolean;
7
- }
8
- export declare function reserveSessionSlot(store: SessionStore, maxSessions: number): boolean;
9
- export declare function createSlotTracker(): SlotTracker;
10
- export declare function ensureSessionCapacity(store: SessionStore, maxSessions: number, res: Response, evictOldest: (store: SessionStore) => boolean): boolean;
11
- export declare function respondServerBusy(res: Response): void;
12
- export declare function respondBadRequest(res: Response): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-session-helpers.d.ts","sourceRoot":"","sources":["../../src/http/mcp-session-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC;CACvC;AAID,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAc/C;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,QAAQ,EACb,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,GAC5C,OAAO,CAWT;AAkCD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAErD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAOrD"}
@@ -1,64 +0,0 @@
1
- let inFlightSessions = 0;
2
- export function reserveSessionSlot(store, maxSessions) {
3
- if (store.size() + inFlightSessions >= maxSessions) {
4
- return false;
5
- }
6
- inFlightSessions += 1;
7
- return true;
8
- }
9
- function releaseSessionSlot() {
10
- if (inFlightSessions > 0) {
11
- inFlightSessions -= 1;
12
- }
13
- }
14
- export function createSlotTracker() {
15
- let slotReleased = false;
16
- let initialized = false;
17
- return {
18
- releaseSlot: () => {
19
- if (slotReleased)
20
- return;
21
- slotReleased = true;
22
- releaseSessionSlot();
23
- },
24
- markInitialized: () => {
25
- initialized = true;
26
- },
27
- isInitialized: () => initialized,
28
- };
29
- }
30
- export function ensureSessionCapacity(store, maxSessions, res, evictOldest) {
31
- if (!isServerAtCapacity(store, maxSessions)) {
32
- return true;
33
- }
34
- if (tryEvictSlot(store, maxSessions, evictOldest)) {
35
- return !isServerAtCapacity(store, maxSessions);
36
- }
37
- respondServerBusy(res);
38
- return false;
39
- }
40
- function isServerAtCapacity(store, maxSessions) {
41
- return store.size() + inFlightSessions >= maxSessions;
42
- }
43
- function tryEvictSlot(store, maxSessions, evictOldest) {
44
- const currentSize = store.size();
45
- const canFreeSlot = currentSize >= maxSessions &&
46
- currentSize - 1 + inFlightSessions < maxSessions;
47
- return canFreeSlot && evictOldest(store);
48
- }
49
- function sendJsonRpcError(res, code, message, status = 503) {
50
- res.status(status).json({
51
- jsonrpc: '2.0',
52
- error: {
53
- code,
54
- message,
55
- },
56
- id: null,
57
- });
58
- }
59
- export function respondServerBusy(res) {
60
- sendJsonRpcError(res, -32000, 'Server busy: maximum sessions reached', 503);
61
- }
62
- export function respondBadRequest(res) {
63
- sendJsonRpcError(res, -32000, 'Bad Request: Missing session ID or not an initialize request', 400);
64
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-session-helpers.js","sourceRoot":"","sources":["../../src/http/mcp-session-helpers.ts"],"names":[],"mappings":"AAUA,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,kBAAkB,CAChC,KAAmB,EACnB,WAAmB;IAEnB,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,gBAAgB,IAAI,WAAW,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,gBAAgB,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,gBAAgB,IAAI,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,OAAO;QACL,WAAW,EAAE,GAAS,EAAE;YACtB,IAAI,YAAY;gBAAE,OAAO;YACzB,YAAY,GAAG,IAAI,CAAC;YACpB,kBAAkB,EAAE,CAAC;QACvB,CAAC;QACD,eAAe,EAAE,GAAS,EAAE;YAC1B,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,aAAa,EAAE,GAAY,EAAE,CAAC,WAAW;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAmB,EACnB,WAAmB,EACnB,GAAa,EACb,WAA6C;IAE7C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAmB,EAAE,WAAmB;IAClE,OAAO,KAAK,CAAC,IAAI,EAAE,GAAG,gBAAgB,IAAI,WAAW,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CACnB,KAAmB,EACnB,WAAmB,EACnB,WAA6C;IAE7C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,WAAW,GACf,WAAW,IAAI,WAAW;QAC1B,WAAW,GAAG,CAAC,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACnD,OAAO,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAa,EACb,IAAY,EACZ,OAAe,EACf,MAAM,GAAG,GAAG;IAEZ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,IAAI;YACJ,OAAO;SACR;QACD,EAAE,EAAE,IAAI;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAa;IAC7C,gBAAgB,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,uCAAuC,EAAE,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAa;IAC7C,gBAAgB,CACd,GAAG,EACH,CAAC,KAAK,EACN,8DAA8D,EAC9D,GAAG,CACJ,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- import type { Response } from 'express';
2
- import type { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
- import type { McpSessionOptions } from './mcp-session-types.js';
4
- export declare function createAndConnectTransport({ options, res, }: {
5
- options: McpSessionOptions;
6
- res: Response;
7
- }): Promise<StreamableHTTPServerTransport | null>;
@@ -1,94 +0,0 @@
1
- import { logError, logInfo, logWarn } from '../services/logger.js';
2
- import { getErrorMessage } from '../utils/error-details.js';
3
- import { createMcpServer } from '../server.js';
4
- import { evictOldestSession } from './mcp-session-eviction.js';
5
- import { createSlotTracker, ensureSessionCapacity, reserveSessionSlot, respondBadRequest, respondServerBusy, } from './mcp-session-slots.js';
6
- import { createSessionTransport } from './mcp-session-transport-init.js';
7
- import { createTimeoutController, createTransportAdapter, } from './mcp-session-transport.js';
8
- async function connectTransportOrThrow({ transport, clearInitTimeout, releaseSlot, }) {
9
- const mcpServer = createMcpServer();
10
- const transportAdapter = createTransportAdapter(transport);
11
- try {
12
- await mcpServer.connect(transportAdapter);
13
- }
14
- catch (error) {
15
- clearInitTimeout();
16
- releaseSlot();
17
- void transport.close().catch((closeError) => {
18
- logWarn('Failed to close transport after connect error', {
19
- error: getErrorMessage(closeError),
20
- });
21
- });
22
- logError('Failed to initialize MCP session', error instanceof Error ? error : undefined);
23
- throw error;
24
- }
25
- }
26
- export async function createAndConnectTransport({ options, res, }) {
27
- if (!reserveSessionIfPossible({ options, res }))
28
- return null;
29
- const tracker = createSlotTracker();
30
- const timeoutController = createTimeoutController();
31
- const transport = createSessionTransport({ tracker, timeoutController });
32
- await connectTransportOrThrow({
33
- transport,
34
- clearInitTimeout: timeoutController.clear,
35
- releaseSlot: tracker.releaseSlot,
36
- });
37
- const sessionId = resolveSessionId({
38
- transport,
39
- res,
40
- tracker,
41
- clearInitTimeout: timeoutController.clear,
42
- });
43
- if (!sessionId)
44
- return null;
45
- finalizeSession({
46
- store: options.sessionStore,
47
- transport,
48
- sessionId,
49
- tracker,
50
- clearInitTimeout: timeoutController.clear,
51
- });
52
- return transport;
53
- }
54
- function reserveSessionIfPossible({ options, res, }) {
55
- if (!ensureSessionCapacity({
56
- store: options.sessionStore,
57
- maxSessions: options.maxSessions,
58
- res,
59
- evictOldest: evictOldestSession,
60
- })) {
61
- return false;
62
- }
63
- if (!reserveSessionSlot(options.sessionStore, options.maxSessions)) {
64
- respondServerBusy(res);
65
- return false;
66
- }
67
- return true;
68
- }
69
- function resolveSessionId({ transport, res, tracker, clearInitTimeout, }) {
70
- const { sessionId } = transport;
71
- if (typeof sessionId !== 'string') {
72
- clearInitTimeout();
73
- tracker.releaseSlot();
74
- respondBadRequest(res);
75
- return null;
76
- }
77
- return sessionId;
78
- }
79
- function finalizeSession({ store, transport, sessionId, tracker, clearInitTimeout, }) {
80
- clearInitTimeout();
81
- tracker.markInitialized();
82
- tracker.releaseSlot();
83
- const now = Date.now();
84
- store.set(sessionId, {
85
- transport,
86
- createdAt: now,
87
- lastSeen: now,
88
- });
89
- transport.onclose = () => {
90
- store.remove(sessionId);
91
- logInfo('Session closed');
92
- };
93
- logInfo('Session initialized');
94
- }
@@ -1,17 +0,0 @@
1
- import type { Response } from 'express';
2
- import type { SessionStore } from './sessions.js';
3
- export interface SlotTracker {
4
- readonly releaseSlot: () => void;
5
- readonly markInitialized: () => void;
6
- readonly isInitialized: () => boolean;
7
- }
8
- export declare function reserveSessionSlot(store: SessionStore, maxSessions: number): boolean;
9
- export declare function createSlotTracker(): SlotTracker;
10
- export declare function ensureSessionCapacity({ store, maxSessions, res, evictOldest, }: {
11
- store: SessionStore;
12
- maxSessions: number;
13
- res: Response;
14
- evictOldest: (store: SessionStore) => boolean;
15
- }): boolean;
16
- export declare function respondServerBusy(res: Response): void;
17
- export declare function respondBadRequest(res: Response): void;
@@ -1,55 +0,0 @@
1
- import { sendJsonRpcError } from './jsonrpc-http.js';
2
- let inFlightSessions = 0;
3
- export function reserveSessionSlot(store, maxSessions) {
4
- if (store.size() + inFlightSessions >= maxSessions) {
5
- return false;
6
- }
7
- inFlightSessions += 1;
8
- return true;
9
- }
10
- function releaseSessionSlot() {
11
- if (inFlightSessions > 0) {
12
- inFlightSessions -= 1;
13
- }
14
- }
15
- export function createSlotTracker() {
16
- let slotReleased = false;
17
- let initialized = false;
18
- return {
19
- releaseSlot: () => {
20
- if (slotReleased)
21
- return;
22
- slotReleased = true;
23
- releaseSessionSlot();
24
- },
25
- markInitialized: () => {
26
- initialized = true;
27
- },
28
- isInitialized: () => initialized,
29
- };
30
- }
31
- export function ensureSessionCapacity({ store, maxSessions, res, evictOldest, }) {
32
- if (!isServerAtCapacity(store, maxSessions)) {
33
- return true;
34
- }
35
- if (tryEvictSlot(store, maxSessions, evictOldest)) {
36
- return !isServerAtCapacity(store, maxSessions);
37
- }
38
- respondServerBusy(res);
39
- return false;
40
- }
41
- function isServerAtCapacity(store, maxSessions) {
42
- return store.size() + inFlightSessions >= maxSessions;
43
- }
44
- function tryEvictSlot(store, maxSessions, evictOldest) {
45
- const currentSize = store.size();
46
- const canFreeSlot = currentSize >= maxSessions &&
47
- currentSize - 1 + inFlightSessions < maxSessions;
48
- return canFreeSlot && evictOldest(store);
49
- }
50
- export function respondServerBusy(res) {
51
- sendJsonRpcError(res, -32000, 'Server busy: maximum sessions reached', 503);
52
- }
53
- export function respondBadRequest(res) {
54
- sendJsonRpcError(res, -32000, 'Bad Request: Missing session ID or not an initialize request', 400);
55
- }
@@ -1,7 +0,0 @@
1
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
2
- import type { SlotTracker } from './mcp-session-slots.js';
3
- import type { createTimeoutController } from './mcp-session-transport.js';
4
- export declare function createSessionTransport({ tracker, timeoutController, }: {
5
- tracker: SlotTracker;
6
- timeoutController: ReturnType<typeof createTimeoutController>;
7
- }): StreamableHTTPServerTransport;