@cyanheads/mcp-ts-core 0.11.5 → 0.12.1

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 (389) hide show
  1. package/AGENTS.md +27 -23
  2. package/CLAUDE.md +27 -23
  3. package/README.md +10 -10
  4. package/biome.json +1 -1
  5. package/changelog/0.12.x/0.12.0.md +96 -0
  6. package/changelog/0.12.x/0.12.1.md +26 -0
  7. package/dist/cli/init.js +1 -1
  8. package/dist/cli/init.js.map +1 -1
  9. package/dist/config/index.d.ts +9 -18
  10. package/dist/config/index.d.ts.map +1 -1
  11. package/dist/config/index.js +21 -28
  12. package/dist/config/index.js.map +1 -1
  13. package/dist/core/app.d.ts +27 -7
  14. package/dist/core/app.d.ts.map +1 -1
  15. package/dist/core/app.js +28 -28
  16. package/dist/core/app.js.map +1 -1
  17. package/dist/core/context.d.ts +90 -57
  18. package/dist/core/context.d.ts.map +1 -1
  19. package/dist/core/context.js +32 -33
  20. package/dist/core/context.js.map +1 -1
  21. package/dist/core/gcPressure.d.ts.map +1 -1
  22. package/dist/core/gcPressure.js +3 -4
  23. package/dist/core/gcPressure.js.map +1 -1
  24. package/dist/core/index.d.ts +6 -7
  25. package/dist/core/index.d.ts.map +1 -1
  26. package/dist/core/index.js +10 -2
  27. package/dist/core/index.js.map +1 -1
  28. package/dist/core/serverManifest.d.ts +6 -4
  29. package/dist/core/serverManifest.d.ts.map +1 -1
  30. package/dist/core/serverManifest.js +37 -14
  31. package/dist/core/serverManifest.js.map +1 -1
  32. package/dist/core/worker.d.ts.map +1 -1
  33. package/dist/core/worker.js +34 -37
  34. package/dist/core/worker.js.map +1 -1
  35. package/dist/linter/rules/enrichment-rules.d.ts.map +1 -1
  36. package/dist/linter/rules/enrichment-rules.js +5 -2
  37. package/dist/linter/rules/enrichment-rules.js.map +1 -1
  38. package/dist/linter/rules/portability-rules.d.ts +4 -2
  39. package/dist/linter/rules/portability-rules.d.ts.map +1 -1
  40. package/dist/linter/rules/portability-rules.js +33 -4
  41. package/dist/linter/rules/portability-rules.js.map +1 -1
  42. package/dist/linter/rules/schema-rules.d.ts +10 -3
  43. package/dist/linter/rules/schema-rules.d.ts.map +1 -1
  44. package/dist/linter/rules/schema-rules.js +52 -25
  45. package/dist/linter/rules/schema-rules.js.map +1 -1
  46. package/dist/linter/rules/tool-rules.d.ts.map +1 -1
  47. package/dist/linter/rules/tool-rules.js +5 -2
  48. package/dist/linter/rules/tool-rules.js.map +1 -1
  49. package/dist/linter/types.d.ts +2 -1
  50. package/dist/linter/types.d.ts.map +1 -1
  51. package/dist/logs/combined.log +10 -22
  52. package/dist/logs/error.log +6 -18
  53. package/dist/mcp-server/inputRequired.d.ts +52 -0
  54. package/dist/mcp-server/inputRequired.d.ts.map +1 -0
  55. package/dist/mcp-server/inputRequired.js +76 -0
  56. package/dist/mcp-server/inputRequired.js.map +1 -0
  57. package/dist/mcp-server/notifications.d.ts +103 -34
  58. package/dist/mcp-server/notifications.d.ts.map +1 -1
  59. package/dist/mcp-server/notifications.js +104 -29
  60. package/dist/mcp-server/notifications.js.map +1 -1
  61. package/dist/mcp-server/prompts/prompt-registration.d.ts +2 -2
  62. package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -1
  63. package/dist/mcp-server/prompts/prompt-registration.js +15 -5
  64. package/dist/mcp-server/prompts/prompt-registration.js.map +1 -1
  65. package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +1 -1
  66. package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -1
  67. package/dist/mcp-server/resources/resource-registration.d.ts +3 -3
  68. package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
  69. package/dist/mcp-server/resources/resource-registration.js +9 -15
  70. package/dist/mcp-server/resources/resource-registration.js.map +1 -1
  71. package/dist/mcp-server/resources/resourceSubscriptions.d.ts +45 -0
  72. package/dist/mcp-server/resources/resourceSubscriptions.d.ts.map +1 -0
  73. package/dist/mcp-server/resources/resourceSubscriptions.js +51 -0
  74. package/dist/mcp-server/resources/resourceSubscriptions.js.map +1 -0
  75. package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +3 -5
  76. package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -1
  77. package/dist/mcp-server/resources/utils/resourceDefinition.js +1 -1
  78. package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -1
  79. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +18 -17
  80. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
  81. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +39 -39
  82. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
  83. package/dist/mcp-server/server.d.ts +20 -21
  84. package/dist/mcp-server/server.d.ts.map +1 -1
  85. package/dist/mcp-server/server.js +42 -28
  86. package/dist/mcp-server/server.js.map +1 -1
  87. package/dist/mcp-server/tools/tool-registration.d.ts +11 -33
  88. package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
  89. package/dist/mcp-server/tools/tool-registration.js +18 -243
  90. package/dist/mcp-server/tools/tool-registration.js.map +1 -1
  91. package/dist/mcp-server/tools/utils/schemaShape.d.ts +27 -0
  92. package/dist/mcp-server/tools/utils/schemaShape.d.ts.map +1 -0
  93. package/dist/mcp-server/tools/utils/schemaShape.js +43 -0
  94. package/dist/mcp-server/tools/utils/schemaShape.js.map +1 -0
  95. package/dist/mcp-server/tools/utils/toolDefinition.d.ts +28 -8
  96. package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -1
  97. package/dist/mcp-server/tools/utils/toolDefinition.js +63 -1
  98. package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -1
  99. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +54 -20
  100. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
  101. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +156 -44
  102. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
  103. package/dist/mcp-server/transports/ITransport.d.ts +2 -2
  104. package/dist/mcp-server/transports/ITransport.d.ts.map +1 -1
  105. package/dist/mcp-server/transports/auth/authFactory.js +1 -1
  106. package/dist/mcp-server/transports/auth/authFactory.js.map +1 -1
  107. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +1 -1
  108. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -1
  109. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -1
  110. package/dist/mcp-server/transports/auth/lib/authUtils.js +5 -13
  111. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
  112. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +5 -11
  113. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -1
  114. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -1
  115. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +9 -22
  116. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -1
  117. package/dist/mcp-server/transports/heartbeat.d.ts.map +1 -1
  118. package/dist/mcp-server/transports/heartbeat.js +4 -8
  119. package/dist/mcp-server/transports/heartbeat.js.map +1 -1
  120. package/dist/mcp-server/transports/http/eventStore.d.ts +57 -0
  121. package/dist/mcp-server/transports/http/eventStore.d.ts.map +1 -0
  122. package/dist/mcp-server/transports/http/eventStore.js +114 -0
  123. package/dist/mcp-server/transports/http/eventStore.js.map +1 -0
  124. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
  125. package/dist/mcp-server/transports/http/httpErrorHandler.js +6 -24
  126. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
  127. package/dist/mcp-server/transports/http/httpServer.d.ts +4 -3
  128. package/dist/mcp-server/transports/http/httpServer.d.ts.map +1 -1
  129. package/dist/mcp-server/transports/http/httpServer.js +16 -33
  130. package/dist/mcp-server/transports/http/httpServer.js.map +1 -1
  131. package/dist/mcp-server/transports/http/httpTransport.d.ts +30 -8
  132. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
  133. package/dist/mcp-server/transports/http/httpTransport.js +180 -374
  134. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
  135. package/dist/mcp-server/transports/http/landing-page/assets/styles.d.ts.map +1 -1
  136. package/dist/mcp-server/transports/http/landing-page/assets/styles.js +0 -1
  137. package/dist/mcp-server/transports/http/landing-page/assets/styles.js.map +1 -1
  138. package/dist/mcp-server/transports/http/landing-page/handler.d.ts.map +1 -1
  139. package/dist/mcp-server/transports/http/landing-page/handler.js +4 -8
  140. package/dist/mcp-server/transports/http/landing-page/handler.js.map +1 -1
  141. package/dist/mcp-server/transports/http/landing-page/sections/tools.js +22 -4
  142. package/dist/mcp-server/transports/http/landing-page/sections/tools.js.map +1 -1
  143. package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -1
  144. package/dist/mcp-server/transports/http/protectedResourceMetadata.js +2 -6
  145. package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -1
  146. package/dist/mcp-server/transports/http/robotsTxt.js +2 -2
  147. package/dist/mcp-server/transports/http/robotsTxt.js.map +1 -1
  148. package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -1
  149. package/dist/mcp-server/transports/http/serverCard.js +2 -6
  150. package/dist/mcp-server/transports/http/serverCard.js.map +1 -1
  151. package/dist/mcp-server/transports/http/sessionStore.d.ts +46 -66
  152. package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
  153. package/dist/mcp-server/transports/http/sessionStore.js +140 -238
  154. package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
  155. package/dist/mcp-server/transports/manager.d.ts +21 -4
  156. package/dist/mcp-server/transports/manager.d.ts.map +1 -1
  157. package/dist/mcp-server/transports/manager.js +40 -34
  158. package/dist/mcp-server/transports/manager.js.map +1 -1
  159. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +24 -31
  160. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -1
  161. package/dist/mcp-server/transports/stdio/stdioTransport.js +23 -38
  162. package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -1
  163. package/dist/mcp-server/types.d.ts +25 -0
  164. package/dist/mcp-server/types.d.ts.map +1 -0
  165. package/dist/mcp-server/types.js +10 -0
  166. package/dist/mcp-server/types.js.map +1 -0
  167. package/dist/services/canvas/core/CanvasInstance.d.ts +2 -2
  168. package/dist/services/canvas/core/CanvasInstance.d.ts.map +1 -1
  169. package/dist/services/canvas/core/CanvasInstance.js.map +1 -1
  170. package/dist/services/canvas/core/CanvasRegistry.d.ts +4 -4
  171. package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
  172. package/dist/services/canvas/core/CanvasRegistry.js +8 -18
  173. package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
  174. package/dist/services/canvas/core/DataCanvas.d.ts +5 -5
  175. package/dist/services/canvas/core/DataCanvas.d.ts.map +1 -1
  176. package/dist/services/canvas/core/DataCanvas.js +2 -3
  177. package/dist/services/canvas/core/DataCanvas.js.map +1 -1
  178. package/dist/services/canvas/core/IDataCanvasProvider.d.ts +11 -11
  179. package/dist/services/canvas/core/IDataCanvasProvider.d.ts.map +1 -1
  180. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +11 -11
  181. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
  182. package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +4 -10
  183. package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
  184. package/dist/services/llm/providers/openrouter.provider.d.ts.map +1 -1
  185. package/dist/services/llm/providers/openrouter.provider.js +2 -5
  186. package/dist/services/llm/providers/openrouter.provider.js.map +1 -1
  187. package/dist/services/mirror/core/defineMirror.js +1 -1
  188. package/dist/services/mirror/core/defineMirror.js.map +1 -1
  189. package/dist/services/mirror/types.d.ts +5 -5
  190. package/dist/services/mirror/types.d.ts.map +1 -1
  191. package/dist/services/speech/providers/elevenlabs.provider.js +1 -1
  192. package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
  193. package/dist/services/speech/providers/whisper.provider.js +1 -1
  194. package/dist/services/speech/providers/whisper.provider.js.map +1 -1
  195. package/dist/storage/core/StorageService.d.ts +1 -1
  196. package/dist/storage/core/StorageService.d.ts.map +1 -1
  197. package/dist/storage/core/StorageService.js +12 -20
  198. package/dist/storage/core/StorageService.js.map +1 -1
  199. package/dist/storage/core/storageFactory.d.ts.map +1 -1
  200. package/dist/storage/core/storageFactory.js.map +1 -1
  201. package/dist/storage/core/storageValidation.d.ts +1 -1
  202. package/dist/storage/core/storageValidation.d.ts.map +1 -1
  203. package/dist/storage/core/storageValidation.js +2 -2
  204. package/dist/storage/core/storageValidation.js.map +1 -1
  205. package/dist/storage/providers/cloudflare/d1Provider.d.ts +1 -1
  206. package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
  207. package/dist/storage/providers/cloudflare/d1Provider.js +4 -12
  208. package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
  209. package/dist/storage/providers/cloudflare/kvProvider.d.ts +1 -1
  210. package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
  211. package/dist/storage/providers/cloudflare/kvProvider.js +3 -8
  212. package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
  213. package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
  214. package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
  215. package/dist/storage/providers/cloudflare/r2Provider.js +3 -8
  216. package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
  217. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +1 -1
  218. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
  219. package/dist/storage/providers/inMemory/inMemoryProvider.js +2 -4
  220. package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
  221. package/dist/testing/fuzz.d.ts +7 -4
  222. package/dist/testing/fuzz.d.ts.map +1 -1
  223. package/dist/testing/fuzz.js +13 -5
  224. package/dist/testing/fuzz.js.map +1 -1
  225. package/dist/testing/index.d.ts +35 -12
  226. package/dist/testing/index.d.ts.map +1 -1
  227. package/dist/testing/index.js +53 -38
  228. package/dist/testing/index.js.map +1 -1
  229. package/dist/testing/vitest.d.ts +1 -1
  230. package/dist/testing/vitest.d.ts.map +1 -1
  231. package/dist/types-global/errors.d.ts +28 -15
  232. package/dist/types-global/errors.d.ts.map +1 -1
  233. package/dist/types-global/errors.js +8 -1
  234. package/dist/types-global/errors.js.map +1 -1
  235. package/dist/utils/formatting/diffFormatter.d.ts +5 -5
  236. package/dist/utils/formatting/diffFormatter.d.ts.map +1 -1
  237. package/dist/utils/formatting/diffFormatter.js +7 -20
  238. package/dist/utils/formatting/diffFormatter.js.map +1 -1
  239. package/dist/utils/formatting/tableFormatter.d.ts +3 -3
  240. package/dist/utils/formatting/tableFormatter.d.ts.map +1 -1
  241. package/dist/utils/formatting/tableFormatter.js +6 -17
  242. package/dist/utils/formatting/tableFormatter.js.map +1 -1
  243. package/dist/utils/formatting/treeFormatter.d.ts +3 -3
  244. package/dist/utils/formatting/treeFormatter.d.ts.map +1 -1
  245. package/dist/utils/formatting/treeFormatter.js +5 -18
  246. package/dist/utils/formatting/treeFormatter.js.map +1 -1
  247. package/dist/utils/index.d.ts +4 -2
  248. package/dist/utils/index.d.ts.map +1 -1
  249. package/dist/utils/index.js +2 -2
  250. package/dist/utils/index.js.map +1 -1
  251. package/dist/utils/internal/error-handler/errorHandler.d.ts +1 -1
  252. package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
  253. package/dist/utils/internal/error-handler/errorHandler.js +23 -11
  254. package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
  255. package/dist/utils/internal/error-handler/types.d.ts +10 -13
  256. package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
  257. package/dist/utils/internal/logger.d.ts +3 -3
  258. package/dist/utils/internal/logger.d.ts.map +1 -1
  259. package/dist/utils/internal/logger.js +11 -5
  260. package/dist/utils/internal/logger.js.map +1 -1
  261. package/dist/utils/internal/performance.d.ts +13 -5
  262. package/dist/utils/internal/performance.d.ts.map +1 -1
  263. package/dist/utils/internal/performance.js +76 -17
  264. package/dist/utils/internal/performance.js.map +1 -1
  265. package/dist/utils/internal/requestContext.d.ts +92 -55
  266. package/dist/utils/internal/requestContext.d.ts.map +1 -1
  267. package/dist/utils/internal/requestContext.js +120 -40
  268. package/dist/utils/internal/requestContext.js.map +1 -1
  269. package/dist/utils/metrics/tokenCounter.d.ts +3 -3
  270. package/dist/utils/metrics/tokenCounter.d.ts.map +1 -1
  271. package/dist/utils/metrics/tokenCounter.js.map +1 -1
  272. package/dist/utils/network/fetchWithTimeout.d.ts +2 -2
  273. package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
  274. package/dist/utils/network/fetchWithTimeout.js +8 -24
  275. package/dist/utils/network/fetchWithTimeout.js.map +1 -1
  276. package/dist/utils/network/retry.d.ts +2 -2
  277. package/dist/utils/network/retry.d.ts.map +1 -1
  278. package/dist/utils/overflow/outlineOnOverflow.d.ts +1 -1
  279. package/dist/utils/overflow/outlineOnOverflow.d.ts.map +1 -1
  280. package/dist/utils/pagination/pagination.d.ts +3 -3
  281. package/dist/utils/pagination/pagination.d.ts.map +1 -1
  282. package/dist/utils/pagination/pagination.js +3 -3
  283. package/dist/utils/pagination/pagination.js.map +1 -1
  284. package/dist/utils/parsing/csvParser.d.ts +2 -2
  285. package/dist/utils/parsing/csvParser.d.ts.map +1 -1
  286. package/dist/utils/parsing/csvParser.js +4 -8
  287. package/dist/utils/parsing/csvParser.js.map +1 -1
  288. package/dist/utils/parsing/dateParser.d.ts +3 -3
  289. package/dist/utils/parsing/dateParser.d.ts.map +1 -1
  290. package/dist/utils/parsing/dateParser.js +3 -2
  291. package/dist/utils/parsing/dateParser.js.map +1 -1
  292. package/dist/utils/parsing/frontmatterParser.d.ts +2 -2
  293. package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -1
  294. package/dist/utils/parsing/frontmatterParser.js +7 -10
  295. package/dist/utils/parsing/frontmatterParser.js.map +1 -1
  296. package/dist/utils/parsing/htmlExtractor.d.ts +2 -2
  297. package/dist/utils/parsing/htmlExtractor.d.ts.map +1 -1
  298. package/dist/utils/parsing/htmlExtractor.js +6 -11
  299. package/dist/utils/parsing/htmlExtractor.js.map +1 -1
  300. package/dist/utils/parsing/jsonParser.d.ts +2 -2
  301. package/dist/utils/parsing/jsonParser.d.ts.map +1 -1
  302. package/dist/utils/parsing/jsonParser.js +4 -8
  303. package/dist/utils/parsing/jsonParser.js.map +1 -1
  304. package/dist/utils/parsing/pdfParser.d.ts +10 -10
  305. package/dist/utils/parsing/pdfParser.d.ts.map +1 -1
  306. package/dist/utils/parsing/pdfParser.js +26 -89
  307. package/dist/utils/parsing/pdfParser.js.map +1 -1
  308. package/dist/utils/parsing/xmlParser.d.ts +2 -2
  309. package/dist/utils/parsing/xmlParser.d.ts.map +1 -1
  310. package/dist/utils/parsing/xmlParser.js +4 -8
  311. package/dist/utils/parsing/xmlParser.js.map +1 -1
  312. package/dist/utils/parsing/yamlParser.d.ts +2 -2
  313. package/dist/utils/parsing/yamlParser.d.ts.map +1 -1
  314. package/dist/utils/parsing/yamlParser.js +4 -8
  315. package/dist/utils/parsing/yamlParser.js.map +1 -1
  316. package/dist/utils/scheduling/scheduler.d.ts.map +1 -1
  317. package/dist/utils/scheduling/scheduler.js +5 -6
  318. package/dist/utils/scheduling/scheduler.js.map +1 -1
  319. package/dist/utils/security/rateLimiter.d.ts +2 -2
  320. package/dist/utils/security/rateLimiter.d.ts.map +1 -1
  321. package/dist/utils/security/rateLimiter.js +1 -1
  322. package/dist/utils/security/rateLimiter.js.map +1 -1
  323. package/dist/utils/telemetry/attributes.d.ts +23 -7
  324. package/dist/utils/telemetry/attributes.d.ts.map +1 -1
  325. package/dist/utils/telemetry/attributes.js +23 -10
  326. package/dist/utils/telemetry/attributes.js.map +1 -1
  327. package/dist/utils/telemetry/trace.d.ts +3 -3
  328. package/dist/utils/telemetry/trace.d.ts.map +1 -1
  329. package/dist/utils/telemetry/trace.js +4 -2
  330. package/dist/utils/telemetry/trace.js.map +1 -1
  331. package/package.json +22 -26
  332. package/scripts/lint-mcp.ts +1 -3
  333. package/scripts/lint-packaging.ts +1 -1
  334. package/skills/add-service/SKILL.md +2 -2
  335. package/skills/add-test/SKILL.md +42 -20
  336. package/skills/add-tool/SKILL.md +103 -19
  337. package/skills/api-config/SKILL.md +4 -11
  338. package/skills/api-context/SKILL.md +216 -120
  339. package/skills/api-linter/SKILL.md +16 -3
  340. package/skills/api-telemetry/SKILL.md +10 -12
  341. package/skills/api-testing/SKILL.md +53 -52
  342. package/skills/api-workers/SKILL.md +9 -1
  343. package/skills/code-simplifier/SKILL.md +2 -2
  344. package/skills/design-mcp-server/SKILL.md +31 -17
  345. package/skills/field-test/SKILL.md +4 -2
  346. package/skills/polish-docs-meta/SKILL.md +1 -1
  347. package/skills/polish-docs-meta/references/agent-protocol.md +2 -2
  348. package/skills/polish-docs-meta/references/readme.md +1 -1
  349. package/skills/release-and-publish/SKILL.md +3 -1
  350. package/skills/report-issue-framework/SKILL.md +2 -2
  351. package/skills/report-issue-local/SKILL.md +2 -2
  352. package/skills/security-pass/SKILL.md +16 -14
  353. package/skills/tool-defs-analysis/SKILL.md +15 -5
  354. package/templates/.env.example +4 -0
  355. package/templates/AGENTS.md +6 -6
  356. package/templates/CLAUDE.md +6 -6
  357. package/templates/tests/resources/echo.resource.test.ts +16 -9
  358. package/dist/mcp-server/elicitation.d.ts +0 -64
  359. package/dist/mcp-server/elicitation.d.ts.map +0 -1
  360. package/dist/mcp-server/elicitation.js +0 -81
  361. package/dist/mcp-server/elicitation.js.map +0 -1
  362. package/dist/mcp-server/protocolSession.d.ts +0 -34
  363. package/dist/mcp-server/protocolSession.d.ts.map +0 -1
  364. package/dist/mcp-server/protocolSession.js +0 -13
  365. package/dist/mcp-server/protocolSession.js.map +0 -1
  366. package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.d.ts +0 -53
  367. package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.d.ts.map +0 -1
  368. package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.js +0 -65
  369. package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.js.map +0 -1
  370. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts +0 -70
  371. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts.map +0 -1
  372. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js +0 -130
  373. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js.map +0 -1
  374. package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts +0 -109
  375. package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts.map +0 -1
  376. package/dist/mcp-server/tasks/core/storageBackedTaskStore.js +0 -209
  377. package/dist/mcp-server/tasks/core/storageBackedTaskStore.js.map +0 -1
  378. package/dist/mcp-server/tasks/core/taskManager.d.ts +0 -91
  379. package/dist/mcp-server/tasks/core/taskManager.d.ts.map +0 -1
  380. package/dist/mcp-server/tasks/core/taskManager.js +0 -210
  381. package/dist/mcp-server/tasks/core/taskManager.js.map +0 -1
  382. package/dist/mcp-server/tasks/core/taskTypes.d.ts +0 -18
  383. package/dist/mcp-server/tasks/core/taskTypes.d.ts.map +0 -1
  384. package/dist/mcp-server/tasks/core/taskTypes.js +0 -20
  385. package/dist/mcp-server/tasks/core/taskTypes.js.map +0 -1
  386. package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts +0 -101
  387. package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts.map +0 -1
  388. package/dist/mcp-server/tasks/utils/taskToolDefinition.js +0 -14
  389. package/dist/mcp-server/tasks/utils/taskToolDefinition.js.map +0 -1
@@ -1,11 +1,5 @@
1
- import { config } from '../../config/index.js';
2
- import { attachTypedFail, createContext } from '../../core/context.js';
3
- import { DEFAULT_AUTO_TASK_TTL_MS } from '../../mcp-server/tasks/core/taskTypes.js';
4
- import { isTaskToolDefinition, } from '../../mcp-server/tasks/utils/taskToolDefinition.js';
5
1
  import { getDisabledMetadata } from '../../mcp-server/tools/utils/disabled-tool.js';
6
- import { buildToolErrorResult, buildToolSuccessResult, classifyAndBuildToolErrorResult, createToolHandler, effectiveOutputSchema, } from '../../mcp-server/tools/utils/toolHandlerFactory.js';
7
- import { authContext } from '../../mcp-server/transports/auth/lib/authContext.js';
8
- import { withRequiredScopes } from '../../mcp-server/transports/auth/lib/authUtils.js';
2
+ import { advertisedOutputSchema, createToolHandler, } from '../../mcp-server/tools/utils/toolHandlerFactory.js';
9
3
  import { JsonRpcErrorCode } from '../../types-global/errors.js';
10
4
  import { ErrorHandler } from '../../utils/internal/error-handler/errorHandler.js';
11
5
  import { logger } from '../../utils/internal/logger.js';
@@ -19,38 +13,26 @@ export class ToolRegistry {
19
13
  this.toolDefs = toolDefs;
20
14
  this.services = services;
21
15
  }
22
- /**
23
- * Registers all tool definitions with the provided McpServer instance.
24
- * Automatically detects standard tools, auto-task tools (task: true),
25
- * and escape-hatch TaskToolDefinitions.
26
- */
27
- async registerAll(server, protocolSession) {
16
+ /** Registers all tool definitions with the provided McpServer instance. */
17
+ async registerAll(server, subscriptions, bus) {
28
18
  // Reset per-server uniqueness tracking — registries are shared across
29
- // per-request McpServer instances in HTTP mode (GHSA-345p-7cg4-v4c7).
19
+ // per-request McpServer instances under HTTP serving.
30
20
  this.registeredNames.clear();
31
21
  // Per-server notifier closures targeting `server.send*ListChanged()`. Bound
32
22
  // once per registerAll() call — never mutated on a shared services object
33
- // (which would race under concurrent HTTP requests). The sync handler
34
- // factory prefers request-scoped notifiers (#135) and falls back to these;
35
- // the background auto-task path uses them directly (no request scope), so
36
- // those notifications deliver on stdio but drop under HTTP.
23
+ // (which would race under concurrent HTTP requests). The handler factory
24
+ // prefers request-scoped notifiers (#135) and falls back to these.
37
25
  const notifiers = {
38
- elicitInput: (params) => server.server.elicitInput(params),
39
- getClientCapabilities: () => protocolSession?.clientCapabilities ?? server.server.getClientCapabilities(),
40
26
  notifyPromptListChanged: () => server.sendPromptListChanged(),
41
27
  notifyResourceListChanged: () => server.sendResourceListChanged(),
42
- notifyResourceUpdated: (uri) => server.server.sendResourceUpdated({ uri }),
43
28
  notifyToolListChanged: () => server.sendToolListChanged(),
44
- requestScopedElicitation: protocolSession !== undefined,
45
- ...(protocolSession?.registerRequest && {
46
- registerRequest: protocolSession.registerRequest,
47
- }),
29
+ ...(subscriptions && { subscriptions }),
30
+ ...(bus && { bus }),
48
31
  };
49
32
  const context = requestContextService.createRequestContext({
50
33
  operation: 'ToolRegistry.registerAll',
51
34
  });
52
- const standardTools = [];
53
- const taskTools = [];
35
+ const tools = [];
54
36
  let disabledCount = 0;
55
37
  for (const def of this.toolDefs) {
56
38
  const disabled = getDisabledMetadata(def);
@@ -59,31 +41,15 @@ export class ToolRegistry {
59
41
  logger.debug(`Skipping MCP registration for disabled tool '${def.name}': ${disabled.reason}`, context);
60
42
  continue;
61
43
  }
62
- if (isTaskToolDefinition(def)) {
63
- taskTools.push(def);
64
- }
65
- else {
66
- standardTools.push(def);
67
- }
44
+ tools.push(def);
68
45
  }
69
46
  const disabledNote = disabledCount > 0 ? ` (${disabledCount} disabled, skipped)` : '';
70
- logger.debug(`Registering ${standardTools.length} regular tool(s) and ${taskTools.length} task tool(s)${disabledNote}...`, context);
71
- // The SDK only installs tools/list + tools/call handlers the first time a
72
- // non-task tool is registered. Initialize them up front so empty servers
73
- // and task-only servers still expose truthful MCP tool behavior.
74
- server.setToolRequestHandlers();
75
- // Register standard tools (regular and auto-task)
76
- for (const toolDef of standardTools) {
77
- if (toolDef.task) {
78
- await this.registerAutoTaskTool(server, toolDef, notifiers);
79
- }
80
- else {
81
- await this.registerTool(server, toolDef, notifiers);
82
- }
83
- }
84
- // Register escape-hatch task tools via experimental API
85
- for (const toolDef of taskTools) {
86
- await this.registerTaskTool(server, toolDef);
47
+ logger.debug(`Registering ${tools.length} tool(s)${disabledNote}...`, context);
48
+ // `tools/list` and `tools/call` are installed by the SDK from the declared
49
+ // `tools` capability, so a server with every tool disabled still answers
50
+ // `tools/list` with an empty array rather than `-32601`.
51
+ for (const toolDef of tools) {
52
+ await this.registerTool(server, toolDef, notifiers);
87
53
  }
88
54
  }
89
55
  /** Throws at startup if a tool with the same name was already registered. */
@@ -104,7 +70,7 @@ export class ToolRegistry {
104
70
  async registerTool(server, tool, notifiers) {
105
71
  const registrationContext = requestContextService.createRequestContext({
106
72
  operation: 'ToolRegistry.registerTool',
107
- toolName: tool.name,
73
+ additionalContext: { toolName: tool.name },
108
74
  });
109
75
  logger.debug(`Registering tool: '${tool.name}'`, registrationContext);
110
76
  this.assertUniqueName(tool.name);
@@ -119,7 +85,7 @@ export class ToolRegistry {
119
85
  title,
120
86
  description: tool.description,
121
87
  inputSchema: tool.input,
122
- outputSchema: effectiveOutputSchema(tool),
88
+ outputSchema: advertisedOutputSchema(tool),
123
89
  ...(tool.annotations && { annotations: tool.annotations }),
124
90
  ...(tool._meta && { _meta: tool._meta }),
125
91
  }, handler);
@@ -131,196 +97,5 @@ export class ToolRegistry {
131
97
  critical: true,
132
98
  });
133
99
  }
134
- /**
135
- * Registers a tool with `task: true` via the experimental Tasks API.
136
- * Auto-generates task handlers from the definition's `handler` function.
137
- * The framework manages the full task lifecycle: create, background run, store result.
138
- */
139
- async registerAutoTaskTool(server, tool, notifiers) {
140
- const registrationContext = requestContextService.createRequestContext({
141
- operation: 'ToolRegistry.registerAutoTaskTool',
142
- toolName: tool.name,
143
- });
144
- logger.debug(`Registering auto-task tool (task: true): '${tool.name}'`, registrationContext);
145
- this.assertUniqueName(tool.name);
146
- await ErrorHandler.tryCatch(() => {
147
- if (!this.services) {
148
- throw new Error(`Cannot register auto-task tool '${tool.name}': HandlerFactoryServices not provided to ToolRegistry`);
149
- }
150
- const services = this.services;
151
- const title = tool.title ?? tool.annotations?.title ?? this.deriveTitleFromName(tool.name);
152
- const taskTtlMs = config.tasks.defaultTtlMs ?? DEFAULT_AUTO_TASK_TTL_MS;
153
- const formatter = (result) => tool.format
154
- ? tool.format(result)
155
- : [{ type: 'text', text: JSON.stringify(result, null, 2) }];
156
- server.experimental.tasks.registerToolTask(tool.name, {
157
- title,
158
- description: tool.description,
159
- inputSchema: tool.input,
160
- outputSchema: effectiveOutputSchema(tool),
161
- ...(tool.annotations && { annotations: tool.annotations }),
162
- ...(tool._meta && { _meta: tool._meta }),
163
- execution: { taskSupport: 'optional' },
164
- }, {
165
- createTask: async (args, extra) => {
166
- // Capture auth info from the request's ALS before firing the
167
- // background handler — ALS is gone once we leave this scope.
168
- const callerAuth = authContext.getStore()?.authInfo;
169
- // Check inline auth scopes in the request path (inside ALS context)
170
- // before creating the task — not in the background handler.
171
- if (tool.auth && tool.auth.length > 0) {
172
- withRequiredScopes(tool.auth);
173
- }
174
- const validatedInput = tool.input.parse(args);
175
- const task = await extra.taskStore.createTask({
176
- ttl: taskTtlMs,
177
- pollInterval: 1000,
178
- });
179
- // Fire-and-forget: run handler in background
180
- void this.runAutoTaskHandler(tool, validatedInput, services, notifiers, formatter, {
181
- taskId: task.taskId,
182
- taskStore: extra.taskStore,
183
- ttlMs: taskTtlMs,
184
- callerAuth,
185
- });
186
- return { task };
187
- },
188
- getTask: async (_args, extra) => extra.taskStore.getTask(extra.taskId),
189
- getTaskResult: async (_args, extra) => (await extra.taskStore.getTaskResult(extra.taskId)),
190
- });
191
- logger.debug(`Auto-task tool '${tool.name}' registered successfully (experimental).`, registrationContext);
192
- }, {
193
- operation: `RegisteringAutoTaskTool_${tool.name}`,
194
- context: registrationContext,
195
- errorCode: JsonRpcErrorCode.InitializationFailed,
196
- critical: true,
197
- });
198
- }
199
- /**
200
- * Runs a tool handler as a background task.
201
- * Creates Context with `progress` and `signal`, stores result/error on completion.
202
- * Enforces a deadline matching the task entry TTL to prevent leaked resources.
203
- */
204
- async runAutoTaskHandler(tool, input, services, notifiers, formatter, opts) {
205
- const { taskId, taskStore, ttlMs, callerAuth } = opts;
206
- const abortController = new AbortController();
207
- // Enforce handler execution deadline matching the task entry TTL.
208
- // Uses setTimeout + AbortController for cross-runtime compatibility
209
- // (AbortSignal.timeout() can fail in Bun's stdio transport due to realm mismatch).
210
- const TIMEOUT_SENTINEL = Symbol.for('AUTO_TASK_TIMEOUT');
211
- const timeoutId = setTimeout(() => abortController.abort(TIMEOUT_SENTINEL), ttlMs);
212
- // Poll for cancellation every 2 seconds
213
- const cancelInterval = setInterval(async () => {
214
- try {
215
- const task = await taskStore.getTask(taskId);
216
- if (task.status === 'cancelled') {
217
- abortController.abort();
218
- }
219
- }
220
- catch {
221
- // Task may have been cleaned up — abort to unblock handler
222
- abortController.abort();
223
- }
224
- }, 2000);
225
- try {
226
- // Auth scopes are checked in createTask (inside the request's ALS context),
227
- // not here — this runs in a detached background context where ALS is gone.
228
- // We use the captured callerAuth to populate ctx.auth for identity access.
229
- const appContext = callerAuth
230
- ? requestContextService.withAuthInfo(callerAuth, {
231
- operation: 'AutoTaskHandler',
232
- toolName: tool.name,
233
- taskId,
234
- })
235
- : requestContextService.createRequestContext({
236
- operation: 'AutoTaskHandler',
237
- additionalContext: { toolName: tool.name, taskId },
238
- });
239
- // Mirror createToolHandler's ctx construction so auto-task handlers that
240
- // call `ctx.fail(...)` work — without `attachTypedFail` they would crash
241
- // with `ctx.fail is not a function` when the contract is declared.
242
- const ctx = attachTypedFail(createContext({
243
- appContext,
244
- logger: services.logger,
245
- storage: services.storage,
246
- signal: abortController.signal,
247
- taskCtx: { store: taskStore, taskId },
248
- notifyPromptListChanged: notifiers.notifyPromptListChanged,
249
- notifyResourceListChanged: notifiers.notifyResourceListChanged,
250
- notifyResourceUpdated: notifiers.notifyResourceUpdated,
251
- notifyToolListChanged: notifiers.notifyToolListChanged,
252
- }), tool.errors);
253
- const result = await Promise.resolve(tool.handler(input, ctx));
254
- const validatedResult = tool.output.parse(result);
255
- // Merge enrichment into structuredContent + append the content[] trailer,
256
- // mirroring the standard tool handler factory.
257
- const { content, structuredContent } = buildToolSuccessResult(tool, ctx, validatedResult, formatter(validatedResult));
258
- await taskStore.storeTaskResult(taskId, 'completed', { content, structuredContent });
259
- }
260
- catch (error) {
261
- // If cancelled, the SDK already set the terminal state — don't overwrite
262
- if (abortController.signal.aborted && abortController.signal.reason !== TIMEOUT_SENTINEL) {
263
- return;
264
- }
265
- // Route through ErrorHandler for OTel span, structured logging, and classification
266
- ErrorHandler.handleError(error, {
267
- operation: `auto-task:${tool.name}`,
268
- context: { taskId, toolName: tool.name },
269
- input,
270
- });
271
- try {
272
- const isTimeout = abortController.signal.reason === TIMEOUT_SENTINEL;
273
- const result = isTimeout
274
- ? buildToolErrorResult(JsonRpcErrorCode.Timeout, `Task timed out after ${ttlMs}ms`, undefined)
275
- : classifyAndBuildToolErrorResult(error);
276
- await taskStore.storeTaskResult(taskId, 'failed', result);
277
- }
278
- catch {
279
- // Task may already be in terminal state
280
- }
281
- }
282
- finally {
283
- clearTimeout(timeoutId);
284
- clearInterval(cancelInterval);
285
- // Ensure abort controller is released — signals any lingering listeners
286
- if (!abortController.signal.aborted) {
287
- abortController.abort();
288
- }
289
- }
290
- }
291
- /**
292
- * Registers a task-based tool with the MCP server via the experimental Tasks API.
293
- * Task tools support long-running async operations with polling for status and results.
294
- *
295
- * @experimental
296
- */
297
- async registerTaskTool(server, tool) {
298
- const registrationContext = requestContextService.createRequestContext({
299
- operation: 'ToolRegistry.registerTaskTool',
300
- toolName: tool.name,
301
- });
302
- logger.debug(`Registering task tool: '${tool.name}' (experimental)`, registrationContext);
303
- this.assertUniqueName(tool.name);
304
- await ErrorHandler.tryCatch(() => {
305
- const title = tool.title ?? tool.annotations?.title ?? this.deriveTitleFromName(tool.name);
306
- // TaskToolDefinition is the escape hatch for fully-custom task lifecycle
307
- // and does not declare an `errors[]` contract — `_meta` flows through unchanged.
308
- server.experimental.tasks.registerToolTask(tool.name, {
309
- title,
310
- description: tool.description,
311
- inputSchema: tool.input,
312
- ...(tool.output && { outputSchema: tool.output }),
313
- ...(tool.annotations && { annotations: tool.annotations }),
314
- ...(tool._meta && { _meta: tool._meta }),
315
- execution: tool.execution,
316
- }, tool.taskHandlers);
317
- logger.debug(`Task tool '${tool.name}' registered successfully (experimental).`, registrationContext);
318
- }, {
319
- operation: `RegisteringTaskTool_${tool.name}`,
320
- context: registrationContext,
321
- errorCode: JsonRpcErrorCode.InitializationFailed,
322
- critical: true,
323
- });
324
- }
325
100
  }
326
101
  //# sourceMappingURL=tool-registration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @fileoverview Runtime shape checks for the Zod roots a tool definition may
3
+ * declare. Zod 4 tags every schema with `_zod.def.type`, and a discriminated
4
+ * union tags as `'union'` like any other — the discriminator on its `def` is
5
+ * what separates the two. Kept in one place so the definition builder, the
6
+ * server manifest, and the linter agree on what a union root is.
7
+ * @module src/mcp-server/tools/utils/schemaShape
8
+ */
9
+ import type { ZodDiscriminatedUnion, ZodObject, ZodRawShape } from 'zod';
10
+ /** True when `value` is a `z.object()`. */
11
+ export declare function isZodObjectSchema(value: unknown): value is ZodObject<ZodRawShape>;
12
+ /**
13
+ * True when `value` is a `z.discriminatedUnion()`.
14
+ *
15
+ * A plain `z.union()` also tags as `'union'` but carries no `discriminator`, so
16
+ * the discriminator string is the distinguishing field. Only the discriminated
17
+ * form is accepted as a tool input root: a bare union gives the model no key to
18
+ * choose a branch by, and every variant's `required` list would apply at once.
19
+ */
20
+ export declare function isDiscriminatedUnionSchema(value: unknown): value is ZodDiscriminatedUnion<readonly ZodObject<ZodRawShape>[]>;
21
+ /**
22
+ * The object variants of a tool input root: the union's options, or the single
23
+ * object itself. Empty when the schema is neither — callers that lint or read
24
+ * shapes then have nothing to walk rather than a partial view.
25
+ */
26
+ export declare function inputVariants(schema: unknown): readonly ZodObject<ZodRawShape>[];
27
+ //# sourceMappingURL=schemaShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaShape.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAOzE,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,WAAW,CAAC,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAInE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAQhF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @fileoverview Runtime shape checks for the Zod roots a tool definition may
3
+ * declare. Zod 4 tags every schema with `_zod.def.type`, and a discriminated
4
+ * union tags as `'union'` like any other — the discriminator on its `def` is
5
+ * what separates the two. Kept in one place so the definition builder, the
6
+ * server manifest, and the linter agree on what a union root is.
7
+ * @module src/mcp-server/tools/utils/schemaShape
8
+ */
9
+ /** True when `value` is a `z.object()`. */
10
+ export function isZodObjectSchema(value) {
11
+ if (!value || typeof value !== 'object')
12
+ return false;
13
+ return value._zod?.def?.type === 'object';
14
+ }
15
+ /**
16
+ * True when `value` is a `z.discriminatedUnion()`.
17
+ *
18
+ * A plain `z.union()` also tags as `'union'` but carries no `discriminator`, so
19
+ * the discriminator string is the distinguishing field. Only the discriminated
20
+ * form is accepted as a tool input root: a bare union gives the model no key to
21
+ * choose a branch by, and every variant's `required` list would apply at once.
22
+ */
23
+ export function isDiscriminatedUnionSchema(value) {
24
+ if (!value || typeof value !== 'object')
25
+ return false;
26
+ const def = value._zod?.def;
27
+ return def?.type === 'union' && typeof def.discriminator === 'string';
28
+ }
29
+ /**
30
+ * The object variants of a tool input root: the union's options, or the single
31
+ * object itself. Empty when the schema is neither — callers that lint or read
32
+ * shapes then have nothing to walk rather than a partial view.
33
+ */
34
+ export function inputVariants(schema) {
35
+ if (isDiscriminatedUnionSchema(schema)) {
36
+ const options = schema.options;
37
+ return Array.isArray(options)
38
+ ? options.filter(isZodObjectSchema)
39
+ : [];
40
+ }
41
+ return isZodObjectSchema(schema) ? [schema] : [];
42
+ }
43
+ //# sourceMappingURL=schemaShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaShape.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,2CAA2C;AAC3C,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,OAAQ,KAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAI,KAAsB,CAAC,IAAI,EAAE,GAAG,CAAC;IAC9C,OAAO,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;QAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA8B;YACjE,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC"}
@@ -7,8 +7,8 @@
7
7
  * import the wrapper from the same `/tools` subpath as the builder.
8
8
  * @module src/mcp-server/tools/utils/toolDefinition
9
9
  */
10
- import type { ContentBlock } from '@modelcontextprotocol/sdk/types.js';
11
- import type { ZodObject, ZodRawShape, z } from 'zod';
10
+ import type { ContentBlock } from '@modelcontextprotocol/server';
11
+ import { type ZodDiscriminatedUnion, type ZodObject, type ZodRawShape, z } from 'zod';
12
12
  import type { HandlerContext, ReasonOf } from '../../../core/context.js';
13
13
  import type { ErrorContract } from '../../../types-global/errors.js';
14
14
  export { type DisabledMetadata, disabledTool } from './disabled-tool.js';
@@ -82,6 +82,23 @@ export type EnrichmentTrailerConfig<TEnrich extends ZodRawShape | undefined> = T
82
82
  render?(value: z.infer<TEnrich[K]>): string;
83
83
  };
84
84
  } : never;
85
+ /**
86
+ * What a tool may declare as its `input` root.
87
+ *
88
+ * A `z.object()` is the common shape. A `z.discriminatedUnion()` is the
89
+ * multi-mode shape: mutually exclusive argument sets with a literal
90
+ * discriminator and per-variant required fields. It advertises as
91
+ * `{"type":"object","oneOf":[<branch>, …]}` — branches intact, each carrying
92
+ * its own `required` and `const`-tagged discriminator — with identical bytes on
93
+ * a 2025-11-25 and a 2026-07-28 connection, since the legacy projection
94
+ * inspects `outputSchema` alone.
95
+ *
96
+ * Input roots may be unions; **output roots may not**. The 2025-era projection
97
+ * rewrites a non-object output root to `{ result: <natural> }` and wraps
98
+ * `structuredContent` to match, which would break the success path for every
99
+ * current client. `output` and `enrichment` stay `ZodObject`-only.
100
+ */
101
+ export type ToolInputSchema = ZodDiscriminatedUnion<readonly ZodObject<ZodRawShape>[]> | ZodObject<ZodRawShape>;
85
102
  /**
86
103
  * Represents the complete, self-contained definition of an MCP tool.
87
104
  *
@@ -94,7 +111,7 @@ export type EnrichmentTrailerConfig<TEnrich extends ZodRawShape | undefined> = T
94
111
  * none is declared). Its inferred fields type `ctx.enrich(...)` and are advertised
95
112
  * to clients as part of `outputSchema`.
96
113
  */
97
- export interface ToolDefinition<TInput extends ZodObject<ZodRawShape> = ZodObject<ZodRawShape>, TOutput extends ZodObject<ZodRawShape> = ZodObject<ZodRawShape>, TErrors extends readonly ErrorContract[] | undefined = undefined, TEnrich extends ZodRawShape | undefined = undefined> {
114
+ export interface ToolDefinition<TInput extends ToolInputSchema = ZodObject<ZodRawShape>, TOutput extends ZodObject<ZodRawShape> = ZodObject<ZodRawShape>, TErrors extends readonly ErrorContract[] | undefined = undefined, TEnrich extends ZodRawShape | undefined = undefined> {
98
115
  /** Protocol-level metadata (e.g., MCP Apps extension). */
99
116
  _meta?: Record<string, unknown>;
100
117
  /** UI/behavior hints for clients. */
@@ -193,7 +210,12 @@ export interface ToolDefinition<TInput extends ZodObject<ZodRawShape> = ZodObjec
193
210
  * types remain assignable to the type-erased `AnyToolDefinition` array.
194
211
  */
195
212
  handler(input: z.infer<TInput>, ctx: HandlerContext<ReasonOf<TErrors>, TEnrich>): Promise<z.infer<TOutput>> | z.infer<TOutput>;
196
- /** Zod schema for input validation. All fields need `.describe()`. */
213
+ /**
214
+ * Zod schema for input validation. All fields need `.describe()`.
215
+ *
216
+ * A `z.object()` root, or a `z.discriminatedUnion()` of object variants for a
217
+ * multi-mode tool — see {@link ToolInputSchema}.
218
+ */
197
219
  input: TInput;
198
220
  /** Programmatic unique name (snake_case). */
199
221
  name: string;
@@ -207,13 +229,11 @@ export interface ToolDefinition<TInput extends ZodObject<ZodRawShape> = ZodObjec
207
229
  * domain-namespaced subdirectories or a filename that doesn't mirror `name`).
208
230
  */
209
231
  sourceUrl?: string;
210
- /** When true, the framework manages task lifecycle automatically. */
211
- task?: boolean;
212
232
  /** Human-readable title for UI display. */
213
233
  title?: string;
214
234
  }
215
235
  /** Type-erased union for mixed arrays passed to createApp(). */
216
- export type AnyToolDefinition = ToolDefinition<ZodObject<ZodRawShape>, ZodObject<ZodRawShape>, readonly ErrorContract[] | undefined, ZodRawShape | undefined>;
236
+ export type AnyToolDefinition = ToolDefinition<ToolInputSchema, ZodObject<ZodRawShape>, readonly ErrorContract[] | undefined, ZodRawShape | undefined>;
217
237
  /**
218
238
  * Creates a tool definition with full type inference from Zod schemas.
219
239
  *
@@ -261,5 +281,5 @@ export type AnyToolDefinition = ToolDefinition<ZodObject<ZodRawShape>, ZodObject
261
281
  * });
262
282
  * ```
263
283
  */
264
- export declare function tool<TInput extends ZodObject<ZodRawShape>, TOutput extends ZodObject<ZodRawShape>, const TErrors extends readonly ErrorContract[] | undefined = undefined, const TEnrich extends ZodRawShape | undefined = undefined>(name: string, options: Omit<ToolDefinition<TInput, TOutput, TErrors, TEnrich>, 'name'>): ToolDefinition<TInput, TOutput, TErrors, TEnrich>;
284
+ export declare function tool<TInput extends ToolInputSchema, TOutput extends ZodObject<ZodRawShape>, const TErrors extends readonly ErrorContract[] | undefined = undefined, const TEnrich extends ZodRawShape | undefined = undefined>(name: string, options: Omit<ToolDefinition<TInput, TOutput, TErrors, TEnrich>, 'name'>): ToolDefinition<TInput, TOutput, TErrors, TEnrich>;
265
285
  //# sourceMappingURL=toolDefinition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolDefinition.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolDefinition.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@
7
7
  * import the wrapper from the same `/tools` subpath as the builder.
8
8
  * @module src/mcp-server/tools/utils/toolDefinition
9
9
  */
10
+ import { z } from 'zod';
11
+ import { isDiscriminatedUnionSchema } from './schemaShape.js';
10
12
  export { disabledTool } from './disabled-tool.js';
11
13
  // ---------------------------------------------------------------------------
12
14
  // Builder
@@ -59,6 +61,66 @@ export { disabledTool } from './disabled-tool.js';
59
61
  * ```
60
62
  */
61
63
  export function tool(name, options) {
62
- return { name, ...options };
64
+ assertErrorKeyUnreserved(name, options.output, options.enrichment);
65
+ return { name, ...options, input: strictenInput(options.input) };
66
+ }
67
+ /**
68
+ * Rejects a definition whose success payload declares a field named `error`.
69
+ *
70
+ * `structuredContent.error` is the framework's failure envelope on the wire, so a
71
+ * success field of the same name cannot be told apart from a failure by any
72
+ * client. It also breaks the advertised schema outright: the envelope overwrites
73
+ * the declared field, while the success branch still requires — and forbids —
74
+ * the same key, leaving a branch no result can satisfy.
75
+ *
76
+ * Thrown at definition time, so the conflict surfaces at import rather than as a
77
+ * client-side validation failure against a schema nothing matches.
78
+ */
79
+ function assertErrorKeyUnreserved(name, output, enrichment) {
80
+ const source = 'error' in output.shape
81
+ ? 'output'
82
+ : enrichment && 'error' in enrichment
83
+ ? 'enrichment'
84
+ : undefined;
85
+ if (!source)
86
+ return;
87
+ throw new Error(`Tool '${name}' declares an 'error' field in its ${source} schema. That key is ` +
88
+ 'reserved: a failed call returns `structuredContent.error` ({ code, message, ' +
89
+ 'data }), so a success payload using it is indistinguishable from a failure. ' +
90
+ "Rename the field (e.g. 'errorText', 'failureDetail').");
91
+ }
92
+ /**
93
+ * Applies strict semantics to a tool's input schema.
94
+ *
95
+ * An unrecognized argument key is rejected instead of silently stripped, and
96
+ * the advertised `inputSchema` carries `additionalProperties: false` to match.
97
+ * Stripping turns a caller's misspelled key into a wrong answer they cannot
98
+ * detect: the value vanishes before the handler runs and the call fails
99
+ * downstream pointing at the wrong problem (#232).
100
+ *
101
+ * Only the default (strip) mode is upgraded. A definition that explicitly
102
+ * declared `.passthrough()` or `.catchall(...)` asked for an open object, and
103
+ * that intent wins — Zod records it as a catchall type (a `ZodNever` catchall
104
+ * for `.strict()` itself), which is what this checks for.
105
+ *
106
+ * A discriminated-union root is strictened per variant, since the branch is
107
+ * where the properties live and `additionalProperties` is emitted. The union is
108
+ * rebuilt from the strictened options rather than mutated: Zod indexes variants
109
+ * by discriminator value at construction time, so replacing the options on a
110
+ * built union would leave the index pointing at the loose ones.
111
+ *
112
+ * Root-level only, matching `.strict()` itself: a nested `z.object()` inside
113
+ * the input still strips unless it is strict in its own right.
114
+ */
115
+ function strictenInput(input) {
116
+ if (isDiscriminatedUnionSchema(input)) {
117
+ const options = input.options;
118
+ const strictened = options.map((option) => option.def.catchall === undefined ? option.strict() : option);
119
+ if (strictened.every((option, i) => option === options[i]))
120
+ return input;
121
+ return z.discriminatedUnion(input.def.discriminator, strictened);
122
+ }
123
+ const declaresCatchall = input.def.catchall !== undefined;
124
+ return declaresCatchall ? input : input.strict();
63
125
  }
64
126
  //# sourceMappingURL=toolDefinition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolDefinition.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAyB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAiOzE,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,IAAI,CAMlB,IAAY,EACZ,OAAwE;IAExE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"toolDefinition.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAgE,CAAC,EAAE,MAAM,KAAK,CAAC;AAItF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAyB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwPzE,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,IAAI,CAMlB,IAAY,EACZ,OAAwE;IAExE,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,wBAAwB,CAC/B,IAAY,EACZ,MAA8B,EAC9B,UAAmC;IAEnC,MAAM,MAAM,GACV,OAAO,IAAI,MAAM,CAAC,KAAK;QACrB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,UAAU,IAAI,OAAO,IAAI,UAAU;YACnC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,sCAAsC,MAAM,uBAAuB;QAC9E,8EAA8E;QAC9E,8EAA8E;QAC9E,uDAAuD,CAC1D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,aAAa,CAAiC,KAAa;IAClE,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAA4C,CAAC;QACnE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAC7D,CAAC;QACF,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,UAAmB,CAAsB,CAAC;IACjG,CAAC;IACD,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC1D,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,KAAK,CAAC,MAAM,EAAa,CAAC;AAC/D,CAAC"}