@wootsup/yt-builder-mcp 1.1.5 → 1.1.7

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 (400) hide show
  1. package/README.md +56 -55
  2. package/dist/auth.d.ts +119 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +226 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/client.d.ts +84 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +151 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/clients/claude-code.d.ts +18 -0
  11. package/dist/clients/claude-code.d.ts.map +1 -0
  12. package/dist/clients/claude-code.js +53 -0
  13. package/dist/clients/claude-code.js.map +1 -0
  14. package/dist/clients/claude-desktop.d.ts +19 -0
  15. package/dist/clients/claude-desktop.d.ts.map +1 -0
  16. package/dist/clients/claude-desktop.js +56 -0
  17. package/dist/clients/claude-desktop.js.map +1 -0
  18. package/dist/clients/cline.d.ts +26 -0
  19. package/dist/clients/cline.d.ts.map +1 -0
  20. package/dist/clients/cline.js +80 -0
  21. package/dist/clients/cline.js.map +1 -0
  22. package/dist/clients/codex-cli.d.ts +42 -0
  23. package/dist/clients/codex-cli.d.ts.map +1 -0
  24. package/dist/clients/codex-cli.js +194 -0
  25. package/dist/clients/codex-cli.js.map +1 -0
  26. package/dist/clients/continue.d.ts +13 -0
  27. package/dist/clients/continue.d.ts.map +1 -0
  28. package/dist/clients/continue.js +52 -0
  29. package/dist/clients/continue.js.map +1 -0
  30. package/dist/clients/cursor.d.ts +12 -0
  31. package/dist/clients/cursor.d.ts.map +1 -0
  32. package/dist/clients/cursor.js +38 -0
  33. package/dist/clients/cursor.js.map +1 -0
  34. package/dist/clients/gemini-cli.d.ts +18 -0
  35. package/dist/clients/gemini-cli.d.ts.map +1 -0
  36. package/dist/clients/gemini-cli.js +44 -0
  37. package/dist/clients/gemini-cli.js.map +1 -0
  38. package/dist/clients/home.d.ts +14 -0
  39. package/dist/clients/home.d.ts.map +1 -0
  40. package/dist/clients/home.js +20 -0
  41. package/dist/clients/home.js.map +1 -0
  42. package/dist/clients/index.d.ts +52 -0
  43. package/dist/clients/index.d.ts.map +1 -0
  44. package/dist/clients/index.js +72 -0
  45. package/dist/clients/index.js.map +1 -0
  46. package/dist/clients/roo-code.d.ts +23 -0
  47. package/dist/clients/roo-code.d.ts.map +1 -0
  48. package/dist/clients/roo-code.js +69 -0
  49. package/dist/clients/roo-code.js.map +1 -0
  50. package/dist/clients/zed.d.ts +12 -0
  51. package/dist/clients/zed.d.ts.map +1 -0
  52. package/dist/clients/zed.js +41 -0
  53. package/dist/clients/zed.js.map +1 -0
  54. package/dist/errors/hints.d.ts +51 -0
  55. package/dist/errors/hints.d.ts.map +1 -0
  56. package/dist/errors/hints.js +95 -0
  57. package/dist/errors/hints.js.map +1 -0
  58. package/dist/errors/mask.d.ts +35 -0
  59. package/dist/errors/mask.d.ts.map +1 -0
  60. package/dist/errors/mask.js +49 -0
  61. package/dist/errors/mask.js.map +1 -0
  62. package/dist/errors/sanitize.d.ts +31 -0
  63. package/dist/errors/sanitize.d.ts.map +1 -0
  64. package/dist/errors/sanitize.js +100 -0
  65. package/dist/errors/sanitize.js.map +1 -0
  66. package/dist/errors.d.ts +42 -0
  67. package/dist/errors.d.ts.map +1 -0
  68. package/dist/errors.js +61 -0
  69. package/dist/errors.js.map +1 -0
  70. package/dist/gateway/advanced-tool/discovery.d.ts +19 -0
  71. package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -0
  72. package/dist/gateway/advanced-tool/discovery.js +53 -0
  73. package/dist/gateway/advanced-tool/discovery.js.map +1 -0
  74. package/dist/gateway/advanced-tool/domains.d.ts +47 -0
  75. package/dist/gateway/advanced-tool/domains.d.ts.map +1 -0
  76. package/dist/gateway/advanced-tool/domains.js +94 -0
  77. package/dist/gateway/advanced-tool/domains.js.map +1 -0
  78. package/dist/gateway/advanced-tool/execute.d.ts +29 -0
  79. package/dist/gateway/advanced-tool/execute.d.ts.map +1 -0
  80. package/dist/gateway/advanced-tool/execute.js +54 -0
  81. package/dist/gateway/advanced-tool/execute.js.map +1 -0
  82. package/dist/gateway/advanced-tool/index.d.ts +36 -0
  83. package/dist/gateway/advanced-tool/index.d.ts.map +1 -0
  84. package/dist/gateway/advanced-tool/index.js +39 -0
  85. package/dist/gateway/advanced-tool/index.js.map +1 -0
  86. package/dist/gateway/advanced-tool/register.d.ts +18 -0
  87. package/dist/gateway/advanced-tool/register.d.ts.map +1 -0
  88. package/dist/gateway/advanced-tool/register.js +69 -0
  89. package/dist/gateway/advanced-tool/register.js.map +1 -0
  90. package/dist/gateway/advanced-tool.d.ts +13 -0
  91. package/dist/gateway/advanced-tool.d.ts.map +1 -0
  92. package/dist/gateway/advanced-tool.js +13 -0
  93. package/dist/gateway/advanced-tool.js.map +1 -0
  94. package/dist/gateway/capturing-server.d.ts +117 -0
  95. package/dist/gateway/capturing-server.d.ts.map +1 -0
  96. package/dist/gateway/capturing-server.js +103 -0
  97. package/dist/gateway/capturing-server.js.map +1 -0
  98. package/dist/gateway/essentials.d.ts +50 -0
  99. package/dist/gateway/essentials.d.ts.map +1 -0
  100. package/dist/gateway/essentials.js +94 -0
  101. package/dist/gateway/essentials.js.map +1 -0
  102. package/dist/gateway/test-support.d.ts +41 -0
  103. package/dist/gateway/test-support.d.ts.map +1 -0
  104. package/dist/gateway/test-support.js +60 -0
  105. package/dist/gateway/test-support.js.map +1 -0
  106. package/dist/index.d.ts +29 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +111 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/install-skill.d.ts +43 -0
  111. package/dist/install-skill.d.ts.map +1 -0
  112. package/dist/install-skill.js +118 -0
  113. package/dist/install-skill.js.map +1 -0
  114. package/dist/platform/detect.d.ts +64 -0
  115. package/dist/platform/detect.d.ts.map +1 -0
  116. package/dist/platform/detect.js +98 -0
  117. package/dist/platform/detect.js.map +1 -0
  118. package/dist/platform/index.d.ts +121 -0
  119. package/dist/platform/index.d.ts.map +1 -0
  120. package/dist/platform/index.js +176 -0
  121. package/dist/platform/index.js.map +1 -0
  122. package/dist/platform/joomla.d.ts +44 -0
  123. package/dist/platform/joomla.d.ts.map +1 -0
  124. package/dist/platform/joomla.js +46 -0
  125. package/dist/platform/joomla.js.map +1 -0
  126. package/dist/server.d.ts +110 -0
  127. package/dist/server.d.ts.map +1 -0
  128. package/dist/server.js +274 -0
  129. package/dist/server.js.map +1 -0
  130. package/dist/setup-cli-confirm.d.ts +36 -0
  131. package/dist/setup-cli-confirm.d.ts.map +1 -0
  132. package/dist/setup-cli-confirm.js +59 -0
  133. package/dist/setup-cli-confirm.js.map +1 -0
  134. package/dist/setup-cli.d.ts +152 -0
  135. package/dist/setup-cli.d.ts.map +1 -0
  136. package/dist/setup-cli.js +870 -0
  137. package/dist/setup-cli.js.map +1 -0
  138. package/dist/setup-prompts.d.ts +41 -0
  139. package/dist/setup-prompts.d.ts.map +1 -0
  140. package/dist/setup-prompts.js +146 -0
  141. package/dist/setup-prompts.js.map +1 -0
  142. package/dist/setup-token.d.ts +38 -0
  143. package/dist/setup-token.d.ts.map +1 -0
  144. package/dist/setup-token.js +106 -0
  145. package/dist/setup-token.js.map +1 -0
  146. package/dist/setup-wizard-defaults.d.ts +43 -0
  147. package/dist/setup-wizard-defaults.d.ts.map +1 -0
  148. package/dist/setup-wizard-defaults.js +160 -0
  149. package/dist/setup-wizard-defaults.js.map +1 -0
  150. package/dist/setup-wizard-handshake.d.ts +25 -0
  151. package/dist/setup-wizard-handshake.d.ts.map +1 -0
  152. package/dist/setup-wizard-handshake.js +103 -0
  153. package/dist/setup-wizard-handshake.js.map +1 -0
  154. package/dist/setup-wizard-types.d.ts +164 -0
  155. package/dist/setup-wizard-types.d.ts.map +1 -0
  156. package/dist/setup-wizard-types.js +11 -0
  157. package/dist/setup-wizard-types.js.map +1 -0
  158. package/dist/setup-wizard.d.ts +33 -0
  159. package/dist/setup-wizard.d.ts.map +1 -0
  160. package/dist/setup-wizard.js +199 -0
  161. package/dist/setup-wizard.js.map +1 -0
  162. package/dist/setup.d.ts +17 -0
  163. package/dist/setup.d.ts.map +1 -0
  164. package/dist/setup.js +33 -0
  165. package/dist/setup.js.map +1 -0
  166. package/dist/sites/cli/add-site.d.ts +106 -0
  167. package/dist/sites/cli/add-site.d.ts.map +1 -0
  168. package/dist/sites/cli/add-site.js +185 -0
  169. package/dist/sites/cli/add-site.js.map +1 -0
  170. package/dist/sites/cli/list-sites.d.ts +40 -0
  171. package/dist/sites/cli/list-sites.d.ts.map +1 -0
  172. package/dist/sites/cli/list-sites.js +116 -0
  173. package/dist/sites/cli/list-sites.js.map +1 -0
  174. package/dist/sites/cli/remove-site.d.ts +60 -0
  175. package/dist/sites/cli/remove-site.d.ts.map +1 -0
  176. package/dist/sites/cli/remove-site.js +120 -0
  177. package/dist/sites/cli/remove-site.js.map +1 -0
  178. package/dist/sites/cli/set-default.d.ts +47 -0
  179. package/dist/sites/cli/set-default.d.ts.map +1 -0
  180. package/dist/sites/cli/set-default.js +69 -0
  181. package/dist/sites/cli/set-default.js.map +1 -0
  182. package/dist/sites/cli/test-site.d.ts +77 -0
  183. package/dist/sites/cli/test-site.d.ts.map +1 -0
  184. package/dist/sites/cli/test-site.js +146 -0
  185. package/dist/sites/cli/test-site.js.map +1 -0
  186. package/dist/sites/client-pool.d.ts +124 -0
  187. package/dist/sites/client-pool.d.ts.map +1 -0
  188. package/dist/sites/client-pool.js +172 -0
  189. package/dist/sites/client-pool.js.map +1 -0
  190. package/dist/sites/env-bridge.d.ts +55 -0
  191. package/dist/sites/env-bridge.d.ts.map +1 -0
  192. package/dist/sites/env-bridge.js +94 -0
  193. package/dist/sites/env-bridge.js.map +1 -0
  194. package/dist/sites/paths.d.ts +21 -0
  195. package/dist/sites/paths.d.ts.map +1 -0
  196. package/dist/sites/paths.js +37 -0
  197. package/dist/sites/paths.js.map +1 -0
  198. package/dist/sites/probe.d.ts +60 -0
  199. package/dist/sites/probe.d.ts.map +1 -0
  200. package/dist/sites/probe.js +112 -0
  201. package/dist/sites/probe.js.map +1 -0
  202. package/dist/sites/registry.d.ts +142 -0
  203. package/dist/sites/registry.d.ts.map +1 -0
  204. package/dist/sites/registry.js +163 -0
  205. package/dist/sites/registry.js.map +1 -0
  206. package/dist/sites/schema.d.ts +90 -0
  207. package/dist/sites/schema.d.ts.map +1 -0
  208. package/dist/sites/schema.js +71 -0
  209. package/dist/sites/schema.js.map +1 -0
  210. package/dist/sites/secret-resolver.d.ts +115 -0
  211. package/dist/sites/secret-resolver.d.ts.map +1 -0
  212. package/dist/sites/secret-resolver.js +225 -0
  213. package/dist/sites/secret-resolver.js.map +1 -0
  214. package/dist/sites/store.d.ts +82 -0
  215. package/dist/sites/store.d.ts.map +1 -0
  216. package/dist/sites/store.js +198 -0
  217. package/dist/sites/store.js.map +1 -0
  218. package/dist/sites/tools/index.d.ts +28 -0
  219. package/dist/sites/tools/index.d.ts.map +1 -0
  220. package/dist/sites/tools/index.js +30 -0
  221. package/dist/sites/tools/index.js.map +1 -0
  222. package/dist/sites/tools/sites-list.d.ts +48 -0
  223. package/dist/sites/tools/sites-list.d.ts.map +1 -0
  224. package/dist/sites/tools/sites-list.js +137 -0
  225. package/dist/sites/tools/sites-list.js.map +1 -0
  226. package/dist/sites/tools/sites-test.d.ts +47 -0
  227. package/dist/sites/tools/sites-test.d.ts.map +1 -0
  228. package/dist/sites/tools/sites-test.js +148 -0
  229. package/dist/sites/tools/sites-test.js.map +1 -0
  230. package/dist/skill-loader.d.ts +111 -0
  231. package/dist/skill-loader.d.ts.map +1 -0
  232. package/dist/skill-loader.js +191 -0
  233. package/dist/skill-loader.js.map +1 -0
  234. package/dist/tools/elements/builders.d.ts +24 -0
  235. package/dist/tools/elements/builders.d.ts.map +1 -0
  236. package/dist/tools/elements/builders.js +199 -0
  237. package/dist/tools/elements/builders.js.map +1 -0
  238. package/dist/tools/elements/handlers-write.d.ts +49 -0
  239. package/dist/tools/elements/handlers-write.d.ts.map +1 -0
  240. package/dist/tools/elements/handlers-write.js +148 -0
  241. package/dist/tools/elements/handlers-write.js.map +1 -0
  242. package/dist/tools/elements/handlers.d.ts +70 -0
  243. package/dist/tools/elements/handlers.d.ts.map +1 -0
  244. package/dist/tools/elements/handlers.js +292 -0
  245. package/dist/tools/elements/handlers.js.map +1 -0
  246. package/dist/tools/elements/index.d.ts +28 -0
  247. package/dist/tools/elements/index.d.ts.map +1 -0
  248. package/dist/tools/elements/index.js +27 -0
  249. package/dist/tools/elements/index.js.map +1 -0
  250. package/dist/tools/elements.d.ts +13 -0
  251. package/dist/tools/elements.d.ts.map +1 -0
  252. package/dist/tools/elements.js +13 -0
  253. package/dist/tools/elements.js.map +1 -0
  254. package/dist/tools/elicitation.d.ts +87 -0
  255. package/dist/tools/elicitation.d.ts.map +1 -0
  256. package/dist/tools/elicitation.js +100 -0
  257. package/dist/tools/elicitation.js.map +1 -0
  258. package/dist/tools/format/elements-format.d.ts +40 -0
  259. package/dist/tools/format/elements-format.d.ts.map +1 -0
  260. package/dist/tools/format/elements-format.js +194 -0
  261. package/dist/tools/format/elements-format.js.map +1 -0
  262. package/dist/tools/format/health-format.d.ts +79 -0
  263. package/dist/tools/format/health-format.d.ts.map +1 -0
  264. package/dist/tools/format/health-format.js +181 -0
  265. package/dist/tools/format/health-format.js.map +1 -0
  266. package/dist/tools/format/inspection-format.d.ts +59 -0
  267. package/dist/tools/format/inspection-format.d.ts.map +1 -0
  268. package/dist/tools/format/inspection-format.js +303 -0
  269. package/dist/tools/format/inspection-format.js.map +1 -0
  270. package/dist/tools/format/pages-format.d.ts +57 -0
  271. package/dist/tools/format/pages-format.d.ts.map +1 -0
  272. package/dist/tools/format/pages-format.js +157 -0
  273. package/dist/tools/format/pages-format.js.map +1 -0
  274. package/dist/tools/format/sources-format.d.ts +44 -0
  275. package/dist/tools/format/sources-format.d.ts.map +1 -0
  276. package/dist/tools/format/sources-format.js +242 -0
  277. package/dist/tools/format/sources-format.js.map +1 -0
  278. package/dist/tools/health.d.ts +22 -0
  279. package/dist/tools/health.d.ts.map +1 -0
  280. package/dist/tools/health.js +220 -0
  281. package/dist/tools/health.js.map +1 -0
  282. package/dist/tools/index.d.ts +30 -0
  283. package/dist/tools/index.d.ts.map +1 -0
  284. package/dist/tools/index.js +39 -0
  285. package/dist/tools/index.js.map +1 -0
  286. package/dist/tools/inspection.d.ts +14 -0
  287. package/dist/tools/inspection.d.ts.map +1 -0
  288. package/dist/tools/inspection.js +208 -0
  289. package/dist/tools/inspection.js.map +1 -0
  290. package/dist/tools/layout-flatten.d.ts +75 -0
  291. package/dist/tools/layout-flatten.d.ts.map +1 -0
  292. package/dist/tools/layout-flatten.js +107 -0
  293. package/dist/tools/layout-flatten.js.map +1 -0
  294. package/dist/tools/multi-items/builders.d.ts +23 -0
  295. package/dist/tools/multi-items/builders.d.ts.map +1 -0
  296. package/dist/tools/multi-items/builders.js +78 -0
  297. package/dist/tools/multi-items/builders.js.map +1 -0
  298. package/dist/tools/multi-items/clean-implode-handler.d.ts +36 -0
  299. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -0
  300. package/dist/tools/multi-items/clean-implode-handler.js +57 -0
  301. package/dist/tools/multi-items/clean-implode-handler.js.map +1 -0
  302. package/dist/tools/multi-items/index.d.ts +18 -0
  303. package/dist/tools/multi-items/index.d.ts.map +1 -0
  304. package/dist/tools/multi-items/index.js +18 -0
  305. package/dist/tools/multi-items/index.js.map +1 -0
  306. package/dist/tools/multi-items/inspect-handler.d.ts +41 -0
  307. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
  308. package/dist/tools/multi-items/inspect-handler.js +50 -0
  309. package/dist/tools/multi-items/inspect-handler.js.map +1 -0
  310. package/dist/tools/multi-items/item-container-map.d.ts +41 -0
  311. package/dist/tools/multi-items/item-container-map.d.ts.map +1 -0
  312. package/dist/tools/multi-items/item-container-map.js +73 -0
  313. package/dist/tools/multi-items/item-container-map.js.map +1 -0
  314. package/dist/tools/pages/builders.d.ts +14 -0
  315. package/dist/tools/pages/builders.d.ts.map +1 -0
  316. package/dist/tools/pages/builders.js +136 -0
  317. package/dist/tools/pages/builders.js.map +1 -0
  318. package/dist/tools/pages/handlers-read.d.ts +33 -0
  319. package/dist/tools/pages/handlers-read.d.ts.map +1 -0
  320. package/dist/tools/pages/handlers-read.js +203 -0
  321. package/dist/tools/pages/handlers-read.js.map +1 -0
  322. package/dist/tools/pages/handlers-write.d.ts +21 -0
  323. package/dist/tools/pages/handlers-write.d.ts.map +1 -0
  324. package/dist/tools/pages/handlers-write.js +52 -0
  325. package/dist/tools/pages/handlers-write.js.map +1 -0
  326. package/dist/tools/pages/index.d.ts +17 -0
  327. package/dist/tools/pages/index.d.ts.map +1 -0
  328. package/dist/tools/pages/index.js +17 -0
  329. package/dist/tools/pages/index.js.map +1 -0
  330. package/dist/tools/pages/schemas.d.ts +45 -0
  331. package/dist/tools/pages/schemas.d.ts.map +1 -0
  332. package/dist/tools/pages/schemas.js +82 -0
  333. package/dist/tools/pages/schemas.js.map +1 -0
  334. package/dist/tools/pages.d.ts +13 -0
  335. package/dist/tools/pages.d.ts.map +1 -0
  336. package/dist/tools/pages.js +13 -0
  337. package/dist/tools/pages.js.map +1 -0
  338. package/dist/tools/pool-resolve-helper.d.ts +83 -0
  339. package/dist/tools/pool-resolve-helper.d.ts.map +1 -0
  340. package/dist/tools/pool-resolve-helper.js +148 -0
  341. package/dist/tools/pool-resolve-helper.js.map +1 -0
  342. package/dist/tools/progress-phases.d.ts +46 -0
  343. package/dist/tools/progress-phases.d.ts.map +1 -0
  344. package/dist/tools/progress-phases.js +48 -0
  345. package/dist/tools/progress-phases.js.map +1 -0
  346. package/dist/tools/shared-schemas.d.ts +25 -0
  347. package/dist/tools/shared-schemas.d.ts.map +1 -0
  348. package/dist/tools/shared-schemas.js +59 -0
  349. package/dist/tools/shared-schemas.js.map +1 -0
  350. package/dist/tools/sources/builders.d.ts +13 -0
  351. package/dist/tools/sources/builders.d.ts.map +1 -0
  352. package/dist/tools/sources/builders.js +118 -0
  353. package/dist/tools/sources/builders.js.map +1 -0
  354. package/dist/tools/sources/handlers-bind.d.ts +28 -0
  355. package/dist/tools/sources/handlers-bind.d.ts.map +1 -0
  356. package/dist/tools/sources/handlers-bind.js +129 -0
  357. package/dist/tools/sources/handlers-bind.js.map +1 -0
  358. package/dist/tools/sources/handlers.d.ts +47 -0
  359. package/dist/tools/sources/handlers.d.ts.map +1 -0
  360. package/dist/tools/sources/handlers.js +108 -0
  361. package/dist/tools/sources/handlers.js.map +1 -0
  362. package/dist/tools/sources/index.d.ts +19 -0
  363. package/dist/tools/sources/index.d.ts.map +1 -0
  364. package/dist/tools/sources/index.js +18 -0
  365. package/dist/tools/sources/index.js.map +1 -0
  366. package/dist/tools/sources.d.ts +14 -0
  367. package/dist/tools/sources.d.ts.map +1 -0
  368. package/dist/tools/sources.js +14 -0
  369. package/dist/tools/sources.js.map +1 -0
  370. package/dist/tools/sparse-fields.d.ts +106 -0
  371. package/dist/tools/sparse-fields.d.ts.map +1 -0
  372. package/dist/tools/sparse-fields.js +165 -0
  373. package/dist/tools/sparse-fields.js.map +1 -0
  374. package/dist/tools/tool-builder/annotations.d.ts +55 -0
  375. package/dist/tools/tool-builder/annotations.d.ts.map +1 -0
  376. package/dist/tools/tool-builder/annotations.js +86 -0
  377. package/dist/tools/tool-builder/annotations.js.map +1 -0
  378. package/dist/tools/tool-builder/define.d.ts +31 -0
  379. package/dist/tools/tool-builder/define.d.ts.map +1 -0
  380. package/dist/tools/tool-builder/define.js +31 -0
  381. package/dist/tools/tool-builder/define.js.map +1 -0
  382. package/dist/tools/tool-builder/index.d.ts +28 -0
  383. package/dist/tools/tool-builder/index.d.ts.map +1 -0
  384. package/dist/tools/tool-builder/index.js +27 -0
  385. package/dist/tools/tool-builder/index.js.map +1 -0
  386. package/dist/tools/tool-builder/results.d.ts +104 -0
  387. package/dist/tools/tool-builder/results.d.ts.map +1 -0
  388. package/dist/tools/tool-builder/results.js +224 -0
  389. package/dist/tools/tool-builder/results.js.map +1 -0
  390. package/dist/tools/tool-builder/types.d.ts +97 -0
  391. package/dist/tools/tool-builder/types.d.ts.map +1 -0
  392. package/dist/tools/tool-builder/types.js +9 -0
  393. package/dist/tools/tool-builder/types.js.map +1 -0
  394. package/dist/tools/tool-builder.d.ts +16 -0
  395. package/dist/tools/tool-builder.d.ts.map +1 -0
  396. package/dist/tools/tool-builder.js +16 -0
  397. package/dist/tools/tool-builder.js.map +1 -0
  398. package/manifest.json +1 -1
  399. package/package.json +2 -1
  400. package/skills/yt-builder-mcp/SKILL.md +108 -107
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Page-tool READ handlers + shared output-schemas.
3
+ *
4
+ * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1) to keep
5
+ * each file ≤ 200 LoC per Architecture §11. Write handlers (page_save,
6
+ * page_publish — 3-phase progress contract) live in `./handlers-write.ts`.
7
+ *
8
+ * @license MIT
9
+ */
10
+ import { detailResult, tableResult } from '@getimo/mcp-toolkit';
11
+ import { flattenLayout } from '../layout-flatten.js';
12
+ import { PAGES_COMPACT_COLUMNS, PAGES_TABLE_COLUMNS, SCHEMA_COMPACT_COLUMNS, SCHEMA_TABLE_COLUMNS, buildEtagDetail, buildSchemaRows, mapPageRow, } from '../format/pages-format.js';
13
+ import { DEFAULT_FIELDS_PAGES_LIST, projectFields, projectedFieldsEcho, projectionFeedback, } from '../sparse-fields.js';
14
+ import { errorResult, jsonResult, structuredResult, } from '../tool-builder.js';
15
+ // ─── pages_list ─────────────────────────────────────────────────────
16
+ export async function handlePagesList(client, { fields }) {
17
+ try {
18
+ const data = await client.get('/pages');
19
+ const rawPages = Array.isArray(data.pages) ? data.pages : [];
20
+ const mapped = rawPages
21
+ .filter((x) => x !== null && typeof x === 'object')
22
+ .map(mapPageRow);
23
+ // Project AFTER mapping — keeps stable key names and lets the
24
+ // toolkit's tableResult format the raw, full-shape rows for the
25
+ // LLM text leg while the structuredContent leg carries the
26
+ // projected per-item slice.
27
+ const items = projectFields(mapped, fields, DEFAULT_FIELDS_PAGES_LIST);
28
+ const echo = projectedFieldsEcho(fields, DEFAULT_FIELDS_PAGES_LIST);
29
+ const feedback = projectionFeedback(mapped, fields);
30
+ const unknownNote = feedback !== undefined && feedback.unknown_fields.length > 0
31
+ ? ` (unknown fields ignored: ${feedback.unknown_fields.join(', ')}; available: ${feedback.available_fields.join(', ')})`
32
+ : '';
33
+ const toolkitResult = tableResult(mapped, {
34
+ columns: [...PAGES_TABLE_COLUMNS],
35
+ compactColumns: [...PAGES_COMPACT_COLUMNS],
36
+ header: (count) => `${String(count)} pages${unknownNote}`,
37
+ footer: 'Use yootheme_builder_page_get_schema <id> to inspect.',
38
+ });
39
+ return structuredResult(toolkitResult, {
40
+ items,
41
+ total: items.length,
42
+ ...(typeof data.etag === 'string' ? { etag: data.etag } : {}),
43
+ ...(echo !== undefined ? { projected_fields: [...echo] } : {}),
44
+ ...(feedback !== undefined ? {
45
+ available_fields: [...feedback.available_fields],
46
+ unknown_fields: [...feedback.unknown_fields],
47
+ } : {}),
48
+ });
49
+ }
50
+ catch (e) {
51
+ return errorResult({
52
+ error: e,
53
+ context: {},
54
+ hint: 'Run yootheme_builder_diagnose to verify connectivity and auth.',
55
+ });
56
+ }
57
+ }
58
+ // ─── page_get_layout ────────────────────────────────────────────────
59
+ export async function handlePageGetLayout(client, { template_id, flat, fields }) {
60
+ try {
61
+ const data = await client.get(`/pages/${encodeURIComponent(template_id)}/layout`);
62
+ if (flat !== true) {
63
+ // Default: nested passthrough — unchanged from pre-G.3.
64
+ return jsonResult(data);
65
+ }
66
+ // flat: true → depth-first walk on the nested layout. Apply
67
+ // pickFields per element when `fields[]` was passed; echo the
68
+ // projection so the AI knows the per-item shape it received.
69
+ //
70
+ // F-208 (Audit 2026-05-26): the REST envelope nests the actual
71
+ // node tree as `data.layout.layout` — `data.layout` is the
72
+ // WHOLE template object (`{name, layout: {…children…}, …}`),
73
+ // so walking `data.layout` directly produced double-prefixed
74
+ // paths (`/layout/layout/children/0`). Detect the template
75
+ // envelope by presence of an inner `layout` field and descend
76
+ // one extra hop. Back-compat: when `data.layout` is already
77
+ // the node tree (no inner `layout` key), pass it through.
78
+ const layoutRoot = data.layout !== null &&
79
+ typeof data.layout === 'object' &&
80
+ !Array.isArray(data.layout) &&
81
+ 'layout' in data.layout &&
82
+ data.layout.layout !== null &&
83
+ typeof data.layout.layout === 'object'
84
+ ? data.layout.layout
85
+ : data.layout;
86
+ const flatElements = flattenLayout(layoutRoot);
87
+ const projected = projectFields(flatElements, fields,
88
+ // No default-set on layout.flat: keep "all" semantics
89
+ // unless caller opts-in. The echo helper below mirrors that.
90
+ []);
91
+ const echo = projectedFieldsEcho(fields, undefined);
92
+ // 1.0.1 Wave-1.7 F-COLD-3: forward the canonical pointer base
93
+ // through the flat-projection path too so cold agents iterating
94
+ // with `flat: true` see the same hint they get on the nested
95
+ // default payload.
96
+ return jsonResult({
97
+ elements: projected,
98
+ ...(typeof data.etag === 'string' ? { etag: data.etag } : {}),
99
+ ...(typeof data.layout_root_pointer === 'string'
100
+ ? { layout_root_pointer: data.layout_root_pointer }
101
+ : {}),
102
+ ...(typeof data.pointer_hint === 'string'
103
+ ? { pointer_hint: data.pointer_hint }
104
+ : {}),
105
+ ...(echo !== undefined ? { projected_fields: [...echo] } : {}),
106
+ });
107
+ }
108
+ catch (e) {
109
+ return errorResult({
110
+ error: e,
111
+ context: { template_id },
112
+ hint: 'Verify the template_id exists via yootheme_builder_pages_list. ' +
113
+ 'IDs are case-sensitive.',
114
+ });
115
+ }
116
+ }
117
+ // ─── page_get_schema ────────────────────────────────────────────────
118
+ export async function handlePageGetSchema(client, { template_id }) {
119
+ try {
120
+ const data = await client.get(`/pages/${encodeURIComponent(template_id)}/schema`);
121
+ const rawNodes = Array.isArray(data.nodes) ? data.nodes : [];
122
+ const items = buildSchemaRows(rawNodes.filter((x) => x !== null && typeof x === 'object'));
123
+ // Templates routinely exceed 21 nodes (a typical home page has
124
+ // 30–150 elements). Force compact level so the LLM never gets
125
+ // truncated text — toolkit's resolveDetailLevel honours the
126
+ // explicit override.
127
+ //
128
+ // TODO(toolkit-upstream): contribute a `compactWhen: (count) => boolean`
129
+ // field to @getimo/mcp-toolkit's AutoFormatOptions so this
130
+ // can be expressed declaratively on the config object instead
131
+ // of via the third positional argument. Tracked as Round-1.5
132
+ // follow-up (I2).
133
+ const toolkitResult = tableResult(items, {
134
+ columns: [...SCHEMA_TABLE_COLUMNS],
135
+ compactColumns: [...SCHEMA_COMPACT_COLUMNS],
136
+ header: (count) => `${String(count)} nodes in template "${template_id}"`,
137
+ footer: 'Use yootheme_builder_element_get <path> for full element data.',
138
+ }, 'compact');
139
+ return structuredResult(toolkitResult, {
140
+ items,
141
+ total: items.length,
142
+ template_id,
143
+ });
144
+ }
145
+ catch (e) {
146
+ return errorResult({
147
+ error: e,
148
+ context: { template_id },
149
+ hint: 'Verify the template_id exists via yootheme_builder_pages_list.',
150
+ });
151
+ }
152
+ }
153
+ // ─── get_etag ───────────────────────────────────────────────────────
154
+ export async function handleGetEtag(client) {
155
+ try {
156
+ const data = await client.get('/etag');
157
+ const toolkitResult = detailResult(buildEtagDetail({
158
+ etag: data.etag,
159
+ generated_at: data.generated_at,
160
+ }));
161
+ return structuredResult(toolkitResult, {
162
+ etag: data.etag,
163
+ ...(typeof data.generated_at === 'string'
164
+ ? { generated_at: data.generated_at }
165
+ : {}),
166
+ });
167
+ }
168
+ catch (e) {
169
+ return errorResult({
170
+ error: e,
171
+ context: {},
172
+ hint: 'Run yootheme_builder_diagnose to verify auth.',
173
+ });
174
+ }
175
+ }
176
+ // ─── template_summary (T9 — Audit-v3 B.5 token-efficient overview) ────
177
+ /**
178
+ * T9: a one-call structured overview of a template — element counts by
179
+ * type, binding count, max nesting depth, and named landmarks. Lets the
180
+ * agent grasp a 96-node template for ~1 kB instead of pulling the full
181
+ * element_list dump (20 kB+).
182
+ */
183
+ export async function handleTemplateSummary(client, { template_id }) {
184
+ try {
185
+ const data = await client.get(`/pages/${encodeURIComponent(template_id)}/summary`);
186
+ // F-AUDIT-2 (2026-05-26): template_summary now declares
187
+ // TEMPLATE_SUMMARY_OUTPUT_SCHEMA. The SDK requires
188
+ // `structuredContent` when an outputSchema is present, otherwise
189
+ // it raises `-32602 Output validation error`. Wrap the raw body
190
+ // with `structuredResult` so the text leg (LLM-readable JSON)
191
+ // stays unchanged AND the structuredContent leg validates.
192
+ const toolkitResult = jsonResult(data);
193
+ return structuredResult({ content: toolkitResult.content }, data);
194
+ }
195
+ catch (e) {
196
+ return errorResult({
197
+ error: e,
198
+ context: { template_id },
199
+ hint: 'Verify the template_id exists via yootheme_builder_pages_list.',
200
+ });
201
+ }
202
+ }
203
+ //# sourceMappingURL=handlers-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers-read.js","sourceRoot":"","sources":["../../../src/tools/pages/handlers-read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Page-tool WRITE handlers — `page_save`, `page_publish`. Both implement
3
+ * the 3-phase progress contract (PHASE_SEND → PHASE_SERVER → PHASE_CONFIRM).
4
+ * PHASE_SERVER is emitted BEFORE the await so the synthetic intermediate
5
+ * fires even when the REST call ultimately errors — the dispatch IS the
6
+ * boundary, not the response.
7
+ *
8
+ * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1).
9
+ *
10
+ * @license MIT
11
+ */
12
+ import type { RestClient } from '../../client.js';
13
+ import { type HandlerExtra, type ToolResult } from '../tool-builder.js';
14
+ interface SavePublishInput {
15
+ template_id: string;
16
+ etag?: string;
17
+ }
18
+ export declare function handlePageSave(client: RestClient, { template_id, etag }: SavePublishInput, extra?: HandlerExtra): Promise<ToolResult>;
19
+ export declare function handlePagePublish(client: RestClient, { template_id, etag }: SavePublishInput, extra?: HandlerExtra): Promise<ToolResult>;
20
+ export {};
21
+ //# sourceMappingURL=handlers-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers-write.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/handlers-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAIH,KAAK,YAAY,EACjB,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,gBAAgB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,cAAc,CAChC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,gBAAgB,EACvC,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAoBrB;AAID,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,gBAAgB,EACvC,KAAK,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAoBrB"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Page-tool WRITE handlers — `page_save`, `page_publish`. Both implement
3
+ * the 3-phase progress contract (PHASE_SEND → PHASE_SERVER → PHASE_CONFIRM).
4
+ * PHASE_SERVER is emitted BEFORE the await so the synthetic intermediate
5
+ * fires even when the REST call ultimately errors — the dispatch IS the
6
+ * boundary, not the response.
7
+ *
8
+ * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1).
9
+ *
10
+ * @license MIT
11
+ */
12
+ import { PHASE_CONFIRM, PHASE_SEND, PHASE_SERVER } from '../progress-phases.js';
13
+ import { createProgressReporter, errorResult, jsonResult, } from '../tool-builder.js';
14
+ // ─── page_save ──────────────────────────────────────────────────────
15
+ export async function handlePageSave(client, { template_id, etag }, extra) {
16
+ const progress = extra ? createProgressReporter(extra) : null;
17
+ await progress?.report(0, 3, PHASE_SEND);
18
+ await progress?.report(1, 3, PHASE_SERVER);
19
+ try {
20
+ const data = await client.post(`/pages/${encodeURIComponent(template_id)}/save`, { etag });
21
+ await progress?.report(2, 3, PHASE_CONFIRM);
22
+ return jsonResult(data);
23
+ }
24
+ catch (e) {
25
+ return errorResult({
26
+ error: e,
27
+ context: { template_id, etag },
28
+ hint: 'On 412 (precondition failed) refresh via yootheme_builder_get_etag ' +
29
+ 'and retry — someone else edited the page.',
30
+ });
31
+ }
32
+ }
33
+ // ─── page_publish ───────────────────────────────────────────────────
34
+ export async function handlePagePublish(client, { template_id, etag }, extra) {
35
+ const progress = extra ? createProgressReporter(extra) : null;
36
+ await progress?.report(0, 3, PHASE_SEND);
37
+ await progress?.report(1, 3, PHASE_SERVER);
38
+ try {
39
+ const data = await client.post(`/pages/${encodeURIComponent(template_id)}/publish`, { etag });
40
+ await progress?.report(2, 3, PHASE_CONFIRM);
41
+ return jsonResult(data);
42
+ }
43
+ catch (e) {
44
+ return errorResult({
45
+ error: e,
46
+ context: { template_id, etag },
47
+ hint: 'On 412 (precondition failed) refresh via yootheme_builder_get_etag ' +
48
+ 'and retry.',
49
+ });
50
+ }
51
+ }
52
+ //# sourceMappingURL=handlers-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers-write.js","sourceRoot":"","sources":["../../../src/tools/pages/handlers-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EACH,sBAAsB,EACtB,WAAW,EACX,UAAU,GAGb,MAAM,oBAAoB,CAAC;AAO5B,uEAAuE;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,MAAkB,EAClB,EAAE,WAAW,EAAE,IAAI,EAAoB,EACvC,KAAoB;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1B,UAAU,kBAAkB,CAAC,WAAW,CAAC,OAAO,EAChD,EAAE,IAAI,EAAE,CACX,CAAC;QACF,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC9B,IAAI,EACA,qEAAqE;gBACrE,2CAA2C;SAClD,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,uEAAuE;AAEvE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAkB,EAClB,EAAE,WAAW,EAAE,IAAI,EAAoB,EACvC,KAAoB;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1B,UAAU,kBAAkB,CAAC,WAAW,CAAC,UAAU,EACnD,EAAE,IAAI,EAAE,CACX,CAAC;QACF,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC9B,IAAI,EACA,qEAAqE;gBACrE,YAAY;SACnB,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Page-tool barrel — public entry-point for the 6 page-level tools:
3
+ *
4
+ * yootheme_builder_pages_list → list templates (tableResult + structuredContent)
5
+ * yootheme_builder_page_get_layout → full layout tree (jsonResult)
6
+ * yootheme_builder_page_get_schema → flat schema (tableResult compact)
7
+ * yootheme_builder_page_save → re-run save-transforms + persist
8
+ * yootheme_builder_page_publish → publish
9
+ * yootheme_builder_get_etag → top-level state ETag (detailResult)
10
+ *
11
+ * Round-2 R2-A2-CRIT1 — split out of the original `src/tools/pages.ts`.
12
+ *
13
+ * @license MIT
14
+ */
15
+ export { buildPagesTools } from './builders.js';
16
+ export { ETAG_OUTPUT_SCHEMA, PAGES_LIST_OUTPUT_SCHEMA, SCHEMA_OUTPUT_SCHEMA, TEMPLATE_SUMMARY_OUTPUT_SCHEMA, } from './schemas.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,GACjC,MAAM,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Page-tool barrel — public entry-point for the 6 page-level tools:
3
+ *
4
+ * yootheme_builder_pages_list → list templates (tableResult + structuredContent)
5
+ * yootheme_builder_page_get_layout → full layout tree (jsonResult)
6
+ * yootheme_builder_page_get_schema → flat schema (tableResult compact)
7
+ * yootheme_builder_page_save → re-run save-transforms + persist
8
+ * yootheme_builder_page_publish → publish
9
+ * yootheme_builder_get_etag → top-level state ETag (detailResult)
10
+ *
11
+ * Round-2 R2-A2-CRIT1 — split out of the original `src/tools/pages.ts`.
12
+ *
13
+ * @license MIT
14
+ */
15
+ export { buildPagesTools } from './builders.js';
16
+ export { ETAG_OUTPUT_SCHEMA, PAGES_LIST_OUTPUT_SCHEMA, SCHEMA_OUTPUT_SCHEMA, TEMPLATE_SUMMARY_OUTPUT_SCHEMA, } from './schemas.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/pages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,GACjC,MAAM,cAAc,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Page-tool output-schemas (Wave G.2 §4 structuredContent contracts).
3
+ *
4
+ * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1) so the
5
+ * handler files stay focused on logic.
6
+ *
7
+ * @license MIT
8
+ */
9
+ import { z } from 'zod';
10
+ export declare const PAGES_LIST_OUTPUT_SCHEMA: z.ZodObject<{
11
+ items: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
12
+ total: z.ZodNumber;
13
+ etag: z.ZodOptional<z.ZodString>;
14
+ projected_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
15
+ available_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ unknown_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ }, z.core.$strip>;
18
+ export declare const SCHEMA_OUTPUT_SCHEMA: z.ZodObject<{
19
+ items: z.ZodArray<z.ZodObject<{
20
+ rel_path: z.ZodString;
21
+ path: z.ZodOptional<z.ZodString>;
22
+ element_type: z.ZodString;
23
+ label: z.ZodString;
24
+ has_binding: z.ZodBoolean;
25
+ }, z.core.$strip>>;
26
+ total: z.ZodNumber;
27
+ template_id: z.ZodString;
28
+ }, z.core.$strip>;
29
+ export declare const ETAG_OUTPUT_SCHEMA: z.ZodObject<{
30
+ etag: z.ZodString;
31
+ generated_at: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strip>;
33
+ export declare const TEMPLATE_SUMMARY_OUTPUT_SCHEMA: z.ZodObject<{
34
+ template_id: z.ZodString;
35
+ counts_by_type: z.ZodRecord<z.ZodString, z.ZodNumber>;
36
+ bound_count: z.ZodNumber;
37
+ max_depth: z.ZodNumber;
38
+ total: z.ZodNumber;
39
+ named_sections: z.ZodArray<z.ZodObject<{
40
+ path: z.ZodString;
41
+ name: z.ZodString;
42
+ }, z.core.$strip>>;
43
+ etag: z.ZodString;
44
+ }, z.core.$strip>;
45
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;iBA8BnC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAiB/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAWH,eAAO,MAAM,8BAA8B;;;;;;;;;;;iBAazC,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Page-tool output-schemas (Wave G.2 §4 structuredContent contracts).
3
+ *
4
+ * Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1) so the
5
+ * handler files stay focused on logic.
6
+ *
7
+ * @license MIT
8
+ */
9
+ import { z } from 'zod';
10
+ export const PAGES_LIST_OUTPUT_SCHEMA = z.object({
11
+ // F-Frontend-URL (2026-05-25): each row carries `frontend_url`,
12
+ // `frontend_url_template`, `frontend_url_description` so an MCP-agent
13
+ // can answer "What is the URL of my <type> template?" without a
14
+ // follow-up REST call or operator input. Server-side resolvers
15
+ // (WordPress: get_permalink/get_term_link/get_author_posts_url; Joomla:
16
+ // RouteHelper::getArticleRoute/getCategoryRoute/getTagRoute) emit one
17
+ // of two shapes per row:
18
+ // - `frontend_url: <permalink>` + `frontend_url_template: null`
19
+ // when a canonical public URL exists (latest post / first category
20
+ // / first author etc.).
21
+ // - `frontend_url: null` + `frontend_url_template: <pattern>` when
22
+ // the URL needs a runtime parameter (search, 404-test) or when no
23
+ // public content of the matching type exists yet.
24
+ // `frontend_url_description` is a short human hint ("Append any non-
25
+ // existent path to test." / "Latest published post — rendered with
26
+ // this template.") so the agent can render an instruction to the
27
+ // end-user. All three keys are kept on the row-record (not an extra
28
+ // schema object) so per-item sparse-field projection works.
29
+ items: z.array(z.record(z.string(), z.unknown())),
30
+ total: z.number(),
31
+ etag: z.string().optional(),
32
+ projected_fields: z.array(z.string()).optional(),
33
+ // F-004 fix (2026-05-25 exhaustive audit): projection-feedback —
34
+ // emitted ONLY when the caller passed `fields[]`. `available_fields`
35
+ // is the discovered top-level field vocabulary; `unknown_fields` is
36
+ // the subset of requested fields that did NOT appear in any item
37
+ // (previously: items came back as `[{}, {}, …]` silently).
38
+ available_fields: z.array(z.string()).optional(),
39
+ unknown_fields: z.array(z.string()).optional(),
40
+ });
41
+ export const SCHEMA_OUTPUT_SCHEMA = z.object({
42
+ // F-006 (2026-05-26): `rel_path` is the agent-preferred path form
43
+ // (matches `element_list` + `page_get_layout` emit). `path` (the
44
+ // fully-qualified `/templates/<id>/layout/...` pointer) stays on the
45
+ // row for back-compat but is optional so callers reading the schema
46
+ // know `rel_path` is the canonical projection column.
47
+ items: z.array(z.object({
48
+ rel_path: z.string(),
49
+ path: z.string().optional(),
50
+ element_type: z.string(),
51
+ label: z.string(),
52
+ has_binding: z.boolean(),
53
+ })),
54
+ total: z.number(),
55
+ template_id: z.string(),
56
+ });
57
+ export const ETAG_OUTPUT_SCHEMA = z.object({
58
+ etag: z.string(),
59
+ generated_at: z.string().optional(),
60
+ });
61
+ // F-AUDIT-2 (2026-05-26): template_summary outputSchema. The handler
62
+ // passes the REST `/pages/{id}/summary` body through verbatim via
63
+ // `jsonResult(data)`. Live shape verified against the WP+Joomla dev
64
+ // hosts: `template_id`, `counts_by_type` (open-ended map element-type
65
+ // → count), `bound_count`, `max_depth`, `total`, `named_sections` (each
66
+ // `{path, name}`), and the `etag` string. NOTE: `_meta` is merged at
67
+ // the RESULT-LEVEL by `withSiteMeta`, NEVER into `structuredContent`
68
+ // (see results.ts W12-R2 commentary) — this schema therefore validates
69
+ // only the inner template-summary shape.
70
+ export const TEMPLATE_SUMMARY_OUTPUT_SCHEMA = z.object({
71
+ template_id: z.string(),
72
+ counts_by_type: z.record(z.string(), z.number().int().nonnegative()),
73
+ bound_count: z.number().int().nonnegative(),
74
+ max_depth: z.number().int().nonnegative(),
75
+ total: z.number().int().nonnegative(),
76
+ named_sections: z.array(z.object({
77
+ path: z.string(),
78
+ name: z.string(),
79
+ })),
80
+ etag: z.string(),
81
+ });
82
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Backward-compat shim for `src/tools/pages.ts`.
3
+ *
4
+ * The original 358-LoC module was split into `src/tools/pages/`
5
+ * (5 files, each ≤ 200 LoC) per Architecture §11 cap (Round-2
6
+ * R2-A2-CRIT1 audit fix). This shim preserves the public import path
7
+ * (`from '../../src/tools/pages.js'`) so all existing test imports
8
+ * and `tools/index.ts` keep working unchanged.
9
+ *
10
+ * @license MIT
11
+ */
12
+ export * from './pages/index.js';
13
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Backward-compat shim for `src/tools/pages.ts`.
3
+ *
4
+ * The original 358-LoC module was split into `src/tools/pages/`
5
+ * (5 files, each ≤ 200 LoC) per Architecture §11 cap (Round-2
6
+ * R2-A2-CRIT1 audit fix). This shim preserves the public import path
7
+ * (`from '../../src/tools/pages.js'`) so all existing test imports
8
+ * and `tools/index.ts` keep working unchanged.
9
+ *
10
+ * @license MIT
11
+ */
12
+ export * from './pages/index.js';
13
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * W6.3 — shared helper for the per-handler `pool.resolve(site_id)`
3
+ * pattern.
4
+ *
5
+ * Every tool handler does the same dance:
6
+ * 1. Extract `site_id` from args (optional, undefined → default site).
7
+ * 2. Call `pool.resolve(site_id)`.
8
+ * 3. Translate `NoDefaultSiteError` / `UnknownSiteError` into a
9
+ * structured `errorResult` so the agent can self-recover.
10
+ * 4. Hand back `{client, site}` for downstream use.
11
+ *
12
+ * Centralising the dance keeps the 24 handler bodies short and ensures
13
+ * the error wording stays consistent across the tool surface.
14
+ *
15
+ * @license MIT
16
+ */
17
+ import { type ClientPool, type PoolResolution } from '../sites/client-pool.js';
18
+ import type { ResolvedSite } from '../sites/registry.js';
19
+ import type { RestClient } from '../client.js';
20
+ import { type ToolResult } from './tool-builder.js';
21
+ /**
22
+ * Discriminated union returned by {@link resolveSiteOrError}: callers
23
+ * check the `ok` boolean before destructuring. When `ok === false`,
24
+ * the `error` field is a fully-formed `ToolResult` ready to be
25
+ * returned from the handler verbatim (no further wrapping needed).
26
+ *
27
+ * The dual-channel shape lets handlers keep their flat top-level
28
+ * control flow:
29
+ *
30
+ * const r = await resolveSiteOrError(pool, args.site_id);
31
+ * if (!r.ok) return r.error;
32
+ * const { client, site } = r;
33
+ * // ... existing logic ...
34
+ * return withSiteMeta(result, site);
35
+ */
36
+ export type SiteResolution = {
37
+ readonly ok: true;
38
+ readonly client: PoolResolution['client'];
39
+ readonly site: PoolResolution['site'];
40
+ } | {
41
+ readonly ok: false;
42
+ readonly error: ToolResult;
43
+ };
44
+ /**
45
+ * Resolve a site_id through the pool, translating the W4 typed errors
46
+ * into structured `ToolResult` envelopes. Non-typed errors (genuine
47
+ * fetch failures during the platform probe, secret-resolver crashes,
48
+ * etc.) re-throw so the handler's outer try/catch can shape them with
49
+ * domain-specific hints.
50
+ */
51
+ export declare function resolveSiteOrError(pool: ClientPool, siteId: string | undefined): Promise<SiteResolution>;
52
+ /**
53
+ * W12-R2A (A4-F3 / A5-S2) — resolve a site + execute a handler-body with
54
+ * a 1-shot 401 retry.
55
+ *
56
+ * Bearer-rotation use case: a site's bearer is revoked / rotated /
57
+ * expired AFTER the pool cached a {@link RestClient} for it. The next
58
+ * call returns HTTP 401. Without retry the agent has to be told
59
+ * "restart your client". With retry we drop the cached client (so the
60
+ * next `pool.resolve` re-runs `secretResolver.resolve`), then call the
61
+ * handler-body again exactly once. If the second attempt also returns
62
+ * 401, we surface a structured `bearer_invalid` error with an
63
+ * actionable hint pointing at `sites_test` / sites.json.
64
+ *
65
+ * Scope: deliberately ONE retry. A second 401 means the bearer is
66
+ * genuinely revoked at the source — looping forever wastes tokens and
67
+ * masks the real problem.
68
+ *
69
+ * The wrapper handles {@link NoDefaultSiteError} / {@link
70
+ * UnknownSiteError} via the same `resolveSiteOrError` envelope so
71
+ * call-sites don't have to duplicate the structured-error wording.
72
+ * Non-401 thrown errors propagate to the handler's outer try/catch
73
+ * (or the SDK boundary) untouched — only HTTP 401 triggers the retry
74
+ * / structured-error path.
75
+ *
76
+ * Usage (post-migration):
77
+ *
78
+ * handler: async ({ site_id, ...rest }) =>
79
+ * withSiteRetry(pool, site_id, async (client, site) =>
80
+ * withSiteMeta(await handleX(makeDeps(client), rest), site)),
81
+ */
82
+ export declare function withSiteRetry(pool: ClientPool, siteId: string | undefined, fn: (client: RestClient, site: ResolvedSite) => Promise<ToolResult>): Promise<ToolResult>;
83
+ //# sourceMappingURL=pool-resolve-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-resolve-helper.d.ts","sourceRoot":"","sources":["../../src/tools/pool-resolve-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACH,KAAK,UAAU,EAEf,KAAK,cAAc,EAEtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAAE,GACvG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACpC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,cAAc,CAAC,CAqDzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,aAAa,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,GACpE,OAAO,CAAC,UAAU,CAAC,CA8CrB"}