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,177 @@
1
+ /**
2
+ * Secret Scrubber Module
3
+ *
4
+ * Provides utilities for detecting and redacting sensitive information from logs.
5
+ * Handles JWTs, Bearer tokens, and key-value pairs with sensitive keys.
6
+ *
7
+ * @module logger/scrubbing/secret-scrubber
8
+ */
9
+ import { SENSITIVE_KEYS as BASE_SENSITIVE_KEYS, isSensitiveKey as baseSensitiveKeyCheck, } from "../../utils/sensitive-keys.js";
10
+ import { REDACTED_VALUE, JWT_PREFIX } from "../core/constants.js";
11
+ /**
12
+ * Pre-compiled regex patterns for secret scrubbing.
13
+ * Performance optimization: compile once at module load instead of on every log call.
14
+ */
15
+ /** Regex to match JWTs (eyJ...) - three base64 segments separated by dots */
16
+ const JWT_REGEX = new RegExp(`\\b${JWT_PREFIX}[a-zA-Z0-9-_]+\\.[a-zA-Z0-9-_]+\\.[a-zA-Z0-9-_]+`, "g");
17
+ /** Regex to match Bearer tokens */
18
+ const BEARER_REGEX = /\bBearer\s+[a-zA-Z0-9._~+\-/=]+/gi;
19
+ /** Regex to match Basic Auth credentials (Authorization: Basic <base64>) */
20
+ const BASIC_AUTH_REGEX = /\bBasic\s+[A-Za-z0-9+/=]{8,}/gi;
21
+ /** Regex to match key-value pairs with sensitive keys (excluding bearer/authorization) */
22
+ const KV_KEYS = BASE_SENSITIVE_KEYS.filter((k) => !["bearer", "authorization"].includes(k.toLowerCase()));
23
+ const KV_PATTERN = KV_KEYS.join("|");
24
+ // Pre-computed lowercase keys for fast includes() pre-check before applying regex
25
+ const KV_KEYS_LOWER = KV_KEYS.map((k) => k.toLowerCase());
26
+ // Use custom boundary instead of \b — word boundaries treat _ as a word character,
27
+ // so \bapi_key\b fails to match in "my_api_key=secret". Adding _ - . to the boundary
28
+ // class ensures compound keys like my_api_key, app.secret, my-token are matched.
29
+ const KV_REGEX = new RegExp(`(^|[\\s"'{(,;_\\-.])(${KV_PATTERN})(\\s*[:=]\\s*)(["']?)([^\\s"']+)\\4`, "gi");
30
+ /** Regex to match sensitive URL query parameters (?key=value or &key=value) */
31
+ const URL_PARAM_PATTERN = BASE_SENSITIVE_KEYS.filter((k) => !["bearer", "authorization", "key"].includes(k.toLowerCase())).join("|");
32
+ const URL_PARAM_REGEX = new RegExp(`([?&](?:${URL_PARAM_PATTERN})=)([^&\\s]+)`, "gi");
33
+ /** Regex to match credentials in connection strings (scheme://user:pass@host, including IPv6 [::1]) */
34
+ const CONN_STRING_REGEX = /:\/\/([^/:@\s[\]]+|\[[^\]]+\]):([^@\s]+)@/g;
35
+ /** Regex to match AWS access key IDs (AKIA followed by 16 uppercase alphanumeric characters) */
36
+ const AWS_KEY_REGEX = /AKIA[0-9A-Z]{16}/g;
37
+ /**
38
+ * Secret Scrubber class for detecting and redacting sensitive information.
39
+ *
40
+ * Usage:
41
+ * - Create a scrubber: `const scrubber = new SecretScrubber();`
42
+ * - Scrub a string: `scrubber.scrub('token=secret123')` returns `'token=**********'`
43
+ * - Scrub an object: `scrubber.scrubObject({ password: 'secret' })` returns `{ password: '**********' }`
44
+ */
45
+ export class SecretScrubber {
46
+ /**
47
+ * Additional sensitive keys provided at construction time.
48
+ * These bypass the shared blocklist since they are explicitly
49
+ * provided by the consumer as known-sensitive patterns.
50
+ */
51
+ additionalKeys;
52
+ /**
53
+ * Create a new SecretScrubber.
54
+ * @param additionalKeys - Additional keys to consider sensitive
55
+ */
56
+ constructor(additionalKeys = []) {
57
+ this.additionalKeys = additionalKeys;
58
+ }
59
+ /**
60
+ * Scrub secrets from a text string.
61
+ *
62
+ * Handles:
63
+ * - JWTs (eyJ...)
64
+ * - Bearer tokens
65
+ * - Key-value pairs with sensitive keys
66
+ *
67
+ * @param text - The text to scrub
68
+ * @returns The scrubbed text
69
+ */
70
+ scrub(text) {
71
+ let scrubbed = text;
72
+ // 1. Known Secret Formats (High Confidence) - JWT
73
+ scrubbed = scrubbed.replace(JWT_REGEX, REDACTED_VALUE);
74
+ // 2. Common Auth Headers - Bearer token
75
+ // Run before generic KV scrubber to ensure "Bearer <token>" is handled as a unit
76
+ scrubbed = scrubbed.replace(BEARER_REGEX, `Bearer ${REDACTED_VALUE}`);
77
+ // 3. Basic Auth - "Basic <base64>"
78
+ scrubbed = scrubbed.replace(BASIC_AUTH_REGEX, `Basic ${REDACTED_VALUE}`);
79
+ // 4. AWS access key IDs - "AKIA..."
80
+ scrubbed = scrubbed.replace(AWS_KEY_REGEX, REDACTED_VALUE);
81
+ // 5. Connection strings - "scheme://user:pass@host"
82
+ scrubbed = scrubbed.replace(CONN_STRING_REGEX, `://$1:${REDACTED_VALUE}@`);
83
+ // 6. Sensitive URL query parameters - "?password=xxx&api_key=yyy"
84
+ scrubbed = scrubbed.replace(URL_PARAM_REGEX, `$1${REDACTED_VALUE}`);
85
+ // 7. Context-based Scrubbing (Key-Value pairs)
86
+ // Pre-check: skip expensive regex if no sensitive key substring is present
87
+ const lowerScrubbed = scrubbed.toLowerCase();
88
+ if (KV_KEYS_LOWER.some((k) => lowerScrubbed.includes(k))) {
89
+ scrubbed = scrubbed.replace(KV_REGEX, (match, prefix, key, sep, quote, value) => {
90
+ // Don't redact if already redacted
91
+ if (value.includes(REDACTED_VALUE))
92
+ return match;
93
+ return `${prefix}${key}${sep}${quote}${REDACTED_VALUE}${quote}`;
94
+ });
95
+ }
96
+ return scrubbed;
97
+ }
98
+ /**
99
+ * Recursively scrub sensitive keys from an object.
100
+ *
101
+ * Also scrubs string values that may contain embedded secrets
102
+ * (e.g., "password=secret123" patterns).
103
+ *
104
+ * @param obj - The object to scrub
105
+ * @returns A new object with sensitive values redacted
106
+ */
107
+ scrubObject(obj) {
108
+ return this.scrubObjectRecursive(obj, new WeakSet());
109
+ }
110
+ /**
111
+ * Internal recursive scrub with circular reference protection.
112
+ */
113
+ scrubObjectRecursive(obj, visited) {
114
+ if (typeof obj !== "object" || obj === null) {
115
+ // Scrub string values for embedded secrets (e.g., "token=abc123")
116
+ if (typeof obj === "string") {
117
+ return this.scrub(obj);
118
+ }
119
+ return obj;
120
+ }
121
+ // Circular reference protection — prevent stack overflow
122
+ if (visited.has(obj)) {
123
+ return "[Circular]";
124
+ }
125
+ visited.add(obj);
126
+ if (Array.isArray(obj)) {
127
+ return obj.map((item) => this.scrubObjectRecursive(item, visited));
128
+ }
129
+ const redacted = {};
130
+ // @type-narrowing — After null-check and Array.isArray, obj is a plain object; TS cannot narrow unknown to Record
131
+ const objRecord = obj;
132
+ for (const key in objRecord) {
133
+ if (Object.prototype.hasOwnProperty.call(objRecord, key)) {
134
+ if (this.isSensitiveKey(key)) {
135
+ redacted[key] = REDACTED_VALUE;
136
+ }
137
+ else if (typeof objRecord[key] === "object") {
138
+ redacted[key] = this.scrubObjectRecursive(objRecord[key], visited);
139
+ }
140
+ else if (typeof objRecord[key] === "string") {
141
+ // @type-narrowing — typeof === 'string' branch; TS does not narrow Record<string, unknown> values via control flow
142
+ redacted[key] = this.scrub(objRecord[key]);
143
+ }
144
+ else {
145
+ redacted[key] = objRecord[key];
146
+ }
147
+ }
148
+ }
149
+ return redacted;
150
+ }
151
+ /**
152
+ * Check if a key is sensitive.
153
+ *
154
+ * Delegates to the shared utility for base sensitive keys (including
155
+ * blocklist logic). Additional keys provided at construction are checked
156
+ * separately — they bypass the blocklist since they are explicitly
157
+ * declared as sensitive by the consumer.
158
+ *
159
+ * @param key - The key to check
160
+ * @returns true if the key matches a sensitive pattern
161
+ */
162
+ isSensitiveKey(key) {
163
+ // Delegate to shared utility for base sensitive keys (includes blocklist)
164
+ if (baseSensitiveKeyCheck(key))
165
+ return true;
166
+ // Check additional keys — explicitly provided, no blocklist needed
167
+ if (this.additionalKeys.length === 0)
168
+ return false;
169
+ const lowerKey = key.toLowerCase();
170
+ return this.additionalKeys.some((ak) => lowerKey.includes(ak.toLowerCase()));
171
+ }
172
+ }
173
+ /**
174
+ * Default secret scrubber instance.
175
+ */
176
+ export const secretScrubber = new SecretScrubber();
177
+ //# sourceMappingURL=secret-scrubber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-scrubber.js","sourceRoot":"","sources":["../../../src/logger/scrubbing/secret-scrubber.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Base Log Writer Module
3
+ *
4
+ * Defines the abstract base class for all log writers.
5
+ * Writers are responsible for outputting log entries to specific destinations.
6
+ *
7
+ * @module logger/writers/base-writer
8
+ */
9
+ import type { LogLevel, LogWriter } from "../core/types.js";
10
+ /**
11
+ * Abstract base class for log writers.
12
+ * Provides common functionality for all writer implementations.
13
+ */
14
+ export declare abstract class BaseLogWriter implements LogWriter {
15
+ protected enabled: boolean;
16
+ /**
17
+ * Write a log entry to the destination.
18
+ * Must be implemented by subclasses.
19
+ *
20
+ * @param level - The log level
21
+ * @param message - The formatted log message
22
+ * @param component - The component that generated the log
23
+ */
24
+ abstract write(level: LogLevel, message: string, component: string): void;
25
+ /**
26
+ * Close the writer and release any resources.
27
+ * Override in subclasses that need cleanup.
28
+ *
29
+ * @returns Promise that resolves when the writer is closed
30
+ */
31
+ close(): Promise<void>;
32
+ /**
33
+ * Check if the writer is available/ready.
34
+ *
35
+ * @returns true if the writer can accept log entries
36
+ */
37
+ isAvailable(): boolean;
38
+ /**
39
+ * Enable or disable the writer.
40
+ *
41
+ * @param enabled - Whether the writer should be enabled
42
+ */
43
+ setEnabled(enabled: boolean): void;
44
+ }
45
+ //# sourceMappingURL=base-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-writer.d.ts","sourceRoot":"","sources":["../../../src/logger/writers/base-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;;GAGG;AACH,8BAAsB,aAAc,YAAW,SAAS;IACtD,SAAS,CAAC,OAAO,EAAE,OAAO,CAAQ;IAElC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAEzE;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGnC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Base Log Writer Module
3
+ *
4
+ * Defines the abstract base class for all log writers.
5
+ * Writers are responsible for outputting log entries to specific destinations.
6
+ *
7
+ * @module logger/writers/base-writer
8
+ */
9
+ /**
10
+ * Abstract base class for log writers.
11
+ * Provides common functionality for all writer implementations.
12
+ */
13
+ export class BaseLogWriter {
14
+ enabled = true;
15
+ /**
16
+ * Close the writer and release any resources.
17
+ * Override in subclasses that need cleanup.
18
+ *
19
+ * @returns Promise that resolves when the writer is closed
20
+ */
21
+ async close() {
22
+ this.enabled = false;
23
+ }
24
+ /**
25
+ * Check if the writer is available/ready.
26
+ *
27
+ * @returns true if the writer can accept log entries
28
+ */
29
+ isAvailable() {
30
+ return this.enabled;
31
+ }
32
+ /**
33
+ * Enable or disable the writer.
34
+ *
35
+ * @param enabled - Whether the writer should be enabled
36
+ */
37
+ setEnabled(enabled) {
38
+ this.enabled = enabled;
39
+ }
40
+ }
41
+ //# sourceMappingURL=base-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-writer.js","sourceRoot":"","sources":["../../../src/logger/writers/base-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,OAAgB,aAAa;IACvB,OAAO,GAAY,IAAI,CAAC;IAYlC;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Composite Log Writer Module
3
+ *
4
+ * Combines multiple log writers into a single writer interface.
5
+ * Delegates write operations to all registered writers.
6
+ *
7
+ * @module logger/writers/composite-writer
8
+ */
9
+ import type { LogLevel, LogWriter } from "../core/types.js";
10
+ import { BaseLogWriter } from "./base-writer.js";
11
+ /**
12
+ * Composite Writer class that combines multiple writers.
13
+ *
14
+ * This is the primary writer used by the Logger class.
15
+ * It manages multiple output destinations (console, file, MCP)
16
+ * and ensures all enabled writers receive log entries.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const composite = new CompositeWriter();
21
+ * composite.addWriter('console', consoleWriter);
22
+ * composite.addWriter('file', fileWriter);
23
+ * composite.write('info', 'Hello world', 'server'); // Goes to both writers
24
+ * ```
25
+ */
26
+ export declare class CompositeWriter extends BaseLogWriter {
27
+ private writers;
28
+ /**
29
+ * Add a named writer to the composite.
30
+ *
31
+ * @param name - Unique name for the writer
32
+ * @param writer - The writer instance
33
+ */
34
+ addWriter(name: string, writer: LogWriter): void;
35
+ /**
36
+ * Remove a writer by name.
37
+ *
38
+ * @param name - The writer name to remove
39
+ * @returns true if a writer was removed
40
+ */
41
+ removeWriter(name: string): boolean;
42
+ /**
43
+ * Get a writer by name.
44
+ *
45
+ * @param name - The writer name
46
+ * @returns The writer or undefined
47
+ */
48
+ getWriter(name: string): LogWriter | undefined;
49
+ /**
50
+ * Check if a writer exists.
51
+ *
52
+ * @param name - The writer name
53
+ * @returns true if the writer exists
54
+ */
55
+ hasWriter(name: string): boolean;
56
+ /**
57
+ * Write to all enabled writers.
58
+ *
59
+ * @param level - The log level
60
+ * @param message - The formatted log message
61
+ * @param component - The component that generated the log
62
+ */
63
+ write(level: LogLevel, message: string, component: string): void;
64
+ /**
65
+ * Close all writers.
66
+ *
67
+ * @returns Promise that resolves when all writers are closed
68
+ */
69
+ close(): Promise<void>;
70
+ /**
71
+ * Check if any writer is available.
72
+ */
73
+ isAvailable(): boolean;
74
+ /**
75
+ * Get the number of registered writers.
76
+ */
77
+ getWriterCount(): number;
78
+ /**
79
+ * Get all writer names.
80
+ */
81
+ getWriterNames(): string[];
82
+ }
83
+ //# sourceMappingURL=composite-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-writer.d.ts","sourceRoot":"","sources":["../../../src/logger/writers/composite-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,OAAO,CAAqC;IAEpD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAIhD;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI9C;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAehE;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,WAAW,IAAI,OAAO;IAStB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAG3B"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Composite Log Writer Module
3
+ *
4
+ * Combines multiple log writers into a single writer interface.
5
+ * Delegates write operations to all registered writers.
6
+ *
7
+ * @module logger/writers/composite-writer
8
+ */
9
+ import { BaseLogWriter } from "./base-writer.js";
10
+ /**
11
+ * Composite Writer class that combines multiple writers.
12
+ *
13
+ * This is the primary writer used by the Logger class.
14
+ * It manages multiple output destinations (console, file, MCP)
15
+ * and ensures all enabled writers receive log entries.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const composite = new CompositeWriter();
20
+ * composite.addWriter('console', consoleWriter);
21
+ * composite.addWriter('file', fileWriter);
22
+ * composite.write('info', 'Hello world', 'server'); // Goes to both writers
23
+ * ```
24
+ */
25
+ export class CompositeWriter extends BaseLogWriter {
26
+ writers = new Map();
27
+ /**
28
+ * Add a named writer to the composite.
29
+ *
30
+ * @param name - Unique name for the writer
31
+ * @param writer - The writer instance
32
+ */
33
+ addWriter(name, writer) {
34
+ this.writers.set(name, writer);
35
+ }
36
+ /**
37
+ * Remove a writer by name.
38
+ *
39
+ * @param name - The writer name to remove
40
+ * @returns true if a writer was removed
41
+ */
42
+ removeWriter(name) {
43
+ return this.writers.delete(name);
44
+ }
45
+ /**
46
+ * Get a writer by name.
47
+ *
48
+ * @param name - The writer name
49
+ * @returns The writer or undefined
50
+ */
51
+ getWriter(name) {
52
+ return this.writers.get(name);
53
+ }
54
+ /**
55
+ * Check if a writer exists.
56
+ *
57
+ * @param name - The writer name
58
+ * @returns true if the writer exists
59
+ */
60
+ hasWriter(name) {
61
+ return this.writers.has(name);
62
+ }
63
+ /**
64
+ * Write to all enabled writers.
65
+ *
66
+ * @param level - The log level
67
+ * @param message - The formatted log message
68
+ * @param component - The component that generated the log
69
+ */
70
+ write(level, message, component) {
71
+ if (!this.enabled)
72
+ return;
73
+ for (const writer of this.writers.values()) {
74
+ if (writer.isAvailable()) {
75
+ try {
76
+ writer.write(level, message, component);
77
+ }
78
+ catch {
79
+ // Individual writer failure must not break the pipeline.
80
+ // Remaining writers continue to receive log output.
81
+ }
82
+ }
83
+ }
84
+ }
85
+ /**
86
+ * Close all writers.
87
+ *
88
+ * @returns Promise that resolves when all writers are closed
89
+ */
90
+ async close() {
91
+ const closePromises = Array.from(this.writers.values()).map((writer) => writer.close());
92
+ await Promise.allSettled(closePromises);
93
+ this.writers.clear();
94
+ await super.close();
95
+ }
96
+ /**
97
+ * Check if any writer is available.
98
+ */
99
+ isAvailable() {
100
+ if (!this.enabled)
101
+ return false;
102
+ for (const writer of this.writers.values()) {
103
+ if (writer.isAvailable())
104
+ return true;
105
+ }
106
+ return false;
107
+ }
108
+ /**
109
+ * Get the number of registered writers.
110
+ */
111
+ getWriterCount() {
112
+ return this.writers.size;
113
+ }
114
+ /**
115
+ * Get all writer names.
116
+ */
117
+ getWriterNames() {
118
+ return Array.from(this.writers.keys());
119
+ }
120
+ }
121
+ //# sourceMappingURL=composite-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-writer.js","sourceRoot":"","sources":["../../../src/logger/writers/composite-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;IACxC,OAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IAEpD;;;;;OAKG;IACH,SAAS,CAAC,IAAY,EAAE,MAAiB;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAe,EAAE,OAAe,EAAE,SAAiB;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC1C,CAAC;gBAAC,MAAM,CAAC;oBACP,yDAAyD;oBACzD,oDAAoD;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,WAAW,EAAE;gBAAE,OAAO,IAAI,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Console Log Writer Module
3
+ *
4
+ * Writes log entries to stdout/stderr based on transport mode and log level.
5
+ * In stdio mode, ALL logs go to stderr to avoid corrupting JSON-RPC on stdout.
6
+ * In HTTP mode, info/debug go to stdout, warn/error go to stderr.
7
+ *
8
+ * @module logger/writers/console-writer
9
+ */
10
+ import type { LogLevel, TransportMode } from "../core/types.js";
11
+ import { BaseLogWriter } from "./base-writer.js";
12
+ /**
13
+ * Configuration for the console writer.
14
+ */
15
+ export interface ConsoleWriterConfig {
16
+ /** Transport mode determines output stream routing */
17
+ transport: TransportMode;
18
+ }
19
+ /**
20
+ * Console Writer class for terminal output.
21
+ *
22
+ * Handles the complexity of MCP transport modes:
23
+ * - **stdio mode**: ALL output goes to stderr (stdout is reserved for JSON-RPC)
24
+ * - **http/https mode**: Standard behavior (info/debug → stdout, warn/error → stderr)
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const writer = new ConsoleWriter({ transport: 'stdio' });
29
+ * writer.write('info', 'Hello world', 'server'); // Goes to stderr
30
+ * ```
31
+ */
32
+ export declare class ConsoleWriter extends BaseLogWriter {
33
+ private transport;
34
+ /**
35
+ * Create a new ConsoleWriter.
36
+ * @param config - Writer configuration
37
+ */
38
+ constructor(config: ConsoleWriterConfig);
39
+ /**
40
+ * Write a log message to the appropriate console stream.
41
+ *
42
+ * @param level - The log level
43
+ * @param message - The formatted log message
44
+ * @param _component - The component (unused, but part of interface)
45
+ */
46
+ write(level: LogLevel, message: string, _component: string): void;
47
+ /**
48
+ * Update the transport mode.
49
+ * Useful when transport changes at runtime.
50
+ *
51
+ * @param transport - The new transport mode
52
+ */
53
+ setTransport(transport: TransportMode): void;
54
+ /**
55
+ * Get the current transport mode.
56
+ */
57
+ getTransport(): TransportMode;
58
+ }
59
+ //# sourceMappingURL=console-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-writer.d.ts","sourceRoot":"","sources":["../../../src/logger/writers/console-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,SAAS,CAAgB;IAEjC;;;OAGG;gBACS,MAAM,EAAE,mBAAmB;IAKvC;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAiBjE;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAI5C;;OAEG;IACH,YAAY,IAAI,aAAa;CAG9B"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Console Log Writer Module
3
+ *
4
+ * Writes log entries to stdout/stderr based on transport mode and log level.
5
+ * In stdio mode, ALL logs go to stderr to avoid corrupting JSON-RPC on stdout.
6
+ * In HTTP mode, info/debug go to stdout, warn/error go to stderr.
7
+ *
8
+ * @module logger/writers/console-writer
9
+ */
10
+ import { BaseLogWriter } from "./base-writer.js";
11
+ /**
12
+ * Console Writer class for terminal output.
13
+ *
14
+ * Handles the complexity of MCP transport modes:
15
+ * - **stdio mode**: ALL output goes to stderr (stdout is reserved for JSON-RPC)
16
+ * - **http/https mode**: Standard behavior (info/debug → stdout, warn/error → stderr)
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const writer = new ConsoleWriter({ transport: 'stdio' });
21
+ * writer.write('info', 'Hello world', 'server'); // Goes to stderr
22
+ * ```
23
+ */
24
+ export class ConsoleWriter extends BaseLogWriter {
25
+ transport;
26
+ /**
27
+ * Create a new ConsoleWriter.
28
+ * @param config - Writer configuration
29
+ */
30
+ constructor(config) {
31
+ super();
32
+ this.transport = config.transport;
33
+ }
34
+ /**
35
+ * Write a log message to the appropriate console stream.
36
+ *
37
+ * @param level - The log level
38
+ * @param message - The formatted log message
39
+ * @param _component - The component (unused, but part of interface)
40
+ */
41
+ write(level, message, _component) {
42
+ if (!this.enabled)
43
+ return;
44
+ // In stdio mode, MUST write to stderr to avoid corrupting JSON-RPC on stdout
45
+ if (this.transport === "stdio") {
46
+ process.stderr.write(message + "\n");
47
+ return;
48
+ }
49
+ // In HTTP/HTTPS mode, use standard console behavior
50
+ if (level === "error" || level === "warn") {
51
+ process.stderr.write(message + "\n");
52
+ }
53
+ else {
54
+ process.stdout.write(message + "\n");
55
+ }
56
+ }
57
+ /**
58
+ * Update the transport mode.
59
+ * Useful when transport changes at runtime.
60
+ *
61
+ * @param transport - The new transport mode
62
+ */
63
+ setTransport(transport) {
64
+ this.transport = transport;
65
+ }
66
+ /**
67
+ * Get the current transport mode.
68
+ */
69
+ getTransport() {
70
+ return this.transport;
71
+ }
72
+ }
73
+ //# sourceMappingURL=console-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-writer.js","sourceRoot":"","sources":["../../../src/logger/writers/console-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUjD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAa;IACtC,SAAS,CAAgB;IAEjC;;;OAGG;IACH,YAAY,MAA2B;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAe,EAAE,OAAe,EAAE,UAAkB;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,6EAA6E;QAC7E,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,oDAAoD;QACpD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}