@modelcontextprotocol/sdk 1.23.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/README.md +84 -1507
  2. package/dist/cjs/client/auth-extensions.d.ts +178 -0
  3. package/dist/cjs/client/auth-extensions.d.ts.map +1 -0
  4. package/dist/cjs/client/auth-extensions.js +300 -0
  5. package/dist/cjs/client/auth-extensions.js.map +1 -0
  6. package/dist/cjs/client/auth.d.ts +90 -2
  7. package/dist/cjs/client/auth.d.ts.map +1 -1
  8. package/dist/cjs/client/auth.js +131 -75
  9. package/dist/cjs/client/auth.js.map +1 -1
  10. package/dist/cjs/client/index.d.ts +122 -14
  11. package/dist/cjs/client/index.d.ts.map +1 -1
  12. package/dist/cjs/client/index.js +125 -3
  13. package/dist/cjs/client/index.js.map +1 -1
  14. package/dist/cjs/client/sse.d.ts.map +1 -1
  15. package/dist/cjs/client/sse.js +6 -2
  16. package/dist/cjs/client/sse.js.map +1 -1
  17. package/dist/cjs/client/stdio.d.ts +0 -1
  18. package/dist/cjs/client/stdio.d.ts.map +1 -1
  19. package/dist/cjs/client/stdio.js +36 -11
  20. package/dist/cjs/client/stdio.js.map +1 -1
  21. package/dist/cjs/client/streamableHttp.d.ts +1 -0
  22. package/dist/cjs/client/streamableHttp.d.ts.map +1 -1
  23. package/dist/cjs/client/streamableHttp.js +36 -15
  24. package/dist/cjs/client/streamableHttp.js.map +1 -1
  25. package/dist/cjs/examples/client/simpleClientCredentials.d.ts +20 -0
  26. package/dist/cjs/examples/client/simpleClientCredentials.d.ts.map +1 -0
  27. package/dist/cjs/examples/client/simpleClientCredentials.js +70 -0
  28. package/dist/cjs/examples/client/simpleClientCredentials.js.map +1 -0
  29. package/dist/cjs/examples/client/simpleOAuthClient.js +77 -1
  30. package/dist/cjs/examples/client/simpleOAuthClient.js.map +1 -1
  31. package/dist/cjs/examples/client/simpleStreamableHttp.js +74 -3
  32. package/dist/cjs/examples/client/simpleStreamableHttp.js.map +1 -1
  33. package/dist/cjs/examples/client/simpleTaskInteractiveClient.d.ts +10 -0
  34. package/dist/cjs/examples/client/simpleTaskInteractiveClient.d.ts.map +1 -0
  35. package/dist/cjs/examples/client/simpleTaskInteractiveClient.js +158 -0
  36. package/dist/cjs/examples/client/simpleTaskInteractiveClient.js.map +1 -0
  37. package/dist/cjs/examples/server/elicitationFormExample.js +2 -12
  38. package/dist/cjs/examples/server/elicitationFormExample.js.map +1 -1
  39. package/dist/cjs/examples/server/elicitationUrlExample.js +4 -3
  40. package/dist/cjs/examples/server/elicitationUrlExample.js.map +1 -1
  41. package/dist/cjs/examples/server/jsonResponseStreamableHttp.js +2 -12
  42. package/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -1
  43. package/dist/cjs/examples/server/simpleSseServer.js +2 -6
  44. package/dist/cjs/examples/server/simpleSseServer.js.map +1 -1
  45. package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js +2 -12
  46. package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js.map +1 -1
  47. package/dist/cjs/examples/server/simpleStreamableHttp.js +61 -21
  48. package/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -1
  49. package/dist/cjs/examples/server/simpleTaskInteractive.d.ts +12 -0
  50. package/dist/cjs/examples/server/simpleTaskInteractive.d.ts.map +1 -0
  51. package/dist/cjs/examples/server/simpleTaskInteractive.js +603 -0
  52. package/dist/cjs/examples/server/simpleTaskInteractive.js.map +1 -0
  53. package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +2 -12
  54. package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
  55. package/dist/cjs/examples/server/ssePollingExample.js +11 -25
  56. package/dist/cjs/examples/server/ssePollingExample.js.map +1 -1
  57. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +2 -6
  58. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
  59. package/dist/cjs/examples/server/toolWithSampleServer.js +7 -5
  60. package/dist/cjs/examples/server/toolWithSampleServer.js.map +1 -1
  61. package/dist/cjs/experimental/index.d.ts +13 -0
  62. package/dist/cjs/experimental/index.d.ts.map +1 -0
  63. package/dist/cjs/experimental/index.js +29 -0
  64. package/dist/cjs/experimental/index.js.map +1 -0
  65. package/dist/cjs/experimental/tasks/client.d.ts +121 -0
  66. package/dist/cjs/experimental/tasks/client.d.ts.map +1 -0
  67. package/dist/cjs/experimental/tasks/client.js +189 -0
  68. package/dist/cjs/experimental/tasks/client.js.map +1 -0
  69. package/dist/cjs/experimental/tasks/helpers.d.ts +47 -0
  70. package/dist/cjs/experimental/tasks/helpers.d.ts.map +1 -0
  71. package/dist/cjs/experimental/tasks/helpers.js +70 -0
  72. package/dist/cjs/experimental/tasks/helpers.js.map +1 -0
  73. package/dist/cjs/experimental/tasks/index.d.ts +16 -0
  74. package/dist/cjs/experimental/tasks/index.d.ts.map +1 -0
  75. package/dist/cjs/experimental/tasks/index.js +39 -0
  76. package/dist/cjs/experimental/tasks/index.js.map +1 -0
  77. package/dist/cjs/experimental/tasks/interfaces.d.ts +232 -0
  78. package/dist/cjs/experimental/tasks/interfaces.d.ts.map +1 -0
  79. package/dist/cjs/experimental/tasks/interfaces.js +19 -0
  80. package/dist/cjs/experimental/tasks/interfaces.js.map +1 -0
  81. package/dist/cjs/experimental/tasks/mcp-server.d.ts +77 -0
  82. package/dist/cjs/experimental/tasks/mcp-server.d.ts.map +1 -0
  83. package/dist/cjs/experimental/tasks/mcp-server.js +36 -0
  84. package/dist/cjs/experimental/tasks/mcp-server.js.map +1 -0
  85. package/dist/cjs/experimental/tasks/server.d.ts +83 -0
  86. package/dist/cjs/experimental/tasks/server.d.ts.map +1 -0
  87. package/dist/cjs/experimental/tasks/server.js +93 -0
  88. package/dist/cjs/experimental/tasks/server.js.map +1 -0
  89. package/dist/cjs/experimental/tasks/stores/in-memory.d.ts +94 -0
  90. package/dist/cjs/experimental/tasks/stores/in-memory.d.ts.map +1 -0
  91. package/dist/cjs/experimental/tasks/stores/in-memory.js +253 -0
  92. package/dist/cjs/experimental/tasks/stores/in-memory.js.map +1 -0
  93. package/dist/cjs/experimental/tasks/types.d.ts +10 -0
  94. package/dist/cjs/experimental/tasks/types.d.ts.map +1 -0
  95. package/dist/cjs/experimental/tasks/types.js +28 -0
  96. package/dist/cjs/experimental/tasks/types.js.map +1 -0
  97. package/dist/cjs/server/auth/errors.d.ts +7 -0
  98. package/dist/cjs/server/auth/errors.d.ts.map +1 -1
  99. package/dist/cjs/server/auth/errors.js +11 -2
  100. package/dist/cjs/server/auth/errors.js.map +1 -1
  101. package/dist/cjs/server/auth/handlers/token.d.ts.map +1 -1
  102. package/dist/cjs/server/auth/handlers/token.js +2 -2
  103. package/dist/cjs/server/auth/handlers/token.js.map +1 -1
  104. package/dist/cjs/server/auth/middleware/clientAuth.d.ts.map +1 -1
  105. package/dist/cjs/server/auth/middleware/clientAuth.js +0 -4
  106. package/dist/cjs/server/auth/middleware/clientAuth.js.map +1 -1
  107. package/dist/cjs/server/auth/providers/proxyProvider.d.ts.map +1 -1
  108. package/dist/cjs/server/auth/providers/proxyProvider.js +8 -4
  109. package/dist/cjs/server/auth/providers/proxyProvider.js.map +1 -1
  110. package/dist/cjs/server/auth/router.d.ts.map +1 -1
  111. package/dist/cjs/server/auth/router.js +7 -1
  112. package/dist/cjs/server/auth/router.js.map +1 -1
  113. package/dist/cjs/server/index.d.ts +91 -168
  114. package/dist/cjs/server/index.d.ts.map +1 -1
  115. package/dist/cjs/server/index.js +162 -0
  116. package/dist/cjs/server/index.js.map +1 -1
  117. package/dist/cjs/server/mcp.d.ts +41 -6
  118. package/dist/cjs/server/mcp.d.ts.map +1 -1
  119. package/dist/cjs/server/mcp.js +203 -48
  120. package/dist/cjs/server/mcp.js.map +1 -1
  121. package/dist/cjs/server/middleware/hostHeaderValidation.d.ts +32 -0
  122. package/dist/cjs/server/middleware/hostHeaderValidation.d.ts.map +1 -0
  123. package/dist/cjs/server/middleware/hostHeaderValidation.js +80 -0
  124. package/dist/cjs/server/middleware/hostHeaderValidation.js.map +1 -0
  125. package/dist/cjs/server/sse.d.ts +6 -0
  126. package/dist/cjs/server/sse.d.ts.map +1 -1
  127. package/dist/cjs/server/sse.js +3 -3
  128. package/dist/cjs/server/sse.js.map +1 -1
  129. package/dist/cjs/server/stdio.d.ts +1 -1
  130. package/dist/cjs/server/stdio.js +1 -1
  131. package/dist/cjs/server/streamableHttp.d.ts +11 -0
  132. package/dist/cjs/server/streamableHttp.d.ts.map +1 -1
  133. package/dist/cjs/server/streamableHttp.js +30 -7
  134. package/dist/cjs/server/streamableHttp.js.map +1 -1
  135. package/dist/cjs/server/zod-compat.d.ts +1 -1
  136. package/dist/cjs/server/zod-compat.d.ts.map +1 -1
  137. package/dist/cjs/server/zod-compat.js +2 -2
  138. package/dist/cjs/server/zod-compat.js.map +1 -1
  139. package/dist/cjs/shared/auth.d.ts +1 -1
  140. package/dist/cjs/shared/auth.js +1 -1
  141. package/dist/cjs/shared/auth.js.map +1 -1
  142. package/dist/cjs/shared/protocol.d.ts +220 -3
  143. package/dist/cjs/shared/protocol.d.ts.map +1 -1
  144. package/dist/cjs/shared/protocol.js +699 -38
  145. package/dist/cjs/shared/protocol.js.map +1 -1
  146. package/dist/cjs/shared/responseMessage.d.ts +45 -0
  147. package/dist/cjs/shared/responseMessage.d.ts.map +1 -0
  148. package/dist/cjs/shared/responseMessage.js +23 -0
  149. package/dist/cjs/shared/responseMessage.js.map +1 -0
  150. package/dist/cjs/shared/transport.d.ts +1 -1
  151. package/dist/cjs/types.d.ts +2369 -73
  152. package/dist/cjs/types.d.ts.map +1 -1
  153. package/dist/cjs/types.js +310 -18
  154. package/dist/cjs/types.js.map +1 -1
  155. package/dist/esm/client/auth-extensions.d.ts +178 -0
  156. package/dist/esm/client/auth-extensions.d.ts.map +1 -0
  157. package/dist/esm/client/auth-extensions.js +270 -0
  158. package/dist/esm/client/auth-extensions.js.map +1 -0
  159. package/dist/esm/client/auth.d.ts +90 -2
  160. package/dist/esm/client/auth.d.ts.map +1 -1
  161. package/dist/esm/client/auth.js +129 -75
  162. package/dist/esm/client/auth.js.map +1 -1
  163. package/dist/esm/client/index.d.ts +122 -14
  164. package/dist/esm/client/index.d.ts.map +1 -1
  165. package/dist/esm/client/index.js +126 -4
  166. package/dist/esm/client/index.js.map +1 -1
  167. package/dist/esm/client/sse.d.ts.map +1 -1
  168. package/dist/esm/client/sse.js +7 -3
  169. package/dist/esm/client/sse.js.map +1 -1
  170. package/dist/esm/client/stdio.d.ts +0 -1
  171. package/dist/esm/client/stdio.d.ts.map +1 -1
  172. package/dist/esm/client/stdio.js +36 -11
  173. package/dist/esm/client/stdio.js.map +1 -1
  174. package/dist/esm/client/streamableHttp.d.ts +1 -0
  175. package/dist/esm/client/streamableHttp.d.ts.map +1 -1
  176. package/dist/esm/client/streamableHttp.js +36 -15
  177. package/dist/esm/client/streamableHttp.js.map +1 -1
  178. package/dist/esm/examples/client/simpleClientCredentials.d.ts +20 -0
  179. package/dist/esm/examples/client/simpleClientCredentials.d.ts.map +1 -0
  180. package/dist/esm/examples/client/simpleClientCredentials.js +68 -0
  181. package/dist/esm/examples/client/simpleClientCredentials.js.map +1 -0
  182. package/dist/esm/examples/client/simpleOAuthClient.js +77 -1
  183. package/dist/esm/examples/client/simpleOAuthClient.js.map +1 -1
  184. package/dist/esm/examples/client/simpleStreamableHttp.js +75 -4
  185. package/dist/esm/examples/client/simpleStreamableHttp.js.map +1 -1
  186. package/dist/esm/examples/client/simpleTaskInteractiveClient.d.ts +10 -0
  187. package/dist/esm/examples/client/simpleTaskInteractiveClient.d.ts.map +1 -0
  188. package/dist/esm/examples/client/simpleTaskInteractiveClient.js +156 -0
  189. package/dist/esm/examples/client/simpleTaskInteractiveClient.js.map +1 -0
  190. package/dist/esm/examples/server/elicitationFormExample.js +2 -9
  191. package/dist/esm/examples/server/elicitationFormExample.js.map +1 -1
  192. package/dist/esm/examples/server/elicitationUrlExample.js +4 -3
  193. package/dist/esm/examples/server/elicitationUrlExample.js.map +1 -1
  194. package/dist/esm/examples/server/jsonResponseStreamableHttp.js +2 -9
  195. package/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -1
  196. package/dist/esm/examples/server/simpleSseServer.js +2 -3
  197. package/dist/esm/examples/server/simpleSseServer.js.map +1 -1
  198. package/dist/esm/examples/server/simpleStatelessStreamableHttp.js +2 -9
  199. package/dist/esm/examples/server/simpleStatelessStreamableHttp.js.map +1 -1
  200. package/dist/esm/examples/server/simpleStreamableHttp.js +62 -19
  201. package/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -1
  202. package/dist/esm/examples/server/simpleTaskInteractive.d.ts +12 -0
  203. package/dist/esm/examples/server/simpleTaskInteractive.d.ts.map +1 -0
  204. package/dist/esm/examples/server/simpleTaskInteractive.js +601 -0
  205. package/dist/esm/examples/server/simpleTaskInteractive.js.map +1 -0
  206. package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +2 -9
  207. package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
  208. package/dist/esm/examples/server/ssePollingExample.js +11 -25
  209. package/dist/esm/examples/server/ssePollingExample.js.map +1 -1
  210. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +2 -3
  211. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
  212. package/dist/esm/examples/server/toolWithSampleServer.js +7 -5
  213. package/dist/esm/examples/server/toolWithSampleServer.js.map +1 -1
  214. package/dist/esm/experimental/index.d.ts +13 -0
  215. package/dist/esm/experimental/index.d.ts.map +1 -0
  216. package/dist/esm/experimental/index.js +13 -0
  217. package/dist/esm/experimental/index.js.map +1 -0
  218. package/dist/esm/experimental/tasks/client.d.ts +121 -0
  219. package/dist/esm/experimental/tasks/client.d.ts.map +1 -0
  220. package/dist/esm/experimental/tasks/client.js +185 -0
  221. package/dist/esm/experimental/tasks/client.js.map +1 -0
  222. package/dist/esm/experimental/tasks/helpers.d.ts +47 -0
  223. package/dist/esm/experimental/tasks/helpers.d.ts.map +1 -0
  224. package/dist/esm/experimental/tasks/helpers.js +66 -0
  225. package/dist/esm/experimental/tasks/helpers.js.map +1 -0
  226. package/dist/esm/experimental/tasks/index.d.ts +16 -0
  227. package/dist/esm/experimental/tasks/index.d.ts.map +1 -0
  228. package/dist/esm/experimental/tasks/index.js +20 -0
  229. package/dist/esm/experimental/tasks/index.js.map +1 -0
  230. package/dist/esm/experimental/tasks/interfaces.d.ts +232 -0
  231. package/dist/esm/experimental/tasks/interfaces.d.ts.map +1 -0
  232. package/dist/esm/experimental/tasks/interfaces.js +16 -0
  233. package/dist/esm/experimental/tasks/interfaces.js.map +1 -0
  234. package/dist/esm/experimental/tasks/mcp-server.d.ts +77 -0
  235. package/dist/esm/experimental/tasks/mcp-server.d.ts.map +1 -0
  236. package/dist/esm/experimental/tasks/mcp-server.js +32 -0
  237. package/dist/esm/experimental/tasks/mcp-server.js.map +1 -0
  238. package/dist/esm/experimental/tasks/server.d.ts +83 -0
  239. package/dist/esm/experimental/tasks/server.d.ts.map +1 -0
  240. package/dist/esm/experimental/tasks/server.js +89 -0
  241. package/dist/esm/experimental/tasks/server.js.map +1 -0
  242. package/dist/esm/experimental/tasks/stores/in-memory.d.ts +94 -0
  243. package/dist/esm/experimental/tasks/stores/in-memory.d.ts.map +1 -0
  244. package/dist/esm/experimental/tasks/stores/in-memory.js +248 -0
  245. package/dist/esm/experimental/tasks/stores/in-memory.js.map +1 -0
  246. package/dist/esm/experimental/tasks/types.d.ts +10 -0
  247. package/dist/esm/experimental/tasks/types.d.ts.map +1 -0
  248. package/dist/esm/experimental/tasks/types.js +10 -0
  249. package/dist/esm/experimental/tasks/types.js.map +1 -0
  250. package/dist/esm/server/auth/errors.d.ts +7 -0
  251. package/dist/esm/server/auth/errors.d.ts.map +1 -1
  252. package/dist/esm/server/auth/errors.js +9 -1
  253. package/dist/esm/server/auth/errors.js.map +1 -1
  254. package/dist/esm/server/auth/handlers/token.d.ts.map +1 -1
  255. package/dist/esm/server/auth/handlers/token.js +2 -2
  256. package/dist/esm/server/auth/handlers/token.js.map +1 -1
  257. package/dist/esm/server/auth/middleware/clientAuth.d.ts.map +1 -1
  258. package/dist/esm/server/auth/middleware/clientAuth.js +0 -4
  259. package/dist/esm/server/auth/middleware/clientAuth.js.map +1 -1
  260. package/dist/esm/server/auth/providers/proxyProvider.d.ts.map +1 -1
  261. package/dist/esm/server/auth/providers/proxyProvider.js +8 -4
  262. package/dist/esm/server/auth/providers/proxyProvider.js.map +1 -1
  263. package/dist/esm/server/auth/router.d.ts.map +1 -1
  264. package/dist/esm/server/auth/router.js +7 -1
  265. package/dist/esm/server/auth/router.js.map +1 -1
  266. package/dist/esm/server/index.d.ts +91 -168
  267. package/dist/esm/server/index.d.ts.map +1 -1
  268. package/dist/esm/server/index.js +159 -1
  269. package/dist/esm/server/index.js.map +1 -1
  270. package/dist/esm/server/mcp.d.ts +41 -6
  271. package/dist/esm/server/mcp.d.ts.map +1 -1
  272. package/dist/esm/server/mcp.js +203 -48
  273. package/dist/esm/server/mcp.js.map +1 -1
  274. package/dist/esm/server/middleware/hostHeaderValidation.d.ts +32 -0
  275. package/dist/esm/server/middleware/hostHeaderValidation.d.ts.map +1 -0
  276. package/dist/esm/server/middleware/hostHeaderValidation.js +76 -0
  277. package/dist/esm/server/middleware/hostHeaderValidation.js.map +1 -0
  278. package/dist/esm/server/sse.d.ts +6 -0
  279. package/dist/esm/server/sse.d.ts.map +1 -1
  280. package/dist/esm/server/sse.js +2 -2
  281. package/dist/esm/server/sse.js.map +1 -1
  282. package/dist/esm/server/stdio.d.ts +1 -1
  283. package/dist/esm/server/stdio.js +1 -1
  284. package/dist/esm/server/streamableHttp.d.ts +11 -0
  285. package/dist/esm/server/streamableHttp.d.ts.map +1 -1
  286. package/dist/esm/server/streamableHttp.js +30 -7
  287. package/dist/esm/server/streamableHttp.js.map +1 -1
  288. package/dist/esm/server/zod-compat.d.ts +1 -1
  289. package/dist/esm/server/zod-compat.d.ts.map +1 -1
  290. package/dist/esm/server/zod-compat.js +2 -2
  291. package/dist/esm/server/zod-compat.js.map +1 -1
  292. package/dist/esm/shared/auth.d.ts +1 -1
  293. package/dist/esm/shared/auth.js +1 -1
  294. package/dist/esm/shared/auth.js.map +1 -1
  295. package/dist/esm/shared/protocol.d.ts +220 -3
  296. package/dist/esm/shared/protocol.d.ts.map +1 -1
  297. package/dist/esm/shared/protocol.js +700 -39
  298. package/dist/esm/shared/protocol.js.map +1 -1
  299. package/dist/esm/shared/responseMessage.d.ts +45 -0
  300. package/dist/esm/shared/responseMessage.d.ts.map +1 -0
  301. package/dist/esm/shared/responseMessage.js +19 -0
  302. package/dist/esm/shared/responseMessage.js.map +1 -0
  303. package/dist/esm/shared/transport.d.ts +1 -1
  304. package/dist/esm/types.d.ts +2369 -73
  305. package/dist/esm/types.d.ts.map +1 -1
  306. package/dist/esm/types.js +306 -15
  307. package/dist/esm/types.js.map +1 -1
  308. package/package.json +12 -1
  309. package/dist/cjs/shared/zodTestMatrix.d.ts +0 -16
  310. package/dist/cjs/shared/zodTestMatrix.d.ts.map +0 -1
  311. package/dist/cjs/shared/zodTestMatrix.js +0 -43
  312. package/dist/cjs/shared/zodTestMatrix.js.map +0 -1
  313. package/dist/esm/shared/zodTestMatrix.d.ts +0 -16
  314. package/dist/esm/shared/zodTestMatrix.d.ts.map +0 -1
  315. package/dist/esm/shared/zodTestMatrix.js +0 -17
  316. package/dist/esm/shared/zodTestMatrix.js.map +0 -1
@@ -5,6 +5,7 @@ import { McpError, ErrorCode, ListResourceTemplatesRequestSchema, ReadResourceRe
5
5
  import { isCompletable, getCompleter } from './completable.js';
6
6
  import { UriTemplate } from '../shared/uriTemplate.js';
7
7
  import { validateAndWarnToolName } from '../shared/toolNameValidation.js';
8
+ import { ExperimentalMcpServerTasks } from '../experimental/tasks/mcp-server.js';
8
9
  /**
9
10
  * High-level MCP server that provides a simpler API for working with resources, tools, and prompts.
10
11
  * For advanced usage (like sending notifications or setting custom request handlers), use the underlying
@@ -22,6 +23,21 @@ export class McpServer {
22
23
  this._promptHandlersInitialized = false;
23
24
  this.server = new Server(serverInfo, options);
24
25
  }
26
+ /**
27
+ * Access experimental features.
28
+ *
29
+ * WARNING: These APIs are experimental and may change without notice.
30
+ *
31
+ * @experimental
32
+ */
33
+ get experimental() {
34
+ if (!this._experimental) {
35
+ this._experimental = {
36
+ tasks: new ExperimentalMcpServerTasks(this)
37
+ };
38
+ }
39
+ return this._experimental;
40
+ }
25
41
  /**
26
42
  * Attaches to the given transport, starts it, and starts listening for messages.
27
43
  *
@@ -65,6 +81,7 @@ export class McpServer {
65
81
  : EMPTY_OBJECT_JSON_SCHEMA;
66
82
  })(),
67
83
  annotations: tool.annotations,
84
+ execution: tool.execution,
68
85
  _meta: tool._meta
69
86
  };
70
87
  if (tool.outputSchema) {
@@ -80,43 +97,40 @@ export class McpServer {
80
97
  })
81
98
  }));
82
99
  this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
83
- const tool = this._registeredTools[request.params.name];
84
- let result;
100
+ var _a;
85
101
  try {
102
+ const tool = this._registeredTools[request.params.name];
86
103
  if (!tool) {
87
104
  throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`);
88
105
  }
89
106
  if (!tool.enabled) {
90
107
  throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} disabled`);
91
108
  }
92
- if (tool.inputSchema) {
93
- const cb = tool.callback;
94
- // Try to normalize to object schema first (for raw shapes and object schemas)
95
- // If that fails, use the schema directly (for union/intersection/etc)
96
- const inputObj = normalizeObjectSchema(tool.inputSchema);
97
- const schemaToParse = inputObj !== null && inputObj !== void 0 ? inputObj : tool.inputSchema;
98
- const parseResult = await safeParseAsync(schemaToParse, request.params.arguments);
99
- if (!parseResult.success) {
100
- throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${request.params.name}: ${getParseErrorMessage(parseResult.error)}`);
101
- }
102
- const args = parseResult.data;
103
- result = await Promise.resolve(cb(args, extra));
109
+ const isTaskRequest = !!request.params.task;
110
+ const taskSupport = (_a = tool.execution) === null || _a === void 0 ? void 0 : _a.taskSupport;
111
+ const isTaskHandler = 'createTask' in tool.handler;
112
+ // Validate task hint configuration
113
+ if ((taskSupport === 'required' || taskSupport === 'optional') && !isTaskHandler) {
114
+ throw new McpError(ErrorCode.InternalError, `Tool ${request.params.name} has taskSupport '${taskSupport}' but was not registered with registerToolTask`);
104
115
  }
105
- else {
106
- const cb = tool.callback;
107
- result = await Promise.resolve(cb(extra));
116
+ // Handle taskSupport 'required' without task augmentation
117
+ if (taskSupport === 'required' && !isTaskRequest) {
118
+ throw new McpError(ErrorCode.MethodNotFound, `Tool ${request.params.name} requires task augmentation (taskSupport: 'required')`);
108
119
  }
109
- if (tool.outputSchema && !result.isError) {
110
- if (!result.structuredContent) {
111
- throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${request.params.name} has an output schema but no structured content was provided`);
112
- }
113
- // if the tool has an output schema, validate structured content
114
- const outputObj = normalizeObjectSchema(tool.outputSchema);
115
- const parseResult = await safeParseAsync(outputObj, result.structuredContent);
116
- if (!parseResult.success) {
117
- throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${request.params.name}: ${getParseErrorMessage(parseResult.error)}`);
118
- }
120
+ // Handle taskSupport 'optional' without task augmentation - automatic polling
121
+ if (taskSupport === 'optional' && !isTaskRequest && isTaskHandler) {
122
+ return await this.handleAutomaticTaskPolling(tool, request, extra);
123
+ }
124
+ // Normal execution path
125
+ const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);
126
+ const result = await this.executeToolHandler(tool, args, extra);
127
+ // Return CreateTaskResult immediately for task requests
128
+ if (isTaskRequest) {
129
+ return result;
119
130
  }
131
+ // Validate output schema for non-task requests
132
+ await this.validateToolOutput(tool, result, request.params.name);
133
+ return result;
120
134
  }
121
135
  catch (error) {
122
136
  if (error instanceof McpError) {
@@ -126,7 +140,6 @@ export class McpServer {
126
140
  }
127
141
  return this.createToolError(error instanceof Error ? error.message : String(error));
128
142
  }
129
- return result;
130
143
  });
131
144
  this._toolHandlersInitialized = true;
132
145
  }
@@ -147,6 +160,115 @@ export class McpServer {
147
160
  isError: true
148
161
  };
149
162
  }
163
+ /**
164
+ * Validates tool input arguments against the tool's input schema.
165
+ */
166
+ async validateToolInput(tool, args, toolName) {
167
+ if (!tool.inputSchema) {
168
+ return undefined;
169
+ }
170
+ // Try to normalize to object schema first (for raw shapes and object schemas)
171
+ // If that fails, use the schema directly (for union/intersection/etc)
172
+ const inputObj = normalizeObjectSchema(tool.inputSchema);
173
+ const schemaToParse = inputObj !== null && inputObj !== void 0 ? inputObj : tool.inputSchema;
174
+ const parseResult = await safeParseAsync(schemaToParse, args);
175
+ if (!parseResult.success) {
176
+ const error = 'error' in parseResult ? parseResult.error : 'Unknown error';
177
+ const errorMessage = getParseErrorMessage(error);
178
+ throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${toolName}: ${errorMessage}`);
179
+ }
180
+ return parseResult.data;
181
+ }
182
+ /**
183
+ * Validates tool output against the tool's output schema.
184
+ */
185
+ async validateToolOutput(tool, result, toolName) {
186
+ if (!tool.outputSchema) {
187
+ return;
188
+ }
189
+ // Only validate CallToolResult, not CreateTaskResult
190
+ if (!('content' in result)) {
191
+ return;
192
+ }
193
+ if (result.isError) {
194
+ return;
195
+ }
196
+ if (!result.structuredContent) {
197
+ throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${toolName} has an output schema but no structured content was provided`);
198
+ }
199
+ // if the tool has an output schema, validate structured content
200
+ const outputObj = normalizeObjectSchema(tool.outputSchema);
201
+ const parseResult = await safeParseAsync(outputObj, result.structuredContent);
202
+ if (!parseResult.success) {
203
+ const error = 'error' in parseResult ? parseResult.error : 'Unknown error';
204
+ const errorMessage = getParseErrorMessage(error);
205
+ throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${toolName}: ${errorMessage}`);
206
+ }
207
+ }
208
+ /**
209
+ * Executes a tool handler (either regular or task-based).
210
+ */
211
+ async executeToolHandler(tool, args, extra) {
212
+ const handler = tool.handler;
213
+ const isTaskHandler = 'createTask' in handler;
214
+ if (isTaskHandler) {
215
+ if (!extra.taskStore) {
216
+ throw new Error('No task store provided.');
217
+ }
218
+ const taskExtra = { ...extra, taskStore: extra.taskStore };
219
+ if (tool.inputSchema) {
220
+ const typedHandler = handler;
221
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
222
+ return await Promise.resolve(typedHandler.createTask(args, taskExtra));
223
+ }
224
+ else {
225
+ const typedHandler = handler;
226
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
227
+ return await Promise.resolve(typedHandler.createTask(taskExtra));
228
+ }
229
+ }
230
+ if (tool.inputSchema) {
231
+ const typedHandler = handler;
232
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
233
+ return await Promise.resolve(typedHandler(args, extra));
234
+ }
235
+ else {
236
+ const typedHandler = handler;
237
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
238
+ return await Promise.resolve(typedHandler(extra));
239
+ }
240
+ }
241
+ /**
242
+ * Handles automatic task polling for tools with taskSupport 'optional'.
243
+ */
244
+ async handleAutomaticTaskPolling(tool, request, extra) {
245
+ var _a;
246
+ if (!extra.taskStore) {
247
+ throw new Error('No task store provided for task-capable tool.');
248
+ }
249
+ // Validate input and create task
250
+ const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);
251
+ const handler = tool.handler;
252
+ const taskExtra = { ...extra, taskStore: extra.taskStore };
253
+ const createTaskResult = args // undefined only if tool.inputSchema is undefined
254
+ ? await Promise.resolve(handler.createTask(args, taskExtra))
255
+ : // eslint-disable-next-line @typescript-eslint/no-explicit-any
256
+ await Promise.resolve(handler.createTask(taskExtra));
257
+ // Poll until completion
258
+ const taskId = createTaskResult.task.taskId;
259
+ let task = createTaskResult.task;
260
+ const pollInterval = (_a = task.pollInterval) !== null && _a !== void 0 ? _a : 5000;
261
+ while (task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled') {
262
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
263
+ const updatedTask = await extra.taskStore.getTask(taskId);
264
+ if (!updatedTask) {
265
+ throw new McpError(ErrorCode.InternalError, `Task ${taskId} not found during polling`);
266
+ }
267
+ task = updatedTask;
268
+ }
269
+ // Return the final result
270
+ return (await extra.taskStore.getTaskResult(taskId));
271
+ }
150
272
  setCompletionRequestHandler() {
151
273
  if (this._completionHandlerInitialized) {
152
274
  return;
@@ -309,7 +431,9 @@ export class McpServer {
309
431
  const argsObj = normalizeObjectSchema(prompt.argsSchema);
310
432
  const parseResult = await safeParseAsync(argsObj, request.params.arguments);
311
433
  if (!parseResult.success) {
312
- throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${getParseErrorMessage(parseResult.error)}`);
434
+ const error = 'error' in parseResult ? parseResult.error : 'Unknown error';
435
+ const errorMessage = getParseErrorMessage(error);
436
+ throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${errorMessage}`);
313
437
  }
314
438
  const args = parseResult.data;
315
439
  const cb = prompt.callback;
@@ -317,6 +441,7 @@ export class McpServer {
317
441
  }
318
442
  else {
319
443
  const cb = prompt.callback;
444
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
320
445
  return await Promise.resolve(cb(extra));
321
446
  }
322
447
  });
@@ -464,7 +589,7 @@ export class McpServer {
464
589
  this._registeredPrompts[name] = registeredPrompt;
465
590
  return registeredPrompt;
466
591
  }
467
- _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, _meta, callback) {
592
+ _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, execution, _meta, handler) {
468
593
  // Validate tool name according to SEP specification
469
594
  validateAndWarnToolName(name);
470
595
  const registeredTool = {
@@ -473,8 +598,9 @@ export class McpServer {
473
598
  inputSchema: getZodSchemaObject(inputSchema),
474
599
  outputSchema: getZodSchemaObject(outputSchema),
475
600
  annotations,
601
+ execution,
476
602
  _meta,
477
- callback,
603
+ handler: handler,
478
604
  enabled: true,
479
605
  disable: () => registeredTool.update({ enabled: false }),
480
606
  enable: () => registeredTool.update({ enabled: true }),
@@ -495,7 +621,7 @@ export class McpServer {
495
621
  if (typeof updates.paramsSchema !== 'undefined')
496
622
  registeredTool.inputSchema = objectFromShape(updates.paramsSchema);
497
623
  if (typeof updates.callback !== 'undefined')
498
- registeredTool.callback = updates.callback;
624
+ registeredTool.handler = updates.callback;
499
625
  if (typeof updates.annotations !== 'undefined')
500
626
  registeredTool.annotations = updates.annotations;
501
627
  if (typeof updates._meta !== 'undefined')
@@ -531,25 +657,25 @@ export class McpServer {
531
657
  if (rest.length > 1) {
532
658
  // We have at least one more arg before the callback
533
659
  const firstArg = rest[0];
534
- if (isZodRawShape(firstArg)) {
660
+ if (isZodRawShapeCompat(firstArg)) {
535
661
  // We have a params schema as the first arg
536
662
  inputSchema = rest.shift();
537
663
  // Check if the next arg is potentially annotations
538
- if (rest.length > 1 && typeof rest[0] === 'object' && rest[0] !== null && !isZodRawShape(rest[0])) {
664
+ if (rest.length > 1 && typeof rest[0] === 'object' && rest[0] !== null && !isZodRawShapeCompat(rest[0])) {
539
665
  // Case: tool(name, paramsSchema, annotations, cb)
540
666
  // Or: tool(name, description, paramsSchema, annotations, cb)
541
667
  annotations = rest.shift();
542
668
  }
543
669
  }
544
670
  else if (typeof firstArg === 'object' && firstArg !== null) {
545
- // Not a ZodRawShape, so must be annotations in this position
671
+ // Not a ZodRawShapeCompat, so must be annotations in this position
546
672
  // Case: tool(name, annotations, cb)
547
673
  // Or: tool(name, description, annotations, cb)
548
674
  annotations = rest.shift();
549
675
  }
550
676
  }
551
677
  const callback = rest[0];
552
- return this._createRegisteredTool(name, undefined, description, inputSchema, outputSchema, annotations, undefined, callback);
678
+ return this._createRegisteredTool(name, undefined, description, inputSchema, outputSchema, annotations, { taskSupport: 'forbidden' }, undefined, callback);
553
679
  }
554
680
  /**
555
681
  * Registers a tool with a config object and callback.
@@ -559,7 +685,7 @@ export class McpServer {
559
685
  throw new Error(`Tool ${name} is already registered`);
560
686
  }
561
687
  const { title, description, inputSchema, outputSchema, annotations, _meta } = config;
562
- return this._createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, _meta, cb);
688
+ return this._createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, { taskSupport: 'forbidden' }, _meta, cb);
563
689
  }
564
690
  prompt(name, ...rest) {
565
691
  if (this._registeredPrompts[name]) {
@@ -667,15 +793,9 @@ const EMPTY_OBJECT_JSON_SCHEMA = {
667
793
  type: 'object',
668
794
  properties: {}
669
795
  };
670
- // Helper to check if an object is a Zod schema (ZodRawShapeCompat)
671
- function isZodRawShape(obj) {
672
- if (typeof obj !== 'object' || obj === null)
673
- return false;
674
- const isEmptyObject = Object.keys(obj).length === 0;
675
- // Check if object is empty or at least one property is a ZodType instance
676
- // Note: use heuristic check to avoid instanceof failure across different Zod versions
677
- return isEmptyObject || Object.values(obj).some(isZodTypeLike);
678
- }
796
+ /**
797
+ * Checks if a value looks like a Zod schema by checking for parse/safeParse methods.
798
+ */
679
799
  function isZodTypeLike(value) {
680
800
  return (value !== null &&
681
801
  typeof value === 'object' &&
@@ -685,14 +805,49 @@ function isZodTypeLike(value) {
685
805
  typeof value.safeParse === 'function');
686
806
  }
687
807
  /**
688
- * Converts a provided Zod schema to a Zod object if it is a ZodRawShape,
808
+ * Checks if an object is a Zod schema instance (v3 or v4).
809
+ *
810
+ * Zod schemas have internal markers:
811
+ * - v3: `_def` property
812
+ * - v4: `_zod` property
813
+ *
814
+ * This includes transformed schemas like z.preprocess(), z.transform(), z.pipe().
815
+ */
816
+ function isZodSchemaInstance(obj) {
817
+ return '_def' in obj || '_zod' in obj || isZodTypeLike(obj);
818
+ }
819
+ /**
820
+ * Checks if an object is a "raw shape" - a plain object where values are Zod schemas.
821
+ *
822
+ * Raw shapes are used as shorthand: `{ name: z.string() }` instead of `z.object({ name: z.string() })`.
823
+ *
824
+ * IMPORTANT: This must NOT match actual Zod schema instances (like z.preprocess, z.pipe),
825
+ * which have internal properties that could be mistaken for schema values.
826
+ */
827
+ function isZodRawShapeCompat(obj) {
828
+ if (typeof obj !== 'object' || obj === null) {
829
+ return false;
830
+ }
831
+ // If it's already a Zod schema instance, it's NOT a raw shape
832
+ if (isZodSchemaInstance(obj)) {
833
+ return false;
834
+ }
835
+ // Empty objects are valid raw shapes (tools with no parameters)
836
+ if (Object.keys(obj).length === 0) {
837
+ return true;
838
+ }
839
+ // A raw shape has at least one property that is a Zod schema
840
+ return Object.values(obj).some(isZodTypeLike);
841
+ }
842
+ /**
843
+ * Converts a provided Zod schema to a Zod object if it is a ZodRawShapeCompat,
689
844
  * otherwise returns the schema as is.
690
845
  */
691
846
  function getZodSchemaObject(schema) {
692
847
  if (!schema) {
693
848
  return undefined;
694
849
  }
695
- if (isZodRawShape(schema)) {
850
+ if (isZodRawShapeCompat(schema)) {
696
851
  return objectFromShape(schema);
697
852
  }
698
853
  return schema;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/server/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/server/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { RequestHandler } from 'express';
2
+ /**
3
+ * Express middleware for DNS rebinding protection.
4
+ * Validates Host header hostname (port-agnostic) against an allowed list.
5
+ *
6
+ * This is particularly important for servers without authorization or HTTPS,
7
+ * such as localhost servers or development servers. DNS rebinding attacks can
8
+ * bypass same-origin policy by manipulating DNS to point a domain to a
9
+ * localhost address, allowing malicious websites to access your local server.
10
+ *
11
+ * @param allowedHostnames - List of allowed hostnames (without ports).
12
+ * For IPv6, provide the address with brackets (e.g., '[::1]').
13
+ * @returns Express middleware function
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const middleware = hostHeaderValidation(['localhost', '127.0.0.1', '[::1]']);
18
+ * app.use(middleware);
19
+ * ```
20
+ */
21
+ export declare function hostHeaderValidation(allowedHostnames: string[]): RequestHandler;
22
+ /**
23
+ * Convenience middleware for localhost DNS rebinding protection.
24
+ * Allows only localhost, 127.0.0.1, and [::1] (IPv6 localhost) hostnames.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * app.use(localhostHostValidation());
29
+ * ```
30
+ */
31
+ export declare function localhostHostValidation(): RequestHandler;
32
+ //# sourceMappingURL=hostHeaderValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostHeaderValidation.d.ts","sourceRoot":"","sources":["../../../../src/server/middleware/hostHeaderValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,cAAc,CA4C/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI,cAAc,CAExD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Express middleware for DNS rebinding protection.
3
+ * Validates Host header hostname (port-agnostic) against an allowed list.
4
+ *
5
+ * This is particularly important for servers without authorization or HTTPS,
6
+ * such as localhost servers or development servers. DNS rebinding attacks can
7
+ * bypass same-origin policy by manipulating DNS to point a domain to a
8
+ * localhost address, allowing malicious websites to access your local server.
9
+ *
10
+ * @param allowedHostnames - List of allowed hostnames (without ports).
11
+ * For IPv6, provide the address with brackets (e.g., '[::1]').
12
+ * @returns Express middleware function
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const middleware = hostHeaderValidation(['localhost', '127.0.0.1', '[::1]']);
17
+ * app.use(middleware);
18
+ * ```
19
+ */
20
+ export function hostHeaderValidation(allowedHostnames) {
21
+ return (req, res, next) => {
22
+ const hostHeader = req.headers.host;
23
+ if (!hostHeader) {
24
+ res.status(403).json({
25
+ jsonrpc: '2.0',
26
+ error: {
27
+ code: -32000,
28
+ message: 'Missing Host header'
29
+ },
30
+ id: null
31
+ });
32
+ return;
33
+ }
34
+ // Use URL API to parse hostname (handles IPv4, IPv6, and regular hostnames)
35
+ let hostname;
36
+ try {
37
+ hostname = new URL(`http://${hostHeader}`).hostname;
38
+ }
39
+ catch (_a) {
40
+ res.status(403).json({
41
+ jsonrpc: '2.0',
42
+ error: {
43
+ code: -32000,
44
+ message: `Invalid Host header: ${hostHeader}`
45
+ },
46
+ id: null
47
+ });
48
+ return;
49
+ }
50
+ if (!allowedHostnames.includes(hostname)) {
51
+ res.status(403).json({
52
+ jsonrpc: '2.0',
53
+ error: {
54
+ code: -32000,
55
+ message: `Invalid Host: ${hostname}`
56
+ },
57
+ id: null
58
+ });
59
+ return;
60
+ }
61
+ next();
62
+ };
63
+ }
64
+ /**
65
+ * Convenience middleware for localhost DNS rebinding protection.
66
+ * Allows only localhost, 127.0.0.1, and [::1] (IPv6 localhost) hostnames.
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * app.use(localhostHostValidation());
71
+ * ```
72
+ */
73
+ export function localhostHostValidation() {
74
+ return hostHeaderValidation(['localhost', '127.0.0.1', '[::1]']);
75
+ }
76
+ //# sourceMappingURL=hostHeaderValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostHeaderValidation.js","sourceRoot":"","sources":["../../../../src/server/middleware/hostHeaderValidation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,gBAA0B;IAC3D,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACH,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,qBAAqB;iBACjC;gBACD,EAAE,EAAE,IAAI;aACX,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,4EAA4E;QAC5E,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACD,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC;QACxD,CAAC;QAAC,WAAM,CAAC;YACL,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACH,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,wBAAwB,UAAU,EAAE;iBAChD;gBACD,EAAE,EAAE,IAAI;aACX,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACH,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,iBAAiB,QAAQ,EAAE;iBACvC;gBACD,EAAE,EAAE,IAAI;aACX,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QACD,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB;IACnC,OAAO,oBAAoB,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC"}