@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,84 @@
1
+ /**
2
+ * Multi-Items tool builders.
3
+ *
4
+ * Surfaces two tools that operate on the YT-Pro Multi-Items binding
5
+ * pattern (container ↔ `*_item` pairings — see
6
+ * `./item-container-map.ts`):
7
+ *
8
+ * yootheme_builder_inspect_multi_items_binding
9
+ * → Reports the binding level (none/container/item), the matching
10
+ * container/item pair, and whether legacy implode directives are
11
+ * attached. Surfaces a `recommended_fix` when the binding sits on
12
+ * the container level.
13
+ *
14
+ * yootheme_builder_clean_implode_directives
15
+ * → Removes every `props.source.props.*.implode` directive from
16
+ * the addressed element. Returns the audit log + new etag.
17
+ *
18
+ * @license MIT
19
+ */
20
+ import { z } from 'zod';
21
+ import { withSiteRetry } from '../pool-resolve-helper.js';
22
+ import { ELEMENT_PATH, ETAG, SITE_ID_SCHEMA, TEMPLATE_ID } from '../shared-schemas.js';
23
+ import { defineTool, destructive, readOnly, withSiteMeta, } from '../tool-builder.js';
24
+ import { CLEAN_IMPLODE_OUTPUT_SCHEMA, handleCleanImplodeDirectives, } from './clean-implode-handler.js';
25
+ import { INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA, handleInspectMultiItemsBinding, } from './inspect-handler.js';
26
+ import { InspectionCache } from './inspection-cache.js';
27
+ export function buildMultiItemsTools(pool) {
28
+ // 6.2 — one shared inspection cache per tool-build, keyed on
29
+ // (template_id, element_path, global-etag) with a 60s TTL. Survives
30
+ // across calls within a server lifetime; a write bumps the global
31
+ // etag and naturally invalidates the entry.
32
+ const inspectionCache = new InspectionCache();
33
+ // W6.3 — per-handler resolveSiteOrError. The handlers consume a
34
+ // single-field `MultiItemsHandlerDeps`, so we synthesise it inline
35
+ // with the resolved client.
36
+ return [
37
+ defineTool({
38
+ name: 'yootheme_builder_inspect_multi_items_binding',
39
+ description: 'Reports Multi-Items binding state: container/item pair (grid↔grid_item, ' +
40
+ 'slideshow↔slideshow_item, …), current binding level (none|container|item), ' +
41
+ 'and a recommended_fix when the binding sits on the container instead of the child. ' +
42
+ 'Operates on the default site unless site_id is provided.',
43
+ inputSchema: {
44
+ site_id: SITE_ID_SCHEMA,
45
+ template_id: TEMPLATE_ID,
46
+ element_path: ELEMENT_PATH,
47
+ },
48
+ outputSchema: INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA,
49
+ annotations: readOnly('Inspect Multi-Items Binding'),
50
+ handler: async ({ site_id, ...rest }) => withSiteRetry(pool, site_id, async (client, site) => {
51
+ const deps = { client, cache: inspectionCache };
52
+ return withSiteMeta(await handleInspectMultiItemsBinding(deps, rest), site);
53
+ }),
54
+ }),
55
+ defineTool({
56
+ name: 'yootheme_builder_clean_implode_directives',
57
+ description: 'Strips `props.source.props.*.implode` directives from an element binding. ' +
58
+ 'Returns audit log + new ETag. Idempotent at the server (cleaned_count: 0 ' +
59
+ 'when nothing to remove) but classed as destructive because the affected ' +
60
+ 'binding cannot be restored without re-mapping. Always ask the user to ' +
61
+ 'confirm first, then call again with `confirm: true`. Requires ETag. ' +
62
+ 'Operates on the default site unless site_id is provided.',
63
+ inputSchema: {
64
+ site_id: SITE_ID_SCHEMA,
65
+ template_id: TEMPLATE_ID,
66
+ element_path: ELEMENT_PATH,
67
+ etag: ETAG,
68
+ confirm: z
69
+ .boolean()
70
+ .optional()
71
+ .describe('Must be true to execute. Without it the call returns a preview ' +
72
+ 'and makes NO server-side change; the agent must ask the user ' +
73
+ 'to confirm and retry with `confirm: true`.'),
74
+ },
75
+ outputSchema: CLEAN_IMPLODE_OUTPUT_SCHEMA,
76
+ annotations: destructive('Clean Implode Directives'),
77
+ handler: async ({ site_id, ...rest }) => withSiteRetry(pool, site_id, async (client, site) => {
78
+ const deps = { client };
79
+ return withSiteMeta(await handleCleanImplodeDirectives(deps, rest), site);
80
+ }),
81
+ }),
82
+ ];
83
+ }
84
+ //# sourceMappingURL=builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/multi-items/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EACH,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,GAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,iCAAiC,EACjC,8BAA8B,GAEjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,UAAU,oBAAoB,CAAC,IAAgB;IACjD,6DAA6D;IAC7D,oEAAoE;IACpE,kEAAkE;IAClE,4CAA4C;IAC5C,MAAM,eAAe,GAAG,IAAI,eAAe,EAA2B,CAAC;IAEvE,gEAAgE;IAChE,mEAAmE;IACnE,4BAA4B;IAC5B,OAAO;QACH,UAAU,CAAC;YACP,IAAI,EAAE,8CAA8C;YACpD,WAAW,EACP,0EAA0E;gBAC1E,6EAA6E;gBAC7E,qFAAqF;gBACrF,0DAA0D;YAC9D,WAAW,EAAE;gBACT,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,YAAY;aAC7B;YACD,YAAY,EAAE,iCAAiC;YAC/C,WAAW,EAAE,QAAQ,CAAC,6BAA6B,CAAC;YACpD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChD,MAAM,IAAI,GAA0B,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;gBACvE,OAAO,YAAY,CAAC,MAAM,8BAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAChF,CAAC,CAAC;SACT,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,2CAA2C;YACjD,WAAW,EACP,4EAA4E;gBAC5E,2EAA2E;gBAC3E,0EAA0E;gBAC1E,wEAAwE;gBACxE,sEAAsE;gBACtE,0DAA0D;YAC9D,WAAW,EAAE;gBACT,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,CAAC;qBACL,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CACL,iEAAiE;oBAC7D,+DAA+D;oBAC/D,4CAA4C,CACnD;aACR;YACD,YAAY,EAAE,2BAA2B;YACzC,WAAW,EAAE,WAAW,CAAC,0BAA0B,CAAC;YACpD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChD,MAAM,IAAI,GAA0B,EAAE,MAAM,EAAE,CAAC;gBAC/C,OAAO,YAAY,CAAC,MAAM,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9E,CAAC,CAAC;SACT,CAAC;KACL,CAAC;AACN,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `clean_implode_directives` handler — strip `props.source.props.*.implode`
3
+ * directives from an element binding via REST round-trip.
4
+ *
5
+ * Wave H5 (2026-05-26): destructive confirm-guard. The tool is now
6
+ * registered with `destructive()` annotation (was `mutating()`); per the
7
+ * MCP Goldstandard, every destructive tool MUST also expose a `confirm`
8
+ * input field + preview guard so an auto-acting agent cannot strip
9
+ * implode directives from a binding without an explicit second gate.
10
+ * Mirrors the `element_delete` pattern (handlers-write.ts).
11
+ *
12
+ * @license MIT
13
+ */
14
+ import { z } from 'zod';
15
+ import { type RestClient } from '../../client.js';
16
+ import { type ToolResult } from '../tool-builder.js';
17
+ export declare const CLEAN_IMPLODE_OUTPUT_SCHEMA: z.ZodObject<{
18
+ template_id: z.ZodString;
19
+ element_path: z.ZodString;
20
+ cleaned_count: z.ZodNumber;
21
+ removed_directives: z.ZodArray<z.ZodObject<{
22
+ prop_name: z.ZodString;
23
+ directive: z.ZodRecord<z.ZodString, z.ZodUnknown>;
24
+ }, z.core.$strip>>;
25
+ new_etag: z.ZodString;
26
+ }, z.core.$strip>;
27
+ export interface CleanImplodeHandlerDeps {
28
+ readonly client: RestClient;
29
+ }
30
+ export declare function handleCleanImplodeDirectives({ client }: CleanImplodeHandlerDeps, { template_id, element_path, etag, confirm, }: {
31
+ template_id: string;
32
+ element_path: string;
33
+ etag: string;
34
+ confirm?: boolean;
35
+ }): Promise<ToolResult>;
36
+ //# sourceMappingURL=clean-implode-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-implode-handler.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/clean-implode-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAKH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,2BAA2B;;;;;;;;;iBAWtC,CAAC;AAEH,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC/B;AAED,wBAAsB,4BAA4B,CAC9C,EAAE,MAAM,EAAE,EAAE,uBAAuB,EACnC,EACI,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,OAAO,GACV,EAAE;IACC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,GACF,OAAO,CAAC,UAAU,CAAC,CAgCrB"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * `clean_implode_directives` handler — strip `props.source.props.*.implode`
3
+ * directives from an element binding via REST round-trip.
4
+ *
5
+ * Wave H5 (2026-05-26): destructive confirm-guard. The tool is now
6
+ * registered with `destructive()` annotation (was `mutating()`); per the
7
+ * MCP Goldstandard, every destructive tool MUST also expose a `confirm`
8
+ * input field + preview guard so an auto-acting agent cannot strip
9
+ * implode directives from a binding without an explicit second gate.
10
+ * Mirrors the `element_delete` pattern (handlers-write.ts).
11
+ *
12
+ * @license MIT
13
+ */
14
+ import { z } from 'zod';
15
+ import { encodeElementPath, encodeTemplateId } from '../../client.js';
16
+ import { confirmGuard, errorResult, jsonResult, structuredResult, } from '../tool-builder.js';
17
+ export const CLEAN_IMPLODE_OUTPUT_SCHEMA = z.object({
18
+ template_id: z.string(),
19
+ element_path: z.string(),
20
+ cleaned_count: z.number(),
21
+ removed_directives: z.array(z.object({
22
+ prop_name: z.string(),
23
+ directive: z.record(z.string(), z.unknown()),
24
+ })),
25
+ new_etag: z.string(),
26
+ });
27
+ export async function handleCleanImplodeDirectives({ client }, { template_id, element_path, etag, confirm, }) {
28
+ // Wave H5 confirm-guard. Without `confirm: true` we return a preview
29
+ // payload and make NO HTTP call. The preview surfaces enough context
30
+ // (template + element_path + operation) for the host agent to ask the
31
+ // user to confirm. Symmetric with `element_delete` / `element_unbind_source`.
32
+ if (confirm !== true) {
33
+ return confirmGuard({
34
+ operation: 'strip implode directives from element binding',
35
+ details: { template_id, element_path },
36
+ });
37
+ }
38
+ const encoded = encodeElementPath(element_path);
39
+ try {
40
+ const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/multi-items/clean-implode`, { body: {}, etag });
41
+ // The REST endpoint returns the canonical CLEAN_IMPLODE_OUTPUT_SCHEMA
42
+ // shape ({template_id, element_path, cleaned_count, removed_directives,
43
+ // new_etag}) — pass it through as structuredContent so the declared
44
+ // outputSchema is satisfied (a tool with an outputSchema MUST emit
45
+ // structuredContent, else the MCP SDK rejects with -32602).
46
+ return structuredResult(jsonResult(data), data);
47
+ }
48
+ catch (e) {
49
+ return errorResult({
50
+ error: e,
51
+ context: { template_id, element_path },
52
+ hint: 'On 412 refresh via yootheme_builder_get_etag and retry. On 404 verify the ' +
53
+ 'element_path via yootheme_builder_element_list.',
54
+ });
55
+ }
56
+ }
57
+ //# sourceMappingURL=clean-implode-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-implode-handler.js","sourceRoot":"","sources":["../../../src/tools/multi-items/clean-implode-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACH,YAAY,EACZ,WAAW,EACX,UAAU,EACV,gBAAgB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,kBAAkB,EAAE,CAAC,CAAC,KAAK,CACvB,CAAC,CAAC,MAAM,CAAC;QACL,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC/C,CAAC,CACL;IACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAMH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAC9C,EAAE,MAAM,EAA2B,EACnC,EACI,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,OAAO,GAMV;IAED,qEAAqE;IACrE,qEAAqE;IACrE,sEAAsE;IACtE,8EAA8E;IAC9E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,YAAY,CAAC;YAChB,SAAS,EAAE,+CAA+C;YAC1D,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;SACzC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1B,UAAU,gBAAgB,CAAC,WAAW,CAAC,aAAa,OAAO,4BAA4B,EACvF,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CACrB,CAAC;QACF,sEAAsE;QACtE,wEAAwE;QACxE,oEAAoE;QACpE,mEAAmE;QACnE,4DAA4D;QAC5D,OAAO,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;YACtC,IAAI,EACA,4EAA4E;gBAC5E,iDAAiD;SACxD,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Multi-Items inspection format-sidecar.
3
+ *
4
+ * Wave-16 #34 (6.1): the `inspect_multi_items_binding` report is passed
5
+ * through verbatim to `structuredContent` (which must stay schema-pure),
6
+ * but the human-readable text leg is serialized from the same payload.
7
+ * A deeply-nested report (e.g. a fully-qualified element subtree under
8
+ * `props` / `minimal_layout`, or a future `children` array) would balloon
9
+ * that text leg without bound. `capInspectionDepth` walks the value and
10
+ * truncates any object/array whose depth exceeds the cap, replacing it
11
+ * with an `…and N more` marker so the agent still sees that the subtree
12
+ * was elided rather than silently dropped.
13
+ *
14
+ * Pure / stateless. `structuredContent` is never passed through this —
15
+ * only the text-render copy — so output-schema validation is unaffected.
16
+ *
17
+ * @license MIT
18
+ */
19
+ /**
20
+ * Default recursion cap for the inspect text render. Objects/arrays at a
21
+ * depth strictly greater than this are collapsed to the `…and N more`
22
+ * marker. The root value sits at depth 0.
23
+ */
24
+ export declare const MAX_INSPECTION_DEPTH = 3;
25
+ /**
26
+ * Recursively cap the depth of a JSON-serializable value.
27
+ *
28
+ * - Primitives (string / number / boolean / null / undefined) pass
29
+ * through untouched at any depth.
30
+ * - An object or array sitting AT `maxDepth` is replaced by the
31
+ * `…and N more` marker (N = its immediate child count) instead of
32
+ * recursing further.
33
+ * - Otherwise the container is rebuilt with each child capped at
34
+ * `depth + 1`.
35
+ *
36
+ * @param value the value to cap.
37
+ * @param maxDepth recursion cap (defaults to {@link MAX_INSPECTION_DEPTH}).
38
+ * @param depth current depth (internal; callers omit it).
39
+ */
40
+ export declare function capInspectionDepth(value: unknown, maxDepth?: number, depth?: number): unknown;
41
+ //# sourceMappingURL=inspection-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection-format.d.ts","sourceRoot":"","sources":["../../../../src/tools/multi-items/format/inspection-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAYtC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,MAA6B,EACvC,KAAK,SAAI,GACV,OAAO,CAeT"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Multi-Items inspection format-sidecar.
3
+ *
4
+ * Wave-16 #34 (6.1): the `inspect_multi_items_binding` report is passed
5
+ * through verbatim to `structuredContent` (which must stay schema-pure),
6
+ * but the human-readable text leg is serialized from the same payload.
7
+ * A deeply-nested report (e.g. a fully-qualified element subtree under
8
+ * `props` / `minimal_layout`, or a future `children` array) would balloon
9
+ * that text leg without bound. `capInspectionDepth` walks the value and
10
+ * truncates any object/array whose depth exceeds the cap, replacing it
11
+ * with an `…and N more` marker so the agent still sees that the subtree
12
+ * was elided rather than silently dropped.
13
+ *
14
+ * Pure / stateless. `structuredContent` is never passed through this —
15
+ * only the text-render copy — so output-schema validation is unaffected.
16
+ *
17
+ * @license MIT
18
+ */
19
+ /**
20
+ * Default recursion cap for the inspect text render. Objects/arrays at a
21
+ * depth strictly greater than this are collapsed to the `…and N more`
22
+ * marker. The root value sits at depth 0.
23
+ */
24
+ export const MAX_INSPECTION_DEPTH = 3;
25
+ /** Render the marker that replaces a truncated subtree. */
26
+ function truncationMarker(childCount, maxDepth) {
27
+ return `…and ${String(childCount)} more (truncated at depth ${String(maxDepth)})`;
28
+ }
29
+ /** Number of immediate children an object/array exposes. */
30
+ function childCountOf(value) {
31
+ return Array.isArray(value) ? value.length : Object.keys(value).length;
32
+ }
33
+ /**
34
+ * Recursively cap the depth of a JSON-serializable value.
35
+ *
36
+ * - Primitives (string / number / boolean / null / undefined) pass
37
+ * through untouched at any depth.
38
+ * - An object or array sitting AT `maxDepth` is replaced by the
39
+ * `…and N more` marker (N = its immediate child count) instead of
40
+ * recursing further.
41
+ * - Otherwise the container is rebuilt with each child capped at
42
+ * `depth + 1`.
43
+ *
44
+ * @param value the value to cap.
45
+ * @param maxDepth recursion cap (defaults to {@link MAX_INSPECTION_DEPTH}).
46
+ * @param depth current depth (internal; callers omit it).
47
+ */
48
+ export function capInspectionDepth(value, maxDepth = MAX_INSPECTION_DEPTH, depth = 0) {
49
+ if (value === null || typeof value !== 'object') {
50
+ return value;
51
+ }
52
+ if (depth >= maxDepth) {
53
+ return truncationMarker(childCountOf(value), maxDepth);
54
+ }
55
+ if (Array.isArray(value)) {
56
+ return value.map((item) => capInspectionDepth(item, maxDepth, depth + 1));
57
+ }
58
+ const out = {};
59
+ for (const [key, child] of Object.entries(value)) {
60
+ out[key] = capInspectionDepth(child, maxDepth, depth + 1);
61
+ }
62
+ return out;
63
+ }
64
+ //# sourceMappingURL=inspection-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection-format.js","sourceRoot":"","sources":["../../../../src/tools/multi-items/format/inspection-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,2DAA2D;AAC3D,SAAS,gBAAgB,CAAC,UAAkB,EAAE,QAAgB;IAC1D,OAAO,QAAQ,MAAM,CAAC,UAAU,CAAC,6BAA6B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtF,CAAC;AAED,4DAA4D;AAC5D,SAAS,YAAY,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAC9B,KAAc,EACd,WAAmB,oBAAoB,EACvC,KAAK,GAAG,CAAC;IAET,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QACpB,OAAO,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Multi-Items tool barrel — public entry-point for the YT-Pro
3
+ * Multi-Items binding pattern tools.
4
+ *
5
+ * yootheme_builder_inspect_multi_items_binding
6
+ * → Report the Multi-Items binding state for an element.
7
+ *
8
+ * yootheme_builder_clean_implode_directives
9
+ * → Remove legacy implode directives from an element binding.
10
+ *
11
+ * The canonical container ↔ item map lives in `./item-container-map.ts`
12
+ * (mirror of `WootsUp\BuilderMcp\Elements\ItemContainerMap`).
13
+ *
14
+ * @license MIT
15
+ */
16
+ export { buildMultiItemsTools } from './builders.js';
17
+ export { ITEM_CHILDREN_OF_CONTAINER, containerOf, isContainer, isItem, itemOf, } from './item-container-map.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACH,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,GACT,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Multi-Items tool barrel — public entry-point for the YT-Pro
3
+ * Multi-Items binding pattern tools.
4
+ *
5
+ * yootheme_builder_inspect_multi_items_binding
6
+ * → Report the Multi-Items binding state for an element.
7
+ *
8
+ * yootheme_builder_clean_implode_directives
9
+ * → Remove legacy implode directives from an element binding.
10
+ *
11
+ * The canonical container ↔ item map lives in `./item-container-map.ts`
12
+ * (mirror of `WootsUp\BuilderMcp\Elements\ItemContainerMap`).
13
+ *
14
+ * @license MIT
15
+ */
16
+ export { buildMultiItemsTools } from './builders.js';
17
+ export { ITEM_CHILDREN_OF_CONTAINER, containerOf, isContainer, isItem, itemOf, } from './item-container-map.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/multi-items/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACH,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,GACT,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * `inspect_multi_items_binding` handler — surfaces Multi-Items binding
3
+ * state on an element via REST round-trip.
4
+ *
5
+ * Companion of the PHP `MultiItemsInspector` — see
6
+ * src/modules/builder-source-binding/src/MultiItemsInspector.php
7
+ * for the report shape.
8
+ *
9
+ * Wave-16 #34:
10
+ * - 6.1 depth-cap: the human-readable text leg is capped at
11
+ * {@link MAX_INSPECTION_DEPTH}; structuredContent stays verbatim so
12
+ * it keeps validating against the output schema.
13
+ * - 6.4 severity marker: the response carries a typed `hint.severity`
14
+ * ("advisory" | "blocking") so the agent can tell a structural
15
+ * container-level binding bug apart from informational guidance.
16
+ *
17
+ * @license MIT
18
+ */
19
+ import { z } from 'zod';
20
+ import { type RestClient } from '../../client.js';
21
+ import { type ToolResult } from '../tool-builder.js';
22
+ import { InspectionCache } from './inspection-cache.js';
23
+ /**
24
+ * Severity of the advisory hint the inspector attaches to every report.
25
+ * `blocking` means the binding is structurally wrong (sits on the
26
+ * container instead of the `*_item` child) and the rendered output will
27
+ * be broken until fixed; `advisory` is informational guidance.
28
+ */
29
+ export type HintSeverity = 'advisory' | 'blocking';
30
+ export declare const INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA: z.ZodObject<{
31
+ template_id: z.ZodString;
32
+ report: z.ZodObject<{
33
+ element_path: z.ZodString;
34
+ element_type: z.ZodString;
35
+ is_container: z.ZodBoolean;
36
+ is_item: z.ZodBoolean;
37
+ container_type: z.ZodNullable<z.ZodString>;
38
+ item_type: z.ZodNullable<z.ZodString>;
39
+ current_binding_level: z.ZodEnum<{
40
+ container: "container";
41
+ item: "item";
42
+ none: "none";
43
+ }>;
44
+ has_implode_directives: z.ZodBoolean;
45
+ warning: z.ZodOptional<z.ZodString>;
46
+ recommended_fix: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>;
48
+ etag: z.ZodString;
49
+ hint: z.ZodOptional<z.ZodObject<{
50
+ severity: z.ZodEnum<{
51
+ advisory: "advisory";
52
+ blocking: "blocking";
53
+ }>;
54
+ message: z.ZodString;
55
+ }, z.core.$strip>>;
56
+ }, z.core.$strip>;
57
+ /** The structured inspect payload the handler caches + emits. */
58
+ type InspectStructured = Record<string, unknown>;
59
+ export interface MultiItemsHandlerDeps {
60
+ readonly client: RestClient;
61
+ /**
62
+ * 6.2 — optional inspection cache. When provided, the handler keys
63
+ * results on (template_id, element_path, global-etag) with a 60s TTL.
64
+ * The builder injects one shared instance so repeat inspects within
65
+ * the TTL skip the REST round-trip; a write bumps the global etag and
66
+ * naturally invalidates the entry. Omit it to disable caching (e.g.
67
+ * the cold-AI shape-pin tests that assert the raw round-trip).
68
+ */
69
+ readonly cache?: InspectionCache<InspectStructured>;
70
+ }
71
+ export declare function handleInspectMultiItemsBinding({ client, cache }: MultiItemsHandlerDeps, { template_id, element_path }: {
72
+ template_id: string;
73
+ element_path: string;
74
+ }): Promise<ToolResult>;
75
+ export {};
76
+ //# sourceMappingURL=inspect-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-handler.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/inspect-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAA6C,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwB5C,CAAC;AAEH,iEAAiE;AACjE,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;CACvD;AAoDD,wBAAsB,8BAA8B,CAChD,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,qBAAqB,EACxC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,CAAC,CAwCrB"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * `inspect_multi_items_binding` handler — surfaces Multi-Items binding
3
+ * state on an element via REST round-trip.
4
+ *
5
+ * Companion of the PHP `MultiItemsInspector` — see
6
+ * src/modules/builder-source-binding/src/MultiItemsInspector.php
7
+ * for the report shape.
8
+ *
9
+ * Wave-16 #34:
10
+ * - 6.1 depth-cap: the human-readable text leg is capped at
11
+ * {@link MAX_INSPECTION_DEPTH}; structuredContent stays verbatim so
12
+ * it keeps validating against the output schema.
13
+ * - 6.4 severity marker: the response carries a typed `hint.severity`
14
+ * ("advisory" | "blocking") so the agent can tell a structural
15
+ * container-level binding bug apart from informational guidance.
16
+ *
17
+ * @license MIT
18
+ */
19
+ import { z } from 'zod';
20
+ import { encodeElementPath, encodeTemplateId } from '../../client.js';
21
+ import { errorResult, jsonResult, structuredResult } from '../tool-builder.js';
22
+ import { capInspectionDepth } from './format/inspection-format.js';
23
+ export const INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA = z.object({
24
+ template_id: z.string(),
25
+ report: z.object({
26
+ element_path: z.string(),
27
+ element_type: z.string(),
28
+ is_container: z.boolean(),
29
+ is_item: z.boolean(),
30
+ container_type: z.string().nullable(),
31
+ item_type: z.string().nullable(),
32
+ current_binding_level: z.enum(['none', 'container', 'item']),
33
+ has_implode_directives: z.boolean(),
34
+ warning: z.string().optional(),
35
+ recommended_fix: z.string().optional(),
36
+ }),
37
+ etag: z.string(),
38
+ // 6.4 — typed advisory/blocking marker. Optional so a verbatim REST
39
+ // passthrough that predates this field still validates, but the
40
+ // handler always populates it.
41
+ hint: z
42
+ .object({
43
+ severity: z.enum(['advisory', 'blocking']),
44
+ message: z.string(),
45
+ })
46
+ .optional(),
47
+ });
48
+ /**
49
+ * Classify the report into an advisory/blocking hint. A binding that
50
+ * sits on the container level is the structural bug Multi-Items aims to
51
+ * surface — that is `blocking`. Everything else is `advisory`.
52
+ */
53
+ function buildHint(report) {
54
+ const r = (report ?? {});
55
+ if (r.current_binding_level === 'container') {
56
+ const fix = typeof r.recommended_fix === 'string' && r.recommended_fix !== ''
57
+ ? r.recommended_fix
58
+ : 'Move the binding to the first `*_item` child element.';
59
+ return { severity: 'blocking', message: fix };
60
+ }
61
+ return {
62
+ severity: 'advisory',
63
+ message: 'Binding looks structurally correct. Verify element_path via ' +
64
+ 'yootheme_builder_element_list if the source still renders empty.',
65
+ };
66
+ }
67
+ /**
68
+ * Render a structured inspect payload into the ToolResult envelope.
69
+ * Shared by the cache-hit and cache-miss paths so both legs (text +
70
+ * structuredContent) are built identically.
71
+ *
72
+ * 6.1 — the text leg is depth-capped so a deeply-nested report cannot
73
+ * balloon the LLM context. structuredContent stays verbatim so it keeps
74
+ * validating against INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA
75
+ * (additionalProperties:false).
76
+ */
77
+ function renderInspectResult(structured) {
78
+ const text = jsonResult(capInspectionDepth(structured));
79
+ return structuredResult(text, structured);
80
+ }
81
+ export async function handleInspectMultiItemsBinding({ client, cache }, { template_id, element_path }) {
82
+ const encoded = encodeElementPath(element_path);
83
+ try {
84
+ // 6.2 — when a cache is wired, key on the GLOBAL state etag. Every
85
+ // write tool bumps it, so a mutated template surfaces a fresh etag
86
+ // → a new key → a guaranteed miss. Read-only repeats within the TTL
87
+ // skip the inspect round-trip below.
88
+ let cacheEtag;
89
+ if (cache !== undefined) {
90
+ cacheEtag = await fetchStateEtag(client);
91
+ if (cacheEtag !== undefined) {
92
+ const cached = cache.get(template_id, element_path, cacheEtag);
93
+ if (cached !== undefined) {
94
+ return renderInspectResult(cached);
95
+ }
96
+ }
97
+ }
98
+ const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/multi-items/inspect`);
99
+ // 6.4 — attach the typed severity marker to the structured payload.
100
+ const hint = buildHint(data.report);
101
+ const structured = { ...data, hint };
102
+ if (cache !== undefined && cacheEtag !== undefined) {
103
+ cache.set(template_id, element_path, cacheEtag, structured);
104
+ }
105
+ return renderInspectResult(structured);
106
+ }
107
+ catch (e) {
108
+ return errorResult({
109
+ error: e,
110
+ context: { template_id, element_path },
111
+ hint: 'Verify element_path via yootheme_builder_element_list. Paths are JSON-Pointer ' +
112
+ '(RFC-6901) style: /0/children/1. Use yootheme_builder_element_list to enumerate ' +
113
+ 'valid paths.',
114
+ });
115
+ }
116
+ }
117
+ /**
118
+ * Read the global state ETag used as the cache-invalidation token.
119
+ * Returns `undefined` (cache disabled for this call) if the etag probe
120
+ * fails or returns a non-string — a missing etag must never poison the
121
+ * cache key, and a probe failure should fall through to a live inspect
122
+ * rather than abort the whole call.
123
+ */
124
+ async function fetchStateEtag(client) {
125
+ try {
126
+ const res = await client.get('/etag');
127
+ return typeof res.etag === 'string' && res.etag !== '' ? res.etag : undefined;
128
+ }
129
+ catch {
130
+ return undefined;
131
+ }
132
+ }
133
+ //# sourceMappingURL=inspect-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-handler.js","sourceRoot":"","sources":["../../../src/tools/multi-items/inspect-handler.ts"],"names":[],"mappings":"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"}