@wootsup/yt-builder-mcp 1.11.0 → 2.0.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 (853) hide show
  1. package/README.md +131 -33
  2. package/bin/node-floor.d.ts +28 -0
  3. package/bin/node-floor.js +123 -0
  4. package/bin/yt-builder-mcp.js +52 -11
  5. package/dist/auth.d.ts +3 -121
  6. package/dist/auth.d.ts.map +1 -1
  7. package/dist/auth.js +40 -170
  8. package/dist/auth.js.map +1 -1
  9. package/dist/catalog/build-catalog.d.ts +4 -49
  10. package/dist/catalog/build-catalog.d.ts.map +1 -1
  11. package/dist/catalog/build-catalog.js +15 -126
  12. package/dist/catalog/build-catalog.js.map +1 -1
  13. package/dist/catalog/json-schema.d.ts +3 -0
  14. package/dist/catalog/json-schema.d.ts.map +1 -0
  15. package/dist/catalog/json-schema.js +68 -0
  16. package/dist/catalog/json-schema.js.map +1 -0
  17. package/dist/catalog/output-shapes.d.ts +6 -0
  18. package/dist/catalog/output-shapes.d.ts.map +1 -0
  19. package/dist/catalog/output-shapes.js +89 -0
  20. package/dist/catalog/output-shapes.js.map +1 -0
  21. package/dist/catalog/tool-catalog-markdown.d.ts +1 -37
  22. package/dist/catalog/tool-catalog-markdown.d.ts.map +1 -1
  23. package/dist/catalog/tool-catalog-markdown.js +9 -41
  24. package/dist/catalog/tool-catalog-markdown.js.map +1 -1
  25. package/dist/cli/doctor-command.d.ts +2 -7
  26. package/dist/cli/doctor-command.d.ts.map +1 -1
  27. package/dist/cli/doctor-command.js +33 -54
  28. package/dist/cli/doctor-command.js.map +1 -1
  29. package/dist/cli/invocation-decision.d.ts +4 -52
  30. package/dist/cli/invocation-decision.d.ts.map +1 -1
  31. package/dist/cli/invocation-decision.js +45 -54
  32. package/dist/cli/invocation-decision.js.map +1 -1
  33. package/dist/client.d.ts +3 -107
  34. package/dist/client.d.ts.map +1 -1
  35. package/dist/client.js +34 -115
  36. package/dist/client.js.map +1 -1
  37. package/dist/clients/claude-code.d.ts +0 -15
  38. package/dist/clients/claude-code.d.ts.map +1 -1
  39. package/dist/clients/claude-code.js +0 -22
  40. package/dist/clients/claude-code.js.map +1 -1
  41. package/dist/clients/claude-desktop.d.ts +0 -16
  42. package/dist/clients/claude-desktop.d.ts.map +1 -1
  43. package/dist/clients/claude-desktop.js +0 -18
  44. package/dist/clients/claude-desktop.js.map +1 -1
  45. package/dist/clients/cline.d.ts +0 -23
  46. package/dist/clients/cline.d.ts.map +1 -1
  47. package/dist/clients/cline.js +0 -33
  48. package/dist/clients/cline.js.map +1 -1
  49. package/dist/clients/codex-cli.d.ts +0 -39
  50. package/dist/clients/codex-cli.d.ts.map +1 -1
  51. package/dist/clients/codex-cli.js +0 -137
  52. package/dist/clients/codex-cli.js.map +1 -1
  53. package/dist/clients/continue.d.ts +0 -10
  54. package/dist/clients/continue.d.ts.map +1 -1
  55. package/dist/clients/continue.js +0 -26
  56. package/dist/clients/continue.js.map +1 -1
  57. package/dist/clients/cursor.d.ts +0 -9
  58. package/dist/clients/cursor.d.ts.map +1 -1
  59. package/dist/clients/cursor.js +0 -11
  60. package/dist/clients/cursor.js.map +1 -1
  61. package/dist/clients/gemini-cli.d.ts +0 -15
  62. package/dist/clients/gemini-cli.d.ts.map +1 -1
  63. package/dist/clients/gemini-cli.js +0 -17
  64. package/dist/clients/gemini-cli.js.map +1 -1
  65. package/dist/clients/home.d.ts +0 -12
  66. package/dist/clients/home.d.ts.map +1 -1
  67. package/dist/clients/home.js +0 -12
  68. package/dist/clients/home.js.map +1 -1
  69. package/dist/clients/index.d.ts +0 -150
  70. package/dist/clients/index.d.ts.map +1 -1
  71. package/dist/clients/index.js +0 -112
  72. package/dist/clients/index.js.map +1 -1
  73. package/dist/clients/roo-code.d.ts +0 -20
  74. package/dist/clients/roo-code.d.ts.map +1 -1
  75. package/dist/clients/roo-code.js +0 -22
  76. package/dist/clients/roo-code.js.map +1 -1
  77. package/dist/clients/zed.d.ts +0 -9
  78. package/dist/clients/zed.d.ts.map +1 -1
  79. package/dist/clients/zed.js +0 -18
  80. package/dist/clients/zed.js.map +1 -1
  81. package/dist/compat-floor.d.ts +35 -0
  82. package/dist/compat-floor.d.ts.map +1 -0
  83. package/dist/compat-floor.js +84 -0
  84. package/dist/compat-floor.js.map +1 -0
  85. package/dist/compat-probe.d.ts +6 -0
  86. package/dist/compat-probe.d.ts.map +1 -0
  87. package/dist/compat-probe.js +20 -0
  88. package/dist/compat-probe.js.map +1 -0
  89. package/dist/diagnostics/ca-reexec.d.ts +0 -30
  90. package/dist/diagnostics/ca-reexec.d.ts.map +1 -1
  91. package/dist/diagnostics/ca-reexec.js +0 -62
  92. package/dist/diagnostics/ca-reexec.js.map +1 -1
  93. package/dist/diagnostics/ca-trust.d.ts +0 -22
  94. package/dist/diagnostics/ca-trust.d.ts.map +1 -1
  95. package/dist/diagnostics/ca-trust.js +3 -42
  96. package/dist/diagnostics/ca-trust.js.map +1 -1
  97. package/dist/diagnostics/diagnose-network-error.d.ts +1 -38
  98. package/dist/diagnostics/diagnose-network-error.d.ts.map +1 -1
  99. package/dist/diagnostics/diagnose-network-error.js +26 -37
  100. package/dist/diagnostics/diagnose-network-error.js.map +1 -1
  101. package/dist/diagnostics/doctor.d.ts +13 -65
  102. package/dist/diagnostics/doctor.d.ts.map +1 -1
  103. package/dist/diagnostics/doctor.js +46 -70
  104. package/dist/diagnostics/doctor.js.map +1 -1
  105. package/dist/diagnostics/startup-self-probe.d.ts +3 -25
  106. package/dist/diagnostics/startup-self-probe.d.ts.map +1 -1
  107. package/dist/diagnostics/startup-self-probe.js +11 -48
  108. package/dist/diagnostics/startup-self-probe.js.map +1 -1
  109. package/dist/errors/hints.d.ts +0 -44
  110. package/dist/errors/hints.d.ts.map +1 -1
  111. package/dist/errors/hints.js +0 -32
  112. package/dist/errors/hints.js.map +1 -1
  113. package/dist/errors/mask.d.ts +0 -31
  114. package/dist/errors/mask.d.ts.map +1 -1
  115. package/dist/errors/mask.js +0 -32
  116. package/dist/errors/mask.js.map +1 -1
  117. package/dist/errors/redact-credentials.d.ts +2 -0
  118. package/dist/errors/redact-credentials.d.ts.map +1 -0
  119. package/dist/errors/redact-credentials.js +13 -0
  120. package/dist/errors/redact-credentials.js.map +1 -0
  121. package/dist/errors/sanitize.d.ts +0 -29
  122. package/dist/errors/sanitize.d.ts.map +1 -1
  123. package/dist/errors/sanitize.js +0 -40
  124. package/dist/errors/sanitize.js.map +1 -1
  125. package/dist/errors.d.ts +6 -17
  126. package/dist/errors.d.ts.map +1 -1
  127. package/dist/errors.js +16 -21
  128. package/dist/errors.js.map +1 -1
  129. package/dist/gateway/advanced-read-tool.d.ts +0 -32
  130. package/dist/gateway/advanced-read-tool.d.ts.map +1 -1
  131. package/dist/gateway/advanced-read-tool.js +43 -111
  132. package/dist/gateway/advanced-read-tool.js.map +1 -1
  133. package/dist/gateway/advanced-tool/discovery.d.ts +1 -12
  134. package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -1
  135. package/dist/gateway/advanced-tool/discovery.js +18 -16
  136. package/dist/gateway/advanced-tool/discovery.js.map +1 -1
  137. package/dist/gateway/advanced-tool/domains.d.ts +7 -66
  138. package/dist/gateway/advanced-tool/domains.d.ts.map +1 -1
  139. package/dist/gateway/advanced-tool/domains.js +36 -80
  140. package/dist/gateway/advanced-tool/domains.js.map +1 -1
  141. package/dist/gateway/advanced-tool/execute.d.ts +0 -25
  142. package/dist/gateway/advanced-tool/execute.d.ts.map +1 -1
  143. package/dist/gateway/advanced-tool/execute.js +13 -49
  144. package/dist/gateway/advanced-tool/execute.js.map +1 -1
  145. package/dist/gateway/advanced-tool/index.d.ts +1 -32
  146. package/dist/gateway/advanced-tool/index.d.ts.map +1 -1
  147. package/dist/gateway/advanced-tool/index.js +1 -35
  148. package/dist/gateway/advanced-tool/index.js.map +1 -1
  149. package/dist/gateway/advanced-tool/register.d.ts +0 -14
  150. package/dist/gateway/advanced-tool/register.d.ts.map +1 -1
  151. package/dist/gateway/advanced-tool/register.js +22 -58
  152. package/dist/gateway/advanced-tool/register.js.map +1 -1
  153. package/dist/gateway/advanced-tool.d.ts +0 -11
  154. package/dist/gateway/advanced-tool.d.ts.map +1 -1
  155. package/dist/gateway/advanced-tool.js +0 -11
  156. package/dist/gateway/advanced-tool.js.map +1 -1
  157. package/dist/gateway/capturing-server.d.ts +3 -88
  158. package/dist/gateway/capturing-server.d.ts.map +1 -1
  159. package/dist/gateway/capturing-server.js +0 -77
  160. package/dist/gateway/capturing-server.js.map +1 -1
  161. package/dist/gateway/essentials.d.ts +1 -63
  162. package/dist/gateway/essentials.d.ts.map +1 -1
  163. package/dist/gateway/essentials.js +10 -174
  164. package/dist/gateway/essentials.js.map +1 -1
  165. package/dist/gateway/test-support.d.ts +0 -28
  166. package/dist/gateway/test-support.d.ts.map +1 -1
  167. package/dist/gateway/test-support.js +0 -29
  168. package/dist/gateway/test-support.js.map +1 -1
  169. package/dist/health-response.d.ts +2 -0
  170. package/dist/health-response.d.ts.map +1 -0
  171. package/dist/health-response.js +7 -0
  172. package/dist/health-response.js.map +1 -0
  173. package/dist/icon-data.js +0 -3
  174. package/dist/icon-data.js.map +1 -1
  175. package/dist/index.d.ts +7 -23
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +46 -130
  178. package/dist/index.js.map +1 -1
  179. package/dist/install-skill.d.ts +0 -44
  180. package/dist/install-skill.d.ts.map +1 -1
  181. package/dist/install-skill.js +5 -46
  182. package/dist/install-skill.js.map +1 -1
  183. package/dist/net/extra-headers.d.ts +0 -58
  184. package/dist/net/extra-headers.d.ts.map +1 -1
  185. package/dist/net/extra-headers.js +0 -67
  186. package/dist/net/extra-headers.js.map +1 -1
  187. package/dist/net/internal-host.d.ts +0 -31
  188. package/dist/net/internal-host.d.ts.map +1 -1
  189. package/dist/net/internal-host.js +7 -65
  190. package/dist/net/internal-host.js.map +1 -1
  191. package/dist/net/proxy-dispatcher.d.ts +0 -37
  192. package/dist/net/proxy-dispatcher.d.ts.map +1 -1
  193. package/dist/net/proxy-dispatcher.js +0 -40
  194. package/dist/net/proxy-dispatcher.js.map +1 -1
  195. package/dist/net/public-fetch.d.ts +53 -0
  196. package/dist/net/public-fetch.d.ts.map +1 -0
  197. package/dist/net/public-fetch.js +143 -0
  198. package/dist/net/public-fetch.js.map +1 -0
  199. package/dist/net/public-page-report.d.ts +26 -0
  200. package/dist/net/public-page-report.d.ts.map +1 -0
  201. package/dist/net/public-page-report.js +145 -0
  202. package/dist/net/public-page-report.js.map +1 -0
  203. package/dist/net/redirect-safe-fetch.d.ts +14 -0
  204. package/dist/net/redirect-safe-fetch.d.ts.map +1 -0
  205. package/dist/net/redirect-safe-fetch.js +61 -0
  206. package/dist/net/redirect-safe-fetch.js.map +1 -0
  207. package/dist/net/session-recovery-fetch.d.ts +7 -0
  208. package/dist/net/session-recovery-fetch.d.ts.map +1 -0
  209. package/dist/net/session-recovery-fetch.js +139 -0
  210. package/dist/net/session-recovery-fetch.js.map +1 -0
  211. package/dist/net/site-basic-auth.d.ts +1 -59
  212. package/dist/net/site-basic-auth.d.ts.map +1 -1
  213. package/dist/net/site-basic-auth.js +5 -94
  214. package/dist/net/site-basic-auth.js.map +1 -1
  215. package/dist/package-version.d.ts +2 -0
  216. package/dist/package-version.d.ts.map +1 -0
  217. package/dist/package-version.js +15 -0
  218. package/dist/package-version.js.map +1 -0
  219. package/dist/platform/detect.d.ts +0 -54
  220. package/dist/platform/detect.d.ts.map +1 -1
  221. package/dist/platform/detect.js +0 -53
  222. package/dist/platform/detect.js.map +1 -1
  223. package/dist/platform/index.d.ts +0 -100
  224. package/dist/platform/index.d.ts.map +1 -1
  225. package/dist/platform/index.js +0 -106
  226. package/dist/platform/index.js.map +1 -1
  227. package/dist/platform/joomla.d.ts +0 -35
  228. package/dist/platform/joomla.d.ts.map +1 -1
  229. package/dist/platform/joomla.js +0 -35
  230. package/dist/platform/joomla.js.map +1 -1
  231. package/dist/proxy/bridge.d.ts +36 -76
  232. package/dist/proxy/bridge.d.ts.map +1 -1
  233. package/dist/proxy/bridge.js +443 -136
  234. package/dist/proxy/bridge.js.map +1 -1
  235. package/dist/proxy/confirm-elicitation.d.ts +22 -0
  236. package/dist/proxy/confirm-elicitation.d.ts.map +1 -0
  237. package/dist/proxy/confirm-elicitation.js +170 -0
  238. package/dist/proxy/confirm-elicitation.js.map +1 -0
  239. package/dist/proxy/confirm-question-contract.d.ts +6 -0
  240. package/dist/proxy/confirm-question-contract.d.ts.map +1 -0
  241. package/dist/proxy/confirm-question-contract.js +9 -0
  242. package/dist/proxy/confirm-question-contract.js.map +1 -0
  243. package/dist/proxy/confirm-question.d.ts +2 -0
  244. package/dist/proxy/confirm-question.d.ts.map +1 -0
  245. package/dist/proxy/confirm-question.js +125 -0
  246. package/dist/proxy/confirm-question.js.map +1 -0
  247. package/dist/proxy/instructions.d.ts +4 -0
  248. package/dist/proxy/instructions.d.ts.map +1 -0
  249. package/dist/proxy/instructions.js +12 -0
  250. package/dist/proxy/instructions.js.map +1 -0
  251. package/dist/proxy/mode.d.ts +14 -9
  252. package/dist/proxy/mode.d.ts.map +1 -1
  253. package/dist/proxy/mode.js +58 -34
  254. package/dist/proxy/mode.js.map +1 -1
  255. package/dist/proxy/multi-site.d.ts +42 -0
  256. package/dist/proxy/multi-site.d.ts.map +1 -0
  257. package/dist/proxy/multi-site.js +134 -0
  258. package/dist/proxy/multi-site.js.map +1 -0
  259. package/dist/proxy/request-headers.d.ts +9 -0
  260. package/dist/proxy/request-headers.d.ts.map +1 -0
  261. package/dist/proxy/request-headers.js +17 -0
  262. package/dist/proxy/request-headers.js.map +1 -0
  263. package/dist/proxy/shadow-tools.d.ts +9 -0
  264. package/dist/proxy/shadow-tools.d.ts.map +1 -0
  265. package/dist/proxy/shadow-tools.js +42 -0
  266. package/dist/proxy/shadow-tools.js.map +1 -0
  267. package/dist/proxy/tools-list-cap.d.ts +7 -0
  268. package/dist/proxy/tools-list-cap.d.ts.map +1 -0
  269. package/dist/proxy/tools-list-cap.js +14 -0
  270. package/dist/proxy/tools-list-cap.js.map +1 -0
  271. package/dist/proxy/transport-uncertainty.d.ts +2 -0
  272. package/dist/proxy/transport-uncertainty.d.ts.map +1 -0
  273. package/dist/proxy/transport-uncertainty.js +8 -0
  274. package/dist/proxy/transport-uncertainty.js.map +1 -0
  275. package/dist/proxy/upstream-error.d.ts +7 -0
  276. package/dist/proxy/upstream-error.d.ts.map +1 -0
  277. package/dist/proxy/upstream-error.js +35 -0
  278. package/dist/proxy/upstream-error.js.map +1 -0
  279. package/dist/proxy/wire-dialect.d.ts +5 -0
  280. package/dist/proxy/wire-dialect.d.ts.map +1 -0
  281. package/dist/proxy/wire-dialect.js +33 -0
  282. package/dist/proxy/wire-dialect.js.map +1 -0
  283. package/dist/server.d.ts +14 -82
  284. package/dist/server.d.ts.map +1 -1
  285. package/dist/server.js +107 -203
  286. package/dist/server.js.map +1 -1
  287. package/dist/setup/banner-color.d.ts +13 -0
  288. package/dist/setup/banner-color.d.ts.map +1 -0
  289. package/dist/setup/banner-color.js +93 -0
  290. package/dist/setup/banner-color.js.map +1 -0
  291. package/dist/setup/banner.d.ts +22 -0
  292. package/dist/setup/banner.d.ts.map +1 -0
  293. package/dist/setup/banner.js +119 -0
  294. package/dist/setup/banner.js.map +1 -0
  295. package/dist/setup/ca-recovery.d.ts +20 -0
  296. package/dist/setup/ca-recovery.d.ts.map +1 -0
  297. package/dist/setup/ca-recovery.js +92 -0
  298. package/dist/setup/ca-recovery.js.map +1 -0
  299. package/dist/setup/closing.d.ts +15 -0
  300. package/dist/setup/closing.d.ts.map +1 -0
  301. package/dist/setup/closing.js +43 -0
  302. package/dist/setup/closing.js.map +1 -0
  303. package/dist/setup/corporate-ca.d.ts +16 -0
  304. package/dist/setup/corporate-ca.d.ts.map +1 -0
  305. package/dist/setup/corporate-ca.js +32 -0
  306. package/dist/setup/corporate-ca.js.map +1 -0
  307. package/dist/setup/host-platform.d.ts +8 -0
  308. package/dist/setup/host-platform.d.ts.map +1 -0
  309. package/dist/setup/host-platform.js +21 -0
  310. package/dist/setup/host-platform.js.map +1 -0
  311. package/dist/setup/install-configs.d.ts +18 -0
  312. package/dist/setup/install-configs.d.ts.map +1 -0
  313. package/dist/setup/install-configs.js +70 -0
  314. package/dist/setup/install-configs.js.map +1 -0
  315. package/dist/setup/multi-site-loop.d.ts +14 -0
  316. package/dist/setup/multi-site-loop.d.ts.map +1 -0
  317. package/dist/setup/multi-site-loop.js +20 -0
  318. package/dist/setup/multi-site-loop.js.map +1 -0
  319. package/dist/setup/phases.d.ts +18 -0
  320. package/dist/setup/phases.d.ts.map +1 -0
  321. package/dist/setup/phases.js +55 -0
  322. package/dist/setup/phases.js.map +1 -0
  323. package/dist/setup/registry-remedy.d.ts +12 -0
  324. package/dist/setup/registry-remedy.d.ts.map +1 -0
  325. package/dist/setup/registry-remedy.js +37 -0
  326. package/dist/setup/registry-remedy.js.map +1 -0
  327. package/dist/setup/resume.d.ts +28 -0
  328. package/dist/setup/resume.d.ts.map +1 -0
  329. package/dist/setup/resume.js +99 -0
  330. package/dist/setup/resume.js.map +1 -0
  331. package/dist/setup-ca-env.d.ts +0 -30
  332. package/dist/setup-ca-env.d.ts.map +1 -1
  333. package/dist/setup-ca-env.js +0 -28
  334. package/dist/setup-ca-env.js.map +1 -1
  335. package/dist/setup-ca-reprobe.d.ts +0 -25
  336. package/dist/setup-ca-reprobe.d.ts.map +1 -1
  337. package/dist/setup-ca-reprobe.js +0 -34
  338. package/dist/setup-ca-reprobe.js.map +1 -1
  339. package/dist/setup-cli-confirm.d.ts +0 -34
  340. package/dist/setup-cli-confirm.d.ts.map +1 -1
  341. package/dist/setup-cli-confirm.js +0 -36
  342. package/dist/setup-cli-confirm.js.map +1 -1
  343. package/dist/setup-cli.d.ts +6 -167
  344. package/dist/setup-cli.d.ts.map +1 -1
  345. package/dist/setup-cli.js +161 -173
  346. package/dist/setup-cli.js.map +1 -1
  347. package/dist/setup-npx-spec.d.ts +0 -36
  348. package/dist/setup-npx-spec.d.ts.map +1 -1
  349. package/dist/setup-npx-spec.js +0 -38
  350. package/dist/setup-npx-spec.js.map +1 -1
  351. package/dist/setup-prompts.d.ts +5 -70
  352. package/dist/setup-prompts.d.ts.map +1 -1
  353. package/dist/setup-prompts.js +67 -107
  354. package/dist/setup-prompts.js.map +1 -1
  355. package/dist/setup-token.d.ts +0 -34
  356. package/dist/setup-token.d.ts.map +1 -1
  357. package/dist/setup-token.js +0 -40
  358. package/dist/setup-token.js.map +1 -1
  359. package/dist/setup-wizard-defaults.d.ts +0 -36
  360. package/dist/setup-wizard-defaults.d.ts.map +1 -1
  361. package/dist/setup-wizard-defaults.js +0 -75
  362. package/dist/setup-wizard-defaults.js.map +1 -1
  363. package/dist/setup-wizard-handshake.d.ts +1 -19
  364. package/dist/setup-wizard-handshake.d.ts.map +1 -1
  365. package/dist/setup-wizard-handshake.js +8 -45
  366. package/dist/setup-wizard-handshake.js.map +1 -1
  367. package/dist/setup-wizard-types.d.ts +16 -209
  368. package/dist/setup-wizard-types.d.ts.map +1 -1
  369. package/dist/setup-wizard-types.js +0 -9
  370. package/dist/setup-wizard-types.js.map +1 -1
  371. package/dist/setup-wizard.d.ts +0 -28
  372. package/dist/setup-wizard.d.ts.map +1 -1
  373. package/dist/setup-wizard.js +167 -412
  374. package/dist/setup-wizard.js.map +1 -1
  375. package/dist/setup.d.ts +0 -15
  376. package/dist/setup.d.ts.map +1 -1
  377. package/dist/setup.js +0 -15
  378. package/dist/setup.js.map +1 -1
  379. package/dist/sites/bootstrap.d.ts +0 -38
  380. package/dist/sites/bootstrap.d.ts.map +1 -1
  381. package/dist/sites/bootstrap.js +0 -44
  382. package/dist/sites/bootstrap.js.map +1 -1
  383. package/dist/sites/cli/add-site.d.ts +0 -76
  384. package/dist/sites/cli/add-site.d.ts.map +1 -1
  385. package/dist/sites/cli/add-site.js +0 -71
  386. package/dist/sites/cli/add-site.js.map +1 -1
  387. package/dist/sites/cli/list-sites.d.ts +0 -31
  388. package/dist/sites/cli/list-sites.d.ts.map +1 -1
  389. package/dist/sites/cli/list-sites.js +0 -45
  390. package/dist/sites/cli/list-sites.js.map +1 -1
  391. package/dist/sites/cli/remove-site.d.ts +0 -37
  392. package/dist/sites/cli/remove-site.d.ts.map +1 -1
  393. package/dist/sites/cli/remove-site.js +0 -37
  394. package/dist/sites/cli/remove-site.js.map +1 -1
  395. package/dist/sites/cli/set-default.d.ts +0 -25
  396. package/dist/sites/cli/set-default.d.ts.map +1 -1
  397. package/dist/sites/cli/set-default.js +0 -22
  398. package/dist/sites/cli/set-default.js.map +1 -1
  399. package/dist/sites/cli/test-site.d.ts +0 -44
  400. package/dist/sites/cli/test-site.d.ts.map +1 -1
  401. package/dist/sites/cli/test-site.js +0 -39
  402. package/dist/sites/cli/test-site.js.map +1 -1
  403. package/dist/sites/client-pool.d.ts +11 -164
  404. package/dist/sites/client-pool.d.ts.map +1 -1
  405. package/dist/sites/client-pool.js +73 -194
  406. package/dist/sites/client-pool.js.map +1 -1
  407. package/dist/sites/config-problem.d.ts +2 -0
  408. package/dist/sites/config-problem.d.ts.map +1 -0
  409. package/dist/sites/config-problem.js +13 -0
  410. package/dist/sites/config-problem.js.map +1 -0
  411. package/dist/sites/env-bridge.d.ts +0 -69
  412. package/dist/sites/env-bridge.d.ts.map +1 -1
  413. package/dist/sites/env-bridge.js +2 -71
  414. package/dist/sites/env-bridge.js.map +1 -1
  415. package/dist/sites/op-inject.d.ts +23 -0
  416. package/dist/sites/op-inject.d.ts.map +1 -0
  417. package/dist/sites/op-inject.js +131 -0
  418. package/dist/sites/op-inject.js.map +1 -0
  419. package/dist/sites/paths.d.ts +0 -19
  420. package/dist/sites/paths.d.ts.map +1 -1
  421. package/dist/sites/paths.js +0 -19
  422. package/dist/sites/paths.js.map +1 -1
  423. package/dist/sites/probe.d.ts +1 -47
  424. package/dist/sites/probe.d.ts.map +1 -1
  425. package/dist/sites/probe.js +4 -46
  426. package/dist/sites/probe.js.map +1 -1
  427. package/dist/sites/registry.d.ts +4 -135
  428. package/dist/sites/registry.d.ts.map +1 -1
  429. package/dist/sites/registry.js +4 -98
  430. package/dist/sites/registry.js.map +1 -1
  431. package/dist/sites/schema.d.ts +3 -51
  432. package/dist/sites/schema.d.ts.map +1 -1
  433. package/dist/sites/schema.js +6 -52
  434. package/dist/sites/schema.js.map +1 -1
  435. package/dist/sites/secret-resolver.d.ts +6 -76
  436. package/dist/sites/secret-resolver.d.ts.map +1 -1
  437. package/dist/sites/secret-resolver.js +39 -104
  438. package/dist/sites/secret-resolver.js.map +1 -1
  439. package/dist/sites/store.d.ts +12 -69
  440. package/dist/sites/store.d.ts.map +1 -1
  441. package/dist/sites/store.js +37 -86
  442. package/dist/sites/store.js.map +1 -1
  443. package/dist/sites/substituted-registry.d.ts +11 -0
  444. package/dist/sites/substituted-registry.d.ts.map +1 -0
  445. package/dist/sites/substituted-registry.js +13 -0
  446. package/dist/sites/substituted-registry.js.map +1 -0
  447. package/dist/sites/tools/fetch-public-url.d.ts +4 -0
  448. package/dist/sites/tools/fetch-public-url.d.ts.map +1 -0
  449. package/dist/sites/tools/fetch-public-url.js +231 -0
  450. package/dist/sites/tools/fetch-public-url.js.map +1 -0
  451. package/dist/sites/tools/index.d.ts +2 -26
  452. package/dist/sites/tools/index.d.ts.map +1 -1
  453. package/dist/sites/tools/index.js +5 -28
  454. package/dist/sites/tools/index.js.map +1 -1
  455. package/dist/sites/tools/sites-list.d.ts +3 -47
  456. package/dist/sites/tools/sites-list.d.ts.map +1 -1
  457. package/dist/sites/tools/sites-list.js +68 -80
  458. package/dist/sites/tools/sites-list.js.map +1 -1
  459. package/dist/sites/tools/sites-overview.d.ts +4 -0
  460. package/dist/sites/tools/sites-overview.d.ts.map +1 -0
  461. package/dist/sites/tools/sites-overview.js +209 -0
  462. package/dist/sites/tools/sites-overview.js.map +1 -0
  463. package/dist/sites/tools/sites-test.d.ts +2 -45
  464. package/dist/sites/tools/sites-test.d.ts.map +1 -1
  465. package/dist/sites/tools/sites-test.js +1 -56
  466. package/dist/sites/tools/sites-test.js.map +1 -1
  467. package/dist/sites/tools/use-site.d.ts +2 -45
  468. package/dist/sites/tools/use-site.d.ts.map +1 -1
  469. package/dist/sites/tools/use-site.js +31 -80
  470. package/dist/sites/tools/use-site.js.map +1 -1
  471. package/dist/sites/unknown-name-result.d.ts +10 -0
  472. package/dist/sites/unknown-name-result.d.ts.map +1 -0
  473. package/dist/sites/unknown-name-result.js +13 -0
  474. package/dist/sites/unknown-name-result.js.map +1 -0
  475. package/dist/skill-instructions.d.ts +7 -0
  476. package/dist/skill-instructions.d.ts.map +1 -0
  477. package/dist/skill-instructions.js +84 -0
  478. package/dist/skill-instructions.js.map +1 -0
  479. package/dist/skill-loader.d.ts +0 -102
  480. package/dist/skill-loader.d.ts.map +1 -1
  481. package/dist/skill-loader.js +4 -142
  482. package/dist/skill-loader.js.map +1 -1
  483. package/dist/skill-manifest.d.ts +0 -20
  484. package/dist/skill-manifest.d.ts.map +1 -1
  485. package/dist/skill-manifest.js +1 -21
  486. package/dist/skill-manifest.js.map +1 -1
  487. package/dist/skill-topics.d.ts +19 -0
  488. package/dist/skill-topics.d.ts.map +1 -0
  489. package/dist/skill-topics.js +181 -0
  490. package/dist/skill-topics.js.map +1 -0
  491. package/dist/tools/active-site.d.ts +16 -0
  492. package/dist/tools/active-site.d.ts.map +1 -0
  493. package/dist/tools/active-site.js +55 -0
  494. package/dist/tools/active-site.js.map +1 -0
  495. package/dist/tools/bind-guidance.d.ts +2 -72
  496. package/dist/tools/bind-guidance.d.ts.map +1 -1
  497. package/dist/tools/bind-guidance.js +2 -72
  498. package/dist/tools/bind-guidance.js.map +1 -1
  499. package/dist/tools/budgeted-table.d.ts +16 -0
  500. package/dist/tools/budgeted-table.d.ts.map +1 -0
  501. package/dist/tools/budgeted-table.js +203 -0
  502. package/dist/tools/budgeted-table.js.map +1 -0
  503. package/dist/tools/elements/bind-output-schema.d.ts +69 -0
  504. package/dist/tools/elements/bind-output-schema.d.ts.map +1 -0
  505. package/dist/tools/elements/bind-output-schema.js +64 -0
  506. package/dist/tools/elements/bind-output-schema.js.map +1 -0
  507. package/dist/tools/elements/builders.d.ts +1 -22
  508. package/dist/tools/elements/builders.d.ts.map +1 -1
  509. package/dist/tools/elements/builders.js +171 -133
  510. package/dist/tools/elements/builders.js.map +1 -1
  511. package/dist/tools/elements/index.d.ts +0 -26
  512. package/dist/tools/elements/index.d.ts.map +1 -1
  513. package/dist/tools/elements/index.js +0 -25
  514. package/dist/tools/elements/index.js.map +1 -1
  515. package/dist/tools/elements/read-output-schemas.d.ts +121 -0
  516. package/dist/tools/elements/read-output-schemas.d.ts.map +1 -0
  517. package/dist/tools/elements/read-output-schemas.js +225 -0
  518. package/dist/tools/elements/read-output-schemas.js.map +1 -0
  519. package/dist/tools/elements/write-output-schemas.d.ts +185 -0
  520. package/dist/tools/elements/write-output-schemas.d.ts.map +1 -0
  521. package/dist/tools/elements/write-output-schemas.js +98 -0
  522. package/dist/tools/elements/write-output-schemas.js.map +1 -0
  523. package/dist/tools/elements.d.ts +0 -11
  524. package/dist/tools/elements.d.ts.map +1 -1
  525. package/dist/tools/elements.js +0 -11
  526. package/dist/tools/elements.js.map +1 -1
  527. package/dist/tools/format/health-format.d.ts +42 -43
  528. package/dist/tools/format/health-format.d.ts.map +1 -1
  529. package/dist/tools/format/health-format.js +32 -55
  530. package/dist/tools/format/health-format.js.map +1 -1
  531. package/dist/tools/format/inspection-format.d.ts +4 -49
  532. package/dist/tools/format/inspection-format.d.ts.map +1 -1
  533. package/dist/tools/format/inspection-format.js +46 -114
  534. package/dist/tools/format/inspection-format.js.map +1 -1
  535. package/dist/tools/format/pages-format.d.ts +32 -69
  536. package/dist/tools/format/pages-format.d.ts.map +1 -1
  537. package/dist/tools/format/pages-format.js +115 -133
  538. package/dist/tools/format/pages-format.js.map +1 -1
  539. package/dist/tools/format/sources-format.d.ts +5 -39
  540. package/dist/tools/format/sources-format.d.ts.map +1 -1
  541. package/dist/tools/format/sources-format.js +57 -87
  542. package/dist/tools/format/sources-format.js.map +1 -1
  543. package/dist/tools/health-output-schemas.d.ts +82 -0
  544. package/dist/tools/health-output-schemas.d.ts.map +1 -0
  545. package/dist/tools/health-output-schemas.js +130 -0
  546. package/dist/tools/health-output-schemas.js.map +1 -0
  547. package/dist/tools/health.d.ts +2 -20
  548. package/dist/tools/health.d.ts.map +1 -1
  549. package/dist/tools/health.js +59 -184
  550. package/dist/tools/health.js.map +1 -1
  551. package/dist/tools/index.d.ts +1 -26
  552. package/dist/tools/index.d.ts.map +1 -1
  553. package/dist/tools/index.js +13 -33
  554. package/dist/tools/index.js.map +1 -1
  555. package/dist/tools/inspection.d.ts +21 -17
  556. package/dist/tools/inspection.d.ts.map +1 -1
  557. package/dist/tools/inspection.js +431 -268
  558. package/dist/tools/inspection.js.map +1 -1
  559. package/dist/tools/library.d.ts +118 -126
  560. package/dist/tools/library.d.ts.map +1 -1
  561. package/dist/tools/library.js +723 -456
  562. package/dist/tools/library.js.map +1 -1
  563. package/dist/tools/local-content/builders.d.ts +1 -17
  564. package/dist/tools/local-content/builders.d.ts.map +1 -1
  565. package/dist/tools/local-content/builders.js +105 -48
  566. package/dist/tools/local-content/builders.js.map +1 -1
  567. package/dist/tools/local-content/index.d.ts +0 -15
  568. package/dist/tools/local-content/index.d.ts.map +1 -1
  569. package/dist/tools/local-content/index.js +0 -14
  570. package/dist/tools/local-content/index.js.map +1 -1
  571. package/dist/tools/local-content/schemas.d.ts +31 -47
  572. package/dist/tools/local-content/schemas.d.ts.map +1 -1
  573. package/dist/tools/local-content/schemas.js +33 -62
  574. package/dist/tools/local-content/schemas.js.map +1 -1
  575. package/dist/tools/modules/builders.d.ts +4 -0
  576. package/dist/tools/modules/builders.d.ts.map +1 -0
  577. package/dist/tools/modules/builders.js +58 -0
  578. package/dist/tools/modules/builders.js.map +1 -0
  579. package/dist/tools/modules/index.d.ts +2 -0
  580. package/dist/tools/modules/index.d.ts.map +1 -0
  581. package/dist/tools/modules/index.js +2 -0
  582. package/dist/tools/modules/index.js.map +1 -0
  583. package/dist/tools/modules/module-id-schema.d.ts +4 -0
  584. package/dist/tools/modules/module-id-schema.d.ts.map +1 -0
  585. package/dist/tools/modules/module-id-schema.js +14 -0
  586. package/dist/tools/modules/module-id-schema.js.map +1 -0
  587. package/dist/tools/modules/module-type-fields.d.ts +10 -0
  588. package/dist/tools/modules/module-type-fields.d.ts.map +1 -0
  589. package/dist/tools/modules/module-type-fields.js +34 -0
  590. package/dist/tools/modules/module-type-fields.js.map +1 -0
  591. package/dist/tools/modules/modules-create.d.ts +59 -0
  592. package/dist/tools/modules/modules-create.d.ts.map +1 -0
  593. package/dist/tools/modules/modules-create.js +154 -0
  594. package/dist/tools/modules/modules-create.js.map +1 -0
  595. package/dist/tools/modules/modules-delete.d.ts +51 -0
  596. package/dist/tools/modules/modules-delete.d.ts.map +1 -0
  597. package/dist/tools/modules/modules-delete.js +180 -0
  598. package/dist/tools/modules/modules-delete.js.map +1 -0
  599. package/dist/tools/modules/modules-update.d.ts +43 -0
  600. package/dist/tools/modules/modules-update.d.ts.map +1 -0
  601. package/dist/tools/modules/modules-update.js +177 -0
  602. package/dist/tools/modules/modules-update.js.map +1 -0
  603. package/dist/tools/modules/placement-hints.d.ts +5 -0
  604. package/dist/tools/modules/placement-hints.d.ts.map +1 -0
  605. package/dist/tools/modules/placement-hints.js +90 -0
  606. package/dist/tools/modules/placement-hints.js.map +1 -0
  607. package/dist/tools/modules/placement-ways.d.ts +13 -0
  608. package/dist/tools/modules/placement-ways.d.ts.map +1 -0
  609. package/dist/tools/modules/placement-ways.js +61 -0
  610. package/dist/tools/modules/placement-ways.js.map +1 -0
  611. package/dist/tools/multi-items/builders.d.ts +1 -21
  612. package/dist/tools/multi-items/builders.d.ts.map +1 -1
  613. package/dist/tools/multi-items/builders.js +22 -67
  614. package/dist/tools/multi-items/builders.js.map +1 -1
  615. package/dist/tools/multi-items/index.d.ts +0 -15
  616. package/dist/tools/multi-items/index.d.ts.map +1 -1
  617. package/dist/tools/multi-items/index.js +0 -15
  618. package/dist/tools/multi-items/index.js.map +1 -1
  619. package/dist/tools/multi-items/item-container-map.d.ts +0 -35
  620. package/dist/tools/multi-items/item-container-map.d.ts.map +1 -1
  621. package/dist/tools/multi-items/item-container-map.js +0 -35
  622. package/dist/tools/multi-items/item-container-map.js.map +1 -1
  623. package/dist/tools/multi-items/output-schemas.d.ts +101 -0
  624. package/dist/tools/multi-items/output-schemas.d.ts.map +1 -0
  625. package/dist/tools/multi-items/output-schemas.js +74 -0
  626. package/dist/tools/multi-items/output-schemas.js.map +1 -0
  627. package/dist/tools/navigation/builders.d.ts +3 -0
  628. package/dist/tools/navigation/builders.d.ts.map +1 -0
  629. package/dist/tools/navigation/builders.js +25 -0
  630. package/dist/tools/navigation/builders.js.map +1 -0
  631. package/dist/tools/navigation/index.d.ts +2 -0
  632. package/dist/tools/navigation/index.d.ts.map +1 -0
  633. package/dist/tools/navigation/index.js +2 -0
  634. package/dist/tools/navigation/index.js.map +1 -0
  635. package/dist/tools/navigation/schemas.d.ts +16 -0
  636. package/dist/tools/navigation/schemas.d.ts.map +1 -0
  637. package/dist/tools/navigation/schemas.js +11 -0
  638. package/dist/tools/navigation/schemas.js.map +1 -0
  639. package/dist/tools/output-schema-metadata.d.ts +5 -0
  640. package/dist/tools/output-schema-metadata.d.ts.map +1 -0
  641. package/dist/tools/output-schema-metadata.js +83 -0
  642. package/dist/tools/output-schema-metadata.js.map +1 -0
  643. package/dist/tools/pages/builders.d.ts +1 -41
  644. package/dist/tools/pages/builders.d.ts.map +1 -1
  645. package/dist/tools/pages/builders.js +373 -359
  646. package/dist/tools/pages/builders.js.map +1 -1
  647. package/dist/tools/pages/header-transparency.d.ts +34 -0
  648. package/dist/tools/pages/header-transparency.d.ts.map +1 -0
  649. package/dist/tools/pages/header-transparency.js +85 -0
  650. package/dist/tools/pages/header-transparency.js.map +1 -0
  651. package/dist/tools/pages/index.d.ts +1 -19
  652. package/dist/tools/pages/index.d.ts.map +1 -1
  653. package/dist/tools/pages/index.js +1 -19
  654. package/dist/tools/pages/index.js.map +1 -1
  655. package/dist/tools/pages/schemas.d.ts +392 -224
  656. package/dist/tools/pages/schemas.d.ts.map +1 -1
  657. package/dist/tools/pages/schemas.js +605 -458
  658. package/dist/tools/pages/schemas.js.map +1 -1
  659. package/dist/tools/pages/write-output-schemas.d.ts +139 -0
  660. package/dist/tools/pages/write-output-schemas.d.ts.map +1 -0
  661. package/dist/tools/pages/write-output-schemas.js +138 -0
  662. package/dist/tools/pages/write-output-schemas.js.map +1 -0
  663. package/dist/tools/pages.d.ts +0 -11
  664. package/dist/tools/pages.d.ts.map +1 -1
  665. package/dist/tools/pages.js +0 -11
  666. package/dist/tools/pages.js.map +1 -1
  667. package/dist/tools/pool-resolve-helper.d.ts +0 -52
  668. package/dist/tools/pool-resolve-helper.d.ts.map +1 -1
  669. package/dist/tools/pool-resolve-helper.js +29 -104
  670. package/dist/tools/pool-resolve-helper.js.map +1 -1
  671. package/dist/tools/progress-phases.d.ts +0 -42
  672. package/dist/tools/progress-phases.d.ts.map +1 -1
  673. package/dist/tools/progress-phases.js +0 -44
  674. package/dist/tools/progress-phases.js.map +1 -1
  675. package/dist/tools/response-budget.d.ts +8 -0
  676. package/dist/tools/response-budget.d.ts.map +1 -0
  677. package/dist/tools/response-budget.js +7 -0
  678. package/dist/tools/response-budget.js.map +1 -0
  679. package/dist/tools/shared-schemas.d.ts +12 -43
  680. package/dist/tools/shared-schemas.d.ts.map +1 -1
  681. package/dist/tools/shared-schemas.js +42 -97
  682. package/dist/tools/shared-schemas.js.map +1 -1
  683. package/dist/tools/skill/builders.d.ts +3 -0
  684. package/dist/tools/skill/builders.d.ts.map +1 -0
  685. package/dist/tools/skill/builders.js +81 -0
  686. package/dist/tools/skill/builders.js.map +1 -0
  687. package/dist/tools/sources/builders.d.ts +1 -11
  688. package/dist/tools/sources/builders.d.ts.map +1 -1
  689. package/dist/tools/sources/builders.js +195 -173
  690. package/dist/tools/sources/builders.js.map +1 -1
  691. package/dist/tools/sources/index.d.ts +0 -17
  692. package/dist/tools/sources/index.d.ts.map +1 -1
  693. package/dist/tools/sources/index.js +0 -16
  694. package/dist/tools/sources/index.js.map +1 -1
  695. package/dist/tools/sources/read-output-schemas.d.ts +101 -0
  696. package/dist/tools/sources/read-output-schemas.d.ts.map +1 -0
  697. package/dist/tools/sources/read-output-schemas.js +105 -0
  698. package/dist/tools/sources/read-output-schemas.js.map +1 -0
  699. package/dist/tools/sources/source-name-argument.d.ts +17 -0
  700. package/dist/tools/sources/source-name-argument.d.ts.map +1 -0
  701. package/dist/tools/sources/source-name-argument.js +64 -0
  702. package/dist/tools/sources/source-name-argument.js.map +1 -0
  703. package/dist/tools/sources/write-output-schemas.d.ts +100 -0
  704. package/dist/tools/sources/write-output-schemas.d.ts.map +1 -0
  705. package/dist/tools/sources/write-output-schemas.js +61 -0
  706. package/dist/tools/sources/write-output-schemas.js.map +1 -0
  707. package/dist/tools/sources.d.ts +0 -12
  708. package/dist/tools/sources.d.ts.map +1 -1
  709. package/dist/tools/sources.js +0 -12
  710. package/dist/tools/sources.js.map +1 -1
  711. package/dist/tools/sparse-fields.d.ts +19 -194
  712. package/dist/tools/sparse-fields.d.ts.map +1 -1
  713. package/dist/tools/sparse-fields.js +212 -196
  714. package/dist/tools/sparse-fields.js.map +1 -1
  715. package/dist/tools/strict-input.d.ts +5 -0
  716. package/dist/tools/strict-input.d.ts.map +1 -0
  717. package/dist/tools/strict-input.js +55 -0
  718. package/dist/tools/strict-input.js.map +1 -0
  719. package/dist/tools/sublayout/builders.d.ts +1 -21
  720. package/dist/tools/sublayout/builders.d.ts.map +1 -1
  721. package/dist/tools/sublayout/builders.js +10 -40
  722. package/dist/tools/sublayout/builders.js.map +1 -1
  723. package/dist/tools/sublayout/index.d.ts +1 -11
  724. package/dist/tools/sublayout/index.d.ts.map +1 -1
  725. package/dist/tools/sublayout/index.js +1 -11
  726. package/dist/tools/sublayout/index.js.map +1 -1
  727. package/dist/tools/sublayout/output-schemas.d.ts +57 -0
  728. package/dist/tools/sublayout/output-schemas.d.ts.map +1 -0
  729. package/dist/tools/sublayout/output-schemas.js +51 -0
  730. package/dist/tools/sublayout/output-schemas.js.map +1 -0
  731. package/dist/tools/tool-builder/annotations.d.ts +1 -49
  732. package/dist/tools/tool-builder/annotations.d.ts.map +1 -1
  733. package/dist/tools/tool-builder/annotations.js +9 -49
  734. package/dist/tools/tool-builder/annotations.js.map +1 -1
  735. package/dist/tools/tool-builder/confirm-preview.d.ts +24 -0
  736. package/dist/tools/tool-builder/confirm-preview.d.ts.map +1 -0
  737. package/dist/tools/tool-builder/confirm-preview.js +37 -0
  738. package/dist/tools/tool-builder/confirm-preview.js.map +1 -0
  739. package/dist/tools/tool-builder/define.d.ts +6 -26
  740. package/dist/tools/tool-builder/define.d.ts.map +1 -1
  741. package/dist/tools/tool-builder/define.js +0 -25
  742. package/dist/tools/tool-builder/define.js.map +1 -1
  743. package/dist/tools/tool-builder/index.d.ts +3 -26
  744. package/dist/tools/tool-builder/index.d.ts.map +1 -1
  745. package/dist/tools/tool-builder/index.js +2 -25
  746. package/dist/tools/tool-builder/index.js.map +1 -1
  747. package/dist/tools/tool-builder/results.d.ts +4 -111
  748. package/dist/tools/tool-builder/results.d.ts.map +1 -1
  749. package/dist/tools/tool-builder/results.js +258 -250
  750. package/dist/tools/tool-builder/results.js.map +1 -1
  751. package/dist/tools/tool-builder/types.d.ts +5 -59
  752. package/dist/tools/tool-builder/types.d.ts.map +1 -1
  753. package/dist/tools/tool-builder/types.js +0 -7
  754. package/dist/tools/tool-builder/types.js.map +1 -1
  755. package/dist/tools/tool-builder.d.ts +0 -14
  756. package/dist/tools/tool-builder.d.ts.map +1 -1
  757. package/dist/tools/tool-builder.js +0 -14
  758. package/dist/tools/tool-builder.js.map +1 -1
  759. package/dist/uninstall-skill.d.ts +0 -41
  760. package/dist/uninstall-skill.d.ts.map +1 -1
  761. package/dist/uninstall-skill.js +0 -49
  762. package/dist/uninstall-skill.js.map +1 -1
  763. package/dist/uninstall.d.ts +0 -41
  764. package/dist/uninstall.d.ts.map +1 -1
  765. package/dist/uninstall.js +1 -29
  766. package/dist/uninstall.js.map +1 -1
  767. package/dist/update/update-check.d.ts +0 -26
  768. package/dist/update/update-check.d.ts.map +1 -1
  769. package/dist/update/update-check.js +0 -25
  770. package/dist/update/update-check.js.map +1 -1
  771. package/manifest.json +4 -5
  772. package/package.json +5 -5
  773. package/skills/yt-builder-mcp/SKILL.md +2958 -382
  774. package/dist/tools/elements/handlers-write.d.ts +0 -70
  775. package/dist/tools/elements/handlers-write.d.ts.map +0 -1
  776. package/dist/tools/elements/handlers-write.js +0 -700
  777. package/dist/tools/elements/handlers-write.js.map +0 -1
  778. package/dist/tools/elements/handlers.d.ts +0 -125
  779. package/dist/tools/elements/handlers.d.ts.map +0 -1
  780. package/dist/tools/elements/handlers.js +0 -571
  781. package/dist/tools/elements/handlers.js.map +0 -1
  782. package/dist/tools/elements/layout-hierarchy-rules.d.ts +0 -62
  783. package/dist/tools/elements/layout-hierarchy-rules.d.ts.map +0 -1
  784. package/dist/tools/elements/layout-hierarchy-rules.js +0 -154
  785. package/dist/tools/elements/layout-hierarchy-rules.js.map +0 -1
  786. package/dist/tools/elements/schema-validation.d.ts +0 -96
  787. package/dist/tools/elements/schema-validation.d.ts.map +0 -1
  788. package/dist/tools/elements/schema-validation.js +0 -249
  789. package/dist/tools/elements/schema-validation.js.map +0 -1
  790. package/dist/tools/elicitation.d.ts +0 -87
  791. package/dist/tools/elicitation.d.ts.map +0 -1
  792. package/dist/tools/elicitation.js +0 -100
  793. package/dist/tools/elicitation.js.map +0 -1
  794. package/dist/tools/format/elements-format.d.ts +0 -75
  795. package/dist/tools/format/elements-format.d.ts.map +0 -1
  796. package/dist/tools/format/elements-format.js +0 -324
  797. package/dist/tools/format/elements-format.js.map +0 -1
  798. package/dist/tools/format/source-schema-format.d.ts +0 -74
  799. package/dist/tools/format/source-schema-format.d.ts.map +0 -1
  800. package/dist/tools/format/source-schema-format.js +0 -208
  801. package/dist/tools/format/source-schema-format.js.map +0 -1
  802. package/dist/tools/layout-flatten.d.ts +0 -84
  803. package/dist/tools/layout-flatten.d.ts.map +0 -1
  804. package/dist/tools/layout-flatten.js +0 -129
  805. package/dist/tools/layout-flatten.js.map +0 -1
  806. package/dist/tools/local-content/handlers.d.ts +0 -54
  807. package/dist/tools/local-content/handlers.d.ts.map +0 -1
  808. package/dist/tools/local-content/handlers.js +0 -316
  809. package/dist/tools/local-content/handlers.js.map +0 -1
  810. package/dist/tools/multi-items/clean-implode-handler.d.ts +0 -37
  811. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +0 -1
  812. package/dist/tools/multi-items/clean-implode-handler.js +0 -65
  813. package/dist/tools/multi-items/clean-implode-handler.js.map +0 -1
  814. package/dist/tools/multi-items/format/inspection-format.d.ts +0 -41
  815. package/dist/tools/multi-items/format/inspection-format.d.ts.map +0 -1
  816. package/dist/tools/multi-items/format/inspection-format.js +0 -64
  817. package/dist/tools/multi-items/format/inspection-format.js.map +0 -1
  818. package/dist/tools/multi-items/inspect-handler.d.ts +0 -97
  819. package/dist/tools/multi-items/inspect-handler.d.ts.map +0 -1
  820. package/dist/tools/multi-items/inspect-handler.js +0 -323
  821. package/dist/tools/multi-items/inspect-handler.js.map +0 -1
  822. package/dist/tools/multi-items/inspection-cache.d.ts +0 -85
  823. package/dist/tools/multi-items/inspection-cache.d.ts.map +0 -1
  824. package/dist/tools/multi-items/inspection-cache.js +0 -126
  825. package/dist/tools/multi-items/inspection-cache.js.map +0 -1
  826. package/dist/tools/pages/handlers-audit.d.ts +0 -129
  827. package/dist/tools/pages/handlers-audit.d.ts.map +0 -1
  828. package/dist/tools/pages/handlers-audit.js +0 -704
  829. package/dist/tools/pages/handlers-audit.js.map +0 -1
  830. package/dist/tools/pages/handlers-read.d.ts +0 -95
  831. package/dist/tools/pages/handlers-read.d.ts.map +0 -1
  832. package/dist/tools/pages/handlers-read.js +0 -929
  833. package/dist/tools/pages/handlers-read.js.map +0 -1
  834. package/dist/tools/pages/handlers-write.d.ts +0 -212
  835. package/dist/tools/pages/handlers-write.d.ts.map +0 -1
  836. package/dist/tools/pages/handlers-write.js +0 -418
  837. package/dist/tools/pages/handlers-write.js.map +0 -1
  838. package/dist/tools/pages/target.d.ts +0 -162
  839. package/dist/tools/pages/target.d.ts.map +0 -1
  840. package/dist/tools/pages/target.js +0 -239
  841. package/dist/tools/pages/target.js.map +0 -1
  842. package/dist/tools/sources/handlers-bind.d.ts +0 -148
  843. package/dist/tools/sources/handlers-bind.d.ts.map +0 -1
  844. package/dist/tools/sources/handlers-bind.js +0 -655
  845. package/dist/tools/sources/handlers-bind.js.map +0 -1
  846. package/dist/tools/sources/handlers.d.ts +0 -114
  847. package/dist/tools/sources/handlers.d.ts.map +0 -1
  848. package/dist/tools/sources/handlers.js +0 -285
  849. package/dist/tools/sources/handlers.js.map +0 -1
  850. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts +0 -95
  851. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts.map +0 -1
  852. package/dist/tools/sublayout/inspect-sublayout-handler.js +0 -181
  853. package/dist/tools/sublayout/inspect-sublayout-handler.js.map +0 -1
@@ -1,655 +0,0 @@
1
- /**
2
- * Source-binding write handlers (`element_bind_source`,
3
- * `element_unbind_source`).
4
- *
5
- * Split out of `./handlers.ts` to keep each file under the 200-LoC
6
- * budget. Wave G.4.2 adds destructive-confirm elicitation;
7
- * Wave G.4.3 adds ambiguity-resolution elicitation.
8
- *
9
- * @license MIT
10
- */
11
- import { elicitChoice, elicitConfirmation } from '@getimo/mcp-toolkit';
12
- import { z } from 'zod';
13
- import { encodeElementPath, encodeTemplateId } from '../../client.js';
14
- import { RestError } from '../../errors.js';
15
- import { flattenSourcesPayload, mapSourceRow, } from '../format/sources-format.js';
16
- import { ambiguityFallbackError, } from '../elicitation.js';
17
- import { confirmGuard, errorResult, jsonResult, structuredResult, } from '../tool-builder.js';
18
- import { detailResult } from '@getimo/mcp-toolkit';
19
- import { GRID_ITEM_ITERATOR_REJECT, SLOT_COLLISION_STEERING, } from '../bind-guidance.js';
20
- /**
21
- * Wave-12 F9 — extract validation-hint fields surfaced by the WP REST
22
- * plugin when `source_name` is rejected (`unknown_source` code). The PHP
23
- * controller writes `given`, `did_you_mean`, and `all_published_sources`
24
- * into the WP_Error data; WordPress serialises that under the response
25
- * body's `data` key. Surface those hints into the tool-result `context`
26
- * so the agent can correct + retry in one step.
27
- */
28
- function extractUnknownSourceHints(body) {
29
- if (body === null || typeof body !== 'object')
30
- return null;
31
- const root = body;
32
- if (root.code !== 'yootheme_builder_mcp.source_binding.unknown_source')
33
- return null;
34
- const data = root.data;
35
- if (data === null || typeof data !== 'object')
36
- return null;
37
- const d = data;
38
- return {
39
- given: typeof d.given === 'string' ? d.given : undefined,
40
- did_you_mean: d.did_you_mean,
41
- all_published_sources: d.all_published_sources,
42
- };
43
- }
44
- /**
45
- * F189 — true iff the REST error body is the slot-collision reject (409). The
46
- * WP plugin writes `code` = `…source_binding.slot_collision`; both platforms
47
- * also carry `data.error_code === 'slot_collision'` (WordPress nests hint data
48
- * under `data`; the Joomla envelope surfaces the same `error_code`).
49
- */
50
- function isSlotCollision(body) {
51
- if (body === null || typeof body !== 'object')
52
- return false;
53
- const root = body;
54
- if (typeof root.code === 'string' &&
55
- root.code.endsWith('source_binding.slot_collision')) {
56
- return true;
57
- }
58
- if (root.error_code === 'slot_collision')
59
- return true;
60
- const data = root.data;
61
- if (data !== null && typeof data === 'object') {
62
- return data.error_code === 'slot_collision';
63
- }
64
- return false;
65
- }
66
- /** Pull a `list<string>` from a passthrough body field, or `[]`. */
67
- function stringList(value) {
68
- if (!Array.isArray(value))
69
- return [];
70
- return value.filter((k) => typeof k === 'string');
71
- }
72
- /**
73
- * F174 — the bind succeeded but with ZERO field mappings: each of the N
74
- * cloned items will render only the template's static placeholder text
75
- * ("Title" / "Lorem ipsum"), not real data. This is a silent footgun: a
76
- * caged agent bound source_name + bindingLevel only, the call returned 200
77
- * + binding_level:"item", and element_get_binding reported a healthy-looking
78
- * binding — but the frontend showed N identical placeholder cards. The
79
- * warning is NOT a hard reject (a first bind of just the source can be a
80
- * legitimate intermediate step), but it must be unmissable.
81
- *
82
- * `hadMappings` is true when the bind REQUEST carried a non-empty
83
- * field_mappings object. We fire only when the request had no mappings AND
84
- * the response did not report any dropped mappings (a re-bind that shrinks an
85
- * existing map keeps real data on the kept props — that is the F147 warning's
86
- * territory, not this one).
87
- */
88
- function zeroFieldMappingsWarning() {
89
- return ('0 field mappings bound — the cloned items will render the template\'s ' +
90
- 'static placeholder texts (Title / Lorem ipsum), not real data. ' +
91
- 'Re-bind with field_mappings AT THIS ITEM (call element_bind_source ' +
92
- 'again on THIS same element_path with a non-empty ' +
93
- 'field_mappings:{<element_prop>:<source_field>}). Do NOT bind the ' +
94
- 'individual child leaves instead: on YT5 a "#parent" leaf bind written ' +
95
- 'directly under an iterating item renders placeholder text — the ' +
96
- 'field_mappings-at-the-item form is the shape that resolves. Discover ' +
97
- 'props via yootheme_builder_element_type_get_schema, source fields via ' +
98
- 'apimapper_yootheme_binding_for_flow.');
99
- }
100
- /**
101
- * F129 + F147 + F174 — when the REST plugin's bind response carries
102
- * `unknown_prop_keys` (field_mappings keys the target element-type does
103
- * not render) and/or `dropped_field_mappings` (leaves the new, smaller
104
- * field_mappings dropped from the prior binding — full replace, not
105
- * merge), promote them to a TOP-LEVEL `warning` string so both silent-
106
- * footgun signals are the first thing the agent sees. F174: when the bind
107
- * persisted a source binding with ZERO field mappings (request had none and
108
- * none were dropped), promote the placeholder-render footgun warning too.
109
- * Returns the body unchanged when no signal is present (no warning on the
110
- * happy path).
111
- */
112
- function withBindWarnings(body, hadMappings) {
113
- if (body === null || typeof body !== 'object' || Array.isArray(body))
114
- return body;
115
- const root = body;
116
- const unknownKeys = stringList(root.unknown_prop_keys);
117
- const droppedKeys = stringList(root.dropped_field_mappings);
118
- // SOURCES_BINDING-9: the PHP chokepoint may already have set a top-level
119
- // `warning` (e.g. the SourceTransform::repeatSource container-clone warning:
120
- // "Binding lives on the container. YT-Pro clones the container N times…").
121
- // SEED `parts` with it so it is PRESERVED — the field-mappings parts below
122
- // append AFTER it. The former `parts.join(' ')` overwrote `root.warning`
123
- // outright, silently discarding that container-clone footgun signal.
124
- const parts = [];
125
- if (typeof root.warning === 'string' && root.warning.trim() !== '') {
126
- parts.push(root.warning);
127
- }
128
- if (unknownKeys.length > 0) {
129
- parts.push(`These field_mappings keys are not props the target element renders, ` +
130
- `so their values will be silently dropped: ${unknownKeys.join(', ')}. ` +
131
- `Run yootheme_builder_element_type_get_schema for valid prop names ` +
132
- `(see unknown_prop_keys_did_you_mean for suggestions), or re-bind onto ` +
133
- `an element that exposes these props.`);
134
- }
135
- // G2 (WF1 Phase-2) — the VALUE-side mirror of unknown_prop_keys. A
136
- // field_mappings VALUE that names a source-field the bound flow does NOT
137
- // emit binds to nothing → the bind returns 200 but the element renders
138
- // blank. The PHP chokepoint is the only place that resolves BOTH the
139
- // source's field set AND the target element, so it flags these as
140
- // `unknown_source_field_values` (with the available set in
141
- // `unknown_source_field_values_available`). Promote both into the
142
- // top-level warning so the agent sees which field is wrong AND the
143
- // valid choices, in one step.
144
- const unknownFieldValues = stringList(root.unknown_source_field_values);
145
- if (unknownFieldValues.length > 0) {
146
- const available = stringList(root.unknown_source_field_values_available);
147
- const availableHint = available.length > 0
148
- ? ` Available source fields: ${available.join(', ')}.`
149
- : '';
150
- parts.push(`These field_mappings values name source fields the bound source does ` +
151
- `not emit, so they bind to nothing (the element renders blank): ` +
152
- `${unknownFieldValues.join(', ')}.${availableHint} Re-bind with a ` +
153
- `source-field name the flow actually emits — list them via ` +
154
- `apimapper_yootheme_binding_for_flow.`);
155
- }
156
- if (droppedKeys.length > 0) {
157
- parts.push(`field_mappings is a full REPLACE, not a merge — this re-bind dropped ` +
158
- `the previously-bound prop(s): ${droppedKeys.join(', ')}. If that was ` +
159
- `unintended, re-bind with the full set (include the dropped keys).`);
160
- }
161
- // F174 — only when the request bound a source with no mappings AND no
162
- // prior mappings were dropped. A bind that dropped keys still kept real
163
- // data on the survivors → not a zero-mappings placeholder situation.
164
- if (!hadMappings && droppedKeys.length === 0 && bindPersistedSource(root)) {
165
- parts.push(zeroFieldMappingsWarning());
166
- }
167
- // F189 — the bind landed a `…List` source on a LEAF renderer (grid_item /
168
- // any non-container) that ALSO carries nested children. The item's own slot
169
- // bind resolved, but its nested children are render-dead (the template never
170
- // renders them). Promote the reject-recipe text so the agent fixes the shape
171
- // instead of shipping a placeholder grid.
172
- if (root.iterator_is_leaf_renderer === true) {
173
- parts.push(GRID_ITEM_ITERATOR_REJECT);
174
- }
175
- if (parts.length === 0)
176
- return body;
177
- return { ...root, warning: parts.join(' ') };
178
- }
179
- /**
180
- * F174 — did the bind response persist an actual source binding (vs an
181
- * unbind / no-op)? True when the response `binding.source_name` (or the
182
- * top-level `source_name`) is a non-empty string. Guards the zero-mappings
183
- * warning so it never fires on an unbind echo.
184
- */
185
- function bindPersistedSource(root) {
186
- const fromBinding = root.binding !== null && typeof root.binding === 'object' && !Array.isArray(root.binding)
187
- ? root.binding.source_name
188
- : undefined;
189
- const name = typeof fromBinding === 'string' ? fromBinding : root.source_name;
190
- return typeof name === 'string' && name.length > 0;
191
- }
192
- // ─── element_bind_source (G.4.3 — ambiguity resolution) ─────────────
193
- /**
194
- * Look up sources matching `source_name`. Returns at most one row per
195
- * (name + origin) tuple; cross-plugin name collisions yield multiple
196
- * candidates that need disambiguation.
197
- *
198
- * TODO(v0.3): cache /sources per session to avoid the round-trip on
199
- * every bind. The current "fetch on every bind" call is the only REST
200
- * round-trip introduced by ambiguity resolution and dominates bind
201
- * latency — see tests/perf/bind-latency.test.ts for the pin.
202
- */
203
- async function fetchSourceCandidates(client, source_name) {
204
- const data = await client.get('/sources');
205
- const payload = data.sources ?? data;
206
- const flat = flattenSourcesPayload(payload);
207
- return flat.map(mapSourceRow).filter((r) => r.name === source_name);
208
- }
209
- /**
210
- * A single `field_mappings` value. F96/F82 (2026-06-10): EITHER a plain
211
- * source-field name string, OR a structured `{name, filters?}` object that
212
- * carries an explicit YT5 filters operator (e.g. `{condition: '!!'}` on a
213
- * `_condition` prop, or `{date: 'D, d.m.y'}` for a date format). Mirrors the
214
- * `field_mappings` union in `./builders.ts`. The handler forwards the value
215
- * verbatim — the PHP SourcesController normalises + persists it.
216
- */
217
- /**
218
- * SOURCES_BINDING-8 — narrow the PHP `unknown_prop_keys_did_you_mean` body field
219
- * (a map of unknown-key → closest known prop names) to the typed shape the
220
- * strict output schema declares, dropping a malformed payload rather than
221
- * letting it trip the -32602 gate.
222
- */
223
- function isDidYouMeanMap(value) {
224
- if (value === null || typeof value !== 'object' || Array.isArray(value))
225
- return false;
226
- return Object.values(value).every((v) => Array.isArray(v) && v.every((s) => typeof s === 'string'));
227
- }
228
- export async function handleElementBindSource({ client, elicitation }, input) {
229
- const { template_id, element_path, source_name, source_id, etag, bindingLevel, field_mappings, relation, field, arguments: fieldArguments, directives, query_arguments, } = input;
230
- const encoded = encodeElementPath(element_path);
231
- // Wave G.4.3 — ambiguity resolution.
232
- //
233
- // If `source_id` is supplied, the caller has already disambiguated;
234
- // skip the /sources lookup entirely.
235
- //
236
- // Otherwise look up rows matching `source_name`:
237
- // - 0 matches: fall through to the bind call; the REST plugin
238
- // returns its own structured 404 with a precise hint (sources
239
- // can be added between the lookup and the call).
240
- // - 1 match: unique → bind directly.
241
- // - ≥2 matches: cross-plugin collision (e.g. an apimapper flow
242
- // AND a wordpress source both named "Posts"). Elicit a choice
243
- // on supporting hosts; on unsupported hosts, return a
244
- // structured `ambiguityFallbackError` listing every candidate
245
- // so the agent can retry with `source_id`.
246
- let resolvedBody = { source_name };
247
- if (bindingLevel !== undefined) {
248
- resolvedBody.bindingLevel = bindingLevel;
249
- }
250
- if (field_mappings !== undefined) {
251
- resolvedBody.field_mappings = field_mappings;
252
- }
253
- // B5 — forward the relation/field selector verbatim. `arguments` +
254
- // `directives` are only meaningful alongside `field`, but we forward them
255
- // whenever present and let the PHP SourcesController be the single
256
- // place that decides how they land in `query.field` (one engine, both
257
- // platforms). Omitting all four preserves the legacy flat-source bind.
258
- if (relation !== undefined) {
259
- resolvedBody.relation = relation;
260
- }
261
- if (field !== undefined) {
262
- resolvedBody.field = field;
263
- }
264
- if (fieldArguments !== undefined) {
265
- resolvedBody.arguments = fieldArguments;
266
- }
267
- if (directives !== undefined) {
268
- resolvedBody.directives = directives;
269
- }
270
- // N2 — forward the TOP-LEVEL query arguments verbatim. The PHP
271
- // SourcesController is the single place that lands them in
272
- // `source.query.arguments` (one engine, both platforms).
273
- if (query_arguments !== undefined) {
274
- resolvedBody.query_arguments = query_arguments;
275
- }
276
- if (source_id === undefined) {
277
- const candidates = await fetchSourceCandidates(client, source_name);
278
- if (candidates.length > 1) {
279
- const elicitCandidates = candidates.map((c) => ({
280
- id: `${c.origin}:${c.name}`,
281
- label: `${c.label || c.name} (${c.origin}${c.kind ? `/${c.kind}` : ''})`,
282
- }));
283
- const picked = elicitation
284
- ? await elicitChoice(elicitation, `Multiple sources named "${source_name}" exist. Pick which ` +
285
- `one to bind to "${element_path}".`, elicitCandidates.map((c) => c.id))
286
- : null;
287
- if (picked === null) {
288
- return ambiguityFallbackError({
289
- code: 'source_ambiguous',
290
- paramName: 'source_id',
291
- what: 'sources',
292
- candidates: elicitCandidates,
293
- context: { template_id, element_path, source_name },
294
- });
295
- }
296
- resolvedBody = { ...resolvedBody, source_id: picked };
297
- }
298
- }
299
- else {
300
- resolvedBody = { ...resolvedBody, source_id };
301
- }
302
- try {
303
- const data = await client.put(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`, { body: resolvedBody, etag });
304
- // F129 + F147 + F174 — the bind persisted (200), but the REST plugin
305
- // may have flagged field_mappings keys the target element-type does
306
- // not render (`unknown_prop_keys`) and/or leaves the new, smaller
307
- // map dropped from the prior binding (`dropped_field_mappings` —
308
- // full replace, not merge); and the bind may have persisted a source
309
- // with ZERO field mappings (renders only template placeholders).
310
- // All are silent footguns at render time. Lift them into a TOP-LEVEL
311
- // warning so the agent notices and corrects, rather than leaving the
312
- // signal buried in the passthrough body.
313
- const hadMappings = field_mappings !== undefined && Object.keys(field_mappings).length > 0;
314
- return jsonResult(withBindWarnings(data, hadMappings));
315
- }
316
- catch (e) {
317
- // Wave-12 F9 — surface unknown-source hints directly into the
318
- // result context so the agent can correct the source_name and
319
- // retry in one step instead of guessing.
320
- const baseContext = {
321
- template_id,
322
- element_path,
323
- source_name,
324
- ...(source_id ? { source_id } : {}),
325
- };
326
- if (e instanceof RestError) {
327
- // F189 — slot collision (409): two fields would land on the same
328
- // parent prop slot during F188 consolidation, OR the lifted key is
329
- // not a slot of the parent type. The server's message already names
330
- // the slot + recipe; surface the canonical steering as the hint so
331
- // the agent gives each field its own leaf / a distinct slot.
332
- if (isSlotCollision(e.body)) {
333
- return errorResult({
334
- error: e,
335
- context: baseContext,
336
- hint: SLOT_COLLISION_STEERING,
337
- });
338
- }
339
- const hints = extractUnknownSourceHints(e.body);
340
- if (hints !== null) {
341
- if (hints.did_you_mean !== undefined) {
342
- baseContext.did_you_mean = hints.did_you_mean;
343
- }
344
- if (hints.all_published_sources !== undefined) {
345
- baseContext.all_published_sources = hints.all_published_sources;
346
- }
347
- return errorResult({
348
- error: e,
349
- context: baseContext,
350
- hint: 'source_name does not match any published source. Pick from ' +
351
- '`all_published_sources` (full list) or `did_you_mean` (closest matches) ' +
352
- 'in the context, or run yootheme_builder_sources_list to refresh.',
353
- });
354
- }
355
- }
356
- return errorResult({
357
- error: e,
358
- context: baseContext,
359
- hint: 'Verify source_name via yootheme_builder_sources_list. On 412 ' +
360
- 'refresh ETag and retry.',
361
- });
362
- }
363
- }
364
- // ─── element_unbind_source (destructive — G.4.2) ────────────────────
365
- export async function handleElementUnbindSource({ client, elicitation }, input) {
366
- const { template_id, element_path, etag, confirm } = input;
367
- if (confirm !== true) {
368
- if (confirm === false || !elicitation) {
369
- return confirmGuard({
370
- operation: 'unbind source',
371
- details: { template_id, element_path },
372
- });
373
- }
374
- const accepted = await elicitConfirmation(elicitation, `Unbind the dynamic source from element "${element_path}" in template ` +
375
- `"${template_id}"? This may break dynamic-content rendering.`);
376
- if (!accepted) {
377
- return confirmGuard({
378
- operation: 'unbind source',
379
- details: { template_id, element_path },
380
- });
381
- }
382
- }
383
- const encoded = encodeElementPath(element_path);
384
- try {
385
- const data = await client.delete(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`, { etag });
386
- return jsonResult(data);
387
- }
388
- catch (e) {
389
- return errorResult({
390
- error: e,
391
- context: { template_id, element_path },
392
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry.',
393
- });
394
- }
395
- }
396
- // ─── element_set_source (F2 — surgical source-edit) ─────────────────
397
- /**
398
- * F2 (Glöckle HANDOFF-4) — the `element_set_source` STRICT output schema.
399
- *
400
- * A default (strip) ZodObject so a strict (`additionalProperties:false`) host
401
- * accepts the structuredContent and the shape-pin guard's `.strict()` re-parse
402
- * passes. The success body the PHP `SourcesController::set_source` returns is
403
- * `{template_id, element_path, etag, new_etag, changed_paths}` — EVERY key here
404
- * must be DECLARED, else a strict MCP host -32602-rejects the success (the G2
405
- * `changed_paths` lesson).
406
- */
407
- export const ELEMENT_SET_SOURCE_OUTPUT_SCHEMA = z.object({
408
- template_id: z.string(),
409
- element_path: z.string(),
410
- // PG2 (addressing-coherence): the canonical rel_path form (`/children/0/…`,
411
- // element_list's shape) alongside the fully-qualified element_path /
412
- // changed_paths, ADDITIVE. DECLARED here because the handler PROJECTS the
413
- // structured object (strips undeclared keys) — an omitted declaration would
414
- // silently drop the field. `.optional()` keeps back-compat with pre-PG2
415
- // plugins whose body omits them.
416
- rel_path: z.string().optional(),
417
- // SOURCES_BINDING-16: `etag` is the POST-WRITE ETag (== new_etag), so
418
- // response.etag is ALWAYS safe to chain into the next write. It used to echo
419
- // the INPUT (pre-write) If-Match, which chained to a stale value and 412'd
420
- // the follow-up write — inconsistent with scaffold_section/element_add,
421
- // which surface the post-write etag. Kept alongside `new_etag` (identical)
422
- // for back-compat with callers reading either name.
423
- etag: z.string(),
424
- // The bumped ETag after the surgical write — pass as `etag` on the next write.
425
- new_etag: z.string(),
426
- // The JSON-pointer(s) the write touched (just the edited node — blast-radius 0).
427
- changed_paths: z.array(z.string()),
428
- // PG2: the rel_path pendant of changed_paths (same `/children/0/…` shape).
429
- changed_rel_paths: z.array(z.string()).optional(),
430
- // SOURCES_BINDING-8: element-prop keys (from source.props / source_extended.props)
431
- // the target element-type does NOT render — a NON-FATAL warning mirroring the
432
- // bind-path F129 check. Present only when non-empty (a strict host would else
433
- // reject an undeclared key). DECLARED optional so a clean write / a Joomla
434
- // host (which lacks the check) stays byte-identical.
435
- unknown_prop_keys: z.array(z.string()).optional(),
436
- unknown_prop_keys_hint: z.string().optional(),
437
- unknown_prop_keys_did_you_mean: z.record(z.string(), z.array(z.string())).optional(),
438
- });
439
- /**
440
- * F2 — surgically set a PRECOMPOSED `source` (+ optional `source_extended`) onto
441
- * ONE element at a pointer, ETag-locked, leaving the rest of the layout
442
- * byte-unchanged. The two carriers are author-composed objects forwarded
443
- * VERBATIM to `PUT /pages/<id>/elements/<path>/source`; the PHP controller is the
444
- * single place that persists them onto `node.source` / `node.source_extended`.
445
- */
446
- export async function handleElementSetSource({ client }, input) {
447
- const { template_id, element_path, etag, source, source_extended } = input;
448
- const encoded = encodeElementPath(element_path);
449
- // Forward only the keys the caller supplied. `source_extended` is forwarded
450
- // even when explicitly null (that CLEARS the carrier server-side); it is
451
- // omitted only when undefined.
452
- const body = {};
453
- if (source !== undefined)
454
- body.source = source;
455
- if (source_extended !== undefined)
456
- body.source_extended = source_extended;
457
- try {
458
- const data = await client.put(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/source`, { body, etag });
459
- // The PHP success body carries exactly the strict output-schema keys;
460
- // project them so structuredContent never carries an undeclared key (a
461
- // strict host -32602-rejects extras). Fall back to the request values
462
- // for template_id/element_path so the shape is always complete.
463
- const changedPaths = Array.isArray(data.changed_paths)
464
- ? data.changed_paths.filter((p) => typeof p === 'string')
465
- : [typeof data.element_path === 'string' ? data.element_path : element_path];
466
- // PG2 (addressing-coherence): forward the canonical rel_path pendants the
467
- // PHP body now carries. Present only on PG2+ plugins — the projection
468
- // omits them when absent so pre-PG2 hosts stay byte-identical.
469
- const relPath = typeof data.rel_path === 'string' ? data.rel_path : undefined;
470
- const changedRelPaths = Array.isArray(data.changed_rel_paths)
471
- ? data.changed_rel_paths.filter((p) => typeof p === 'string')
472
- : undefined;
473
- // SOURCES_BINDING-16: prefer the POST-WRITE etag for the chainable `etag`
474
- // field (falls back to the request/data etag only when no new_etag came back).
475
- const newEtag = typeof data.new_etag === 'string' ? data.new_etag : '';
476
- const postWriteEtag = newEtag !== '' ? newEtag : (typeof data.etag === 'string' ? data.etag : etag);
477
- // SOURCES_BINDING-8: forward the bind-parity unknown-prop-key warning the
478
- // PHP set_source chokepoint now echoes (element-prop keys the target type
479
- // does not render). Present only on a WP host that found unknowns; a clean
480
- // write / a Joomla host omits them (the projection drops the absent keys).
481
- const unknownPropKeys = Array.isArray(data.unknown_prop_keys)
482
- ? data.unknown_prop_keys.filter((k) => typeof k === 'string')
483
- : undefined;
484
- const unknownPropKeysHint = typeof data.unknown_prop_keys_hint === 'string' ? data.unknown_prop_keys_hint : undefined;
485
- const unknownPropKeysDidYouMean = isDidYouMeanMap(data.unknown_prop_keys_did_you_mean)
486
- ? data.unknown_prop_keys_did_you_mean
487
- : undefined;
488
- const hasUnknownProps = unknownPropKeys !== undefined && unknownPropKeys.length > 0;
489
- const structured = {
490
- template_id: typeof data.template_id === 'string' ? data.template_id : template_id,
491
- element_path: typeof data.element_path === 'string' ? data.element_path : element_path,
492
- ...(relPath !== undefined ? { rel_path: relPath } : {}),
493
- etag: postWriteEtag,
494
- new_etag: newEtag,
495
- changed_paths: changedPaths,
496
- ...(changedRelPaths !== undefined ? { changed_rel_paths: changedRelPaths } : {}),
497
- ...(hasUnknownProps ? { unknown_prop_keys: unknownPropKeys } : {}),
498
- ...(hasUnknownProps && unknownPropKeysHint !== undefined
499
- ? { unknown_prop_keys_hint: unknownPropKeysHint }
500
- : {}),
501
- ...(hasUnknownProps && unknownPropKeysDidYouMean !== undefined
502
- ? { unknown_prop_keys_did_you_mean: unknownPropKeysDidYouMean }
503
- : {}),
504
- };
505
- const toolkitResult = detailResult({
506
- title: 'Source set (surgical)',
507
- groups: [
508
- {
509
- label: 'Surgical source-edit',
510
- entries: [
511
- { key: 'template_id', label: 'Template', value: structured.template_id, format: 'text' },
512
- { key: 'element_path', label: 'Element', value: structured.element_path, format: 'code', copyable: true },
513
- { key: 'new_etag', label: 'New ETag', value: structured.new_etag, format: 'badge', copyable: true },
514
- { key: 'changed_paths', label: 'Changed paths', value: structured.changed_paths.join(', '), format: 'code' },
515
- ],
516
- },
517
- // SOURCES_BINDING-8: surface the unknown-prop-key warning in the
518
- // TEXT leg too, so an agent reading only the detail sees the dead
519
- // mapping (not just the structured leg).
520
- ...(hasUnknownProps
521
- ? [{
522
- label: 'Warning — unknown prop keys',
523
- entries: [
524
- { key: 'unknown_prop_keys', label: 'Dropped keys', value: (unknownPropKeys ?? []).join(', '), format: 'code' },
525
- ...(unknownPropKeysHint !== undefined
526
- ? [{ key: 'hint', label: 'Hint', value: unknownPropKeysHint }]
527
- : []),
528
- ],
529
- }]
530
- : []),
531
- ],
532
- });
533
- return structuredResult(toolkitResult, structured);
534
- }
535
- catch (e) {
536
- return errorResult({
537
- error: e,
538
- context: { template_id, element_path },
539
- hint: 'On 412 refresh the ETag via yootheme_builder_get_etag and retry. ' +
540
- 'On 400 invalid_body, ensure `source.query.name` is a non-empty string ' +
541
- '(e.g. "categoryFaqs.taxonomyCategoryFaq"). Verify element_path via ' +
542
- 'yootheme_builder_element_list.',
543
- });
544
- }
545
- }
546
- // ─── rename_source (N1 — template-wide source/field rename) ─────────
547
- /**
548
- * N1 (Glöckle HANDOFF-5) — the `rename_source` STRICT output schema.
549
- *
550
- * A default (strip) ZodObject so a strict (`additionalProperties:false`) host
551
- * accepts the structuredContent and the shape-pin guard's `.strict()` re-parse
552
- * passes. The success body the PHP `SourcesController::rename_source` returns is
553
- * `{template_id, replaced_count, changed_paths, etag, new_etag}` — EVERY key here
554
- * must be DECLARED, else a strict MCP host -32602-rejects the success (the G2
555
- * `changed_paths` lesson).
556
- */
557
- export const RENAME_SOURCE_OUTPUT_SCHEMA = z.object({
558
- template_id: z.string(),
559
- // The number of BOUND nodes whose binding was rewritten template-wide.
560
- replaced_count: z.number(),
561
- // The rel-path pointer of each changed node, in document order.
562
- changed_paths: z.array(z.string()),
563
- // SOURCES_BINDING-16: the POST-WRITE ETag (== new_etag) — always safe to
564
- // chain into the next write (was the pre-write input etag, which 412'd).
565
- // On a dry_run nothing persists, so etag == new_etag == the current ETag.
566
- etag: z.string(),
567
- // The bumped ETag after the write — pass as `etag` on the next write.
568
- new_etag: z.string(),
569
- // SOURCES_BINDING-15: present + true ONLY on a dry_run preflight (the
570
- // template-wide rename was computed + previewed but NOT persisted).
571
- dry_run: z.boolean().optional(),
572
- // SOURCES_BINDING-15: whether the (dry-run) rename would actually rewrite
573
- // any binding (`replaced_count > 0`).
574
- would_change: z.boolean().optional(),
575
- });
576
- /**
577
- * N1 — TEMPLATE-WIDE rename every matching binding's source-name + field-name
578
- * tokens in ONE ETag-locked write. The rename spec (the single-source shorthand
579
- * `from`/`to` and/or the explicit `source_map`/`field_map`) is forwarded VERBATIM
580
- * to `PUT /pages/<id>/rename-source`; the PHP controller is the single place that
581
- * runs the SourceRenamer engine across the whole template, preserving every
582
- * binding's arguments / props / field_mappings and leaving non-matching bindings
583
- * byte-identical.
584
- */
585
- export async function handleRenameSource({ client }, input) {
586
- const { template_id, etag, from, to, source_map, field_map, dry_run } = input;
587
- // Forward only the keys the caller supplied — the PHP controller folds the
588
- // `from`/`to` shorthand into source_map and validates "at least one rename
589
- // instruction" on its end (one engine, both platforms).
590
- const body = {};
591
- if (from !== undefined)
592
- body.from = from;
593
- if (to !== undefined)
594
- body.to = to;
595
- if (source_map !== undefined)
596
- body.source_map = source_map;
597
- if (field_map !== undefined)
598
- body.field_map = field_map;
599
- // SOURCES_BINDING-15: forward `dry_run` only when set so an ordinary rename
600
- // stays byte-identical; the PHP branch previews without persisting.
601
- if (dry_run)
602
- body.dry_run = true;
603
- try {
604
- const data = await client.put(`/pages/${encodeTemplateId(template_id)}/rename-source`, { body, etag });
605
- // The PHP success body carries exactly the strict output-schema keys;
606
- // project them so structuredContent never carries an undeclared key (a
607
- // strict host -32602-rejects extras). Fall back to request/sane values so
608
- // the shape is always complete.
609
- const changedPaths = Array.isArray(data.changed_paths)
610
- ? data.changed_paths.filter((p) => typeof p === 'string')
611
- : [];
612
- // SOURCES_BINDING-16: `etag` = the POST-WRITE etag (chainable), not the input.
613
- const newEtag = typeof data.new_etag === 'string' ? data.new_etag : '';
614
- const postWriteEtag = newEtag !== '' ? newEtag : (typeof data.etag === 'string' ? data.etag : etag);
615
- const structured = {
616
- template_id: typeof data.template_id === 'string' ? data.template_id : template_id,
617
- replaced_count: typeof data.replaced_count === 'number' ? data.replaced_count : changedPaths.length,
618
- changed_paths: changedPaths,
619
- etag: postWriteEtag,
620
- new_etag: newEtag,
621
- // SOURCES_BINDING-15: surface the dry-run preview flags when the PHP
622
- // branch returned them (absent on a real persisted rename).
623
- ...(typeof data.dry_run === 'boolean' ? { dry_run: data.dry_run } : {}),
624
- ...(typeof data.would_change === 'boolean'
625
- ? { would_change: data.would_change }
626
- : {}),
627
- };
628
- const toolkitResult = detailResult({
629
- title: 'Source renamed (template-wide)',
630
- groups: [
631
- {
632
- label: 'Template-wide source/field rename',
633
- entries: [
634
- { key: 'template_id', label: 'Template', value: structured.template_id, format: 'text' },
635
- { key: 'replaced_count', label: 'Bindings changed', value: String(structured.replaced_count), format: 'badge' },
636
- { key: 'new_etag', label: 'New ETag', value: structured.new_etag, format: 'badge', copyable: true },
637
- { key: 'changed_paths', label: 'Changed paths', value: structured.changed_paths.join(', '), format: 'code' },
638
- ],
639
- },
640
- ],
641
- });
642
- return structuredResult(toolkitResult, structured);
643
- }
644
- catch (e) {
645
- return errorResult({
646
- error: e,
647
- context: { template_id },
648
- hint: 'On 412 refresh the ETag via yootheme_builder_get_etag and retry. ' +
649
- 'On 400 invalid_body, pass `from`+`to` (single source rename) and/or ' +
650
- '`source_map`/`field_map` (objects of {old: new} name tokens) — at least ' +
651
- 'one is required. Verify template_id via yootheme_builder_pages_list.',
652
- });
653
- }
654
- }
655
- //# sourceMappingURL=handlers-bind.js.map