@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,700 +0,0 @@
1
- /**
2
- * Element-tool write handlers (add/update/move/clone/delete).
3
- *
4
- * Wave G.4.0 split: read handlers + shared types in `./handlers.ts`.
5
- * Wave G.4.1: `handleElementDelete` consults `deps.elicitation` when
6
- * `confirm` is undefined — falls back to the explicit preview when
7
- * elicitation is unavailable.
8
- * Wave G.5: every handler emits 2-phase client-side progress
9
- * (`PHASE_SEND` → `PHASE_CONFIRM`) when the caller supplied a
10
- * `progressToken` — see `../progress-phases.ts` for the contract.
11
- *
12
- * @license MIT
13
- */
14
- import { elicitConfirmation } from '@getimo/mcp-toolkit';
15
- import { encodeElementPath, encodeTemplateId } from '../../client.js';
16
- import { RestError } from '../../errors.js';
17
- import { BIND_VIA_GATEWAY_EXAMPLE, BIND_VIA_GATEWAY_HINT } from '../bind-guidance.js';
18
- import { PHASE_CONFIRM, PHASE_SEND } from '../progress-phases.js';
19
- import { confirmGuard, createProgressReporter, errorResult, jsonResult, } from '../tool-builder.js';
20
- import { validatePropsAgainstLiveSchema } from './schema-validation.js';
21
- // ─── Wave-7 (2026-05-29): props validation ──────────────────────────
22
- //
23
- // Cold-AI #5 hand-authored `props.source` / `props.source_extended` via
24
- // element_update_settings({props:{source}}). YT-Pro's render-side then
25
- // silently ignored the binding because `source` is not a leaf prop — it
26
- // lives as a SIBLING of `props` on the element node. The agent had no
27
- // signal that the call was a no-op until visual verification failed.
28
- //
29
- // These keys MUST go through yootheme_builder_element_bind_source (which
30
- // writes them at the correct nesting level). Reject hand-authored attempts
31
- // up-front so the agent gets a structured error instead of a silent broken
32
- // render.
33
- const RESERVED_BINDING_KEYS = new Set([
34
- 'source',
35
- 'source_extended',
36
- // YT-Pro UI-only placeholders that customers paste from
37
- // Inspect/Copy in the visual builder. They never resolve outside the
38
- // builder runtime so they're useless inside a stored layout.
39
- 'source_node',
40
- ]);
41
- // Wave-7 (2026-05-29): common cold-AI prop-key typos. The PHP backend
42
- // silently drops unknown props, so a typo like `title` on a headline (real
43
- // key is `content`) renders an empty headline. We surface a fix suggestion
44
- // up-front for the small fixed set of high-frequency mistakes.
45
- //
46
- // Format: typo → { element_type → canonical_key }
47
- // element_type === '*' applies to any element where the typo is known to be
48
- // a typo on every type that has it.
49
- const COMMON_PROP_TYPOS = {
50
- title: {
51
- headline: 'content',
52
- subtitle: 'content',
53
- text: 'content',
54
- quote: 'content',
55
- button_item: 'content',
56
- // Wave-9 F9 (cold-AI #8): `button` accepts `content` at runtime
57
- // even though the UI-tab fieldset omits it (see
58
- // Inspector::knownAcceptedButHiddenFields). `title` is the most
59
- // common cold-AI typo for the button label.
60
- button: 'content',
61
- },
62
- text: {
63
- headline: 'content',
64
- text: 'content',
65
- quote: 'content',
66
- // Wave-9 F9: same rationale as `title` above — agents reading
67
- // documentation often type `text` for the button label.
68
- button: 'content',
69
- },
70
- label: {
71
- button_item: 'content',
72
- // Wave-9 F9: `label` is a common cold-AI alias for button text.
73
- button: 'content',
74
- },
75
- url: {
76
- button_item: 'link',
77
- // Wave-9 F9 (cold-AI #8): `button` accepts `link` at runtime.
78
- button: 'link',
79
- },
80
- href: {
81
- // Wave-9 F9: HTML-native authors reach for `href` first.
82
- button_item: 'link',
83
- button: 'link',
84
- },
85
- button_text: {
86
- button_item: 'content',
87
- button: 'content',
88
- },
89
- button_link: {
90
- button_item: 'link',
91
- button: 'link',
92
- },
93
- style: {
94
- button_item: 'button_style',
95
- },
96
- size: {
97
- button_item: 'button_size',
98
- },
99
- };
100
- function detectPropTypos(props, elementType) {
101
- if (props === undefined || props === null)
102
- return [];
103
- const findings = [];
104
- for (const key of Object.keys(props)) {
105
- const map = COMMON_PROP_TYPOS[key];
106
- if (map === undefined)
107
- continue;
108
- const suggested = map[elementType];
109
- if (suggested !== undefined) {
110
- findings.push({ typo: key, suggested });
111
- }
112
- }
113
- return findings;
114
- }
115
- function rejectOnPropTypos(props, elementType) {
116
- const findings = detectPropTypos(props, elementType);
117
- if (findings.length === 0)
118
- return null;
119
- // F14 (2026-06-09): name the CANONICAL prop explicitly + imperatively
120
- // (`use \`content\` instead of \`title\``) rather than only posing it
121
- // as a question. A cold agent that hit `element_add headline {title}`
122
- // got the element rendered empty because YT-Pro silently drops the
123
- // unknown alias; the error must state the right key so the agent can
124
- // self-correct in one step without a schema round-trip.
125
- const summary = findings
126
- .map((f) => `use \`${f.suggested}\` instead of \`${f.typo}\``)
127
- .join('; ');
128
- // Lead with the single most-likely fix so the canonical key is the
129
- // first concrete token the agent reads.
130
- const primary = findings[0];
131
- const rename = primary !== undefined
132
- ? `Rename \`${primary.typo}\` → \`${primary.suggested}\`. `
133
- : '';
134
- return errorResult({
135
- error: new Error(`Unknown prop(s) for element type \`${elementType}\`: ${summary}. ` +
136
- rename +
137
- 'YT-Pro silently drops unknown props server-side, so the element would render empty. ' +
138
- 'Call yootheme_builder_element_type_get_schema to see the canonical prop keys.'),
139
- context: {
140
- element_type: elementType,
141
- findings,
142
- },
143
- hint: `Re-try with the canonical key (e.g. \`${primary?.suggested ?? 'content'}\`), ` +
144
- 'or fetch the schema first: ' +
145
- `yootheme_builder_element_type_get_schema({ element_type: "${elementType}" }).`,
146
- });
147
- }
148
- function validatePropsForReservedKeys(props, elementType) {
149
- if (props === undefined || props === null)
150
- return null;
151
- const offending = [];
152
- for (const key of Object.keys(props)) {
153
- if (RESERVED_BINDING_KEYS.has(key)) {
154
- offending.push(key);
155
- }
156
- }
157
- if (offending.length === 0)
158
- return null;
159
- return errorResult({
160
- error: new Error(`Reserved binding key(s) ${offending
161
- .map((k) => `\`${k}\``)
162
- .join(', ')} are NOT valid props for element type \`${elementType}\`. ` +
163
- `Source binding lives as a SIBLING of \`props\` on the element node, ` +
164
- `NOT nested inside props. Set the source via the gateway: ` +
165
- `${BIND_VIA_GATEWAY_EXAMPLE} — it writes the binding at the correct ` +
166
- `nesting level (the bind tool is advanced, not in tools/list). ` +
167
- `For per-prop leaf bindings (headline.content, etc.) pass the prop name ` +
168
- `inside the \`field_mappings\` argument of that same call. ` +
169
- // F97 (2026-06-10): a FILTERED prop (e.g. a `_condition` that
170
- // renders a row only when a field is non-empty) is the most
171
- // common reason an agent reaches for a raw `source` here. The
172
- // theme-canonical, validated path is the field_mappings OBJECT
173
- // form on element_bind_source — name it so the agent never has
174
- // to hand-author a dead `source` blob nor build pre-filtered
175
- // flows as a workaround.
176
- `For a FILTERED prop (e.g. a \`_condition\` that shows a row only when a ` +
177
- `field is set) use the field_mappings OBJECT form: ` +
178
- `field_mappings: { _condition: { name: "<field>", filters: { condition: "!!" } } } ` +
179
- `(\`"!!"\` = render only when non-empty, \`"!"\` = only when empty; a bare ` +
180
- `_condition with no filters operator renders ALWAYS). Date-format leaves use ` +
181
- `{ name: "<field>", filters: { date: "D, d.m.y" } }.`),
182
- context: { element_type: elementType, offending_keys: offending },
183
- hint: 'Run yootheme_builder_element_type_get_schema to see the binding contract ' +
184
- `(do_not section lists this anti-pattern). Then ${BIND_VIA_GATEWAY_HINT} ` +
185
- 'For filtered props pass the field_mappings object form ' +
186
- '({ <prop>: { name, filters } }) on element_bind_source.',
187
- });
188
- }
189
- // ─── children-tree guard (F132, Wave 4a) ─────────────────────────────
190
- //
191
- // `element_add` accepts a `children` array of arbitrary element objects.
192
- // Before Wave 4a only the top-level `props` were validated, so a cold agent
193
- // building a grid+grid_item tree in ONE element_add could smuggle the exact
194
- // forbidden shapes through the children:
195
- //
196
- // children: [{ type:'grid_item', source:{query:…}, props:{title:…} }]
197
- //
198
- // `source` is a SIBLING of `props` on YT-Pro element nodes; hand-authoring it
199
- // (or `source_extended` / `source_node`) never resolves in a stored layout —
200
- // the render silently produces 0 rows while element_add returns success. The
201
- // same applies to per-prop typos (`title` on a headline → empty headline).
202
- //
203
- // This walks the whole children subtree and applies the SAME two guards that
204
- // protect top-level props, plus a sibling-`source` rejection per node.
205
- function elementTypeOfChild(node) {
206
- const t = node.type;
207
- if (typeof t === 'string' && t !== '')
208
- return t;
209
- const et = node.element_type;
210
- if (typeof et === 'string' && et !== '')
211
- return et;
212
- return '<child>';
213
- }
214
- function rejectSourceSiblingOnChild(node, elementType) {
215
- const offending = [...RESERVED_BINDING_KEYS].filter((k) => k in node);
216
- if (offending.length === 0)
217
- return null;
218
- return errorResult({
219
- error: new Error(`Hand-authored binding key(s) ${offending
220
- .map((k) => `\`${k}\``)
221
- .join(', ')} found on a \`children\` node (element type \`${elementType}\`). ` +
222
- `A source binding must NOT be hand-authored inside an element_add tree — ` +
223
- `the stored layout silently renders 0 rows. Add the bare container/child ` +
224
- `structure first, then bind with \`yootheme_builder_element_bind_source\`, ` +
225
- `which writes the binding at the correct nesting level.`),
226
- context: { element_type: elementType, offending_keys: offending },
227
- hint: 'Remove `source` / `source_extended` / `source_node` from the children tree. ' +
228
- 'Build the structure, then call yootheme_builder_element_bind_source. See ' +
229
- 'yootheme_builder_element_type_get_schema (do_not section).',
230
- });
231
- }
232
- /**
233
- * Recursively validate a `children` array: each node's own `props` is run
234
- * through the reserved-key + prop-typo guards, the node itself is checked
235
- * for a hand-authored `source` sibling, and nested `children` recurse.
236
- * Returns the FIRST rejection found, or null when the whole tree is clean.
237
- */
238
- function validateChildrenTree(children) {
239
- if (!Array.isArray(children))
240
- return null;
241
- for (const raw of children) {
242
- if (raw === null || typeof raw !== 'object')
243
- continue;
244
- const node = raw;
245
- const elementType = elementTypeOfChild(node);
246
- const sourceRejection = rejectSourceSiblingOnChild(node, elementType);
247
- if (sourceRejection !== null)
248
- return sourceRejection;
249
- const props = node.props !== null && typeof node.props === 'object'
250
- ? node.props
251
- : undefined;
252
- const propsRejection = validatePropsForReservedKeys(props, elementType);
253
- if (propsRejection !== null)
254
- return propsRejection;
255
- const typoRejection = rejectOnPropTypos(props, elementType);
256
- if (typoRejection !== null)
257
- return typoRejection;
258
- const nested = validateChildrenTree(node.children);
259
- if (nested !== null)
260
- return nested;
261
- }
262
- return null;
263
- }
264
- /**
265
- * ELEMENT_WRITE-12 — status/code-aware catch hint for `element_add`.
266
- *
267
- * The former hint was a single static string mentioning 412 + 400 for EVERY
268
- * failure. The actual high-frequency failure is a 422
269
- * `…elements.invalid_hierarchy` (e.g. adding a `row` at the layout root) — which
270
- * is neither 412 nor 400, and whose real fix (scaffold_section) went unnamed.
271
- * Inspect the RestError and emit the fix that matches the failure.
272
- */
273
- function elementAddHint(e) {
274
- if (e instanceof RestError) {
275
- const code = e.code ?? '';
276
- if (e.status === 422 && code.includes('invalid_hierarchy')) {
277
- return ('invalid_hierarchy: this element type cannot be added at that parent ' +
278
- '(e.g. a row/column at the layout root). Call ' +
279
- 'yootheme_builder_scaffold_section({ template_id, columns }) to create a ' +
280
- 'valid section→row→column hull, then pass a returned column path as ' +
281
- 'parent_path.');
282
- }
283
- if (e.status === 412) {
284
- return 'On 412 refresh via yootheme_builder_get_etag and retry.';
285
- }
286
- if (e.status === 400) {
287
- return 'On 400 check `element_type` is valid via yootheme_builder_element_types_list.';
288
- }
289
- }
290
- return ('On 412 refresh via yootheme_builder_get_etag and retry. On 400 check ' +
291
- '`element_type` is valid via yootheme_builder_element_types_list. On 422 ' +
292
- 'invalid_hierarchy scaffold a section→row→column hull first with ' +
293
- 'yootheme_builder_scaffold_section and add into a returned column path.');
294
- }
295
- /**
296
- * ELEMENT_WRITE-12 — status/code-aware catch hint for `element_update_settings`.
297
- * A 422 invalid-value (a prop value the element rejects) is NOT fixed by
298
- * `merge:true`, so the merge advice only rides on the non-422 path.
299
- */
300
- function elementUpdateHint(e) {
301
- if (e instanceof RestError && e.status === 422) {
302
- return ('On 422 a prop VALUE was rejected by the element (invalid enum / type). ' +
303
- 'Fetch the accepted values with yootheme_builder_element_type_get_schema ' +
304
- '(read each field\'s value_hint/enum) and resend a valid value — ' +
305
- '`merge:true` does NOT fix an invalid value.');
306
- }
307
- return ('On 412 refresh via yootheme_builder_get_etag and retry. To merge ' +
308
- 'props instead of replacing, pass `merge:true` (server deep-merges ' +
309
- 'the request into current props).');
310
- }
311
- // ─── element_add ─────────────────────────────────────────────────────
312
- export async function handleElementAdd({ client }, input, extra) {
313
- // Union of F165 (type_name → element_type alias) and F70 (position →
314
- // index alias). Both aliases are folded onto their canonical keys and
315
- // stripped so they never leak into the REST body. The canonical key
316
- // wins when both are supplied.
317
- const { template_id, etag, type_name, index, position, ...rest } = input;
318
- const elementType = typeof rest.element_type === 'string' && rest.element_type !== ''
319
- ? rest.element_type
320
- : typeof type_name === 'string'
321
- ? type_name
322
- : '';
323
- if (elementType === '') {
324
- return errorResult({
325
- error: new Error('element_type is required.'),
326
- context: { template_id },
327
- hint: 'Provide `element_type` (e.g. "grid"; `type_name` is accepted as an ' +
328
- 'alias). Use yootheme_builder_element_types_list for the catalogue.',
329
- });
330
- }
331
- // F70: index wins over the position alias; absent → body carries no
332
- // index (server appends), preserving the historical append request.
333
- const resolvedIndex = index ?? position;
334
- const body = {
335
- parent_path: typeof rest.parent_path === 'string' ? rest.parent_path : '',
336
- element_type: elementType,
337
- // ELEMENT_WRITE-4 (part 2): the first-class builder name → node-level
338
- // `name`. Only forwarded when a non-empty string so an omitted/blank
339
- // value leaves the server default (an unnamed node) untouched.
340
- ...(typeof rest.name === 'string' && rest.name !== '' ? { name: rest.name } : {}),
341
- ...(rest.props !== undefined ? { props: rest.props } : {}),
342
- ...(rest.children !== undefined ? { children: rest.children } : {}),
343
- ...(resolvedIndex !== undefined ? { index: resolvedIndex } : {}),
344
- };
345
- // Wave-7: guard against hand-authored source/source_extended in props.
346
- const propsRejection = validatePropsForReservedKeys(input.props, elementType);
347
- if (propsRejection !== null)
348
- return propsRejection;
349
- // Wave-7: guard against common prop-key typos (title→content etc.).
350
- const typoRejection = rejectOnPropTypos(input.props, elementType);
351
- if (typoRejection !== null)
352
- return typoRejection;
353
- // F132 (Wave 4a): the same guards must reach the `children` subtree —
354
- // otherwise a single element_add can smuggle a forbidden source/typo
355
- // through a nested child and silently render 0 rows.
356
- const childrenRejection = validateChildrenTree(input.children);
357
- if (childrenRejection !== null)
358
- return childrenRejection;
359
- // B3 (2026-06-29): live-schema cross-check. The static guards above catch a
360
- // fixed set of known mistakes; this rejects ANY top-level prop key absent
361
- // from the element-type's real schema (fields[].name) — the silent-drop
362
- // class the static map cannot enumerate. Best-effort: a schema fetch
363
- // failure / unknown shape / empty field list never breaks the write
364
- // (additive-before-breaking; the plugin is live 1.6.x).
365
- const liveSchemaRejection = await validatePropsAgainstLiveSchema({
366
- client,
367
- elementType,
368
- props: input.props,
369
- reservedKeys: RESERVED_BINDING_KEYS,
370
- });
371
- if (liveSchemaRejection !== null)
372
- return liveSchemaRejection;
373
- const progress = extra ? createProgressReporter(extra) : null;
374
- await progress?.report(0, 2, PHASE_SEND);
375
- try {
376
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements`, { body, etag });
377
- await progress?.report(2, 2, PHASE_CONFIRM);
378
- return jsonResult(data);
379
- }
380
- catch (e) {
381
- return errorResult({
382
- error: e,
383
- context: input,
384
- hint: elementAddHint(e),
385
- });
386
- }
387
- }
388
- // ─── scaffold_section (WF2 Option C) ─────────────────────────────────
389
- /**
390
- * `scaffold_section` — POST /pages/{template_id}/elements/scaffold-section.
391
- *
392
- * Create a VALID `section → row → column` hull (optionally N columns) in ONE
393
- * atomic call and return the column pointer(s) to drop content into. This is
394
- * the positive-steering counterpart to the server-side hierarchy guard: it
395
- * makes the correct structure the cheapest path, so the guard rarely fires.
396
- * The whole hull lands in a single server-side transaction (one ETag bump).
397
- */
398
- export async function handleScaffoldSection({ client }, input, extra) {
399
- const { template_id, columns, column_widths, etag } = input;
400
- const progress = extra ? createProgressReporter(extra) : null;
401
- await progress?.report(0, 2, PHASE_SEND);
402
- try {
403
- const body = {};
404
- if (columns !== undefined) {
405
- body.columns = columns;
406
- }
407
- if (column_widths !== undefined) {
408
- body.column_widths = column_widths;
409
- }
410
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/scaffold-section`, { body, etag });
411
- await progress?.report(2, 2, PHASE_CONFIRM);
412
- return jsonResult(data);
413
- }
414
- catch (e) {
415
- return errorResult({
416
- error: e,
417
- context: { template_id, columns, column_widths },
418
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry. The response ' +
419
- '`column_paths` are valid parents for yootheme_builder_element_add — ' +
420
- 'drop your content elements into those columns.',
421
- });
422
- }
423
- }
424
- // ─── element_update_settings ─────────────────────────────────────────
425
- /**
426
- * B3 — best-effort element-type discovery for `element_update_settings`, which
427
- * carries no `element_type` input. Reads the element and returns its type, or
428
- * `null` on ANY failure (so the live-schema check simply does not run). Mirrors
429
- * the type extraction in `handleElementGet` (`element_type`, then `type`).
430
- */
431
- async function discoverElementType(client, template_id, element_path) {
432
- try {
433
- const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements/${encodeElementPath(element_path)}`);
434
- if (typeof data.element_type === 'string' && data.element_type !== '') {
435
- return data.element_type;
436
- }
437
- if (typeof data.type === 'string' && data.type !== '') {
438
- return data.type;
439
- }
440
- return null;
441
- }
442
- catch {
443
- return null;
444
- }
445
- }
446
- export async function handleElementUpdateSettings({ client }, input, extra) {
447
- const { template_id, element_path, props, name, merge, unset, etag } = input;
448
- // Wave-7: guard against hand-authored source/source_extended in props.
449
- // element_path is the only identity we have at this layer; the agent gets
450
- // a clear message anyway because the offending key is named explicitly.
451
- const propsRejection = validatePropsForReservedKeys(props, `<at ${element_path}>`);
452
- if (propsRejection !== null)
453
- return propsRejection;
454
- // B3 (2026-06-29): live-schema cross-check. This handler has no
455
- // `element_type` input, so discover it best-effort via the element read,
456
- // then validate props against the real schema. ANY failure (type
457
- // undiscoverable, schema fetch error, empty field list) falls through to
458
- // the prior behaviour — the write is never broken by the probe. Skipped
459
- // when there are no props to validate so a no-op update stays a single call.
460
- if (props !== null && typeof props === 'object' && Object.keys(props).length > 0) {
461
- const discoveredType = await discoverElementType(client, template_id, element_path);
462
- if (discoveredType !== null) {
463
- const liveSchemaRejection = await validatePropsAgainstLiveSchema({
464
- client,
465
- elementType: discoveredType,
466
- props,
467
- reservedKeys: RESERVED_BINDING_KEYS,
468
- });
469
- if (liveSchemaRejection !== null)
470
- return liveSchemaRejection;
471
- }
472
- }
473
- const encoded = encodeElementPath(element_path);
474
- const progress = extra ? createProgressReporter(extra) : null;
475
- await progress?.report(0, 2, PHASE_SEND);
476
- try {
477
- // T5 / F-12: forward `merge` only when explicitly true so older PHP
478
- // builds (which ignore unknown keys anyway) get the same byte-for-
479
- // byte body they did before.
480
- const body = { props };
481
- if (merge === true) {
482
- body.merge = true;
483
- }
484
- // ELEMENT_WRITE-4 (part 2): forward the first-class builder name → the
485
- // node-level `name`. Only when a non-empty string so an omitted value
486
- // leaves the current name unchanged.
487
- if (typeof name === 'string' && name !== '') {
488
- body.name = name;
489
- }
490
- // Task 10b: forward `unset` only when non-empty (same back-compat
491
- // pattern as `merge`) — removal is never schema-validated, it
492
- // mirrors the PHP side which honours an `unset` key in the PUT body.
493
- if (unset !== undefined && unset.length > 0) {
494
- body.unset = unset;
495
- }
496
- const data = await client.put(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/settings`, { body, etag });
497
- await progress?.report(2, 2, PHASE_CONFIRM);
498
- return jsonResult(data);
499
- }
500
- catch (e) {
501
- return errorResult({
502
- error: e,
503
- context: { template_id, element_path },
504
- hint: elementUpdateHint(e),
505
- });
506
- }
507
- }
508
- // ─── element_move ────────────────────────────────────────────────────
509
- export async function handleElementMove({ client }, input, extra) {
510
- const { template_id, element_path, to_parent_path, to_index, etag } = input;
511
- const encoded = encodeElementPath(element_path);
512
- const progress = extra ? createProgressReporter(extra) : null;
513
- await progress?.report(0, 2, PHASE_SEND);
514
- try {
515
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/move`, { body: { to_parent_path, to_index }, etag });
516
- await progress?.report(2, 2, PHASE_CONFIRM);
517
- return jsonResult(data);
518
- }
519
- catch (e) {
520
- return errorResult({
521
- error: e,
522
- context: { template_id, element_path, to_parent_path, to_index },
523
- hint: 'Verify destination parent accepts the element type. On 412 refresh ' +
524
- 'ETag and retry.',
525
- });
526
- }
527
- }
528
- // ─── element_clone ───────────────────────────────────────────────────
529
- export async function handleElementClone({ client }, input, extra) {
530
- const { template_id, element_path, etag } = input;
531
- const encoded = encodeElementPath(element_path);
532
- const progress = extra ? createProgressReporter(extra) : null;
533
- await progress?.report(0, 2, PHASE_SEND);
534
- try {
535
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/clone`, { etag });
536
- await progress?.report(2, 2, PHASE_CONFIRM);
537
- return jsonResult(data);
538
- }
539
- catch (e) {
540
- return errorResult({
541
- error: e,
542
- context: { template_id, element_path },
543
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry.',
544
- });
545
- }
546
- }
547
- // ─── element_delete (destructive — elicitation + confirm-guard) ─────
548
- //
549
- // Wave G.4.1 — destructive confirm via MCP elicitation. Progress
550
- // reports (Wave G.5) only start AFTER the confirm gate clears.
551
- // Wave-6 R4 (2026-05-29): Defensive truthiness for the confirm gate.
552
- // Cold-AI #4 reported the gate kept firing despite `confirm:true`. The Zod
553
- // schema already coerces only strict booleans (anything non-boolean is
554
- // rejected upstream as invalid_arguments), but we widen the in-handler
555
- // check to accept the literal string `"true"` / numeric `1` as a safety net
556
- // in case a future wrapper round-trips the arg through JSON re-encoding.
557
- function isConfirmedTrue(v) {
558
- if (v === true)
559
- return true;
560
- if (typeof v === 'string' && v.toLowerCase() === 'true')
561
- return true;
562
- if (typeof v === 'number' && v === 1)
563
- return true;
564
- return false;
565
- }
566
- function isConfirmedFalse(v) {
567
- if (v === false)
568
- return true;
569
- if (typeof v === 'string' && v.toLowerCase() === 'false')
570
- return true;
571
- if (typeof v === 'number' && v === 0)
572
- return true;
573
- return false;
574
- }
575
- /**
576
- * ELEMENT_WRITE-10 — best-effort enrichment of a delete PREVIEW so the human
577
- * sees WHAT would be deleted, not just a path. Reads the element (try/catch,
578
- * never blocks the preview on failure) and derives `{element_type, label,
579
- * descendant_count, text_excerpt}`. Deleting a section can remove 10 descendant
580
- * nodes; naming them turns "delete element at /children/3" into an informed
581
- * decision. Returns `{}` on ANY failure so the preview always renders.
582
- */
583
- async function bestEffortDeletePreviewDetails(client, template_id, element_path) {
584
- try {
585
- const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements/${encodeElementPath(element_path)}`);
586
- const elementType = typeof data.element_type === 'string' && data.element_type !== ''
587
- ? data.element_type
588
- : typeof data.type === 'string'
589
- ? data.type
590
- : undefined;
591
- const label = typeof data.label === 'string' && data.label !== ''
592
- ? data.label
593
- : typeof data.path_label === 'string' && data.path_label !== ''
594
- ? data.path_label
595
- : undefined;
596
- const descendantCount = countDescendants(data.children);
597
- const excerpt = firstTextExcerpt(data.props);
598
- const out = {};
599
- if (elementType !== undefined)
600
- out.element_type = elementType;
601
- if (label !== undefined)
602
- out.label = label;
603
- out.descendant_count = descendantCount;
604
- if (excerpt !== undefined)
605
- out.text_excerpt = excerpt;
606
- return out;
607
- }
608
- catch {
609
- return {};
610
- }
611
- }
612
- /** Deep-count every descendant node under a `children` array (0 when absent). */
613
- function countDescendants(children) {
614
- if (!Array.isArray(children))
615
- return 0;
616
- let total = 0;
617
- for (const child of children) {
618
- if (child !== null && typeof child === 'object' && !Array.isArray(child)) {
619
- total += 1;
620
- total += countDescendants(child.children);
621
- }
622
- }
623
- return total;
624
- }
625
- /** First-line text excerpt from a props map's canonical text carriers, capped. */
626
- function firstTextExcerpt(props) {
627
- if (props === null || typeof props !== 'object' || Array.isArray(props))
628
- return undefined;
629
- const p = props;
630
- for (const key of ['content', 'title', 'text']) {
631
- const v = p[key];
632
- if (typeof v === 'string' && v.trim() !== '') {
633
- const firstLine = v.trim().split('\n')[0] ?? '';
634
- return firstLine.length > 80 ? `${firstLine.slice(0, 80)}…` : firstLine;
635
- }
636
- }
637
- return undefined;
638
- }
639
- async function resolveDeleteConfirm(client, elicitation, template_id, element_path, confirm) {
640
- // Wave-6 R4: explicit truthy check — confirm:true (any form) bypasses
641
- // the elicitation/preview path immediately.
642
- if (isConfirmedTrue(confirm))
643
- return null;
644
- // ELEMENT_WRITE-10: only on the PREVIEW path (not a confirmed delete) enrich
645
- // the details with WHAT is about to be deleted. Best-effort — never blocks.
646
- const enriched = await bestEffortDeletePreviewDetails(client, template_id, element_path);
647
- if (isConfirmedFalse(confirm) || !elicitation) {
648
- return confirmGuard({
649
- operation: 'delete element',
650
- details: {
651
- template_id,
652
- element_path,
653
- ...enriched,
654
- // R4: echo back what was received so the agent can compare.
655
- // Wave-7 (2026-05-29): force-encode undefined to null so the
656
- // key survives JSON.stringify in the agent-facing payload.
657
- // Without this the agent saw NO received_confirm field at all
658
- // (key dropped by serializer) and could not diff sent vs
659
- // received — looked like the value was accepted.
660
- received_confirm: confirm === undefined ? null : confirm,
661
- expected: 'confirm: true (boolean)',
662
- },
663
- });
664
- }
665
- const accepted = await elicitConfirmation(elicitation, `Permanently delete element at "${element_path}" in template ` +
666
- `"${template_id}"? This cannot be undone.`);
667
- return accepted
668
- ? null
669
- : confirmGuard({
670
- operation: 'delete element',
671
- details: { template_id, element_path, ...enriched },
672
- });
673
- }
674
- export async function handleElementDelete({ client, elicitation }, input, extra) {
675
- const { template_id, element_path, etag, confirm } = input;
676
- const blocked = await resolveDeleteConfirm(client, elicitation, template_id, element_path, confirm);
677
- if (blocked)
678
- return blocked;
679
- const encoded = encodeElementPath(element_path);
680
- const progress = extra ? createProgressReporter(extra) : null;
681
- await progress?.report(0, 2, PHASE_SEND);
682
- try {
683
- // Wave-12 / Cold-AI #5 F13 (restored Wave-13 post-merge): forward
684
- // `{confirm:true}` as JSON body so the PHP confirm-guard accepts the
685
- // delete. Without it the guard returns `requires_confirm:true` and
686
- // the caller loops forever.
687
- const data = await client.delete(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}`, { etag, body: { confirm: true } });
688
- await progress?.report(2, 2, PHASE_CONFIRM);
689
- return jsonResult(data);
690
- }
691
- catch (e) {
692
- return errorResult({
693
- error: e,
694
- context: { template_id, element_path },
695
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry. On 404 the ' +
696
- 'element may already be gone — verify with yootheme_builder_element_list.',
697
- });
698
- }
699
- }
700
- //# sourceMappingURL=handlers-write.js.map