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,48 @@
1
+ /**
2
+ * Registry Reset Utility
3
+ *
4
+ * Provides a lifecycle function to reset all global registries.
5
+ * Keeps the barrel file (index.ts) free of implementation logic.
6
+ *
7
+ * @module mcp/capabilities/registry/reset
8
+ */
9
+ import { logger as baseLogger } from "../../../logger/index.js";
10
+ import { globalToolRegistry } from "./tool-registry.js";
11
+ import { globalResourceRegistry } from "./resource-registry.js";
12
+ import { globalPromptRegistry } from "./prompt-registry.js";
13
+ import { globalTaskToolRegistry } from "./task-tool-registry.js";
14
+ // ============================================================================
15
+ // Logger
16
+ // ============================================================================
17
+ const logger = baseLogger.child({ component: "registry" });
18
+ // ============================================================================
19
+ // Lifecycle Utilities
20
+ // ============================================================================
21
+ /**
22
+ * Reset all global registries.
23
+ *
24
+ * Clears all registered tools, resources, resource templates, and prompts
25
+ * from the global singleton registries. After calling this, all `define*()`
26
+ * calls must be re-executed to repopulate the registries.
27
+ *
28
+ * **Use cases:**
29
+ * - Hot-reload during development
30
+ * - Server restart / lifecycle management
31
+ * - Isolated testing scenarios
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * import { resetAllRegistries } from 'mcp-server-framework';
36
+ *
37
+ * // Before re-registering tools in a hot-reload scenario
38
+ * resetAllRegistries();
39
+ * ```
40
+ */
41
+ export function resetAllRegistries() {
42
+ globalToolRegistry.clear();
43
+ globalResourceRegistry.clear();
44
+ globalPromptRegistry.clear();
45
+ globalTaskToolRegistry.clear();
46
+ logger.debug("All registries reset");
47
+ }
48
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/reset.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAE3D,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,kBAAkB;IAChC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC3B,sBAAsB,CAAC,KAAK,EAAE,CAAC;IAC/B,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC7B,sBAAsB,CAAC,KAAK,EAAE,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Resource Registry
3
+ *
4
+ * Global registry for MCP resources and resource templates that implements ResourceProvider.
5
+ * Uses composition with BaseRegistry for DRY CRUD operations.
6
+ *
7
+ * The registry is the single authority for resource definitions:
8
+ * - Storage: CRUD operations via BaseRegistry
9
+ * - SDK Binding: `bindToSdk()` registers resources with MCP SDK server instances
10
+ *
11
+ * @module mcp/capabilities/registry/resource-registry
12
+ */
13
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
14
+ import { type z } from "zod";
15
+ import type { ResourceStaticDefinition, ResourceTemplateDefinition, ResourceProvider } from "../../types/index.js";
16
+ import type { Logger } from "../../../logger/index.js";
17
+ /**
18
+ * Options for binding resources to an MCP SDK server.
19
+ * @internal
20
+ */
21
+ export interface ResourceBindOptions {
22
+ readonly logger: Logger;
23
+ }
24
+ /**
25
+ * Composite registry for MCP resources and templates.
26
+ *
27
+ * Uses two internal BaseRegistry instances to eliminate code duplication
28
+ * while maintaining separate namespaces for resources and templates.
29
+ *
30
+ * Implements ResourceProvider for direct use with McpServerBuilder.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * import { resourceRegistry, defineResource } from 'mcp-server-framework';
35
+ *
36
+ * // Resources are auto-registered via defineResource()
37
+ * defineResource({ name: 'config', uri: 'app://config', ... });
38
+ *
39
+ * // Registry can be used directly as a provider
40
+ * builder.withResourceProvider(resourceRegistry);
41
+ * ```
42
+ */
43
+ export declare class ResourceRegistry implements ResourceProvider {
44
+ /** Internal registry for static resources */
45
+ private readonly resourceRegistry;
46
+ /** Internal registry for resource templates */
47
+ private readonly templateRegistry;
48
+ /**
49
+ * Creates an isolated ResourceRegistry (no shared global state).
50
+ *
51
+ * Used for testing.
52
+ */
53
+ static createIsolated(): ResourceRegistry;
54
+ /** Register a static resource. Throws if name exists. Warns on URI conflict. */
55
+ registerResource(resource: ResourceStaticDefinition): void;
56
+ /** Register a static resource, replacing any existing. Warns on URI conflict. */
57
+ registerOrReplaceResource(resource: ResourceStaticDefinition): void;
58
+ /** Unregister a resource by name. */
59
+ unregisterResource(name: string): boolean;
60
+ /** Get a resource by name. */
61
+ getResource(name: string): ResourceStaticDefinition | undefined;
62
+ /** Check if a resource exists. */
63
+ hasResource(name: string): boolean;
64
+ /** Register a resource template. Throws if name exists. */
65
+ registerTemplate(template: ResourceTemplateDefinition): void;
66
+ /** Register a template, replacing any existing. */
67
+ registerOrReplaceTemplate(template: ResourceTemplateDefinition): void;
68
+ /** Unregister a template by name. */
69
+ unregisterTemplate(name: string): boolean;
70
+ /** Get a template by name. */
71
+ getTemplate(name: string): ResourceTemplateDefinition | undefined;
72
+ /** Check if a template exists. */
73
+ hasTemplate(name: string): boolean;
74
+ /**
75
+ * Register a template from a generic factory function.
76
+ *
77
+ * Centralizes TypeScript generic variance handling. `ResourceTemplateDefinition<TInput>`
78
+ * is invariant — `TInput` appears in both covariant (input property) and
79
+ * contravariant (read parameter) positions via Zod's type mapping.
80
+ * TypeScript requires `as unknown as` because neither type sufficiently
81
+ * overlaps with the other (invariance).
82
+ *
83
+ * @internal Used by defineResourceTemplate() — prefer registerOrReplaceTemplate() for non-generic usage.
84
+ */
85
+ registerTemplateFromFactory<TInput extends z.AnyZodObject>(template: ResourceTemplateDefinition<TInput>): void;
86
+ /**
87
+ * Warn when a new resource registers a URI already in use by another resource.
88
+ * Name-based dedup is handled by BaseRegistry; this checks for URI-level conflicts
89
+ * across the static resource registry.
90
+ */
91
+ private warnOnDuplicateResourceUri;
92
+ /** Clear all resources. */
93
+ clearResources(): void;
94
+ /** Clear all templates. */
95
+ clearTemplates(): void;
96
+ /** Clear all resources and templates. */
97
+ clear(): void;
98
+ /** Number of registered resources. */
99
+ get resourceCount(): number;
100
+ /** Number of registered templates. */
101
+ get templateCount(): number;
102
+ /**
103
+ * Get all registered static resources.
104
+ */
105
+ getResources(): ReadonlyArray<ResourceStaticDefinition>;
106
+ /**
107
+ * Get all registered templates.
108
+ */
109
+ getTemplates(): ReadonlyArray<ResourceTemplateDefinition>;
110
+ /**
111
+ * Check if provider has any resources or templates.
112
+ */
113
+ hasResources(): boolean;
114
+ /**
115
+ * Registers all resources (static + templates) with an MCP SDK server instance.
116
+ *
117
+ * Each resource is registered with:
118
+ * - OpenTelemetry tracing spans for read operations
119
+ * - Structured error handling and logging
120
+ * - URI template variable extraction and completion callbacks
121
+ *
122
+ * @param sdk - The MCP SDK server instance
123
+ * @param resources - Static resource definitions
124
+ * @param templates - Resource template definitions
125
+ * @param options - Registration context (logger)
126
+ * @internal
127
+ */
128
+ static bindToSdk(sdk: McpServer, resources: readonly ResourceStaticDefinition[], templates: readonly ResourceTemplateDefinition[], options: ResourceBindOptions): void;
129
+ /**
130
+ * Extracts variable names from a URI template string (RFC 6570).
131
+ *
132
+ * @param uriTemplate - URI template pattern (e.g., 'notes://note/{noteId}')
133
+ * @returns Array of variable names (e.g., ['noteId'])
134
+ */
135
+ private static extractUriTemplateVariables;
136
+ /**
137
+ * Bridges framework's unified `complete(argName, argValue)` callback to SDK's
138
+ * per-variable `{ [variable]: (value) => string[] }` format.
139
+ *
140
+ * @sdk-constraint — SDK ResourceTemplate expects separate callbacks keyed by variable name.
141
+ * The framework provides a single callback to reduce boilerplate.
142
+ */
143
+ private static buildResourceCompleteCallbacks;
144
+ }
145
+ /**
146
+ * Global resource registry singleton.
147
+ *
148
+ * This instance is used by defineResource() and defineResourceTemplate()
149
+ * for auto-registration and by createServer() to discover all resources.
150
+ */
151
+ export declare const globalResourceRegistry: ResourceRegistry;
152
+ //# sourceMappingURL=resource-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/resource-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,CAAC,EAAY,MAAM,KAAK,CAAC;AAEvC,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAiCvD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AA8BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IAEjE,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IAMnE;;;;OAIG;IACH,MAAM,CAAC,cAAc,IAAI,gBAAgB;IAQzC,gFAAgF;IAChF,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAK1D,iFAAiF;IACjF,yBAAyB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAKnE,qCAAqC;IACrC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIzC,8BAA8B;IAC9B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAI/D,kCAAkC;IAClC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQlC,2DAA2D;IAC3D,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;IAI5D,mDAAmD;IACnD,yBAAyB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;IAIrE,qCAAqC;IACrC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIzC,8BAA8B;IAC9B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS;IAIjE,kCAAkC;IAClC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQlC;;;;;;;;;;OAUG;IACH,2BAA2B,CAAC,MAAM,SAAS,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAAG,IAAI;IAa9G;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAalC,2BAA2B;IAC3B,cAAc,IAAI,IAAI;IAItB,2BAA2B;IAC3B,cAAc,IAAI,IAAI;IAItB,yCAAyC;IACzC,KAAK,IAAI,IAAI;IASb,sCAAsC;IACtC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,sCAAsC;IACtC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAMD;;OAEG;IACH,YAAY,IAAI,aAAa,CAAC,wBAAwB,CAAC;IAIvD;;OAEG;IACH,YAAY,IAAI,aAAa,CAAC,0BAA0B,CAAC;IAIzD;;OAEG;IACH,YAAY,IAAI,OAAO;IAQvB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,SAAS,CACd,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,SAAS,wBAAwB,EAAE,EAC9C,SAAS,EAAE,SAAS,0BAA0B,EAAE,EAChD,OAAO,EAAE,mBAAmB,GAC3B,IAAI;IA6KP;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAK1C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;CAyB9C;AAMD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,kBAAyB,CAAC"}
@@ -0,0 +1,430 @@
1
+ /**
2
+ * Resource Registry
3
+ *
4
+ * Global registry for MCP resources and resource templates that implements ResourceProvider.
5
+ * Uses composition with BaseRegistry for DRY CRUD operations.
6
+ *
7
+ * The registry is the single authority for resource definitions:
8
+ * - Storage: CRUD operations via BaseRegistry
9
+ * - SDK Binding: `bindToSdk()` registers resources with MCP SDK server instances
10
+ *
11
+ * @module mcp/capabilities/registry/resource-registry
12
+ */
13
+ import { ResourceTemplate as SdkResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
14
+ import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
15
+ import { ZodError } from "zod";
16
+ import { withSpan, MCP_ATTRIBUTES, SpanKind } from "../../../telemetry/index.js";
17
+ import { BaseRegistry } from "./base-registry.js";
18
+ import { enforceScopeOrThrow } from "./scope-enforcement.js";
19
+ import { logger as baseLogger } from "../../../logger/index.js";
20
+ const logger = baseLogger.child({ component: "resource-registry" });
21
+ // ============================================================================
22
+ // Constants
23
+ // ============================================================================
24
+ const SdkBindingMessages = {
25
+ RESOURCES_REGISTERED: "Registered %d resources and %d templates with SDK",
26
+ RESOURCE_REGISTERED: "Registered resource: %s (%s)",
27
+ TEMPLATE_REGISTERED: "Registered resource template: %s (%s)",
28
+ TEMPLATE_LIST_FAILED: "Failed to list resources for template %s: %s",
29
+ NO_RESOURCES: "No resources to register",
30
+ RESOURCE_READ_ERROR: "Error reading resource %s: %s",
31
+ TEMPLATE_READ_ERROR: "Error reading resource template %s: %s",
32
+ RESOURCE_READING: "Reading resource: %s",
33
+ TEMPLATE_READING: "Reading resource template: %s with variables %j",
34
+ TEMPLATE_VALIDATION_FAILED: "Resource template %s: parameter validation failed: %s",
35
+ };
36
+ const RegistryLogMessages = {
37
+ DUPLICATE_URI: 'Resource URI conflict: "%s" registers URI "%s" which is already used by "%s"',
38
+ };
39
+ // ============================================================================
40
+ // Internal Registry Classes (extend BaseRegistry for CRUD)
41
+ // ============================================================================
42
+ /**
43
+ * Internal registry for static resources.
44
+ * @internal
45
+ */
46
+ class StaticResourceRegistry extends BaseRegistry {
47
+ get itemTypeName() {
48
+ return "Resource";
49
+ }
50
+ }
51
+ /**
52
+ * Internal registry for resource templates.
53
+ * @internal
54
+ */
55
+ class ResourceTemplateRegistry extends BaseRegistry {
56
+ get itemTypeName() {
57
+ return "Template";
58
+ }
59
+ }
60
+ // ============================================================================
61
+ // Resource Registry Class
62
+ // ============================================================================
63
+ /**
64
+ * Composite registry for MCP resources and templates.
65
+ *
66
+ * Uses two internal BaseRegistry instances to eliminate code duplication
67
+ * while maintaining separate namespaces for resources and templates.
68
+ *
69
+ * Implements ResourceProvider for direct use with McpServerBuilder.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * import { resourceRegistry, defineResource } from 'mcp-server-framework';
74
+ *
75
+ * // Resources are auto-registered via defineResource()
76
+ * defineResource({ name: 'config', uri: 'app://config', ... });
77
+ *
78
+ * // Registry can be used directly as a provider
79
+ * builder.withResourceProvider(resourceRegistry);
80
+ * ```
81
+ */
82
+ export class ResourceRegistry {
83
+ /** Internal registry for static resources */
84
+ resourceRegistry = new StaticResourceRegistry();
85
+ /** Internal registry for resource templates */
86
+ templateRegistry = new ResourceTemplateRegistry();
87
+ // ──────────────────────────────────────────────────────────────────────────
88
+ // Factory
89
+ // ──────────────────────────────────────────────────────────────────────────
90
+ /**
91
+ * Creates an isolated ResourceRegistry (no shared global state).
92
+ *
93
+ * Used for testing.
94
+ */
95
+ static createIsolated() {
96
+ return new ResourceRegistry();
97
+ }
98
+ // ──────────────────────────────────────────────────────────────────────────
99
+ // Resource Registration Methods (delegated to internal registry)
100
+ // ──────────────────────────────────────────────────────────────────────────
101
+ /** Register a static resource. Throws if name exists. Warns on URI conflict. */
102
+ registerResource(resource) {
103
+ this.warnOnDuplicateResourceUri(resource.name, resource.uri);
104
+ this.resourceRegistry.register(resource);
105
+ }
106
+ /** Register a static resource, replacing any existing. Warns on URI conflict. */
107
+ registerOrReplaceResource(resource) {
108
+ this.warnOnDuplicateResourceUri(resource.name, resource.uri);
109
+ this.resourceRegistry.registerOrReplace(resource);
110
+ }
111
+ /** Unregister a resource by name. */
112
+ unregisterResource(name) {
113
+ return this.resourceRegistry.unregister(name);
114
+ }
115
+ /** Get a resource by name. */
116
+ getResource(name) {
117
+ return this.resourceRegistry.get(name);
118
+ }
119
+ /** Check if a resource exists. */
120
+ hasResource(name) {
121
+ return this.resourceRegistry.has(name);
122
+ }
123
+ // ──────────────────────────────────────────────────────────────────────────
124
+ // Template Registration Methods (delegated to internal registry)
125
+ // ──────────────────────────────────────────────────────────────────────────
126
+ /** Register a resource template. Throws if name exists. */
127
+ registerTemplate(template) {
128
+ this.templateRegistry.register(template);
129
+ }
130
+ /** Register a template, replacing any existing. */
131
+ registerOrReplaceTemplate(template) {
132
+ this.templateRegistry.registerOrReplace(template);
133
+ }
134
+ /** Unregister a template by name. */
135
+ unregisterTemplate(name) {
136
+ return this.templateRegistry.unregister(name);
137
+ }
138
+ /** Get a template by name. */
139
+ getTemplate(name) {
140
+ return this.templateRegistry.get(name);
141
+ }
142
+ /** Check if a template exists. */
143
+ hasTemplate(name) {
144
+ return this.templateRegistry.has(name);
145
+ }
146
+ // ──────────────────────────────────────────────────────────────────────────
147
+ // Generic Registration (Variance-Safe)
148
+ // ──────────────────────────────────────────────────────────────────────────
149
+ /**
150
+ * Register a template from a generic factory function.
151
+ *
152
+ * Centralizes TypeScript generic variance handling. `ResourceTemplateDefinition<TInput>`
153
+ * is invariant — `TInput` appears in both covariant (input property) and
154
+ * contravariant (read parameter) positions via Zod's type mapping.
155
+ * TypeScript requires `as unknown as` because neither type sufficiently
156
+ * overlaps with the other (invariance).
157
+ *
158
+ * @internal Used by defineResourceTemplate() — prefer registerOrReplaceTemplate() for non-generic usage.
159
+ */
160
+ registerTemplateFromFactory(template) {
161
+ // @type-variance — Generic input erased for homogeneous storage; SDK validates at runtime
162
+ this.templateRegistry.registerOrReplace(template);
163
+ }
164
+ // ──────────────────────────────────────────────────────────────────────────
165
+ // Clear Methods
166
+ // ──────────────────────────────────────────────────────────────────────────
167
+ // ──────────────────────────────────────────────────────────────────────────
168
+ // URI Conflict Detection
169
+ // ──────────────────────────────────────────────────────────────────────────
170
+ /**
171
+ * Warn when a new resource registers a URI already in use by another resource.
172
+ * Name-based dedup is handled by BaseRegistry; this checks for URI-level conflicts
173
+ * across the static resource registry.
174
+ */
175
+ warnOnDuplicateResourceUri(newName, uri) {
176
+ for (const existing of this.resourceRegistry.getAll()) {
177
+ if (existing.uri === uri && existing.name !== newName) {
178
+ logger.warn(RegistryLogMessages.DUPLICATE_URI, newName, uri, existing.name);
179
+ return;
180
+ }
181
+ }
182
+ }
183
+ // ──────────────────────────────────────────────────────────────────────────
184
+ // Clear Methods
185
+ // ──────────────────────────────────────────────────────────────────────────
186
+ /** Clear all resources. */
187
+ clearResources() {
188
+ this.resourceRegistry.clear();
189
+ }
190
+ /** Clear all templates. */
191
+ clearTemplates() {
192
+ this.templateRegistry.clear();
193
+ }
194
+ /** Clear all resources and templates. */
195
+ clear() {
196
+ this.resourceRegistry.clear();
197
+ this.templateRegistry.clear();
198
+ }
199
+ // ──────────────────────────────────────────────────────────────────────────
200
+ // Size Properties (computed from internal registries)
201
+ // ──────────────────────────────────────────────────────────────────────────
202
+ /** Number of registered resources. */
203
+ get resourceCount() {
204
+ return this.resourceRegistry.size;
205
+ }
206
+ /** Number of registered templates. */
207
+ get templateCount() {
208
+ return this.templateRegistry.size;
209
+ }
210
+ // ──────────────────────────────────────────────────────────────────────────
211
+ // ResourceProvider Implementation
212
+ // ──────────────────────────────────────────────────────────────────────────
213
+ /**
214
+ * Get all registered static resources.
215
+ */
216
+ getResources() {
217
+ return this.resourceRegistry.getAll();
218
+ }
219
+ /**
220
+ * Get all registered templates.
221
+ */
222
+ getTemplates() {
223
+ return this.templateRegistry.getAll();
224
+ }
225
+ /**
226
+ * Check if provider has any resources or templates.
227
+ */
228
+ hasResources() {
229
+ return this.resourceRegistry.size > 0 || this.templateRegistry.size > 0;
230
+ }
231
+ // ──────────────────────────────────────────────────────────────────────────
232
+ // SDK Binding
233
+ // ──────────────────────────────────────────────────────────────────────────
234
+ /**
235
+ * Registers all resources (static + templates) with an MCP SDK server instance.
236
+ *
237
+ * Each resource is registered with:
238
+ * - OpenTelemetry tracing spans for read operations
239
+ * - Structured error handling and logging
240
+ * - URI template variable extraction and completion callbacks
241
+ *
242
+ * @param sdk - The MCP SDK server instance
243
+ * @param resources - Static resource definitions
244
+ * @param templates - Resource template definitions
245
+ * @param options - Registration context (logger)
246
+ * @internal
247
+ */
248
+ static bindToSdk(sdk, resources, templates, options) {
249
+ const { logger } = options;
250
+ if (resources.length === 0 && templates.length === 0) {
251
+ logger.trace(SdkBindingMessages.NO_RESOURCES);
252
+ return;
253
+ }
254
+ logger.trace(SdkBindingMessages.RESOURCES_REGISTERED, resources.length, templates.length);
255
+ // Register static resources
256
+ for (const resource of resources) {
257
+ sdk.registerResource(resource.name, resource.uri, { description: resource.description, mimeType: resource.mimeType }, async (_uri, extra) => {
258
+ // Scope enforcement (RBAC)
259
+ enforceScopeOrThrow(resource.requiredScopes, extra.authInfo, "Resource", resource.uri, logger);
260
+ return withSpan(`mcp.resource.read`, async (span) => {
261
+ span.setAttributes({
262
+ [MCP_ATTRIBUTES.RESOURCE_URI]: resource.uri,
263
+ [MCP_ATTRIBUTES.OPERATION]: "resource_read",
264
+ });
265
+ logger.trace(SdkBindingMessages.RESOURCE_READING, resource.uri);
266
+ try {
267
+ const content = await resource.read();
268
+ if (typeof content === "string") {
269
+ return {
270
+ contents: [
271
+ {
272
+ uri: resource.uri,
273
+ mimeType: resource.mimeType,
274
+ text: content,
275
+ },
276
+ ],
277
+ };
278
+ }
279
+ else {
280
+ const base64 = Buffer.from(content).toString("base64");
281
+ return {
282
+ contents: [
283
+ {
284
+ uri: resource.uri,
285
+ mimeType: resource.mimeType,
286
+ blob: base64,
287
+ },
288
+ ],
289
+ };
290
+ }
291
+ }
292
+ catch (error) {
293
+ const msg = error instanceof Error ? error.message : String(error);
294
+ logger.error(SdkBindingMessages.RESOURCE_READ_ERROR, resource.uri, msg);
295
+ throw error;
296
+ }
297
+ }, { kind: SpanKind.SERVER });
298
+ });
299
+ logger.trace(SdkBindingMessages.RESOURCE_REGISTERED, resource.name, resource.uri);
300
+ }
301
+ // Register templates
302
+ for (const template of templates) {
303
+ const completeCallbacks = template.complete
304
+ ? ResourceRegistry.buildResourceCompleteCallbacks(template.uriTemplate, template.complete)
305
+ : undefined;
306
+ const sdkTemplate = new SdkResourceTemplate(template.uriTemplate, {
307
+ list: template.list
308
+ ? async () => {
309
+ try {
310
+ const items = await template.list();
311
+ return {
312
+ resources: items.map((item) => ({
313
+ uri: item.uri,
314
+ name: item.name ?? template.name,
315
+ description: item.description ?? template.description,
316
+ mimeType: item.mimeType ?? template.mimeType,
317
+ })),
318
+ };
319
+ }
320
+ catch (error) {
321
+ const msg = error instanceof Error ? error.message : String(error);
322
+ logger.error(SdkBindingMessages.TEMPLATE_LIST_FAILED, template.uriTemplate, msg);
323
+ return { resources: [] };
324
+ }
325
+ }
326
+ : undefined,
327
+ ...(completeCallbacks && { complete: completeCallbacks }),
328
+ });
329
+ sdk.registerResource(template.name, sdkTemplate, { description: template.description, mimeType: template.mimeType }, async (_uri, variables, extra) => {
330
+ // Scope enforcement (RBAC)
331
+ enforceScopeOrThrow(template.requiredScopes, extra.authInfo, "Resource", template.uriTemplate, logger);
332
+ return withSpan(`mcp.resource.read`, async (span) => {
333
+ span.setAttributes({
334
+ [MCP_ATTRIBUTES.RESOURCE_TEMPLATE]: template.uriTemplate,
335
+ [MCP_ATTRIBUTES.OPERATION]: "resource_read",
336
+ });
337
+ logger.trace(SdkBindingMessages.TEMPLATE_READING, template.uriTemplate, variables);
338
+ // Convert string[] to string for simple templates
339
+ const params = {};
340
+ for (const [key, value] of Object.entries(variables)) {
341
+ params[key] = Array.isArray(value) ? (value[0] ?? "") : value;
342
+ }
343
+ // Validate params against Zod schema if provided (DD JSDoc contract)
344
+ if (template.input) {
345
+ try {
346
+ await template.input.parseAsync(params);
347
+ }
348
+ catch (validationError) {
349
+ const msg = validationError instanceof ZodError
350
+ ? validationError.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")
351
+ : String(validationError);
352
+ logger.warn(SdkBindingMessages.TEMPLATE_VALIDATION_FAILED, template.uriTemplate, msg);
353
+ throw new McpError(ErrorCode.InvalidParams, `Invalid resource template parameters: ${msg}`);
354
+ }
355
+ }
356
+ try {
357
+ const content = await template.read(params);
358
+ // Construct URI from template for the response
359
+ const uri = template.uriTemplate.replace(/\{(\w+)\}/g, (_, key) => params[key] ?? `{${key}}`);
360
+ if (typeof content === "string") {
361
+ return {
362
+ contents: [{ uri, mimeType: template.mimeType, text: content }],
363
+ };
364
+ }
365
+ else {
366
+ const base64 = Buffer.from(content).toString("base64");
367
+ return {
368
+ contents: [{ uri, mimeType: template.mimeType, blob: base64 }],
369
+ };
370
+ }
371
+ }
372
+ catch (error) {
373
+ const msg = error instanceof Error ? error.message : String(error);
374
+ logger.error(SdkBindingMessages.TEMPLATE_READ_ERROR, template.uriTemplate, msg);
375
+ throw error;
376
+ }
377
+ }, { kind: SpanKind.SERVER });
378
+ });
379
+ logger.trace(SdkBindingMessages.TEMPLATE_REGISTERED, template.name, template.uriTemplate);
380
+ }
381
+ }
382
+ // ──────────────────────────────────────────────────────────────────────────
383
+ // Private SDK Binding Helpers
384
+ // ──────────────────────────────────────────────────────────────────────────
385
+ /**
386
+ * Extracts variable names from a URI template string (RFC 6570).
387
+ *
388
+ * @param uriTemplate - URI template pattern (e.g., 'notes://note/{noteId}')
389
+ * @returns Array of variable names (e.g., ['noteId'])
390
+ */
391
+ static extractUriTemplateVariables(uriTemplate) {
392
+ const matches = uriTemplate.matchAll(/\{(\w+)\}/g);
393
+ return [...matches].map((m) => m[1]);
394
+ }
395
+ /**
396
+ * Bridges framework's unified `complete(argName, argValue)` callback to SDK's
397
+ * per-variable `{ [variable]: (value) => string[] }` format.
398
+ *
399
+ * @sdk-constraint — SDK ResourceTemplate expects separate callbacks keyed by variable name.
400
+ * The framework provides a single callback to reduce boilerplate.
401
+ */
402
+ static buildResourceCompleteCallbacks(uriTemplate, complete) {
403
+ const variables = ResourceRegistry.extractUriTemplateVariables(uriTemplate);
404
+ const callbacks = {};
405
+ for (const variable of variables) {
406
+ callbacks[variable] = async (value) => {
407
+ try {
408
+ const result = await complete(variable, value);
409
+ return result.values;
410
+ }
411
+ catch (error) {
412
+ logger.warn("Completion callback failed for variable '%s': %s", variable, error instanceof Error ? error.message : String(error));
413
+ return [];
414
+ }
415
+ };
416
+ }
417
+ return callbacks;
418
+ }
419
+ }
420
+ // ============================================================================
421
+ // Global Singleton Instance
422
+ // ============================================================================
423
+ /**
424
+ * Global resource registry singleton.
425
+ *
426
+ * This instance is used by defineResource() and defineResourceTemplate()
427
+ * for auto-registration and by createServer() to discover all resources.
428
+ */
429
+ export const globalResourceRegistry = new ResourceRegistry();
430
+ //# sourceMappingURL=resource-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-registry.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/resource-registry.ts"],"names":[],"mappings":"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"}