@wootsup/yt-builder-mcp 1.1.6 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/README.md +7 -7
  2. package/bin/yt-builder-mcp.js +55 -40
  3. package/dist/auth.d.ts +137 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +244 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/cli/invocation-decision.d.ts +57 -0
  8. package/dist/cli/invocation-decision.d.ts.map +1 -0
  9. package/dist/cli/invocation-decision.js +86 -0
  10. package/dist/cli/invocation-decision.js.map +1 -0
  11. package/dist/client.d.ts +112 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +190 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/clients/claude-code.d.ts +18 -0
  16. package/dist/clients/claude-code.d.ts.map +1 -0
  17. package/dist/clients/claude-code.js +55 -0
  18. package/dist/clients/claude-code.js.map +1 -0
  19. package/dist/clients/claude-desktop.d.ts +19 -0
  20. package/dist/clients/claude-desktop.d.ts.map +1 -0
  21. package/dist/clients/claude-desktop.js +58 -0
  22. package/dist/clients/claude-desktop.js.map +1 -0
  23. package/dist/clients/cline.d.ts +26 -0
  24. package/dist/clients/cline.d.ts.map +1 -0
  25. package/dist/clients/cline.js +82 -0
  26. package/dist/clients/cline.js.map +1 -0
  27. package/dist/clients/codex-cli.d.ts +42 -0
  28. package/dist/clients/codex-cli.d.ts.map +1 -0
  29. package/dist/clients/codex-cli.js +292 -0
  30. package/dist/clients/codex-cli.js.map +1 -0
  31. package/dist/clients/continue.d.ts +13 -0
  32. package/dist/clients/continue.d.ts.map +1 -0
  33. package/dist/clients/continue.js +121 -0
  34. package/dist/clients/continue.js.map +1 -0
  35. package/dist/clients/cursor.d.ts +12 -0
  36. package/dist/clients/cursor.d.ts.map +1 -0
  37. package/dist/clients/cursor.js +40 -0
  38. package/dist/clients/cursor.js.map +1 -0
  39. package/dist/clients/gemini-cli.d.ts +18 -0
  40. package/dist/clients/gemini-cli.d.ts.map +1 -0
  41. package/dist/clients/gemini-cli.js +46 -0
  42. package/dist/clients/gemini-cli.js.map +1 -0
  43. package/dist/clients/home.d.ts +14 -0
  44. package/dist/clients/home.d.ts.map +1 -0
  45. package/dist/clients/home.js +20 -0
  46. package/dist/clients/home.js.map +1 -0
  47. package/dist/clients/index.d.ts +156 -0
  48. package/dist/clients/index.d.ts.map +1 -0
  49. package/dist/clients/index.js +213 -0
  50. package/dist/clients/index.js.map +1 -0
  51. package/dist/clients/roo-code.d.ts +23 -0
  52. package/dist/clients/roo-code.d.ts.map +1 -0
  53. package/dist/clients/roo-code.js +71 -0
  54. package/dist/clients/roo-code.js.map +1 -0
  55. package/dist/clients/zed.d.ts +12 -0
  56. package/dist/clients/zed.d.ts.map +1 -0
  57. package/dist/clients/zed.js +43 -0
  58. package/dist/clients/zed.js.map +1 -0
  59. package/dist/errors/hints.d.ts +51 -0
  60. package/dist/errors/hints.d.ts.map +1 -0
  61. package/dist/errors/hints.js +95 -0
  62. package/dist/errors/hints.js.map +1 -0
  63. package/dist/errors/mask.d.ts +35 -0
  64. package/dist/errors/mask.d.ts.map +1 -0
  65. package/dist/errors/mask.js +49 -0
  66. package/dist/errors/mask.js.map +1 -0
  67. package/dist/errors/sanitize.d.ts +31 -0
  68. package/dist/errors/sanitize.d.ts.map +1 -0
  69. package/dist/errors/sanitize.js +100 -0
  70. package/dist/errors/sanitize.js.map +1 -0
  71. package/dist/errors.d.ts +42 -0
  72. package/dist/errors.d.ts.map +1 -0
  73. package/dist/errors.js +61 -0
  74. package/dist/errors.js.map +1 -0
  75. package/dist/gateway/advanced-tool/discovery.d.ts +19 -0
  76. package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -0
  77. package/dist/gateway/advanced-tool/discovery.js +53 -0
  78. package/dist/gateway/advanced-tool/discovery.js.map +1 -0
  79. package/dist/gateway/advanced-tool/domains.d.ts +47 -0
  80. package/dist/gateway/advanced-tool/domains.d.ts.map +1 -0
  81. package/dist/gateway/advanced-tool/domains.js +94 -0
  82. package/dist/gateway/advanced-tool/domains.js.map +1 -0
  83. package/dist/gateway/advanced-tool/execute.d.ts +29 -0
  84. package/dist/gateway/advanced-tool/execute.d.ts.map +1 -0
  85. package/dist/gateway/advanced-tool/execute.js +54 -0
  86. package/dist/gateway/advanced-tool/execute.js.map +1 -0
  87. package/dist/gateway/advanced-tool/index.d.ts +36 -0
  88. package/dist/gateway/advanced-tool/index.d.ts.map +1 -0
  89. package/dist/gateway/advanced-tool/index.js +39 -0
  90. package/dist/gateway/advanced-tool/index.js.map +1 -0
  91. package/dist/gateway/advanced-tool/register.d.ts +18 -0
  92. package/dist/gateway/advanced-tool/register.d.ts.map +1 -0
  93. package/dist/gateway/advanced-tool/register.js +69 -0
  94. package/dist/gateway/advanced-tool/register.js.map +1 -0
  95. package/dist/gateway/advanced-tool.d.ts +13 -0
  96. package/dist/gateway/advanced-tool.d.ts.map +1 -0
  97. package/dist/gateway/advanced-tool.js +13 -0
  98. package/dist/gateway/advanced-tool.js.map +1 -0
  99. package/dist/gateway/capturing-server.d.ts +117 -0
  100. package/dist/gateway/capturing-server.d.ts.map +1 -0
  101. package/dist/gateway/capturing-server.js +103 -0
  102. package/dist/gateway/capturing-server.js.map +1 -0
  103. package/dist/gateway/essentials.d.ts +50 -0
  104. package/dist/gateway/essentials.d.ts.map +1 -0
  105. package/dist/gateway/essentials.js +108 -0
  106. package/dist/gateway/essentials.js.map +1 -0
  107. package/dist/gateway/test-support.d.ts +41 -0
  108. package/dist/gateway/test-support.d.ts.map +1 -0
  109. package/dist/gateway/test-support.js +60 -0
  110. package/dist/gateway/test-support.js.map +1 -0
  111. package/dist/index.d.ts +30 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +119 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/install-skill.d.ts +43 -0
  116. package/dist/install-skill.d.ts.map +1 -0
  117. package/dist/install-skill.js +118 -0
  118. package/dist/install-skill.js.map +1 -0
  119. package/dist/platform/detect.d.ts +64 -0
  120. package/dist/platform/detect.d.ts.map +1 -0
  121. package/dist/platform/detect.js +98 -0
  122. package/dist/platform/detect.js.map +1 -0
  123. package/dist/platform/index.d.ts +121 -0
  124. package/dist/platform/index.d.ts.map +1 -0
  125. package/dist/platform/index.js +176 -0
  126. package/dist/platform/index.js.map +1 -0
  127. package/dist/platform/joomla.d.ts +44 -0
  128. package/dist/platform/joomla.d.ts.map +1 -0
  129. package/dist/platform/joomla.js +46 -0
  130. package/dist/platform/joomla.js.map +1 -0
  131. package/dist/server.d.ts +110 -0
  132. package/dist/server.d.ts.map +1 -0
  133. package/dist/server.js +274 -0
  134. package/dist/server.js.map +1 -0
  135. package/dist/setup-cli-confirm.d.ts +36 -0
  136. package/dist/setup-cli-confirm.d.ts.map +1 -0
  137. package/dist/setup-cli-confirm.js +59 -0
  138. package/dist/setup-cli-confirm.js.map +1 -0
  139. package/dist/setup-cli.d.ts +193 -0
  140. package/dist/setup-cli.d.ts.map +1 -0
  141. package/dist/setup-cli.js +1032 -0
  142. package/dist/setup-cli.js.map +1 -0
  143. package/dist/setup-prompts.d.ts +64 -0
  144. package/dist/setup-prompts.d.ts.map +1 -0
  145. package/dist/setup-prompts.js +221 -0
  146. package/dist/setup-prompts.js.map +1 -0
  147. package/dist/setup-token.d.ts +38 -0
  148. package/dist/setup-token.d.ts.map +1 -0
  149. package/dist/setup-token.js +106 -0
  150. package/dist/setup-token.js.map +1 -0
  151. package/dist/setup-wizard-defaults.d.ts +43 -0
  152. package/dist/setup-wizard-defaults.d.ts.map +1 -0
  153. package/dist/setup-wizard-defaults.js +160 -0
  154. package/dist/setup-wizard-defaults.js.map +1 -0
  155. package/dist/setup-wizard-handshake.d.ts +25 -0
  156. package/dist/setup-wizard-handshake.d.ts.map +1 -0
  157. package/dist/setup-wizard-handshake.js +103 -0
  158. package/dist/setup-wizard-handshake.js.map +1 -0
  159. package/dist/setup-wizard-types.d.ts +164 -0
  160. package/dist/setup-wizard-types.d.ts.map +1 -0
  161. package/dist/setup-wizard-types.js +11 -0
  162. package/dist/setup-wizard-types.js.map +1 -0
  163. package/dist/setup-wizard.d.ts +33 -0
  164. package/dist/setup-wizard.d.ts.map +1 -0
  165. package/dist/setup-wizard.js +199 -0
  166. package/dist/setup-wizard.js.map +1 -0
  167. package/dist/setup.d.ts +17 -0
  168. package/dist/setup.d.ts.map +1 -0
  169. package/dist/setup.js +33 -0
  170. package/dist/setup.js.map +1 -0
  171. package/dist/sites/bootstrap.d.ts +41 -0
  172. package/dist/sites/bootstrap.d.ts.map +1 -0
  173. package/dist/sites/bootstrap.js +58 -0
  174. package/dist/sites/bootstrap.js.map +1 -0
  175. package/dist/sites/cli/add-site.d.ts +106 -0
  176. package/dist/sites/cli/add-site.d.ts.map +1 -0
  177. package/dist/sites/cli/add-site.js +185 -0
  178. package/dist/sites/cli/add-site.js.map +1 -0
  179. package/dist/sites/cli/list-sites.d.ts +40 -0
  180. package/dist/sites/cli/list-sites.d.ts.map +1 -0
  181. package/dist/sites/cli/list-sites.js +116 -0
  182. package/dist/sites/cli/list-sites.js.map +1 -0
  183. package/dist/sites/cli/remove-site.d.ts +60 -0
  184. package/dist/sites/cli/remove-site.d.ts.map +1 -0
  185. package/dist/sites/cli/remove-site.js +120 -0
  186. package/dist/sites/cli/remove-site.js.map +1 -0
  187. package/dist/sites/cli/set-default.d.ts +47 -0
  188. package/dist/sites/cli/set-default.d.ts.map +1 -0
  189. package/dist/sites/cli/set-default.js +69 -0
  190. package/dist/sites/cli/set-default.js.map +1 -0
  191. package/dist/sites/cli/test-site.d.ts +77 -0
  192. package/dist/sites/cli/test-site.d.ts.map +1 -0
  193. package/dist/sites/cli/test-site.js +146 -0
  194. package/dist/sites/cli/test-site.js.map +1 -0
  195. package/dist/sites/client-pool.d.ts +157 -0
  196. package/dist/sites/client-pool.d.ts.map +1 -0
  197. package/dist/sites/client-pool.js +222 -0
  198. package/dist/sites/client-pool.js.map +1 -0
  199. package/dist/sites/env-bridge.d.ts +55 -0
  200. package/dist/sites/env-bridge.d.ts.map +1 -0
  201. package/dist/sites/env-bridge.js +94 -0
  202. package/dist/sites/env-bridge.js.map +1 -0
  203. package/dist/sites/paths.d.ts +21 -0
  204. package/dist/sites/paths.d.ts.map +1 -0
  205. package/dist/sites/paths.js +37 -0
  206. package/dist/sites/paths.js.map +1 -0
  207. package/dist/sites/probe.d.ts +60 -0
  208. package/dist/sites/probe.d.ts.map +1 -0
  209. package/dist/sites/probe.js +112 -0
  210. package/dist/sites/probe.js.map +1 -0
  211. package/dist/sites/registry.d.ts +142 -0
  212. package/dist/sites/registry.d.ts.map +1 -0
  213. package/dist/sites/registry.js +163 -0
  214. package/dist/sites/registry.js.map +1 -0
  215. package/dist/sites/schema.d.ts +90 -0
  216. package/dist/sites/schema.d.ts.map +1 -0
  217. package/dist/sites/schema.js +71 -0
  218. package/dist/sites/schema.js.map +1 -0
  219. package/dist/sites/secret-resolver.d.ts +115 -0
  220. package/dist/sites/secret-resolver.d.ts.map +1 -0
  221. package/dist/sites/secret-resolver.js +225 -0
  222. package/dist/sites/secret-resolver.js.map +1 -0
  223. package/dist/sites/store.d.ts +82 -0
  224. package/dist/sites/store.d.ts.map +1 -0
  225. package/dist/sites/store.js +198 -0
  226. package/dist/sites/store.js.map +1 -0
  227. package/dist/sites/tools/index.d.ts +28 -0
  228. package/dist/sites/tools/index.d.ts.map +1 -0
  229. package/dist/sites/tools/index.js +38 -0
  230. package/dist/sites/tools/index.js.map +1 -0
  231. package/dist/sites/tools/sites-list.d.ts +48 -0
  232. package/dist/sites/tools/sites-list.d.ts.map +1 -0
  233. package/dist/sites/tools/sites-list.js +137 -0
  234. package/dist/sites/tools/sites-list.js.map +1 -0
  235. package/dist/sites/tools/sites-test.d.ts +47 -0
  236. package/dist/sites/tools/sites-test.d.ts.map +1 -0
  237. package/dist/sites/tools/sites-test.js +148 -0
  238. package/dist/sites/tools/sites-test.js.map +1 -0
  239. package/dist/sites/tools/use-site.d.ts +47 -0
  240. package/dist/sites/tools/use-site.d.ts.map +1 -0
  241. package/dist/sites/tools/use-site.js +183 -0
  242. package/dist/sites/tools/use-site.js.map +1 -0
  243. package/dist/skill-loader.d.ts +111 -0
  244. package/dist/skill-loader.d.ts.map +1 -0
  245. package/dist/skill-loader.js +191 -0
  246. package/dist/skill-loader.js.map +1 -0
  247. package/dist/tools/elements/builders.d.ts +24 -0
  248. package/dist/tools/elements/builders.d.ts.map +1 -0
  249. package/dist/tools/elements/builders.js +208 -0
  250. package/dist/tools/elements/builders.js.map +1 -0
  251. package/dist/tools/elements/handlers-write.d.ts +49 -0
  252. package/dist/tools/elements/handlers-write.d.ts.map +1 -0
  253. package/dist/tools/elements/handlers-write.js +341 -0
  254. package/dist/tools/elements/handlers-write.js.map +1 -0
  255. package/dist/tools/elements/handlers.d.ts +70 -0
  256. package/dist/tools/elements/handlers.d.ts.map +1 -0
  257. package/dist/tools/elements/handlers.js +292 -0
  258. package/dist/tools/elements/handlers.js.map +1 -0
  259. package/dist/tools/elements/index.d.ts +28 -0
  260. package/dist/tools/elements/index.d.ts.map +1 -0
  261. package/dist/tools/elements/index.js +27 -0
  262. package/dist/tools/elements/index.js.map +1 -0
  263. package/dist/tools/elements.d.ts +13 -0
  264. package/dist/tools/elements.d.ts.map +1 -0
  265. package/dist/tools/elements.js +13 -0
  266. package/dist/tools/elements.js.map +1 -0
  267. package/dist/tools/elicitation.d.ts +87 -0
  268. package/dist/tools/elicitation.d.ts.map +1 -0
  269. package/dist/tools/elicitation.js +100 -0
  270. package/dist/tools/elicitation.js.map +1 -0
  271. package/dist/tools/format/elements-format.d.ts +40 -0
  272. package/dist/tools/format/elements-format.d.ts.map +1 -0
  273. package/dist/tools/format/elements-format.js +193 -0
  274. package/dist/tools/format/elements-format.js.map +1 -0
  275. package/dist/tools/format/health-format.d.ts +79 -0
  276. package/dist/tools/format/health-format.d.ts.map +1 -0
  277. package/dist/tools/format/health-format.js +181 -0
  278. package/dist/tools/format/health-format.js.map +1 -0
  279. package/dist/tools/format/inspection-format.d.ts +70 -0
  280. package/dist/tools/format/inspection-format.d.ts.map +1 -0
  281. package/dist/tools/format/inspection-format.js +359 -0
  282. package/dist/tools/format/inspection-format.js.map +1 -0
  283. package/dist/tools/format/pages-format.d.ts +57 -0
  284. package/dist/tools/format/pages-format.d.ts.map +1 -0
  285. package/dist/tools/format/pages-format.js +157 -0
  286. package/dist/tools/format/pages-format.js.map +1 -0
  287. package/dist/tools/format/sources-format.d.ts +44 -0
  288. package/dist/tools/format/sources-format.d.ts.map +1 -0
  289. package/dist/tools/format/sources-format.js +242 -0
  290. package/dist/tools/format/sources-format.js.map +1 -0
  291. package/dist/tools/health.d.ts +22 -0
  292. package/dist/tools/health.d.ts.map +1 -0
  293. package/dist/tools/health.js +220 -0
  294. package/dist/tools/health.js.map +1 -0
  295. package/dist/tools/index.d.ts +30 -0
  296. package/dist/tools/index.d.ts.map +1 -0
  297. package/dist/tools/index.js +39 -0
  298. package/dist/tools/index.js.map +1 -0
  299. package/dist/tools/inspection.d.ts +14 -0
  300. package/dist/tools/inspection.d.ts.map +1 -0
  301. package/dist/tools/inspection.js +401 -0
  302. package/dist/tools/inspection.js.map +1 -0
  303. package/dist/tools/layout-flatten.d.ts +75 -0
  304. package/dist/tools/layout-flatten.d.ts.map +1 -0
  305. package/dist/tools/layout-flatten.js +107 -0
  306. package/dist/tools/layout-flatten.js.map +1 -0
  307. package/dist/tools/multi-items/builders.d.ts +23 -0
  308. package/dist/tools/multi-items/builders.d.ts.map +1 -0
  309. package/dist/tools/multi-items/builders.js +84 -0
  310. package/dist/tools/multi-items/builders.js.map +1 -0
  311. package/dist/tools/multi-items/clean-implode-handler.d.ts +36 -0
  312. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -0
  313. package/dist/tools/multi-items/clean-implode-handler.js +57 -0
  314. package/dist/tools/multi-items/clean-implode-handler.js.map +1 -0
  315. package/dist/tools/multi-items/format/inspection-format.d.ts +41 -0
  316. package/dist/tools/multi-items/format/inspection-format.d.ts.map +1 -0
  317. package/dist/tools/multi-items/format/inspection-format.js +64 -0
  318. package/dist/tools/multi-items/format/inspection-format.js.map +1 -0
  319. package/dist/tools/multi-items/index.d.ts +18 -0
  320. package/dist/tools/multi-items/index.d.ts.map +1 -0
  321. package/dist/tools/multi-items/index.js +18 -0
  322. package/dist/tools/multi-items/index.js.map +1 -0
  323. package/dist/tools/multi-items/inspect-handler.d.ts +76 -0
  324. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
  325. package/dist/tools/multi-items/inspect-handler.js +133 -0
  326. package/dist/tools/multi-items/inspect-handler.js.map +1 -0
  327. package/dist/tools/multi-items/inspection-cache.d.ts +85 -0
  328. package/dist/tools/multi-items/inspection-cache.d.ts.map +1 -0
  329. package/dist/tools/multi-items/inspection-cache.js +126 -0
  330. package/dist/tools/multi-items/inspection-cache.js.map +1 -0
  331. package/dist/tools/multi-items/item-container-map.d.ts +41 -0
  332. package/dist/tools/multi-items/item-container-map.d.ts.map +1 -0
  333. package/dist/tools/multi-items/item-container-map.js +73 -0
  334. package/dist/tools/multi-items/item-container-map.js.map +1 -0
  335. package/dist/tools/pages/builders.d.ts +43 -0
  336. package/dist/tools/pages/builders.d.ts.map +1 -0
  337. package/dist/tools/pages/builders.js +229 -0
  338. package/dist/tools/pages/builders.js.map +1 -0
  339. package/dist/tools/pages/handlers-read.d.ts +33 -0
  340. package/dist/tools/pages/handlers-read.d.ts.map +1 -0
  341. package/dist/tools/pages/handlers-read.js +260 -0
  342. package/dist/tools/pages/handlers-read.js.map +1 -0
  343. package/dist/tools/pages/handlers-write.d.ts +63 -0
  344. package/dist/tools/pages/handlers-write.d.ts.map +1 -0
  345. package/dist/tools/pages/handlers-write.js +127 -0
  346. package/dist/tools/pages/handlers-write.js.map +1 -0
  347. package/dist/tools/pages/index.d.ts +17 -0
  348. package/dist/tools/pages/index.d.ts.map +1 -0
  349. package/dist/tools/pages/index.js +17 -0
  350. package/dist/tools/pages/index.js.map +1 -0
  351. package/dist/tools/pages/schemas.d.ts +157 -0
  352. package/dist/tools/pages/schemas.d.ts.map +1 -0
  353. package/dist/tools/pages/schemas.js +232 -0
  354. package/dist/tools/pages/schemas.js.map +1 -0
  355. package/dist/tools/pages.d.ts +13 -0
  356. package/dist/tools/pages.d.ts.map +1 -0
  357. package/dist/tools/pages.js +13 -0
  358. package/dist/tools/pages.js.map +1 -0
  359. package/dist/tools/pool-resolve-helper.d.ts +83 -0
  360. package/dist/tools/pool-resolve-helper.d.ts.map +1 -0
  361. package/dist/tools/pool-resolve-helper.js +148 -0
  362. package/dist/tools/pool-resolve-helper.js.map +1 -0
  363. package/dist/tools/progress-phases.d.ts +46 -0
  364. package/dist/tools/progress-phases.d.ts.map +1 -0
  365. package/dist/tools/progress-phases.js +48 -0
  366. package/dist/tools/progress-phases.js.map +1 -0
  367. package/dist/tools/shared-schemas.d.ts +25 -0
  368. package/dist/tools/shared-schemas.d.ts.map +1 -0
  369. package/dist/tools/shared-schemas.js +72 -0
  370. package/dist/tools/shared-schemas.js.map +1 -0
  371. package/dist/tools/sources/builders.d.ts +13 -0
  372. package/dist/tools/sources/builders.d.ts.map +1 -0
  373. package/dist/tools/sources/builders.js +118 -0
  374. package/dist/tools/sources/builders.js.map +1 -0
  375. package/dist/tools/sources/handlers-bind.d.ts +28 -0
  376. package/dist/tools/sources/handlers-bind.d.ts.map +1 -0
  377. package/dist/tools/sources/handlers-bind.js +181 -0
  378. package/dist/tools/sources/handlers-bind.js.map +1 -0
  379. package/dist/tools/sources/handlers.d.ts +47 -0
  380. package/dist/tools/sources/handlers.d.ts.map +1 -0
  381. package/dist/tools/sources/handlers.js +108 -0
  382. package/dist/tools/sources/handlers.js.map +1 -0
  383. package/dist/tools/sources/index.d.ts +19 -0
  384. package/dist/tools/sources/index.d.ts.map +1 -0
  385. package/dist/tools/sources/index.js +18 -0
  386. package/dist/tools/sources/index.js.map +1 -0
  387. package/dist/tools/sources.d.ts +14 -0
  388. package/dist/tools/sources.d.ts.map +1 -0
  389. package/dist/tools/sources.js +14 -0
  390. package/dist/tools/sources.js.map +1 -0
  391. package/dist/tools/sparse-fields.d.ts +106 -0
  392. package/dist/tools/sparse-fields.d.ts.map +1 -0
  393. package/dist/tools/sparse-fields.js +165 -0
  394. package/dist/tools/sparse-fields.js.map +1 -0
  395. package/dist/tools/tool-builder/annotations.d.ts +55 -0
  396. package/dist/tools/tool-builder/annotations.d.ts.map +1 -0
  397. package/dist/tools/tool-builder/annotations.js +86 -0
  398. package/dist/tools/tool-builder/annotations.js.map +1 -0
  399. package/dist/tools/tool-builder/define.d.ts +31 -0
  400. package/dist/tools/tool-builder/define.d.ts.map +1 -0
  401. package/dist/tools/tool-builder/define.js +31 -0
  402. package/dist/tools/tool-builder/define.js.map +1 -0
  403. package/dist/tools/tool-builder/index.d.ts +28 -0
  404. package/dist/tools/tool-builder/index.d.ts.map +1 -0
  405. package/dist/tools/tool-builder/index.js +27 -0
  406. package/dist/tools/tool-builder/index.js.map +1 -0
  407. package/dist/tools/tool-builder/results.d.ts +104 -0
  408. package/dist/tools/tool-builder/results.d.ts.map +1 -0
  409. package/dist/tools/tool-builder/results.js +224 -0
  410. package/dist/tools/tool-builder/results.js.map +1 -0
  411. package/dist/tools/tool-builder/types.d.ts +97 -0
  412. package/dist/tools/tool-builder/types.d.ts.map +1 -0
  413. package/dist/tools/tool-builder/types.js +9 -0
  414. package/dist/tools/tool-builder/types.js.map +1 -0
  415. package/dist/tools/tool-builder.d.ts +16 -0
  416. package/dist/tools/tool-builder.d.ts.map +1 -0
  417. package/dist/tools/tool-builder.js +16 -0
  418. package/dist/tools/tool-builder.js.map +1 -0
  419. package/dist/uninstall-skill.d.ts +52 -0
  420. package/dist/uninstall-skill.d.ts.map +1 -0
  421. package/dist/uninstall-skill.js +146 -0
  422. package/dist/uninstall-skill.js.map +1 -0
  423. package/dist/uninstall.d.ts +73 -0
  424. package/dist/uninstall.d.ts.map +1 -0
  425. package/dist/uninstall.js +82 -0
  426. package/dist/uninstall.js.map +1 -0
  427. package/icon.png +0 -0
  428. package/manifest.json +10 -10
  429. package/package.json +4 -1
  430. package/skills/yt-builder-mcp/SKILL.md +30 -26
@@ -0,0 +1,224 @@
1
+ /**
2
+ * `tool-builder/results` — envelope builders (`jsonResult`,
3
+ * `errorResult`, `structuredResult`, `confirmGuard`) + the shared
4
+ * `sanitizeContentItem` helper. Every payload accepted here runs
5
+ * through the `sanitizeSecrets` / `sanitizeForLogs` boundary so an
6
+ * upstream regression can never land in the LLM context. The mask
7
+ * is concentrated here — `define.ts` and call-sites do not re-mask.
8
+ *
9
+ * Split from `tool-builder.ts` in Round-1.5.
10
+ *
11
+ * @license MIT
12
+ */
13
+ import { NetworkError, RestError } from '../../errors.js';
14
+ import { sanitizeForLogs } from '../../errors/mask.js';
15
+ import { sanitizeSecrets } from '../../errors/sanitize.js';
16
+ function stringify(value) {
17
+ try {
18
+ return JSON.stringify(value, null, 2);
19
+ }
20
+ catch {
21
+ return String(value);
22
+ }
23
+ }
24
+ /**
25
+ * Convert any JSON-serializable value into the MCP content envelope
26
+ * (2-space JSON). Wave G.6.4b: every payload is deep-walked through
27
+ * `sanitizeSecrets` before stringification so an upstream regression
28
+ * (REST handler surfacing `oauth_refresh_token`, `auth_data`, etc.)
29
+ * can never land in the LLM context.
30
+ */
31
+ export function jsonResult(payload, options = {}) {
32
+ const safe = sanitizeSecrets(payload);
33
+ return {
34
+ content: [{ type: 'text', text: stringify(safe) }],
35
+ ...(options.isError === true ? { isError: true } : {}),
36
+ };
37
+ }
38
+ /** Extract `(message, status?, code?)` from any thrown value, honouring
39
+ * `RestError` / `NetworkError` shape distinctions. */
40
+ function describeError(e) {
41
+ if (e instanceof RestError)
42
+ return { message: e.message, status: e.status, code: e.code };
43
+ if (e instanceof NetworkError)
44
+ return { message: e.message };
45
+ if (e instanceof Error)
46
+ return { message: e.message };
47
+ return { message: stringify(e) };
48
+ }
49
+ /**
50
+ * Render a structured error result with `context` (echoed input) and a
51
+ * recovery `hint`. Wave G.6.3 defense-in-depth: message is
52
+ * mask-and-truncate'd; context is deep-walked so an input param that
53
+ * accidentally echoed a secret-bearing value cannot leak.
54
+ */
55
+ export function errorResult(opts) {
56
+ const { message, status, code } = describeError(opts.error);
57
+ return jsonResult({
58
+ error: sanitizeForLogs(message),
59
+ ...(status !== undefined ? { status } : {}),
60
+ ...(code !== undefined ? { code } : {}),
61
+ context: sanitizeSecrets(opts.context),
62
+ hint: opts.hint,
63
+ }, { isError: true });
64
+ }
65
+ /**
66
+ * Confirm-guard preview helper for destructive tools. Returns the
67
+ * preview `ToolResult` when `confirm` is false; callers `return` it
68
+ * before executing the destructive REST call.
69
+ */
70
+ export function confirmGuard(opts) {
71
+ return jsonResult({
72
+ preview: true,
73
+ warning: 'DESTRUCTIVE — Confirmation required',
74
+ operation: opts.operation,
75
+ details: opts.details,
76
+ instruction: 'Ask the user to confirm, then call again with `confirm: true`.',
77
+ });
78
+ }
79
+ /**
80
+ * Sanitise a single content item from a toolkit builder. Text items
81
+ * frequently embed a JSON-stringified payload — if it parses, deep-walk
82
+ * and re-stringify; otherwise leave as-is (toolkit-rendered tables /
83
+ * details are already domain-mapped at the call site).
84
+ */
85
+ function sanitizeContentItem(item) {
86
+ if (item.type !== 'text' || typeof item.text !== 'string')
87
+ return item;
88
+ const text = item.text;
89
+ try {
90
+ const parsed = JSON.parse(text);
91
+ const safe = sanitizeSecrets(parsed);
92
+ return { ...item, text: stringify(safe) };
93
+ }
94
+ catch {
95
+ // Not JSON — toolkit-rendered text. No structural redaction
96
+ // possible without false-positives; the caller has already
97
+ // mapped raw secrets out via field-projection helpers.
98
+ return item;
99
+ }
100
+ }
101
+ /**
102
+ * Merge a toolkit `StructuredCallToolResult` (carries `content[0].text`
103
+ * + `_meta.ui`) with a domain-typed `structuredContent` payload. The
104
+ * result satisfies both Rich-Card hosts (read `_meta.ui`) AND
105
+ * structured-output hosts (read `structuredContent`, may validate
106
+ * against `outputSchema`). Single envelope-merger from every migrated
107
+ * tool's handler — toolkit builders are wrapped, not modified.
108
+ */
109
+ /**
110
+ * W6.2 — site-awareness envelope wrapper.
111
+ *
112
+ * Stamps a resolved-site descriptor onto a tool result so the human +
113
+ * agent both know which connected site the call ran against. Two
114
+ * channels:
115
+ *
116
+ * 1. **text-prefix PRIMARY surface** — `[<label or site_id> @
117
+ * <hostname>] ` is injected at the start of `content[0].text`
118
+ * when that block is a text item. Per the W6 web-research
119
+ * addendum (HCFV §B, Claude-Desktop UI gap doc'd in plan
120
+ * Z.1329-1332), `_meta` is read by the agent but NOT rendered as
121
+ * a UI widget today — so the prefix is the only thing Maria the
122
+ * Claude-Desktop-user reliably SEES. LOAD-BEARING.
123
+ *
124
+ * 2. **result-level `_meta` SECONDARY surface** — `_meta:
125
+ * {site_id, site_url, platform}` is merged into the RESULT-level
126
+ * `_meta` (alongside the toolkit's `_meta.ui`). This is the
127
+ * MCP-spec metadata channel: free-form and NOT validated against
128
+ * the tool's `outputSchema`.
129
+ *
130
+ * W12-R2 fix: site meta was previously merged into
131
+ * `structuredContent._meta`. That broke real hosts. Every tool's
132
+ * `outputSchema` is generated with `additionalProperties:false`,
133
+ * so an undeclared `_meta` key inside `structuredContent` fails
134
+ * client-side schema validation (`-32602`) and surfaces as a
135
+ * "Failed to call tool" toast in Claude Desktop EVEN ON A
136
+ * SUCCESSFUL CALL. `live-verify.mjs` never caught it because raw
137
+ * JSON-RPC calls skip the host's structuredContent↔outputSchema
138
+ * validation. `structuredContent` must stay schema-pure.
139
+ *
140
+ * Pure function: never mutates the input result. Non-text blocks
141
+ * (resource / image / etc.) pass through verbatim. `structuredContent`
142
+ * is passed through UNTOUCHED so it always validates against
143
+ * `outputSchema`. Empty `content[]` is tolerated and produces a
144
+ * prefix-free result (the meta still lands in result-level `_meta`).
145
+ *
146
+ * Label-fallback: `site.label` wins; falls back to `site.id`.
147
+ *
148
+ * Hostname extraction defaults to `new URL(site.url).host`. A
149
+ * malformed URL falls back to the raw site.url string so the prefix
150
+ * remains user-readable even when the registry was hand-edited.
151
+ */
152
+ export function withSiteMeta(result, site) {
153
+ const displayLabel = site.label ?? site.id;
154
+ let host;
155
+ try {
156
+ host = new URL(site.url).host;
157
+ }
158
+ catch {
159
+ host = site.url;
160
+ }
161
+ const prefix = `[${displayLabel} @ ${host}] `;
162
+ const meta = {
163
+ site_id: site.id,
164
+ site_url: site.url,
165
+ platform: site.platform.kind,
166
+ };
167
+ // W12-R1.2 (A4-F2): site-awareness is the LOAD-BEARING surface for
168
+ // Claude-Desktop users. When the wrapped result has no text content
169
+ // (e.g. an image-only / resource-only / empty-list response), the
170
+ // prefix would otherwise be lost and the agent would have no visible
171
+ // signal of which site the call ran against. Prepend a synthetic
172
+ // text block so the prefix is ALWAYS the first visible glyph.
173
+ // Trim the trailing space — a standalone prefix block reads better
174
+ // without it.
175
+ const firstItem = result.content[0];
176
+ const needsSynthetic = result.content.length === 0
177
+ || firstItem === undefined
178
+ || firstItem.type !== 'text';
179
+ const newContent = needsSynthetic
180
+ ? [
181
+ { type: 'text', text: prefix.trimEnd() },
182
+ ...result.content,
183
+ ]
184
+ : result.content.map((item, idx) => {
185
+ if (idx !== 0)
186
+ return item;
187
+ if (item.type !== 'text')
188
+ return item;
189
+ const existingText = typeof item.text === 'string' ? item.text : '';
190
+ return { ...item, text: prefix + existingText };
191
+ });
192
+ // Site meta merges into the RESULT-level `_meta` (next to the
193
+ // toolkit's `_meta.ui`), NEVER into `structuredContent`. The latter
194
+ // is validated by the host against the tool's `outputSchema`
195
+ // (additionalProperties:false); an undeclared key there triggers a
196
+ // `-32602` "Failed to call tool" reject even on success. The result
197
+ // envelope `_meta` is the spec's free-form metadata channel.
198
+ const baseTopMeta = result._meta;
199
+ const mergedTopMeta = baseTopMeta !== undefined && baseTopMeta !== null && typeof baseTopMeta === 'object'
200
+ ? { ...baseTopMeta, ...meta }
201
+ : meta;
202
+ return {
203
+ ...result,
204
+ content: newContent,
205
+ _meta: mergedTopMeta,
206
+ };
207
+ }
208
+ export function structuredResult(toolkitResult, structuredContent) {
209
+ // Wave G.6.4b — deep-walk-sanitise all three legs (text content,
210
+ // _meta.ui, structuredContent) so regressing sources never bypass
211
+ // the LLM-boundary mask.
212
+ const safeContent = toolkitResult.content.map(sanitizeContentItem);
213
+ const safeStructured = sanitizeSecrets(structuredContent);
214
+ const safeMeta = toolkitResult._meta !== undefined
215
+ ? sanitizeSecrets(toolkitResult._meta)
216
+ : undefined;
217
+ return {
218
+ content: safeContent,
219
+ ...(safeMeta !== undefined ? { _meta: safeMeta } : {}),
220
+ ...(toolkitResult.isError === true ? { isError: true } : {}),
221
+ structuredContent: safeStructured,
222
+ };
223
+ }
224
+ //# sourceMappingURL=results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../../src/tools/tool-builder/results.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI3D,SAAS,SAAS,CAAC,KAAc;IAC7B,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,UAAiC,EAAE;IAC5E,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACN,CAAC;AAED;sDACsD;AACtD,SAAS,aAAa,CAClB,CAAU;IAEV,IAAI,CAAC,YAAY,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1F,IAAI,CAAC,YAAY,YAAY;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7D,IAAI,CAAC,YAAY,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAI3B;IACG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,OAAO,UAAU,CACb;QACI,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC;QAC/B,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,IAAI,EAAE,IAAI,CAAC,IAAI;KAClB,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CACpB,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAG5B;IACG,OAAO,UAAU,CAAC;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,qCAAqC;QAC9C,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,gEAAgE;KAChF,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,IAAiB;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC;QACD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACL,4DAA4D;QAC5D,2DAA2D;QAC3D,uDAAuD;QACvD,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,YAAY,CACxB,MAAS,EACT,IAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;IAC3C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC;IAE9C,MAAM,IAAI,GAAG;QACT,OAAO,EAAE,IAAI,CAAC,EAAE;QAChB,QAAQ,EAAE,IAAI,CAAC,GAAG;QAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;KAC/B,CAAC;IAEF,mEAAmE;IACnE,oEAAoE;IACpE,kEAAkE;IAClE,qEAAqE;IACrE,iEAAiE;IACjE,8DAA8D;IAC9D,mEAAmE;IACnE,cAAc;IACd,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,cAAc,GAChB,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;WACxB,SAAS,KAAK,SAAS;WACvB,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;IAEjC,MAAM,UAAU,GAAkB,cAAc;QAC5C,CAAC,CAAC;YACI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE;YACxC,GAAG,MAAM,CAAC,OAAO;SACpB;QACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAe,EAAE;YAC1C,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YACtC,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IAET,8DAA8D;IAC9D,oEAAoE;IACpE,6DAA6D;IAC7D,mEAAmE;IACnE,oEAAoE;IACpE,6DAA6D;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IACjC,MAAM,aAAa,GACf,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ;QAChF,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,EAAE;QAC7B,CAAC,CAAC,IAAI,CAAC;IAEf,OAAO;QACH,GAAG,MAAM;QACT,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,aAAa;KACvB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,aAIC,EACD,iBAA0C;IAE1C,iEAAiE;IACjE,kEAAkE;IAClE,yBAAyB;IACzB,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAA4B,CAAC;IACrF,MAAM,QAAQ,GACV,aAAa,CAAC,KAAK,KAAK,SAAS;QAC7B,CAAC,CAAE,eAAe,CAAC,aAAa,CAAC,KAAK,CAAgD;QACtF,CAAC,CAAC,SAAS,CAAC;IACpB,OAAO;QACH,OAAO,EAAE,WAAW;QACpB,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,aAAa,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,iBAAiB,EAAE,cAAc;KACpC,CAAC;AACN,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * `tool-builder/types` — pure type declarations for the tool-definition
3
+ * system. Split from `tool-builder.ts` in Round-1.5 (replaces the
4
+ * Round-1 LoC-exception spec-amendment with a structural code-fix).
5
+ *
6
+ * @license MIT
7
+ */
8
+ import type { ServerNotification } from '@modelcontextprotocol/sdk/types.js';
9
+ import type { ZodRawShape, z } from 'zod';
10
+ /**
11
+ * A content item the SDK accepts. Mirrors the SDK
12
+ * `CallToolResult.content[number]` union (text/image/resource). Tools
13
+ * in this server only emit text, but the toolkit's structured builders
14
+ * return the wider union, so the envelope-merger must accept it.
15
+ */
16
+ export type ToolContent = {
17
+ type: string;
18
+ [key: string]: unknown;
19
+ };
20
+ /**
21
+ * MCP-compatible content envelope. Fields:
22
+ * - `content` — text blocks shown to the LLM.
23
+ * - `isError` — flag honoured by the SDK for error results.
24
+ * - `_meta.ui` — Rich-Card hints (toolkit structured-display
25
+ * protocol: data-table, detail, stats, error).
26
+ * - `structuredContent` — domain-typed payload validated against the
27
+ * tool's optional `outputSchema`.
28
+ */
29
+ export interface ToolResult {
30
+ content: ToolContent[];
31
+ isError?: boolean;
32
+ _meta?: {
33
+ ui?: unknown;
34
+ } & Record<string, unknown>;
35
+ structuredContent?: Record<string, unknown>;
36
+ }
37
+ export interface ToolAnnotations {
38
+ readonly title?: string;
39
+ /** Tool does not mutate state. */
40
+ readonly readOnlyHint?: boolean;
41
+ /** Tool may delete or otherwise destroy state. */
42
+ readonly destructiveHint?: boolean;
43
+ /** Tool talks to a system outside the host process. */
44
+ readonly openWorldHint?: boolean;
45
+ /** Identical invocations have identical effects (PUT-style). */
46
+ readonly idempotentHint?: boolean;
47
+ }
48
+ /**
49
+ * Minimal MCP-handler `extra` surface used by Wave G.5 progress reports.
50
+ * Only `_meta.progressToken` and `sendNotification` are consumed; the
51
+ * toolkit's `createProgressReporter` is defined against this same
52
+ * minimal shape so we forward verbatim with no cast at the call site.
53
+ */
54
+ export interface HandlerExtra {
55
+ readonly _meta?: {
56
+ progressToken?: string | number;
57
+ };
58
+ readonly sendNotification: (notification: ServerNotification) => Promise<void>;
59
+ }
60
+ export type ToolHandler<TSchema extends ZodRawShape> = (args: z.infer<z.ZodObject<TSchema>>, extra?: HandlerExtra) => Promise<ToolResult>;
61
+ export interface ToolDefinition<TSchema extends ZodRawShape = ZodRawShape> {
62
+ readonly name: string;
63
+ readonly description: string;
64
+ readonly inputSchema: TSchema;
65
+ /**
66
+ * Optional Zod schema describing the `structuredContent` payload.
67
+ * Hosts that support MCP structured output validate responses
68
+ * against this schema. Set on migrated tools using
69
+ * `structuredResult` / `tableResult` / `detailResult` /
70
+ * `statsResult`; tools on `jsonResult` may omit it.
71
+ */
72
+ readonly outputSchema?: z.ZodTypeAny;
73
+ readonly annotations: ToolAnnotations;
74
+ readonly handler: ToolHandler<TSchema>;
75
+ /**
76
+ * F-203 follow-up (Audit 2026-05-26 reviewer Gap 2): optional refined
77
+ * `ZodObject` representation of the input shape. When present,
78
+ * `registerToolOn` forwards THIS to the SDK in place of the raw
79
+ * `inputSchema` shape — so a top-level `.refine()` / `.superRefine()`
80
+ * is honoured by the SDK's pre-handler validation and a violation
81
+ * surfaces as a JSON-RPC `-32602 InvalidParams` envelope BEFORE the
82
+ * handler runs.
83
+ *
84
+ * The handler signature is still derived from `inputSchema: TSchema`
85
+ * (the raw shape) so the per-handler arg type stays inferred and
86
+ * stable. The refined object MUST be built from the SAME shape — any
87
+ * drift will compile-fail on the handler's argument typing.
88
+ */
89
+ readonly inputObjectSchema?: z.ZodTypeAny;
90
+ }
91
+ /**
92
+ * Type-erased tool definition used by the aggregator and server. Tools
93
+ * carry their own runtime-typed handler internally — at the registry
94
+ * boundary we only need the metadata + an opaque handler.
95
+ */
96
+ export type AnyToolDefinition = ToolDefinition<any>;
97
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/tool-builder/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,gEAAgE;IAChE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClF;AAED,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,WAAW,IAAI,CACnD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EACnC,KAAK,CAAC,EAAE,YAAY,KACnB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACvC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;CAC7C;AAED;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `tool-builder/types` — pure type declarations for the tool-definition
3
+ * system. Split from `tool-builder.ts` in Round-1.5 (replaces the
4
+ * Round-1 LoC-exception spec-amendment with a structural code-fix).
5
+ *
6
+ * @license MIT
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/tool-builder/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `tool-builder.ts` — backward-compat re-export barrel.
3
+ *
4
+ * The implementation was split into `tool-builder/{types,annotations,
5
+ * results,define}.ts` in Round-1.5 (replaces the Round-1 LoC-exception
6
+ * spec-amendment with a structural code-fix). All existing
7
+ * `./tool-builder.js` imports continue to work via this re-export.
8
+ *
9
+ * For new code, prefer importing from `./tool-builder/index.js` (or
10
+ * the specific submodule) — but the barrel here is the stable
11
+ * public-import path for the package's internal modules.
12
+ *
13
+ * @license MIT
14
+ */
15
+ export * from './tool-builder/index.js';
16
+ //# sourceMappingURL=tool-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-builder.d.ts","sourceRoot":"","sources":["../../src/tools/tool-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `tool-builder.ts` — backward-compat re-export barrel.
3
+ *
4
+ * The implementation was split into `tool-builder/{types,annotations,
5
+ * results,define}.ts` in Round-1.5 (replaces the Round-1 LoC-exception
6
+ * spec-amendment with a structural code-fix). All existing
7
+ * `./tool-builder.js` imports continue to work via this re-export.
8
+ *
9
+ * For new code, prefer importing from `./tool-builder/index.js` (or
10
+ * the specific submodule) — but the barrel here is the stable
11
+ * public-import path for the package's internal modules.
12
+ *
13
+ * @license MIT
14
+ */
15
+ export * from './tool-builder/index.js';
16
+ //# sourceMappingURL=tool-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-builder.js","sourceRoot":"","sources":["../../src/tools/tool-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * `uninstall-skill` — the inverse of {@link installSkill}.
3
+ *
4
+ * Removes the bundled skill directory from the user's agent-skill folder
5
+ * (`~/.claude/skills/yt-builder-mcp/`, plus the legacy
6
+ * `~/.claude/skills/yootheme-builder/`) and strips the marker block this
7
+ * package appended to `~/AGENTS.md`.
8
+ *
9
+ * Idempotent + non-destructive to the user's own content: only OUR
10
+ * `## YT Builder MCP` marker section is removed from AGENTS.md; every
11
+ * other line the user wrote is preserved verbatim.
12
+ *
13
+ * @license MIT
14
+ */
15
+ export interface UninstallSkillOptions {
16
+ /** Dir that holds the installed skill folder(s). Default `~/.claude/skills`. */
17
+ readonly targetSkillsDir?: string;
18
+ /** AGENTS.md file the marker block was appended to. Default `~/AGENTS.md`. */
19
+ readonly targetAgentsFile?: string;
20
+ }
21
+ export interface UninstallSkillResult {
22
+ /** True when at least one skill directory was removed. */
23
+ readonly skillRemoved: boolean;
24
+ /** Absolute path of the canonical skill dir that was targeted. */
25
+ readonly skillTargetDir: string;
26
+ /** True when the marker block was stripped from AGENTS.md. */
27
+ readonly markerRemoved: boolean;
28
+ /** Absolute AGENTS.md path that was inspected / mutated. */
29
+ readonly agentsFile: string;
30
+ }
31
+ /**
32
+ * True when a skill folder OR an AGENTS.md marker is present — used by
33
+ * the uninstall CLI to decide whether to surface the "remove skill"
34
+ * checkbox at all.
35
+ */
36
+ export declare function isSkillInstalled(opts?: UninstallSkillOptions): boolean;
37
+ /**
38
+ * Strip our `## YT Builder MCP` marker section from an AGENTS.md body.
39
+ *
40
+ * The block installSkill writes is:
41
+ *
42
+ * \n\n## YT Builder MCP\n\n<MARKER_LINE>\n<a few prose lines>\n
43
+ *
44
+ * It is always appended at EOF. We locate the `## YT Builder MCP`
45
+ * heading whose following lines contain {@link MARKER_LINE}, then remove
46
+ * from that heading (collapsing the blank lines that preceded it) up to
47
+ * the next top-level/section heading (`# ` or `## `) or EOF. Returns the
48
+ * cleaned body, or `null` when no marker block was found (no-op).
49
+ */
50
+ export declare function stripMarkerBlock(body: string): string | null;
51
+ export declare function uninstallSkill(options?: UninstallSkillOptions): Promise<UninstallSkillResult>;
52
+ //# sourceMappingURL=uninstall-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall-skill.d.ts","sourceRoot":"","sources":["../src/uninstall-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgBH,MAAM,WAAW,qBAAqB;IAClC,gFAAgF;IAChF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAUD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAc1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoD5D;AAED,wBAAsB,cAAc,CAChC,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * `uninstall-skill` — the inverse of {@link installSkill}.
3
+ *
4
+ * Removes the bundled skill directory from the user's agent-skill folder
5
+ * (`~/.claude/skills/yt-builder-mcp/`, plus the legacy
6
+ * `~/.claude/skills/yootheme-builder/`) and strips the marker block this
7
+ * package appended to `~/AGENTS.md`.
8
+ *
9
+ * Idempotent + non-destructive to the user's own content: only OUR
10
+ * `## YT Builder MCP` marker section is removed from AGENTS.md; every
11
+ * other line the user wrote is preserved verbatim.
12
+ *
13
+ * @license MIT
14
+ */
15
+ import { existsSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
16
+ import { homedir } from 'node:os';
17
+ import { join } from 'node:path';
18
+ import { MARKER_LINE } from './install-skill.js';
19
+ /** Skill folder names this package has ever installed (canonical first). */
20
+ const SKILL_DIR_NAMES = ['yt-builder-mcp', 'yootheme-builder'];
21
+ function resolveSkillsDir(opts) {
22
+ return opts.targetSkillsDir ?? join(homedir(), '.claude', 'skills');
23
+ }
24
+ function resolveAgentsFile(opts) {
25
+ return opts.targetAgentsFile ?? join(homedir(), 'AGENTS.md');
26
+ }
27
+ /**
28
+ * True when a skill folder OR an AGENTS.md marker is present — used by
29
+ * the uninstall CLI to decide whether to surface the "remove skill"
30
+ * checkbox at all.
31
+ */
32
+ export function isSkillInstalled(opts = {}) {
33
+ const skillsDir = resolveSkillsDir(opts);
34
+ for (const name of SKILL_DIR_NAMES) {
35
+ if (existsSync(join(skillsDir, name)))
36
+ return true;
37
+ }
38
+ const agentsFile = resolveAgentsFile(opts);
39
+ if (existsSync(agentsFile)) {
40
+ try {
41
+ if (readFileSync(agentsFile, 'utf-8').includes(MARKER_LINE))
42
+ return true;
43
+ }
44
+ catch {
45
+ // unreadable → treat as not-installed
46
+ }
47
+ }
48
+ return false;
49
+ }
50
+ /**
51
+ * Strip our `## YT Builder MCP` marker section from an AGENTS.md body.
52
+ *
53
+ * The block installSkill writes is:
54
+ *
55
+ * \n\n## YT Builder MCP\n\n<MARKER_LINE>\n<a few prose lines>\n
56
+ *
57
+ * It is always appended at EOF. We locate the `## YT Builder MCP`
58
+ * heading whose following lines contain {@link MARKER_LINE}, then remove
59
+ * from that heading (collapsing the blank lines that preceded it) up to
60
+ * the next top-level/section heading (`# ` or `## `) or EOF. Returns the
61
+ * cleaned body, or `null` when no marker block was found (no-op).
62
+ */
63
+ export function stripMarkerBlock(body) {
64
+ if (!body.includes(MARKER_LINE))
65
+ return null;
66
+ const lines = body.split('\n');
67
+ // Find the `## YT Builder MCP` heading that owns the marker line.
68
+ let headingIdx = -1;
69
+ for (let i = 0; i < lines.length; i++) {
70
+ if (lines[i].trim() === '## YT Builder MCP') {
71
+ // Confirm the marker line appears before the next heading.
72
+ for (let j = i + 1; j < lines.length; j++) {
73
+ const t = lines[j];
74
+ if (/^#{1,2}\s/.test(t))
75
+ break;
76
+ if (t.includes(MARKER_LINE)) {
77
+ headingIdx = i;
78
+ break;
79
+ }
80
+ }
81
+ }
82
+ if (headingIdx !== -1)
83
+ break;
84
+ }
85
+ // Fallback: marker present but no recognised heading (hand-edited).
86
+ // Remove just the marker line + its immediate prose paragraph.
87
+ if (headingIdx === -1) {
88
+ const filtered = lines.filter((l) => !l.includes(MARKER_LINE));
89
+ const cleaned = filtered.join('\n');
90
+ return cleaned === body ? null : cleaned;
91
+ }
92
+ // Walk to the end of the block: next `# `/`## ` heading or EOF.
93
+ let endIdx = lines.length;
94
+ for (let j = headingIdx + 1; j < lines.length; j++) {
95
+ if (/^#{1,2}\s/.test(lines[j])) {
96
+ endIdx = j;
97
+ break;
98
+ }
99
+ }
100
+ // Collapse trailing blank lines that immediately preceded the heading
101
+ // so we don't leave a widening gap.
102
+ let startIdx = headingIdx;
103
+ while (startIdx > 0 && lines[startIdx - 1].trim() === '') {
104
+ startIdx--;
105
+ }
106
+ const kept = [...lines.slice(0, startIdx), ...lines.slice(endIdx)];
107
+ let cleaned = kept.join('\n');
108
+ // Normalise trailing whitespace: collapse 3+ newlines, ensure single
109
+ // trailing newline when there is content.
110
+ cleaned = cleaned.replace(/\n{3,}/g, '\n\n').replace(/\n*$/, '');
111
+ if (cleaned !== '')
112
+ cleaned += '\n';
113
+ return cleaned;
114
+ }
115
+ export async function uninstallSkill(options = {}) {
116
+ const skillsDir = resolveSkillsDir(options);
117
+ const agentsFile = resolveAgentsFile(options);
118
+ const skillTargetDir = join(skillsDir, SKILL_DIR_NAMES[0]);
119
+ // 1. Remove skill directories (canonical + legacy).
120
+ let skillRemoved = false;
121
+ for (const name of SKILL_DIR_NAMES) {
122
+ const dir = join(skillsDir, name);
123
+ if (existsSync(dir)) {
124
+ rmSync(dir, { recursive: true, force: true });
125
+ skillRemoved = true;
126
+ }
127
+ }
128
+ // 2. Strip the marker block from AGENTS.md.
129
+ let markerRemoved = false;
130
+ if (existsSync(agentsFile)) {
131
+ let body = '';
132
+ try {
133
+ body = readFileSync(agentsFile, 'utf-8');
134
+ }
135
+ catch {
136
+ body = '';
137
+ }
138
+ const cleaned = stripMarkerBlock(body);
139
+ if (cleaned !== null) {
140
+ writeFileSync(agentsFile, cleaned, 'utf-8');
141
+ markerRemoved = true;
142
+ }
143
+ }
144
+ return { skillRemoved, skillTargetDir, markerRemoved, agentsFile };
145
+ }
146
+ //# sourceMappingURL=uninstall-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall-skill.js","sourceRoot":"","sources":["../src/uninstall-skill.ts"],"names":[],"mappings":"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"}