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,311 @@
1
+ /**
2
+ * Validation Error Classes
3
+ *
4
+ * Errors related to input validation and configuration:
5
+ * - ValidationError: Input validation failures
6
+ * - ConfigurationError: Configuration/environment errors
7
+ *
8
+ * @module errors/categories/validation
9
+ */
10
+ import { ErrorCode } from "@modelcontextprotocol/sdk/types.js";
11
+ import { ZodError } from "zod";
12
+ import { AppError, ErrorCodes, VALIDATION_LIMITS, REDACTED_PLACEHOLDER, isSensitiveKey } from "../core/index.js";
13
+ // ============================================================================
14
+ // Validation Error
15
+ // ============================================================================
16
+ /**
17
+ * Error thrown when input validation fails.
18
+ *
19
+ * Integrates with Zod for schema validation errors.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // From Zod error
24
+ * throw ValidationError.fromZodError(zodError, 'Invalid server configuration');
25
+ *
26
+ * // Manual validation
27
+ * throw new ValidationError('Server name is required', {
28
+ * field: 'server',
29
+ * value: undefined
30
+ * });
31
+ *
32
+ * // Using factory methods
33
+ * throw ValidationError.fieldRequired('server');
34
+ * ```
35
+ */
36
+ export class ValidationError extends AppError {
37
+ /** The field that failed validation */
38
+ field;
39
+ /** The invalid value (sanitized) */
40
+ value;
41
+ /** All validation issues (for multi-field validation) */
42
+ issues;
43
+ constructor(message, options = {}) {
44
+ super(message, {
45
+ code: ErrorCodes.VALIDATION_ERROR,
46
+ statusCode: 400,
47
+ mcpCode: ErrorCode.InvalidParams,
48
+ cause: options.cause,
49
+ recoveryHint: options.recoveryHint,
50
+ context: {
51
+ ...options.context,
52
+ field: options.field,
53
+ // Don't include actual value in context to avoid sensitive data leaks
54
+ hasValue: options.value !== undefined,
55
+ },
56
+ });
57
+ this.field = options.field;
58
+ // Sanitize the value - don't store sensitive information
59
+ this.value = this.sanitizeValue(options.value, options.field);
60
+ this.issues = options.issues;
61
+ }
62
+ // ─────────────────────────────────────────────────────────────────────────
63
+ // Value Sanitization
64
+ // ─────────────────────────────────────────────────────────────────────────
65
+ /**
66
+ * Sanitize a value for safe storage/logging.
67
+ * Removes potential sensitive data.
68
+ */
69
+ sanitizeValue(value, fieldName) {
70
+ if (value === undefined || value === null) {
71
+ return value;
72
+ }
73
+ // Check for potential secrets based on field name
74
+ if (fieldName && isSensitiveKey(fieldName)) {
75
+ return REDACTED_PLACEHOLDER;
76
+ }
77
+ // For strings, truncate and indicate type
78
+ if (typeof value === "string") {
79
+ if (value.length > VALIDATION_LIMITS.MAX_STRING_DISPLAY_LENGTH) {
80
+ return `[string:${value.length} chars]`;
81
+ }
82
+ return value;
83
+ }
84
+ // For objects/arrays, indicate structure only
85
+ if (typeof value === "object") {
86
+ if (Array.isArray(value)) {
87
+ return `[array:${value.length} items]`;
88
+ }
89
+ return `[object:${Object.keys(value).length} keys]`;
90
+ }
91
+ return value;
92
+ }
93
+ // ─────────────────────────────────────────────────────────────────────────
94
+ // Factory Methods
95
+ // ─────────────────────────────────────────────────────────────────────────
96
+ /**
97
+ * Create a ValidationError from a Zod error.
98
+ */
99
+ static fromZodError(zodError, message) {
100
+ const issues = zodError.issues.map((issue) => ({
101
+ path: issue.path.join("."),
102
+ message: issue.message,
103
+ code: issue.code,
104
+ }));
105
+ const primaryIssue = issues[0];
106
+ const errorMessage = message || primaryIssue?.message || "Validation failed";
107
+ return new ValidationError(errorMessage, {
108
+ field: primaryIssue?.path,
109
+ issues,
110
+ cause: zodError,
111
+ recoveryHint: "Check the input parameters against the expected schema.",
112
+ });
113
+ }
114
+ /**
115
+ * Create a ValidationError for a required field.
116
+ */
117
+ static fieldRequired(field) {
118
+ return new ValidationError(`Field '${field}' is required`, {
119
+ field,
120
+ recoveryHint: `Provide a value for the required field '${field}'.`,
121
+ });
122
+ }
123
+ /**
124
+ * Create a ValidationError for an invalid field value.
125
+ */
126
+ static fieldInvalid(field, value) {
127
+ return new ValidationError(`Invalid value for field '${field}'`, {
128
+ field,
129
+ value,
130
+ recoveryHint: `Check the value provided for '${field}' and ensure it meets the requirements.`,
131
+ });
132
+ }
133
+ /**
134
+ * Create a ValidationError for a type mismatch.
135
+ */
136
+ static fieldTypeMismatch(field, expectedType) {
137
+ return new ValidationError(`Field '${field}' must be of type ${expectedType}`, {
138
+ field,
139
+ recoveryHint: `Field '${field}' must be of type '${expectedType}'.`,
140
+ });
141
+ }
142
+ /**
143
+ * Create a ValidationError for minimum value constraint.
144
+ */
145
+ static fieldMin(field, min) {
146
+ return new ValidationError(`Field '${field}' must be at least ${min}`, {
147
+ field,
148
+ recoveryHint: `Provide a value of at least ${min} for '${field}'.`,
149
+ });
150
+ }
151
+ /**
152
+ * Create a ValidationError for maximum value constraint.
153
+ */
154
+ static fieldMax(field, max) {
155
+ return new ValidationError(`Field '${field}' must be at most ${max}`, {
156
+ field,
157
+ recoveryHint: `Provide a value of at most ${max} for '${field}'.`,
158
+ });
159
+ }
160
+ /**
161
+ * Create a ValidationError for pattern mismatch.
162
+ */
163
+ static fieldPattern(field) {
164
+ return new ValidationError(`Field '${field}' does not match the required pattern`, {
165
+ field,
166
+ recoveryHint: `Ensure '${field}' matches the expected format.`,
167
+ });
168
+ }
169
+ // ─────────────────────────────────────────────────────────────────────────
170
+ // Formatting
171
+ // ─────────────────────────────────────────────────────────────────────────
172
+ /**
173
+ * Format issues as a human-readable list.
174
+ */
175
+ formatIssues() {
176
+ if (!this.issues || this.issues.length === 0) {
177
+ return this.message;
178
+ }
179
+ return this.issues.map((issue) => ` - ${issue.path}: ${issue.message}`).join("\n");
180
+ }
181
+ }
182
+ // ============================================================================
183
+ // Configuration Error
184
+ // ============================================================================
185
+ /**
186
+ * Error thrown when configuration is invalid.
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * throw new ConfigurationError('Missing required environment variable: API_URL');
191
+ *
192
+ * // Using factory methods
193
+ * throw ConfigurationError.missingEnvVar('API_URL');
194
+ * throw ConfigurationError.invalidEnvVar('API_PORT', 'must be a number');
195
+ * ```
196
+ */
197
+ export class ConfigurationError extends AppError {
198
+ /** The configuration key that is invalid */
199
+ configKey;
200
+ constructor(message, options = {}) {
201
+ super(message, {
202
+ code: ErrorCodes.CONFIGURATION_ERROR,
203
+ statusCode: 500, // Configuration errors are server-side
204
+ mcpCode: ErrorCode.InternalError,
205
+ cause: options.cause,
206
+ context: {
207
+ ...options.context,
208
+ configKey: options.configKey,
209
+ },
210
+ });
211
+ this.configKey = options.configKey;
212
+ }
213
+ // ─────────────────────────────────────────────────────────────────────────
214
+ // Factory Methods
215
+ // ─────────────────────────────────────────────────────────────────────────
216
+ /**
217
+ * Create a ConfigurationError for a missing environment variable.
218
+ */
219
+ static missingEnvVar(varName) {
220
+ return new ConfigurationError(`Missing required environment variable: ${varName}`, {
221
+ configKey: varName,
222
+ recoveryHint: `Set the environment variable '${varName}' in your configuration.`,
223
+ });
224
+ }
225
+ /**
226
+ * Create a ConfigurationError for an invalid environment variable value.
227
+ */
228
+ static invalidEnvVar(varName, reason) {
229
+ return new ConfigurationError(`Invalid value for environment variable ${varName}: ${reason}`, {
230
+ configKey: varName,
231
+ recoveryHint: `Check the value of '${varName}': ${reason}.`,
232
+ });
233
+ }
234
+ /**
235
+ * Create a ConfigurationError with a custom message.
236
+ */
237
+ static invalid(message) {
238
+ return new ConfigurationError(`Invalid configuration: ${message}`, {
239
+ recoveryHint: "Review your configuration settings and correct any issues.",
240
+ });
241
+ }
242
+ // ─────────────────────────────────────────────────────────────────────────
243
+ // Config File Factory Methods
244
+ // ─────────────────────────────────────────────────────────────────────────
245
+ /**
246
+ * Create a ConfigurationError for an explicitly specified config file that doesn't exist.
247
+ */
248
+ static fileNotFound(filePath) {
249
+ return new ConfigurationError(`Config file not found: ${filePath}`, {
250
+ configKey: "MCP_CONFIG_FILE",
251
+ recoveryHint: `Ensure the file '${filePath}' exists or remove the MCP_CONFIG_FILE environment variable.`,
252
+ });
253
+ }
254
+ /**
255
+ * Create a ConfigurationError for a file that could not be read.
256
+ */
257
+ static fileReadFailed(filePath, cause) {
258
+ return new ConfigurationError(`Failed to read config file: ${filePath}`, {
259
+ configKey: "MCP_CONFIG_FILE",
260
+ cause,
261
+ recoveryHint: `Check file permissions and path for '${filePath}'.`,
262
+ });
263
+ }
264
+ /**
265
+ * Create a ConfigurationError for a TOML/YAML parse failure.
266
+ */
267
+ static fileParseFailed(filePath, cause) {
268
+ return new ConfigurationError(`Failed to parse config file: ${filePath}`, {
269
+ configKey: "MCP_CONFIG_FILE",
270
+ cause,
271
+ recoveryHint: `Check the syntax of '${filePath}' — ensure it is valid TOML or YAML.`,
272
+ });
273
+ }
274
+ /**
275
+ * Create a ConfigurationError for schema validation failures in a config file.
276
+ *
277
+ * Formats Zod issues into a human-readable message with the file path
278
+ * so users can locate and fix typos or invalid values.
279
+ */
280
+ static fileValidationFailed(filePath, zodError) {
281
+ const issues = zodError.issues.map((i) => ` - ${i.path.join(".")}: ${i.message}`).join("\n");
282
+ const detail = `Validation failed for '${filePath}':\n${issues}`;
283
+ return new ConfigurationError(detail, {
284
+ configKey: "MCP_CONFIG_FILE",
285
+ cause: zodError,
286
+ recoveryHint: "Fix the listed issues in your config file. Use `.strict()` sections to catch typos.",
287
+ });
288
+ }
289
+ /**
290
+ * Create a ConfigurationError for an unsupported config file extension.
291
+ */
292
+ static unsupportedFormat(extension) {
293
+ return new ConfigurationError(`Unsupported config file format: ${extension}. Supported: .toml, .yaml, .yml`, {
294
+ configKey: "MCP_CONFIG_FILE",
295
+ recoveryHint: `Supported formats: .toml, .yaml, .yml`,
296
+ });
297
+ }
298
+ /**
299
+ * Create a ConfigurationError for cross-field validation failures.
300
+ *
301
+ * Used after merging all config sources (env + file + overrides)
302
+ * to validate constraints that span multiple fields.
303
+ */
304
+ static constraintViolation(message, fields) {
305
+ return new ConfigurationError(message, {
306
+ context: { fields },
307
+ recoveryHint: `Check the relationship between: ${fields.join(", ")}`,
308
+ });
309
+ }
310
+ }
311
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/errors/categories/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Base Error Class Module
3
+ *
4
+ * Provides the foundational AppError class that all application errors
5
+ * extend from. Features include:
6
+ *
7
+ * - Unique error ID for tracking and support
8
+ * - Typed error codes for programmatic handling
9
+ * - HTTP status code mapping for REST responses
10
+ * - MCP error code mapping for JSON-RPC responses
11
+ * - Recovery hints for user guidance
12
+ * - Error cause chain support
13
+ * - Serialization for logging
14
+ * - Environment-aware stack traces
15
+ *
16
+ * @module errors/core/base
17
+ */
18
+ import { ErrorCode } from "@modelcontextprotocol/sdk/types.js";
19
+ import { type ErrorCodeType } from "./error-codes.js";
20
+ import type { BaseErrorOptions, SerializedError } from "./types.js";
21
+ /**
22
+ * Base error class for all MCP Server errors.
23
+ *
24
+ * All application errors should extend this class or one of its
25
+ * specialized subclasses. Provides consistent error handling,
26
+ * serialization, and integration with MCP/HTTP error codes.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * throw new AppError('Something went wrong', {
31
+ * code: ErrorCodes.INTERNAL_ERROR,
32
+ * cause: originalError,
33
+ * context: { operation: 'listContainers' },
34
+ * recoveryHint: 'Try again later or check the server status'
35
+ * });
36
+ * ```
37
+ */
38
+ export declare class AppError extends Error {
39
+ /** Unique identifier for this error instance (for tracking/support) */
40
+ readonly errorId: string;
41
+ /** Application-specific error code */
42
+ readonly code: ErrorCodeType | string;
43
+ /** HTTP status code for REST API responses */
44
+ readonly statusCode: number;
45
+ /** MCP error code for JSON-RPC responses */
46
+ readonly mcpCode: ErrorCode;
47
+ /** Additional context for debugging */
48
+ readonly context?: Record<string, unknown> | undefined;
49
+ /** Original error that caused this error */
50
+ readonly cause?: Error | undefined;
51
+ /** Timestamp when the error occurred */
52
+ readonly timestamp: Date;
53
+ /** Recovery hint for users - guidance on how to resolve the error */
54
+ readonly recoveryHint?: string | undefined;
55
+ constructor(message: string, options?: BaseErrorOptions);
56
+ /**
57
+ * Serialize error for logging or API response.
58
+ * Excludes stack trace in production for security.
59
+ *
60
+ * @returns Serialized error object
61
+ */
62
+ toJSON(): SerializedError;
63
+ /**
64
+ * Create a human-readable error message including cause chain.
65
+ *
66
+ * @returns Detailed error string with cause chain
67
+ */
68
+ toDetailedString(): string;
69
+ /**
70
+ * Type guard to check if an error is a AppError instance.
71
+ *
72
+ * @param error - The error to check
73
+ * @returns True if error is a AppError
74
+ */
75
+ static isAppError(error: unknown): error is AppError;
76
+ /**
77
+ * Wrap any error as a AppError.
78
+ * If already a AppError, returns it unchanged.
79
+ *
80
+ * @param error - The error to wrap
81
+ * @param defaultMessage - Message to use if error has none
82
+ * @returns A AppError instance
83
+ */
84
+ static wrap(error: unknown, defaultMessage?: string): AppError;
85
+ /**
86
+ * Create a AppError from an unknown error, preserving type if already AppError.
87
+ * Useful for catch blocks where you want to re-throw with additional context.
88
+ *
89
+ * @param error - The error to wrap
90
+ * @param context - Additional context to add
91
+ * @returns A AppError with merged context
92
+ */
93
+ static wrapWithContext(error: unknown, context: Record<string, unknown>): AppError;
94
+ /**
95
+ * Check if an error is a cancellation error.
96
+ * Handles both OperationCancelledError and native AbortError.
97
+ *
98
+ * @param error - The error to check
99
+ * @returns True if error represents a cancellation
100
+ */
101
+ static isCancellation(error: unknown): boolean;
102
+ }
103
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/errors/core/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMpE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;IAEtC,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAE5B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAEvD,4CAA4C;IAC5C,SAAkB,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAE5C,wCAAwC;IACxC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAEzB,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAyB3D;;;;;OAKG;IACH,MAAM,IAAI,eAAe;IAuCzB;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IA0B1B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ;IAIpD;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,SAAiC,GAAG,QAAQ;IAiBtF;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ;IAclF;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAa/C"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Base Error Class Module
3
+ *
4
+ * Provides the foundational AppError class that all application errors
5
+ * extend from. Features include:
6
+ *
7
+ * - Unique error ID for tracking and support
8
+ * - Typed error codes for programmatic handling
9
+ * - HTTP status code mapping for REST responses
10
+ * - MCP error code mapping for JSON-RPC responses
11
+ * - Recovery hints for user guidance
12
+ * - Error cause chain support
13
+ * - Serialization for logging
14
+ * - Environment-aware stack traces
15
+ *
16
+ * @module errors/core/base
17
+ */
18
+ import { randomUUID } from "node:crypto";
19
+ import { ErrorCode } from "@modelcontextprotocol/sdk/types.js";
20
+ import { ErrorCodes } from "./error-codes.js";
21
+ import { ErrorCodeToHttpStatus } from "./http.js";
22
+ // ============================================================================
23
+ // Base Error Class
24
+ // ============================================================================
25
+ /**
26
+ * Base error class for all MCP Server errors.
27
+ *
28
+ * All application errors should extend this class or one of its
29
+ * specialized subclasses. Provides consistent error handling,
30
+ * serialization, and integration with MCP/HTTP error codes.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * throw new AppError('Something went wrong', {
35
+ * code: ErrorCodes.INTERNAL_ERROR,
36
+ * cause: originalError,
37
+ * context: { operation: 'listContainers' },
38
+ * recoveryHint: 'Try again later or check the server status'
39
+ * });
40
+ * ```
41
+ */
42
+ export class AppError extends Error {
43
+ /** Unique identifier for this error instance (for tracking/support) */
44
+ errorId;
45
+ /** Application-specific error code */
46
+ code;
47
+ /** HTTP status code for REST API responses */
48
+ statusCode;
49
+ /** MCP error code for JSON-RPC responses */
50
+ mcpCode;
51
+ /** Additional context for debugging */
52
+ context;
53
+ /** Original error that caused this error */
54
+ cause;
55
+ /** Timestamp when the error occurred */
56
+ timestamp;
57
+ /** Recovery hint for users - guidance on how to resolve the error */
58
+ recoveryHint;
59
+ constructor(message, options = {}) {
60
+ super(message);
61
+ this.name = this.constructor.name;
62
+ this.errorId = randomUUID();
63
+ this.code = options.code ?? ErrorCodes.INTERNAL_ERROR;
64
+ // @ts-limitation — this.code is ErrorCodeType | string; lookup map requires ErrorCodeType key
65
+ this.statusCode = options.statusCode ?? ErrorCodeToHttpStatus[this.code] ?? 500;
66
+ this.mcpCode = options.mcpCode ?? ErrorCode.InternalError;
67
+ this.cause = options.cause;
68
+ this.context = options.context;
69
+ this.timestamp = new Date();
70
+ this.recoveryHint = options.recoveryHint;
71
+ // Maintain proper stack trace in V8 environments
72
+ /* v8 ignore start - V8-specific runtime feature */
73
+ if (Error.captureStackTrace) {
74
+ Error.captureStackTrace(this, this.constructor);
75
+ }
76
+ /* v8 ignore stop */
77
+ }
78
+ // ─────────────────────────────────────────────────────────────────────────
79
+ // Serialization
80
+ // ─────────────────────────────────────────────────────────────────────────
81
+ /**
82
+ * Serialize error for logging or API response.
83
+ * Excludes stack trace in production for security.
84
+ *
85
+ * @returns Serialized error object
86
+ */
87
+ toJSON() {
88
+ const serialized = {
89
+ name: this.name,
90
+ message: this.message,
91
+ errorId: this.errorId,
92
+ code: this.code,
93
+ statusCode: this.statusCode,
94
+ mcpCode: this.mcpCode,
95
+ timestamp: this.timestamp.toISOString(),
96
+ };
97
+ // Include stack in development only
98
+ if (process.env.NODE_ENV !== "production" && this.stack) {
99
+ serialized.stack = this.stack;
100
+ }
101
+ // Serialize cause if present
102
+ if (this.cause) {
103
+ if (this.cause instanceof AppError) {
104
+ serialized.cause = this.cause.toJSON();
105
+ }
106
+ else {
107
+ serialized.cause = this.cause.message;
108
+ }
109
+ }
110
+ // Include context in development only — prevents leaking internal details
111
+ // (operation names, field names, paths) in production HTTP responses.
112
+ if (process.env.NODE_ENV !== "production" && this.context && Object.keys(this.context).length > 0) {
113
+ serialized.context = this.context;
114
+ }
115
+ // Include recovery hint if present
116
+ if (this.recoveryHint) {
117
+ serialized.recoveryHint = this.recoveryHint;
118
+ }
119
+ return serialized;
120
+ }
121
+ /**
122
+ * Create a human-readable error message including cause chain.
123
+ *
124
+ * @returns Detailed error string with cause chain
125
+ */
126
+ toDetailedString() {
127
+ let result = `${this.name} [${this.code}] (${this.errorId}): ${this.message}`;
128
+ if (this.recoveryHint) {
129
+ result += ` | Hint: ${this.recoveryHint}`;
130
+ }
131
+ if (this.context && Object.keys(this.context).length > 0) {
132
+ result += ` | Context: ${JSON.stringify(this.context)}`;
133
+ }
134
+ if (this.cause) {
135
+ if (this.cause instanceof AppError) {
136
+ result += `\n Caused by: ${this.cause.toDetailedString()}`;
137
+ }
138
+ else {
139
+ result += `\n Caused by: ${this.cause.message}`;
140
+ }
141
+ }
142
+ return result;
143
+ }
144
+ // ─────────────────────────────────────────────────────────────────────────
145
+ // Static Utilities
146
+ // ─────────────────────────────────────────────────────────────────────────
147
+ /**
148
+ * Type guard to check if an error is a AppError instance.
149
+ *
150
+ * @param error - The error to check
151
+ * @returns True if error is a AppError
152
+ */
153
+ static isAppError(error) {
154
+ return error instanceof AppError;
155
+ }
156
+ /**
157
+ * Wrap any error as a AppError.
158
+ * If already a AppError, returns it unchanged.
159
+ *
160
+ * @param error - The error to wrap
161
+ * @param defaultMessage - Message to use if error has none
162
+ * @returns A AppError instance
163
+ */
164
+ static wrap(error, defaultMessage = "An unexpected error occurred") {
165
+ if (error instanceof AppError) {
166
+ return error;
167
+ }
168
+ if (error instanceof Error) {
169
+ return new AppError(error.message || defaultMessage, {
170
+ cause: error,
171
+ code: ErrorCodes.INTERNAL_ERROR,
172
+ });
173
+ }
174
+ return new AppError(String(error) || defaultMessage, {
175
+ code: ErrorCodes.INTERNAL_ERROR,
176
+ });
177
+ }
178
+ /**
179
+ * Create a AppError from an unknown error, preserving type if already AppError.
180
+ * Useful for catch blocks where you want to re-throw with additional context.
181
+ *
182
+ * @param error - The error to wrap
183
+ * @param context - Additional context to add
184
+ * @returns A AppError with merged context
185
+ */
186
+ static wrapWithContext(error, context) {
187
+ const wrappedError = AppError.wrap(error);
188
+ // Merge context and preserve recoveryHint
189
+ return new AppError(wrappedError.message, {
190
+ code: wrappedError.code,
191
+ statusCode: wrappedError.statusCode,
192
+ mcpCode: wrappedError.mcpCode,
193
+ cause: wrappedError.cause,
194
+ context: { ...wrappedError.context, ...context },
195
+ recoveryHint: wrappedError.recoveryHint,
196
+ });
197
+ }
198
+ /**
199
+ * Check if an error is a cancellation error.
200
+ * Handles both OperationCancelledError and native AbortError.
201
+ *
202
+ * @param error - The error to check
203
+ * @returns True if error represents a cancellation
204
+ */
205
+ static isCancellation(error) {
206
+ if (error instanceof Error) {
207
+ // Check for AbortError (from AbortController)
208
+ if (error.name === "AbortError") {
209
+ return true;
210
+ }
211
+ // Check for our cancellation code
212
+ if (error instanceof AppError && error.code === ErrorCodes.OPERATION_CANCELLED) {
213
+ return true;
214
+ }
215
+ }
216
+ return false;
217
+ }
218
+ }
219
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/errors/core/base.ts"],"names":[],"mappings":"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"}