@kamilio/wire 0.1.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 (2055) hide show
  1. package/bin/wire-mcp.mjs +6 -0
  2. package/bin/wire.mjs +5 -0
  3. package/dist/adapters/root.d.ts +31 -0
  4. package/dist/adapters/root.d.ts.map +1 -0
  5. package/dist/adapters/root.js +447 -0
  6. package/dist/adapters/root.js.map +1 -0
  7. package/dist/adapters/services/catalog.d.ts +3 -0
  8. package/dist/adapters/services/catalog.d.ts.map +1 -0
  9. package/dist/adapters/services/catalog.js +18 -0
  10. package/dist/adapters/services/catalog.js.map +1 -0
  11. package/dist/auth.d.ts +25 -0
  12. package/dist/auth.d.ts.map +1 -0
  13. package/dist/auth.js +305 -0
  14. package/dist/auth.js.map +1 -0
  15. package/dist/cli.d.ts +4 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +526 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/executable.d.ts +3 -0
  20. package/dist/executable.d.ts.map +1 -0
  21. package/dist/executable.js +101 -0
  22. package/dist/executable.js.map +1 -0
  23. package/dist/hooks.d.ts +9 -0
  24. package/dist/hooks.d.ts.map +1 -0
  25. package/dist/hooks.js +176 -0
  26. package/dist/hooks.js.map +1 -0
  27. package/dist/index.d.ts +16 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +15 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/mcp.d.ts +6 -0
  32. package/dist/mcp.d.ts.map +1 -0
  33. package/dist/mcp.js +8 -0
  34. package/dist/mcp.js.map +1 -0
  35. package/node_modules/ajv/.runkit_example.js +23 -0
  36. package/node_modules/ajv/LICENSE +22 -0
  37. package/node_modules/ajv/README.md +207 -0
  38. package/node_modules/ajv/dist/2019.d.ts +19 -0
  39. package/node_modules/ajv/dist/2019.js +61 -0
  40. package/node_modules/ajv/dist/2019.js.map +1 -0
  41. package/node_modules/ajv/dist/2020.d.ts +19 -0
  42. package/node_modules/ajv/dist/2020.js +55 -0
  43. package/node_modules/ajv/dist/2020.js.map +1 -0
  44. package/node_modules/ajv/dist/ajv.d.ts +18 -0
  45. package/node_modules/ajv/dist/ajv.js +50 -0
  46. package/node_modules/ajv/dist/ajv.js.map +1 -0
  47. package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
  48. package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  49. package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  50. package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
  51. package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  52. package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  53. package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
  54. package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  55. package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  56. package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
  57. package/node_modules/ajv/dist/compile/errors.js +123 -0
  58. package/node_modules/ajv/dist/compile/errors.js.map +1 -0
  59. package/node_modules/ajv/dist/compile/index.d.ts +80 -0
  60. package/node_modules/ajv/dist/compile/index.js +242 -0
  61. package/node_modules/ajv/dist/compile/index.js.map +1 -0
  62. package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
  63. package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
  64. package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
  65. package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
  66. package/node_modules/ajv/dist/compile/jtd/serialize.js +236 -0
  67. package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
  68. package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
  69. package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
  70. package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
  71. package/node_modules/ajv/dist/compile/names.d.ts +20 -0
  72. package/node_modules/ajv/dist/compile/names.js +28 -0
  73. package/node_modules/ajv/dist/compile/names.js.map +1 -0
  74. package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
  75. package/node_modules/ajv/dist/compile/ref_error.js +12 -0
  76. package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  77. package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
  78. package/node_modules/ajv/dist/compile/resolve.js +155 -0
  79. package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  80. package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
  81. package/node_modules/ajv/dist/compile/rules.js +26 -0
  82. package/node_modules/ajv/dist/compile/rules.js.map +1 -0
  83. package/node_modules/ajv/dist/compile/util.d.ts +40 -0
  84. package/node_modules/ajv/dist/compile/util.js +178 -0
  85. package/node_modules/ajv/dist/compile/util.js.map +1 -0
  86. package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
  87. package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  88. package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  89. package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
  90. package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  91. package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  92. package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
  93. package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  94. package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  95. package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
  96. package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  97. package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  98. package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
  99. package/node_modules/ajv/dist/compile/validate/index.js +520 -0
  100. package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  101. package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
  102. package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  103. package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  104. package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
  105. package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  106. package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  107. package/node_modules/ajv/dist/core.d.ts +174 -0
  108. package/node_modules/ajv/dist/core.js +618 -0
  109. package/node_modules/ajv/dist/core.js.map +1 -0
  110. package/node_modules/ajv/dist/jtd.d.ts +47 -0
  111. package/node_modules/ajv/dist/jtd.js +72 -0
  112. package/node_modules/ajv/dist/jtd.js.map +1 -0
  113. package/node_modules/ajv/dist/refs/data.json +13 -0
  114. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
  115. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
  116. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
  117. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
  118. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
  119. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
  120. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
  121. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  122. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
  123. package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
  124. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
  125. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
  126. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
  127. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
  128. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
  129. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
  130. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  131. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  132. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  133. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
  134. package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
  135. package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
  136. package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  137. package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
  138. package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
  139. package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
  140. package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
  141. package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
  142. package/node_modules/ajv/dist/runtime/equal.js +7 -0
  143. package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  144. package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
  145. package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
  146. package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
  147. package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
  148. package/node_modules/ajv/dist/runtime/quote.js +30 -0
  149. package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
  150. package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
  151. package/node_modules/ajv/dist/runtime/re2.js +6 -0
  152. package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
  153. package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
  154. package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
  155. package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
  156. package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
  157. package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  158. package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  159. package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
  160. package/node_modules/ajv/dist/runtime/uri.js +6 -0
  161. package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  162. package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
  163. package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  164. package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  165. package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
  166. package/node_modules/ajv/dist/standalone/index.js +90 -0
  167. package/node_modules/ajv/dist/standalone/index.js.map +1 -0
  168. package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
  169. package/node_modules/ajv/dist/standalone/instance.js +35 -0
  170. package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
  171. package/node_modules/ajv/dist/types/index.d.ts +183 -0
  172. package/node_modules/ajv/dist/types/index.js +3 -0
  173. package/node_modules/ajv/dist/types/index.js.map +1 -0
  174. package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
  175. package/node_modules/ajv/dist/types/json-schema.js +3 -0
  176. package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
  177. package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
  178. package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
  179. package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
  180. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
  181. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  182. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  183. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
  184. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  185. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  186. package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
  187. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  188. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  189. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
  190. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  191. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  192. package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
  193. package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  194. package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  195. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
  196. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  197. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  198. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
  199. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
  200. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
  201. package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
  202. package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  203. package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  204. package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
  205. package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  206. package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  207. package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
  208. package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  209. package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  210. package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
  211. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  212. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  213. package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
  214. package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  215. package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  216. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
  217. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  218. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  219. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
  220. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  221. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  222. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
  223. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  224. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  225. package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
  226. package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  227. package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  228. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
  229. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  230. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  231. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
  232. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  233. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  234. package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
  235. package/node_modules/ajv/dist/vocabularies/code.js +131 -0
  236. package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  237. package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
  238. package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  239. package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  240. package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
  241. package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  242. package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  243. package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
  244. package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  245. package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  246. package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
  247. package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  248. package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  249. package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
  250. package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  251. package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  252. package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
  253. package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
  254. package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
  255. package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
  256. package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  257. package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  258. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
  259. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
  260. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
  261. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
  262. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
  263. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
  264. package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
  265. package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
  266. package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
  267. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
  268. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
  269. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
  270. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
  271. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
  272. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
  273. package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
  274. package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
  275. package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
  276. package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
  277. package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  278. package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  279. package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
  280. package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  281. package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  282. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
  283. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
  284. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
  285. package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
  286. package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
  287. package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
  288. package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
  289. package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
  290. package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
  291. package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
  292. package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
  293. package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
  294. package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
  295. package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
  296. package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
  297. package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
  298. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
  299. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
  300. package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
  301. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
  302. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
  303. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
  304. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
  305. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
  306. package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
  307. package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
  308. package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
  309. package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
  310. package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
  311. package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
  312. package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
  313. package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
  314. package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
  315. package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
  316. package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
  317. package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
  318. package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
  319. package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
  320. package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
  321. package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
  322. package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  323. package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  324. package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
  325. package/node_modules/ajv/dist/vocabularies/next.js +8 -0
  326. package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
  327. package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
  328. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
  329. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
  330. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
  331. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
  332. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
  333. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
  334. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
  335. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
  336. package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
  337. package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  338. package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  339. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
  340. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
  341. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
  342. package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
  343. package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  344. package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  345. package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
  346. package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  347. package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  348. package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
  349. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
  350. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
  351. package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
  352. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  353. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  354. package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
  355. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  356. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  357. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
  358. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  359. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  360. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
  361. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  362. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  363. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
  364. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  365. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  366. package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
  367. package/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  368. package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  369. package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
  370. package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  371. package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  372. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
  373. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  374. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  375. package/node_modules/ajv/lib/2019.ts +81 -0
  376. package/node_modules/ajv/lib/2020.ts +75 -0
  377. package/node_modules/ajv/lib/ajv.ts +70 -0
  378. package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
  379. package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
  380. package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
  381. package/node_modules/ajv/lib/compile/errors.ts +184 -0
  382. package/node_modules/ajv/lib/compile/index.ts +324 -0
  383. package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
  384. package/node_modules/ajv/lib/compile/jtd/serialize.ts +277 -0
  385. package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
  386. package/node_modules/ajv/lib/compile/names.ts +27 -0
  387. package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
  388. package/node_modules/ajv/lib/compile/resolve.ts +149 -0
  389. package/node_modules/ajv/lib/compile/rules.ts +50 -0
  390. package/node_modules/ajv/lib/compile/util.ts +213 -0
  391. package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
  392. package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
  393. package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
  394. package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
  395. package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
  396. package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
  397. package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
  398. package/node_modules/ajv/lib/core.ts +892 -0
  399. package/node_modules/ajv/lib/jtd.ts +132 -0
  400. package/node_modules/ajv/lib/refs/data.json +13 -0
  401. package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
  402. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
  403. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
  404. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
  405. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
  406. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  407. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
  408. package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
  409. package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
  410. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
  411. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
  412. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
  413. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  414. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  415. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  416. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
  417. package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
  418. package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
  419. package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
  420. package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
  421. package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
  422. package/node_modules/ajv/lib/runtime/equal.ts +7 -0
  423. package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
  424. package/node_modules/ajv/lib/runtime/quote.ts +31 -0
  425. package/node_modules/ajv/lib/runtime/re2.ts +6 -0
  426. package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
  427. package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
  428. package/node_modules/ajv/lib/runtime/uri.ts +6 -0
  429. package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
  430. package/node_modules/ajv/lib/standalone/index.ts +100 -0
  431. package/node_modules/ajv/lib/standalone/instance.ts +36 -0
  432. package/node_modules/ajv/lib/types/index.ts +244 -0
  433. package/node_modules/ajv/lib/types/json-schema.ts +187 -0
  434. package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
  435. package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
  436. package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
  437. package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
  438. package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
  439. package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
  440. package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
  441. package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
  442. package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
  443. package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
  444. package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
  445. package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
  446. package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
  447. package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
  448. package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
  449. package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
  450. package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
  451. package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
  452. package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
  453. package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
  454. package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
  455. package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
  456. package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
  457. package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
  458. package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
  459. package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
  460. package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
  461. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
  462. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
  463. package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
  464. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
  465. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
  466. package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
  467. package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
  468. package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
  469. package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
  470. package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
  471. package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
  472. package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
  473. package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
  474. package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
  475. package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
  476. package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
  477. package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
  478. package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
  479. package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
  480. package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
  481. package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
  482. package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
  483. package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
  484. package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
  485. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
  486. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
  487. package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
  488. package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
  489. package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
  490. package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
  491. package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
  492. package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
  493. package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
  494. package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
  495. package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
  496. package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
  497. package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +39 -0
  498. package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
  499. package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
  500. package/node_modules/ajv/package.json +126 -0
  501. package/node_modules/commander/LICENSE +22 -0
  502. package/node_modules/commander/Readme.md +1176 -0
  503. package/node_modules/commander/esm.mjs +16 -0
  504. package/node_modules/commander/index.js +24 -0
  505. package/node_modules/commander/lib/argument.js +150 -0
  506. package/node_modules/commander/lib/command.js +2777 -0
  507. package/node_modules/commander/lib/error.js +39 -0
  508. package/node_modules/commander/lib/help.js +747 -0
  509. package/node_modules/commander/lib/option.js +380 -0
  510. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  511. package/node_modules/commander/package-support.json +19 -0
  512. package/node_modules/commander/package.json +82 -0
  513. package/node_modules/commander/typings/esm.d.mts +3 -0
  514. package/node_modules/commander/typings/index.d.ts +1113 -0
  515. package/node_modules/fast-deep-equal/LICENSE +21 -0
  516. package/node_modules/fast-deep-equal/README.md +96 -0
  517. package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
  518. package/node_modules/fast-deep-equal/es6/index.js +72 -0
  519. package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
  520. package/node_modules/fast-deep-equal/es6/react.js +79 -0
  521. package/node_modules/fast-deep-equal/index.d.ts +4 -0
  522. package/node_modules/fast-deep-equal/index.js +46 -0
  523. package/node_modules/fast-deep-equal/package.json +61 -0
  524. package/node_modules/fast-deep-equal/react.d.ts +2 -0
  525. package/node_modules/fast-deep-equal/react.js +53 -0
  526. package/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
  527. package/node_modules/fast-string-truncated-width/dist/index.js +111 -0
  528. package/node_modules/fast-string-truncated-width/dist/types.d.ts +19 -0
  529. package/node_modules/fast-string-truncated-width/dist/types.js +2 -0
  530. package/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
  531. package/node_modules/fast-string-truncated-width/dist/utils.js +20 -0
  532. package/node_modules/fast-string-truncated-width/license +21 -0
  533. package/node_modules/fast-string-truncated-width/package.json +35 -0
  534. package/node_modules/fast-string-truncated-width/readme.md +59 -0
  535. package/node_modules/fast-string-width/dist/index.d.ts +4 -0
  536. package/node_modules/fast-string-width/dist/index.js +14 -0
  537. package/node_modules/fast-string-width/license +21 -0
  538. package/node_modules/fast-string-width/package.json +34 -0
  539. package/node_modules/fast-string-width/readme.md +42 -0
  540. package/node_modules/fast-uri/.gitattributes +2 -0
  541. package/node_modules/fast-uri/.github/dependabot.yml +13 -0
  542. package/node_modules/fast-uri/.github/workflows/ci.yml +106 -0
  543. package/node_modules/fast-uri/.github/workflows/lock-threads.yml +19 -0
  544. package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
  545. package/node_modules/fast-uri/LICENSE +30 -0
  546. package/node_modules/fast-uri/README.md +152 -0
  547. package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
  548. package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
  549. package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
  550. package/node_modules/fast-uri/benchmark/package.json +17 -0
  551. package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
  552. package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
  553. package/node_modules/fast-uri/eslint.config.js +6 -0
  554. package/node_modules/fast-uri/index.js +406 -0
  555. package/node_modules/fast-uri/lib/schemes.js +267 -0
  556. package/node_modules/fast-uri/lib/utils.js +443 -0
  557. package/node_modules/fast-uri/package.json +68 -0
  558. package/node_modules/fast-uri/test/ajv.test.js +43 -0
  559. package/node_modules/fast-uri/test/equal.test.js +117 -0
  560. package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
  561. package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
  562. package/node_modules/fast-uri/test/parse.test.js +323 -0
  563. package/node_modules/fast-uri/test/resolve.test.js +87 -0
  564. package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
  565. package/node_modules/fast-uri/test/security-normalization.test.js +39 -0
  566. package/node_modules/fast-uri/test/security.test.js +133 -0
  567. package/node_modules/fast-uri/test/serialize.test.js +151 -0
  568. package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
  569. package/node_modules/fast-uri/test/uri-js.test.js +912 -0
  570. package/node_modules/fast-uri/test/util.test.js +38 -0
  571. package/node_modules/fast-uri/tsconfig.json +9 -0
  572. package/node_modules/fast-uri/types/index.d.ts +60 -0
  573. package/node_modules/fast-uri/types/index.test-d.ts +17 -0
  574. package/node_modules/fast-wrap-ansi/LICENSE +23 -0
  575. package/node_modules/fast-wrap-ansi/README.md +26 -0
  576. package/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
  577. package/node_modules/fast-wrap-ansi/lib/main.js +218 -0
  578. package/node_modules/fast-wrap-ansi/package.json +51 -0
  579. package/node_modules/ignore/LICENSE-MIT +21 -0
  580. package/node_modules/ignore/README.md +412 -0
  581. package/node_modules/ignore/index.d.ts +61 -0
  582. package/node_modules/ignore/index.js +636 -0
  583. package/node_modules/ignore/legacy.js +559 -0
  584. package/node_modules/ignore/package.json +74 -0
  585. package/node_modules/jose/LICENSE.md +21 -0
  586. package/node_modules/jose/README.md +153 -0
  587. package/node_modules/jose/dist/types/index.d.ts +55 -0
  588. package/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +31 -0
  589. package/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +65 -0
  590. package/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +31 -0
  591. package/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +83 -0
  592. package/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +38 -0
  593. package/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +74 -0
  594. package/node_modules/jose/dist/types/jwk/embedded.d.ts +17 -0
  595. package/node_modules/jose/dist/types/jwk/thumbprint.d.ts +32 -0
  596. package/node_modules/jose/dist/types/jwks/local.d.ts +29 -0
  597. package/node_modules/jose/dist/types/jwks/remote.d.ts +237 -0
  598. package/node_modules/jose/dist/types/jws/compact/sign.d.ts +36 -0
  599. package/node_modules/jose/dist/types/jws/compact/verify.d.ts +33 -0
  600. package/node_modules/jose/dist/types/jws/flattened/sign.d.ts +42 -0
  601. package/node_modules/jose/dist/types/jws/flattened/verify.d.ts +33 -0
  602. package/node_modules/jose/dist/types/jws/general/sign.d.ts +53 -0
  603. package/node_modules/jose/dist/types/jws/general/verify.d.ts +41 -0
  604. package/node_modules/jose/dist/types/jwt/decrypt.d.ts +35 -0
  605. package/node_modules/jose/dist/types/jwt/encrypt.d.ts +91 -0
  606. package/node_modules/jose/dist/types/jwt/sign.d.ts +43 -0
  607. package/node_modules/jose/dist/types/jwt/unsecured.d.ts +43 -0
  608. package/node_modules/jose/dist/types/jwt/verify.d.ts +37 -0
  609. package/node_modules/jose/dist/types/key/export.d.ts +33 -0
  610. package/node_modules/jose/dist/types/key/generate_key_pair.d.ts +47 -0
  611. package/node_modules/jose/dist/types/key/generate_secret.d.ts +35 -0
  612. package/node_modules/jose/dist/types/key/import.d.ts +83 -0
  613. package/node_modules/jose/dist/types/types.d.ts +852 -0
  614. package/node_modules/jose/dist/types/util/base64url.d.ts +9 -0
  615. package/node_modules/jose/dist/types/util/decode_jwt.d.ts +18 -0
  616. package/node_modules/jose/dist/types/util/decode_protected_header.d.ts +17 -0
  617. package/node_modules/jose/dist/types/util/errors.d.ts +213 -0
  618. package/node_modules/jose/dist/webapi/index.js +32 -0
  619. package/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +27 -0
  620. package/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +27 -0
  621. package/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +159 -0
  622. package/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +167 -0
  623. package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +31 -0
  624. package/node_modules/jose/dist/webapi/jwe/general/encrypt.js +182 -0
  625. package/node_modules/jose/dist/webapi/jwk/embedded.js +17 -0
  626. package/node_modules/jose/dist/webapi/jwk/thumbprint.js +68 -0
  627. package/node_modules/jose/dist/webapi/jwks/local.js +119 -0
  628. package/node_modules/jose/dist/webapi/jwks/remote.js +179 -0
  629. package/node_modules/jose/dist/webapi/jws/compact/sign.js +18 -0
  630. package/node_modules/jose/dist/webapi/jws/compact/verify.js +21 -0
  631. package/node_modules/jose/dist/webapi/jws/flattened/sign.js +89 -0
  632. package/node_modules/jose/dist/webapi/jws/flattened/verify.js +110 -0
  633. package/node_modules/jose/dist/webapi/jws/general/sign.js +70 -0
  634. package/node_modules/jose/dist/webapi/jws/general/verify.js +24 -0
  635. package/node_modules/jose/dist/webapi/jwt/decrypt.js +23 -0
  636. package/node_modules/jose/dist/webapi/jwt/encrypt.js +101 -0
  637. package/node_modules/jose/dist/webapi/jwt/sign.js +52 -0
  638. package/node_modules/jose/dist/webapi/jwt/unsecured.js +63 -0
  639. package/node_modules/jose/dist/webapi/jwt/verify.js +15 -0
  640. package/node_modules/jose/dist/webapi/key/export.js +11 -0
  641. package/node_modules/jose/dist/webapi/key/generate_key_pair.js +97 -0
  642. package/node_modules/jose/dist/webapi/key/generate_secret.js +40 -0
  643. package/node_modules/jose/dist/webapi/key/import.js +57 -0
  644. package/node_modules/jose/dist/webapi/lib/aesgcmkw.js +15 -0
  645. package/node_modules/jose/dist/webapi/lib/aeskw.js +25 -0
  646. package/node_modules/jose/dist/webapi/lib/asn1.js +243 -0
  647. package/node_modules/jose/dist/webapi/lib/base64.js +22 -0
  648. package/node_modules/jose/dist/webapi/lib/buffer_utils.js +43 -0
  649. package/node_modules/jose/dist/webapi/lib/check_key_type.js +122 -0
  650. package/node_modules/jose/dist/webapi/lib/content_encryption.js +217 -0
  651. package/node_modules/jose/dist/webapi/lib/crypto_key.js +136 -0
  652. package/node_modules/jose/dist/webapi/lib/deflate.js +44 -0
  653. package/node_modules/jose/dist/webapi/lib/ecdhes.js +52 -0
  654. package/node_modules/jose/dist/webapi/lib/helpers.js +19 -0
  655. package/node_modules/jose/dist/webapi/lib/invalid_key_input.js +27 -0
  656. package/node_modules/jose/dist/webapi/lib/is_key_like.js +17 -0
  657. package/node_modules/jose/dist/webapi/lib/jwk_to_key.js +107 -0
  658. package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +238 -0
  659. package/node_modules/jose/dist/webapi/lib/key_management.js +186 -0
  660. package/node_modules/jose/dist/webapi/lib/key_to_jwk.js +31 -0
  661. package/node_modules/jose/dist/webapi/lib/normalize_key.js +166 -0
  662. package/node_modules/jose/dist/webapi/lib/pbes2kw.js +42 -0
  663. package/node_modules/jose/dist/webapi/lib/rsaes.js +24 -0
  664. package/node_modules/jose/dist/webapi/lib/signing.js +68 -0
  665. package/node_modules/jose/dist/webapi/lib/type_checks.js +40 -0
  666. package/node_modules/jose/dist/webapi/lib/validate_algorithms.js +10 -0
  667. package/node_modules/jose/dist/webapi/lib/validate_crit.js +33 -0
  668. package/node_modules/jose/dist/webapi/util/base64url.js +30 -0
  669. package/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -0
  670. package/node_modules/jose/dist/webapi/util/decode_protected_header.js +34 -0
  671. package/node_modules/jose/dist/webapi/util/errors.js +99 -0
  672. package/node_modules/jose/package.json +200 -0
  673. package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
  674. package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
  675. package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
  676. package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
  677. package/node_modules/json-schema-traverse/LICENSE +21 -0
  678. package/node_modules/json-schema-traverse/README.md +95 -0
  679. package/node_modules/json-schema-traverse/index.d.ts +40 -0
  680. package/node_modules/json-schema-traverse/index.js +93 -0
  681. package/node_modules/json-schema-traverse/package.json +43 -0
  682. package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
  683. package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
  684. package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
  685. package/node_modules/jsonc-parser/CHANGELOG.md +76 -0
  686. package/node_modules/jsonc-parser/LICENSE.md +21 -0
  687. package/node_modules/jsonc-parser/README.md +364 -0
  688. package/node_modules/jsonc-parser/SECURITY.md +41 -0
  689. package/node_modules/jsonc-parser/lib/esm/impl/edit.js +185 -0
  690. package/node_modules/jsonc-parser/lib/esm/impl/format.js +261 -0
  691. package/node_modules/jsonc-parser/lib/esm/impl/parser.js +659 -0
  692. package/node_modules/jsonc-parser/lib/esm/impl/scanner.js +443 -0
  693. package/node_modules/jsonc-parser/lib/esm/impl/string-intern.js +29 -0
  694. package/node_modules/jsonc-parser/lib/esm/main.d.ts +351 -0
  695. package/node_modules/jsonc-parser/lib/esm/main.js +178 -0
  696. package/node_modules/jsonc-parser/lib/umd/impl/edit.js +201 -0
  697. package/node_modules/jsonc-parser/lib/umd/impl/format.js +275 -0
  698. package/node_modules/jsonc-parser/lib/umd/impl/parser.js +682 -0
  699. package/node_modules/jsonc-parser/lib/umd/impl/scanner.js +456 -0
  700. package/node_modules/jsonc-parser/lib/umd/impl/string-intern.js +42 -0
  701. package/node_modules/jsonc-parser/lib/umd/main.d.ts +351 -0
  702. package/node_modules/jsonc-parser/lib/umd/main.js +194 -0
  703. package/node_modules/jsonc-parser/package.json +37 -0
  704. package/node_modules/pct-encode/.travis.yml +7 -0
  705. package/node_modules/pct-encode/AUTHORS +2 -0
  706. package/node_modules/pct-encode/LICENSE +11 -0
  707. package/node_modules/pct-encode/README.md +20 -0
  708. package/node_modules/pct-encode/index.js +23 -0
  709. package/node_modules/pct-encode/package.json +23 -0
  710. package/node_modules/pct-encode/test.js +10 -0
  711. package/node_modules/provider-asana/dist/asana-project.d.ts +29 -0
  712. package/node_modules/provider-asana/dist/asana-project.d.ts.map +1 -0
  713. package/node_modules/provider-asana/dist/asana-project.js +226 -0
  714. package/node_modules/provider-asana/dist/asana-project.js.map +1 -0
  715. package/node_modules/provider-asana/dist/asana-sync.d.ts +32 -0
  716. package/node_modules/provider-asana/dist/asana-sync.d.ts.map +1 -0
  717. package/node_modules/provider-asana/dist/asana-sync.js +208 -0
  718. package/node_modules/provider-asana/dist/asana-sync.js.map +1 -0
  719. package/node_modules/provider-asana/dist/asana-task.d.ts +29 -0
  720. package/node_modules/provider-asana/dist/asana-task.d.ts.map +1 -0
  721. package/node_modules/provider-asana/dist/asana-task.js +96 -0
  722. package/node_modules/provider-asana/dist/asana-task.js.map +1 -0
  723. package/node_modules/provider-asana/dist/index.d.ts +58 -0
  724. package/node_modules/provider-asana/dist/index.d.ts.map +1 -0
  725. package/node_modules/provider-asana/dist/index.js +9 -0
  726. package/node_modules/provider-asana/dist/index.js.map +1 -0
  727. package/node_modules/provider-asana/package.json +29 -0
  728. package/node_modules/provider-asana/src/asana-project.ts +202 -0
  729. package/node_modules/provider-asana/src/asana-sync.ts +217 -0
  730. package/node_modules/provider-asana/src/asana-task.ts +92 -0
  731. package/node_modules/provider-asana/src/index.ts +10 -0
  732. package/node_modules/provider-chatgpt/dist/chatgpt.d.ts +29 -0
  733. package/node_modules/provider-chatgpt/dist/chatgpt.d.ts.map +1 -0
  734. package/node_modules/provider-chatgpt/dist/chatgpt.js +169 -0
  735. package/node_modules/provider-chatgpt/dist/chatgpt.js.map +1 -0
  736. package/node_modules/provider-chatgpt/dist/index.d.ts +30 -0
  737. package/node_modules/provider-chatgpt/dist/index.d.ts.map +1 -0
  738. package/node_modules/provider-chatgpt/dist/index.js +6 -0
  739. package/node_modules/provider-chatgpt/dist/index.js.map +1 -0
  740. package/node_modules/provider-chatgpt/package.json +26 -0
  741. package/node_modules/provider-chatgpt/src/chatgpt.ts +158 -0
  742. package/node_modules/provider-chatgpt/src/index.ts +6 -0
  743. package/node_modules/provider-gmail/dist/gmail.d.ts +28 -0
  744. package/node_modules/provider-gmail/dist/gmail.d.ts.map +1 -0
  745. package/node_modules/provider-gmail/dist/gmail.js +86 -0
  746. package/node_modules/provider-gmail/dist/gmail.js.map +1 -0
  747. package/node_modules/provider-gmail/dist/index.d.ts +30 -0
  748. package/node_modules/provider-gmail/dist/index.d.ts.map +1 -0
  749. package/node_modules/provider-gmail/dist/index.js +6 -0
  750. package/node_modules/provider-gmail/dist/index.js.map +1 -0
  751. package/node_modules/provider-gmail/package.json +26 -0
  752. package/node_modules/provider-gmail/src/gmail.ts +83 -0
  753. package/node_modules/provider-gmail/src/index.ts +6 -0
  754. package/node_modules/provider-google-docs/dist/google-docs.d.ts +28 -0
  755. package/node_modules/provider-google-docs/dist/google-docs.d.ts.map +1 -0
  756. package/node_modules/provider-google-docs/dist/google-docs.js +833 -0
  757. package/node_modules/provider-google-docs/dist/google-docs.js.map +1 -0
  758. package/node_modules/provider-google-docs/dist/index.d.ts +30 -0
  759. package/node_modules/provider-google-docs/dist/index.d.ts.map +1 -0
  760. package/node_modules/provider-google-docs/dist/index.js +6 -0
  761. package/node_modules/provider-google-docs/dist/index.js.map +1 -0
  762. package/node_modules/provider-google-docs/package.json +26 -0
  763. package/node_modules/provider-google-docs/src/google-docs.ts +760 -0
  764. package/node_modules/provider-google-docs/src/index.ts +6 -0
  765. package/node_modules/provider-notion/dist/index.d.ts +32 -0
  766. package/node_modules/provider-notion/dist/index.d.ts.map +1 -0
  767. package/node_modules/provider-notion/dist/index.js +7 -0
  768. package/node_modules/provider-notion/dist/index.js.map +1 -0
  769. package/node_modules/provider-notion/dist/notion-sync.d.ts +56 -0
  770. package/node_modules/provider-notion/dist/notion-sync.d.ts.map +1 -0
  771. package/node_modules/provider-notion/dist/notion-sync.js +1036 -0
  772. package/node_modules/provider-notion/dist/notion-sync.js.map +1 -0
  773. package/node_modules/provider-notion/dist/notion.d.ts +28 -0
  774. package/node_modules/provider-notion/dist/notion.d.ts.map +1 -0
  775. package/node_modules/provider-notion/dist/notion.js +12 -0
  776. package/node_modules/provider-notion/dist/notion.js.map +1 -0
  777. package/node_modules/provider-notion/package.json +29 -0
  778. package/node_modules/provider-notion/src/index.ts +8 -0
  779. package/node_modules/provider-notion/src/notion-sync.ts +968 -0
  780. package/node_modules/provider-notion/src/notion.ts +14 -0
  781. package/node_modules/provider-slack/dist/index.d.ts +30 -0
  782. package/node_modules/provider-slack/dist/index.d.ts.map +1 -0
  783. package/node_modules/provider-slack/dist/index.js +6 -0
  784. package/node_modules/provider-slack/dist/index.js.map +1 -0
  785. package/node_modules/provider-slack/dist/slack.d.ts +28 -0
  786. package/node_modules/provider-slack/dist/slack.d.ts.map +1 -0
  787. package/node_modules/provider-slack/dist/slack.js +115 -0
  788. package/node_modules/provider-slack/dist/slack.js.map +1 -0
  789. package/node_modules/provider-slack/package.json +26 -0
  790. package/node_modules/provider-slack/src/index.ts +6 -0
  791. package/node_modules/provider-slack/src/slack.ts +108 -0
  792. package/node_modules/provider-zoom/dist/index.d.ts +30 -0
  793. package/node_modules/provider-zoom/dist/index.d.ts.map +1 -0
  794. package/node_modules/provider-zoom/dist/index.js +6 -0
  795. package/node_modules/provider-zoom/dist/index.js.map +1 -0
  796. package/node_modules/provider-zoom/dist/zoom-hub.d.ts +28 -0
  797. package/node_modules/provider-zoom/dist/zoom-hub.d.ts.map +1 -0
  798. package/node_modules/provider-zoom/dist/zoom-hub.js +209 -0
  799. package/node_modules/provider-zoom/dist/zoom-hub.js.map +1 -0
  800. package/node_modules/provider-zoom/package.json +26 -0
  801. package/node_modules/provider-zoom/src/index.ts +6 -0
  802. package/node_modules/provider-zoom/src/zoom-hub.ts +218 -0
  803. package/node_modules/require-from-string/index.js +34 -0
  804. package/node_modules/require-from-string/license +21 -0
  805. package/node_modules/require-from-string/package.json +28 -0
  806. package/node_modules/require-from-string/readme.md +56 -0
  807. package/node_modules/sisteransi/license +21 -0
  808. package/node_modules/sisteransi/package.json +34 -0
  809. package/node_modules/sisteransi/readme.md +113 -0
  810. package/node_modules/sisteransi/src/index.js +58 -0
  811. package/node_modules/sisteransi/src/sisteransi.d.ts +35 -0
  812. package/node_modules/smol-toml/LICENSE +24 -0
  813. package/node_modules/smol-toml/README.md +239 -0
  814. package/node_modules/smol-toml/dist/date.d.ts +41 -0
  815. package/node_modules/smol-toml/dist/date.js +127 -0
  816. package/node_modules/smol-toml/dist/error.d.ts +38 -0
  817. package/node_modules/smol-toml/dist/error.js +63 -0
  818. package/node_modules/smol-toml/dist/extract.d.ts +30 -0
  819. package/node_modules/smol-toml/dist/extract.js +100 -0
  820. package/node_modules/smol-toml/dist/index.cjs +897 -0
  821. package/node_modules/smol-toml/dist/index.d.ts +43 -0
  822. package/node_modules/smol-toml/dist/index.js +33 -0
  823. package/node_modules/smol-toml/dist/parse.d.ts +37 -0
  824. package/node_modules/smol-toml/dist/parse.js +148 -0
  825. package/node_modules/smol-toml/dist/primitive.d.ts +31 -0
  826. package/node_modules/smol-toml/dist/primitive.js +179 -0
  827. package/node_modules/smol-toml/dist/stringify.d.ts +31 -0
  828. package/node_modules/smol-toml/dist/stringify.js +167 -0
  829. package/node_modules/smol-toml/dist/struct.d.ts +32 -0
  830. package/node_modules/smol-toml/dist/struct.js +184 -0
  831. package/node_modules/smol-toml/dist/util.d.ts +42 -0
  832. package/node_modules/smol-toml/dist/util.js +111 -0
  833. package/node_modules/smol-toml/package.json +54 -0
  834. package/node_modules/tiny-stdio-mcp-server/README.md +180 -0
  835. package/node_modules/tiny-stdio-mcp-server/dist/content/audio.d.ts +14 -0
  836. package/node_modules/tiny-stdio-mcp-server/dist/content/audio.js +84 -0
  837. package/node_modules/tiny-stdio-mcp-server/dist/content/convert.d.ts +16 -0
  838. package/node_modules/tiny-stdio-mcp-server/dist/content/convert.js +61 -0
  839. package/node_modules/tiny-stdio-mcp-server/dist/content/file-type.d.ts +11 -0
  840. package/node_modules/tiny-stdio-mcp-server/dist/content/file-type.js +93 -0
  841. package/node_modules/tiny-stdio-mcp-server/dist/content/file.d.ts +27 -0
  842. package/node_modules/tiny-stdio-mcp-server/dist/content/file.js +110 -0
  843. package/node_modules/tiny-stdio-mcp-server/dist/content/image.d.ts +14 -0
  844. package/node_modules/tiny-stdio-mcp-server/dist/content/image.js +72 -0
  845. package/node_modules/tiny-stdio-mcp-server/dist/content/index.d.ts +5 -0
  846. package/node_modules/tiny-stdio-mcp-server/dist/content/index.js +8 -0
  847. package/node_modules/tiny-stdio-mcp-server/dist/content/mime.d.ts +7 -0
  848. package/node_modules/tiny-stdio-mcp-server/dist/content/mime.js +52 -0
  849. package/node_modules/tiny-stdio-mcp-server/dist/index.d.ts +9 -0
  850. package/node_modules/tiny-stdio-mcp-server/dist/index.js +7 -0
  851. package/node_modules/tiny-stdio-mcp-server/dist/jsonrpc.d.ts +14 -0
  852. package/node_modules/tiny-stdio-mcp-server/dist/jsonrpc.js +117 -0
  853. package/node_modules/tiny-stdio-mcp-server/dist/schema.d.ts +19 -0
  854. package/node_modules/tiny-stdio-mcp-server/dist/schema.js +23 -0
  855. package/node_modules/tiny-stdio-mcp-server/dist/server.d.ts +29 -0
  856. package/node_modules/tiny-stdio-mcp-server/dist/server.js +666 -0
  857. package/node_modules/tiny-stdio-mcp-server/dist/types.d.ts +248 -0
  858. package/node_modules/tiny-stdio-mcp-server/dist/types.js +20 -0
  859. package/node_modules/tiny-stdio-mcp-server/package.json +53 -0
  860. package/node_modules/toolcraft/README.md +549 -0
  861. package/node_modules/toolcraft/dist/api-error-summary.d.ts +53 -0
  862. package/node_modules/toolcraft/dist/api-error-summary.js +162 -0
  863. package/node_modules/toolcraft/dist/cli.compile-check.d.ts +1 -0
  864. package/node_modules/toolcraft/dist/cli.compile-check.js +40 -0
  865. package/node_modules/toolcraft/dist/cli.d.ts +32 -0
  866. package/node_modules/toolcraft/dist/cli.js +3533 -0
  867. package/node_modules/toolcraft/dist/design/brand.d.ts +2 -0
  868. package/node_modules/toolcraft/dist/design/brand.js +1 -0
  869. package/node_modules/toolcraft/dist/design/brands.d.ts +2 -0
  870. package/node_modules/toolcraft/dist/design/brands.js +1 -0
  871. package/node_modules/toolcraft/dist/design/cancel.d.ts +1 -0
  872. package/node_modules/toolcraft/dist/design/cancel.js +1 -0
  873. package/node_modules/toolcraft/dist/design/color.d.ts +2 -0
  874. package/node_modules/toolcraft/dist/design/color.js +1 -0
  875. package/node_modules/toolcraft/dist/design/configure-theme.d.ts +1 -0
  876. package/node_modules/toolcraft/dist/design/configure-theme.js +1 -0
  877. package/node_modules/toolcraft/dist/design/confirm-or-cancel.d.ts +2 -0
  878. package/node_modules/toolcraft/dist/design/confirm-or-cancel.js +1 -0
  879. package/node_modules/toolcraft/dist/design/confirm.d.ts +2 -0
  880. package/node_modules/toolcraft/dist/design/confirm.js +1 -0
  881. package/node_modules/toolcraft/dist/design/create-dashboard.d.ts +2 -0
  882. package/node_modules/toolcraft/dist/design/create-dashboard.js +1 -0
  883. package/node_modules/toolcraft/dist/design/create-logger.d.ts +2 -0
  884. package/node_modules/toolcraft/dist/design/create-logger.js +1 -0
  885. package/node_modules/toolcraft/dist/design/dark.d.ts +2 -0
  886. package/node_modules/toolcraft/dist/design/dark.js +1 -0
  887. package/node_modules/toolcraft/dist/design/format-columns.d.ts +2 -0
  888. package/node_modules/toolcraft/dist/design/format-columns.js +1 -0
  889. package/node_modules/toolcraft/dist/design/format-command-list.d.ts +2 -0
  890. package/node_modules/toolcraft/dist/design/format-command-list.js +1 -0
  891. package/node_modules/toolcraft/dist/design/format-command-not-found-panel.d.ts +1 -0
  892. package/node_modules/toolcraft/dist/design/format-command-not-found-panel.js +1 -0
  893. package/node_modules/toolcraft/dist/design/format-command-not-found.d.ts +1 -0
  894. package/node_modules/toolcraft/dist/design/format-command-not-found.js +1 -0
  895. package/node_modules/toolcraft/dist/design/format-command.d.ts +1 -0
  896. package/node_modules/toolcraft/dist/design/format-command.js +1 -0
  897. package/node_modules/toolcraft/dist/design/format-option-list.d.ts +2 -0
  898. package/node_modules/toolcraft/dist/design/format-option-list.js +1 -0
  899. package/node_modules/toolcraft/dist/design/format-option.d.ts +1 -0
  900. package/node_modules/toolcraft/dist/design/format-option.js +1 -0
  901. package/node_modules/toolcraft/dist/design/format-usage.d.ts +1 -0
  902. package/node_modules/toolcraft/dist/design/format-usage.js +1 -0
  903. package/node_modules/toolcraft/dist/design/get-template-partial-names.d.ts +1 -0
  904. package/node_modules/toolcraft/dist/design/get-template-partial-names.js +1 -0
  905. package/node_modules/toolcraft/dist/design/get-theme-config.d.ts +1 -0
  906. package/node_modules/toolcraft/dist/design/get-theme-config.js +1 -0
  907. package/node_modules/toolcraft/dist/design/get-theme.d.ts +2 -0
  908. package/node_modules/toolcraft/dist/design/get-theme.js +1 -0
  909. package/node_modules/toolcraft/dist/design/help-formatter-plain.d.ts +2 -0
  910. package/node_modules/toolcraft/dist/design/help-formatter-plain.js +2 -0
  911. package/node_modules/toolcraft/dist/design/help-formatter.d.ts +2 -0
  912. package/node_modules/toolcraft/dist/design/help-formatter.js +1 -0
  913. package/node_modules/toolcraft/dist/design/intro-plain.d.ts +1 -0
  914. package/node_modules/toolcraft/dist/design/intro-plain.js +1 -0
  915. package/node_modules/toolcraft/dist/design/intro.d.ts +1 -0
  916. package/node_modules/toolcraft/dist/design/intro.js +1 -0
  917. package/node_modules/toolcraft/dist/design/is-cancel.d.ts +1 -0
  918. package/node_modules/toolcraft/dist/design/is-cancel.js +1 -0
  919. package/node_modules/toolcraft/dist/design/light.d.ts +2 -0
  920. package/node_modules/toolcraft/dist/design/light.js +1 -0
  921. package/node_modules/toolcraft/dist/design/log.d.ts +1 -0
  922. package/node_modules/toolcraft/dist/design/log.js +1 -0
  923. package/node_modules/toolcraft/dist/design/logger.d.ts +2 -0
  924. package/node_modules/toolcraft/dist/design/logger.js +1 -0
  925. package/node_modules/toolcraft/dist/design/multiselect.d.ts +2 -0
  926. package/node_modules/toolcraft/dist/design/multiselect.js +1 -0
  927. package/node_modules/toolcraft/dist/design/note.d.ts +1 -0
  928. package/node_modules/toolcraft/dist/design/note.js +1 -0
  929. package/node_modules/toolcraft/dist/design/open-external.d.ts +1 -0
  930. package/node_modules/toolcraft/dist/design/open-external.js +1 -0
  931. package/node_modules/toolcraft/dist/design/outro.d.ts +1 -0
  932. package/node_modules/toolcraft/dist/design/outro.js +1 -0
  933. package/node_modules/toolcraft/dist/design/parse.d.ts +2 -0
  934. package/node_modules/toolcraft/dist/design/parse.js +1 -0
  935. package/node_modules/toolcraft/dist/design/password.d.ts +2 -0
  936. package/node_modules/toolcraft/dist/design/password.js +1 -0
  937. package/node_modules/toolcraft/dist/design/prompt-cancelled-error.d.ts +1 -0
  938. package/node_modules/toolcraft/dist/design/prompt-cancelled-error.js +1 -0
  939. package/node_modules/toolcraft/dist/design/prompt-text.d.ts +2 -0
  940. package/node_modules/toolcraft/dist/design/prompt-text.js +1 -0
  941. package/node_modules/toolcraft/dist/design/prompt-theme.d.ts +1 -0
  942. package/node_modules/toolcraft/dist/design/prompt-theme.js +1 -0
  943. package/node_modules/toolcraft/dist/design/render-catalog.d.ts +2 -0
  944. package/node_modules/toolcraft/dist/design/render-catalog.js +1 -0
  945. package/node_modules/toolcraft/dist/design/render-detail-card.d.ts +2 -0
  946. package/node_modules/toolcraft/dist/design/render-detail-card.js +1 -0
  947. package/node_modules/toolcraft/dist/design/render-html.d.ts +2 -0
  948. package/node_modules/toolcraft/dist/design/render-html.js +1 -0
  949. package/node_modules/toolcraft/dist/design/render-inspector-card.d.ts +2 -0
  950. package/node_modules/toolcraft/dist/design/render-inspector-card.js +1 -0
  951. package/node_modules/toolcraft/dist/design/render-markdown-html.d.ts +2 -0
  952. package/node_modules/toolcraft/dist/design/render-markdown-html.js +1 -0
  953. package/node_modules/toolcraft/dist/design/render-markdown.d.ts +2 -0
  954. package/node_modules/toolcraft/dist/design/render-markdown.js +1 -0
  955. package/node_modules/toolcraft/dist/design/render-menu.d.ts +2 -0
  956. package/node_modules/toolcraft/dist/design/render-menu.js +1 -0
  957. package/node_modules/toolcraft/dist/design/render-resource-browser.d.ts +2 -0
  958. package/node_modules/toolcraft/dist/design/render-resource-browser.js +1 -0
  959. package/node_modules/toolcraft/dist/design/render-spinner-frame.d.ts +2 -0
  960. package/node_modules/toolcraft/dist/design/render-spinner-frame.js +1 -0
  961. package/node_modules/toolcraft/dist/design/render-spinner-stopped.d.ts +2 -0
  962. package/node_modules/toolcraft/dist/design/render-spinner-stopped.js +1 -0
  963. package/node_modules/toolcraft/dist/design/render-table.d.ts +2 -0
  964. package/node_modules/toolcraft/dist/design/render-table.js +1 -0
  965. package/node_modules/toolcraft/dist/design/render-template.d.ts +2 -0
  966. package/node_modules/toolcraft/dist/design/render-template.js +1 -0
  967. package/node_modules/toolcraft/dist/design/render.d.ts +2 -0
  968. package/node_modules/toolcraft/dist/design/render.js +1 -0
  969. package/node_modules/toolcraft/dist/design/reset-output-format-cache.d.ts +1 -0
  970. package/node_modules/toolcraft/dist/design/reset-output-format-cache.js +1 -0
  971. package/node_modules/toolcraft/dist/design/reset-theme-cache.d.ts +1 -0
  972. package/node_modules/toolcraft/dist/design/reset-theme-cache.js +1 -0
  973. package/node_modules/toolcraft/dist/design/reset-theme.d.ts +1 -0
  974. package/node_modules/toolcraft/dist/design/reset-theme.js +1 -0
  975. package/node_modules/toolcraft/dist/design/resolve-output-format.d.ts +2 -0
  976. package/node_modules/toolcraft/dist/design/resolve-output-format.js +1 -0
  977. package/node_modules/toolcraft/dist/design/resolve-template-partials.d.ts +1 -0
  978. package/node_modules/toolcraft/dist/design/resolve-template-partials.js +1 -0
  979. package/node_modules/toolcraft/dist/design/resolve-theme-name.d.ts +2 -0
  980. package/node_modules/toolcraft/dist/design/resolve-theme-name.js +1 -0
  981. package/node_modules/toolcraft/dist/design/run-explorer.d.ts +2 -0
  982. package/node_modules/toolcraft/dist/design/run-explorer.js +1 -0
  983. package/node_modules/toolcraft/dist/design/run-two-pane-explorer.d.ts +2 -0
  984. package/node_modules/toolcraft/dist/design/run-two-pane-explorer.js +1 -0
  985. package/node_modules/toolcraft/dist/design/select.d.ts +2 -0
  986. package/node_modules/toolcraft/dist/design/select.js +1 -0
  987. package/node_modules/toolcraft/dist/design/should-use-interactive-dashboard.d.ts +1 -0
  988. package/node_modules/toolcraft/dist/design/should-use-interactive-dashboard.js +1 -0
  989. package/node_modules/toolcraft/dist/design/single-detail.d.ts +2 -0
  990. package/node_modules/toolcraft/dist/design/single-detail.js +1 -0
  991. package/node_modules/toolcraft/dist/design/spacing.d.ts +1 -0
  992. package/node_modules/toolcraft/dist/design/spacing.js +1 -0
  993. package/node_modules/toolcraft/dist/design/spinner-frames.d.ts +1 -0
  994. package/node_modules/toolcraft/dist/design/spinner-frames.js +1 -0
  995. package/node_modules/toolcraft/dist/design/spinner.d.ts +2 -0
  996. package/node_modules/toolcraft/dist/design/spinner.js +1 -0
  997. package/node_modules/toolcraft/dist/design/strip-ansi.d.ts +1 -0
  998. package/node_modules/toolcraft/dist/design/strip-ansi.js +1 -0
  999. package/node_modules/toolcraft/dist/design/symbols.d.ts +1 -0
  1000. package/node_modules/toolcraft/dist/design/symbols.js +1 -0
  1001. package/node_modules/toolcraft/dist/design/text.d.ts +1 -0
  1002. package/node_modules/toolcraft/dist/design/text.js +1 -0
  1003. package/node_modules/toolcraft/dist/design/typography.d.ts +1 -0
  1004. package/node_modules/toolcraft/dist/design/typography.js +1 -0
  1005. package/node_modules/toolcraft/dist/design/widths.d.ts +1 -0
  1006. package/node_modules/toolcraft/dist/design/widths.js +1 -0
  1007. package/node_modules/toolcraft/dist/design/with-output-format.d.ts +2 -0
  1008. package/node_modules/toolcraft/dist/design/with-output-format.js +1 -0
  1009. package/node_modules/toolcraft/dist/design/with-spinner.d.ts +2 -0
  1010. package/node_modules/toolcraft/dist/design/with-spinner.js +1 -0
  1011. package/node_modules/toolcraft/dist/design.d.ts +1 -0
  1012. package/node_modules/toolcraft/dist/design.js +1 -0
  1013. package/node_modules/toolcraft/dist/error-codes.d.ts +1 -0
  1014. package/node_modules/toolcraft/dist/error-codes.js +6 -0
  1015. package/node_modules/toolcraft/dist/error-report.d.ts +39 -0
  1016. package/node_modules/toolcraft/dist/error-report.js +432 -0
  1017. package/node_modules/toolcraft/dist/http-errors.d.ts +57 -0
  1018. package/node_modules/toolcraft/dist/http-errors.js +72 -0
  1019. package/node_modules/toolcraft/dist/human-in-loop/approval-tasks.d.ts +32 -0
  1020. package/node_modules/toolcraft/dist/human-in-loop/approval-tasks.js +206 -0
  1021. package/node_modules/toolcraft/dist/human-in-loop/approvals-commands.d.ts +11 -0
  1022. package/node_modules/toolcraft/dist/human-in-loop/approvals-commands.js +228 -0
  1023. package/node_modules/toolcraft/dist/human-in-loop/config.d.ts +11 -0
  1024. package/node_modules/toolcraft/dist/human-in-loop/config.js +21 -0
  1025. package/node_modules/toolcraft/dist/human-in-loop/default-provider.d.ts +2 -0
  1026. package/node_modules/toolcraft/dist/human-in-loop/default-provider.js +28 -0
  1027. package/node_modules/toolcraft/dist/human-in-loop/gate.d.ts +4 -0
  1028. package/node_modules/toolcraft/dist/human-in-loop/gate.js +57 -0
  1029. package/node_modules/toolcraft/dist/human-in-loop/index.d.ts +7 -0
  1030. package/node_modules/toolcraft/dist/human-in-loop/index.js +4 -0
  1031. package/node_modules/toolcraft/dist/human-in-loop/runner.d.ts +3 -0
  1032. package/node_modules/toolcraft/dist/human-in-loop/runner.js +245 -0
  1033. package/node_modules/toolcraft/dist/human-in-loop/spawn.d.ts +3 -0
  1034. package/node_modules/toolcraft/dist/human-in-loop/spawn.js +16 -0
  1035. package/node_modules/toolcraft/dist/human-in-loop/state-machine.d.ts +4 -0
  1036. package/node_modules/toolcraft/dist/human-in-loop/state-machine.js +18 -0
  1037. package/node_modules/toolcraft/dist/human-in-loop/types.d.ts +41 -0
  1038. package/node_modules/toolcraft/dist/human-in-loop/types.js +13 -0
  1039. package/node_modules/toolcraft/dist/index.compile-check.d.ts +1 -0
  1040. package/node_modules/toolcraft/dist/index.compile-check.js +74 -0
  1041. package/node_modules/toolcraft/dist/index.d.ts +212 -0
  1042. package/node_modules/toolcraft/dist/index.js +476 -0
  1043. package/node_modules/toolcraft/dist/json-schema-converter.d.ts +22 -0
  1044. package/node_modules/toolcraft/dist/json-schema-converter.js +493 -0
  1045. package/node_modules/toolcraft/dist/mcp-proxy.d.ts +12 -0
  1046. package/node_modules/toolcraft/dist/mcp-proxy.js +489 -0
  1047. package/node_modules/toolcraft/dist/mcp.compile-check.d.ts +1 -0
  1048. package/node_modules/toolcraft/dist/mcp.compile-check.js +29 -0
  1049. package/node_modules/toolcraft/dist/mcp.d.ts +46 -0
  1050. package/node_modules/toolcraft/dist/mcp.js +890 -0
  1051. package/node_modules/toolcraft/dist/number-schema.d.ts +3 -0
  1052. package/node_modules/toolcraft/dist/number-schema.js +15 -0
  1053. package/node_modules/toolcraft/dist/package-metadata.d.ts +10 -0
  1054. package/node_modules/toolcraft/dist/package-metadata.js +62 -0
  1055. package/node_modules/toolcraft/dist/redaction.d.ts +4 -0
  1056. package/node_modules/toolcraft/dist/redaction.js +70 -0
  1057. package/node_modules/toolcraft/dist/renderer.d.ts +11 -0
  1058. package/node_modules/toolcraft/dist/renderer.js +348 -0
  1059. package/node_modules/toolcraft/dist/runtime-logging.d.ts +19 -0
  1060. package/node_modules/toolcraft/dist/runtime-logging.js +42 -0
  1061. package/node_modules/toolcraft/dist/schema-scope.d.ts +4 -0
  1062. package/node_modules/toolcraft/dist/schema-scope.js +55 -0
  1063. package/node_modules/toolcraft/dist/sdk.compile-check.d.ts +1 -0
  1064. package/node_modules/toolcraft/dist/sdk.compile-check.js +158 -0
  1065. package/node_modules/toolcraft/dist/sdk.d.ts +81 -0
  1066. package/node_modules/toolcraft/dist/sdk.js +494 -0
  1067. package/node_modules/toolcraft/dist/source-snippet.d.ts +8 -0
  1068. package/node_modules/toolcraft/dist/source-snippet.js +42 -0
  1069. package/node_modules/toolcraft/dist/stack-trim.d.ts +4 -0
  1070. package/node_modules/toolcraft/dist/stack-trim.js +70 -0
  1071. package/node_modules/toolcraft/dist/suggest.d.ts +4 -0
  1072. package/node_modules/toolcraft/dist/suggest.js +46 -0
  1073. package/node_modules/toolcraft/dist/user-error.d.ts +6 -0
  1074. package/node_modules/toolcraft/dist/user-error.js +12 -0
  1075. package/node_modules/toolcraft/dist/validation-errors.d.ts +5 -0
  1076. package/node_modules/toolcraft/dist/validation-errors.js +18 -0
  1077. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/README.md +35 -0
  1078. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/claude-code.d.ts +2 -0
  1079. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/claude-code.js +21 -0
  1080. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/claude-desktop.d.ts +2 -0
  1081. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/claude-desktop.js +18 -0
  1082. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/codex.d.ts +2 -0
  1083. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/codex.js +25 -0
  1084. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/cursor.d.ts +2 -0
  1085. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/cursor.js +15 -0
  1086. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/gemini-cli.d.ts +2 -0
  1087. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/gemini-cli.js +16 -0
  1088. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/goose.d.ts +2 -0
  1089. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/goose.js +16 -0
  1090. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/index.d.ts +9 -0
  1091. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/index.js +9 -0
  1092. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/kimi.d.ts +2 -0
  1093. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/kimi.js +16 -0
  1094. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/opencode.d.ts +2 -0
  1095. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/opencode.js +20 -0
  1096. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/poe-agent.d.ts +2 -0
  1097. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/agents/poe-agent.js +14 -0
  1098. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/index.d.ts +5 -0
  1099. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/index.js +3 -0
  1100. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/registry.d.ts +3 -0
  1101. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/registry.js +45 -0
  1102. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/specifier.d.ts +7 -0
  1103. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/specifier.js +40 -0
  1104. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/types.d.ts +28 -0
  1105. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/dist/types.js +1 -0
  1106. package/node_modules/toolcraft/node_modules/@poe-code/agent-defs/package.json +20 -0
  1107. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/README.md +42 -0
  1108. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/index.d.ts +5 -0
  1109. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/index.js +3 -0
  1110. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/providers/mock.d.ts +2 -0
  1111. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/providers/mock.js +18 -0
  1112. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/providers/osascript-script.d.ts +4 -0
  1113. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/providers/osascript-script.js +46 -0
  1114. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/providers/osascript.d.ts +6 -0
  1115. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/providers/osascript.js +39 -0
  1116. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/request-approval.d.ts +4 -0
  1117. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/request-approval.js +46 -0
  1118. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/types.d.ts +14 -0
  1119. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/dist/types.js +1 -0
  1120. package/node_modules/toolcraft/node_modules/@poe-code/agent-human-in-loop/package.json +24 -0
  1121. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/README.md +54 -0
  1122. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/apply.d.ts +6 -0
  1123. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/apply.js +157 -0
  1124. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/configs.d.ts +22 -0
  1125. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/configs.js +83 -0
  1126. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/index.d.ts +3 -0
  1127. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/index.js +2 -0
  1128. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/shapes.d.ts +43 -0
  1129. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/shapes.js +94 -0
  1130. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/types.d.ts +25 -0
  1131. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/dist/types.js +1 -0
  1132. package/node_modules/toolcraft/node_modules/@poe-code/agent-mcp-config/package.json +23 -0
  1133. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/README.md +55 -0
  1134. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/error-codes.d.ts +1 -0
  1135. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/error-codes.js +6 -0
  1136. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/execution/apply-mutation.d.ts +6 -0
  1137. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/execution/apply-mutation.js +829 -0
  1138. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/execution/path-utils.d.ts +17 -0
  1139. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/execution/path-utils.js +64 -0
  1140. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/execution/run-mutations.d.ts +7 -0
  1141. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/execution/run-mutations.js +39 -0
  1142. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/index.d.ts +13 -0
  1143. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/index.js +49 -0
  1144. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/json.d.ts +32 -0
  1145. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/json.js +171 -0
  1146. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/object.d.ts +4 -0
  1147. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/object.js +27 -0
  1148. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/toml.d.ts +2 -0
  1149. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/toml.js +75 -0
  1150. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/yaml.d.ts +2 -0
  1151. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/formats/yaml.js +76 -0
  1152. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/fs-utils.d.ts +18 -0
  1153. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/fs-utils.js +43 -0
  1154. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/index.d.ts +8 -0
  1155. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/index.js +8 -0
  1156. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/mutations/config-mutation.d.ts +47 -0
  1157. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/mutations/config-mutation.js +34 -0
  1158. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/mutations/file-mutation.d.ts +62 -0
  1159. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/mutations/file-mutation.js +55 -0
  1160. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/mutations/template-mutation.d.ts +40 -0
  1161. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/mutations/template-mutation.js +32 -0
  1162. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/template/render.d.ts +6 -0
  1163. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/template/render.js +8 -0
  1164. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/testing/format-utils.d.ts +7 -0
  1165. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/testing/format-utils.js +21 -0
  1166. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/testing/index.d.ts +3 -0
  1167. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/testing/index.js +2 -0
  1168. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.d.ts +25 -0
  1169. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.js +194 -0
  1170. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/types.d.ts +168 -0
  1171. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/dist/types.js +6 -0
  1172. package/node_modules/toolcraft/node_modules/@poe-code/config-mutations/package.json +29 -0
  1173. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/README.md +35 -0
  1174. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/fences.d.ts +25 -0
  1175. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/fences.js +100 -0
  1176. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/index.d.ts +3 -0
  1177. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/index.js +3 -0
  1178. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/parse.d.ts +20 -0
  1179. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/parse.js +209 -0
  1180. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/stringify.d.ts +1 -0
  1181. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/dist/stringify.js +48 -0
  1182. package/node_modules/toolcraft/node_modules/@poe-code/frontmatter/package.json +25 -0
  1183. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/README.md +41 -0
  1184. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/args.d.ts +3 -0
  1185. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/args.js +61 -0
  1186. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/build-context.d.ts +5 -0
  1187. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/build-context.js +37 -0
  1188. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/context.d.ts +3 -0
  1189. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/context.js +30 -0
  1190. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/docker-execution-env.d.ts +28 -0
  1191. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/docker-execution-env.js +696 -0
  1192. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/docker-runner.d.ts +2 -0
  1193. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/docker-runner.js +200 -0
  1194. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/engine.d.ts +3 -0
  1195. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/engine.js +24 -0
  1196. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/env-file.d.ts +6 -0
  1197. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/docker/env-file.js +49 -0
  1198. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/host/host-execution-env.d.ts +2 -0
  1199. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/host/host-execution-env.js +62 -0
  1200. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/host/host-runner.d.ts +3 -0
  1201. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/host/host-runner.js +124 -0
  1202. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/index.d.ts +10 -0
  1203. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/index.js +9 -0
  1204. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/testing/index.d.ts +2 -0
  1205. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/testing/index.js +1 -0
  1206. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/testing/mock-runner.d.ts +3 -0
  1207. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/testing/mock-runner.js +137 -0
  1208. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/testing/verify.d.ts +1 -0
  1209. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/testing/verify.js +359 -0
  1210. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/types.d.ts +186 -0
  1211. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/types.js +1 -0
  1212. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/workspace-transfer.d.ts +61 -0
  1213. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/dist/workspace-transfer.js +555 -0
  1214. package/node_modules/toolcraft/node_modules/@poe-code/process-runner/package.json +34 -0
  1215. package/node_modules/toolcraft/node_modules/@poe-code/task-list/README.md +271 -0
  1216. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/gh-issues-client.d.ts +19 -0
  1217. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/gh-issues-client.js +65 -0
  1218. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/gh-issues-sync.d.ts +46 -0
  1219. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/gh-issues-sync.js +357 -0
  1220. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/gh-issues.d.ts +21 -0
  1221. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/gh-issues.js +1052 -0
  1222. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/markdown-dir.d.ts +2 -0
  1223. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/markdown-dir.js +912 -0
  1224. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/utils.d.ts +18 -0
  1225. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/utils.js +184 -0
  1226. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/yaml-file.d.ts +2 -0
  1227. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/backends/yaml-file.js +610 -0
  1228. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/index.d.ts +9 -0
  1229. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/index.js +7 -0
  1230. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/move.d.ts +2 -0
  1231. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/move.js +218 -0
  1232. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/open.d.ts +5 -0
  1233. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/open.js +82 -0
  1234. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/schema/store.schema.json +32 -0
  1235. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/schema/task.schema.json +33 -0
  1236. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/state-machine.d.ts +16 -0
  1237. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/state-machine.js +81 -0
  1238. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/state.d.ts +29 -0
  1239. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/state.js +70 -0
  1240. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/types.d.ts +205 -0
  1241. package/node_modules/toolcraft/node_modules/@poe-code/task-list/dist/types.js +62 -0
  1242. package/node_modules/toolcraft/node_modules/@poe-code/task-list/package.json +25 -0
  1243. package/node_modules/toolcraft/node_modules/auth-store/README.md +47 -0
  1244. package/node_modules/toolcraft/node_modules/auth-store/dist/create-secret-store.d.ts +2 -0
  1245. package/node_modules/toolcraft/node_modules/auth-store/dist/create-secret-store.js +44 -0
  1246. package/node_modules/toolcraft/node_modules/auth-store/dist/encrypted-file-store.d.ts +47 -0
  1247. package/node_modules/toolcraft/node_modules/auth-store/dist/encrypted-file-store.js +303 -0
  1248. package/node_modules/toolcraft/node_modules/auth-store/dist/error-codes.d.ts +1 -0
  1249. package/node_modules/toolcraft/node_modules/auth-store/dist/error-codes.js +5 -0
  1250. package/node_modules/toolcraft/node_modules/auth-store/dist/index.d.ts +7 -0
  1251. package/node_modules/toolcraft/node_modules/auth-store/dist/index.js +4 -0
  1252. package/node_modules/toolcraft/node_modules/auth-store/dist/keychain-store.d.ts +25 -0
  1253. package/node_modules/toolcraft/node_modules/auth-store/dist/keychain-store.js +154 -0
  1254. package/node_modules/toolcraft/node_modules/auth-store/dist/provider-store.d.ts +14 -0
  1255. package/node_modules/toolcraft/node_modules/auth-store/dist/provider-store.js +78 -0
  1256. package/node_modules/toolcraft/node_modules/auth-store/dist/types.d.ts +22 -0
  1257. package/node_modules/toolcraft/node_modules/auth-store/dist/types.js +1 -0
  1258. package/node_modules/toolcraft/node_modules/auth-store/package.json +25 -0
  1259. package/node_modules/toolcraft/node_modules/commander/LICENSE +22 -0
  1260. package/node_modules/toolcraft/node_modules/commander/Readme.md +1149 -0
  1261. package/node_modules/toolcraft/node_modules/commander/esm.mjs +16 -0
  1262. package/node_modules/toolcraft/node_modules/commander/index.js +24 -0
  1263. package/node_modules/toolcraft/node_modules/commander/lib/argument.js +149 -0
  1264. package/node_modules/toolcraft/node_modules/commander/lib/command.js +2662 -0
  1265. package/node_modules/toolcraft/node_modules/commander/lib/error.js +39 -0
  1266. package/node_modules/toolcraft/node_modules/commander/lib/help.js +709 -0
  1267. package/node_modules/toolcraft/node_modules/commander/lib/option.js +367 -0
  1268. package/node_modules/toolcraft/node_modules/commander/lib/suggestSimilar.js +101 -0
  1269. package/node_modules/toolcraft/node_modules/commander/package-support.json +16 -0
  1270. package/node_modules/toolcraft/node_modules/commander/package.json +82 -0
  1271. package/node_modules/toolcraft/node_modules/commander/typings/esm.d.mts +3 -0
  1272. package/node_modules/toolcraft/node_modules/commander/typings/index.d.ts +1045 -0
  1273. package/node_modules/toolcraft/node_modules/mcp-oauth/README.md +31 -0
  1274. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/auth-store-session-store.d.ts +14 -0
  1275. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/auth-store-session-store.js +169 -0
  1276. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/authorization-state.d.ts +8 -0
  1277. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/authorization-state.js +47 -0
  1278. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/default-oauth-client-provider.d.ts +3 -0
  1279. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/default-oauth-client-provider.js +627 -0
  1280. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/loopback-authorization.d.ts +20 -0
  1281. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/loopback-authorization.js +207 -0
  1282. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/pkce.d.ts +2 -0
  1283. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/pkce.js +7 -0
  1284. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/token-endpoint.d.ts +40 -0
  1285. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/token-endpoint.js +164 -0
  1286. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/types.d.ts +113 -0
  1287. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/client/types.js +1 -0
  1288. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/index.d.ts +10 -0
  1289. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/index.js +7 -0
  1290. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/resource-indicator.d.ts +1 -0
  1291. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/resource-indicator.js +11 -0
  1292. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/server/jwks-token-verifier.d.ts +28 -0
  1293. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/server/jwks-token-verifier.js +304 -0
  1294. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/types.compile-check.d.ts +1 -0
  1295. package/node_modules/toolcraft/node_modules/mcp-oauth/dist/types.compile-check.js +22 -0
  1296. package/node_modules/toolcraft/node_modules/mcp-oauth/package.json +31 -0
  1297. package/node_modules/toolcraft/node_modules/tiny-mcp-client/.turbo/turbo-build.log +7 -0
  1298. package/node_modules/toolcraft/node_modules/tiny-mcp-client/README.md +104 -0
  1299. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/index.d.ts +2 -0
  1300. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/index.js +1 -0
  1301. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/internal.d.ts +556 -0
  1302. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/internal.js +2688 -0
  1303. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/jsonrpc-types.compile-check.d.ts +1 -0
  1304. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/jsonrpc-types.compile-check.js +37 -0
  1305. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-lifecycle-types.compile-check.d.ts +1 -0
  1306. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-lifecycle-types.compile-check.js +50 -0
  1307. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-prompt-types.compile-check.d.ts +1 -0
  1308. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-prompt-types.compile-check.js +50 -0
  1309. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-resource-types.compile-check.d.ts +1 -0
  1310. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-resource-types.compile-check.js +51 -0
  1311. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-tool-types.compile-check.d.ts +1 -0
  1312. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-tool-types.compile-check.js +99 -0
  1313. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-transport-types.compile-check.d.ts +1 -0
  1314. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-transport-types.compile-check.js +56 -0
  1315. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-utility-types.compile-check.d.ts +1 -0
  1316. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/mcp-utility-types.compile-check.js +145 -0
  1317. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/oauth-discovery.d.ts +24 -0
  1318. package/node_modules/toolcraft/node_modules/tiny-mcp-client/dist/oauth-discovery.js +382 -0
  1319. package/node_modules/toolcraft/node_modules/tiny-mcp-client/package.json +20 -0
  1320. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/http-oauth.integration.test.ts +808 -0
  1321. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/http-oauth.test.ts +922 -0
  1322. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/index.ts +94 -0
  1323. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/internal.ts +3904 -0
  1324. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/jsonrpc-types.compile-check.ts +66 -0
  1325. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-client-http-transport.integration.test.ts +222 -0
  1326. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-client-sdk.test.ts +1326 -0
  1327. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-client-tiny-stdio-test-server-tools.test.ts +143 -0
  1328. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-lifecycle-types.compile-check.ts +65 -0
  1329. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-prompt-types.compile-check.ts +66 -0
  1330. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-resource-types.compile-check.ts +70 -0
  1331. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-tool-types.compile-check.ts +127 -0
  1332. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-transport-types.compile-check.ts +75 -0
  1333. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mcp-utility-types.compile-check.ts +181 -0
  1334. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/mock-servers.test.ts +980 -0
  1335. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/oauth-discovery.ts +578 -0
  1336. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/package-runtime.test.ts +25 -0
  1337. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/transports.test.ts +9018 -0
  1338. package/node_modules/toolcraft/node_modules/tiny-mcp-client/src/utilities.test.ts +372 -0
  1339. package/node_modules/toolcraft/node_modules/tiny-mcp-client/tsconfig.json +11 -0
  1340. package/node_modules/toolcraft/node_modules/toolcraft-design/README.md +342 -0
  1341. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/acp/components.d.ts +12 -0
  1342. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/acp/components.js +137 -0
  1343. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/acp/index.d.ts +3 -0
  1344. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/acp/index.js +2 -0
  1345. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/acp/writer.d.ts +13 -0
  1346. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/acp/writer.js +21 -0
  1347. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/brand.d.ts +2 -0
  1348. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/brand.js +1 -0
  1349. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/brands.d.ts +2 -0
  1350. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/brands.js +1 -0
  1351. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/cancel.d.ts +1 -0
  1352. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/cancel.js +1 -0
  1353. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/color.d.ts +2 -0
  1354. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/color.js +1 -0
  1355. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/browser.d.ts +15 -0
  1356. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/browser.js +31 -0
  1357. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/catalog.d.ts +26 -0
  1358. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/catalog.js +95 -0
  1359. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/color.d.ts +31 -0
  1360. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/color.js +102 -0
  1361. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/command-errors.d.ts +16 -0
  1362. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/command-errors.js +23 -0
  1363. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/detail-card.d.ts +22 -0
  1364. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/detail-card.js +45 -0
  1365. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/help-formatter-plain.d.ts +5 -0
  1366. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/help-formatter-plain.js +132 -0
  1367. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/help-formatter.d.ts +33 -0
  1368. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/help-formatter.js +213 -0
  1369. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/index.d.ts +16 -0
  1370. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/index.js +10 -0
  1371. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/inspector-card.d.ts +21 -0
  1372. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/inspector-card.js +42 -0
  1373. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/logger.d.ts +11 -0
  1374. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/logger.js +60 -0
  1375. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/resource-browser.d.ts +21 -0
  1376. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/resource-browser.js +98 -0
  1377. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/symbols.d.ts +12 -0
  1378. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/symbols.js +71 -0
  1379. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/table.d.ts +15 -0
  1380. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/table.js +302 -0
  1381. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/template.d.ts +10 -0
  1382. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/template.js +437 -0
  1383. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/text.d.ts +16 -0
  1384. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/components/text.js +145 -0
  1385. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/configure-theme.d.ts +1 -0
  1386. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/configure-theme.js +1 -0
  1387. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/confirm-or-cancel.d.ts +2 -0
  1388. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/confirm-or-cancel.js +1 -0
  1389. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/confirm.d.ts +2 -0
  1390. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/confirm.js +1 -0
  1391. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/create-dashboard.d.ts +2 -0
  1392. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/create-dashboard.js +1 -0
  1393. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/create-logger.d.ts +2 -0
  1394. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/create-logger.js +1 -0
  1395. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dark.d.ts +2 -0
  1396. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dark.js +1 -0
  1397. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/ansi.d.ts +18 -0
  1398. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/ansi.js +343 -0
  1399. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/buffer.d.ts +25 -0
  1400. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/buffer.js +219 -0
  1401. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/border.d.ts +9 -0
  1402. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/border.js +123 -0
  1403. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/footer.d.ts +8 -0
  1404. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/footer.js +56 -0
  1405. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/output-pane.d.ts +12 -0
  1406. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/output-pane.js +268 -0
  1407. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/stats-pane.d.ts +7 -0
  1408. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/components/stats-pane.js +107 -0
  1409. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/dashboard.d.ts +20 -0
  1410. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/dashboard.js +167 -0
  1411. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/demo.d.ts +13 -0
  1412. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/demo.js +145 -0
  1413. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/index.d.ts +8 -0
  1414. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/index.js +4 -0
  1415. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/keymap.d.ts +8 -0
  1416. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/keymap.js +233 -0
  1417. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/layout.d.ts +25 -0
  1418. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/layout.js +79 -0
  1419. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/should-use-dashboard.d.ts +10 -0
  1420. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/should-use-dashboard.js +7 -0
  1421. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/snapshot.d.ts +10 -0
  1422. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/snapshot.js +68 -0
  1423. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/store.d.ts +8 -0
  1424. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/store.js +51 -0
  1425. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/terminal-width.d.ts +4 -0
  1426. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/terminal-width.js +71 -0
  1427. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/terminal.d.ts +37 -0
  1428. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/terminal.js +264 -0
  1429. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/types.d.ts +38 -0
  1430. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/dashboard/types.js +1 -0
  1431. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/actions.d.ts +16 -0
  1432. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/actions.js +39 -0
  1433. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/demo.d.ts +13 -0
  1434. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/demo.js +297 -0
  1435. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/events.d.ts +67 -0
  1436. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/events.js +1 -0
  1437. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/filter.d.ts +10 -0
  1438. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/filter.js +95 -0
  1439. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/index.d.ts +10 -0
  1440. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/index.js +9 -0
  1441. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/jobs.d.ts +7 -0
  1442. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/jobs.js +59 -0
  1443. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/keymap.d.ts +21 -0
  1444. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/keymap.js +376 -0
  1445. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/layout.d.ts +20 -0
  1446. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/layout.js +75 -0
  1447. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/reducer.d.ts +9 -0
  1448. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/reducer.js +798 -0
  1449. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/detail.d.ts +4 -0
  1450. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/detail.js +110 -0
  1451. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/footer.d.ts +4 -0
  1452. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/footer.js +73 -0
  1453. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/header.d.ts +4 -0
  1454. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/header.js +49 -0
  1455. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/index.d.ts +8 -0
  1456. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/index.js +53 -0
  1457. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/list.d.ts +4 -0
  1458. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/list.js +135 -0
  1459. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/modal.d.ts +3 -0
  1460. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/modal.js +87 -0
  1461. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/pane.d.ts +5 -0
  1462. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/pane.js +30 -0
  1463. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/test-fixtures.d.ts +8 -0
  1464. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/test-fixtures.js +156 -0
  1465. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/text.d.ts +12 -0
  1466. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/render/text.js +81 -0
  1467. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/runtime.d.ts +2 -0
  1468. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/runtime.js +358 -0
  1469. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/runtime.test-helpers.d.ts +50 -0
  1470. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/runtime.test-helpers.js +101 -0
  1471. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/state.d.ts +137 -0
  1472. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/state.js +86 -0
  1473. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/theme.d.ts +27 -0
  1474. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/theme.js +29 -0
  1475. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/two-pane.d.ts +102 -0
  1476. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/explorer/two-pane.js +510 -0
  1477. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-columns.d.ts +2 -0
  1478. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-columns.js +1 -0
  1479. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command-list.d.ts +2 -0
  1480. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command-list.js +1 -0
  1481. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command-not-found-panel.d.ts +1 -0
  1482. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command-not-found-panel.js +1 -0
  1483. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command-not-found.d.ts +1 -0
  1484. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command-not-found.js +1 -0
  1485. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command.d.ts +1 -0
  1486. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-command.js +1 -0
  1487. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-option-list.d.ts +2 -0
  1488. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-option-list.js +1 -0
  1489. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-option.d.ts +1 -0
  1490. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-option.js +1 -0
  1491. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-usage.d.ts +1 -0
  1492. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/format-usage.js +1 -0
  1493. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/get-template-partial-names.d.ts +1 -0
  1494. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/get-template-partial-names.js +1 -0
  1495. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/get-theme-config.d.ts +1 -0
  1496. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/get-theme-config.js +1 -0
  1497. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/get-theme.d.ts +2 -0
  1498. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/get-theme.js +1 -0
  1499. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/help-formatter-plain.d.ts +2 -0
  1500. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/help-formatter-plain.js +2 -0
  1501. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/help-formatter.d.ts +2 -0
  1502. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/help-formatter.js +1 -0
  1503. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/index.d.ts +54 -0
  1504. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/index.js +45 -0
  1505. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/color-support.d.ts +9 -0
  1506. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/color-support.js +12 -0
  1507. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/output-format.d.ts +6 -0
  1508. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/output-format.js +22 -0
  1509. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/strip-ansi.d.ts +1 -0
  1510. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/strip-ansi.js +50 -0
  1511. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/theme-detect.d.ts +12 -0
  1512. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/theme-detect.js +71 -0
  1513. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/theme-state.d.ts +12 -0
  1514. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/internal/theme-state.js +35 -0
  1515. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/intro-plain.d.ts +1 -0
  1516. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/intro-plain.js +1 -0
  1517. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/intro.d.ts +1 -0
  1518. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/intro.js +1 -0
  1519. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/is-cancel.d.ts +1 -0
  1520. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/is-cancel.js +1 -0
  1521. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/light.d.ts +2 -0
  1522. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/light.js +1 -0
  1523. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/log.d.ts +1 -0
  1524. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/log.js +1 -0
  1525. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/logger.d.ts +2 -0
  1526. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/logger.js +1 -0
  1527. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/multiselect.d.ts +2 -0
  1528. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/multiselect.js +1 -0
  1529. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/note.d.ts +1 -0
  1530. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/note.js +1 -0
  1531. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/open-external.d.ts +1 -0
  1532. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/open-external.js +1 -0
  1533. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/outro.d.ts +1 -0
  1534. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/outro.js +1 -0
  1535. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/parse.d.ts +2 -0
  1536. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/parse.js +1 -0
  1537. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/password.d.ts +2 -0
  1538. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/password.js +1 -0
  1539. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompt-cancelled-error.d.ts +1 -0
  1540. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompt-cancelled-error.js +1 -0
  1541. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompt-text.d.ts +2 -0
  1542. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompt-text.js +1 -0
  1543. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompt-theme.d.ts +1 -0
  1544. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompt-theme.js +1 -0
  1545. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/index.d.ts +91 -0
  1546. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/index.js +137 -0
  1547. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/cancel-symbol.d.ts +2 -0
  1548. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/cancel-symbol.js +4 -0
  1549. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/confirm.d.ts +9 -0
  1550. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/confirm.js +47 -0
  1551. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/core.d.ts +55 -0
  1552. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/core.js +274 -0
  1553. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/glyphs.d.ts +20 -0
  1554. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/glyphs.js +53 -0
  1555. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/index.d.ts +6 -0
  1556. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/index.js +6 -0
  1557. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/keys.d.ts +2 -0
  1558. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/keys.js +31 -0
  1559. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/multiselect.d.ts +13 -0
  1560. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/multiselect.js +135 -0
  1561. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/pagination.d.ts +10 -0
  1562. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/pagination.js +52 -0
  1563. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/password.d.ts +10 -0
  1564. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/password.js +55 -0
  1565. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/select.d.ts +18 -0
  1566. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/select.js +89 -0
  1567. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/test-helpers.d.ts +21 -0
  1568. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/test-helpers.js +32 -0
  1569. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/text.d.ts +12 -0
  1570. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/text.js +60 -0
  1571. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/wrap.d.ts +4 -0
  1572. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/interactive/wrap.js +18 -0
  1573. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/cancel.d.ts +2 -0
  1574. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/cancel.js +9 -0
  1575. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/intro.d.ts +1 -0
  1576. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/intro.js +16 -0
  1577. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/log.d.ts +18 -0
  1578. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/log.js +104 -0
  1579. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/note.d.ts +1 -0
  1580. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/note.js +39 -0
  1581. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/outro.d.ts +1 -0
  1582. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/outro.js +16 -0
  1583. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/spinner.d.ts +6 -0
  1584. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/primitives/spinner.js +74 -0
  1585. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/theme.d.ts +11 -0
  1586. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/prompts/theme.js +15 -0
  1587. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-catalog.d.ts +2 -0
  1588. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-catalog.js +1 -0
  1589. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-detail-card.d.ts +2 -0
  1590. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-detail-card.js +1 -0
  1591. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-html.d.ts +2 -0
  1592. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-html.js +1 -0
  1593. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-inspector-card.d.ts +2 -0
  1594. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-inspector-card.js +1 -0
  1595. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-markdown-html.d.ts +2 -0
  1596. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-markdown-html.js +1 -0
  1597. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-markdown.d.ts +2 -0
  1598. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-markdown.js +1 -0
  1599. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-menu.d.ts +2 -0
  1600. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-menu.js +1 -0
  1601. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-resource-browser.d.ts +2 -0
  1602. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-resource-browser.js +1 -0
  1603. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-spinner-frame.d.ts +2 -0
  1604. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-spinner-frame.js +1 -0
  1605. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-spinner-stopped.d.ts +2 -0
  1606. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-spinner-stopped.js +1 -0
  1607. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-table.d.ts +2 -0
  1608. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-table.js +1 -0
  1609. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-template.d.ts +2 -0
  1610. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render-template.js +1 -0
  1611. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render.d.ts +2 -0
  1612. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/render.js +1 -0
  1613. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/reset-output-format-cache.d.ts +1 -0
  1614. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/reset-output-format-cache.js +1 -0
  1615. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/reset-theme-cache.d.ts +1 -0
  1616. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/reset-theme-cache.js +1 -0
  1617. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/reset-theme.d.ts +1 -0
  1618. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/reset-theme.js +1 -0
  1619. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/resolve-output-format.d.ts +2 -0
  1620. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/resolve-output-format.js +1 -0
  1621. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/resolve-template-partials.d.ts +1 -0
  1622. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/resolve-template-partials.js +1 -0
  1623. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/resolve-theme-name.d.ts +2 -0
  1624. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/resolve-theme-name.js +1 -0
  1625. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/run-explorer.d.ts +2 -0
  1626. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/run-explorer.js +1 -0
  1627. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/run-two-pane-explorer.d.ts +2 -0
  1628. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/run-two-pane-explorer.js +1 -0
  1629. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/select.d.ts +2 -0
  1630. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/select.js +1 -0
  1631. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/should-use-interactive-dashboard.d.ts +1 -0
  1632. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/should-use-interactive-dashboard.js +1 -0
  1633. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/single-detail.d.ts +2 -0
  1634. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/single-detail.js +1 -0
  1635. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/spacing.d.ts +1 -0
  1636. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/spacing.js +1 -0
  1637. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/spinner-frames.d.ts +1 -0
  1638. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/spinner-frames.js +1 -0
  1639. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/spinner.d.ts +2 -0
  1640. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/spinner.js +1 -0
  1641. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/static/index.d.ts +4 -0
  1642. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/static/index.js +2 -0
  1643. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/static/menu.d.ts +11 -0
  1644. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/static/menu.js +42 -0
  1645. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/static/spinner.d.ts +14 -0
  1646. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/static/spinner.js +52 -0
  1647. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/strip-ansi.d.ts +1 -0
  1648. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/strip-ansi.js +1 -0
  1649. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/symbols.d.ts +1 -0
  1650. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/symbols.js +1 -0
  1651. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/ast.d.ts +98 -0
  1652. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/ast.js +1 -0
  1653. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/demo-content.d.ts +2 -0
  1654. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/demo-content.js +139 -0
  1655. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/html-renderer.d.ts +7 -0
  1656. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/html-renderer.js +366 -0
  1657. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/index.d.ts +10 -0
  1658. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/index.js +14 -0
  1659. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/block.d.ts +7 -0
  1660. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/block.js +1495 -0
  1661. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/code-highlight.d.ts +4 -0
  1662. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/code-highlight.js +1357 -0
  1663. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/frontmatter.d.ts +8 -0
  1664. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/frontmatter.js +36 -0
  1665. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/inline.d.ts +10 -0
  1666. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser/inline.js +1190 -0
  1667. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser.d.ts +5 -0
  1668. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/parser.js +42 -0
  1669. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/renderer.d.ts +7 -0
  1670. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/renderer.js +677 -0
  1671. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/testing/theme-render-fixture.d.ts +1 -0
  1672. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/terminal-markdown/testing/theme-render-fixture.js +27 -0
  1673. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/text.d.ts +1 -0
  1674. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/text.js +1 -0
  1675. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/brand.d.ts +5 -0
  1676. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/brand.js +5 -0
  1677. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/colors.d.ts +37 -0
  1678. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/colors.js +85 -0
  1679. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/index.d.ts +6 -0
  1680. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/index.js +5 -0
  1681. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/spacing.d.ts +6 -0
  1682. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/spacing.js +6 -0
  1683. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/typography.d.ts +7 -0
  1684. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/typography.js +8 -0
  1685. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/widths.d.ts +5 -0
  1686. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/tokens/widths.js +5 -0
  1687. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/typography.d.ts +1 -0
  1688. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/typography.js +1 -0
  1689. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/widths.d.ts +1 -0
  1690. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/widths.js +1 -0
  1691. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/with-output-format.d.ts +2 -0
  1692. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/with-output-format.js +1 -0
  1693. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/with-spinner.d.ts +2 -0
  1694. package/node_modules/toolcraft/node_modules/toolcraft-design/dist/with-spinner.js +1 -0
  1695. package/node_modules/toolcraft/node_modules/toolcraft-design/package.json +48 -0
  1696. package/node_modules/toolcraft/package.json +103 -0
  1697. package/node_modules/toolcraft-schema/README.md +75 -0
  1698. package/node_modules/toolcraft-schema/dist/index.compile-check.d.ts +1 -0
  1699. package/node_modules/toolcraft-schema/dist/index.compile-check.js +17 -0
  1700. package/node_modules/toolcraft-schema/dist/index.d.ts +159 -0
  1701. package/node_modules/toolcraft-schema/dist/index.js +294 -0
  1702. package/node_modules/toolcraft-schema/dist/json-schema-document.d.ts +14 -0
  1703. package/node_modules/toolcraft-schema/dist/json-schema-document.js +17 -0
  1704. package/node_modules/toolcraft-schema/dist/json.compile-check.d.ts +1 -0
  1705. package/node_modules/toolcraft-schema/dist/json.compile-check.js +2 -0
  1706. package/node_modules/toolcraft-schema/dist/json.d.ts +10 -0
  1707. package/node_modules/toolcraft-schema/dist/json.js +5 -0
  1708. package/node_modules/toolcraft-schema/dist/oneof.compile-check.d.ts +1 -0
  1709. package/node_modules/toolcraft-schema/dist/oneof.compile-check.js +12 -0
  1710. package/node_modules/toolcraft-schema/dist/oneof.d.ts +15 -0
  1711. package/node_modules/toolcraft-schema/dist/oneof.js +18 -0
  1712. package/node_modules/toolcraft-schema/dist/record.compile-check.d.ts +1 -0
  1713. package/node_modules/toolcraft-schema/dist/record.compile-check.js +2 -0
  1714. package/node_modules/toolcraft-schema/dist/record.d.ts +5 -0
  1715. package/node_modules/toolcraft-schema/dist/record.js +6 -0
  1716. package/node_modules/toolcraft-schema/dist/union.compile-check.d.ts +1 -0
  1717. package/node_modules/toolcraft-schema/dist/union.compile-check.js +9 -0
  1718. package/node_modules/toolcraft-schema/dist/union.d.ts +8 -0
  1719. package/node_modules/toolcraft-schema/dist/union.js +45 -0
  1720. package/node_modules/toolcraft-schema/dist/validate.d.ts +16 -0
  1721. package/node_modules/toolcraft-schema/dist/validate.js +379 -0
  1722. package/node_modules/toolcraft-schema/package.json +30 -0
  1723. package/node_modules/uri-template/AUTHORS +2 -0
  1724. package/node_modules/uri-template/LICENSE +19 -0
  1725. package/node_modules/uri-template/README.md +34 -0
  1726. package/node_modules/uri-template/dist/ast.d.ts +28 -0
  1727. package/node_modules/uri-template/dist/ast.js +27 -0
  1728. package/node_modules/uri-template/dist/expander.d.ts +3 -0
  1729. package/node_modules/uri-template/dist/expander.js +165 -0
  1730. package/node_modules/uri-template/dist/grammar.d.ts +13 -0
  1731. package/node_modules/uri-template/dist/grammar.js +749 -0
  1732. package/node_modules/uri-template/dist/index.d.ts +19 -0
  1733. package/node_modules/uri-template/dist/index.js +43 -0
  1734. package/node_modules/uri-template/lib/ast.ts +59 -0
  1735. package/node_modules/uri-template/lib/expander.ts +175 -0
  1736. package/node_modules/uri-template/lib/grammar.js +773 -0
  1737. package/node_modules/uri-template/lib/grammar.pegjs +33 -0
  1738. package/node_modules/uri-template/lib/index.ts +33 -0
  1739. package/node_modules/uri-template/package.json +33 -0
  1740. package/node_modules/uri-template-lite/README.md +86 -0
  1741. package/node_modules/uri-template-lite/index.js +140 -0
  1742. package/node_modules/uri-template-lite/package.json +43 -0
  1743. package/node_modules/wire-core/dist/core/json.d.ts +4 -0
  1744. package/node_modules/wire-core/dist/core/json.d.ts.map +1 -0
  1745. package/node_modules/wire-core/dist/core/json.js +65 -0
  1746. package/node_modules/wire-core/dist/core/json.js.map +1 -0
  1747. package/node_modules/wire-core/dist/core/model.d.ts +67 -0
  1748. package/node_modules/wire-core/dist/core/model.d.ts.map +1 -0
  1749. package/node_modules/wire-core/dist/core/model.js +2 -0
  1750. package/node_modules/wire-core/dist/core/model.js.map +1 -0
  1751. package/node_modules/wire-core/dist/core/resource.d.ts +4 -0
  1752. package/node_modules/wire-core/dist/core/resource.d.ts.map +1 -0
  1753. package/node_modules/wire-core/dist/core/resource.js +47 -0
  1754. package/node_modules/wire-core/dist/core/resource.js.map +1 -0
  1755. package/node_modules/wire-core/dist/core/source.d.ts +16 -0
  1756. package/node_modules/wire-core/dist/core/source.d.ts.map +1 -0
  1757. package/node_modules/wire-core/dist/core/source.js +45 -0
  1758. package/node_modules/wire-core/dist/core/source.js.map +1 -0
  1759. package/node_modules/wire-core/dist/core/transform.d.ts +39 -0
  1760. package/node_modules/wire-core/dist/core/transform.d.ts.map +1 -0
  1761. package/node_modules/wire-core/dist/core/transform.js +128 -0
  1762. package/node_modules/wire-core/dist/core/transform.js.map +1 -0
  1763. package/node_modules/wire-core/dist/index.d.ts +18 -0
  1764. package/node_modules/wire-core/dist/index.d.ts.map +1 -0
  1765. package/node_modules/wire-core/dist/index.js +12 -0
  1766. package/node_modules/wire-core/dist/index.js.map +1 -0
  1767. package/node_modules/wire-core/dist/operations.d.ts +66 -0
  1768. package/node_modules/wire-core/dist/operations.d.ts.map +1 -0
  1769. package/node_modules/wire-core/dist/operations.js +333 -0
  1770. package/node_modules/wire-core/dist/operations.js.map +1 -0
  1771. package/node_modules/wire-core/dist/ports.d.ts +116 -0
  1772. package/node_modules/wire-core/dist/ports.d.ts.map +1 -0
  1773. package/node_modules/wire-core/dist/ports.js +2 -0
  1774. package/node_modules/wire-core/dist/ports.js.map +1 -0
  1775. package/node_modules/wire-core/dist/runtime/chrome.d.ts +19 -0
  1776. package/node_modules/wire-core/dist/runtime/chrome.d.ts.map +1 -0
  1777. package/node_modules/wire-core/dist/runtime/chrome.js +292 -0
  1778. package/node_modules/wire-core/dist/runtime/chrome.js.map +1 -0
  1779. package/node_modules/wire-core/dist/runtime/cookies.d.ts +15 -0
  1780. package/node_modules/wire-core/dist/runtime/cookies.d.ts.map +1 -0
  1781. package/node_modules/wire-core/dist/runtime/cookies.js +200 -0
  1782. package/node_modules/wire-core/dist/runtime/cookies.js.map +1 -0
  1783. package/node_modules/wire-core/dist/runtime/google.d.ts +21 -0
  1784. package/node_modules/wire-core/dist/runtime/google.d.ts.map +1 -0
  1785. package/node_modules/wire-core/dist/runtime/google.js +61 -0
  1786. package/node_modules/wire-core/dist/runtime/google.js.map +1 -0
  1787. package/node_modules/wire-core/dist/runtime/node.d.ts +20 -0
  1788. package/node_modules/wire-core/dist/runtime/node.d.ts.map +1 -0
  1789. package/node_modules/wire-core/dist/runtime/node.js +93 -0
  1790. package/node_modules/wire-core/dist/runtime/node.js.map +1 -0
  1791. package/node_modules/wire-core/dist/storage/registry.d.ts +27 -0
  1792. package/node_modules/wire-core/dist/storage/registry.d.ts.map +1 -0
  1793. package/node_modules/wire-core/dist/storage/registry.js +305 -0
  1794. package/node_modules/wire-core/dist/storage/registry.js.map +1 -0
  1795. package/node_modules/wire-core/dist/storage/workspace.d.ts +14 -0
  1796. package/node_modules/wire-core/dist/storage/workspace.d.ts.map +1 -0
  1797. package/node_modules/wire-core/dist/storage/workspace.js +95 -0
  1798. package/node_modules/wire-core/dist/storage/workspace.js.map +1 -0
  1799. package/node_modules/wire-core/package.json +30 -0
  1800. package/node_modules/wire-core/src/core/json.ts +71 -0
  1801. package/node_modules/wire-core/src/core/model.ts +76 -0
  1802. package/node_modules/wire-core/src/core/resource.ts +62 -0
  1803. package/node_modules/wire-core/src/core/source.ts +76 -0
  1804. package/node_modules/wire-core/src/core/transform.ts +155 -0
  1805. package/node_modules/wire-core/src/index.ts +17 -0
  1806. package/node_modules/wire-core/src/operations.ts +409 -0
  1807. package/node_modules/wire-core/src/ports.ts +137 -0
  1808. package/node_modules/wire-core/src/runtime/chrome.ts +319 -0
  1809. package/node_modules/wire-core/src/runtime/cookies.ts +201 -0
  1810. package/node_modules/wire-core/src/runtime/google.ts +88 -0
  1811. package/node_modules/wire-core/src/runtime/node.ts +114 -0
  1812. package/node_modules/wire-core/src/storage/registry.ts +336 -0
  1813. package/node_modules/wire-core/src/storage/workspace.ts +96 -0
  1814. package/node_modules/yaml/LICENSE +13 -0
  1815. package/node_modules/yaml/README.md +172 -0
  1816. package/node_modules/yaml/bin.mjs +11 -0
  1817. package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  1818. package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  1819. package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  1820. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  1821. package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
  1822. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  1823. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  1824. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  1825. package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  1826. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  1827. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
  1828. package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  1829. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  1830. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  1831. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  1832. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  1833. package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  1834. package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  1835. package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  1836. package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  1837. package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  1838. package/node_modules/yaml/browser/dist/errors.js +57 -0
  1839. package/node_modules/yaml/browser/dist/index.js +17 -0
  1840. package/node_modules/yaml/browser/dist/log.js +11 -0
  1841. package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
  1842. package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  1843. package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  1844. package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  1845. package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  1846. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  1847. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  1848. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  1849. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  1850. package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  1851. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  1852. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  1853. package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  1854. package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  1855. package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
  1856. package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  1857. package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
  1858. package/node_modules/yaml/browser/dist/public-api.js +102 -0
  1859. package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  1860. package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  1861. package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  1862. package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  1863. package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  1864. package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  1865. package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  1866. package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  1867. package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  1868. package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  1869. package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  1870. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  1871. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  1872. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  1873. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  1874. package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
  1875. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  1876. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  1877. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  1878. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  1879. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  1880. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  1881. package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  1882. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  1883. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  1884. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  1885. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
  1886. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  1887. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  1888. package/node_modules/yaml/browser/dist/util.js +11 -0
  1889. package/node_modules/yaml/browser/dist/visit.js +233 -0
  1890. package/node_modules/yaml/browser/index.js +5 -0
  1891. package/node_modules/yaml/browser/package.json +3 -0
  1892. package/node_modules/yaml/dist/cli.d.ts +8 -0
  1893. package/node_modules/yaml/dist/cli.mjs +201 -0
  1894. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  1895. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  1896. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  1897. package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  1898. package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  1899. package/node_modules/yaml/dist/compose/compose-node.js +112 -0
  1900. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  1901. package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  1902. package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  1903. package/node_modules/yaml/dist/compose/composer.js +224 -0
  1904. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  1905. package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  1906. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  1907. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  1908. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  1909. package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  1910. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  1911. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  1912. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  1913. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  1914. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  1915. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
  1916. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  1917. package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  1918. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  1919. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  1920. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  1921. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  1922. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  1923. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  1924. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  1925. package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  1926. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  1927. package/node_modules/yaml/dist/doc/Document.js +337 -0
  1928. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  1929. package/node_modules/yaml/dist/doc/anchors.js +76 -0
  1930. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  1931. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  1932. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  1933. package/node_modules/yaml/dist/doc/createNode.js +90 -0
  1934. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  1935. package/node_modules/yaml/dist/doc/directives.js +178 -0
  1936. package/node_modules/yaml/dist/errors.d.ts +21 -0
  1937. package/node_modules/yaml/dist/errors.js +62 -0
  1938. package/node_modules/yaml/dist/index.d.ts +25 -0
  1939. package/node_modules/yaml/dist/index.js +50 -0
  1940. package/node_modules/yaml/dist/log.d.ts +3 -0
  1941. package/node_modules/yaml/dist/log.js +19 -0
  1942. package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  1943. package/node_modules/yaml/dist/nodes/Alias.js +118 -0
  1944. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  1945. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  1946. package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  1947. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  1948. package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  1949. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  1950. package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
  1951. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  1952. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  1953. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  1954. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  1955. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  1956. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  1957. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  1958. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  1959. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  1960. package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  1961. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  1962. package/node_modules/yaml/dist/options.d.ts +350 -0
  1963. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  1964. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  1965. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  1966. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  1967. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  1968. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  1969. package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  1970. package/node_modules/yaml/dist/parse/cst.js +112 -0
  1971. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  1972. package/node_modules/yaml/dist/parse/lexer.js +723 -0
  1973. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  1974. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  1975. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  1976. package/node_modules/yaml/dist/parse/parser.js +980 -0
  1977. package/node_modules/yaml/dist/public-api.d.ts +44 -0
  1978. package/node_modules/yaml/dist/public-api.js +107 -0
  1979. package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  1980. package/node_modules/yaml/dist/schema/Schema.js +39 -0
  1981. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  1982. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  1983. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  1984. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  1985. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  1986. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  1987. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  1988. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  1989. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  1990. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  1991. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  1992. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  1993. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  1994. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  1995. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  1996. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  1997. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  1998. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  1999. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  2000. package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  2001. package/node_modules/yaml/dist/schema/tags.js +99 -0
  2002. package/node_modules/yaml/dist/schema/types.d.ts +92 -0
  2003. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  2004. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  2005. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  2006. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  2007. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  2008. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  2009. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  2010. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  2011. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  2012. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  2013. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  2014. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  2015. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  2016. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  2017. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  2018. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  2019. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  2020. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  2021. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  2022. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  2023. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  2024. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  2025. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  2026. package/node_modules/yaml/dist/stringify/stringify.js +132 -0
  2027. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  2028. package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  2029. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  2030. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  2031. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  2032. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  2033. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  2034. package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  2035. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  2036. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  2037. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  2038. package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  2039. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  2040. package/node_modules/yaml/dist/test-events.js +134 -0
  2041. package/node_modules/yaml/dist/util.d.ts +16 -0
  2042. package/node_modules/yaml/dist/util.js +28 -0
  2043. package/node_modules/yaml/dist/visit.d.ts +102 -0
  2044. package/node_modules/yaml/dist/visit.js +236 -0
  2045. package/node_modules/yaml/package.json +97 -0
  2046. package/node_modules/yaml/util.js +2 -0
  2047. package/package.json +150 -0
  2048. package/src/adapters/root.ts +469 -0
  2049. package/src/adapters/services/catalog.ts +18 -0
  2050. package/src/auth.ts +317 -0
  2051. package/src/cli.ts +505 -0
  2052. package/src/executable.ts +102 -0
  2053. package/src/hooks.ts +196 -0
  2054. package/src/index.ts +15 -0
  2055. package/src/mcp.ts +11 -0
@@ -0,0 +1,3904 @@
1
+ import { spawn } from "node:child_process";
2
+ import type { ChildProcessWithoutNullStreams, SpawnOptions } from "node:child_process";
3
+ import { PassThrough } from "node:stream";
4
+ import type { Readable, Writable } from "node:stream";
5
+ import type { JSONRPCMessage as SdkJsonRpcMessage } from "@modelcontextprotocol/sdk/types.js";
6
+ import {
7
+ createOAuthClientProvider,
8
+ OAuthError,
9
+ type OAuthClientProvider,
10
+ type OAuthClientProviderOptions,
11
+ } from "mcp-oauth";
12
+ import type { Server as TinyStdioMcpServer } from "tiny-stdio-mcp-server";
13
+ import {
14
+ OAuthMetadataDiscovery,
15
+ parseBearerWwwAuthenticateHeader,
16
+ } from "./oauth-discovery.js";
17
+ import type {
18
+ OAuthDiscoveryCache,
19
+ } from "./oauth-discovery.js";
20
+
21
+ export {
22
+ OAuthMetadataDiscovery,
23
+ discoverOAuthMetadata,
24
+ parseBearerWwwAuthenticateHeader,
25
+ resolveAuthorizationServerMetadataUrl,
26
+ resolveProtectedResourceMetadataUrl,
27
+ } from "./oauth-discovery.js";
28
+ export {
29
+ createAuthStoreSessionStore,
30
+ createDefaultOAuthClientProvider,
31
+ } from "mcp-oauth";
32
+ export type {
33
+ OAuthDiscoveryCache,
34
+ } from "./oauth-discovery.js";
35
+ export type { OAuthAuthorizationServerMetadata, OAuthDiscoveryResult, OAuthMetadataFetch, OAuthProtectedResourceMetadata, OAuthUnauthorizedChallenge } from "./oauth-discovery.js";
36
+ export type {
37
+ DefaultOAuthClientProviderOptions,
38
+ OAuthClientProvider,
39
+ OAuthClientProviderOptions,
40
+ OAuthSessionStore,
41
+ StoredOAuthSession,
42
+ } from "mcp-oauth";
43
+
44
+ export type RequestId = number | string;
45
+
46
+ export interface Implementation {
47
+ name: string;
48
+ version: string;
49
+ }
50
+
51
+ export interface ClientCapabilities {
52
+ roots?: {
53
+ listChanged?: boolean;
54
+ [key: string]: unknown;
55
+ };
56
+ sampling?: {
57
+ [key: string]: unknown;
58
+ };
59
+ experimental?: Record<string, unknown>;
60
+ }
61
+
62
+ export interface ServerCapabilities {
63
+ prompts?: {
64
+ listChanged?: boolean;
65
+ [key: string]: unknown;
66
+ };
67
+ resources?: {
68
+ subscribe?: boolean;
69
+ listChanged?: boolean;
70
+ [key: string]: unknown;
71
+ };
72
+ tools?: {
73
+ listChanged?: boolean;
74
+ [key: string]: unknown;
75
+ };
76
+ logging?: {
77
+ [key: string]: unknown;
78
+ };
79
+ completions?: {
80
+ [key: string]: unknown;
81
+ };
82
+ experimental?: Record<string, unknown>;
83
+ }
84
+
85
+ export interface InitializeParams {
86
+ protocolVersion: string;
87
+ capabilities: ClientCapabilities;
88
+ clientInfo: Implementation;
89
+ }
90
+
91
+ export interface InitializeResult {
92
+ protocolVersion: string;
93
+ capabilities: ServerCapabilities;
94
+ serverInfo: Implementation;
95
+ instructions?: string;
96
+ }
97
+
98
+ export interface McpClientOptions {
99
+ clientInfo: Implementation;
100
+ requestTimeoutMs?: number;
101
+ capabilities?: ClientCapabilities;
102
+ onToolsChanged?: () => void | Promise<void>;
103
+ onResourcesChanged?: () => void | Promise<void>;
104
+ onResourceUpdated?: (uri: string) => void | Promise<void>;
105
+ onPromptsChanged?: () => void | Promise<void>;
106
+ onLog?: (message: LogMessage) => void | Promise<void>;
107
+ onProgress?: (params: ProgressParams) => void | Promise<void>;
108
+ onSamplingRequest?: (
109
+ params: CreateMessageParams
110
+ ) => CreateMessageResult | Promise<CreateMessageResult>;
111
+ onRootsList?: () => Root[] | Promise<Root[]>;
112
+ }
113
+
114
+ const MCP_PROTOCOL_VERSION = "2025-03-26";
115
+
116
+ export class McpClient {
117
+ private currentState: "disconnected" | "initializing" | "ready" | "closed" = "disconnected";
118
+ private currentServerCapabilities: ServerCapabilities | null = null;
119
+ private currentClientCapabilities: ClientCapabilities | null = null;
120
+ private currentServerInfo: Implementation | null = null;
121
+ private currentInstructions: string | undefined;
122
+ private readonly subscribedResourceUris = new Set<string>();
123
+ private readonly activeProgressTokens = new Map<ProgressToken, number>();
124
+ private readonly options: McpClientOptions;
125
+ private transport: McpTransport | null = null;
126
+ private messageLayer: JsonRpcMessageLayer | null = null;
127
+
128
+ constructor(options: McpClientOptions) {
129
+ this.options = options;
130
+ }
131
+
132
+ get state(): "disconnected" | "initializing" | "ready" | "closed" {
133
+ return this.currentState;
134
+ }
135
+
136
+ get serverCapabilities(): ServerCapabilities | null {
137
+ return this.currentServerCapabilities === null
138
+ ? null
139
+ : structuredClone(this.currentServerCapabilities);
140
+ }
141
+
142
+ get serverInfo(): Implementation | null {
143
+ return this.currentServerInfo;
144
+ }
145
+
146
+ get instructions(): string | undefined {
147
+ return this.currentInstructions;
148
+ }
149
+
150
+ private getMessageLayerOrThrow(): JsonRpcMessageLayer {
151
+ if (this.currentState === "disconnected") {
152
+ throw new Error("MCP client is disconnected");
153
+ }
154
+
155
+ if (this.currentState === "closed") {
156
+ throw new Error("MCP client is closed");
157
+ }
158
+
159
+ if (this.messageLayer === null) {
160
+ throw new Error("MCP client is disconnected");
161
+ }
162
+
163
+ return this.messageLayer;
164
+ }
165
+
166
+ async connect(transport: McpTransport): Promise<InitializeResult> {
167
+ if (this.currentState !== "disconnected" && this.currentState !== "closed") {
168
+ throw new Error("MCP client is already connected");
169
+ }
170
+
171
+ this.currentServerCapabilities = null;
172
+ this.currentClientCapabilities = null;
173
+ this.currentServerInfo = null;
174
+ this.currentInstructions = undefined;
175
+ this.subscribedResourceUris.clear();
176
+ this.activeProgressTokens.clear();
177
+
178
+ const transportClosedReason = transport.closed
179
+ .then((closedEvent) => closedEvent.reason)
180
+ .catch((error: unknown) =>
181
+ error instanceof Error ? error : new Error(String(error))
182
+ );
183
+ const messageLayer = new JsonRpcMessageLayer(
184
+ transport.readable,
185
+ transport.writable,
186
+ this.options.requestTimeoutMs,
187
+ transportClosedReason
188
+ );
189
+ const {
190
+ onSamplingRequest,
191
+ onRootsList,
192
+ onToolsChanged,
193
+ onResourcesChanged,
194
+ onResourceUpdated,
195
+ onPromptsChanged,
196
+ onLog,
197
+ onProgress,
198
+ } = this.options;
199
+
200
+ messageLayer.onRequest("ping", () => ({}));
201
+
202
+ if (onSamplingRequest !== undefined) {
203
+ messageLayer.onRequest("sampling/createMessage", (params) =>
204
+ onSamplingRequest(params as CreateMessageParams)
205
+ );
206
+ }
207
+
208
+ messageLayer.onNotification("notifications/tools/list_changed", async () => {
209
+ if (onToolsChanged === undefined || this.currentServerCapabilities?.tools?.listChanged !== true) {
210
+ return;
211
+ }
212
+
213
+ await onToolsChanged();
214
+ });
215
+ messageLayer.onNotification("notifications/resources/list_changed", async () => {
216
+ if (
217
+ onResourcesChanged === undefined
218
+ || this.currentServerCapabilities?.resources?.listChanged !== true
219
+ ) {
220
+ return;
221
+ }
222
+
223
+ await onResourcesChanged();
224
+ });
225
+ messageLayer.onNotification("notifications/resources/updated", async (params) => {
226
+ if (onResourceUpdated === undefined) {
227
+ return;
228
+ }
229
+
230
+ if (typeof params !== "object" || params === null || Array.isArray(params)) {
231
+ return;
232
+ }
233
+
234
+ const { uri } = params as { uri?: unknown };
235
+ if (typeof uri !== "string" || !this.subscribedResourceUris.has(uri)) {
236
+ return;
237
+ }
238
+
239
+ await onResourceUpdated(uri);
240
+ });
241
+ messageLayer.onNotification("notifications/prompts/list_changed", async () => {
242
+ if (
243
+ onPromptsChanged === undefined
244
+ || this.currentServerCapabilities?.prompts?.listChanged !== true
245
+ ) {
246
+ return;
247
+ }
248
+
249
+ await onPromptsChanged();
250
+ });
251
+ messageLayer.onNotification("notifications/message", async (params) => {
252
+ if (onLog === undefined || !isObjectRecord(params) || !isLogLevel(params.level)) {
253
+ return;
254
+ }
255
+
256
+ if (!hasOwn(params, "data")) {
257
+ return;
258
+ }
259
+
260
+ const message: LogMessage = {
261
+ level: params.level,
262
+ data: params.data,
263
+ };
264
+
265
+ if (params.logger !== undefined) {
266
+ if (typeof params.logger !== "string") {
267
+ return;
268
+ }
269
+
270
+ message.logger = params.logger;
271
+ }
272
+
273
+ await onLog(message);
274
+ });
275
+ messageLayer.onNotification("notifications/progress", async (params) => {
276
+ if (onProgress === undefined || !isObjectRecord(params)) {
277
+ return;
278
+ }
279
+
280
+ const { progressToken, progress } = params;
281
+ if (
282
+ !isRequestId(progressToken) ||
283
+ typeof progress !== "number" ||
284
+ !this.activeProgressTokens.has(progressToken)
285
+ ) {
286
+ return;
287
+ }
288
+
289
+ const progressParams: ProgressParams = {
290
+ progressToken,
291
+ progress,
292
+ };
293
+
294
+ if (params.total !== undefined) {
295
+ if (typeof params.total !== "number") {
296
+ return;
297
+ }
298
+
299
+ progressParams.total = params.total;
300
+ }
301
+
302
+ if (params.message !== undefined) {
303
+ if (typeof params.message !== "string") {
304
+ return;
305
+ }
306
+
307
+ progressParams.message = params.message;
308
+ }
309
+
310
+ await onProgress(progressParams);
311
+ });
312
+ messageLayer.onNotification("notifications/cancelled", () => undefined);
313
+
314
+ this.transport = transport;
315
+ this.messageLayer = messageLayer;
316
+ this.currentState = "initializing";
317
+ this.subscribedResourceUris.clear();
318
+ this.activeProgressTokens.clear();
319
+ transport.closed
320
+ .then((closedEvent) => {
321
+ if (this.transport !== transport) {
322
+ return;
323
+ }
324
+
325
+ this.messageLayer?.dispose(closedEvent.reason);
326
+ this.messageLayer = null;
327
+ this.transport = null;
328
+ this.currentState = "closed";
329
+ })
330
+ .catch((error: unknown) => {
331
+ if (this.transport !== transport) {
332
+ return;
333
+ }
334
+
335
+ const reason = error instanceof Error ? error : new Error(String(error));
336
+ this.messageLayer?.dispose(reason);
337
+ this.messageLayer = null;
338
+ this.transport = null;
339
+ this.currentState = "closed";
340
+ });
341
+
342
+ const capabilities: ClientCapabilities = {
343
+ ...(this.options.capabilities ?? {}),
344
+ };
345
+
346
+ if (onSamplingRequest !== undefined && capabilities.sampling === undefined) {
347
+ capabilities.sampling = {};
348
+ }
349
+
350
+ if (onRootsList !== undefined) {
351
+ capabilities.roots = {
352
+ ...(capabilities.roots ?? {}),
353
+ };
354
+ }
355
+
356
+ this.currentClientCapabilities = structuredClone(capabilities);
357
+
358
+ try {
359
+ const initializeResultValue = await messageLayer.sendRequest("initialize", {
360
+ protocolVersion: MCP_PROTOCOL_VERSION,
361
+ clientInfo: this.options.clientInfo,
362
+ capabilities,
363
+ });
364
+
365
+ if (!isInitializeResult(initializeResultValue)) {
366
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid initialize result");
367
+ }
368
+
369
+ const initializeResult = initializeResultValue;
370
+
371
+ if (initializeResult.protocolVersion !== MCP_PROTOCOL_VERSION) {
372
+ throw new McpError(
373
+ ERROR_INVALID_REQUEST,
374
+ `Unsupported protocol version: ${initializeResult.protocolVersion}`
375
+ );
376
+ }
377
+
378
+ this.currentServerCapabilities = structuredClone(initializeResult.capabilities);
379
+ this.currentServerInfo = { ...initializeResult.serverInfo };
380
+ this.currentInstructions = initializeResult.instructions;
381
+ if (onRootsList !== undefined) {
382
+ messageLayer.onRequest("roots/list", async () => ({
383
+ roots: await onRootsList(),
384
+ }));
385
+ }
386
+ messageLayer.sendNotification("notifications/initialized");
387
+ this.currentState = "ready";
388
+
389
+ return initializeResult;
390
+ } catch (error) {
391
+ if (this.transport === transport) {
392
+ const reason = error instanceof Error ? error : new Error(String(error));
393
+ messageLayer.dispose(reason);
394
+ transport.dispose(reason);
395
+ this.messageLayer = null;
396
+ this.transport = null;
397
+ this.currentState = "disconnected";
398
+ }
399
+
400
+ throw error;
401
+ }
402
+ }
403
+
404
+ private getServerCapabilitiesOrThrow(): ServerCapabilities {
405
+ if (this.currentServerCapabilities === null) {
406
+ throw new Error("MCP client has not completed initialization");
407
+ }
408
+
409
+ return this.currentServerCapabilities;
410
+ }
411
+
412
+ async listTools(params: PaginatedParams = {}): Promise<{ tools: Tool[]; nextCursor?: string }> {
413
+ const messageLayer = this.getMessageLayerOrThrow();
414
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
415
+ if (serverCapabilities.tools === undefined) {
416
+ throw new Error("Server does not support tools");
417
+ }
418
+
419
+ const requestParams = params.cursor === undefined ? undefined : { cursor: params.cursor };
420
+ const result = await messageLayer.sendRequest("tools/list", requestParams);
421
+ if (!isToolsListResult(result)) {
422
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid tools/list result");
423
+ }
424
+
425
+ return result;
426
+ }
427
+
428
+ async callTool(params: CallToolParams, options: CallToolOptions = {}): Promise<CallToolResult> {
429
+ const messageLayer = this.getMessageLayerOrThrow();
430
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
431
+ if (serverCapabilities.tools === undefined) {
432
+ throw new Error("Server does not support tools");
433
+ }
434
+
435
+ if (options.signal?.aborted) {
436
+ throw options.signal.reason;
437
+ }
438
+
439
+ const requestParams =
440
+ options.progressToken === undefined
441
+ ? params
442
+ : {
443
+ ...params,
444
+ _meta: {
445
+ progressToken: options.progressToken,
446
+ },
447
+ };
448
+
449
+ if (options.progressToken !== undefined) {
450
+ this.activeProgressTokens.set(
451
+ options.progressToken,
452
+ (this.activeProgressTokens.get(options.progressToken) ?? 0) + 1
453
+ );
454
+ }
455
+
456
+ try {
457
+ let requestId: RequestId | undefined;
458
+ let cancellationSent = false;
459
+ const sendCancellationNotification = () => {
460
+ if (requestId === undefined || cancellationSent) {
461
+ return;
462
+ }
463
+ cancellationSent = true;
464
+ messageLayer.sendNotification("notifications/cancelled", { requestId });
465
+ };
466
+ const requestPromise = messageLayer.sendRequest("tools/call", requestParams, {
467
+ onRequestId: (nextRequestId) => {
468
+ requestId = nextRequestId;
469
+ },
470
+ onTimeout: sendCancellationNotification,
471
+ }).then((result) => {
472
+ if (!isCallToolResult(result)) {
473
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid tool result");
474
+ }
475
+
476
+ return result;
477
+ });
478
+ if (options.signal === undefined) {
479
+ return await requestPromise;
480
+ }
481
+ const signal = options.signal;
482
+
483
+ let abortListener: (() => void) | undefined;
484
+ const abortPromise = new Promise<CallToolResult>((_, reject) => {
485
+ const rejectWithAbortReason = () => {
486
+ sendCancellationNotification();
487
+ if (requestId !== undefined) {
488
+ messageLayer.cancelRequest(requestId, signal.reason);
489
+ }
490
+ reject(signal.reason);
491
+ };
492
+
493
+ abortListener = rejectWithAbortReason;
494
+ signal.addEventListener("abort", abortListener, { once: true });
495
+ if (signal.aborted) {
496
+ signal.removeEventListener("abort", abortListener);
497
+ rejectWithAbortReason();
498
+ }
499
+ });
500
+
501
+ try {
502
+ return (await Promise.race([requestPromise, abortPromise])) as CallToolResult;
503
+ } finally {
504
+ if (abortListener !== undefined) {
505
+ signal.removeEventListener("abort", abortListener);
506
+ }
507
+ }
508
+ } finally {
509
+ if (options.progressToken !== undefined) {
510
+ const activeCount = this.activeProgressTokens.get(options.progressToken);
511
+ if (activeCount === 1) {
512
+ this.activeProgressTokens.delete(options.progressToken);
513
+ } else if (activeCount !== undefined) {
514
+ this.activeProgressTokens.set(options.progressToken, activeCount - 1);
515
+ }
516
+ }
517
+ }
518
+ }
519
+
520
+ async listResources(
521
+ params: PaginatedParams = {}
522
+ ): Promise<{ resources: Resource[]; nextCursor?: string }> {
523
+ const messageLayer = this.getMessageLayerOrThrow();
524
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
525
+ if (serverCapabilities.resources === undefined) {
526
+ throw new Error("Server does not support resources");
527
+ }
528
+
529
+ const requestParams = params.cursor === undefined ? undefined : { cursor: params.cursor };
530
+ const result = await messageLayer.sendRequest("resources/list", requestParams);
531
+ if (!isResourcesListResult(result)) {
532
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid resources/list result");
533
+ }
534
+
535
+ return result;
536
+ }
537
+
538
+ async listResourceTemplates(
539
+ params: PaginatedParams = {}
540
+ ): Promise<{ resourceTemplates: ResourceTemplate[]; nextCursor?: string }> {
541
+ const messageLayer = this.getMessageLayerOrThrow();
542
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
543
+ if (serverCapabilities.resources === undefined) {
544
+ throw new Error("Server does not support resources");
545
+ }
546
+
547
+ const requestParams = params.cursor === undefined ? undefined : { cursor: params.cursor };
548
+ const result = await messageLayer.sendRequest("resources/templates/list", requestParams);
549
+ if (!isResourceTemplatesListResult(result)) {
550
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid resources/templates/list result");
551
+ }
552
+
553
+ return result;
554
+ }
555
+
556
+ async readResource(params: ReadResourceParams): Promise<{ contents: ResourceContents[] }> {
557
+ const messageLayer = this.getMessageLayerOrThrow();
558
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
559
+ if (serverCapabilities.resources === undefined) {
560
+ throw new Error("Server does not support resources");
561
+ }
562
+
563
+ const result = await messageLayer.sendRequest("resources/read", params);
564
+ if (!isReadResourceResult(result)) {
565
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid resources/read result");
566
+ }
567
+
568
+ return result;
569
+ }
570
+
571
+ async subscribe(uri: string): Promise<void> {
572
+ const messageLayer = this.getMessageLayerOrThrow();
573
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
574
+ if (serverCapabilities.resources?.subscribe !== true) {
575
+ throw new Error("Server does not support resource subscriptions");
576
+ }
577
+
578
+ await messageLayer.sendRequest("resources/subscribe", { uri });
579
+ this.subscribedResourceUris.add(uri);
580
+ }
581
+
582
+ async unsubscribe(uri: string): Promise<void> {
583
+ const messageLayer = this.getMessageLayerOrThrow();
584
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
585
+ if (serverCapabilities.resources?.subscribe !== true) {
586
+ throw new Error("Server does not support resource subscriptions");
587
+ }
588
+
589
+ await messageLayer.sendRequest("resources/unsubscribe", { uri });
590
+ this.subscribedResourceUris.delete(uri);
591
+ }
592
+
593
+ async listPrompts(params: PaginatedParams = {}): Promise<{ prompts: Prompt[]; nextCursor?: string }> {
594
+ const messageLayer = this.getMessageLayerOrThrow();
595
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
596
+ if (serverCapabilities.prompts === undefined) {
597
+ throw new Error("Server does not support prompts");
598
+ }
599
+
600
+ const requestParams = params.cursor === undefined ? undefined : { cursor: params.cursor };
601
+ return (await messageLayer.sendRequest("prompts/list", requestParams)) as {
602
+ prompts: Prompt[];
603
+ nextCursor?: string;
604
+ };
605
+ }
606
+
607
+ async getPrompt(params: GetPromptParams): Promise<GetPromptResult> {
608
+ const messageLayer = this.getMessageLayerOrThrow();
609
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
610
+ if (serverCapabilities.prompts === undefined) {
611
+ throw new Error("Server does not support prompts");
612
+ }
613
+
614
+ const result = await messageLayer.sendRequest("prompts/get", params);
615
+ if (!isGetPromptResult(result)) {
616
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid prompts/get result");
617
+ }
618
+
619
+ return result;
620
+ }
621
+
622
+ async complete(params: CompleteParams): Promise<CompleteResult> {
623
+ const messageLayer = this.getMessageLayerOrThrow();
624
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
625
+ if (serverCapabilities.completions === undefined) {
626
+ throw new Error("Server does not support completions");
627
+ }
628
+
629
+ const result = await messageLayer.sendRequest("completion/complete", params);
630
+ if (!isCompleteResult(result)) {
631
+ throw new McpError(ERROR_INVALID_REQUEST, "Invalid completion/complete result");
632
+ }
633
+
634
+ return result;
635
+ }
636
+
637
+ async setLogLevel(level: LogLevel): Promise<void> {
638
+ const messageLayer = this.getMessageLayerOrThrow();
639
+ const serverCapabilities = this.getServerCapabilitiesOrThrow();
640
+ if (serverCapabilities.logging === undefined) {
641
+ throw new Error("Server does not support logging");
642
+ }
643
+
644
+ await messageLayer.sendRequest("logging/setLevel", { level });
645
+ }
646
+
647
+ async cancel(requestId: RequestId, reason?: string): Promise<void> {
648
+ const messageLayer = this.getMessageLayerOrThrow();
649
+ const params: { requestId: RequestId; reason?: string } = { requestId };
650
+
651
+ if (reason !== undefined) {
652
+ params.reason = reason;
653
+ }
654
+
655
+ messageLayer.sendNotification("notifications/cancelled", params);
656
+ }
657
+
658
+ async sendRootsChanged(): Promise<void> {
659
+ const messageLayer = this.getMessageLayerOrThrow();
660
+ if (this.currentClientCapabilities?.roots?.listChanged !== true) {
661
+ throw new Error("Client did not advertise roots list changes");
662
+ }
663
+
664
+ messageLayer.sendNotification("notifications/roots/list_changed");
665
+ }
666
+
667
+ async ping(): Promise<void> {
668
+ const messageLayer = this.getMessageLayerOrThrow();
669
+ await messageLayer.sendRequest("ping");
670
+ }
671
+
672
+ async close(): Promise<void> {
673
+ if (this.currentState === "closed") {
674
+ return;
675
+ }
676
+
677
+ const closeError = new Error("MCP client closed");
678
+ this.messageLayer?.dispose(closeError);
679
+ this.transport?.dispose(closeError);
680
+ this.messageLayer = null;
681
+ this.transport = null;
682
+ this.currentServerCapabilities = null;
683
+ this.currentClientCapabilities = null;
684
+ this.currentServerInfo = null;
685
+ this.currentInstructions = undefined;
686
+ this.subscribedResourceUris.clear();
687
+ this.activeProgressTokens.clear();
688
+ this.currentState = "closed";
689
+ }
690
+ }
691
+
692
+ export interface Tool {
693
+ name: string;
694
+ description?: string;
695
+ inputSchema: Record<string, unknown>;
696
+ outputSchema?: Record<string, unknown>;
697
+ annotations?: ToolAnnotations;
698
+ }
699
+
700
+ export interface ToolAnnotations {
701
+ title?: string;
702
+ readOnlyHint?: boolean;
703
+ destructiveHint?: boolean;
704
+ idempotentHint?: boolean;
705
+ openWorldHint?: boolean;
706
+ }
707
+
708
+ export interface CallToolParams {
709
+ name: string;
710
+ arguments?: Record<string, unknown>;
711
+ }
712
+
713
+ export interface CallToolOptions {
714
+ signal?: AbortSignal;
715
+ progressToken?: ProgressToken;
716
+ }
717
+
718
+ export interface ReadResourceParams {
719
+ uri: string;
720
+ }
721
+
722
+ export interface Resource {
723
+ uri: string;
724
+ name: string;
725
+ description?: string;
726
+ mimeType?: string;
727
+ size?: number;
728
+ }
729
+
730
+ export interface ResourceTemplate {
731
+ uriTemplate: string;
732
+ name: string;
733
+ description?: string;
734
+ mimeType?: string;
735
+ }
736
+
737
+ export interface PaginatedParams {
738
+ cursor?: string;
739
+ }
740
+
741
+ export interface PaginatedResult {
742
+ nextCursor?: string;
743
+ }
744
+
745
+ export interface TextResourceContents {
746
+ uri: string;
747
+ mimeType?: string;
748
+ text: string;
749
+ }
750
+
751
+ export interface BlobResourceContents {
752
+ uri: string;
753
+ mimeType?: string;
754
+ blob: string;
755
+ }
756
+
757
+ export type ResourceContents = TextResourceContents | BlobResourceContents;
758
+
759
+ export interface TextContent {
760
+ type: "text";
761
+ text: string;
762
+ }
763
+
764
+ export interface ImageContent {
765
+ type: "image";
766
+ data: string;
767
+ mimeType: string;
768
+ }
769
+
770
+ export interface AudioContent {
771
+ type: "audio";
772
+ data: string;
773
+ mimeType: string;
774
+ }
775
+
776
+ export interface EmbeddedResource {
777
+ type: "resource";
778
+ resource: ResourceContents;
779
+ }
780
+
781
+ export type ContentItem = TextContent | ImageContent | AudioContent | EmbeddedResource;
782
+
783
+ export interface Prompt {
784
+ name: string;
785
+ description?: string;
786
+ arguments?: PromptArgument[];
787
+ }
788
+
789
+ export interface PromptArgument {
790
+ name: string;
791
+ description?: string;
792
+ required?: boolean;
793
+ }
794
+
795
+ export interface PromptMessage {
796
+ role: "user" | "assistant";
797
+ content: ContentItem;
798
+ }
799
+
800
+ export interface GetPromptResult {
801
+ description?: string;
802
+ messages: PromptMessage[];
803
+ }
804
+
805
+ export interface GetPromptParams {
806
+ name: string;
807
+ arguments?: Record<string, string>;
808
+ }
809
+
810
+ export interface CallToolResult {
811
+ content: ContentItem[];
812
+ structuredContent?: Record<string, unknown>;
813
+ isError?: boolean;
814
+ }
815
+
816
+ export interface Root {
817
+ uri: string;
818
+ name?: string;
819
+ }
820
+
821
+ export type LogLevel =
822
+ | "debug"
823
+ | "info"
824
+ | "notice"
825
+ | "warning"
826
+ | "error"
827
+ | "critical"
828
+ | "alert"
829
+ | "emergency";
830
+
831
+ export interface LogMessage {
832
+ level: LogLevel;
833
+ logger?: string;
834
+ data: unknown;
835
+ }
836
+
837
+ export type ProgressToken = RequestId;
838
+
839
+ export interface ProgressParams {
840
+ progressToken: ProgressToken;
841
+ progress: number;
842
+ total?: number;
843
+ message?: string;
844
+ }
845
+
846
+ export interface ModelHint {
847
+ name?: string;
848
+ }
849
+
850
+ export interface ModelPreferences {
851
+ hints?: ModelHint[];
852
+ costPriority?: number;
853
+ speedPriority?: number;
854
+ intelligencePriority?: number;
855
+ }
856
+
857
+ export interface SamplingMessage {
858
+ role: "user" | "assistant";
859
+ content: ContentItem | ContentItem[];
860
+ }
861
+
862
+ export type IncludeContext = "none" | "thisServer" | "allServers";
863
+
864
+ export interface CreateMessageParams {
865
+ messages: SamplingMessage[];
866
+ modelPreferences?: ModelPreferences;
867
+ systemPrompt?: string;
868
+ includeContext?: IncludeContext;
869
+ temperature?: number;
870
+ maxTokens: number;
871
+ stopSequences?: string[];
872
+ metadata?: Record<string, unknown>;
873
+ }
874
+
875
+ export interface CreateMessageResult {
876
+ model: string;
877
+ content: ContentItem | ContentItem[];
878
+ role: "user" | "assistant";
879
+ stopReason: string;
880
+ }
881
+
882
+ export interface PromptReference {
883
+ type: "ref/prompt";
884
+ name: string;
885
+ }
886
+
887
+ export interface ResourceReference {
888
+ type: "ref/resource";
889
+ uri: string;
890
+ }
891
+
892
+ export interface CompleteArgument {
893
+ name: string;
894
+ value: string;
895
+ }
896
+
897
+ export interface CompleteParams {
898
+ ref: PromptReference | ResourceReference;
899
+ argument: CompleteArgument;
900
+ }
901
+
902
+ export interface Completion {
903
+ values: string[];
904
+ hasMore?: boolean;
905
+ total?: number;
906
+ }
907
+
908
+ export interface CompleteResult {
909
+ completion: Completion;
910
+ }
911
+
912
+ export const ERROR_PARSE = -32700;
913
+ export const ERROR_INVALID_REQUEST = -32600;
914
+ export const ERROR_METHOD_NOT_FOUND = -32601;
915
+ export const ERROR_INVALID_PARAMS = -32602;
916
+ export const ERROR_INTERNAL = -32603;
917
+
918
+ export interface McpTransportClosedEvent {
919
+ reason: Error;
920
+ code?: number;
921
+ signal?: NodeJS.Signals;
922
+ }
923
+
924
+ export interface McpTransport {
925
+ readable: Readable;
926
+ writable: Writable;
927
+ closed: Promise<McpTransportClosedEvent>;
928
+ dispose(reason?: Error): void;
929
+ }
930
+
931
+ export interface InMemoryServerTransport {
932
+ readable: Readable;
933
+ writable: Writable;
934
+ }
935
+
936
+ export interface InMemoryTransportPair {
937
+ clientTransport: McpTransport;
938
+ serverTransport: InMemoryServerTransport;
939
+ }
940
+
941
+ export function createInMemoryTransportPair(): InMemoryTransportPair {
942
+ const clientToServer = new PassThrough();
943
+ const serverToClient = new PassThrough();
944
+ let disposed = false;
945
+ let resolveClosed:
946
+ | ((closedEvent: McpTransportClosedEvent) => void)
947
+ | undefined;
948
+
949
+ const closed = new Promise<McpTransportClosedEvent>((resolve) => {
950
+ resolveClosed = resolve;
951
+ });
952
+
953
+ const resolveClosedOnce = (reason: Error): void => {
954
+ if (resolveClosed === undefined) {
955
+ return;
956
+ }
957
+
958
+ const currentResolve = resolveClosed;
959
+ resolveClosed = undefined;
960
+ currentResolve({ reason });
961
+ };
962
+
963
+ const dispose = (reason = new Error("In-memory transport disposed")): void => {
964
+ if (disposed) {
965
+ return;
966
+ }
967
+
968
+ disposed = true;
969
+
970
+ if (!clientToServer.destroyed && !clientToServer.writableEnded) {
971
+ clientToServer.end();
972
+ }
973
+
974
+ if (!serverToClient.destroyed && !serverToClient.writableEnded) {
975
+ serverToClient.end();
976
+ }
977
+
978
+ resolveClosedOnce(reason);
979
+ };
980
+
981
+ clientToServer.once("error", (error) => {
982
+ dispose(error instanceof Error ? error : new Error(String(error)));
983
+ });
984
+ serverToClient.once("error", (error) => {
985
+ dispose(error instanceof Error ? error : new Error(String(error)));
986
+ });
987
+
988
+ return {
989
+ clientTransport: {
990
+ readable: serverToClient,
991
+ writable: clientToServer,
992
+ closed,
993
+ dispose,
994
+ },
995
+ serverTransport: {
996
+ readable: clientToServer,
997
+ writable: serverToClient,
998
+ },
999
+ };
1000
+ }
1001
+
1002
+ interface SdkTransportAdapterInput {
1003
+ onclose?: () => void;
1004
+ onerror?: (error: Error) => void;
1005
+ onmessage?: (message: SdkJsonRpcMessage, extra?: any) => void;
1006
+ start(): Promise<void>;
1007
+ close(): Promise<void>;
1008
+ send(message: SdkJsonRpcMessage): Promise<void>;
1009
+ }
1010
+
1011
+ export interface McpClientConnection {
1012
+ connect(transport: McpTransport): Promise<void>;
1013
+ close(): Promise<void>;
1014
+ }
1015
+
1016
+ interface SdkServerConnection {
1017
+ connect(transport: unknown): Promise<void>;
1018
+ }
1019
+
1020
+ export interface SdkTestPair<TClient extends McpClientConnection> {
1021
+ client: TClient;
1022
+ cleanup: () => Promise<void>;
1023
+ }
1024
+
1025
+ export class SdkTransportAdapter implements McpTransport {
1026
+ readonly readable: Readable;
1027
+ readonly writable: Writable;
1028
+ readonly closed: Promise<McpTransportClosedEvent>;
1029
+ private readonly sdkTransport: SdkTransportAdapterInput;
1030
+ private readonly readStream = new PassThrough();
1031
+ private readonly writeStream = new PassThrough();
1032
+ private resolveClosed:
1033
+ | ((closedEvent: McpTransportClosedEvent) => void)
1034
+ | undefined;
1035
+ private disposed = false;
1036
+
1037
+ constructor(sdkTransport: SdkTransportAdapterInput) {
1038
+ this.sdkTransport = sdkTransport;
1039
+ this.readable = this.readStream;
1040
+ this.writable = this.writeStream;
1041
+ this.closed = new Promise((resolve) => {
1042
+ this.resolveClosed = resolve;
1043
+ });
1044
+
1045
+ this.sdkTransport.onmessage = (message) => {
1046
+ this.readStream.write(serializeJsonRpcMessage(message as JsonRpcMessage));
1047
+ };
1048
+ this.sdkTransport.onclose = () => {
1049
+ this.dispose(new Error("SDK transport closed"));
1050
+ };
1051
+ this.sdkTransport.onerror = (error) => {
1052
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
1053
+ };
1054
+
1055
+ this.readStream.once("error", (error) => {
1056
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
1057
+ });
1058
+ this.writeStream.once("error", (error) => {
1059
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
1060
+ });
1061
+
1062
+ this.consumeWrittenLines().catch((error) => {
1063
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
1064
+ });
1065
+ this.sdkTransport.start().catch((error) => {
1066
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
1067
+ });
1068
+ }
1069
+
1070
+ dispose(reason = new Error("SDK transport adapter disposed")): void {
1071
+ if (this.disposed) {
1072
+ return;
1073
+ }
1074
+
1075
+ this.disposed = true;
1076
+
1077
+ if (!this.writeStream.destroyed && !this.writeStream.writableEnded) {
1078
+ this.writeStream.end();
1079
+ }
1080
+
1081
+ if (!this.readStream.destroyed && !this.readStream.writableEnded) {
1082
+ this.readStream.end();
1083
+ }
1084
+
1085
+ if (this.resolveClosed !== undefined) {
1086
+ const resolveClosed = this.resolveClosed;
1087
+ this.resolveClosed = undefined;
1088
+ resolveClosed({ reason });
1089
+ }
1090
+
1091
+ this.sdkTransport.close().catch(() => undefined);
1092
+ }
1093
+
1094
+ private async consumeWrittenLines(): Promise<void> {
1095
+ for await (const line of readLines(this.writeStream)) {
1096
+ if (this.disposed || line.length === 0) {
1097
+ continue;
1098
+ }
1099
+
1100
+ let parsedMessage: unknown;
1101
+ try {
1102
+ parsedMessage = JSON.parse(line);
1103
+ } catch {
1104
+ throw new Error(`Malformed JSON line: ${line}`);
1105
+ }
1106
+
1107
+ if (typeof parsedMessage !== "object" || parsedMessage === null || Array.isArray(parsedMessage)) {
1108
+ throw new Error(`Malformed JSON line: ${line}`);
1109
+ }
1110
+
1111
+ await this.sdkTransport.send(parsedMessage as SdkJsonRpcMessage);
1112
+ }
1113
+ }
1114
+ }
1115
+
1116
+ export async function createSdkTestPair<TClient extends McpClientConnection>(
1117
+ server: SdkServerConnection,
1118
+ createClient: () => TClient
1119
+ ): Promise<SdkTestPair<TClient>> {
1120
+ const { InMemoryTransport } = await import("@modelcontextprotocol/sdk/inMemory.js");
1121
+ const [clientSdkTransport, serverSdkTransport] = InMemoryTransport.createLinkedPair();
1122
+ const clientTransport = new SdkTransportAdapter(clientSdkTransport);
1123
+ const serverPromise = server.connect(serverSdkTransport);
1124
+ const client = createClient();
1125
+
1126
+ try {
1127
+ await client.connect(clientTransport);
1128
+ } catch (error) {
1129
+ clientTransport.dispose(new Error("SDK test pair setup failed"));
1130
+ await clientSdkTransport.close();
1131
+ await serverSdkTransport.close();
1132
+ await serverPromise;
1133
+ throw error;
1134
+ }
1135
+
1136
+ const cleanup = async (): Promise<void> => {
1137
+ await client.close();
1138
+ clientTransport.dispose(new Error("SDK test pair cleanup"));
1139
+ await clientSdkTransport.close();
1140
+ await serverSdkTransport.close();
1141
+ await serverPromise;
1142
+ };
1143
+
1144
+ return { client, cleanup };
1145
+ }
1146
+
1147
+ export async function createMockEchoToolServer(): Promise<SdkServerConnection> {
1148
+ const [{ Server }, { CallToolRequestSchema, ListToolsRequestSchema }] =
1149
+ await Promise.all([
1150
+ import("@modelcontextprotocol/sdk/server/index.js"),
1151
+ import("@modelcontextprotocol/sdk/types.js"),
1152
+ ]);
1153
+
1154
+ const server = new Server(
1155
+ { name: "mock-echo-tool-server", version: "1.0.0" },
1156
+ { capabilities: { tools: {} } }
1157
+ );
1158
+ const echoTool = {
1159
+ name: "echo",
1160
+ description: "Echoes the provided message.",
1161
+ inputSchema: {
1162
+ type: "object" as const,
1163
+ properties: {
1164
+ message: {
1165
+ type: "string",
1166
+ },
1167
+ },
1168
+ required: ["message"],
1169
+ },
1170
+ };
1171
+
1172
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
1173
+ tools: [echoTool],
1174
+ }));
1175
+
1176
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1177
+ if (request.params.name !== "echo") {
1178
+ throw new Error(`Unknown tool: ${request.params.name}`);
1179
+ }
1180
+
1181
+ const message = request.params.arguments?.message;
1182
+ if (typeof message !== "string") {
1183
+ throw new Error("Echo tool requires a string message argument");
1184
+ }
1185
+
1186
+ return {
1187
+ content: [
1188
+ {
1189
+ type: "text" as const,
1190
+ text: message,
1191
+ },
1192
+ ],
1193
+ };
1194
+ });
1195
+
1196
+ return server;
1197
+ }
1198
+
1199
+ export async function createMockMultiToolServer(): Promise<SdkServerConnection> {
1200
+ const [{ Server }, { CallToolRequestSchema, ListToolsRequestSchema }] =
1201
+ await Promise.all([
1202
+ import("@modelcontextprotocol/sdk/server/index.js"),
1203
+ import("@modelcontextprotocol/sdk/types.js"),
1204
+ ]);
1205
+
1206
+ const server = new Server(
1207
+ { name: "mock-multi-tool-server", version: "1.0.0" },
1208
+ { capabilities: { tools: {} } }
1209
+ );
1210
+ const tools = [
1211
+ {
1212
+ name: "add",
1213
+ description: "Adds two numbers and returns the sum as text.",
1214
+ inputSchema: {
1215
+ type: "object" as const,
1216
+ properties: {
1217
+ a: { type: "number" },
1218
+ b: { type: "number" },
1219
+ },
1220
+ required: ["a", "b"],
1221
+ },
1222
+ },
1223
+ {
1224
+ name: "greet",
1225
+ description: "Greets a user with optional formal tone.",
1226
+ inputSchema: {
1227
+ type: "object" as const,
1228
+ properties: {
1229
+ name: { type: "string" },
1230
+ formal: { type: "boolean" },
1231
+ },
1232
+ required: ["name"],
1233
+ },
1234
+ },
1235
+ {
1236
+ name: "fail",
1237
+ description: "Returns an intentional tool error payload.",
1238
+ inputSchema: {
1239
+ type: "object" as const,
1240
+ properties: {},
1241
+ },
1242
+ },
1243
+ ];
1244
+
1245
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools }));
1246
+
1247
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1248
+ if (request.params.name === "add") {
1249
+ const a = request.params.arguments?.a;
1250
+ const b = request.params.arguments?.b;
1251
+
1252
+ if (typeof a !== "number" || typeof b !== "number") {
1253
+ throw new Error("Add tool requires numeric a and b arguments");
1254
+ }
1255
+
1256
+ return {
1257
+ content: [
1258
+ {
1259
+ type: "text" as const,
1260
+ text: String(a + b),
1261
+ },
1262
+ ],
1263
+ };
1264
+ }
1265
+
1266
+ if (request.params.name === "greet") {
1267
+ const name = request.params.arguments?.name;
1268
+ const formal = request.params.arguments?.formal;
1269
+
1270
+ if (typeof name !== "string") {
1271
+ throw new Error("Greet tool requires a string name argument");
1272
+ }
1273
+ if (formal !== undefined && typeof formal !== "boolean") {
1274
+ throw new Error("Greet tool formal argument must be boolean when provided");
1275
+ }
1276
+
1277
+ return {
1278
+ content: [
1279
+ {
1280
+ type: "text" as const,
1281
+ text: formal ? `Good day, ${name}.` : `Hello, ${name}!`,
1282
+ },
1283
+ ],
1284
+ };
1285
+ }
1286
+
1287
+ if (request.params.name === "fail") {
1288
+ return {
1289
+ isError: true,
1290
+ content: [
1291
+ {
1292
+ type: "text" as const,
1293
+ text: "Intentional tool failure.",
1294
+ },
1295
+ ],
1296
+ };
1297
+ }
1298
+
1299
+ throw new Error(`Unknown tool: ${request.params.name}`);
1300
+ });
1301
+
1302
+ return server;
1303
+ }
1304
+
1305
+ export async function createMockPaginatedToolsServer(): Promise<SdkServerConnection> {
1306
+ const [{ Server }, { ListToolsRequestSchema }] = await Promise.all([
1307
+ import("@modelcontextprotocol/sdk/server/index.js"),
1308
+ import("@modelcontextprotocol/sdk/types.js"),
1309
+ ]);
1310
+
1311
+ const server = new Server(
1312
+ { name: "mock-paginated-tools-server", version: "1.0.0" },
1313
+ { capabilities: { tools: {} } }
1314
+ );
1315
+ const pageSize = 5;
1316
+ const tools = Array.from({ length: 20 }, (_, index) => ({
1317
+ name: `tool-${index + 1}`,
1318
+ description: `Mock paginated tool ${index + 1}.`,
1319
+ inputSchema: {
1320
+ type: "object" as const,
1321
+ properties: {},
1322
+ },
1323
+ }));
1324
+
1325
+ server.setRequestHandler(ListToolsRequestSchema, async (request) => {
1326
+ const cursor = request.params?.cursor;
1327
+ const startIndex = cursor === undefined ? 0 : Number(cursor);
1328
+
1329
+ if (
1330
+ !Number.isInteger(startIndex) ||
1331
+ startIndex < 0 ||
1332
+ startIndex > tools.length ||
1333
+ startIndex % pageSize !== 0
1334
+ ) {
1335
+ throw new Error(`Invalid cursor: ${String(cursor)}`);
1336
+ }
1337
+
1338
+ const pageTools = tools.slice(startIndex, startIndex + pageSize);
1339
+ const nextIndex = startIndex + pageSize;
1340
+ if (nextIndex >= tools.length) {
1341
+ return { tools: pageTools };
1342
+ }
1343
+
1344
+ return {
1345
+ tools: pageTools,
1346
+ nextCursor: String(nextIndex),
1347
+ };
1348
+ });
1349
+
1350
+ return server;
1351
+ }
1352
+
1353
+ export async function createMockResourceServer(): Promise<SdkServerConnection> {
1354
+ const [
1355
+ { Server },
1356
+ {
1357
+ ListResourcesRequestSchema,
1358
+ ListResourceTemplatesRequestSchema,
1359
+ ReadResourceRequestSchema,
1360
+ },
1361
+ ] = await Promise.all([
1362
+ import("@modelcontextprotocol/sdk/server/index.js"),
1363
+ import("@modelcontextprotocol/sdk/types.js"),
1364
+ ]);
1365
+
1366
+ const server = new Server(
1367
+ { name: "mock-resource-server", version: "1.0.0" },
1368
+ { capabilities: { resources: {} } }
1369
+ );
1370
+ const resources = [
1371
+ {
1372
+ uri: "file:///readme.txt",
1373
+ name: "readme.txt",
1374
+ mimeType: "text/plain",
1375
+ },
1376
+ {
1377
+ uri: "file:///image.png",
1378
+ name: "image.png",
1379
+ mimeType: "image/png",
1380
+ },
1381
+ ];
1382
+ const resourceContentsByUri = new Map<string, ResourceContents>([
1383
+ [
1384
+ "file:///readme.txt",
1385
+ {
1386
+ uri: "file:///readme.txt",
1387
+ mimeType: "text/plain",
1388
+ text: "This is a mock README resource.",
1389
+ },
1390
+ ],
1391
+ [
1392
+ "file:///image.png",
1393
+ {
1394
+ uri: "file:///image.png",
1395
+ mimeType: "image/png",
1396
+ blob: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgL9qj3QAAAAASUVORK5CYII=",
1397
+ },
1398
+ ],
1399
+ ]);
1400
+ const resourceTemplates = [
1401
+ {
1402
+ uriTemplate: "file:///{path}",
1403
+ name: "file-template",
1404
+ },
1405
+ ];
1406
+
1407
+ server.setRequestHandler(ListResourcesRequestSchema, async () => ({
1408
+ resources,
1409
+ }));
1410
+
1411
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
1412
+ const resourceContent = resourceContentsByUri.get(request.params.uri);
1413
+ if (resourceContent === undefined) {
1414
+ throw new Error(`Unknown resource: ${request.params.uri}`);
1415
+ }
1416
+
1417
+ return {
1418
+ contents: [resourceContent],
1419
+ };
1420
+ });
1421
+
1422
+ server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
1423
+ resourceTemplates,
1424
+ }));
1425
+
1426
+ return server;
1427
+ }
1428
+
1429
+ export async function createMockSubscribableResourceServer(): Promise<
1430
+ SdkServerConnection & {
1431
+ triggerResourceUpdated: (uri: string, updatedText?: string) => Promise<void>;
1432
+ triggerResourceListChanged: () => Promise<void>;
1433
+ }
1434
+ > {
1435
+ const [
1436
+ { Server },
1437
+ {
1438
+ ListResourcesRequestSchema,
1439
+ ReadResourceRequestSchema,
1440
+ SubscribeRequestSchema,
1441
+ UnsubscribeRequestSchema,
1442
+ },
1443
+ ] =
1444
+ await Promise.all([
1445
+ import("@modelcontextprotocol/sdk/server/index.js"),
1446
+ import("@modelcontextprotocol/sdk/types.js"),
1447
+ ]);
1448
+
1449
+ const server = new Server(
1450
+ { name: "mock-subscribable-resource-server", version: "1.0.0" },
1451
+ { capabilities: { resources: { subscribe: true, listChanged: true } } }
1452
+ );
1453
+ const resources = [
1454
+ {
1455
+ uri: "file:///readme.txt",
1456
+ name: "readme.txt",
1457
+ mimeType: "text/plain",
1458
+ },
1459
+ ];
1460
+ const resourceContentsByUri = new Map<string, ResourceContents>([
1461
+ [
1462
+ "file:///readme.txt",
1463
+ {
1464
+ uri: "file:///readme.txt",
1465
+ mimeType: "text/plain",
1466
+ text: "Initial subscribable resource text.",
1467
+ },
1468
+ ],
1469
+ ]);
1470
+ const subscribedUris = new Set<string>();
1471
+
1472
+ server.setRequestHandler(ListResourcesRequestSchema, async () => ({
1473
+ resources,
1474
+ }));
1475
+
1476
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
1477
+ const resourceContent = resourceContentsByUri.get(request.params.uri);
1478
+ if (resourceContent === undefined) {
1479
+ throw new Error(`Unknown resource: ${request.params.uri}`);
1480
+ }
1481
+
1482
+ return {
1483
+ contents: [resourceContent],
1484
+ };
1485
+ });
1486
+
1487
+ server.setRequestHandler(SubscribeRequestSchema, async (request) => {
1488
+ subscribedUris.add(request.params.uri);
1489
+ return {};
1490
+ });
1491
+
1492
+ server.setRequestHandler(UnsubscribeRequestSchema, async (request) => {
1493
+ subscribedUris.delete(request.params.uri);
1494
+ return {};
1495
+ });
1496
+
1497
+ return Object.assign(server, {
1498
+ triggerResourceUpdated: async (uri: string, updatedText?: string): Promise<void> => {
1499
+ if (updatedText !== undefined) {
1500
+ const existingContent = resourceContentsByUri.get(uri);
1501
+ if (existingContent === undefined || "blob" in existingContent) {
1502
+ throw new Error(`Unknown text resource: ${uri}`);
1503
+ }
1504
+
1505
+ resourceContentsByUri.set(uri, {
1506
+ uri,
1507
+ mimeType: existingContent.mimeType,
1508
+ text: updatedText,
1509
+ });
1510
+ }
1511
+
1512
+ if (!subscribedUris.has(uri)) {
1513
+ return;
1514
+ }
1515
+
1516
+ await server.sendResourceUpdated({ uri });
1517
+ },
1518
+ triggerResourceListChanged: async (): Promise<void> => {
1519
+ await server.sendResourceListChanged();
1520
+ },
1521
+ });
1522
+ }
1523
+
1524
+ export async function createMockPromptServer(): Promise<SdkServerConnection> {
1525
+ const [
1526
+ { Server },
1527
+ { ErrorCode, GetPromptRequestSchema, ListPromptsRequestSchema, McpError: SdkMcpError },
1528
+ ] =
1529
+ await Promise.all([
1530
+ import("@modelcontextprotocol/sdk/server/index.js"),
1531
+ import("@modelcontextprotocol/sdk/types.js"),
1532
+ ]);
1533
+
1534
+ const server = new Server(
1535
+ { name: "mock-prompt-server", version: "1.0.0" },
1536
+ { capabilities: { prompts: {} } }
1537
+ );
1538
+ const promptTemplates = [
1539
+ {
1540
+ prompt: {
1541
+ name: "code_review",
1542
+ description: "Review code for correctness and maintainability.",
1543
+ arguments: [
1544
+ {
1545
+ name: "code",
1546
+ description: "Code to review.",
1547
+ required: true,
1548
+ },
1549
+ ],
1550
+ },
1551
+ messages: [
1552
+ {
1553
+ role: "user" as const,
1554
+ textTemplate: "Please review the following code:\n{{code}}",
1555
+ },
1556
+ {
1557
+ role: "assistant" as const,
1558
+ textTemplate: "I will review the code for potential issues and improvements.",
1559
+ },
1560
+ ],
1561
+ },
1562
+ {
1563
+ prompt: {
1564
+ name: "summarize",
1565
+ description: "Summarize the provided text.",
1566
+ },
1567
+ messages: [
1568
+ {
1569
+ role: "user" as const,
1570
+ textTemplate: "Please summarize the provided text.",
1571
+ },
1572
+ ],
1573
+ },
1574
+ ];
1575
+ const promptsByName = new Map(promptTemplates.map((template) => [template.prompt.name, template]));
1576
+
1577
+ const renderPromptMessage = (
1578
+ textTemplate: string,
1579
+ argumentsMap: Record<string, unknown> | undefined
1580
+ ): string => {
1581
+ if (argumentsMap === undefined) {
1582
+ return textTemplate;
1583
+ }
1584
+
1585
+ let renderedText = textTemplate;
1586
+ for (const [name, value] of Object.entries(argumentsMap)) {
1587
+ if (typeof value !== "string") {
1588
+ continue;
1589
+ }
1590
+
1591
+ renderedText = renderedText.split(`{{${name}}}`).join(value);
1592
+ }
1593
+
1594
+ return renderedText;
1595
+ };
1596
+
1597
+ server.setRequestHandler(ListPromptsRequestSchema, async () => ({
1598
+ prompts: promptTemplates.map((template) => template.prompt),
1599
+ }));
1600
+
1601
+ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
1602
+ const template = promptsByName.get(request.params.name);
1603
+ if (template === undefined) {
1604
+ throw new SdkMcpError(ErrorCode.InvalidParams, `Unknown prompt: ${request.params.name}`);
1605
+ }
1606
+
1607
+ const requestArguments = request.params.arguments;
1608
+ for (const argument of template.prompt.arguments ?? []) {
1609
+ if (!argument.required) {
1610
+ continue;
1611
+ }
1612
+
1613
+ const value = requestArguments?.[argument.name];
1614
+ if (typeof value !== "string") {
1615
+ throw new SdkMcpError(
1616
+ ErrorCode.InvalidParams,
1617
+ `Missing required prompt argument: ${argument.name}`
1618
+ );
1619
+ }
1620
+ }
1621
+
1622
+ return {
1623
+ description: template.prompt.description,
1624
+ messages: template.messages.map((message) => ({
1625
+ role: message.role,
1626
+ content: {
1627
+ type: "text" as const,
1628
+ text: renderPromptMessage(message.textTemplate, requestArguments),
1629
+ },
1630
+ })),
1631
+ };
1632
+ });
1633
+
1634
+ return server;
1635
+ }
1636
+
1637
+ export async function createMockCompletionServer(): Promise<SdkServerConnection> {
1638
+ const [{ Server }, { CompleteRequestSchema }] = await Promise.all([
1639
+ import("@modelcontextprotocol/sdk/server/index.js"),
1640
+ import("@modelcontextprotocol/sdk/types.js"),
1641
+ ]);
1642
+
1643
+ const server = new Server(
1644
+ { name: "mock-completion-server", version: "1.0.0" },
1645
+ { capabilities: { completions: {} } }
1646
+ );
1647
+ const promptArgumentCompletions = new Map<string, string[]>([
1648
+ ["code_review:language", ["python", "pydantic", "pytest", "pytorch", "pyright", "rust"]],
1649
+ ]);
1650
+ const maxValues = 3;
1651
+
1652
+ server.setRequestHandler(CompleteRequestSchema, async (request) => {
1653
+ if (request.params.ref.type !== "ref/prompt") {
1654
+ return {
1655
+ completion: {
1656
+ values: [],
1657
+ },
1658
+ };
1659
+ }
1660
+
1661
+ const completionKey = `${request.params.ref.name}:${request.params.argument.name}`;
1662
+ const candidates = promptArgumentCompletions.get(completionKey) ?? [];
1663
+ const partialValue = request.params.argument.value.toLowerCase();
1664
+ const matchingValues = candidates.filter((candidate) =>
1665
+ candidate.toLowerCase().startsWith(partialValue)
1666
+ );
1667
+ const values = matchingValues.slice(0, maxValues);
1668
+
1669
+ if (values.length < matchingValues.length) {
1670
+ return {
1671
+ completion: {
1672
+ values,
1673
+ hasMore: true,
1674
+ total: matchingValues.length,
1675
+ },
1676
+ };
1677
+ }
1678
+
1679
+ return {
1680
+ completion: {
1681
+ values,
1682
+ },
1683
+ };
1684
+ });
1685
+
1686
+ return server;
1687
+ }
1688
+
1689
+ export async function createMockProgressServer(): Promise<SdkServerConnection> {
1690
+ const [{ Server }, { CallToolRequestSchema, ListToolsRequestSchema }] =
1691
+ await Promise.all([
1692
+ import("@modelcontextprotocol/sdk/server/index.js"),
1693
+ import("@modelcontextprotocol/sdk/types.js"),
1694
+ ]);
1695
+
1696
+ const server = new Server(
1697
+ { name: "mock-progress-server", version: "1.0.0" },
1698
+ { capabilities: { tools: {} } }
1699
+ );
1700
+ const totalSteps = 4;
1701
+ const tool = {
1702
+ name: "slow_task",
1703
+ description: "Runs a simulated slow task and streams progress updates.",
1704
+ inputSchema: {
1705
+ type: "object" as const,
1706
+ properties: {},
1707
+ additionalProperties: false,
1708
+ },
1709
+ };
1710
+
1711
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
1712
+ tools: [tool],
1713
+ }));
1714
+
1715
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
1716
+ if (request.params.name !== "slow_task") {
1717
+ throw new Error(`Unknown tool: ${request.params.name}`);
1718
+ }
1719
+
1720
+ const progressToken = request.params._meta?.progressToken;
1721
+ if (progressToken !== undefined) {
1722
+ for (let step = 1; step <= totalSteps; step += 1) {
1723
+ await extra.sendNotification({
1724
+ method: "notifications/progress",
1725
+ params: {
1726
+ progressToken,
1727
+ progress: step,
1728
+ total: totalSteps,
1729
+ message: `Completed step ${step} of ${totalSteps}`,
1730
+ },
1731
+ });
1732
+
1733
+ await new Promise<void>((resolve) => {
1734
+ setTimeout(resolve, 5);
1735
+ });
1736
+ }
1737
+ }
1738
+
1739
+ return {
1740
+ content: [
1741
+ {
1742
+ type: "text" as const,
1743
+ text: "slow_task complete",
1744
+ },
1745
+ ],
1746
+ };
1747
+ });
1748
+
1749
+ return server;
1750
+ }
1751
+
1752
+ export interface MockSlowToolServerOptions {
1753
+ delayMs?: number;
1754
+ pollIntervalMs?: number;
1755
+ }
1756
+
1757
+ export async function createMockSlowToolServer(
1758
+ options: MockSlowToolServerOptions = {}
1759
+ ): Promise<
1760
+ SdkServerConnection & {
1761
+ wasStarted: () => boolean;
1762
+ getStartedRequestIds: () => RequestId[];
1763
+ wasCancelled: () => boolean;
1764
+ getCancelledRequestIds: () => RequestId[];
1765
+ }
1766
+ > {
1767
+ const [{ Server }, { CallToolRequestSchema, ListToolsRequestSchema }] =
1768
+ await Promise.all([
1769
+ import("@modelcontextprotocol/sdk/server/index.js"),
1770
+ import("@modelcontextprotocol/sdk/types.js"),
1771
+ ]);
1772
+
1773
+ const defaultDelayMs = options.delayMs ?? 1_000;
1774
+ const pollIntervalMs = options.pollIntervalMs ?? 10;
1775
+ if (!Number.isFinite(defaultDelayMs) || defaultDelayMs < 0) {
1776
+ throw new Error("createMockSlowToolServer delayMs must be a finite non-negative number");
1777
+ }
1778
+ if (!Number.isFinite(pollIntervalMs) || pollIntervalMs <= 0) {
1779
+ throw new Error("createMockSlowToolServer pollIntervalMs must be a finite positive number");
1780
+ }
1781
+
1782
+ const server = new Server(
1783
+ { name: "mock-slow-tool-server", version: "1.0.0" },
1784
+ { capabilities: { tools: {} } }
1785
+ );
1786
+ const startedRequestIds = new Set<RequestId>();
1787
+ const cancelledRequestIds = new Set<RequestId>();
1788
+ const tool = {
1789
+ name: "slow",
1790
+ description: "Delays the response and supports cancellation.",
1791
+ inputSchema: {
1792
+ type: "object" as const,
1793
+ properties: {
1794
+ delayMs: {
1795
+ type: "number",
1796
+ },
1797
+ },
1798
+ additionalProperties: false,
1799
+ },
1800
+ };
1801
+
1802
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
1803
+ tools: [tool],
1804
+ }));
1805
+
1806
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
1807
+ if (request.params.name !== "slow") {
1808
+ throw new Error(`Unknown tool: ${request.params.name}`);
1809
+ }
1810
+ startedRequestIds.add(extra.requestId);
1811
+
1812
+ const delayArgument = request.params.arguments?.delayMs;
1813
+ const delayMs =
1814
+ delayArgument === undefined
1815
+ ? defaultDelayMs
1816
+ : typeof delayArgument === "number" && Number.isFinite(delayArgument) && delayArgument >= 0
1817
+ ? delayArgument
1818
+ : NaN;
1819
+ if (!Number.isFinite(delayMs)) {
1820
+ throw new Error("slow tool delayMs argument must be a finite non-negative number");
1821
+ }
1822
+
1823
+ const startedAt = Date.now();
1824
+ while (Date.now() - startedAt < delayMs) {
1825
+ if (extra.signal.aborted) {
1826
+ cancelledRequestIds.add(extra.requestId);
1827
+ throw new Error("slow tool cancelled");
1828
+ }
1829
+
1830
+ const elapsedMs = Date.now() - startedAt;
1831
+ const remainingMs = delayMs - elapsedMs;
1832
+ await new Promise<void>((resolve) => {
1833
+ setTimeout(resolve, Math.max(0, Math.min(pollIntervalMs, remainingMs)));
1834
+ });
1835
+ }
1836
+
1837
+ if (extra.signal.aborted) {
1838
+ cancelledRequestIds.add(extra.requestId);
1839
+ throw new Error("slow tool cancelled");
1840
+ }
1841
+
1842
+ return {
1843
+ content: [
1844
+ {
1845
+ type: "text" as const,
1846
+ text: `slow complete after ${delayMs}ms`,
1847
+ },
1848
+ ],
1849
+ };
1850
+ });
1851
+
1852
+ return Object.assign(server, {
1853
+ wasStarted: (): boolean => startedRequestIds.size > 0,
1854
+ getStartedRequestIds: (): RequestId[] => Array.from(startedRequestIds),
1855
+ wasCancelled: (): boolean => cancelledRequestIds.size > 0,
1856
+ getCancelledRequestIds: (): RequestId[] => Array.from(cancelledRequestIds),
1857
+ });
1858
+ }
1859
+
1860
+ export async function createMockErrorServer(): Promise<SdkServerConnection> {
1861
+ const [
1862
+ { Server },
1863
+ { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError: SdkMcpError },
1864
+ ] = await Promise.all([
1865
+ import("@modelcontextprotocol/sdk/server/index.js"),
1866
+ import("@modelcontextprotocol/sdk/types.js"),
1867
+ ]);
1868
+
1869
+ const server = new Server(
1870
+ { name: "mock-error-server", version: "1.0.0" },
1871
+ { capabilities: { tools: {} } }
1872
+ );
1873
+ const tools = [
1874
+ {
1875
+ name: "invalid_params",
1876
+ description: "Returns a JSON-RPC Invalid Params error.",
1877
+ inputSchema: {
1878
+ type: "object" as const,
1879
+ properties: {},
1880
+ additionalProperties: false,
1881
+ },
1882
+ },
1883
+ {
1884
+ name: "is_error",
1885
+ description: "Returns a tools/call result with isError: true.",
1886
+ inputSchema: {
1887
+ type: "object" as const,
1888
+ properties: {},
1889
+ additionalProperties: false,
1890
+ },
1891
+ },
1892
+ {
1893
+ name: "internal_error",
1894
+ description: "Throws an internal server error.",
1895
+ inputSchema: {
1896
+ type: "object" as const,
1897
+ properties: {},
1898
+ additionalProperties: false,
1899
+ },
1900
+ },
1901
+ ];
1902
+
1903
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
1904
+ tools,
1905
+ }));
1906
+
1907
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1908
+ if (request.params.name === "invalid_params") {
1909
+ throw new SdkMcpError(
1910
+ ErrorCode.InvalidParams,
1911
+ "Intentional invalid params error from mock-error-server."
1912
+ );
1913
+ }
1914
+
1915
+ if (request.params.name === "is_error") {
1916
+ return {
1917
+ isError: true,
1918
+ content: [
1919
+ {
1920
+ type: "text" as const,
1921
+ text: "Intentional isError tool failure.",
1922
+ },
1923
+ ],
1924
+ };
1925
+ }
1926
+
1927
+ if (request.params.name === "internal_error") {
1928
+ throw new Error("Intentional internal error from mock-error-server.");
1929
+ }
1930
+
1931
+ throw new Error(`Unknown tool: ${request.params.name}`);
1932
+ });
1933
+
1934
+ return server;
1935
+ }
1936
+
1937
+ export async function createMockSamplingServer(): Promise<SdkServerConnection> {
1938
+ const [{ Server }, { CallToolRequestSchema, ListToolsRequestSchema }] =
1939
+ await Promise.all([
1940
+ import("@modelcontextprotocol/sdk/server/index.js"),
1941
+ import("@modelcontextprotocol/sdk/types.js"),
1942
+ ]);
1943
+
1944
+ const server = new Server(
1945
+ { name: "mock-sampling-server", version: "1.0.0" },
1946
+ { capabilities: { tools: {} } }
1947
+ );
1948
+ const tool = {
1949
+ name: "sample_message",
1950
+ description: "Requests sampling/createMessage from the client and returns the sampled text.",
1951
+ inputSchema: {
1952
+ type: "object" as const,
1953
+ properties: {
1954
+ topic: {
1955
+ type: "string",
1956
+ },
1957
+ },
1958
+ required: ["topic"],
1959
+ additionalProperties: false,
1960
+ },
1961
+ };
1962
+
1963
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
1964
+ tools: [tool],
1965
+ }));
1966
+
1967
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1968
+ if (request.params.name !== "sample_message") {
1969
+ throw new Error(`Unknown tool: ${request.params.name}`);
1970
+ }
1971
+
1972
+ const topic = request.params.arguments?.topic;
1973
+ if (typeof topic !== "string") {
1974
+ throw new Error("sample_message requires a string topic argument");
1975
+ }
1976
+
1977
+ const samplingResult = await server.createMessage({
1978
+ messages: [
1979
+ {
1980
+ role: "user",
1981
+ content: {
1982
+ type: "text",
1983
+ text: `Provide a concise sentence about ${topic}.`,
1984
+ },
1985
+ },
1986
+ ],
1987
+ maxTokens: 64,
1988
+ modelPreferences: {
1989
+ hints: [{ name: "mock-sampling-model" }],
1990
+ speedPriority: 0.2,
1991
+ intelligencePriority: 0.9,
1992
+ },
1993
+ systemPrompt: "Return exactly one concise sentence.",
1994
+ });
1995
+
1996
+ const sampledText =
1997
+ samplingResult.content.type === "text"
1998
+ ? samplingResult.content.text
1999
+ : JSON.stringify(samplingResult.content);
2000
+
2001
+ return {
2002
+ content: [
2003
+ {
2004
+ type: "text" as const,
2005
+ text: `Sampled response: ${sampledText}`,
2006
+ },
2007
+ ],
2008
+ };
2009
+ });
2010
+
2011
+ return server;
2012
+ }
2013
+
2014
+ export async function createMockRootsServer(): Promise<SdkServerConnection> {
2015
+ const [
2016
+ { Server },
2017
+ {
2018
+ CallToolRequestSchema,
2019
+ ListToolsRequestSchema,
2020
+ RootsListChangedNotificationSchema,
2021
+ },
2022
+ ] =
2023
+ await Promise.all([
2024
+ import("@modelcontextprotocol/sdk/server/index.js"),
2025
+ import("@modelcontextprotocol/sdk/types.js"),
2026
+ ]);
2027
+
2028
+ const server = new Server(
2029
+ { name: "mock-roots-server", version: "1.0.0" },
2030
+ { capabilities: { tools: {} } }
2031
+ );
2032
+ const tool = {
2033
+ name: "roots_summary",
2034
+ description: "Requests roots/list from the client and returns a summary of roots.",
2035
+ inputSchema: {
2036
+ type: "object" as const,
2037
+ properties: {},
2038
+ additionalProperties: false,
2039
+ },
2040
+ };
2041
+
2042
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
2043
+ tools: [tool],
2044
+ }));
2045
+
2046
+ server.setNotificationHandler(RootsListChangedNotificationSchema, async () => {
2047
+ await server.listRoots();
2048
+ });
2049
+
2050
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
2051
+ if (request.params.name !== "roots_summary") {
2052
+ throw new Error(`Unknown tool: ${request.params.name}`);
2053
+ }
2054
+
2055
+ const rootsResult = await server.listRoots();
2056
+ const rootSummary = rootsResult.roots
2057
+ .map((root) => (root.name === undefined ? root.uri : `${root.name} (${root.uri})`))
2058
+ .join(", ");
2059
+
2060
+ return {
2061
+ content: [
2062
+ {
2063
+ type: "text" as const,
2064
+ text: rootSummary.length === 0 ? "Roots: none" : `Roots: ${rootSummary}`,
2065
+ },
2066
+ ],
2067
+ };
2068
+ });
2069
+
2070
+ return server;
2071
+ }
2072
+
2073
+ export async function createMockLoggingServer(): Promise<SdkServerConnection> {
2074
+ const [{ Server }, { CallToolRequestSchema, ListToolsRequestSchema }] =
2075
+ await Promise.all([
2076
+ import("@modelcontextprotocol/sdk/server/index.js"),
2077
+ import("@modelcontextprotocol/sdk/types.js"),
2078
+ ]);
2079
+
2080
+ const server = new Server(
2081
+ { name: "mock-logging-server", version: "1.0.0" },
2082
+ { capabilities: { tools: {}, logging: {} } }
2083
+ );
2084
+ const tool = {
2085
+ name: "emit_logs",
2086
+ description: "Emits mock log messages at multiple levels.",
2087
+ inputSchema: {
2088
+ type: "object" as const,
2089
+ properties: {},
2090
+ additionalProperties: false,
2091
+ },
2092
+ };
2093
+
2094
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
2095
+ tools: [tool],
2096
+ }));
2097
+
2098
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
2099
+ if (request.params.name !== "emit_logs") {
2100
+ throw new Error(`Unknown tool: ${request.params.name}`);
2101
+ }
2102
+
2103
+ await server.sendLoggingMessage({
2104
+ level: "debug",
2105
+ logger: "mock-logging-server",
2106
+ data: { message: "Debug message" },
2107
+ });
2108
+ await server.sendLoggingMessage({
2109
+ level: "info",
2110
+ logger: "mock-logging-server",
2111
+ data: { message: "Info message" },
2112
+ });
2113
+ await server.sendLoggingMessage({
2114
+ level: "error",
2115
+ logger: "mock-logging-server",
2116
+ data: { message: "Error message" },
2117
+ });
2118
+
2119
+ return {
2120
+ content: [
2121
+ {
2122
+ type: "text" as const,
2123
+ text: "Emitted log messages.",
2124
+ },
2125
+ ],
2126
+ };
2127
+ });
2128
+
2129
+ return server;
2130
+ }
2131
+
2132
+ export async function createMockFullFeaturedServer(): Promise<SdkServerConnection> {
2133
+ const [
2134
+ { Server },
2135
+ {
2136
+ CallToolRequestSchema,
2137
+ CompleteRequestSchema,
2138
+ GetPromptRequestSchema,
2139
+ ListPromptsRequestSchema,
2140
+ ListResourcesRequestSchema,
2141
+ ListToolsRequestSchema,
2142
+ ReadResourceRequestSchema,
2143
+ },
2144
+ ] = await Promise.all([
2145
+ import("@modelcontextprotocol/sdk/server/index.js"),
2146
+ import("@modelcontextprotocol/sdk/types.js"),
2147
+ ]);
2148
+
2149
+ const server = new Server(
2150
+ { name: "mock-full-featured-server", version: "1.0.0" },
2151
+ {
2152
+ capabilities: {
2153
+ tools: {},
2154
+ resources: {},
2155
+ prompts: {},
2156
+ logging: {},
2157
+ completions: {},
2158
+ },
2159
+ }
2160
+ );
2161
+ const tool = {
2162
+ name: "full_featured_ping",
2163
+ description: "Returns a text response and emits an info log.",
2164
+ inputSchema: {
2165
+ type: "object" as const,
2166
+ properties: {},
2167
+ additionalProperties: false,
2168
+ },
2169
+ };
2170
+ const resources = [
2171
+ {
2172
+ uri: "file:///full-featured.txt",
2173
+ name: "full-featured.txt",
2174
+ mimeType: "text/plain",
2175
+ },
2176
+ ];
2177
+ const prompts = [
2178
+ {
2179
+ name: "full_featured_prompt",
2180
+ description: "Returns a short prompt message for a topic.",
2181
+ arguments: [
2182
+ {
2183
+ name: "topic",
2184
+ description: "Topic to include in the prompt output.",
2185
+ required: false,
2186
+ },
2187
+ ],
2188
+ },
2189
+ ];
2190
+ const completionValues = ["alpha", "beta", "gamma"];
2191
+
2192
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
2193
+ tools: [tool],
2194
+ }));
2195
+
2196
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
2197
+ if (request.params.name !== "full_featured_ping") {
2198
+ throw new Error(`Unknown tool: ${request.params.name}`);
2199
+ }
2200
+
2201
+ await server.sendLoggingMessage({
2202
+ level: "info",
2203
+ logger: "mock-full-featured-server",
2204
+ data: {
2205
+ message: "full_featured_ping called",
2206
+ },
2207
+ });
2208
+
2209
+ return {
2210
+ content: [
2211
+ {
2212
+ type: "text" as const,
2213
+ text: "full_featured_ping ok",
2214
+ },
2215
+ ],
2216
+ };
2217
+ });
2218
+
2219
+ server.setRequestHandler(ListResourcesRequestSchema, async () => ({
2220
+ resources,
2221
+ }));
2222
+
2223
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
2224
+ if (request.params.uri !== "file:///full-featured.txt") {
2225
+ throw new Error(`Unknown resource: ${request.params.uri}`);
2226
+ }
2227
+
2228
+ return {
2229
+ contents: [
2230
+ {
2231
+ uri: "file:///full-featured.txt",
2232
+ mimeType: "text/plain",
2233
+ text: "Mock full-featured resource",
2234
+ },
2235
+ ],
2236
+ };
2237
+ });
2238
+
2239
+ server.setRequestHandler(ListPromptsRequestSchema, async () => ({
2240
+ prompts,
2241
+ }));
2242
+
2243
+ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
2244
+ if (request.params.name !== "full_featured_prompt") {
2245
+ throw new Error(`Unknown prompt: ${request.params.name}`);
2246
+ }
2247
+
2248
+ const topic = request.params.arguments?.topic;
2249
+ const topicText = typeof topic === "string" && topic.length > 0 ? topic : "general";
2250
+
2251
+ return {
2252
+ description: "Mock prompt from full-featured server.",
2253
+ messages: [
2254
+ {
2255
+ role: "user" as const,
2256
+ content: {
2257
+ type: "text" as const,
2258
+ text: `Provide a short summary for ${topicText}.`,
2259
+ },
2260
+ },
2261
+ ],
2262
+ };
2263
+ });
2264
+
2265
+ server.setRequestHandler(CompleteRequestSchema, async (request) => {
2266
+ if (
2267
+ request.params.ref.type !== "ref/prompt" ||
2268
+ request.params.ref.name !== "full_featured_prompt" ||
2269
+ request.params.argument.name !== "topic"
2270
+ ) {
2271
+ return {
2272
+ completion: {
2273
+ values: [],
2274
+ },
2275
+ };
2276
+ }
2277
+
2278
+ const partialValue = request.params.argument.value.toLowerCase();
2279
+ const values = completionValues.filter((value) => value.startsWith(partialValue));
2280
+
2281
+ return {
2282
+ completion: {
2283
+ values,
2284
+ },
2285
+ };
2286
+ });
2287
+
2288
+ return server;
2289
+ }
2290
+
2291
+ export async function createTestPair<TClient extends McpClientConnection>(
2292
+ server: TinyStdioMcpServer,
2293
+ createClient: () => TClient
2294
+ ): Promise<SdkTestPair<TClient>> {
2295
+ const { clientTransport, serverTransport } = createInMemoryTransportPair();
2296
+ const serverPromise = server.connect(serverTransport);
2297
+ const client = createClient();
2298
+
2299
+ try {
2300
+ await client.connect(clientTransport);
2301
+ } catch (error) {
2302
+ clientTransport.dispose(new Error("tiny-stdio-mcp-server test pair setup failed"));
2303
+ await serverPromise;
2304
+ throw error;
2305
+ }
2306
+
2307
+ const cleanup = async (): Promise<void> => {
2308
+ await client.close();
2309
+ clientTransport.dispose(new Error("tiny-stdio-mcp-server test pair cleanup"));
2310
+ await serverPromise;
2311
+ };
2312
+
2313
+ return { client, cleanup };
2314
+ }
2315
+
2316
+ export type StdioSpawn = (
2317
+ command: string,
2318
+ args: ReadonlyArray<string>,
2319
+ options: SpawnOptions
2320
+ ) => ChildProcessWithoutNullStreams;
2321
+
2322
+ export interface StdioTransportOptions {
2323
+ command: string;
2324
+ args?: string[];
2325
+ cwd?: string;
2326
+ env?: NodeJS.ProcessEnv;
2327
+ spawn?: StdioSpawn;
2328
+ }
2329
+
2330
+ export type HttpTransportFetch = (
2331
+ input: string | URL,
2332
+ init?: RequestInit
2333
+ ) => Promise<Response>;
2334
+
2335
+ export interface HttpTransportOptions {
2336
+ url: string;
2337
+ headers?: HeadersInit;
2338
+ fetch?: HttpTransportFetch;
2339
+ oauth?: OAuthClientProviderOptions;
2340
+ oauthDiscoveryCache?: OAuthDiscoveryCache;
2341
+ }
2342
+
2343
+ function defaultStdioSpawn(
2344
+ command: string,
2345
+ args: ReadonlyArray<string>,
2346
+ options: SpawnOptions
2347
+ ): ChildProcessWithoutNullStreams {
2348
+ return spawn(command, args, options) as ChildProcessWithoutNullStreams;
2349
+ }
2350
+
2351
+ function defaultHttpTransportFetch(input: string | URL, init?: RequestInit): Promise<Response> {
2352
+ return fetch(input, init);
2353
+ }
2354
+
2355
+ export class StdioTransport implements McpTransport {
2356
+ readonly readable: Readable;
2357
+ readonly writable: Writable;
2358
+ readonly closed: Promise<McpTransportClosedEvent>;
2359
+ private readonly child: ChildProcessWithoutNullStreams;
2360
+ private disposed = false;
2361
+ private stderrOutput = "";
2362
+ private static readonly STDERR_MAX_LENGTH = 65_536;
2363
+
2364
+ constructor({
2365
+ command,
2366
+ args = [],
2367
+ cwd,
2368
+ env,
2369
+ spawn: spawnProcess = defaultStdioSpawn,
2370
+ }: StdioTransportOptions) {
2371
+ this.child = spawnProcess(command, args, {
2372
+ cwd,
2373
+ env,
2374
+ stdio: ["pipe", "pipe", "pipe"],
2375
+ });
2376
+
2377
+ const child = this.child;
2378
+
2379
+ this.readable = child.stdout;
2380
+ this.writable = child.stdin;
2381
+ const stderrDecoder = new TextDecoder();
2382
+ child.stderr.on("data", (chunk: unknown) => {
2383
+ const decoded =
2384
+ chunk instanceof Uint8Array
2385
+ ? stderrDecoder.decode(chunk, { stream: true })
2386
+ : `${stderrDecoder.decode()}${String(chunk)}`;
2387
+ this.appendStderrOutput(decoded);
2388
+ });
2389
+ child.stderr.once("end", () => {
2390
+ this.appendStderrOutput(stderrDecoder.decode());
2391
+ });
2392
+ this.closed = new Promise((resolve) => {
2393
+ let settled = false;
2394
+ const resolveClosed = (event: McpTransportClosedEvent) => {
2395
+ if (settled) {
2396
+ return;
2397
+ }
2398
+
2399
+ settled = true;
2400
+ resolve(event);
2401
+ };
2402
+
2403
+ child.once("exit", (code, signal) => {
2404
+ const closedEvent: McpTransportClosedEvent = {
2405
+ reason: new Error("Stdio transport process exited"),
2406
+ };
2407
+
2408
+ if (code !== null) {
2409
+ closedEvent.code = code;
2410
+ }
2411
+
2412
+ if (signal !== null) {
2413
+ closedEvent.signal = signal;
2414
+ }
2415
+
2416
+ resolveClosed(closedEvent);
2417
+ });
2418
+
2419
+ child.once("error", (error) => {
2420
+ const closedEvent: McpTransportClosedEvent = {
2421
+ reason: error instanceof Error ? error : new Error(String(error)),
2422
+ };
2423
+
2424
+ if (child.exitCode !== null) {
2425
+ closedEvent.code = child.exitCode;
2426
+ }
2427
+
2428
+ if (child.signalCode !== null) {
2429
+ closedEvent.signal = child.signalCode;
2430
+ }
2431
+
2432
+ resolveClosed(closedEvent);
2433
+ });
2434
+ });
2435
+ }
2436
+
2437
+ getStderrOutput(): string {
2438
+ return this.stderrOutput;
2439
+ }
2440
+
2441
+ private appendStderrOutput(chunk: string): void {
2442
+ if (chunk.length === 0) {
2443
+ return;
2444
+ }
2445
+
2446
+ this.stderrOutput += chunk;
2447
+ if (this.stderrOutput.length > StdioTransport.STDERR_MAX_LENGTH) {
2448
+ this.stderrOutput = this.stderrOutput.slice(-StdioTransport.STDERR_MAX_LENGTH);
2449
+ }
2450
+ }
2451
+
2452
+ dispose(reason = new Error("Stdio transport disposed")): void {
2453
+ void reason;
2454
+
2455
+ if (this.disposed) {
2456
+ return;
2457
+ }
2458
+
2459
+ this.disposed = true;
2460
+
2461
+ if (!this.child.stdin.destroyed && !this.child.stdin.writableEnded) {
2462
+ this.child.stdin.end();
2463
+ }
2464
+
2465
+ if (this.child.exitCode === null && this.child.signalCode === null && !this.child.killed) {
2466
+ this.child.kill("SIGTERM");
2467
+ }
2468
+ }
2469
+ }
2470
+
2471
+ export class HttpTransport implements McpTransport {
2472
+ readonly readable: Readable;
2473
+ readonly writable: Writable;
2474
+ readonly closed: Promise<McpTransportClosedEvent>;
2475
+ private readonly url: string;
2476
+ private readonly headers: HeadersInit;
2477
+ private readonly fetchImpl: HttpTransportFetch;
2478
+ private readonly readStream = new PassThrough();
2479
+ private readonly writeStream = new PassThrough();
2480
+ private resolveClosed:
2481
+ | ((closedEvent: McpTransportClosedEvent) => void)
2482
+ | undefined;
2483
+ private sessionId: string | undefined;
2484
+ private lastEventId: string | undefined;
2485
+ private getSseStreamStarted = false;
2486
+ private disposed = false;
2487
+ private readonly oauthProvider: OAuthClientProvider | undefined;
2488
+ private readonly oauthMetadataDiscovery: OAuthMetadataDiscovery | undefined;
2489
+ private readonly inFlightFetchAbortControllers = new Set<AbortController>();
2490
+ private readonly openSseReaders = new Set<ReadableStreamDefaultReader<Uint8Array>>();
2491
+
2492
+ constructor({
2493
+ url,
2494
+ headers = {},
2495
+ fetch: fetchImpl = defaultHttpTransportFetch,
2496
+ oauth,
2497
+ oauthDiscoveryCache,
2498
+ }: HttpTransportOptions) {
2499
+ this.url = url;
2500
+ this.headers = headers;
2501
+ this.fetchImpl = fetchImpl;
2502
+ this.oauthProvider = oauth === undefined
2503
+ ? undefined
2504
+ : createOAuthClientProvider(oauth);
2505
+ this.oauthMetadataDiscovery = oauth === undefined
2506
+ ? undefined
2507
+ : new OAuthMetadataDiscovery({
2508
+ fetch: (input, init) => this.fetchWithAbort(input, init ?? {}),
2509
+ cache: oauthDiscoveryCache,
2510
+ });
2511
+ this.readable = this.readStream;
2512
+ this.writable = this.writeStream;
2513
+ this.closed = new Promise((resolve) => {
2514
+ this.resolveClosed = resolve;
2515
+ });
2516
+
2517
+ this.readStream.once("error", (error) => {
2518
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
2519
+ });
2520
+ this.writeStream.once("error", (error) => {
2521
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
2522
+ });
2523
+
2524
+ this.consumeWrittenLines().catch((error) => {
2525
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
2526
+ });
2527
+ }
2528
+
2529
+ dispose(reason = new Error("HTTP transport disposed")): void {
2530
+ if (this.disposed) {
2531
+ return;
2532
+ }
2533
+
2534
+ this.disposed = true;
2535
+ this.abortInFlightFetches();
2536
+ this.cancelOpenSseReaders();
2537
+
2538
+ if (!this.writeStream.destroyed && !this.writeStream.writableEnded) {
2539
+ this.writeStream.end();
2540
+ }
2541
+
2542
+ if (!this.readStream.destroyed && !this.readStream.writableEnded) {
2543
+ this.readStream.end();
2544
+ }
2545
+
2546
+ void this.closeWithSessionTermination(reason);
2547
+ }
2548
+
2549
+ private async closeWithSessionTermination(reason: Error): Promise<void> {
2550
+ let closeReason = reason;
2551
+ if (this.sessionId !== undefined) {
2552
+ const sessionId = this.sessionId;
2553
+ this.sessionId = undefined;
2554
+ try {
2555
+ await this.sendSessionTerminationRequest(sessionId);
2556
+ } catch (error) {
2557
+ closeReason = error instanceof Error ? error : new Error(String(error));
2558
+ }
2559
+ }
2560
+
2561
+ const resolveClosed = this.resolveClosed;
2562
+ this.resolveClosed = undefined;
2563
+ resolveClosed?.({ reason: closeReason });
2564
+ }
2565
+
2566
+ private abortInFlightFetches(): void {
2567
+ for (const abortController of this.inFlightFetchAbortControllers) {
2568
+ abortController.abort();
2569
+ }
2570
+
2571
+ this.inFlightFetchAbortControllers.clear();
2572
+ }
2573
+
2574
+ private cancelOpenSseReaders(): void {
2575
+ for (const reader of this.openSseReaders) {
2576
+ void reader.cancel().catch(() => undefined);
2577
+ }
2578
+
2579
+ this.openSseReaders.clear();
2580
+ }
2581
+
2582
+ private async fetchWithAbort(input: string | URL, init: RequestInit): Promise<Response> {
2583
+ const abortController = new AbortController();
2584
+ this.inFlightFetchAbortControllers.add(abortController);
2585
+
2586
+ try {
2587
+ return await this.fetchImpl(input, {
2588
+ ...init,
2589
+ signal: abortController.signal,
2590
+ });
2591
+ } finally {
2592
+ this.inFlightFetchAbortControllers.delete(abortController);
2593
+ }
2594
+ }
2595
+
2596
+ private async consumeWrittenLines(): Promise<void> {
2597
+ for await (const line of readLines(this.writeStream)) {
2598
+ if (this.disposed || line.length === 0) {
2599
+ continue;
2600
+ }
2601
+
2602
+ const hasSessionId = this.sessionId !== undefined;
2603
+ const response = await this.fetchWithOAuthRetry({
2604
+ method: "POST",
2605
+ createHeaders: () => this.createPostHeaders(),
2606
+ body: line,
2607
+ });
2608
+
2609
+ if (hasSessionId && response.status === 404) {
2610
+ this.sessionId = undefined;
2611
+ this.dispose(new Error("HTTP transport session expired (404 response)"));
2612
+ return;
2613
+ }
2614
+
2615
+ await this.throwForPostHttpError(response);
2616
+ this.captureSessionId(response);
2617
+ this.maybeOpenGetSseStream();
2618
+ void this.forwardResponseMessages(response).catch((error) => {
2619
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
2620
+ });
2621
+ }
2622
+ }
2623
+
2624
+ private async createPostHeaders(): Promise<Headers> {
2625
+ const headers = new Headers(this.headers);
2626
+ headers.set("Accept", "application/json, text/event-stream");
2627
+ headers.set("Content-Type", "application/json");
2628
+ if (this.sessionId !== undefined) {
2629
+ headers.set("Mcp-Session-Id", this.sessionId);
2630
+ headers.set("MCP-Protocol-Version", MCP_PROTOCOL_VERSION);
2631
+ }
2632
+ return this.authorizeRequestHeaders(headers);
2633
+ }
2634
+
2635
+ private async createGetHeaders(): Promise<Headers> {
2636
+ const headers = new Headers(this.headers);
2637
+ headers.set("Accept", "text/event-stream");
2638
+ if (this.sessionId !== undefined) {
2639
+ headers.set("Mcp-Session-Id", this.sessionId);
2640
+ headers.set("MCP-Protocol-Version", MCP_PROTOCOL_VERSION);
2641
+ }
2642
+ if (this.lastEventId !== undefined) {
2643
+ headers.set("Last-Event-ID", this.lastEventId);
2644
+ }
2645
+ return this.authorizeRequestHeaders(headers);
2646
+ }
2647
+
2648
+ private async createDeleteHeaders(sessionId: string): Promise<Headers> {
2649
+ const headers = new Headers(this.headers);
2650
+ headers.set("Mcp-Session-Id", sessionId);
2651
+ headers.set("MCP-Protocol-Version", MCP_PROTOCOL_VERSION);
2652
+ return this.authorizeRequestHeaders(headers);
2653
+ }
2654
+
2655
+ private async authorizeRequestHeaders(headers: Headers): Promise<Headers> {
2656
+ await this.oauthProvider?.authorizeRequest?.({
2657
+ requestUrl: new URL(this.url),
2658
+ headers,
2659
+ fetch: this.fetchImpl,
2660
+ });
2661
+ return headers;
2662
+ }
2663
+
2664
+ private captureSessionId(response: Response): void {
2665
+ const sessionId = response.headers.get("Mcp-Session-Id");
2666
+ if (sessionId === null || sessionId.length === 0) {
2667
+ return;
2668
+ }
2669
+
2670
+ if (this.sessionId !== undefined && this.sessionId !== sessionId) {
2671
+ throw new Error("HTTP transport response changed active session ID");
2672
+ }
2673
+
2674
+ this.sessionId = sessionId;
2675
+ }
2676
+
2677
+ private maybeOpenGetSseStream(): void {
2678
+ if (this.disposed || this.sessionId === undefined || this.getSseStreamStarted) {
2679
+ return;
2680
+ }
2681
+
2682
+ this.getSseStreamStarted = true;
2683
+ this.consumeGetSseStream().catch((error) => {
2684
+ if (error instanceof HttpTransportGetSseNotSupportedError || this.disposed) {
2685
+ return;
2686
+ }
2687
+
2688
+ this.dispose(error instanceof Error ? error : new Error(String(error)));
2689
+ });
2690
+ }
2691
+
2692
+ private async sendSessionTerminationRequest(sessionId: string): Promise<void> {
2693
+ const response = await this.fetchImpl(this.url, {
2694
+ method: "DELETE",
2695
+ headers: await this.createDeleteHeaders(sessionId),
2696
+ });
2697
+
2698
+ if (response.status === 405 || response.ok) {
2699
+ return;
2700
+ }
2701
+
2702
+ const responseBody = (await response.text()).trim();
2703
+ const statusDescriptor = `${response.status} ${response.statusText}`.trim();
2704
+ const message = responseBody.length === 0
2705
+ ? `HTTP transport DELETE failed (${statusDescriptor})`
2706
+ : `HTTP transport DELETE failed (${statusDescriptor}): ${responseBody}`;
2707
+ throw new Error(message);
2708
+ }
2709
+
2710
+ private async consumeGetSseStream(): Promise<void> {
2711
+ const response = await this.fetchWithOAuthRetry({
2712
+ method: "GET",
2713
+ createHeaders: () => this.createGetHeaders(),
2714
+ });
2715
+
2716
+ if (response.status === 405) {
2717
+ throw new HttpTransportGetSseNotSupportedError();
2718
+ }
2719
+
2720
+ if (response.status === 404) {
2721
+ this.sessionId = undefined;
2722
+ throw new Error("HTTP transport session expired (GET 404 response)");
2723
+ }
2724
+
2725
+ if (!response.ok) {
2726
+ const responseBody = (await response.text()).trim();
2727
+ const statusDescriptor = `${response.status} ${response.statusText}`.trim();
2728
+ const message = responseBody.length === 0
2729
+ ? `HTTP transport GET failed (${statusDescriptor})`
2730
+ : `HTTP transport GET failed (${statusDescriptor}): ${responseBody}`;
2731
+ throw new Error(message);
2732
+ }
2733
+
2734
+ const contentType = response.headers.get("Content-Type");
2735
+ if (contentType === null) {
2736
+ return;
2737
+ }
2738
+
2739
+ if (contentType.toLowerCase().includes("text/event-stream")) {
2740
+ await this.forwardSseResponseMessages(response);
2741
+ this.getSseStreamStarted = false;
2742
+ if (!this.disposed && this.sessionId !== undefined && this.lastEventId !== undefined) {
2743
+ this.maybeOpenGetSseStream();
2744
+ }
2745
+ return;
2746
+ }
2747
+
2748
+ return;
2749
+ }
2750
+
2751
+ private async throwForPostHttpError(response: Response): Promise<void> {
2752
+ if (response.status < 400) {
2753
+ return;
2754
+ }
2755
+
2756
+ const responseBody = (await response.text()).trim();
2757
+ const statusDescriptor = `${response.status} ${response.statusText}`.trim();
2758
+ const message = responseBody.length === 0
2759
+ ? `HTTP transport POST failed (${statusDescriptor})`
2760
+ : `HTTP transport POST failed (${statusDescriptor}): ${responseBody}`;
2761
+ throw new Error(message);
2762
+ }
2763
+
2764
+ private async maybeHandleUnauthorizedResponse(response: Response): Promise<boolean> {
2765
+ if (response.status !== 401 || this.oauthProvider === undefined) {
2766
+ return false;
2767
+ }
2768
+
2769
+ const discoveryClient = this.oauthMetadataDiscovery;
2770
+ if (discoveryClient === undefined) {
2771
+ return false;
2772
+ }
2773
+
2774
+ const challenge = parseBearerWwwAuthenticateHeader(response.headers.get("WWW-Authenticate"));
2775
+ const resourceMetadataUrl = challenge?.params.resource_metadata;
2776
+ const discovery = await discoveryClient.discover(this.url, {
2777
+ resourceMetadataUrl,
2778
+ });
2779
+ const result = await this.oauthProvider.handleUnauthorized({
2780
+ requestUrl: new URL(this.url),
2781
+ response: response.clone(),
2782
+ challenge,
2783
+ discovery,
2784
+ fetch: this.fetchImpl,
2785
+ });
2786
+
2787
+ if (result.action === "retry") {
2788
+ return true;
2789
+ }
2790
+
2791
+ if (result.error !== undefined) {
2792
+ throw result.error;
2793
+ }
2794
+
2795
+ return false;
2796
+ }
2797
+
2798
+ private async forwardResponseMessages(response: Response): Promise<void> {
2799
+ if (response.status === 202) {
2800
+ return;
2801
+ }
2802
+
2803
+ const contentType = response.headers.get("Content-Type");
2804
+ if (contentType === null) {
2805
+ return;
2806
+ }
2807
+
2808
+ const normalizedContentType = contentType.toLowerCase();
2809
+ if (normalizedContentType.includes("text/event-stream")) {
2810
+ await this.forwardSseResponseMessages(response);
2811
+ return;
2812
+ }
2813
+
2814
+ if (normalizedContentType.includes("application/json")) {
2815
+ await this.forwardJsonResponseMessage(response);
2816
+ return;
2817
+ }
2818
+
2819
+ throw new Error("HTTP transport POST returned an unsupported response content type");
2820
+ }
2821
+
2822
+ private async forwardSseResponseMessages(response: Response): Promise<void> {
2823
+ if (response.body === null) {
2824
+ return;
2825
+ }
2826
+
2827
+ const parser = new SseParser();
2828
+ const decoder = new TextDecoder();
2829
+ const reader = response.body.getReader();
2830
+ this.openSseReaders.add(reader);
2831
+
2832
+ try {
2833
+ while (true) {
2834
+ const { done, value } = await reader.read();
2835
+ if (done) {
2836
+ break;
2837
+ }
2838
+
2839
+ if (value === undefined) {
2840
+ continue;
2841
+ }
2842
+
2843
+ const messages = parser.push(decoder.decode(value, { stream: true }));
2844
+ this.writeSseMessages(messages);
2845
+ this.lastEventId = parser.lastEventId;
2846
+ }
2847
+
2848
+ const trailingChunk = decoder.decode();
2849
+ if (trailingChunk.length > 0) {
2850
+ this.writeSseMessages(parser.push(trailingChunk));
2851
+ this.lastEventId = parser.lastEventId;
2852
+ }
2853
+
2854
+ this.writeSseMessages(parser.flush());
2855
+ this.lastEventId = parser.lastEventId;
2856
+ } finally {
2857
+ this.openSseReaders.delete(reader);
2858
+ reader.releaseLock();
2859
+ }
2860
+ }
2861
+
2862
+ private async forwardJsonResponseMessage(response: Response): Promise<void> {
2863
+ const payload = await response.text();
2864
+ if (payload.length === 0) {
2865
+ return;
2866
+ }
2867
+
2868
+ const parsedPayload = JSON.parse(payload) as unknown;
2869
+ this.writeReadableLine(JSON.stringify(parsedPayload));
2870
+ }
2871
+
2872
+ private writeSseMessages(messages: ParsedSseMessage[]): void {
2873
+ for (const message of messages) {
2874
+ this.writeReadableLine(message.data);
2875
+ }
2876
+ }
2877
+
2878
+ private writeReadableLine(line: string): void {
2879
+ if (this.disposed || this.readStream.destroyed || this.readStream.writableEnded) {
2880
+ return;
2881
+ }
2882
+
2883
+ this.readStream.write(`${line}\n`);
2884
+ }
2885
+
2886
+ private async fetchWithOAuthRetry(input: {
2887
+ method: "GET" | "POST";
2888
+ createHeaders: () => Promise<Headers>;
2889
+ body?: BodyInit;
2890
+ }): Promise<Response> {
2891
+ const request = async (): Promise<Response> =>
2892
+ this.fetchWithAbort(this.url, {
2893
+ method: input.method,
2894
+ headers: await input.createHeaders(),
2895
+ body: input.body,
2896
+ });
2897
+
2898
+ let response = await request();
2899
+ if (await this.maybeHandleUnauthorizedResponse(response)) {
2900
+ response = await request();
2901
+ }
2902
+
2903
+ const oauthError = this.oauthProvider === undefined
2904
+ ? null
2905
+ : this.readOAuthChallengeError(response);
2906
+ if (oauthError !== null) {
2907
+ throw oauthError;
2908
+ }
2909
+
2910
+ return response;
2911
+ }
2912
+
2913
+ private readOAuthChallengeError(response: Response): OAuthError | null {
2914
+ if (response.status !== 401 && response.status !== 403) {
2915
+ return null;
2916
+ }
2917
+
2918
+ const challenge = parseBearerWwwAuthenticateHeader(response.headers.get("WWW-Authenticate"));
2919
+ const error = challenge?.params.error;
2920
+ if (error === undefined || error.length === 0) {
2921
+ return null;
2922
+ }
2923
+
2924
+ return new OAuthError(
2925
+ {
2926
+ error,
2927
+ error_description: challenge?.params.error_description,
2928
+ error_uri: challenge?.params.error_uri,
2929
+ },
2930
+ response.status
2931
+ );
2932
+ }
2933
+ }
2934
+
2935
+ class HttpTransportGetSseNotSupportedError extends Error {
2936
+ constructor() {
2937
+ super("HTTP transport server does not support GET SSE streams");
2938
+ }
2939
+ }
2940
+
2941
+ export interface JsonRpcRequest {
2942
+ jsonrpc: "2.0";
2943
+ id: RequestId;
2944
+ method: string;
2945
+ params?: unknown;
2946
+ }
2947
+
2948
+ export interface JsonRpcNotification {
2949
+ jsonrpc: "2.0";
2950
+ method: string;
2951
+ params?: unknown;
2952
+ }
2953
+
2954
+ export interface JsonRpcErrorObject {
2955
+ code: number;
2956
+ message: string;
2957
+ data?: unknown;
2958
+ }
2959
+
2960
+ export class McpError extends Error {
2961
+ readonly code: number;
2962
+ declare readonly data?: unknown;
2963
+
2964
+ constructor(code: number, message: string, data?: unknown) {
2965
+ super(message);
2966
+ this.name = "McpError";
2967
+ this.code = code;
2968
+ if (data !== undefined) {
2969
+ this.data = data;
2970
+ }
2971
+ }
2972
+ }
2973
+
2974
+ export interface JsonRpcSuccessResponse {
2975
+ jsonrpc: "2.0";
2976
+ id: RequestId;
2977
+ result: unknown;
2978
+ }
2979
+
2980
+ export interface JsonRpcErrorResponse {
2981
+ jsonrpc: "2.0";
2982
+ id: RequestId;
2983
+ error: JsonRpcErrorObject;
2984
+ }
2985
+
2986
+ export type JsonRpcResponse = JsonRpcSuccessResponse | JsonRpcErrorResponse;
2987
+ export type JsonRpcMessage = JsonRpcRequest | JsonRpcNotification | JsonRpcResponse;
2988
+
2989
+ export type ParsedJsonRpcMessage =
2990
+ | {
2991
+ type: "request";
2992
+ message: JsonRpcRequest;
2993
+ }
2994
+ | {
2995
+ type: "notification";
2996
+ message: JsonRpcNotification;
2997
+ }
2998
+ | {
2999
+ type: "response";
3000
+ message: JsonRpcResponse;
3001
+ }
3002
+ | {
3003
+ type: "invalid";
3004
+ id: RequestId | null;
3005
+ error: McpError;
3006
+ };
3007
+
3008
+ export function serializeJsonRpcMessage(message: JsonRpcMessage): string {
3009
+ return `${JSON.stringify(message)}\n`;
3010
+ }
3011
+
3012
+ function normalizeLine(line: string): string {
3013
+ return line.endsWith("\r") ? line.slice(0, -1) : line;
3014
+ }
3015
+
3016
+ export async function* readLines(stream: Readable): AsyncGenerator<string> {
3017
+ let buffer = "";
3018
+ const decoder = new TextDecoder();
3019
+
3020
+ for await (const chunk of stream as AsyncIterable<unknown>) {
3021
+ buffer +=
3022
+ chunk instanceof Uint8Array
3023
+ ? decoder.decode(chunk, { stream: true })
3024
+ : decoder.decode() + String(chunk);
3025
+
3026
+ while (true) {
3027
+ const newlineIndex = buffer.indexOf("\n");
3028
+ if (newlineIndex === -1) {
3029
+ break;
3030
+ }
3031
+
3032
+ const line = buffer.slice(0, newlineIndex);
3033
+ buffer = buffer.slice(newlineIndex + 1);
3034
+ yield normalizeLine(line);
3035
+ }
3036
+ }
3037
+
3038
+ buffer += decoder.decode();
3039
+
3040
+ if (buffer.length > 0) {
3041
+ yield normalizeLine(buffer);
3042
+ }
3043
+ }
3044
+
3045
+ export interface ParsedSseMessage {
3046
+ data: string;
3047
+ id?: string;
3048
+ }
3049
+
3050
+ export class SseParser {
3051
+ private buffer = "";
3052
+ private eventType: string | undefined;
3053
+ private dataLines: string[] = [];
3054
+ private eventId = "";
3055
+ private hasEventId = false;
3056
+ private _lastEventId: string | undefined;
3057
+
3058
+ get lastEventId(): string | undefined {
3059
+ return this._lastEventId;
3060
+ }
3061
+
3062
+ push(chunk: string): ParsedSseMessage[] {
3063
+ if (chunk.length === 0) {
3064
+ return [];
3065
+ }
3066
+
3067
+ this.buffer += chunk;
3068
+ const messages: ParsedSseMessage[] = [];
3069
+
3070
+ while (true) {
3071
+ const newlineIndex = this.buffer.indexOf("\n");
3072
+ if (newlineIndex === -1) {
3073
+ break;
3074
+ }
3075
+
3076
+ const line = normalizeLine(this.buffer.slice(0, newlineIndex));
3077
+ this.buffer = this.buffer.slice(newlineIndex + 1);
3078
+ this.consumeLine(line, messages);
3079
+ }
3080
+
3081
+ return messages;
3082
+ }
3083
+
3084
+ flush(): ParsedSseMessage[] {
3085
+ const messages: ParsedSseMessage[] = [];
3086
+
3087
+ if (this.buffer.length > 0) {
3088
+ this.consumeLine(normalizeLine(this.buffer), messages);
3089
+ this.buffer = "";
3090
+ }
3091
+
3092
+ this.emitEvent(messages);
3093
+ return messages;
3094
+ }
3095
+
3096
+ private consumeLine(line: string, messages: ParsedSseMessage[]): void {
3097
+ if (line.length === 0) {
3098
+ this.emitEvent(messages);
3099
+ return;
3100
+ }
3101
+
3102
+ if (line.startsWith(":")) {
3103
+ return;
3104
+ }
3105
+
3106
+ const separatorIndex = line.indexOf(":");
3107
+ const field = separatorIndex === -1 ? line : line.slice(0, separatorIndex);
3108
+ const rawValue = separatorIndex === -1 ? "" : line.slice(separatorIndex + 1);
3109
+ const value = rawValue.startsWith(" ") ? rawValue.slice(1) : rawValue;
3110
+
3111
+ if (field === "event") {
3112
+ this.eventType = value;
3113
+ return;
3114
+ }
3115
+
3116
+ if (field === "data") {
3117
+ this.dataLines.push(value);
3118
+ return;
3119
+ }
3120
+
3121
+ if (field === "id") {
3122
+ if (value.includes("\0")) {
3123
+ return;
3124
+ }
3125
+
3126
+ this.eventId = value;
3127
+ this.hasEventId = true;
3128
+ }
3129
+ }
3130
+
3131
+ private emitEvent(messages: ParsedSseMessage[]): void {
3132
+ const eventType = this.eventType ?? "message";
3133
+
3134
+ if (this.hasEventId) {
3135
+ this._lastEventId = this.eventId;
3136
+ }
3137
+
3138
+ if (this.dataLines.length === 0 || eventType !== "message") {
3139
+ this.resetEvent();
3140
+ return;
3141
+ }
3142
+
3143
+ const message: ParsedSseMessage = {
3144
+ data: this.dataLines.join("\n"),
3145
+ };
3146
+
3147
+ if (this.hasEventId) {
3148
+ message.id = this.eventId;
3149
+ }
3150
+
3151
+ messages.push(message);
3152
+ this.resetEvent();
3153
+ }
3154
+
3155
+ private resetEvent(): void {
3156
+ this.eventType = undefined;
3157
+ this.dataLines = [];
3158
+ this.eventId = "";
3159
+ this.hasEventId = false;
3160
+ }
3161
+ }
3162
+
3163
+ interface PendingRequest {
3164
+ resolve: (result: unknown) => void;
3165
+ reject: (error: unknown) => void;
3166
+ timeout: ReturnType<typeof setTimeout>;
3167
+ }
3168
+
3169
+ interface ActiveIncomingRequest {
3170
+ cancelled: boolean;
3171
+ }
3172
+
3173
+ export interface JsonRpcRequestOptions {
3174
+ timeoutMs?: number;
3175
+ onRequestId?: (requestId: RequestId) => void;
3176
+ onTimeout?: (requestId: RequestId) => void;
3177
+ }
3178
+
3179
+ interface JsonRpcRequestContext {
3180
+ id: RequestId;
3181
+ method: string;
3182
+ }
3183
+
3184
+ type JsonRpcRequestHandler = (
3185
+ params: unknown,
3186
+ context: JsonRpcRequestContext
3187
+ ) => unknown | Promise<unknown>;
3188
+
3189
+ interface JsonRpcNotificationContext {
3190
+ method: string;
3191
+ }
3192
+
3193
+ type JsonRpcNotificationHandler = (
3194
+ params: unknown,
3195
+ context: JsonRpcNotificationContext
3196
+ ) => unknown | Promise<unknown>;
3197
+
3198
+ export class JsonRpcMessageLayer {
3199
+ readonly requestTimeoutMs: number;
3200
+ private readonly input: Readable;
3201
+ private readonly output: Writable;
3202
+ private readonly inputClosedReason: Promise<Error> | undefined;
3203
+ private nextRequestId = 1;
3204
+ private disposedError: Error | undefined;
3205
+ private readonly pendingRequests = new Map<RequestId, PendingRequest>();
3206
+ private readonly activeIncomingRequests = new Map<RequestId, ActiveIncomingRequest>();
3207
+ private readonly requestHandlers = new Map<string, JsonRpcRequestHandler>();
3208
+ private readonly notificationHandlers = new Map<string, JsonRpcNotificationHandler>();
3209
+
3210
+ constructor(
3211
+ input: Readable,
3212
+ output: Writable,
3213
+ requestTimeoutMs = 30_000,
3214
+ inputClosedReason?: Promise<Error>
3215
+ ) {
3216
+ if (!Number.isFinite(requestTimeoutMs) || requestTimeoutMs < 0) {
3217
+ throw new Error("requestTimeoutMs must be a non-negative finite number");
3218
+ }
3219
+
3220
+ this.input = input;
3221
+ this.output = output;
3222
+ this.inputClosedReason = inputClosedReason;
3223
+ this.requestTimeoutMs = requestTimeoutMs;
3224
+ this.consumeInput().catch(() => undefined);
3225
+ }
3226
+
3227
+ sendNotification(method: string, params?: unknown): void {
3228
+ if (this.disposedError !== undefined) {
3229
+ throw this.disposedError;
3230
+ }
3231
+
3232
+ const message: JsonRpcNotification = {
3233
+ jsonrpc: "2.0",
3234
+ method,
3235
+ };
3236
+
3237
+ if (params !== undefined) {
3238
+ message.params = params;
3239
+ }
3240
+
3241
+ this.output.write(serializeJsonRpcMessage(message));
3242
+ }
3243
+
3244
+ onRequest(method: string, handler: JsonRpcRequestHandler): void {
3245
+ this.requestHandlers.set(method, handler);
3246
+ }
3247
+
3248
+ onNotification(method: string, handler: JsonRpcNotificationHandler): void {
3249
+ this.notificationHandlers.set(method, handler);
3250
+ }
3251
+
3252
+ sendRequest(
3253
+ method: string,
3254
+ params?: unknown,
3255
+ options: JsonRpcRequestOptions = {}
3256
+ ): Promise<unknown> {
3257
+ if (this.disposedError !== undefined) {
3258
+ throw this.disposedError;
3259
+ }
3260
+
3261
+ const id = this.nextRequestId;
3262
+ this.nextRequestId += 1;
3263
+ const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;
3264
+
3265
+ if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {
3266
+ throw new Error("timeoutMs must be a non-negative finite number");
3267
+ }
3268
+ if (options.onRequestId !== undefined) {
3269
+ options.onRequestId(id);
3270
+ }
3271
+
3272
+ const message: JsonRpcRequest = {
3273
+ jsonrpc: "2.0",
3274
+ id,
3275
+ method,
3276
+ };
3277
+
3278
+ if (params !== undefined) {
3279
+ message.params = params;
3280
+ }
3281
+
3282
+ return new Promise((resolve, reject) => {
3283
+ const timeout = setTimeout(() => {
3284
+ this.pendingRequests.delete(id);
3285
+ options.onTimeout?.(id);
3286
+ reject(new Error(`JSON-RPC request "${method}" timed out after ${timeoutMs}ms`));
3287
+ }, timeoutMs);
3288
+
3289
+ this.pendingRequests.set(id, { resolve, reject, timeout });
3290
+
3291
+ try {
3292
+ this.output.write(serializeJsonRpcMessage(message));
3293
+ } catch (error) {
3294
+ clearTimeout(timeout);
3295
+ this.pendingRequests.delete(id);
3296
+ reject(error);
3297
+ }
3298
+ });
3299
+ }
3300
+
3301
+ cancelRequest(requestId: RequestId, reason: unknown): boolean {
3302
+ const pending = this.pendingRequests.get(requestId);
3303
+ if (pending === undefined) {
3304
+ return false;
3305
+ }
3306
+
3307
+ this.pendingRequests.delete(requestId);
3308
+ clearTimeout(pending.timeout);
3309
+ pending.reject(reason);
3310
+ return true;
3311
+ }
3312
+
3313
+ dispose(reason = new Error("JSON-RPC message layer disposed")): void {
3314
+ if (this.disposedError !== undefined) {
3315
+ return;
3316
+ }
3317
+
3318
+ this.disposedError = reason;
3319
+
3320
+ for (const pending of this.pendingRequests.values()) {
3321
+ clearTimeout(pending.timeout);
3322
+ pending.reject(reason);
3323
+ }
3324
+
3325
+ this.pendingRequests.clear();
3326
+ this.activeIncomingRequests.clear();
3327
+ }
3328
+
3329
+ private async consumeInput(): Promise<void> {
3330
+ try {
3331
+ for await (const line of readLines(this.input)) {
3332
+ if (this.disposedError !== undefined) {
3333
+ break;
3334
+ }
3335
+
3336
+ if (line.length === 0) {
3337
+ continue;
3338
+ }
3339
+
3340
+ let parsedLine: unknown;
3341
+ try {
3342
+ parsedLine = JSON.parse(line);
3343
+ } catch {
3344
+ await this.processParsedMessage({
3345
+ type: "invalid",
3346
+ id: null,
3347
+ error: parseError(),
3348
+ });
3349
+ continue;
3350
+ }
3351
+
3352
+ if (Array.isArray(parsedLine)) {
3353
+ for (const message of parsedLine) {
3354
+ if (this.disposedError !== undefined) {
3355
+ break;
3356
+ }
3357
+
3358
+ await this.processParsedMessage(parseJsonRpcPayload(message));
3359
+ }
3360
+ continue;
3361
+ }
3362
+
3363
+ await this.processParsedMessage(parseJsonRpcPayload(parsedLine));
3364
+ }
3365
+ } catch (error) {
3366
+ if (this.disposedError === undefined) {
3367
+ this.dispose(
3368
+ error instanceof Error
3369
+ ? error
3370
+ : new Error(`JSON-RPC input stream failed: ${String(error)}`)
3371
+ );
3372
+ }
3373
+ return;
3374
+ }
3375
+
3376
+ if (this.disposedError === undefined) {
3377
+ const streamClosedReason = await this.resolveInputStreamClosedReason();
3378
+ if (this.disposedError === undefined) {
3379
+ this.dispose(streamClosedReason);
3380
+ }
3381
+ }
3382
+ }
3383
+
3384
+ private async resolveInputStreamClosedReason(): Promise<Error> {
3385
+ const streamClosedError = new Error("JSON-RPC input stream closed");
3386
+ if (this.inputClosedReason === undefined) {
3387
+ return streamClosedError;
3388
+ }
3389
+
3390
+ try {
3391
+ return await Promise.race([
3392
+ this.inputClosedReason,
3393
+ new Promise<Error>((resolve) => {
3394
+ setTimeout(() => {
3395
+ resolve(streamClosedError);
3396
+ }, 50);
3397
+ }),
3398
+ ]);
3399
+ } catch {
3400
+ return streamClosedError;
3401
+ }
3402
+ }
3403
+
3404
+ private async processParsedMessage(parsed: ParsedJsonRpcMessage): Promise<void> {
3405
+ if (parsed.type === "request") {
3406
+ const handler = this.requestHandlers.get(parsed.message.method);
3407
+ if (handler === undefined) {
3408
+ this.output.write(
3409
+ serializeJsonRpcMessage({
3410
+ jsonrpc: "2.0",
3411
+ id: parsed.message.id,
3412
+ error: {
3413
+ code: ERROR_METHOD_NOT_FOUND,
3414
+ message: `Method not found: ${parsed.message.method}`,
3415
+ },
3416
+ })
3417
+ );
3418
+ return;
3419
+ }
3420
+
3421
+ this.handleIncomingRequest(parsed.message, handler);
3422
+ return;
3423
+ }
3424
+
3425
+ if (parsed.type === "notification") {
3426
+ if (parsed.message.method === "notifications/cancelled") {
3427
+ this.handleCancellationNotification(parsed.message.params);
3428
+ }
3429
+
3430
+ const handler = this.notificationHandlers.get(parsed.message.method);
3431
+ if (handler === undefined) {
3432
+ return;
3433
+ }
3434
+
3435
+ try {
3436
+ await handler(parsed.message.params, {
3437
+ method: parsed.message.method,
3438
+ });
3439
+ } catch {
3440
+ return;
3441
+ }
3442
+ return;
3443
+ }
3444
+
3445
+ if (parsed.type === "invalid") {
3446
+ const errorResponse: {
3447
+ jsonrpc: "2.0";
3448
+ id: RequestId | null;
3449
+ error: JsonRpcErrorObject;
3450
+ } = {
3451
+ jsonrpc: "2.0",
3452
+ id: parsed.id,
3453
+ error: {
3454
+ code: parsed.error.code,
3455
+ message: parsed.error.message,
3456
+ },
3457
+ };
3458
+
3459
+ if (parsed.error.data !== undefined) {
3460
+ errorResponse.error.data = parsed.error.data;
3461
+ }
3462
+
3463
+ this.output.write(`${JSON.stringify(errorResponse)}\n`);
3464
+ return;
3465
+ }
3466
+
3467
+ if (parsed.type !== "response") {
3468
+ return;
3469
+ }
3470
+
3471
+ const pending = this.pendingRequests.get(parsed.message.id);
3472
+ if (pending === undefined) {
3473
+ return;
3474
+ }
3475
+
3476
+ this.pendingRequests.delete(parsed.message.id);
3477
+ clearTimeout(pending.timeout);
3478
+ if ("result" in parsed.message) {
3479
+ pending.resolve(parsed.message.result);
3480
+ return;
3481
+ }
3482
+
3483
+ pending.reject(
3484
+ new McpError(
3485
+ parsed.message.error.code,
3486
+ parsed.message.error.message,
3487
+ parsed.message.error.data
3488
+ )
3489
+ );
3490
+ }
3491
+
3492
+ private handleIncomingRequest(message: JsonRpcRequest, handler: JsonRpcRequestHandler): void {
3493
+ const activeRequest: ActiveIncomingRequest = {
3494
+ cancelled: false,
3495
+ };
3496
+ this.activeIncomingRequests.set(message.id, activeRequest);
3497
+
3498
+ void (async () => {
3499
+ try {
3500
+ const result = await handler(message.params, {
3501
+ id: message.id,
3502
+ method: message.method,
3503
+ });
3504
+
3505
+ if (this.disposedError !== undefined || activeRequest.cancelled) {
3506
+ return;
3507
+ }
3508
+
3509
+ this.output.write(
3510
+ serializeJsonRpcMessage({
3511
+ jsonrpc: "2.0",
3512
+ id: message.id,
3513
+ result,
3514
+ })
3515
+ );
3516
+ } catch (error) {
3517
+ if (this.disposedError !== undefined || activeRequest.cancelled) {
3518
+ return;
3519
+ }
3520
+
3521
+ const errorMessage = error instanceof Error ? error.message : String(error);
3522
+ this.output.write(
3523
+ serializeJsonRpcMessage({
3524
+ jsonrpc: "2.0",
3525
+ id: message.id,
3526
+ error: {
3527
+ code: ERROR_INTERNAL,
3528
+ message: errorMessage,
3529
+ },
3530
+ })
3531
+ );
3532
+ } finally {
3533
+ const inFlightRequest = this.activeIncomingRequests.get(message.id);
3534
+ if (inFlightRequest === activeRequest) {
3535
+ this.activeIncomingRequests.delete(message.id);
3536
+ }
3537
+ }
3538
+ })();
3539
+ }
3540
+
3541
+ private handleCancellationNotification(params: unknown): void {
3542
+ if (!isObjectRecord(params)) {
3543
+ return;
3544
+ }
3545
+
3546
+ const requestId = params.requestId;
3547
+ if (!isRequestId(requestId)) {
3548
+ return;
3549
+ }
3550
+
3551
+ const activeRequest = this.activeIncomingRequests.get(requestId);
3552
+ if (activeRequest === undefined) {
3553
+ return;
3554
+ }
3555
+
3556
+ activeRequest.cancelled = true;
3557
+ this.activeIncomingRequests.delete(requestId);
3558
+ }
3559
+ }
3560
+
3561
+ function isObjectRecord(value: unknown): value is Record<string, unknown> {
3562
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3563
+ }
3564
+
3565
+ function isInitializeResult(value: unknown): value is InitializeResult {
3566
+ if (!isObjectRecord(value) || typeof value.protocolVersion !== "string") {
3567
+ return false;
3568
+ }
3569
+
3570
+ if (!isServerCapabilities(value.capabilities)) {
3571
+ return false;
3572
+ }
3573
+
3574
+ if (
3575
+ !isObjectRecord(value.serverInfo)
3576
+ || typeof value.serverInfo.name !== "string"
3577
+ || value.serverInfo.name.length === 0
3578
+ || typeof value.serverInfo.version !== "string"
3579
+ || value.serverInfo.version.length === 0
3580
+ ) {
3581
+ return false;
3582
+ }
3583
+
3584
+ return value.instructions === undefined || typeof value.instructions === "string";
3585
+ }
3586
+
3587
+ function isServerCapabilities(value: unknown): value is ServerCapabilities {
3588
+ if (!isObjectRecord(value)) {
3589
+ return false;
3590
+ }
3591
+
3592
+ for (const capability of ["prompts", "resources", "tools", "logging", "completions", "experimental"] as const) {
3593
+ if (value[capability] !== undefined && !isObjectRecord(value[capability])) {
3594
+ return false;
3595
+ }
3596
+ }
3597
+
3598
+ return true;
3599
+ }
3600
+
3601
+ function isCallToolResult(value: unknown): value is CallToolResult {
3602
+ if (!isObjectRecord(value) || !Array.isArray(value.content)) {
3603
+ return false;
3604
+ }
3605
+
3606
+ if (value.structuredContent !== undefined && !isObjectRecord(value.structuredContent)) {
3607
+ return false;
3608
+ }
3609
+
3610
+ if (value.isError !== undefined && typeof value.isError !== "boolean") {
3611
+ return false;
3612
+ }
3613
+
3614
+ return value.content.every(isContentItem);
3615
+ }
3616
+
3617
+ function isToolsListResult(value: unknown): value is { tools: Tool[]; nextCursor?: string } {
3618
+ return isObjectRecord(value)
3619
+ && Array.isArray(value.tools)
3620
+ && (value.nextCursor === undefined || typeof value.nextCursor === "string");
3621
+ }
3622
+
3623
+ function isResourcesListResult(value: unknown): value is { resources: Resource[]; nextCursor?: string } {
3624
+ return isObjectRecord(value)
3625
+ && Array.isArray(value.resources)
3626
+ && value.resources.every(isResource)
3627
+ && (value.nextCursor === undefined || typeof value.nextCursor === "string");
3628
+ }
3629
+
3630
+ function isResourceTemplatesListResult(
3631
+ value: unknown
3632
+ ): value is { resourceTemplates: ResourceTemplate[]; nextCursor?: string } {
3633
+ return isObjectRecord(value)
3634
+ && Array.isArray(value.resourceTemplates)
3635
+ && value.resourceTemplates.every(isResourceTemplate)
3636
+ && (value.nextCursor === undefined || typeof value.nextCursor === "string");
3637
+ }
3638
+
3639
+ function isReadResourceResult(value: unknown): value is { contents: ResourceContents[] } {
3640
+ return isObjectRecord(value)
3641
+ && Array.isArray(value.contents)
3642
+ && value.contents.every(isResourceContents);
3643
+ }
3644
+
3645
+ function isGetPromptResult(value: unknown): value is GetPromptResult {
3646
+ return isObjectRecord(value)
3647
+ && (value.description === undefined || typeof value.description === "string")
3648
+ && Array.isArray(value.messages)
3649
+ && value.messages.every(isPromptMessage);
3650
+ }
3651
+
3652
+ function isCompleteResult(value: unknown): value is CompleteResult {
3653
+ return isObjectRecord(value)
3654
+ && isObjectRecord(value.completion)
3655
+ && Array.isArray(value.completion.values)
3656
+ && value.completion.values.every((candidate) => typeof candidate === "string")
3657
+ && (value.completion.hasMore === undefined || typeof value.completion.hasMore === "boolean")
3658
+ && (value.completion.total === undefined || typeof value.completion.total === "number");
3659
+ }
3660
+
3661
+ function isResource(value: unknown): value is Resource {
3662
+ return isObjectRecord(value)
3663
+ && typeof value.uri === "string"
3664
+ && typeof value.name === "string"
3665
+ && (value.description === undefined || typeof value.description === "string")
3666
+ && (value.mimeType === undefined || typeof value.mimeType === "string")
3667
+ && (value.size === undefined || typeof value.size === "number");
3668
+ }
3669
+
3670
+ function isResourceTemplate(value: unknown): value is ResourceTemplate {
3671
+ return isObjectRecord(value)
3672
+ && typeof value.uriTemplate === "string"
3673
+ && typeof value.name === "string"
3674
+ && (value.description === undefined || typeof value.description === "string")
3675
+ && (value.mimeType === undefined || typeof value.mimeType === "string");
3676
+ }
3677
+
3678
+ function isResourceContents(value: unknown): value is ResourceContents {
3679
+ if (!isObjectRecord(value) || typeof value.uri !== "string") {
3680
+ return false;
3681
+ }
3682
+
3683
+ if (value.mimeType !== undefined && typeof value.mimeType !== "string") {
3684
+ return false;
3685
+ }
3686
+
3687
+ const hasText = value.text !== undefined;
3688
+ const hasBlob = value.blob !== undefined;
3689
+
3690
+ if (!hasText && !hasBlob) {
3691
+ return false;
3692
+ }
3693
+
3694
+ return (!hasText || typeof value.text === "string")
3695
+ && (!hasBlob || typeof value.blob === "string");
3696
+ }
3697
+
3698
+ function isPromptMessage(value: unknown): value is PromptMessage {
3699
+ return isObjectRecord(value)
3700
+ && (value.role === "user" || value.role === "assistant")
3701
+ && isContentItem(value.content);
3702
+ }
3703
+
3704
+ function isContentItem(value: unknown): value is ContentItem {
3705
+ if (!isObjectRecord(value)) {
3706
+ return false;
3707
+ }
3708
+
3709
+ if (value.type === "text") {
3710
+ return typeof value.text === "string";
3711
+ }
3712
+
3713
+ if (value.type === "image" || value.type === "audio") {
3714
+ return typeof value.data === "string" && typeof value.mimeType === "string";
3715
+ }
3716
+
3717
+ if (value.type !== "resource" || !isObjectRecord(value.resource)) {
3718
+ return false;
3719
+ }
3720
+
3721
+ return isResourceContents(value.resource);
3722
+ }
3723
+
3724
+ function hasOwn(
3725
+ value: Record<string, unknown>,
3726
+ property: string
3727
+ ): property is keyof typeof value {
3728
+ return Object.prototype.hasOwnProperty.call(value, property);
3729
+ }
3730
+
3731
+ function isRequestId(value: unknown): value is RequestId {
3732
+ return typeof value === "string" || typeof value === "number";
3733
+ }
3734
+
3735
+ function isLogLevel(value: unknown): value is LogLevel {
3736
+ return (
3737
+ value === "debug" ||
3738
+ value === "info" ||
3739
+ value === "notice" ||
3740
+ value === "warning" ||
3741
+ value === "error" ||
3742
+ value === "critical" ||
3743
+ value === "alert" ||
3744
+ value === "emergency"
3745
+ );
3746
+ }
3747
+
3748
+ function toRequestId(value: unknown): RequestId | null {
3749
+ return isRequestId(value) ? value : null;
3750
+ }
3751
+
3752
+ function parseError(): McpError {
3753
+ return new McpError(ERROR_PARSE, "Parse error");
3754
+ }
3755
+
3756
+ function invalidRequest(): McpError {
3757
+ return new McpError(ERROR_INVALID_REQUEST, "Invalid Request");
3758
+ }
3759
+
3760
+ function isJsonRpcErrorObject(value: unknown): value is JsonRpcErrorObject {
3761
+ if (!isObjectRecord(value)) {
3762
+ return false;
3763
+ }
3764
+
3765
+ if (typeof value.code !== "number" || typeof value.message !== "string") {
3766
+ return false;
3767
+ }
3768
+
3769
+ return value.data === undefined || hasOwn(value, "data");
3770
+ }
3771
+
3772
+ export function parseJsonRpcMessage(line: string): ParsedJsonRpcMessage {
3773
+ let parsed: unknown;
3774
+ try {
3775
+ parsed = JSON.parse(line);
3776
+ } catch {
3777
+ return {
3778
+ type: "invalid",
3779
+ id: null,
3780
+ error: parseError(),
3781
+ };
3782
+ }
3783
+
3784
+ return parseJsonRpcPayload(parsed);
3785
+ }
3786
+
3787
+ function parseJsonRpcPayload(parsed: unknown): ParsedJsonRpcMessage {
3788
+ if (!isObjectRecord(parsed)) {
3789
+ return {
3790
+ type: "invalid",
3791
+ id: null,
3792
+ error: invalidRequest(),
3793
+ };
3794
+ }
3795
+
3796
+ const id = toRequestId(parsed.id);
3797
+
3798
+ if (parsed.jsonrpc !== "2.0") {
3799
+ return {
3800
+ type: "invalid",
3801
+ id,
3802
+ error: invalidRequest(),
3803
+ };
3804
+ }
3805
+
3806
+ const hasMethod = hasOwn(parsed, "method");
3807
+ const hasId = hasOwn(parsed, "id");
3808
+
3809
+ if (hasMethod) {
3810
+ if (typeof parsed.method !== "string") {
3811
+ return {
3812
+ type: "invalid",
3813
+ id,
3814
+ error: invalidRequest(),
3815
+ };
3816
+ }
3817
+
3818
+ if (hasId) {
3819
+ if (!isRequestId(parsed.id)) {
3820
+ return {
3821
+ type: "invalid",
3822
+ id: null,
3823
+ error: invalidRequest(),
3824
+ };
3825
+ }
3826
+
3827
+ const request: JsonRpcRequest = {
3828
+ jsonrpc: "2.0",
3829
+ id: parsed.id,
3830
+ method: parsed.method,
3831
+ };
3832
+
3833
+ if (hasOwn(parsed, "params")) {
3834
+ request.params = parsed.params;
3835
+ }
3836
+
3837
+ return {
3838
+ type: "request",
3839
+ message: request,
3840
+ };
3841
+ }
3842
+
3843
+ const notification: JsonRpcNotification = {
3844
+ jsonrpc: "2.0",
3845
+ method: parsed.method,
3846
+ };
3847
+
3848
+ if (hasOwn(parsed, "params")) {
3849
+ notification.params = parsed.params;
3850
+ }
3851
+
3852
+ return {
3853
+ type: "notification",
3854
+ message: notification,
3855
+ };
3856
+ }
3857
+
3858
+ if (!hasId || !isRequestId(parsed.id)) {
3859
+ return {
3860
+ type: "invalid",
3861
+ id,
3862
+ error: invalidRequest(),
3863
+ };
3864
+ }
3865
+
3866
+ const hasResult = hasOwn(parsed, "result");
3867
+ const hasError = hasOwn(parsed, "error");
3868
+
3869
+ if (hasResult === hasError) {
3870
+ return {
3871
+ type: "invalid",
3872
+ id: parsed.id,
3873
+ error: invalidRequest(),
3874
+ };
3875
+ }
3876
+
3877
+ if (hasResult) {
3878
+ return {
3879
+ type: "response",
3880
+ message: {
3881
+ jsonrpc: "2.0",
3882
+ id: parsed.id,
3883
+ result: parsed.result,
3884
+ },
3885
+ };
3886
+ }
3887
+
3888
+ if (!isJsonRpcErrorObject(parsed.error)) {
3889
+ return {
3890
+ type: "invalid",
3891
+ id: parsed.id,
3892
+ error: invalidRequest(),
3893
+ };
3894
+ }
3895
+
3896
+ return {
3897
+ type: "response",
3898
+ message: {
3899
+ jsonrpc: "2.0",
3900
+ id: parsed.id,
3901
+ error: parsed.error,
3902
+ },
3903
+ };
3904
+ }