bantou 0.1.0 → 0.2.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 (515) hide show
  1. package/.output/nitro.json +13 -0
  2. package/.output/public/_nuxt/BmGsA4i2.js +1 -0
  3. package/.output/public/_nuxt/D_G6gzEa.js +1 -0
  4. package/.output/public/_nuxt/builds/latest.json +1 -0
  5. package/.output/public/_nuxt/builds/meta/1a8fc623-6671-445b-bdd3-c3d073520a3a.json +1 -0
  6. package/.output/public/_nuxt/entry.CZSvzYhH.css +1 -0
  7. package/.output/public/_nuxt/error-404.C3wqHTJz.css +1 -0
  8. package/.output/public/_nuxt/error-500.D6rBzoDj.css +1 -0
  9. package/.output/public/_nuxt/pdFQkwM_.js +4 -0
  10. package/.output/server/chunks/_/error-500.mjs +20 -0
  11. package/.output/server/chunks/_/error-500.mjs.map +1 -0
  12. package/.output/server/chunks/nitro/nitro.mjs +5870 -0
  13. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  14. package/.output/server/chunks/routes/mcp.mjs +22 -0
  15. package/.output/server/chunks/routes/mcp.mjs.map +1 -0
  16. package/.output/server/chunks/routes/renderer.mjs +462 -0
  17. package/.output/server/chunks/routes/renderer.mjs.map +1 -0
  18. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  19. package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  20. package/.output/server/chunks/virtual/precomputed.mjs +4 -0
  21. package/.output/server/chunks/virtual/precomputed.mjs.map +1 -0
  22. package/.output/server/index.mjs +18 -0
  23. package/.output/server/index.mjs.map +1 -0
  24. package/.output/server/node_modules/@babel/parser/lib/index.js +14657 -0
  25. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  26. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +64 -0
  27. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +16 -0
  28. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js +32 -0
  29. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js +246 -0
  30. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/package.json +1 -0
  31. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +41 -0
  32. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +429 -0
  33. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +971 -0
  34. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/requestBody.js +58 -0
  35. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js +13 -0
  36. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +961 -0
  37. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +228 -0
  38. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +51 -0
  39. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js +57 -0
  40. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +1137 -0
  41. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +92 -0
  42. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/uriTemplate.js +239 -0
  43. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +2065 -0
  44. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +87 -0
  45. package/.output/server/node_modules/@modelcontextprotocol/sdk/package.json +165 -0
  46. package/.output/server/node_modules/@parcel/watcher-wasm/index.mjs +349 -0
  47. package/.output/server/node_modules/@parcel/watcher-wasm/package.json +44 -0
  48. package/.output/server/node_modules/@parcel/watcher-wasm/watcher.wasm +0 -0
  49. package/.output/server/node_modules/@parcel/watcher-wasm/wrapper.js +88 -0
  50. package/.output/server/node_modules/@unagents/messenger-broker/dist/index.mjs +12 -0
  51. package/.output/server/node_modules/@unagents/messenger-broker/dist/shared/messenger-broker.B8W77sqB.mjs +1177 -0
  52. package/.output/server/node_modules/@unagents/messenger-broker/package.json +37 -0
  53. package/.output/server/node_modules/@unagents/messenger-client/dist/index.mjs +9 -0
  54. package/.output/server/node_modules/@unagents/messenger-client/dist/shared/messenger-client.CfQVmH_Z.mjs +975 -0
  55. package/.output/server/node_modules/@unagents/messenger-client/dist/shared/messenger-client.CoDKzubj.mjs +1000 -0
  56. package/.output/server/node_modules/@unagents/messenger-client/package.json +37 -0
  57. package/.output/server/node_modules/@unagents/messenger-protocol/dist/index.mjs +103 -0
  58. package/.output/server/node_modules/@unagents/messenger-protocol/package.json +29 -0
  59. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6802 -0
  60. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  61. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +729 -0
  62. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  63. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1420 -0
  64. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  65. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1933 -0
  66. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  67. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +7085 -0
  68. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  69. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1917 -0
  70. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  71. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +951 -0
  72. package/.output/server/node_modules/@vue/server-renderer/package.json +53 -0
  73. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +655 -0
  74. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  75. package/.output/server/node_modules/ajv/dist/ajv.js +50 -0
  76. package/.output/server/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  77. package/.output/server/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  78. package/.output/server/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  79. package/.output/server/node_modules/ajv/dist/compile/errors.js +123 -0
  80. package/.output/server/node_modules/ajv/dist/compile/index.js +242 -0
  81. package/.output/server/node_modules/ajv/dist/compile/names.js +28 -0
  82. package/.output/server/node_modules/ajv/dist/compile/ref_error.js +12 -0
  83. package/.output/server/node_modules/ajv/dist/compile/resolve.js +155 -0
  84. package/.output/server/node_modules/ajv/dist/compile/rules.js +26 -0
  85. package/.output/server/node_modules/ajv/dist/compile/util.js +178 -0
  86. package/.output/server/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  87. package/.output/server/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  88. package/.output/server/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  89. package/.output/server/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  90. package/.output/server/node_modules/ajv/dist/compile/validate/index.js +520 -0
  91. package/.output/server/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  92. package/.output/server/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  93. package/.output/server/node_modules/ajv/dist/core.js +618 -0
  94. package/.output/server/node_modules/ajv/dist/refs/data.json +13 -0
  95. package/.output/server/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  96. package/.output/server/node_modules/ajv/dist/runtime/equal.js +7 -0
  97. package/.output/server/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  98. package/.output/server/node_modules/ajv/dist/runtime/uri.js +6 -0
  99. package/.output/server/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  100. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  101. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  102. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  103. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  104. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  105. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  106. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  107. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  108. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  109. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  110. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  111. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  112. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  113. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  114. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  115. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  116. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  117. package/.output/server/node_modules/ajv/dist/vocabularies/code.js +131 -0
  118. package/.output/server/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  119. package/.output/server/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  120. package/.output/server/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  121. package/.output/server/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  122. package/.output/server/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  123. package/.output/server/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  124. package/.output/server/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  125. package/.output/server/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  126. package/.output/server/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  127. package/.output/server/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  128. package/.output/server/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  129. package/.output/server/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  130. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  131. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  132. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  133. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  134. package/.output/server/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  135. package/.output/server/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  136. package/.output/server/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  137. package/.output/server/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  138. package/.output/server/node_modules/ajv/package.json +126 -0
  139. package/.output/server/node_modules/ajv-formats/dist/formats.js +208 -0
  140. package/.output/server/node_modules/ajv-formats/dist/index.js +37 -0
  141. package/.output/server/node_modules/ajv-formats/dist/limit.js +69 -0
  142. package/.output/server/node_modules/ajv-formats/package.json +74 -0
  143. package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  144. package/.output/server/node_modules/consola/dist/core.mjs +512 -0
  145. package/.output/server/node_modules/consola/dist/index.mjs +651 -0
  146. package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  147. package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  148. package/.output/server/node_modules/consola/dist/utils.mjs +54 -0
  149. package/.output/server/node_modules/consola/package.json +136 -0
  150. package/.output/server/node_modules/content-type/index.js +225 -0
  151. package/.output/server/node_modules/content-type/package.json +42 -0
  152. package/.output/server/node_modules/cookie-es/dist/index.mjs +268 -0
  153. package/.output/server/node_modules/cookie-es/package.json +46 -0
  154. package/.output/server/node_modules/crossws/dist/_chunks/_request.mjs +83 -0
  155. package/.output/server/node_modules/crossws/dist/_chunks/adapter.mjs +234 -0
  156. package/.output/server/node_modules/crossws/dist/_chunks/error.mjs +7 -0
  157. package/.output/server/node_modules/crossws/dist/_chunks/libs/ws.mjs +6 -0
  158. package/.output/server/node_modules/crossws/dist/_chunks/node.mjs +220 -0
  159. package/.output/server/node_modules/crossws/dist/_chunks/peer.mjs +208 -0
  160. package/.output/server/node_modules/crossws/dist/adapters/node.mjs +1 -0
  161. package/.output/server/node_modules/crossws/package.json +115 -0
  162. package/.output/server/node_modules/defu/dist/defu.mjs +69 -0
  163. package/.output/server/node_modules/defu/package.json +48 -0
  164. package/.output/server/node_modules/destr/dist/index.mjs +72 -0
  165. package/.output/server/node_modules/destr/package.json +47 -0
  166. package/.output/server/node_modules/devalue/index.js +17 -0
  167. package/.output/server/node_modules/devalue/package.json +39 -0
  168. package/.output/server/node_modules/devalue/src/base64.js +60 -0
  169. package/.output/server/node_modules/devalue/src/constants.js +12 -0
  170. package/.output/server/node_modules/devalue/src/operations.js +221 -0
  171. package/.output/server/node_modules/devalue/src/parse.js +279 -0
  172. package/.output/server/node_modules/devalue/src/stringify.js +433 -0
  173. package/.output/server/node_modules/devalue/src/uneval.js +698 -0
  174. package/.output/server/node_modules/devalue/src/utils.js +190 -0
  175. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  176. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  177. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  178. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  179. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  180. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  181. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  182. package/.output/server/node_modules/entities/package.json +120 -0
  183. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  184. package/.output/server/node_modules/estree-walker/package.json +37 -0
  185. package/.output/server/node_modules/fast-deep-equal/index.js +46 -0
  186. package/.output/server/node_modules/fast-deep-equal/package.json +61 -0
  187. package/.output/server/node_modules/fast-uri/index.js +711 -0
  188. package/.output/server/node_modules/fast-uri/lib/schemes.js +272 -0
  189. package/.output/server/node_modules/fast-uri/lib/utils.js +799 -0
  190. package/.output/server/node_modules/fast-uri/package.json +68 -0
  191. package/.output/server/node_modules/get-port-please/dist/index.mjs +430 -0
  192. package/.output/server/node_modules/get-port-please/package.json +39 -0
  193. package/.output/server/node_modules/h3/dist/index.mjs +2498 -0
  194. package/.output/server/node_modules/h3/package.json +75 -0
  195. package/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  196. package/.output/server/node_modules/hookable/package.json +54 -0
  197. package/.output/server/node_modules/http-shutdown/index.js +85 -0
  198. package/.output/server/node_modules/http-shutdown/package.json +32 -0
  199. package/.output/server/node_modules/iron-webcrypto/dist/index.js +298 -0
  200. package/.output/server/node_modules/iron-webcrypto/package.json +72 -0
  201. package/.output/server/node_modules/is-extglob/index.js +20 -0
  202. package/.output/server/node_modules/is-extglob/package.json +69 -0
  203. package/.output/server/node_modules/is-glob/index.js +150 -0
  204. package/.output/server/node_modules/is-glob/package.json +81 -0
  205. package/.output/server/node_modules/jiti/dist/jiti.cjs +1 -0
  206. package/.output/server/node_modules/jiti/lib/jiti.mjs +29 -0
  207. package/.output/server/node_modules/jiti/package.json +146 -0
  208. package/.output/server/node_modules/json-schema-traverse/index.js +93 -0
  209. package/.output/server/node_modules/json-schema-traverse/package.json +43 -0
  210. package/.output/server/node_modules/listhen/dist/chunks/xdg-open.mjs +1069 -0
  211. package/.output/server/node_modules/listhen/dist/index.mjs +19 -0
  212. package/.output/server/node_modules/listhen/dist/shared/listhen.tqe5I1Rl.mjs +1040 -0
  213. package/.output/server/node_modules/listhen/package.json +84 -0
  214. package/.output/server/node_modules/napi-wasm/index.mjs +1371 -0
  215. package/.output/server/node_modules/napi-wasm/package.json +33 -0
  216. package/.output/server/node_modules/node-forge/lib/aes.js +1091 -0
  217. package/.output/server/node_modules/node-forge/lib/aesCipherSuites.js +282 -0
  218. package/.output/server/node_modules/node-forge/lib/asn1-validator.js +91 -0
  219. package/.output/server/node_modules/node-forge/lib/asn1.js +1522 -0
  220. package/.output/server/node_modules/node-forge/lib/baseN.js +186 -0
  221. package/.output/server/node_modules/node-forge/lib/cipher.js +230 -0
  222. package/.output/server/node_modules/node-forge/lib/cipherModes.js +1027 -0
  223. package/.output/server/node_modules/node-forge/lib/des.js +496 -0
  224. package/.output/server/node_modules/node-forge/lib/ed25519.js +1091 -0
  225. package/.output/server/node_modules/node-forge/lib/forge.js +13 -0
  226. package/.output/server/node_modules/node-forge/lib/hmac.js +146 -0
  227. package/.output/server/node_modules/node-forge/lib/index.js +33 -0
  228. package/.output/server/node_modules/node-forge/lib/jsbn.js +1294 -0
  229. package/.output/server/node_modules/node-forge/lib/kem.js +168 -0
  230. package/.output/server/node_modules/node-forge/lib/log.js +319 -0
  231. package/.output/server/node_modules/node-forge/lib/md.all.js +13 -0
  232. package/.output/server/node_modules/node-forge/lib/md.js +11 -0
  233. package/.output/server/node_modules/node-forge/lib/md5.js +289 -0
  234. package/.output/server/node_modules/node-forge/lib/mgf.js +12 -0
  235. package/.output/server/node_modules/node-forge/lib/mgf1.js +57 -0
  236. package/.output/server/node_modules/node-forge/lib/oids.js +180 -0
  237. package/.output/server/node_modules/node-forge/lib/pbe.js +1029 -0
  238. package/.output/server/node_modules/node-forge/lib/pbkdf2.js +211 -0
  239. package/.output/server/node_modules/node-forge/lib/pem.js +413 -0
  240. package/.output/server/node_modules/node-forge/lib/pkcs1.js +276 -0
  241. package/.output/server/node_modules/node-forge/lib/pkcs12.js +1081 -0
  242. package/.output/server/node_modules/node-forge/lib/pkcs7.js +1260 -0
  243. package/.output/server/node_modules/node-forge/lib/pkcs7asn1.js +410 -0
  244. package/.output/server/node_modules/node-forge/lib/pki.js +102 -0
  245. package/.output/server/node_modules/node-forge/lib/prime.js +297 -0
  246. package/.output/server/node_modules/node-forge/lib/prng.js +419 -0
  247. package/.output/server/node_modules/node-forge/lib/pss.js +241 -0
  248. package/.output/server/node_modules/node-forge/lib/random.js +191 -0
  249. package/.output/server/node_modules/node-forge/lib/rc2.js +410 -0
  250. package/.output/server/node_modules/node-forge/lib/rsa.js +2014 -0
  251. package/.output/server/node_modules/node-forge/lib/sha1.js +319 -0
  252. package/.output/server/node_modules/node-forge/lib/sha256.js +327 -0
  253. package/.output/server/node_modules/node-forge/lib/sha512.js +561 -0
  254. package/.output/server/node_modules/node-forge/lib/ssh.js +236 -0
  255. package/.output/server/node_modules/node-forge/lib/tls.js +4334 -0
  256. package/.output/server/node_modules/node-forge/lib/util.js +2652 -0
  257. package/.output/server/node_modules/node-forge/lib/x509.js +3257 -0
  258. package/.output/server/node_modules/node-forge/package.json +123 -0
  259. package/.output/server/node_modules/node-mock-http/dist/_polyfill/buffer/node.mjs +1 -0
  260. package/.output/server/node_modules/node-mock-http/dist/_polyfill/events/node.mjs +1 -0
  261. package/.output/server/node_modules/node-mock-http/dist/index.mjs +1 -0
  262. package/.output/server/node_modules/node-mock-http/package.json +63 -0
  263. package/.output/server/node_modules/nostics/dist/formatters/ansi.mjs +19 -0
  264. package/.output/server/node_modules/nostics/dist/index.mjs +194 -0
  265. package/.output/server/node_modules/nostics/package.json +126 -0
  266. package/.output/server/node_modules/pathe/dist/index.mjs +19 -0
  267. package/.output/server/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs +249 -0
  268. package/.output/server/node_modules/pathe/package.json +61 -0
  269. package/.output/server/node_modules/picomatch/index.js +17 -0
  270. package/.output/server/node_modules/picomatch/lib/constants.js +184 -0
  271. package/.output/server/node_modules/picomatch/lib/parse.js +1425 -0
  272. package/.output/server/node_modules/picomatch/lib/picomatch.js +361 -0
  273. package/.output/server/node_modules/picomatch/lib/scan.js +403 -0
  274. package/.output/server/node_modules/picomatch/lib/utils.js +72 -0
  275. package/.output/server/node_modules/picomatch/package.json +83 -0
  276. package/.output/server/node_modules/radix3/dist/index.mjs +262 -0
  277. package/.output/server/node_modules/radix3/package.json +52 -0
  278. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  279. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  280. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  281. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  282. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  283. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +141 -0
  284. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1236 -0
  285. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +446 -0
  286. package/.output/server/node_modules/source-map-js/lib/source-node.js +420 -0
  287. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  288. package/.output/server/node_modules/source-map-js/package.json +71 -0
  289. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  290. package/.output/server/node_modules/std-env/dist/index.mjs +1 -0
  291. package/.output/server/node_modules/std-env/package.json +43 -0
  292. package/.output/server/node_modules/tinyclip/dist/index.js +143 -0
  293. package/.output/server/node_modules/tinyclip/package.json +48 -0
  294. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  295. package/.output/server/node_modules/ufo/package.json +48 -0
  296. package/.output/server/node_modules/uncrypto/dist/crypto.node.mjs +16 -0
  297. package/.output/server/node_modules/uncrypto/package.json +60 -0
  298. package/.output/server/node_modules/unhead/dist/client.mjs +22 -0
  299. package/.output/server/node_modules/unhead/dist/legacy.mjs +33 -0
  300. package/.output/server/node_modules/unhead/dist/minify.mjs +183 -0
  301. package/.output/server/node_modules/unhead/dist/parser.mjs +518 -0
  302. package/.output/server/node_modules/unhead/dist/plugins.mjs +782 -0
  303. package/.output/server/node_modules/unhead/dist/server.mjs +99 -0
  304. package/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs +673 -0
  305. package/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs +6 -0
  306. package/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs +17 -0
  307. package/.output/server/node_modules/unhead/dist/shared/unhead.C5Bksi2B.mjs +49 -0
  308. package/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs +32 -0
  309. package/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs +7 -0
  310. package/.output/server/node_modules/unhead/dist/shared/unhead.C_7zwq8E.mjs +11 -0
  311. package/.output/server/node_modules/unhead/dist/shared/unhead.CaeaMM5q.mjs +19 -0
  312. package/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs +59 -0
  313. package/.output/server/node_modules/unhead/dist/shared/unhead.D9VfQWNo.mjs +240 -0
  314. package/.output/server/node_modules/unhead/dist/shared/unhead.DD4N5B4k.mjs +224 -0
  315. package/.output/server/node_modules/unhead/dist/shared/unhead.DGl9jcjg.mjs +196 -0
  316. package/.output/server/node_modules/unhead/dist/shared/unhead.DJuZwX9c.mjs +400 -0
  317. package/.output/server/node_modules/unhead/dist/shared/unhead.DkxnqlHC.mjs +264 -0
  318. package/.output/server/node_modules/unhead/dist/shared/unhead.DspMpm6y.mjs +48 -0
  319. package/.output/server/node_modules/unhead/dist/shared/unhead.o8j9utSy.mjs +208 -0
  320. package/.output/server/node_modules/unhead/dist/stream/client.mjs +33 -0
  321. package/.output/server/node_modules/unhead/dist/stream/iife.mjs +2 -0
  322. package/.output/server/node_modules/unhead/dist/stream/server.mjs +446 -0
  323. package/.output/server/node_modules/unhead/dist/utils.mjs +7 -0
  324. package/.output/server/node_modules/unhead/package.json +179 -0
  325. package/.output/server/node_modules/untun/dist/_chunks/cloudflared.mjs +179 -0
  326. package/.output/server/node_modules/untun/dist/_chunks/log.mjs +27 -0
  327. package/.output/server/node_modules/untun/dist/index.mjs +47 -0
  328. package/.output/server/node_modules/untun/package.json +44 -0
  329. package/.output/server/node_modules/uqr/dist/index.mjs +739 -0
  330. package/.output/server/node_modules/uqr/package.json +69 -0
  331. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  332. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  333. package/.output/server/node_modules/vue/index.js +7 -0
  334. package/.output/server/node_modules/vue/index.mjs +1 -0
  335. package/.output/server/node_modules/vue/package.json +112 -0
  336. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  337. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +687 -0
  338. package/.output/server/node_modules/vue-bundle-renderer/package.json +66 -0
  339. package/.output/server/node_modules/zod/index.js +7 -0
  340. package/.output/server/node_modules/zod/package.json +147 -0
  341. package/.output/server/node_modules/zod/v3/ZodError.js +143 -0
  342. package/.output/server/node_modules/zod/v3/errors.js +9 -0
  343. package/.output/server/node_modules/zod/v3/external.js +6 -0
  344. package/.output/server/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  345. package/.output/server/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  346. package/.output/server/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  347. package/.output/server/node_modules/zod/v3/helpers/util.js +133 -0
  348. package/.output/server/node_modules/zod/v3/index.js +4 -0
  349. package/.output/server/node_modules/zod/v3/locales/en.js +109 -0
  350. package/.output/server/node_modules/zod/v3/package.json +7 -0
  351. package/.output/server/node_modules/zod/v3/types.js +3697 -0
  352. package/.output/server/node_modules/zod/v4/classic/checks.js +1 -0
  353. package/.output/server/node_modules/zod/v4/classic/coerce.js +17 -0
  354. package/.output/server/node_modules/zod/v4/classic/compat.js +31 -0
  355. package/.output/server/node_modules/zod/v4/classic/deep-partial.js +13 -0
  356. package/.output/server/node_modules/zod/v4/classic/errors.js +57 -0
  357. package/.output/server/node_modules/zod/v4/classic/external.js +17 -0
  358. package/.output/server/node_modules/zod/v4/classic/from-json-schema.js +881 -0
  359. package/.output/server/node_modules/zod/v4/classic/in-out.js +36 -0
  360. package/.output/server/node_modules/zod/v4/classic/index.js +4 -0
  361. package/.output/server/node_modules/zod/v4/classic/iso.js +15 -0
  362. package/.output/server/node_modules/zod/v4/classic/package.json +7 -0
  363. package/.output/server/node_modules/zod/v4/classic/parse.js +16 -0
  364. package/.output/server/node_modules/zod/v4/classic/schemas.js +1535 -0
  365. package/.output/server/node_modules/zod/v4/core/api.js +1107 -0
  366. package/.output/server/node_modules/zod/v4/core/checks.js +516 -0
  367. package/.output/server/node_modules/zod/v4/core/compile.js +1866 -0
  368. package/.output/server/node_modules/zod/v4/core/core.js +141 -0
  369. package/.output/server/node_modules/zod/v4/core/doc.js +38 -0
  370. package/.output/server/node_modules/zod/v4/core/errors.js +267 -0
  371. package/.output/server/node_modules/zod/v4/core/index.js +19 -0
  372. package/.output/server/node_modules/zod/v4/core/json-schema-generator.js +99 -0
  373. package/.output/server/node_modules/zod/v4/core/json-schema-processors.js +843 -0
  374. package/.output/server/node_modules/zod/v4/core/json-schema.js +1 -0
  375. package/.output/server/node_modules/zod/v4/core/memoizer.js +311 -0
  376. package/.output/server/node_modules/zod/v4/core/package.json +7 -0
  377. package/.output/server/node_modules/zod/v4/core/parse.js +175 -0
  378. package/.output/server/node_modules/zod/v4/core/regexes.js +156 -0
  379. package/.output/server/node_modules/zod/v4/core/registries.js +51 -0
  380. package/.output/server/node_modules/zod/v4/core/schemas.js +2636 -0
  381. package/.output/server/node_modules/zod/v4/core/to-json-schema.js +651 -0
  382. package/.output/server/node_modules/zod/v4/core/util.js +873 -0
  383. package/.output/server/node_modules/zod/v4/core/versions.js +5 -0
  384. package/.output/server/node_modules/zod/v4/core/visit.js +169 -0
  385. package/.output/server/node_modules/zod/v4/index.js +4 -0
  386. package/.output/server/node_modules/zod/v4/locales/ar.js +111 -0
  387. package/.output/server/node_modules/zod/v4/locales/az.js +110 -0
  388. package/.output/server/node_modules/zod/v4/locales/be.js +168 -0
  389. package/.output/server/node_modules/zod/v4/locales/bg.js +125 -0
  390. package/.output/server/node_modules/zod/v4/locales/bn.js +113 -0
  391. package/.output/server/node_modules/zod/v4/locales/ca.js +112 -0
  392. package/.output/server/node_modules/zod/v4/locales/ckb.js +133 -0
  393. package/.output/server/node_modules/zod/v4/locales/cs.js +116 -0
  394. package/.output/server/node_modules/zod/v4/locales/da.js +120 -0
  395. package/.output/server/node_modules/zod/v4/locales/de.js +113 -0
  396. package/.output/server/node_modules/zod/v4/locales/el.js +112 -0
  397. package/.output/server/node_modules/zod/v4/locales/en.js +125 -0
  398. package/.output/server/node_modules/zod/v4/locales/eo.js +114 -0
  399. package/.output/server/node_modules/zod/v4/locales/es.js +136 -0
  400. package/.output/server/node_modules/zod/v4/locales/fa.js +119 -0
  401. package/.output/server/node_modules/zod/v4/locales/fi.js +117 -0
  402. package/.output/server/node_modules/zod/v4/locales/fr-CA.js +112 -0
  403. package/.output/server/node_modules/zod/v4/locales/fr.js +129 -0
  404. package/.output/server/node_modules/zod/v4/locales/gu.js +113 -0
  405. package/.output/server/node_modules/zod/v4/locales/he.js +221 -0
  406. package/.output/server/node_modules/zod/v4/locales/hi.js +111 -0
  407. package/.output/server/node_modules/zod/v4/locales/hr.js +126 -0
  408. package/.output/server/node_modules/zod/v4/locales/hu.js +113 -0
  409. package/.output/server/node_modules/zod/v4/locales/hy.js +158 -0
  410. package/.output/server/node_modules/zod/v4/locales/id.js +111 -0
  411. package/.output/server/node_modules/zod/v4/locales/index.js +63 -0
  412. package/.output/server/node_modules/zod/v4/locales/is.js +114 -0
  413. package/.output/server/node_modules/zod/v4/locales/it.js +113 -0
  414. package/.output/server/node_modules/zod/v4/locales/ja.js +112 -0
  415. package/.output/server/node_modules/zod/v4/locales/ka.js +117 -0
  416. package/.output/server/node_modules/zod/v4/locales/kh.js +5 -0
  417. package/.output/server/node_modules/zod/v4/locales/km.js +115 -0
  418. package/.output/server/node_modules/zod/v4/locales/kn.js +116 -0
  419. package/.output/server/node_modules/zod/v4/locales/ko.js +116 -0
  420. package/.output/server/node_modules/zod/v4/locales/lt.js +207 -0
  421. package/.output/server/node_modules/zod/v4/locales/mk.js +114 -0
  422. package/.output/server/node_modules/zod/v4/locales/ms.js +112 -0
  423. package/.output/server/node_modules/zod/v4/locales/ne.js +111 -0
  424. package/.output/server/node_modules/zod/v4/locales/nl.js +115 -0
  425. package/.output/server/node_modules/zod/v4/locales/nn.js +113 -0
  426. package/.output/server/node_modules/zod/v4/locales/no.js +113 -0
  427. package/.output/server/node_modules/zod/v4/locales/ota.js +114 -0
  428. package/.output/server/node_modules/zod/v4/locales/package.json +7 -0
  429. package/.output/server/node_modules/zod/v4/locales/pl.js +114 -0
  430. package/.output/server/node_modules/zod/v4/locales/ps.js +119 -0
  431. package/.output/server/node_modules/zod/v4/locales/pt-BR.js +143 -0
  432. package/.output/server/node_modules/zod/v4/locales/pt.js +142 -0
  433. package/.output/server/node_modules/zod/v4/locales/ro.js +122 -0
  434. package/.output/server/node_modules/zod/v4/locales/ru.js +168 -0
  435. package/.output/server/node_modules/zod/v4/locales/sk.js +116 -0
  436. package/.output/server/node_modules/zod/v4/locales/sl.js +114 -0
  437. package/.output/server/node_modules/zod/v4/locales/sv.js +115 -0
  438. package/.output/server/node_modules/zod/v4/locales/ta.js +115 -0
  439. package/.output/server/node_modules/zod/v4/locales/tg.js +117 -0
  440. package/.output/server/node_modules/zod/v4/locales/th.js +115 -0
  441. package/.output/server/node_modules/zod/v4/locales/tk.js +107 -0
  442. package/.output/server/node_modules/zod/v4/locales/tr.js +110 -0
  443. package/.output/server/node_modules/zod/v4/locales/ua.js +5 -0
  444. package/.output/server/node_modules/zod/v4/locales/uk.js +113 -0
  445. package/.output/server/node_modules/zod/v4/locales/ur.js +115 -0
  446. package/.output/server/node_modules/zod/v4/locales/uz.js +113 -0
  447. package/.output/server/node_modules/zod/v4/locales/vi.js +113 -0
  448. package/.output/server/node_modules/zod/v4/locales/yo.js +112 -0
  449. package/.output/server/node_modules/zod/v4/locales/zh-CN.js +114 -0
  450. package/.output/server/node_modules/zod/v4/locales/zh-TW.js +112 -0
  451. package/.output/server/node_modules/zod/v4/mini/checks.js +1 -0
  452. package/.output/server/node_modules/zod/v4/mini/coerce.js +22 -0
  453. package/.output/server/node_modules/zod/v4/mini/deep-partial.js +13 -0
  454. package/.output/server/node_modules/zod/v4/mini/external.js +16 -0
  455. package/.output/server/node_modules/zod/v4/mini/in-out.js +36 -0
  456. package/.output/server/node_modules/zod/v4/mini/iso.js +34 -0
  457. package/.output/server/node_modules/zod/v4/mini/package.json +7 -0
  458. package/.output/server/node_modules/zod/v4/mini/parse.js +1 -0
  459. package/.output/server/node_modules/zod/v4/mini/schemas.js +1002 -0
  460. package/.output/server/node_modules/zod/v4/package.json +7 -0
  461. package/.output/server/node_modules/zod/v4-mini/index.js +3 -0
  462. package/.output/server/node_modules/zod/v4-mini/package.json +7 -0
  463. package/.output/server/node_modules/zod-to-json-schema/dist/esm/Options.js +46 -0
  464. package/.output/server/node_modules/zod-to-json-schema/dist/esm/Refs.js +22 -0
  465. package/.output/server/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +14 -0
  466. package/.output/server/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +8 -0
  467. package/.output/server/node_modules/zod-to-json-schema/dist/esm/index.js +40 -0
  468. package/.output/server/node_modules/zod-to-json-schema/dist/esm/package.json +1 -0
  469. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parseDef.js +62 -0
  470. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parseTypes.js +1 -0
  471. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +17 -0
  472. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +26 -0
  473. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +49 -0
  474. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +5 -0
  475. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +4 -0
  476. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +4 -0
  477. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +46 -0
  478. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +7 -0
  479. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +7 -0
  480. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +6 -0
  481. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +52 -0
  482. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +21 -0
  483. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +26 -0
  484. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +16 -0
  485. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +11 -0
  486. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +10 -0
  487. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +33 -0
  488. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +52 -0
  489. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +72 -0
  490. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +21 -0
  491. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +20 -0
  492. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +4 -0
  493. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +4 -0
  494. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +61 -0
  495. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +20 -0
  496. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +352 -0
  497. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +32 -0
  498. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +6 -0
  499. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +80 -0
  500. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +4 -0
  501. package/.output/server/node_modules/zod-to-json-schema/dist/esm/selectParser.js +105 -0
  502. package/.output/server/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +87 -0
  503. package/.output/server/node_modules/zod-to-json-schema/package.json +85 -0
  504. package/.output/server/package.json +64 -0
  505. package/README.md +227 -24
  506. package/bin/bantou.mjs +33 -0
  507. package/package.json +18 -8
  508. package/protocol/PROTOCOL.md +26 -0
  509. package/protocol/protocol.json +92 -0
  510. package/dist/cap.js +0 -7
  511. package/dist/cli.js +0 -27
  512. package/dist/config.js +0 -23
  513. package/dist/daemon.js +0 -23
  514. package/dist/session.js +0 -7
  515. package/dist/workspace.js +0 -8
@@ -0,0 +1,971 @@
1
+ import { Server } from './index.js';
2
+ import { normalizeObjectSchema, safeParseAsync, getObjectShape, objectFromShape, getParseErrorMessage, getSchemaDescription, isSchemaOptional, getLiteralValue } from './zod-compat.js';
3
+ import { toJsonSchemaCompat } from './zod-json-schema-compat.js';
4
+ import { McpError, ErrorCode, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, CompleteRequestSchema, assertCompleteRequestPrompt, assertCompleteRequestResourceTemplate } from '../types.js';
5
+ import { isCompletable, getCompleter } from './completable.js';
6
+ import { UriTemplate } from '../shared/uriTemplate.js';
7
+ import { validateAndWarnToolName } from '../shared/toolNameValidation.js';
8
+ import { ExperimentalMcpServerTasks } from '../experimental/tasks/mcp-server.js';
9
+ import { ZodOptional } from 'zod';
10
+ // Counts array elements and object members in `value`, stopping once the running total passes `max`.
11
+ function toolInputElementCount(value, max) {
12
+ let count = 0;
13
+ const stack = [value];
14
+ while (stack.length > 0) {
15
+ const node = stack.pop();
16
+ if (node === null || typeof node !== 'object')
17
+ continue;
18
+ if (Array.isArray(node)) {
19
+ for (const child of node) {
20
+ if (++count > max)
21
+ return count;
22
+ if (child !== null && typeof child === 'object')
23
+ stack.push(child);
24
+ }
25
+ }
26
+ else {
27
+ for (const key in node) {
28
+ if (!Object.prototype.hasOwnProperty.call(node, key))
29
+ continue;
30
+ if (++count > max)
31
+ return count;
32
+ const child = node[key];
33
+ if (child !== null && typeof child === 'object')
34
+ stack.push(child);
35
+ }
36
+ }
37
+ }
38
+ return count;
39
+ }
40
+ // Resolves the configured element ceiling: no limit when unset or Infinity, else a number of at least 1.
41
+ function resolveMaxToolInputElements(value) {
42
+ if (value === undefined || value === Infinity)
43
+ return undefined;
44
+ if (typeof value !== 'number' || Number.isNaN(value) || value < 1) {
45
+ throw new RangeError(`maxToolInputElements must be a number of at least 1, or Infinity, got ${String(value)}`);
46
+ }
47
+ return value;
48
+ }
49
+ /**
50
+ * High-level MCP server that provides a simpler API for working with resources, tools, and prompts.
51
+ * For advanced usage (like sending notifications or setting custom request handlers), use the underlying
52
+ * Server instance available via the `server` property.
53
+ */
54
+ export class McpServer {
55
+ constructor(serverInfo, options) {
56
+ this._registeredResources = {};
57
+ this._registeredResourceTemplates = {};
58
+ this._registeredTools = {};
59
+ this._registeredPrompts = {};
60
+ this._toolHandlersInitialized = false;
61
+ this._completionHandlerInitialized = false;
62
+ this._resourceHandlersInitialized = false;
63
+ this._promptHandlersInitialized = false;
64
+ this.server = new Server(serverInfo, options);
65
+ this._maxToolInputElements = resolveMaxToolInputElements(options?.maxToolInputElements);
66
+ // A capability declared in the options gets its handlers now, so registering after connect() works.
67
+ if (options?.capabilities?.tools) {
68
+ this.setToolRequestHandlers();
69
+ }
70
+ if (options?.capabilities?.resources) {
71
+ this.setResourceRequestHandlers();
72
+ }
73
+ if (options?.capabilities?.prompts) {
74
+ this.setPromptRequestHandlers();
75
+ }
76
+ }
77
+ /**
78
+ * Access experimental features.
79
+ *
80
+ * WARNING: These APIs are experimental and may change without notice.
81
+ *
82
+ * @experimental
83
+ */
84
+ get experimental() {
85
+ if (!this._experimental) {
86
+ this._experimental = {
87
+ tasks: new ExperimentalMcpServerTasks(this)
88
+ };
89
+ }
90
+ return this._experimental;
91
+ }
92
+ /**
93
+ * Attaches to the given transport, starts it, and starts listening for messages.
94
+ *
95
+ * The `server` object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
96
+ */
97
+ async connect(transport) {
98
+ return await this.server.connect(transport);
99
+ }
100
+ /**
101
+ * Closes the connection.
102
+ */
103
+ async close() {
104
+ await this.server.close();
105
+ }
106
+ setToolRequestHandlers() {
107
+ if (this._toolHandlersInitialized) {
108
+ return;
109
+ }
110
+ this.server.assertCanSetRequestHandler(getMethodValue(ListToolsRequestSchema));
111
+ this.server.assertCanSetRequestHandler(getMethodValue(CallToolRequestSchema));
112
+ this.server.registerCapabilities({
113
+ tools: {
114
+ listChanged: true
115
+ }
116
+ });
117
+ this.server.setRequestHandler(ListToolsRequestSchema, () => ({
118
+ tools: Object.entries(this._registeredTools)
119
+ .filter(([, tool]) => tool.enabled)
120
+ .map(([name, tool]) => {
121
+ const toolDefinition = {
122
+ name,
123
+ title: tool.title,
124
+ description: tool.description,
125
+ inputSchema: (() => {
126
+ const obj = normalizeObjectSchema(tool.inputSchema);
127
+ return obj
128
+ ? toJsonSchemaCompat(obj, {
129
+ strictUnions: true,
130
+ pipeStrategy: 'input'
131
+ })
132
+ : EMPTY_OBJECT_JSON_SCHEMA;
133
+ })(),
134
+ annotations: tool.annotations,
135
+ execution: tool.execution,
136
+ _meta: tool._meta
137
+ };
138
+ if (tool.outputSchema) {
139
+ const obj = normalizeObjectSchema(tool.outputSchema);
140
+ if (obj) {
141
+ toolDefinition.outputSchema = toJsonSchemaCompat(obj, {
142
+ strictUnions: true,
143
+ pipeStrategy: 'output'
144
+ });
145
+ }
146
+ }
147
+ return toolDefinition;
148
+ })
149
+ }));
150
+ this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
151
+ try {
152
+ const tool = this._registeredTools[request.params.name];
153
+ if (!tool) {
154
+ throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`);
155
+ }
156
+ if (!tool.enabled) {
157
+ throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} disabled`);
158
+ }
159
+ const isTaskRequest = !!request.params.task;
160
+ const taskSupport = tool.execution?.taskSupport;
161
+ const isTaskHandler = 'createTask' in tool.handler;
162
+ // Validate task hint configuration
163
+ if ((taskSupport === 'required' || taskSupport === 'optional') && !isTaskHandler) {
164
+ throw new McpError(ErrorCode.InternalError, `Tool ${request.params.name} has taskSupport '${taskSupport}' but was not registered with registerToolTask`);
165
+ }
166
+ // Handle taskSupport 'required' without task augmentation
167
+ if (taskSupport === 'required' && !isTaskRequest) {
168
+ throw new McpError(ErrorCode.MethodNotFound, `Tool ${request.params.name} requires task augmentation (taskSupport: 'required')`);
169
+ }
170
+ // Handle taskSupport 'optional' without task augmentation - automatic polling
171
+ if (taskSupport === 'optional' && !isTaskRequest && isTaskHandler) {
172
+ return await this.handleAutomaticTaskPolling(tool, request, extra);
173
+ }
174
+ // Normal execution path
175
+ const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);
176
+ const result = await this.executeToolHandler(tool, args, extra);
177
+ // Return CreateTaskResult immediately for task requests
178
+ if (isTaskRequest) {
179
+ return result;
180
+ }
181
+ // Validate output schema for non-task requests
182
+ await this.validateToolOutput(tool, result, request.params.name);
183
+ return result;
184
+ }
185
+ catch (error) {
186
+ if (error instanceof McpError) {
187
+ if (error.code === ErrorCode.UrlElicitationRequired) {
188
+ throw error; // Return the error to the caller without wrapping in CallToolResult
189
+ }
190
+ }
191
+ return this.createToolError(error instanceof Error ? error.message : String(error));
192
+ }
193
+ });
194
+ this._toolHandlersInitialized = true;
195
+ }
196
+ /**
197
+ * Creates a tool error result.
198
+ *
199
+ * @param errorMessage - The error message.
200
+ * @returns The tool error result.
201
+ */
202
+ createToolError(errorMessage) {
203
+ return {
204
+ content: [
205
+ {
206
+ type: 'text',
207
+ text: errorMessage
208
+ }
209
+ ],
210
+ isError: true
211
+ };
212
+ }
213
+ /**
214
+ * Validates tool input arguments against the tool's input schema.
215
+ */
216
+ async validateToolInput(tool, args, toolName) {
217
+ if (this._maxToolInputElements !== undefined &&
218
+ toolInputElementCount(args, this._maxToolInputElements) > this._maxToolInputElements) {
219
+ throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for tool ${toolName}: arguments contain more than the maximum of ${this._maxToolInputElements} elements`);
220
+ }
221
+ if (!tool.inputSchema) {
222
+ return undefined;
223
+ }
224
+ // Try to normalize to object schema first (for raw shapes and object schemas)
225
+ // If that fails, use the schema directly (for union/intersection/etc)
226
+ const inputObj = normalizeObjectSchema(tool.inputSchema);
227
+ const schemaToParse = inputObj ?? tool.inputSchema;
228
+ const parseResult = await safeParseAsync(schemaToParse, args ?? {});
229
+ if (!parseResult.success) {
230
+ const error = 'error' in parseResult ? parseResult.error : 'Unknown error';
231
+ const errorMessage = getParseErrorMessage(error);
232
+ throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${toolName}: ${errorMessage}`);
233
+ }
234
+ return parseResult.data;
235
+ }
236
+ /**
237
+ * Validates tool output against the tool's output schema.
238
+ */
239
+ async validateToolOutput(tool, result, toolName) {
240
+ if (!tool.outputSchema) {
241
+ return;
242
+ }
243
+ // Only validate CallToolResult, not CreateTaskResult
244
+ if (!('content' in result)) {
245
+ return;
246
+ }
247
+ if (result.isError) {
248
+ return;
249
+ }
250
+ if (!result.structuredContent) {
251
+ throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${toolName} has an output schema but no structured content was provided`);
252
+ }
253
+ // if the tool has an output schema, validate structured content
254
+ const outputObj = normalizeObjectSchema(tool.outputSchema);
255
+ const parseResult = await safeParseAsync(outputObj, result.structuredContent);
256
+ if (!parseResult.success) {
257
+ const error = 'error' in parseResult ? parseResult.error : 'Unknown error';
258
+ const errorMessage = getParseErrorMessage(error);
259
+ throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${toolName}: ${errorMessage}`);
260
+ }
261
+ }
262
+ /**
263
+ * Executes a tool handler (either regular or task-based).
264
+ */
265
+ async executeToolHandler(tool, args, extra) {
266
+ const handler = tool.handler;
267
+ const isTaskHandler = 'createTask' in handler;
268
+ if (isTaskHandler) {
269
+ if (!extra.taskStore) {
270
+ throw new Error('No task store provided.');
271
+ }
272
+ const taskExtra = { ...extra, taskStore: extra.taskStore };
273
+ if (tool.inputSchema) {
274
+ const typedHandler = handler;
275
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
276
+ return await Promise.resolve(typedHandler.createTask(args, taskExtra));
277
+ }
278
+ else {
279
+ const typedHandler = handler;
280
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
281
+ return await Promise.resolve(typedHandler.createTask(taskExtra));
282
+ }
283
+ }
284
+ if (tool.inputSchema) {
285
+ const typedHandler = handler;
286
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
287
+ return await Promise.resolve(typedHandler(args, extra));
288
+ }
289
+ else {
290
+ const typedHandler = handler;
291
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
292
+ return await Promise.resolve(typedHandler(extra));
293
+ }
294
+ }
295
+ /**
296
+ * Handles automatic task polling for tools with taskSupport 'optional'.
297
+ */
298
+ async handleAutomaticTaskPolling(tool, request, extra) {
299
+ if (!extra.taskStore) {
300
+ throw new Error('No task store provided for task-capable tool.');
301
+ }
302
+ // Validate input and create task
303
+ const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);
304
+ const handler = tool.handler;
305
+ const taskExtra = { ...extra, taskStore: extra.taskStore };
306
+ const createTaskResult = args // undefined only if tool.inputSchema is undefined
307
+ ? await Promise.resolve(handler.createTask(args, taskExtra))
308
+ : // eslint-disable-next-line @typescript-eslint/no-explicit-any
309
+ await Promise.resolve(handler.createTask(taskExtra));
310
+ // Poll until completion
311
+ const taskId = createTaskResult.task.taskId;
312
+ let task = createTaskResult.task;
313
+ const pollInterval = task.pollInterval ?? 5000;
314
+ while (task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled') {
315
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
316
+ const updatedTask = await extra.taskStore.getTask(taskId);
317
+ if (!updatedTask) {
318
+ throw new McpError(ErrorCode.InternalError, `Task ${taskId} not found during polling`);
319
+ }
320
+ task = updatedTask;
321
+ }
322
+ // Return the final result
323
+ return (await extra.taskStore.getTaskResult(taskId));
324
+ }
325
+ setCompletionRequestHandler() {
326
+ if (this._completionHandlerInitialized) {
327
+ return;
328
+ }
329
+ this.server.assertCanSetRequestHandler(getMethodValue(CompleteRequestSchema));
330
+ this.server.registerCapabilities({
331
+ completions: {}
332
+ });
333
+ this.server.setRequestHandler(CompleteRequestSchema, async (request) => {
334
+ switch (request.params.ref.type) {
335
+ case 'ref/prompt':
336
+ assertCompleteRequestPrompt(request);
337
+ return this.handlePromptCompletion(request, request.params.ref);
338
+ case 'ref/resource':
339
+ assertCompleteRequestResourceTemplate(request);
340
+ return this.handleResourceCompletion(request, request.params.ref);
341
+ default:
342
+ throw new McpError(ErrorCode.InvalidParams, `Invalid completion reference: ${request.params.ref}`);
343
+ }
344
+ });
345
+ this._completionHandlerInitialized = true;
346
+ }
347
+ async handlePromptCompletion(request, ref) {
348
+ const prompt = this._registeredPrompts[ref.name];
349
+ if (!prompt) {
350
+ throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} not found`);
351
+ }
352
+ if (!prompt.enabled) {
353
+ throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} disabled`);
354
+ }
355
+ if (!prompt.argsSchema) {
356
+ return EMPTY_COMPLETION_RESULT;
357
+ }
358
+ const promptShape = getObjectShape(prompt.argsSchema);
359
+ const field = promptShape?.[request.params.argument.name];
360
+ if (!isCompletable(field)) {
361
+ return EMPTY_COMPLETION_RESULT;
362
+ }
363
+ const completer = getCompleter(field);
364
+ if (!completer) {
365
+ return EMPTY_COMPLETION_RESULT;
366
+ }
367
+ const suggestions = await completer(request.params.argument.value, request.params.context);
368
+ return createCompletionResult(suggestions);
369
+ }
370
+ async handleResourceCompletion(request, ref) {
371
+ const template = Object.values(this._registeredResourceTemplates).find(t => t.resourceTemplate.uriTemplate.toString() === ref.uri);
372
+ if (!template) {
373
+ if (this._registeredResources[ref.uri]) {
374
+ // Attempting to autocomplete a fixed resource URI is not an error in the spec (but probably should be).
375
+ return EMPTY_COMPLETION_RESULT;
376
+ }
377
+ throw new McpError(ErrorCode.InvalidParams, `Resource template ${request.params.ref.uri} not found`);
378
+ }
379
+ const completer = template.resourceTemplate.completeCallback(request.params.argument.name);
380
+ if (!completer) {
381
+ return EMPTY_COMPLETION_RESULT;
382
+ }
383
+ const suggestions = await completer(request.params.argument.value, request.params.context);
384
+ return createCompletionResult(suggestions);
385
+ }
386
+ setResourceRequestHandlers() {
387
+ if (this._resourceHandlersInitialized) {
388
+ return;
389
+ }
390
+ this.server.assertCanSetRequestHandler(getMethodValue(ListResourcesRequestSchema));
391
+ this.server.assertCanSetRequestHandler(getMethodValue(ListResourceTemplatesRequestSchema));
392
+ this.server.assertCanSetRequestHandler(getMethodValue(ReadResourceRequestSchema));
393
+ this.server.registerCapabilities({
394
+ resources: {
395
+ listChanged: true
396
+ }
397
+ });
398
+ this.server.setRequestHandler(ListResourcesRequestSchema, async (request, extra) => {
399
+ const resources = Object.entries(this._registeredResources)
400
+ .filter(([_, resource]) => resource.enabled)
401
+ .map(([uri, resource]) => ({
402
+ uri,
403
+ name: resource.name,
404
+ ...resource.metadata
405
+ }));
406
+ const templateResources = [];
407
+ for (const template of Object.values(this._registeredResourceTemplates)) {
408
+ if (!template.resourceTemplate.listCallback) {
409
+ continue;
410
+ }
411
+ const result = await template.resourceTemplate.listCallback(extra);
412
+ for (const resource of result.resources) {
413
+ templateResources.push({
414
+ ...template.metadata,
415
+ // the defined resource metadata should override the template metadata if present
416
+ ...resource
417
+ });
418
+ }
419
+ }
420
+ return { resources: [...resources, ...templateResources] };
421
+ });
422
+ this.server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {
423
+ const resourceTemplates = Object.entries(this._registeredResourceTemplates).map(([name, template]) => ({
424
+ name,
425
+ uriTemplate: template.resourceTemplate.uriTemplate.toString(),
426
+ ...template.metadata
427
+ }));
428
+ return { resourceTemplates };
429
+ });
430
+ this.server.setRequestHandler(ReadResourceRequestSchema, async (request, extra) => {
431
+ const uri = new URL(request.params.uri);
432
+ // First check for exact resource match
433
+ const resource = this._registeredResources[uri.toString()];
434
+ if (resource) {
435
+ if (!resource.enabled) {
436
+ throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} disabled`);
437
+ }
438
+ return resource.readCallback(uri, extra);
439
+ }
440
+ // Then check templates
441
+ for (const template of Object.values(this._registeredResourceTemplates)) {
442
+ const variables = template.resourceTemplate.uriTemplate.match(uri.toString());
443
+ if (variables) {
444
+ return template.readCallback(uri, variables, extra);
445
+ }
446
+ }
447
+ throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} not found`);
448
+ });
449
+ this._resourceHandlersInitialized = true;
450
+ }
451
+ setPromptRequestHandlers() {
452
+ if (this._promptHandlersInitialized) {
453
+ return;
454
+ }
455
+ this.server.assertCanSetRequestHandler(getMethodValue(ListPromptsRequestSchema));
456
+ this.server.assertCanSetRequestHandler(getMethodValue(GetPromptRequestSchema));
457
+ this.server.registerCapabilities({
458
+ prompts: {
459
+ listChanged: true
460
+ }
461
+ });
462
+ this.server.setRequestHandler(ListPromptsRequestSchema, () => ({
463
+ prompts: Object.entries(this._registeredPrompts)
464
+ .filter(([, prompt]) => prompt.enabled)
465
+ .map(([name, prompt]) => {
466
+ return {
467
+ name,
468
+ title: prompt.title,
469
+ description: prompt.description,
470
+ arguments: prompt.argsSchema ? promptArgumentsFromSchema(prompt.argsSchema) : undefined
471
+ };
472
+ })
473
+ }));
474
+ this.server.setRequestHandler(GetPromptRequestSchema, async (request, extra) => {
475
+ const prompt = this._registeredPrompts[request.params.name];
476
+ if (!prompt) {
477
+ throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} not found`);
478
+ }
479
+ if (!prompt.enabled) {
480
+ throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} disabled`);
481
+ }
482
+ if (prompt.argsSchema) {
483
+ const argsObj = normalizeObjectSchema(prompt.argsSchema);
484
+ const parseResult = await safeParseAsync(argsObj, request.params.arguments ?? {});
485
+ if (!parseResult.success) {
486
+ const error = 'error' in parseResult ? parseResult.error : 'Unknown error';
487
+ const errorMessage = getParseErrorMessage(error);
488
+ throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${errorMessage}`);
489
+ }
490
+ const args = parseResult.data;
491
+ const cb = prompt.callback;
492
+ return await Promise.resolve(cb(args, extra));
493
+ }
494
+ else {
495
+ const cb = prompt.callback;
496
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
497
+ return await Promise.resolve(cb(extra));
498
+ }
499
+ });
500
+ this._promptHandlersInitialized = true;
501
+ }
502
+ resource(name, uriOrTemplate, ...rest) {
503
+ let metadata;
504
+ if (typeof rest[0] === 'object') {
505
+ metadata = rest.shift();
506
+ }
507
+ const readCallback = rest[0];
508
+ if (typeof uriOrTemplate === 'string') {
509
+ if (this._registeredResources[uriOrTemplate]) {
510
+ throw new Error(`Resource ${uriOrTemplate} is already registered`);
511
+ }
512
+ const registeredResource = this._createRegisteredResource(name, undefined, uriOrTemplate, metadata, readCallback);
513
+ this.setResourceRequestHandlers();
514
+ this.sendResourceListChanged();
515
+ return registeredResource;
516
+ }
517
+ else {
518
+ if (this._registeredResourceTemplates[name]) {
519
+ throw new Error(`Resource template ${name} is already registered`);
520
+ }
521
+ const registeredResourceTemplate = this._createRegisteredResourceTemplate(name, undefined, uriOrTemplate, metadata, readCallback);
522
+ this.setResourceRequestHandlers();
523
+ this.sendResourceListChanged();
524
+ return registeredResourceTemplate;
525
+ }
526
+ }
527
+ registerResource(name, uriOrTemplate, config, readCallback) {
528
+ if (typeof uriOrTemplate === 'string') {
529
+ if (this._registeredResources[uriOrTemplate]) {
530
+ throw new Error(`Resource ${uriOrTemplate} is already registered`);
531
+ }
532
+ const registeredResource = this._createRegisteredResource(name, config.title, uriOrTemplate, config, readCallback);
533
+ this.setResourceRequestHandlers();
534
+ this.sendResourceListChanged();
535
+ return registeredResource;
536
+ }
537
+ else {
538
+ if (this._registeredResourceTemplates[name]) {
539
+ throw new Error(`Resource template ${name} is already registered`);
540
+ }
541
+ const registeredResourceTemplate = this._createRegisteredResourceTemplate(name, config.title, uriOrTemplate, config, readCallback);
542
+ this.setResourceRequestHandlers();
543
+ this.sendResourceListChanged();
544
+ return registeredResourceTemplate;
545
+ }
546
+ }
547
+ _createRegisteredResource(name, title, uri, metadata, readCallback) {
548
+ const registeredResource = {
549
+ name,
550
+ title,
551
+ metadata,
552
+ readCallback,
553
+ enabled: true,
554
+ disable: () => registeredResource.update({ enabled: false }),
555
+ enable: () => registeredResource.update({ enabled: true }),
556
+ remove: () => registeredResource.update({ uri: null }),
557
+ update: updates => {
558
+ if (typeof updates.uri !== 'undefined' && updates.uri !== uri) {
559
+ delete this._registeredResources[uri];
560
+ if (updates.uri)
561
+ this._registeredResources[updates.uri] = registeredResource;
562
+ }
563
+ if (typeof updates.name !== 'undefined')
564
+ registeredResource.name = updates.name;
565
+ if (typeof updates.title !== 'undefined')
566
+ registeredResource.title = updates.title;
567
+ if (typeof updates.metadata !== 'undefined')
568
+ registeredResource.metadata = updates.metadata;
569
+ if (typeof updates.callback !== 'undefined')
570
+ registeredResource.readCallback = updates.callback;
571
+ if (typeof updates.enabled !== 'undefined')
572
+ registeredResource.enabled = updates.enabled;
573
+ this.sendResourceListChanged();
574
+ }
575
+ };
576
+ this._registeredResources[uri] = registeredResource;
577
+ return registeredResource;
578
+ }
579
+ _createRegisteredResourceTemplate(name, title, template, metadata, readCallback) {
580
+ const registeredResourceTemplate = {
581
+ resourceTemplate: template,
582
+ title,
583
+ metadata,
584
+ readCallback,
585
+ enabled: true,
586
+ disable: () => registeredResourceTemplate.update({ enabled: false }),
587
+ enable: () => registeredResourceTemplate.update({ enabled: true }),
588
+ remove: () => registeredResourceTemplate.update({ name: null }),
589
+ update: updates => {
590
+ if (typeof updates.name !== 'undefined' && updates.name !== name) {
591
+ delete this._registeredResourceTemplates[name];
592
+ if (updates.name)
593
+ this._registeredResourceTemplates[updates.name] = registeredResourceTemplate;
594
+ }
595
+ if (typeof updates.title !== 'undefined')
596
+ registeredResourceTemplate.title = updates.title;
597
+ if (typeof updates.template !== 'undefined')
598
+ registeredResourceTemplate.resourceTemplate = updates.template;
599
+ if (typeof updates.metadata !== 'undefined')
600
+ registeredResourceTemplate.metadata = updates.metadata;
601
+ if (typeof updates.callback !== 'undefined')
602
+ registeredResourceTemplate.readCallback = updates.callback;
603
+ if (typeof updates.enabled !== 'undefined')
604
+ registeredResourceTemplate.enabled = updates.enabled;
605
+ this.sendResourceListChanged();
606
+ }
607
+ };
608
+ this._registeredResourceTemplates[name] = registeredResourceTemplate;
609
+ // If the resource template has any completion callbacks, enable completions capability
610
+ const variableNames = template.uriTemplate.variableNames;
611
+ const hasCompleter = Array.isArray(variableNames) && variableNames.some(v => !!template.completeCallback(v));
612
+ if (hasCompleter) {
613
+ this.setCompletionRequestHandler();
614
+ }
615
+ return registeredResourceTemplate;
616
+ }
617
+ _createRegisteredPrompt(name, title, description, argsSchema, callback) {
618
+ const registeredPrompt = {
619
+ title,
620
+ description,
621
+ argsSchema: argsSchema === undefined ? undefined : objectFromShape(argsSchema),
622
+ callback,
623
+ enabled: true,
624
+ disable: () => registeredPrompt.update({ enabled: false }),
625
+ enable: () => registeredPrompt.update({ enabled: true }),
626
+ remove: () => registeredPrompt.update({ name: null }),
627
+ update: updates => {
628
+ if (typeof updates.name !== 'undefined' && updates.name !== name) {
629
+ delete this._registeredPrompts[name];
630
+ if (updates.name)
631
+ this._registeredPrompts[updates.name] = registeredPrompt;
632
+ }
633
+ if (typeof updates.title !== 'undefined')
634
+ registeredPrompt.title = updates.title;
635
+ if (typeof updates.description !== 'undefined')
636
+ registeredPrompt.description = updates.description;
637
+ if (typeof updates.argsSchema !== 'undefined')
638
+ registeredPrompt.argsSchema = objectFromShape(updates.argsSchema);
639
+ if (typeof updates.callback !== 'undefined')
640
+ registeredPrompt.callback = updates.callback;
641
+ if (typeof updates.enabled !== 'undefined')
642
+ registeredPrompt.enabled = updates.enabled;
643
+ this.sendPromptListChanged();
644
+ }
645
+ };
646
+ this._registeredPrompts[name] = registeredPrompt;
647
+ // If any argument uses a Completable schema, enable completions capability
648
+ if (argsSchema) {
649
+ const hasCompletable = Object.values(argsSchema).some(field => {
650
+ const inner = field instanceof ZodOptional ? field._def?.innerType : field;
651
+ return isCompletable(inner);
652
+ });
653
+ if (hasCompletable) {
654
+ this.setCompletionRequestHandler();
655
+ }
656
+ }
657
+ return registeredPrompt;
658
+ }
659
+ _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, execution, _meta, handler) {
660
+ // Validate tool name according to SEP specification
661
+ validateAndWarnToolName(name);
662
+ const registeredTool = {
663
+ title,
664
+ description,
665
+ inputSchema: getZodSchemaObject(inputSchema),
666
+ outputSchema: getZodSchemaObject(outputSchema),
667
+ annotations,
668
+ execution,
669
+ _meta,
670
+ handler: handler,
671
+ enabled: true,
672
+ disable: () => registeredTool.update({ enabled: false }),
673
+ enable: () => registeredTool.update({ enabled: true }),
674
+ remove: () => registeredTool.update({ name: null }),
675
+ update: updates => {
676
+ if (typeof updates.name !== 'undefined' && updates.name !== name) {
677
+ if (typeof updates.name === 'string') {
678
+ validateAndWarnToolName(updates.name);
679
+ }
680
+ delete this._registeredTools[name];
681
+ if (updates.name)
682
+ this._registeredTools[updates.name] = registeredTool;
683
+ }
684
+ if (typeof updates.title !== 'undefined')
685
+ registeredTool.title = updates.title;
686
+ if (typeof updates.description !== 'undefined')
687
+ registeredTool.description = updates.description;
688
+ if (typeof updates.paramsSchema !== 'undefined')
689
+ registeredTool.inputSchema = objectFromShape(updates.paramsSchema);
690
+ if (typeof updates.outputSchema !== 'undefined')
691
+ registeredTool.outputSchema = objectFromShape(updates.outputSchema);
692
+ if (typeof updates.callback !== 'undefined')
693
+ registeredTool.handler = updates.callback;
694
+ if (typeof updates.annotations !== 'undefined')
695
+ registeredTool.annotations = updates.annotations;
696
+ if (typeof updates._meta !== 'undefined')
697
+ registeredTool._meta = updates._meta;
698
+ if (typeof updates.enabled !== 'undefined')
699
+ registeredTool.enabled = updates.enabled;
700
+ this.sendToolListChanged();
701
+ }
702
+ };
703
+ this._registeredTools[name] = registeredTool;
704
+ this.setToolRequestHandlers();
705
+ this.sendToolListChanged();
706
+ return registeredTool;
707
+ }
708
+ /**
709
+ * tool() implementation. Parses arguments passed to overrides defined above.
710
+ */
711
+ tool(name, ...rest) {
712
+ if (this._registeredTools[name]) {
713
+ throw new Error(`Tool ${name} is already registered`);
714
+ }
715
+ let description;
716
+ let inputSchema;
717
+ let outputSchema;
718
+ let annotations;
719
+ // Tool properties are passed as separate arguments, with omissions allowed.
720
+ // Support for this style is frozen as of protocol version 2025-03-26. Future additions
721
+ // to tool definition should *NOT* be added.
722
+ if (typeof rest[0] === 'string') {
723
+ description = rest.shift();
724
+ }
725
+ // Handle the different overload combinations
726
+ if (rest.length > 1) {
727
+ // We have at least one more arg before the callback
728
+ const firstArg = rest[0];
729
+ if (isZodRawShapeCompat(firstArg)) {
730
+ // We have a params schema as the first arg
731
+ inputSchema = rest.shift();
732
+ // Check if the next arg is potentially annotations
733
+ if (rest.length > 1 && typeof rest[0] === 'object' && rest[0] !== null && !isZodRawShapeCompat(rest[0])) {
734
+ // Case: tool(name, paramsSchema, annotations, cb)
735
+ // Or: tool(name, description, paramsSchema, annotations, cb)
736
+ annotations = rest.shift();
737
+ }
738
+ }
739
+ else if (typeof firstArg === 'object' && firstArg !== null) {
740
+ // ToolAnnotations values are primitives. Nested objects indicate a misplaced schema
741
+ if (Object.values(firstArg).some(v => typeof v === 'object' && v !== null)) {
742
+ throw new Error(`Tool ${name} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);
743
+ }
744
+ annotations = rest.shift();
745
+ }
746
+ }
747
+ const callback = rest[0];
748
+ return this._createRegisteredTool(name, undefined, description, inputSchema, outputSchema, annotations, { taskSupport: 'forbidden' }, undefined, callback);
749
+ }
750
+ /**
751
+ * Registers a tool with a config object and callback.
752
+ */
753
+ registerTool(name, config, cb) {
754
+ if (this._registeredTools[name]) {
755
+ throw new Error(`Tool ${name} is already registered`);
756
+ }
757
+ const { title, description, inputSchema, outputSchema, annotations, _meta } = config;
758
+ return this._createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, { taskSupport: 'forbidden' }, _meta, cb);
759
+ }
760
+ prompt(name, ...rest) {
761
+ if (this._registeredPrompts[name]) {
762
+ throw new Error(`Prompt ${name} is already registered`);
763
+ }
764
+ let description;
765
+ if (typeof rest[0] === 'string') {
766
+ description = rest.shift();
767
+ }
768
+ let argsSchema;
769
+ if (rest.length > 1) {
770
+ argsSchema = rest.shift();
771
+ }
772
+ const cb = rest[0];
773
+ const registeredPrompt = this._createRegisteredPrompt(name, undefined, description, argsSchema, cb);
774
+ this.setPromptRequestHandlers();
775
+ this.sendPromptListChanged();
776
+ return registeredPrompt;
777
+ }
778
+ /**
779
+ * Registers a prompt with a config object and callback.
780
+ */
781
+ registerPrompt(name, config, cb) {
782
+ if (this._registeredPrompts[name]) {
783
+ throw new Error(`Prompt ${name} is already registered`);
784
+ }
785
+ const { title, description, argsSchema } = config;
786
+ const registeredPrompt = this._createRegisteredPrompt(name, title, description, argsSchema, cb);
787
+ this.setPromptRequestHandlers();
788
+ this.sendPromptListChanged();
789
+ return registeredPrompt;
790
+ }
791
+ /**
792
+ * Checks if the server is connected to a transport.
793
+ * @returns True if the server is connected
794
+ */
795
+ isConnected() {
796
+ return this.server.transport !== undefined;
797
+ }
798
+ /**
799
+ * Sends a logging message to the client, if connected.
800
+ * Note: You only need to send the parameters object, not the entire JSON RPC message
801
+ * @see LoggingMessageNotification
802
+ * @param params
803
+ * @param sessionId optional for stateless and backward compatibility
804
+ */
805
+ async sendLoggingMessage(params, sessionId) {
806
+ return this.server.sendLoggingMessage(params, sessionId);
807
+ }
808
+ /**
809
+ * Sends a resource list changed event to the client, if connected.
810
+ */
811
+ sendResourceListChanged() {
812
+ if (this.isConnected()) {
813
+ this.server.sendResourceListChanged();
814
+ }
815
+ }
816
+ /**
817
+ * Sends a tool list changed event to the client, if connected.
818
+ */
819
+ sendToolListChanged() {
820
+ if (this.isConnected()) {
821
+ this.server.sendToolListChanged();
822
+ }
823
+ }
824
+ /**
825
+ * Sends a prompt list changed event to the client, if connected.
826
+ */
827
+ sendPromptListChanged() {
828
+ if (this.isConnected()) {
829
+ this.server.sendPromptListChanged();
830
+ }
831
+ }
832
+ }
833
+ /**
834
+ * A resource template combines a URI pattern with optional functionality to enumerate
835
+ * all resources matching that pattern.
836
+ */
837
+ export class ResourceTemplate {
838
+ constructor(uriTemplate, _callbacks) {
839
+ this._callbacks = _callbacks;
840
+ this._uriTemplate = typeof uriTemplate === 'string' ? new UriTemplate(uriTemplate) : uriTemplate;
841
+ }
842
+ /**
843
+ * Gets the URI template pattern.
844
+ */
845
+ get uriTemplate() {
846
+ return this._uriTemplate;
847
+ }
848
+ /**
849
+ * Gets the list callback, if one was provided.
850
+ */
851
+ get listCallback() {
852
+ return this._callbacks.list;
853
+ }
854
+ /**
855
+ * Gets the callback for completing a specific URI template variable, if one was provided.
856
+ */
857
+ completeCallback(variable) {
858
+ return this._callbacks.complete?.[variable];
859
+ }
860
+ }
861
+ const EMPTY_OBJECT_JSON_SCHEMA = {
862
+ type: 'object',
863
+ properties: {}
864
+ };
865
+ /**
866
+ * Checks if a value looks like a Zod schema by checking for parse/safeParse methods.
867
+ */
868
+ function isZodTypeLike(value) {
869
+ return (value !== null &&
870
+ typeof value === 'object' &&
871
+ 'parse' in value &&
872
+ typeof value.parse === 'function' &&
873
+ 'safeParse' in value &&
874
+ typeof value.safeParse === 'function');
875
+ }
876
+ /**
877
+ * Checks if an object is a Zod schema instance (v3 or v4).
878
+ *
879
+ * Zod schemas have internal markers:
880
+ * - v3: `_def` property
881
+ * - v4: `_zod` property
882
+ *
883
+ * This includes transformed schemas like z.preprocess(), z.transform(), z.pipe().
884
+ */
885
+ function isZodSchemaInstance(obj) {
886
+ return '_def' in obj || '_zod' in obj || isZodTypeLike(obj);
887
+ }
888
+ /**
889
+ * Checks if an object is a "raw shape" - a plain object where values are Zod schemas.
890
+ *
891
+ * Raw shapes are used as shorthand: `{ name: z.string() }` instead of `z.object({ name: z.string() })`.
892
+ *
893
+ * IMPORTANT: This must NOT match actual Zod schema instances (like z.preprocess, z.pipe),
894
+ * which have internal properties that could be mistaken for schema values.
895
+ */
896
+ function isZodRawShapeCompat(obj) {
897
+ if (typeof obj !== 'object' || obj === null) {
898
+ return false;
899
+ }
900
+ // If it's already a Zod schema instance, it's NOT a raw shape
901
+ if (isZodSchemaInstance(obj)) {
902
+ return false;
903
+ }
904
+ // Empty objects are valid raw shapes (tools with no parameters)
905
+ if (Object.keys(obj).length === 0) {
906
+ return true;
907
+ }
908
+ // A raw shape has at least one property that is a Zod schema
909
+ return Object.values(obj).some(isZodTypeLike);
910
+ }
911
+ /**
912
+ * Converts a provided Zod schema to a Zod object if it is a ZodRawShapeCompat,
913
+ * otherwise returns the schema as is. Throws if the value is not a valid Zod schema.
914
+ */
915
+ function getZodSchemaObject(schema) {
916
+ if (!schema) {
917
+ return undefined;
918
+ }
919
+ if (isZodRawShapeCompat(schema)) {
920
+ return objectFromShape(schema);
921
+ }
922
+ if (!isZodSchemaInstance(schema)) {
923
+ throw new Error('inputSchema must be a Zod schema or raw shape, received an unrecognized object');
924
+ }
925
+ return schema;
926
+ }
927
+ function promptArgumentsFromSchema(schema) {
928
+ const shape = getObjectShape(schema);
929
+ if (!shape)
930
+ return [];
931
+ return Object.entries(shape).map(([name, field]) => {
932
+ // Get description - works for both v3 and v4
933
+ const description = getSchemaDescription(field);
934
+ // Check if optional - works for both v3 and v4
935
+ const isOptional = isSchemaOptional(field);
936
+ return {
937
+ name,
938
+ description,
939
+ required: !isOptional
940
+ };
941
+ });
942
+ }
943
+ function getMethodValue(schema) {
944
+ const shape = getObjectShape(schema);
945
+ const methodSchema = shape?.method;
946
+ if (!methodSchema) {
947
+ throw new Error('Schema is missing a method literal');
948
+ }
949
+ // Extract literal value - works for both v3 and v4
950
+ const value = getLiteralValue(methodSchema);
951
+ if (typeof value === 'string') {
952
+ return value;
953
+ }
954
+ throw new Error('Schema method literal must be a string');
955
+ }
956
+ function createCompletionResult(suggestions) {
957
+ return {
958
+ completion: {
959
+ values: suggestions.slice(0, 100),
960
+ total: suggestions.length,
961
+ hasMore: suggestions.length > 100
962
+ }
963
+ };
964
+ }
965
+ const EMPTY_COMPLETION_RESULT = {
966
+ completion: {
967
+ values: [],
968
+ hasMore: false
969
+ }
970
+ };
971
+ //# sourceMappingURL=mcp.js.map