@cyanheads/mcp-ts-core 0.1.0-beta.12

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 (485) hide show
  1. package/CLAUDE.md +583 -0
  2. package/LICENSE +201 -0
  3. package/README.md +287 -0
  4. package/biome.json +103 -0
  5. package/dist/app.d.ts +82 -0
  6. package/dist/app.d.ts.map +1 -0
  7. package/dist/app.js +222 -0
  8. package/dist/app.js.map +1 -0
  9. package/dist/cli/init.d.ts +8 -0
  10. package/dist/cli/init.d.ts.map +1 -0
  11. package/dist/cli/init.js +161 -0
  12. package/dist/cli/init.js.map +1 -0
  13. package/dist/config/index.d.ts +349 -0
  14. package/dist/config/index.d.ts.map +1 -0
  15. package/dist/config/index.js +464 -0
  16. package/dist/config/index.js.map +1 -0
  17. package/dist/context.d.ts +119 -0
  18. package/dist/context.d.ts.map +1 -0
  19. package/dist/context.js +144 -0
  20. package/dist/context.js.map +1 -0
  21. package/dist/index.d.ts +8 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +9 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/mcp-server/prompts/prompt-registration.d.ts +33 -0
  26. package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -0
  27. package/dist/mcp-server/prompts/prompt-registration.js +91 -0
  28. package/dist/mcp-server/prompts/prompt-registration.js.map +1 -0
  29. package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts +49 -0
  30. package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts.map +1 -0
  31. package/dist/mcp-server/prompts/utils/newPromptDefinition.js +39 -0
  32. package/dist/mcp-server/prompts/utils/newPromptDefinition.js.map +1 -0
  33. package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +37 -0
  34. package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -0
  35. package/dist/mcp-server/prompts/utils/promptDefinition.js +2 -0
  36. package/dist/mcp-server/prompts/utils/promptDefinition.js.map +1 -0
  37. package/dist/mcp-server/resources/resource-registration.d.ts +27 -0
  38. package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -0
  39. package/dist/mcp-server/resources/resource-registration.js +85 -0
  40. package/dist/mcp-server/resources/resource-registration.js.map +1 -0
  41. package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts +84 -0
  42. package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts.map +1 -0
  43. package/dist/mcp-server/resources/utils/newResourceDefinition.js +40 -0
  44. package/dist/mcp-server/resources/utils/newResourceDefinition.js.map +1 -0
  45. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts +32 -0
  46. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts.map +1 -0
  47. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js +103 -0
  48. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js.map +1 -0
  49. package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +94 -0
  50. package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -0
  51. package/dist/mcp-server/resources/utils/resourceDefinition.js +2 -0
  52. package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -0
  53. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +14 -0
  54. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -0
  55. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +111 -0
  56. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -0
  57. package/dist/mcp-server/roots/roots-registration.d.ts +22 -0
  58. package/dist/mcp-server/roots/roots-registration.d.ts.map +1 -0
  59. package/dist/mcp-server/roots/roots-registration.js +25 -0
  60. package/dist/mcp-server/roots/roots-registration.js.map +1 -0
  61. package/dist/mcp-server/server.d.ts +34 -0
  62. package/dist/mcp-server/server.d.ts.map +1 -0
  63. package/dist/mcp-server/server.js +62 -0
  64. package/dist/mcp-server/server.js.map +1 -0
  65. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts +42 -0
  66. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts.map +1 -0
  67. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js +70 -0
  68. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js.map +1 -0
  69. package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts +109 -0
  70. package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts.map +1 -0
  71. package/dist/mcp-server/tasks/core/storageBackedTaskStore.js +209 -0
  72. package/dist/mcp-server/tasks/core/storageBackedTaskStore.js.map +1 -0
  73. package/dist/mcp-server/tasks/core/taskManager.d.ts +103 -0
  74. package/dist/mcp-server/tasks/core/taskManager.d.ts.map +1 -0
  75. package/dist/mcp-server/tasks/core/taskManager.js +144 -0
  76. package/dist/mcp-server/tasks/core/taskManager.js.map +1 -0
  77. package/dist/mcp-server/tasks/core/taskTypes.d.ts +11 -0
  78. package/dist/mcp-server/tasks/core/taskTypes.d.ts.map +1 -0
  79. package/dist/mcp-server/tasks/core/taskTypes.js +13 -0
  80. package/dist/mcp-server/tasks/core/taskTypes.js.map +1 -0
  81. package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts +108 -0
  82. package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts.map +1 -0
  83. package/dist/mcp-server/tasks/utils/taskToolDefinition.js +14 -0
  84. package/dist/mcp-server/tasks/utils/taskToolDefinition.js.map +1 -0
  85. package/dist/mcp-server/tools/tool-registration.d.ts +49 -0
  86. package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -0
  87. package/dist/mcp-server/tools/tool-registration.js +269 -0
  88. package/dist/mcp-server/tools/tool-registration.js.map +1 -0
  89. package/dist/mcp-server/tools/utils/newToolDefinition.d.ts +73 -0
  90. package/dist/mcp-server/tools/utils/newToolDefinition.d.ts.map +1 -0
  91. package/dist/mcp-server/tools/utils/newToolDefinition.js +45 -0
  92. package/dist/mcp-server/tools/utils/newToolDefinition.js.map +1 -0
  93. package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts +33 -0
  94. package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts.map +1 -0
  95. package/dist/mcp-server/tools/utils/newToolHandlerFactory.js +107 -0
  96. package/dist/mcp-server/tools/utils/newToolHandlerFactory.js.map +1 -0
  97. package/dist/mcp-server/tools/utils/toolDefinition.d.ts +118 -0
  98. package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -0
  99. package/dist/mcp-server/tools/utils/toolDefinition.js +2 -0
  100. package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -0
  101. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +34 -0
  102. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -0
  103. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +68 -0
  104. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -0
  105. package/dist/mcp-server/transports/ITransport.d.ts +15 -0
  106. package/dist/mcp-server/transports/ITransport.d.ts.map +1 -0
  107. package/dist/mcp-server/transports/ITransport.js +2 -0
  108. package/dist/mcp-server/transports/ITransport.js.map +1 -0
  109. package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
  110. package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
  111. package/dist/mcp-server/transports/auth/authFactory.js +43 -0
  112. package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
  113. package/dist/mcp-server/transports/auth/authMiddleware.d.ts +24 -0
  114. package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
  115. package/dist/mcp-server/transports/auth/authMiddleware.js +69 -0
  116. package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
  117. package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
  118. package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
  119. package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
  120. package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
  121. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +19 -0
  122. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
  123. package/dist/mcp-server/transports/auth/lib/authTypes.js +2 -0
  124. package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
  125. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +18 -0
  126. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
  127. package/dist/mcp-server/transports/auth/lib/authUtils.js +64 -0
  128. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
  129. package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts +25 -0
  130. package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts.map +1 -0
  131. package/dist/mcp-server/transports/auth/lib/checkScopes.js +34 -0
  132. package/dist/mcp-server/transports/auth/lib/checkScopes.js.map +1 -0
  133. package/dist/mcp-server/transports/auth/lib/claimParser.d.ts +34 -0
  134. package/dist/mcp-server/transports/auth/lib/claimParser.d.ts.map +1 -0
  135. package/dist/mcp-server/transports/auth/lib/claimParser.js +58 -0
  136. package/dist/mcp-server/transports/auth/lib/claimParser.js.map +1 -0
  137. package/dist/mcp-server/transports/auth/lib/withAuth.d.ts +25 -0
  138. package/dist/mcp-server/transports/auth/lib/withAuth.d.ts.map +1 -0
  139. package/dist/mcp-server/transports/auth/lib/withAuth.js +30 -0
  140. package/dist/mcp-server/transports/auth/lib/withAuth.js.map +1 -0
  141. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
  142. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
  143. package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
  144. package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
  145. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +14 -0
  146. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
  147. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +86 -0
  148. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
  149. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +14 -0
  150. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
  151. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +113 -0
  152. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
  153. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
  154. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
  155. package/dist/mcp-server/transports/http/httpErrorHandler.js +112 -0
  156. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
  157. package/dist/mcp-server/transports/http/httpTransport.d.ts +47 -0
  158. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
  159. package/dist/mcp-server/transports/http/httpTransport.js +396 -0
  160. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
  161. package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
  162. package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
  163. package/dist/mcp-server/transports/http/httpTypes.js +2 -0
  164. package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
  165. package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts +21 -0
  166. package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -0
  167. package/dist/mcp-server/transports/http/protectedResourceMetadata.js +44 -0
  168. package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -0
  169. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts +33 -0
  170. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts.map +1 -0
  171. package/dist/mcp-server/transports/http/sessionIdUtils.js +54 -0
  172. package/dist/mcp-server/transports/http/sessionIdUtils.js.map +1 -0
  173. package/dist/mcp-server/transports/http/sessionStore.d.ts +87 -0
  174. package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -0
  175. package/dist/mcp-server/transports/http/sessionStore.js +209 -0
  176. package/dist/mcp-server/transports/http/sessionStore.js.map +1 -0
  177. package/dist/mcp-server/transports/manager.d.ts +22 -0
  178. package/dist/mcp-server/transports/manager.d.ts.map +1 -0
  179. package/dist/mcp-server/transports/manager.js +62 -0
  180. package/dist/mcp-server/transports/manager.js.map +1 -0
  181. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +44 -0
  182. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
  183. package/dist/mcp-server/transports/stdio/stdioTransport.js +63 -0
  184. package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
  185. package/dist/services/graph/core/GraphService.d.ts +205 -0
  186. package/dist/services/graph/core/GraphService.d.ts.map +1 -0
  187. package/dist/services/graph/core/GraphService.js +231 -0
  188. package/dist/services/graph/core/GraphService.js.map +1 -0
  189. package/dist/services/graph/core/IGraphProvider.d.ts +295 -0
  190. package/dist/services/graph/core/IGraphProvider.d.ts.map +1 -0
  191. package/dist/services/graph/core/IGraphProvider.js +8 -0
  192. package/dist/services/graph/core/IGraphProvider.js.map +1 -0
  193. package/dist/services/graph/types.d.ts +107 -0
  194. package/dist/services/graph/types.d.ts.map +1 -0
  195. package/dist/services/graph/types.js +8 -0
  196. package/dist/services/graph/types.js.map +1 -0
  197. package/dist/services/llm/core/ILlmProvider.d.ts +86 -0
  198. package/dist/services/llm/core/ILlmProvider.d.ts.map +1 -0
  199. package/dist/services/llm/core/ILlmProvider.js +2 -0
  200. package/dist/services/llm/core/ILlmProvider.js.map +1 -0
  201. package/dist/services/llm/providers/openrouter.provider.d.ts +187 -0
  202. package/dist/services/llm/providers/openrouter.provider.d.ts.map +1 -0
  203. package/dist/services/llm/providers/openrouter.provider.js +302 -0
  204. package/dist/services/llm/providers/openrouter.provider.js.map +1 -0
  205. package/dist/services/llm/types.d.ts +16 -0
  206. package/dist/services/llm/types.d.ts.map +1 -0
  207. package/dist/services/llm/types.js +9 -0
  208. package/dist/services/llm/types.js.map +1 -0
  209. package/dist/services/speech/core/ISpeechProvider.d.ts +92 -0
  210. package/dist/services/speech/core/ISpeechProvider.d.ts.map +1 -0
  211. package/dist/services/speech/core/ISpeechProvider.js +34 -0
  212. package/dist/services/speech/core/ISpeechProvider.js.map +1 -0
  213. package/dist/services/speech/core/SpeechService.d.ts +87 -0
  214. package/dist/services/speech/core/SpeechService.d.ts.map +1 -0
  215. package/dist/services/speech/core/SpeechService.js +135 -0
  216. package/dist/services/speech/core/SpeechService.js.map +1 -0
  217. package/dist/services/speech/providers/elevenlabs.provider.d.ts +77 -0
  218. package/dist/services/speech/providers/elevenlabs.provider.d.ts.map +1 -0
  219. package/dist/services/speech/providers/elevenlabs.provider.js +199 -0
  220. package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -0
  221. package/dist/services/speech/providers/whisper.provider.d.ts +94 -0
  222. package/dist/services/speech/providers/whisper.provider.d.ts.map +1 -0
  223. package/dist/services/speech/providers/whisper.provider.js +240 -0
  224. package/dist/services/speech/providers/whisper.provider.js.map +1 -0
  225. package/dist/services/speech/types.d.ts +173 -0
  226. package/dist/services/speech/types.d.ts.map +1 -0
  227. package/dist/services/speech/types.js +8 -0
  228. package/dist/services/speech/types.js.map +1 -0
  229. package/dist/storage/core/IStorageProvider.d.ts +159 -0
  230. package/dist/storage/core/IStorageProvider.d.ts.map +1 -0
  231. package/dist/storage/core/IStorageProvider.js +2 -0
  232. package/dist/storage/core/IStorageProvider.js.map +1 -0
  233. package/dist/storage/core/StorageService.d.ts +22 -0
  234. package/dist/storage/core/StorageService.d.ts.map +1 -0
  235. package/dist/storage/core/StorageService.js +151 -0
  236. package/dist/storage/core/StorageService.js.map +1 -0
  237. package/dist/storage/core/storageFactory.d.ts +66 -0
  238. package/dist/storage/core/storageFactory.d.ts.map +1 -0
  239. package/dist/storage/core/storageFactory.js +122 -0
  240. package/dist/storage/core/storageFactory.js.map +1 -0
  241. package/dist/storage/core/storageValidation.d.ts +77 -0
  242. package/dist/storage/core/storageValidation.d.ts.map +1 -0
  243. package/dist/storage/core/storageValidation.js +303 -0
  244. package/dist/storage/core/storageValidation.js.map +1 -0
  245. package/dist/storage/providers/cloudflare/d1Provider.d.ts +94 -0
  246. package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -0
  247. package/dist/storage/providers/cloudflare/d1Provider.js +347 -0
  248. package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -0
  249. package/dist/storage/providers/cloudflare/kvProvider.d.ts +21 -0
  250. package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -0
  251. package/dist/storage/providers/cloudflare/kvProvider.js +183 -0
  252. package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -0
  253. package/dist/storage/providers/cloudflare/r2Provider.d.ts +28 -0
  254. package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -0
  255. package/dist/storage/providers/cloudflare/r2Provider.js +222 -0
  256. package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -0
  257. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +20 -0
  258. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -0
  259. package/dist/storage/providers/fileSystem/fileSystemProvider.js +282 -0
  260. package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -0
  261. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +21 -0
  262. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -0
  263. package/dist/storage/providers/inMemory/inMemoryProvider.js +139 -0
  264. package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -0
  265. package/dist/storage/providers/supabase/supabase.types.d.ts +49 -0
  266. package/dist/storage/providers/supabase/supabase.types.d.ts.map +1 -0
  267. package/dist/storage/providers/supabase/supabase.types.js +8 -0
  268. package/dist/storage/providers/supabase/supabase.types.js.map +1 -0
  269. package/dist/storage/providers/supabase/supabaseProvider.d.ts +24 -0
  270. package/dist/storage/providers/supabase/supabaseProvider.d.ts.map +1 -0
  271. package/dist/storage/providers/supabase/supabaseProvider.js +209 -0
  272. package/dist/storage/providers/supabase/supabaseProvider.js.map +1 -0
  273. package/dist/testing/index.d.ts +53 -0
  274. package/dist/testing/index.d.ts.map +1 -0
  275. package/dist/testing/index.js +132 -0
  276. package/dist/testing/index.js.map +1 -0
  277. package/dist/types-global/errors.d.ts +83 -0
  278. package/dist/types-global/errors.d.ts.map +1 -0
  279. package/dist/types-global/errors.js +113 -0
  280. package/dist/types-global/errors.js.map +1 -0
  281. package/dist/utils/formatting/diffFormatter.d.ts +227 -0
  282. package/dist/utils/formatting/diffFormatter.d.ts.map +1 -0
  283. package/dist/utils/formatting/diffFormatter.js +369 -0
  284. package/dist/utils/formatting/diffFormatter.js.map +1 -0
  285. package/dist/utils/formatting/index.d.ts +9 -0
  286. package/dist/utils/formatting/index.d.ts.map +1 -0
  287. package/dist/utils/formatting/index.js +9 -0
  288. package/dist/utils/formatting/index.js.map +1 -0
  289. package/dist/utils/formatting/markdownBuilder.d.ts +543 -0
  290. package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
  291. package/dist/utils/formatting/markdownBuilder.js +674 -0
  292. package/dist/utils/formatting/markdownBuilder.js.map +1 -0
  293. package/dist/utils/formatting/tableFormatter.d.ts +261 -0
  294. package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
  295. package/dist/utils/formatting/tableFormatter.js +456 -0
  296. package/dist/utils/formatting/tableFormatter.js.map +1 -0
  297. package/dist/utils/formatting/treeFormatter.d.ts +344 -0
  298. package/dist/utils/formatting/treeFormatter.d.ts.map +1 -0
  299. package/dist/utils/formatting/treeFormatter.js +400 -0
  300. package/dist/utils/formatting/treeFormatter.js.map +1 -0
  301. package/dist/utils/internal/encoding.d.ts +42 -0
  302. package/dist/utils/internal/encoding.d.ts.map +1 -0
  303. package/dist/utils/internal/encoding.js +87 -0
  304. package/dist/utils/internal/encoding.js.map +1 -0
  305. package/dist/utils/internal/error-handler/errorHandler.d.ts +140 -0
  306. package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -0
  307. package/dist/utils/internal/error-handler/errorHandler.js +318 -0
  308. package/dist/utils/internal/error-handler/errorHandler.js.map +1 -0
  309. package/dist/utils/internal/error-handler/helpers.d.ts +98 -0
  310. package/dist/utils/internal/error-handler/helpers.d.ts.map +1 -0
  311. package/dist/utils/internal/error-handler/helpers.js +214 -0
  312. package/dist/utils/internal/error-handler/helpers.js.map +1 -0
  313. package/dist/utils/internal/error-handler/mappings.d.ts +85 -0
  314. package/dist/utils/internal/error-handler/mappings.d.ts.map +1 -0
  315. package/dist/utils/internal/error-handler/mappings.js +234 -0
  316. package/dist/utils/internal/error-handler/mappings.js.map +1 -0
  317. package/dist/utils/internal/error-handler/types.d.ts +160 -0
  318. package/dist/utils/internal/error-handler/types.d.ts.map +1 -0
  319. package/dist/utils/internal/error-handler/types.js +6 -0
  320. package/dist/utils/internal/error-handler/types.js.map +1 -0
  321. package/dist/utils/internal/health.d.ts +60 -0
  322. package/dist/utils/internal/health.d.ts.map +1 -0
  323. package/dist/utils/internal/health.js +46 -0
  324. package/dist/utils/internal/health.js.map +1 -0
  325. package/dist/utils/internal/logger.d.ts +300 -0
  326. package/dist/utils/internal/logger.d.ts.map +1 -0
  327. package/dist/utils/internal/logger.js +573 -0
  328. package/dist/utils/internal/logger.js.map +1 -0
  329. package/dist/utils/internal/performance.d.ts +78 -0
  330. package/dist/utils/internal/performance.d.ts.map +1 -0
  331. package/dist/utils/internal/performance.js +227 -0
  332. package/dist/utils/internal/performance.js.map +1 -0
  333. package/dist/utils/internal/requestContext.d.ts +200 -0
  334. package/dist/utils/internal/requestContext.d.ts.map +1 -0
  335. package/dist/utils/internal/requestContext.js +163 -0
  336. package/dist/utils/internal/requestContext.js.map +1 -0
  337. package/dist/utils/internal/runtime.d.ts +49 -0
  338. package/dist/utils/internal/runtime.d.ts.map +1 -0
  339. package/dist/utils/internal/runtime.js +90 -0
  340. package/dist/utils/internal/runtime.js.map +1 -0
  341. package/dist/utils/internal/startupBanner.d.ts +23 -0
  342. package/dist/utils/internal/startupBanner.d.ts.map +1 -0
  343. package/dist/utils/internal/startupBanner.js +34 -0
  344. package/dist/utils/internal/startupBanner.js.map +1 -0
  345. package/dist/utils/metrics/tokenCounter.d.ts +97 -0
  346. package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
  347. package/dist/utils/metrics/tokenCounter.js +162 -0
  348. package/dist/utils/metrics/tokenCounter.js.map +1 -0
  349. package/dist/utils/network/fetchWithTimeout.d.ts +91 -0
  350. package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
  351. package/dist/utils/network/fetchWithTimeout.js +305 -0
  352. package/dist/utils/network/fetchWithTimeout.js.map +1 -0
  353. package/dist/utils/pagination/pagination.d.ts +157 -0
  354. package/dist/utils/pagination/pagination.d.ts.map +1 -0
  355. package/dist/utils/pagination/pagination.js +191 -0
  356. package/dist/utils/pagination/pagination.js.map +1 -0
  357. package/dist/utils/parsing/csvParser.d.ts +84 -0
  358. package/dist/utils/parsing/csvParser.d.ts.map +1 -0
  359. package/dist/utils/parsing/csvParser.js +132 -0
  360. package/dist/utils/parsing/csvParser.js.map +1 -0
  361. package/dist/utils/parsing/dateParser.d.ts +103 -0
  362. package/dist/utils/parsing/dateParser.d.ts.map +1 -0
  363. package/dist/utils/parsing/dateParser.js +142 -0
  364. package/dist/utils/parsing/dateParser.js.map +1 -0
  365. package/dist/utils/parsing/frontmatterParser.d.ts +91 -0
  366. package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -0
  367. package/dist/utils/parsing/frontmatterParser.js +163 -0
  368. package/dist/utils/parsing/frontmatterParser.js.map +1 -0
  369. package/dist/utils/parsing/index.d.ts +15 -0
  370. package/dist/utils/parsing/index.d.ts.map +1 -0
  371. package/dist/utils/parsing/index.js +15 -0
  372. package/dist/utils/parsing/index.js.map +1 -0
  373. package/dist/utils/parsing/jsonParser.d.ts +115 -0
  374. package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
  375. package/dist/utils/parsing/jsonParser.js +177 -0
  376. package/dist/utils/parsing/jsonParser.js.map +1 -0
  377. package/dist/utils/parsing/pdfParser.d.ts +563 -0
  378. package/dist/utils/parsing/pdfParser.d.ts.map +1 -0
  379. package/dist/utils/parsing/pdfParser.js +775 -0
  380. package/dist/utils/parsing/pdfParser.js.map +1 -0
  381. package/dist/utils/parsing/thinkBlock.d.ts +31 -0
  382. package/dist/utils/parsing/thinkBlock.d.ts.map +1 -0
  383. package/dist/utils/parsing/thinkBlock.js +31 -0
  384. package/dist/utils/parsing/thinkBlock.js.map +1 -0
  385. package/dist/utils/parsing/xmlParser.d.ts +69 -0
  386. package/dist/utils/parsing/xmlParser.d.ts.map +1 -0
  387. package/dist/utils/parsing/xmlParser.js +140 -0
  388. package/dist/utils/parsing/xmlParser.js.map +1 -0
  389. package/dist/utils/parsing/yamlParser.d.ts +64 -0
  390. package/dist/utils/parsing/yamlParser.d.ts.map +1 -0
  391. package/dist/utils/parsing/yamlParser.js +129 -0
  392. package/dist/utils/parsing/yamlParser.js.map +1 -0
  393. package/dist/utils/scheduling/scheduler.d.ts +174 -0
  394. package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
  395. package/dist/utils/scheduling/scheduler.js +248 -0
  396. package/dist/utils/scheduling/scheduler.js.map +1 -0
  397. package/dist/utils/security/idGenerator.d.ts +189 -0
  398. package/dist/utils/security/idGenerator.d.ts.map +1 -0
  399. package/dist/utils/security/idGenerator.js +301 -0
  400. package/dist/utils/security/idGenerator.js.map +1 -0
  401. package/dist/utils/security/index.d.ts +8 -0
  402. package/dist/utils/security/index.d.ts.map +1 -0
  403. package/dist/utils/security/index.js +8 -0
  404. package/dist/utils/security/index.js.map +1 -0
  405. package/dist/utils/security/rateLimiter.d.ts +171 -0
  406. package/dist/utils/security/rateLimiter.d.ts.map +1 -0
  407. package/dist/utils/security/rateLimiter.js +294 -0
  408. package/dist/utils/security/rateLimiter.js.map +1 -0
  409. package/dist/utils/security/sanitization.d.ts +430 -0
  410. package/dist/utils/security/sanitization.d.ts.map +1 -0
  411. package/dist/utils/security/sanitization.js +759 -0
  412. package/dist/utils/security/sanitization.js.map +1 -0
  413. package/dist/utils/telemetry/index.d.ts +12 -0
  414. package/dist/utils/telemetry/index.d.ts.map +1 -0
  415. package/dist/utils/telemetry/index.js +12 -0
  416. package/dist/utils/telemetry/index.js.map +1 -0
  417. package/dist/utils/telemetry/instrumentation.d.ts +62 -0
  418. package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
  419. package/dist/utils/telemetry/instrumentation.js +223 -0
  420. package/dist/utils/telemetry/instrumentation.js.map +1 -0
  421. package/dist/utils/telemetry/metrics.d.ts +170 -0
  422. package/dist/utils/telemetry/metrics.d.ts.map +1 -0
  423. package/dist/utils/telemetry/metrics.js +205 -0
  424. package/dist/utils/telemetry/metrics.js.map +1 -0
  425. package/dist/utils/telemetry/semconv.d.ts +147 -0
  426. package/dist/utils/telemetry/semconv.d.ts.map +1 -0
  427. package/dist/utils/telemetry/semconv.js +159 -0
  428. package/dist/utils/telemetry/semconv.js.map +1 -0
  429. package/dist/utils/telemetry/trace.d.ts +141 -0
  430. package/dist/utils/telemetry/trace.d.ts.map +1 -0
  431. package/dist/utils/telemetry/trace.js +193 -0
  432. package/dist/utils/telemetry/trace.js.map +1 -0
  433. package/dist/utils/types/guards.d.ts +209 -0
  434. package/dist/utils/types/guards.d.ts.map +1 -0
  435. package/dist/utils/types/guards.js +229 -0
  436. package/dist/utils/types/guards.js.map +1 -0
  437. package/dist/utils/types/index.d.ts +6 -0
  438. package/dist/utils/types/index.d.ts.map +1 -0
  439. package/dist/utils/types/index.js +6 -0
  440. package/dist/utils/types/index.js.map +1 -0
  441. package/dist/worker.d.ts +59 -0
  442. package/dist/worker.d.ts.map +1 -0
  443. package/dist/worker.js +216 -0
  444. package/dist/worker.js.map +1 -0
  445. package/package.json +377 -0
  446. package/skills/README.md +38 -0
  447. package/skills/add-export/SKILL.md +49 -0
  448. package/skills/add-prompt/SKILL.md +97 -0
  449. package/skills/add-provider/SKILL.md +53 -0
  450. package/skills/add-resource/SKILL.md +107 -0
  451. package/skills/add-service/SKILL.md +113 -0
  452. package/skills/add-tool/SKILL.md +110 -0
  453. package/skills/api-auth/SKILL.md +173 -0
  454. package/skills/api-config/SKILL.md +68 -0
  455. package/skills/api-context/SKILL.md +321 -0
  456. package/skills/api-errors/SKILL.md +146 -0
  457. package/skills/api-services/SKILL.md +24 -0
  458. package/skills/api-services/references/graph.md +124 -0
  459. package/skills/api-services/references/llm.md +46 -0
  460. package/skills/api-services/references/speech.md +72 -0
  461. package/skills/api-testing/SKILL.md +263 -0
  462. package/skills/api-utils/SKILL.md +106 -0
  463. package/skills/api-utils/references/formatting.md +237 -0
  464. package/skills/api-utils/references/parsing.md +263 -0
  465. package/skills/api-utils/references/security.md +226 -0
  466. package/skills/api-workers/SKILL.md +165 -0
  467. package/skills/devcheck/SKILL.md +31 -0
  468. package/skills/maintenance/SKILL.md +52 -0
  469. package/skills/migrate-mcp-ts-template/SKILL.md +131 -0
  470. package/skills/release/SKILL.md +67 -0
  471. package/skills/setup/SKILL.md +89 -0
  472. package/skills/walkthrough-init/SKILL.md +50 -0
  473. package/templates/.env.example +17 -0
  474. package/templates/AGENTS.md +113 -0
  475. package/templates/CLAUDE.md +113 -0
  476. package/templates/_tsconfig.json +33 -0
  477. package/templates/biome.template.json +43 -0
  478. package/templates/package.json +26 -0
  479. package/templates/src/index.ts +16 -0
  480. package/templates/src/mcp-server/prompts/definitions/echo.prompt.ts +19 -0
  481. package/templates/src/mcp-server/resources/definitions/echo.resource.ts +30 -0
  482. package/templates/src/mcp-server/tools/definitions/echo.tool.ts +24 -0
  483. package/templates/vitest.config.ts +12 -0
  484. package/tsconfig.base.json +44 -0
  485. package/vitest.config.base.ts +38 -0
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @fileoverview Simple in-memory session store for MCP HTTP transport.
3
+ * Implements session management as per MCP Spec 2025-06-18.
4
+ * @see {@link https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management | MCP Session Management}
5
+ * @module src/mcp-server/transports/http/sessionStore
6
+ */
7
+ /**
8
+ * Identity information for binding sessions to authenticated users.
9
+ * Used to prevent session hijacking across tenants/clients.
10
+ */
11
+ export interface SessionIdentity {
12
+ /** Client ID from JWT 'cid'/'client_id' claim */
13
+ clientId?: string;
14
+ /** Subject from JWT 'sub' claim */
15
+ subject?: string;
16
+ /** Tenant ID from JWT 'tid' claim */
17
+ tenantId?: string;
18
+ }
19
+ /**
20
+ * Represents a stateful MCP session with identity binding.
21
+ * Sessions are bound to the authenticated identity to prevent hijacking.
22
+ */
23
+ interface Session {
24
+ clientId?: string;
25
+ createdAt: Date;
26
+ id: string;
27
+ lastAccessedAt: Date;
28
+ subject?: string;
29
+ tenantId?: string;
30
+ }
31
+ /**
32
+ * Simple in-memory session store for stateful MCP sessions.
33
+ * In production, consider using Redis or another persistent store.
34
+ */
35
+ export declare class SessionStore {
36
+ private sessions;
37
+ private staleTimeout;
38
+ private cleanupInterval;
39
+ constructor(staleTimeoutMs: number);
40
+ /**
41
+ * Stops the cleanup interval and clears all sessions.
42
+ * Call this during transport shutdown to prevent resource leaks.
43
+ */
44
+ destroy(): void;
45
+ /**
46
+ * Creates or retrieves a session with optional identity binding.
47
+ * If identity is provided, binds the session to prevent cross-tenant/client hijacking.
48
+ *
49
+ * @param sessionId - The session identifier
50
+ * @param identity - Optional identity info (tenantId, clientId, subject)
51
+ * @returns The session object
52
+ * @throws {McpError} If session ID format is invalid
53
+ */
54
+ getOrCreate(sessionId: string, identity?: SessionIdentity): Session;
55
+ /**
56
+ * Validates a session with identity binding checks.
57
+ * Prevents session hijacking by verifying the session belongs to the requesting identity.
58
+ *
59
+ * Security checks:
60
+ * 1. Session existence
61
+ * 2. Staleness timeout
62
+ * 3. Tenant ID match (if session has tenantId)
63
+ * 4. Client ID match (if session has clientId)
64
+ * 5. Subject match (if session has subject)
65
+ *
66
+ * @param sessionId - The session identifier
67
+ * @param identity - The identity to validate against (from auth)
68
+ * @returns True if session is valid and matches identity
69
+ */
70
+ isValidForIdentity(sessionId: string, identity?: SessionIdentity): boolean;
71
+ /**
72
+ * Terminates a session.
73
+ * @param sessionId - The session identifier
74
+ */
75
+ terminate(sessionId: string): void;
76
+ /**
77
+ * Cleans up stale sessions that haven't been accessed recently.
78
+ */
79
+ private cleanupStaleSessions;
80
+ /**
81
+ * Gets the current number of active sessions.
82
+ * @returns The number of sessions
83
+ */
84
+ getSessionCount(): number;
85
+ }
86
+ export {};
87
+ //# sourceMappingURL=sessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/http/sessionStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAiC;gBAE5C,cAAc,EAAE,MAAM;IAOlC;;;OAGG;IACH,OAAO,IAAI,IAAI;IAKf;;;;;;;;OAQG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO;IA2DnE;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO;IA8D1E;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAWlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;OAGG;IACH,eAAe,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * @fileoverview Simple in-memory session store for MCP HTTP transport.
3
+ * Implements session management as per MCP Spec 2025-06-18.
4
+ * @see {@link https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management | MCP Session Management}
5
+ * @module src/mcp-server/transports/http/sessionStore
6
+ */
7
+ import { validateSessionIdFormat } from '../../../mcp-server/transports/http/sessionIdUtils.js';
8
+ import { JsonRpcErrorCode, McpError } from '../../../types-global/errors.js';
9
+ import { logger } from '../../../utils/internal/logger.js';
10
+ import { requestContextService } from '../../../utils/internal/requestContext.js';
11
+ /**
12
+ * Simple in-memory session store for stateful MCP sessions.
13
+ * In production, consider using Redis or another persistent store.
14
+ */
15
+ export class SessionStore {
16
+ sessions = new Map();
17
+ staleTimeout;
18
+ cleanupInterval;
19
+ constructor(staleTimeoutMs) {
20
+ this.staleTimeout = staleTimeoutMs;
21
+ // Clean up stale sessions every minute. unref() prevents blocking graceful shutdown.
22
+ this.cleanupInterval = setInterval(() => this.cleanupStaleSessions(), 60_000);
23
+ this.cleanupInterval.unref?.();
24
+ }
25
+ /**
26
+ * Stops the cleanup interval and clears all sessions.
27
+ * Call this during transport shutdown to prevent resource leaks.
28
+ */
29
+ destroy() {
30
+ clearInterval(this.cleanupInterval);
31
+ this.sessions.clear();
32
+ }
33
+ /**
34
+ * Creates or retrieves a session with optional identity binding.
35
+ * If identity is provided, binds the session to prevent cross-tenant/client hijacking.
36
+ *
37
+ * @param sessionId - The session identifier
38
+ * @param identity - Optional identity info (tenantId, clientId, subject)
39
+ * @returns The session object
40
+ * @throws {McpError} If session ID format is invalid
41
+ */
42
+ getOrCreate(sessionId, identity) {
43
+ // Validate session ID format to prevent injection attacks
44
+ if (!validateSessionIdFormat(sessionId)) {
45
+ const context = requestContextService.createRequestContext({
46
+ operation: 'SessionStore.getOrCreate',
47
+ sessionIdPrefix: sessionId.substring(0, 16),
48
+ });
49
+ logger.warning('Invalid session ID format rejected', context);
50
+ throw new McpError(JsonRpcErrorCode.InvalidParams, 'Invalid session ID format. Session IDs must be 64 hexadecimal characters.', context);
51
+ }
52
+ let session = this.sessions.get(sessionId);
53
+ if (!session) {
54
+ // Build session object conditionally to satisfy exactOptionalPropertyTypes
55
+ const newSession = {
56
+ id: sessionId,
57
+ createdAt: new Date(),
58
+ lastAccessedAt: new Date(),
59
+ };
60
+ // Only set identity fields if they have actual values (not undefined)
61
+ if (identity?.tenantId)
62
+ newSession.tenantId = identity.tenantId;
63
+ if (identity?.clientId)
64
+ newSession.clientId = identity.clientId;
65
+ if (identity?.subject)
66
+ newSession.subject = identity.subject;
67
+ session = newSession;
68
+ this.sessions.set(sessionId, session);
69
+ const context = requestContextService.createRequestContext({
70
+ operation: 'SessionStore.create',
71
+ sessionId,
72
+ tenantId: identity?.tenantId,
73
+ });
74
+ logger.debug('Session created with identity binding', context);
75
+ }
76
+ else {
77
+ session.lastAccessedAt = new Date();
78
+ // Bind identity on first authenticated request (lazy binding)
79
+ // This handles sessions created before authentication
80
+ if (identity && !session.tenantId) {
81
+ if (identity.tenantId)
82
+ session.tenantId = identity.tenantId;
83
+ if (identity.clientId)
84
+ session.clientId = identity.clientId;
85
+ if (identity.subject)
86
+ session.subject = identity.subject;
87
+ const context = requestContextService.createRequestContext({
88
+ operation: 'SessionStore.bindIdentity',
89
+ sessionId,
90
+ tenantId: identity.tenantId,
91
+ });
92
+ logger.debug('Session identity bound on authenticated request', context);
93
+ }
94
+ }
95
+ return session;
96
+ }
97
+ /**
98
+ * Validates a session with identity binding checks.
99
+ * Prevents session hijacking by verifying the session belongs to the requesting identity.
100
+ *
101
+ * Security checks:
102
+ * 1. Session existence
103
+ * 2. Staleness timeout
104
+ * 3. Tenant ID match (if session has tenantId)
105
+ * 4. Client ID match (if session has clientId)
106
+ * 5. Subject match (if session has subject)
107
+ *
108
+ * @param sessionId - The session identifier
109
+ * @param identity - The identity to validate against (from auth)
110
+ * @returns True if session is valid and matches identity
111
+ */
112
+ isValidForIdentity(sessionId, identity) {
113
+ const session = this.sessions.get(sessionId);
114
+ if (!session) {
115
+ return false;
116
+ }
117
+ // Check staleness
118
+ if (Date.now() - session.lastAccessedAt.getTime() > this.staleTimeout) {
119
+ this.terminate(sessionId);
120
+ return false;
121
+ }
122
+ // If session has no identity bound, allow (backwards compatibility / no-auth mode)
123
+ if (!session.tenantId && !session.clientId && !session.subject) {
124
+ return true;
125
+ }
126
+ // Lazy-create context only when a warning is likely
127
+ const warn = (message, extra) => {
128
+ const context = requestContextService.createRequestContext({
129
+ operation: 'SessionStore.isValidForIdentity',
130
+ sessionId,
131
+ });
132
+ logger.warning(message, extra ? { ...context, ...extra } : context);
133
+ };
134
+ // If request has no identity but session does, reject (security: session was authenticated)
135
+ if (!identity) {
136
+ warn('Session requires authentication but request has no identity');
137
+ return false;
138
+ }
139
+ // Verify tenant ID match — reject if session is bound but request lacks or mismatches
140
+ if (session.tenantId && session.tenantId !== identity.tenantId) {
141
+ warn('Session tenant mismatch - possible hijacking attempt', {
142
+ sessionTenant: session.tenantId,
143
+ requestTenant: identity.tenantId,
144
+ });
145
+ return false;
146
+ }
147
+ // Verify client ID match — reject if session is bound but request lacks or mismatches
148
+ if (session.clientId && session.clientId !== identity.clientId) {
149
+ warn('Session client mismatch - possible hijacking attempt', {
150
+ sessionClient: session.clientId,
151
+ requestClient: identity.clientId,
152
+ });
153
+ return false;
154
+ }
155
+ // Verify subject match — reject if session is bound but request lacks or mismatches
156
+ if (session.subject && session.subject !== identity.subject) {
157
+ warn('Session subject mismatch - possible hijacking attempt', {
158
+ sessionSubject: session.subject,
159
+ requestSubject: identity.subject,
160
+ });
161
+ return false;
162
+ }
163
+ return true;
164
+ }
165
+ /**
166
+ * Terminates a session.
167
+ * @param sessionId - The session identifier
168
+ */
169
+ terminate(sessionId) {
170
+ const deleted = this.sessions.delete(sessionId);
171
+ if (deleted) {
172
+ const context = requestContextService.createRequestContext({
173
+ operation: 'SessionStore.terminate',
174
+ sessionId,
175
+ });
176
+ logger.info('Session terminated', context);
177
+ }
178
+ }
179
+ /**
180
+ * Cleans up stale sessions that haven't been accessed recently.
181
+ */
182
+ cleanupStaleSessions() {
183
+ const now = Date.now();
184
+ let cleanedCount = 0;
185
+ for (const [id, session] of this.sessions.entries()) {
186
+ if (now - session.lastAccessedAt.getTime() > this.staleTimeout) {
187
+ this.sessions.delete(id);
188
+ cleanedCount++;
189
+ }
190
+ }
191
+ if (cleanedCount > 0) {
192
+ const context = requestContextService.createRequestContext({
193
+ operation: 'SessionStore.cleanup',
194
+ });
195
+ logger.debug('Cleaned up stale sessions', {
196
+ ...context,
197
+ count: cleanedCount,
198
+ });
199
+ }
200
+ }
201
+ /**
202
+ * Gets the current number of active sessions.
203
+ * @returns The number of sessions
204
+ */
205
+ getSessionCount() {
206
+ return this.sessions.size;
207
+ }
208
+ }
209
+ //# sourceMappingURL=sessionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../../../src/mcp-server/transports/http/sessionStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @fileoverview Manages the lifecycle of the configured MCP transport.
3
+ * @module src/mcp-server/transports/manager
4
+ */
5
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import type { AppConfig as AppConfigType } from '../../config/index.js';
7
+ import type { TaskManager } from '../../mcp-server/tasks/core/taskManager.js';
8
+ import type { TransportServer } from '../../mcp-server/transports/ITransport.js';
9
+ import type { logger as LoggerType } from '../../utils/internal/logger.js';
10
+ export declare class TransportManager {
11
+ private config;
12
+ private logger;
13
+ private createMcpServer;
14
+ private taskManager;
15
+ private serverInstance;
16
+ private shutdown;
17
+ constructor(config: AppConfigType, logger: typeof LoggerType, createMcpServer: () => Promise<McpServer>, taskManager: TaskManager);
18
+ start(): Promise<void>;
19
+ stop(signal: string): Promise<void>;
20
+ getServer(): TransportServer | null;
21
+ }
22
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/transports/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAK7E,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIvE,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,WAAW;IAPrB,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAA6D;gBAGnE,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,OAAO,UAAU,EACzB,eAAe,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EACzC,WAAW,EAAE,WAAW;IAG5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BtB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzC,SAAS,IAAI,eAAe,GAAG,IAAI;CAGpC"}
@@ -0,0 +1,62 @@
1
+ import { startHttpTransport } from '../../mcp-server/transports/http/httpTransport.js';
2
+ import { startStdioTransport, stopStdioTransport, } from '../../mcp-server/transports/stdio/stdioTransport.js';
3
+ import { requestContextService } from '../../utils/internal/requestContext.js';
4
+ export class TransportManager {
5
+ config;
6
+ logger;
7
+ createMcpServer;
8
+ taskManager;
9
+ serverInstance = null;
10
+ shutdown = null;
11
+ constructor(config, logger, createMcpServer, taskManager) {
12
+ this.config = config;
13
+ this.logger = logger;
14
+ this.createMcpServer = createMcpServer;
15
+ this.taskManager = taskManager;
16
+ }
17
+ async start() {
18
+ const context = requestContextService.createRequestContext({
19
+ operation: 'TransportManager.start',
20
+ transport: this.config.mcpTransportType,
21
+ });
22
+ this.logger.info(`Starting transport: ${this.config.mcpTransportType}`, context);
23
+ if (this.config.mcpTransportType === 'http') {
24
+ // HTTP: pass factory so each request gets a fresh McpServer+transport pair
25
+ // (SDK 1.26.0 security fix — GHSA-345p-7cg4-v4c7)
26
+ const handle = await startHttpTransport(this.createMcpServer, context);
27
+ this.serverInstance = handle.server;
28
+ this.shutdown = (ctx) => handle.stop(ctx);
29
+ }
30
+ else if (this.config.mcpTransportType === 'stdio') {
31
+ // Stdio: single client, single connection — one server instance is correct
32
+ const mcpServer = await this.createMcpServer();
33
+ this.serverInstance = await startStdioTransport(mcpServer, context);
34
+ this.shutdown = (ctx) => stopStdioTransport(mcpServer, ctx);
35
+ }
36
+ else {
37
+ const transportType = String(this.config.mcpTransportType);
38
+ const error = new Error(`Unsupported transport type: ${transportType}`);
39
+ this.logger.crit(error.message, context);
40
+ throw error;
41
+ }
42
+ }
43
+ async stop(signal) {
44
+ const context = requestContextService.createRequestContext({
45
+ operation: 'TransportManager.stop',
46
+ signal,
47
+ });
48
+ if (!this.shutdown) {
49
+ this.logger.warning('Stop called but no active server instance found.', context);
50
+ return;
51
+ }
52
+ await this.shutdown(context);
53
+ // Clean up task manager timers to allow clean process exit
54
+ this.taskManager.cleanup();
55
+ this.serverInstance = null;
56
+ this.shutdown = null;
57
+ }
58
+ getServer() {
59
+ return this.serverInstance;
60
+ }
61
+ }
62
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/mcp-server/transports/manager.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAEnF,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,iDAAiD,CAAC;AAGzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,OAAO,gBAAgB;IAKjB;IACA;IACA;IACA;IAPF,cAAc,GAA2B,IAAI,CAAC;IAC9C,QAAQ,GAAwD,IAAI,CAAC;IAE7E,YACU,MAAqB,EACrB,MAAyB,EACzB,eAAyC,EACzC,WAAwB;QAHxB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAmB;QACzB,oBAAe,GAAf,eAAe,CAA0B;QACzC,gBAAW,GAAX,WAAW,CAAa;IAC/B,CAAC;IAEJ,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,wBAAwB;YACnC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;YAC5C,2EAA2E;YAC3E,kDAAkD;YAClD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACvE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,OAAO,EAAE,CAAC;YACpD,2EAA2E;YAC3E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,IAAI,CAAC,cAAc,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,uBAAuB;YAClC,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kDAAkD,EAAE,OAAO,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE7B,2DAA2D;QAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAE3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @fileoverview Handles the setup and connection for the Stdio MCP transport.
3
+ * Implements the MCP Specification 2025-06-18 for stdio transport.
4
+ * This transport communicates directly over standard input (stdin) and
5
+ * standard output (stdout), typically used when the MCP server is launched
6
+ * as a child process by a host application.
7
+ *
8
+ * Specification Reference:
9
+ * https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#stdio
10
+ *
11
+ * --- Authentication Note ---
12
+ * As per the MCP Authorization Specification (2025-06-18, Section 1.2),
13
+ * STDIO transports SHOULD NOT implement HTTP-based authentication flows.
14
+ * Authorization is typically handled implicitly by the host application
15
+ * controlling the server process. This implementation follows that guideline.
16
+ *
17
+ * @see {@link https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization | MCP Authorization Specification}
18
+ * @module src/mcp-server/transports/stdioTransport
19
+ */
20
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
21
+ import type { RequestContext } from '../../../utils/internal/requestContext.js';
22
+ /**
23
+ * Connects a given `McpServer` instance to the Stdio transport.
24
+ * This function initializes the SDK's `StdioServerTransport`, which manages
25
+ * communication over `process.stdin` and `process.stdout` according to the
26
+ * MCP stdio transport specification.
27
+ *
28
+ * MCP Spec Points Covered by SDK's `StdioServerTransport`:
29
+ * - Reads JSON-RPC messages (requests, notifications, responses, batches) from stdin.
30
+ * - Writes JSON-RPC messages to stdout.
31
+ * - Handles newline delimiters and ensures no embedded newlines in output messages.
32
+ * - Ensures only valid MCP messages are written to stdout.
33
+ *
34
+ * Logging via the `logger` utility MAY result in output to stderr, which is
35
+ * permitted by the spec for logging purposes.
36
+ *
37
+ * @param server - The `McpServer` instance.
38
+ * @param parentContext - The logging and tracing context from the calling function.
39
+ * @returns A promise that resolves when the Stdio transport is successfully connected.
40
+ * @throws {Error} If the connection fails during setup.
41
+ */
42
+ export declare function startStdioTransport(server: McpServer, parentContext: RequestContext): Promise<McpServer>;
43
+ export declare function stopStdioTransport(server: McpServer, parentContext: RequestContext): Promise<void>;
44
+ //# sourceMappingURL=stdioTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdioTransport.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/stdio/stdioTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAAC,SAAS,CAAC,CA8BpB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -0,0 +1,63 @@
1
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
+ import { ErrorHandler } from '../../../utils/internal/error-handler/errorHandler.js';
3
+ import { logger } from '../../../utils/internal/logger.js';
4
+ import { logStartupBanner } from '../../../utils/internal/startupBanner.js';
5
+ /**
6
+ * Connects a given `McpServer` instance to the Stdio transport.
7
+ * This function initializes the SDK's `StdioServerTransport`, which manages
8
+ * communication over `process.stdin` and `process.stdout` according to the
9
+ * MCP stdio transport specification.
10
+ *
11
+ * MCP Spec Points Covered by SDK's `StdioServerTransport`:
12
+ * - Reads JSON-RPC messages (requests, notifications, responses, batches) from stdin.
13
+ * - Writes JSON-RPC messages to stdout.
14
+ * - Handles newline delimiters and ensures no embedded newlines in output messages.
15
+ * - Ensures only valid MCP messages are written to stdout.
16
+ *
17
+ * Logging via the `logger` utility MAY result in output to stderr, which is
18
+ * permitted by the spec for logging purposes.
19
+ *
20
+ * @param server - The `McpServer` instance.
21
+ * @param parentContext - The logging and tracing context from the calling function.
22
+ * @returns A promise that resolves when the Stdio transport is successfully connected.
23
+ * @throws {Error} If the connection fails during setup.
24
+ */
25
+ export async function startStdioTransport(server, parentContext) {
26
+ const operationContext = {
27
+ ...parentContext,
28
+ operation: 'connectStdioTransport',
29
+ transportType: 'Stdio',
30
+ };
31
+ logger.info('Attempting to connect stdio transport...', operationContext);
32
+ try {
33
+ logger.debug('Creating StdioServerTransport instance...', operationContext);
34
+ const transport = new StdioServerTransport();
35
+ logger.debug('Connecting McpServer instance to StdioServerTransport...', operationContext);
36
+ await server.connect(transport);
37
+ logger.info('MCP Server connected and listening via stdio transport.', operationContext);
38
+ logStartupBanner(`\n🚀 MCP Server running in STDIO mode.\n (MCP Spec: 2025-06-18 Stdio Transport)\n`, 'stdio');
39
+ return server;
40
+ }
41
+ catch (err) {
42
+ // Let the ErrorHandler log the error with all context, then rethrow.
43
+ throw ErrorHandler.handleError(err, {
44
+ operation: 'connectStdioTransport',
45
+ context: operationContext,
46
+ critical: true,
47
+ rethrow: true,
48
+ });
49
+ }
50
+ }
51
+ export async function stopStdioTransport(server, parentContext) {
52
+ const operationContext = {
53
+ ...parentContext,
54
+ operation: 'stopStdioTransport',
55
+ transportType: 'Stdio',
56
+ };
57
+ logger.info('Attempting to stop stdio transport...', operationContext);
58
+ if (server) {
59
+ await server.close();
60
+ logger.info('Stdio transport stopped successfully.', operationContext);
61
+ }
62
+ }
63
+ //# sourceMappingURL=stdioTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdioTransport.js","sourceRoot":"","sources":["../../../../src/mcp-server/transports/stdio/stdioTransport.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiB,EACjB,aAA6B;IAE7B,MAAM,gBAAgB,GAAG;QACvB,GAAG,aAAa;QAChB,SAAS,EAAE,uBAAuB;QAClC,aAAa,EAAE,OAAO;KACvB,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,gBAAgB,CAAC,CAAC;IAE1E,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,gBAAgB,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAE7C,MAAM,CAAC,KAAK,CAAC,0DAA0D,EAAE,gBAAgB,CAAC,CAAC;QAC3F,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE,gBAAgB,CAAC,CAAC;QACzF,gBAAgB,CACd,qFAAqF,EACrF,OAAO,CACR,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qEAAqE;QACrE,MAAM,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,SAAS,EAAE,uBAAuB;YAClC,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAiB,EACjB,aAA6B;IAE7B,MAAM,gBAAgB,GAAG;QACvB,GAAG,aAAa;QAChB,SAAS,EAAE,oBAAoB;QAC/B,aAAa,EAAE,OAAO;KACvB,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,gBAAgB,CAAC,CAAC;IACvE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,gBAAgB,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}