@wootsup/yt-builder-mcp 1.12.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 (857) hide show
  1. package/README.md +128 -30
  2. package/bin/node-floor.d.ts +28 -0
  3. package/bin/node-floor.js +123 -0
  4. package/bin/yt-builder-mcp.js +51 -10
  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 +8 -52
  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 +21 -62
  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 +1 -85
  102. package/dist/diagnostics/doctor.d.ts.map +1 -1
  103. package/dist/diagnostics/doctor.js +5 -90
  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 +15 -24
  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 +9 -178
  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 +65 -79
  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 +0 -55
  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 +29 -78
  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 +14 -19
  500. package/dist/tools/budgeted-table.d.ts.map +1 -1
  501. package/dist/tools/budgeted-table.js +171 -105
  502. package/dist/tools/budgeted-table.js.map +1 -1
  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 +147 -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 +26 -43
  528. package/dist/tools/format/health-format.d.ts.map +1 -1
  529. package/dist/tools/format/health-format.js +28 -60
  530. package/dist/tools/format/health-format.js.map +1 -1
  531. package/dist/tools/format/inspection-format.d.ts +2 -54
  532. package/dist/tools/format/inspection-format.d.ts.map +1 -1
  533. package/dist/tools/format/inspection-format.js +33 -119
  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 +114 -139
  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 +46 -232
  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 +12 -39
  554. package/dist/tools/index.js.map +1 -1
  555. package/dist/tools/inspection.d.ts +4 -34
  556. package/dist/tools/inspection.d.ts.map +1 -1
  557. package/dist/tools/inspection.js +164 -536
  558. package/dist/tools/inspection.js.map +1 -1
  559. package/dist/tools/library.d.ts +115 -127
  560. package/dist/tools/library.d.ts.map +1 -1
  561. package/dist/tools/library.js +706 -454
  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 +103 -46
  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 -65
  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 +1 -16
  628. package/dist/tools/navigation/builders.d.ts.map +1 -1
  629. package/dist/tools/navigation/builders.js +5 -27
  630. package/dist/tools/navigation/builders.js.map +1 -1
  631. package/dist/tools/navigation/index.d.ts +0 -13
  632. package/dist/tools/navigation/index.d.ts.map +1 -1
  633. package/dist/tools/navigation/index.js +0 -12
  634. package/dist/tools/navigation/index.js.map +1 -1
  635. package/dist/tools/navigation/schemas.d.ts +0 -30
  636. package/dist/tools/navigation/schemas.d.ts.map +1 -1
  637. package/dist/tools/navigation/schemas.js +0 -30
  638. package/dist/tools/navigation/schemas.js.map +1 -1
  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 +320 -405
  646. package/dist/tools/pages/builders.js.map +1 -1
  647. package/dist/tools/pages/header-transparency.d.ts +2 -32
  648. package/dist/tools/pages/header-transparency.d.ts.map +1 -1
  649. package/dist/tools/pages/header-transparency.js +9 -43
  650. package/dist/tools/pages/header-transparency.js.map +1 -1
  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 +323 -241
  656. package/dist/tools/pages/schemas.d.ts.map +1 -1
  657. package/dist/tools/pages/schemas.js +514 -549
  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 +0 -69
  676. package/dist/tools/response-budget.d.ts.map +1 -1
  677. package/dist/tools/response-budget.js +0 -127
  678. package/dist/tools/response-budget.js.map +1 -1
  679. package/dist/tools/shared-schemas.d.ts +11 -65
  680. package/dist/tools/shared-schemas.d.ts.map +1 -1
  681. package/dist/tools/shared-schemas.js +40 -123
  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 +194 -170
  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 +16 -232
  712. package/dist/tools/sparse-fields.d.ts.map +1 -1
  713. package/dist/tools/sparse-fields.js +178 -242
  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 -39
  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 -124
  748. package/dist/tools/tool-builder/results.d.ts.map +1 -1
  749. package/dist/tools/tool-builder/results.js +258 -263
  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 +4 -4
  773. package/skills/yt-builder-mcp/SKILL.md +1857 -400
  774. package/dist/tools/elements/handlers-write.d.ts +0 -89
  775. package/dist/tools/elements/handlers-write.d.ts.map +0 -1
  776. package/dist/tools/elements/handlers-write.js +0 -797
  777. package/dist/tools/elements/handlers-write.js.map +0 -1
  778. package/dist/tools/elements/handlers.d.ts +0 -130
  779. package/dist/tools/elements/handlers.d.ts.map +0 -1
  780. package/dist/tools/elements/handlers.js +0 -581
  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 -218
  787. package/dist/tools/elements/schema-validation.d.ts.map +0 -1
  788. package/dist/tools/elements/schema-validation.js +0 -685
  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 -368
  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 -56
  807. package/dist/tools/local-content/handlers.d.ts.map +0 -1
  808. package/dist/tools/local-content/handlers.js +0 -320
  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/navigation/handlers.d.ts +0 -30
  827. package/dist/tools/navigation/handlers.d.ts.map +0 -1
  828. package/dist/tools/navigation/handlers.js +0 -41
  829. package/dist/tools/navigation/handlers.js.map +0 -1
  830. package/dist/tools/pages/handlers-audit.d.ts +0 -140
  831. package/dist/tools/pages/handlers-audit.d.ts.map +0 -1
  832. package/dist/tools/pages/handlers-audit.js +0 -714
  833. package/dist/tools/pages/handlers-audit.js.map +0 -1
  834. package/dist/tools/pages/handlers-read.d.ts +0 -133
  835. package/dist/tools/pages/handlers-read.d.ts.map +0 -1
  836. package/dist/tools/pages/handlers-read.js +0 -1061
  837. package/dist/tools/pages/handlers-read.js.map +0 -1
  838. package/dist/tools/pages/handlers-write.d.ts +0 -212
  839. package/dist/tools/pages/handlers-write.d.ts.map +0 -1
  840. package/dist/tools/pages/handlers-write.js +0 -419
  841. package/dist/tools/pages/handlers-write.js.map +0 -1
  842. package/dist/tools/pages/target.d.ts +0 -162
  843. package/dist/tools/pages/target.d.ts.map +0 -1
  844. package/dist/tools/pages/target.js +0 -239
  845. package/dist/tools/pages/target.js.map +0 -1
  846. package/dist/tools/sources/handlers-bind.d.ts +0 -148
  847. package/dist/tools/sources/handlers-bind.d.ts.map +0 -1
  848. package/dist/tools/sources/handlers-bind.js +0 -657
  849. package/dist/tools/sources/handlers-bind.js.map +0 -1
  850. package/dist/tools/sources/handlers.d.ts +0 -116
  851. package/dist/tools/sources/handlers.d.ts.map +0 -1
  852. package/dist/tools/sources/handlers.js +0 -289
  853. package/dist/tools/sources/handlers.js.map +0 -1
  854. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts +0 -95
  855. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts.map +0 -1
  856. package/dist/tools/sublayout/inspect-sublayout-handler.js +0 -181
  857. package/dist/tools/sublayout/inspect-sublayout-handler.js.map +0 -1
@@ -1,797 +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 { fetchSchemaFields, guardHeaderTransparencyWrite, seedRequiredEnumDefaults, validateEnumPropValues, validatePropsAgainstLiveSchema, withHeaderTransparencyWarnings, } 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
- // Ordering-red-border fix (2026-07-25): fetch the live element-type
360
- // schema ONCE here — reused below for the unknown-KEY check (B3), the
361
- // explicit-invalid-enum-VALUE hard-reject, and the required-enum
362
- // default-seeding, so one element_add call never triggers more than one
363
- // schema round-trip. Best-effort: ANY failure (network, non-2xx, unknown
364
- // shape) resolves to `null` and every dependent check below falls
365
- // through to its pre-fix behaviour (additive-before-breaking).
366
- const schemaFields = await fetchSchemaFields(client, elementType);
367
- // B3 (2026-06-29): live-schema cross-check. The static guards above catch a
368
- // fixed set of known mistakes; this rejects ANY top-level prop key absent
369
- // from the element-type's real schema (fields[].name) — the silent-drop
370
- // class the static map cannot enumerate. Best-effort: a schema fetch
371
- // failure / unknown shape / empty field list never breaks the write
372
- // (additive-before-breaking; the plugin is live 1.6.x).
373
- const liveSchemaRejection = await validatePropsAgainstLiveSchema({
374
- client,
375
- elementType,
376
- props: input.props,
377
- reservedKeys: RESERVED_BINDING_KEYS,
378
- fields: schemaFields,
379
- });
380
- if (liveSchemaRejection !== null)
381
- return liveSchemaRejection;
382
- // Ordering-red-border fix (2026-07-25): a caller-supplied value for a
383
- // KNOWN enum-constrained field that is not one of its accepted members is
384
- // hard-rejected up-front with an actionable message — the same mistake
385
- // the PHP write guard would 422 on, caught earlier. Never touches a key
386
- // the caller did NOT supply (that's the seeding step below).
387
- const enumValueRejection = validateEnumPropValues({
388
- elementType,
389
- fields: schemaFields ?? [],
390
- props: input.props,
391
- reservedKeys: RESERVED_BINDING_KEYS,
392
- });
393
- if (enumValueRejection !== null)
394
- return enumValueRejection;
395
- // Ordering-red-border fix (2026-07-25): seed every REQUIRED enum field
396
- // (schema `enum` without a `''` member) that declares a non-empty schema
397
- // `default` and that the caller did NOT supply — mirrors what YOOtheme's
398
- // own native element-creation initialises. Without this, an element
399
- // created via element_add carries NO value for a required dropdown (e.g.
400
- // "Ordering"), and the Vue Builder flags it red. A caller-supplied value
401
- // (already validated above) is NEVER overwritten.
402
- if (schemaFields !== null) {
403
- body.props = seedRequiredEnumDefaults(schemaFields, body.props);
404
- }
405
- const progress = extra ? createProgressReporter(extra) : null;
406
- await progress?.report(0, 2, PHASE_SEND);
407
- try {
408
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements`, { body, etag });
409
- await progress?.report(2, 2, PHASE_CONFIRM);
410
- return jsonResult(data);
411
- }
412
- catch (e) {
413
- return errorResult({
414
- error: e,
415
- context: input,
416
- hint: elementAddHint(e),
417
- });
418
- }
419
- }
420
- // ─── scaffold_section (WF2 Option C) ─────────────────────────────────
421
- /**
422
- * `scaffold_section` — POST /pages/{template_id}/elements/scaffold-section.
423
- *
424
- * Create a VALID `section → row → column` hull (optionally N columns) in ONE
425
- * atomic call and return the column pointer(s) to drop content into. This is
426
- * the positive-steering counterpart to the server-side hierarchy guard: it
427
- * makes the correct structure the cheapest path, so the guard rarely fires.
428
- * The whole hull lands in a single server-side transaction (one ETag bump).
429
- */
430
- export async function handleScaffoldSection({ client }, input, extra) {
431
- const { template_id, columns, column_widths, etag } = input;
432
- const progress = extra ? createProgressReporter(extra) : null;
433
- await progress?.report(0, 2, PHASE_SEND);
434
- try {
435
- const body = {};
436
- if (columns !== undefined) {
437
- body.columns = columns;
438
- }
439
- if (column_widths !== undefined) {
440
- body.column_widths = column_widths;
441
- }
442
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/scaffold-section`, { body, etag });
443
- await progress?.report(2, 2, PHASE_CONFIRM);
444
- return jsonResult(data);
445
- }
446
- catch (e) {
447
- return errorResult({
448
- error: e,
449
- context: { template_id, columns, column_widths },
450
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry. The response ' +
451
- '`column_paths` are valid parents for yootheme_builder_element_add — ' +
452
- 'drop your content elements into those columns.',
453
- });
454
- }
455
- }
456
- // ─── element_update_settings ─────────────────────────────────────────
457
- /**
458
- * B3 — best-effort element-type discovery for `element_update_settings`, which
459
- * carries no `element_type` input. Reads the element and returns its type, or
460
- * `null` on ANY failure (so the live-schema check simply does not run). Mirrors
461
- * the type extraction in `handleElementGet` (`element_type`, then `type`).
462
- */
463
- async function discoverElementType(client, template_id, element_path) {
464
- try {
465
- const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements/${encodeElementPath(element_path)}`);
466
- if (typeof data.element_type === 'string' && data.element_type !== '') {
467
- return data.element_type;
468
- }
469
- if (typeof data.type === 'string' && data.type !== '') {
470
- return data.type;
471
- }
472
- return null;
473
- }
474
- catch {
475
- return null;
476
- }
477
- }
478
- export async function handleElementUpdateSettings({ client }, input, extra) {
479
- const { template_id, element_path, props, name, merge, unset, etag } = input;
480
- // Wave-7: guard against hand-authored source/source_extended in props.
481
- // element_path is the only identity we have at this layer; the agent gets
482
- // a clear message anyway because the offending key is named explicitly.
483
- const propsRejection = validatePropsForReservedKeys(props, `<at ${element_path}>`);
484
- if (propsRejection !== null)
485
- return propsRejection;
486
- // Task 6 (transparent-header plan, 2026-07-27): the ONE client-side
487
- // chokepoint for YOOtheme's three `header_transparent*` section props.
488
- // Runs BEFORE the live-schema probe because it is decided from the payload
489
- // alone — a dead prop needs no network round-trip and no theme knowledge.
490
- // Rejects class A (props YOOtheme never reads), defaults a switched-on
491
- // transparent header's colour to `''` (never `'light'`), and passes class C
492
- // (a hero medium) through with a warning. Class B needs the compiled
493
- // `theme.css`, which this process cannot read — it stays server-side and is
494
- // deliberately NOT approximated here.
495
- const headerGuard = guardHeaderTransparencyWrite({
496
- props,
497
- merge,
498
- unset,
499
- elementPath: element_path,
500
- });
501
- if (headerGuard.rejection !== null)
502
- return headerGuard.rejection;
503
- const effectiveProps = headerGuard.props ?? props;
504
- // B3 (2026-06-29): live-schema cross-check. This handler has no
505
- // `element_type` input, so discover it best-effort via the element read,
506
- // then validate props against the real schema. ANY failure (type
507
- // undiscoverable, schema fetch error, empty field list) falls through to
508
- // the prior behaviour — the write is never broken by the probe. Skipped
509
- // when there are no props to validate so a no-op update stays a single call.
510
- //
511
- // Deliberately validates the CALLER's props, not `effectiveProps`: the
512
- // header guard above may have seeded `header_transparent_text_color: ''`,
513
- // and an older plugin whose schema predates that field would then have this
514
- // check hard-reject OUR OWN seed. A seeded key is a no-op server-side
515
- // anyway (an absent colour and `''` render identically).
516
- if (props !== null && typeof props === 'object' && Object.keys(props).length > 0) {
517
- const discoveredType = await discoverElementType(client, template_id, element_path);
518
- if (discoveredType !== null) {
519
- const liveSchemaRejection = await validatePropsAgainstLiveSchema({
520
- client,
521
- elementType: discoveredType,
522
- props,
523
- reservedKeys: RESERVED_BINDING_KEYS,
524
- });
525
- if (liveSchemaRejection !== null)
526
- return liveSchemaRejection;
527
- }
528
- }
529
- const encoded = encodeElementPath(element_path);
530
- const progress = extra ? createProgressReporter(extra) : null;
531
- await progress?.report(0, 2, PHASE_SEND);
532
- try {
533
- // T5 / F-12: forward `merge` only when explicitly true so older PHP
534
- // builds (which ignore unknown keys anyway) get the same byte-for-
535
- // byte body they did before.
536
- // Task 6: `effectiveProps` is the SAME reference as `props` unless the
537
- // header guard seeded the theme-default colour, so every other write
538
- // keeps its byte-identical body.
539
- const body = {
540
- props: effectiveProps,
541
- };
542
- if (merge === true) {
543
- body.merge = true;
544
- }
545
- // ELEMENT_WRITE-4 (part 2): forward the first-class builder name → the
546
- // node-level `name`. Only when a non-empty string so an omitted value
547
- // leaves the current name unchanged.
548
- if (typeof name === 'string' && name !== '') {
549
- body.name = name;
550
- }
551
- // Task 10b: forward `unset` only when non-empty (same back-compat
552
- // pattern as `merge`) — removal is never schema-validated, it
553
- // mirrors the PHP side which honours an `unset` key in the PUT body.
554
- if (unset !== undefined && unset.length > 0) {
555
- body.unset = unset;
556
- }
557
- const data = await client.put(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/settings`, { body, etag });
558
- await progress?.report(2, 2, PHASE_CONFIRM);
559
- // Task 6: a class-C write (transparent header over a hero medium) and
560
- // a defaulted colour are ALLOWED — they ride back as non-blocking
561
- // `warnings[]` so the agent learns what it must go and LOOK at.
562
- // A write with no header props gets the untouched REST body back.
563
- return jsonResult(withHeaderTransparencyWarnings(data, headerGuard.warnings));
564
- }
565
- catch (e) {
566
- return errorResult({
567
- error: e,
568
- context: { template_id, element_path },
569
- hint: elementUpdateHint(e),
570
- });
571
- }
572
- }
573
- // ─── element_set_status ───────────────────────────────────────────────
574
- /**
575
- * T-D1 — enable/disable an element via its `props.status` field, the SAME
576
- * field YOOtheme's own native "Disable element" checkbox writes
577
- * (`packages/builder/config/builder.php`: `true-value: 'disabled'`,
578
- * `false-value: ''`) and the ONLY field its render pipeline's
579
- * `DisabledTransform` checks (`props['status'] !== 'disabled'`). This
580
- * handler is a thin REST proxy: it forwards `status` verbatim (as a
581
- * boolean) in the PUT body — the enable-removes-the-key vs
582
- * disable-writes-'disabled' semantics live server-side in
583
- * `ElementOps::setStatus()`, which is the exact contract
584
- * `LayoutAuditExtractor` / `pages_audit` / `template_summary` already read
585
- * (`content_nodes.status`).
586
- */
587
- export async function handleElementSetStatus({ client }, input, extra) {
588
- const { template_id, element_path, status, etag } = input;
589
- const encoded = encodeElementPath(element_path);
590
- const progress = extra ? createProgressReporter(extra) : null;
591
- await progress?.report(0, 2, PHASE_SEND);
592
- try {
593
- const data = await client.put(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/status`, { body: { status }, etag });
594
- await progress?.report(2, 2, PHASE_CONFIRM);
595
- return jsonResult(data);
596
- }
597
- catch (e) {
598
- return errorResult({
599
- error: e,
600
- context: { template_id, element_path },
601
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry.',
602
- });
603
- }
604
- }
605
- // ─── element_move ────────────────────────────────────────────────────
606
- export async function handleElementMove({ client }, input, extra) {
607
- const { template_id, element_path, to_parent_path, to_index, etag } = input;
608
- const encoded = encodeElementPath(element_path);
609
- const progress = extra ? createProgressReporter(extra) : null;
610
- await progress?.report(0, 2, PHASE_SEND);
611
- try {
612
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/move`, { body: { to_parent_path, to_index }, etag });
613
- await progress?.report(2, 2, PHASE_CONFIRM);
614
- return jsonResult(data);
615
- }
616
- catch (e) {
617
- return errorResult({
618
- error: e,
619
- context: { template_id, element_path, to_parent_path, to_index },
620
- hint: 'Verify destination parent accepts the element type. On 412 refresh ' +
621
- 'ETag and retry.',
622
- });
623
- }
624
- }
625
- // ─── element_clone ───────────────────────────────────────────────────
626
- export async function handleElementClone({ client }, input, extra) {
627
- const { template_id, element_path, etag } = input;
628
- const encoded = encodeElementPath(element_path);
629
- const progress = extra ? createProgressReporter(extra) : null;
630
- await progress?.report(0, 2, PHASE_SEND);
631
- try {
632
- const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/clone`, { etag });
633
- await progress?.report(2, 2, PHASE_CONFIRM);
634
- return jsonResult(data);
635
- }
636
- catch (e) {
637
- return errorResult({
638
- error: e,
639
- context: { template_id, element_path },
640
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry.',
641
- });
642
- }
643
- }
644
- // ─── element_delete (destructive — elicitation + confirm-guard) ─────
645
- //
646
- // Wave G.4.1 — destructive confirm via MCP elicitation. Progress
647
- // reports (Wave G.5) only start AFTER the confirm gate clears.
648
- // Wave-6 R4 (2026-05-29): Defensive truthiness for the confirm gate.
649
- // Cold-AI #4 reported the gate kept firing despite `confirm:true`. The Zod
650
- // schema already coerces only strict booleans (anything non-boolean is
651
- // rejected upstream as invalid_arguments), but we widen the in-handler
652
- // check to accept the literal string `"true"` / numeric `1` as a safety net
653
- // in case a future wrapper round-trips the arg through JSON re-encoding.
654
- function isConfirmedTrue(v) {
655
- if (v === true)
656
- return true;
657
- if (typeof v === 'string' && v.toLowerCase() === 'true')
658
- return true;
659
- if (typeof v === 'number' && v === 1)
660
- return true;
661
- return false;
662
- }
663
- function isConfirmedFalse(v) {
664
- if (v === false)
665
- return true;
666
- if (typeof v === 'string' && v.toLowerCase() === 'false')
667
- return true;
668
- if (typeof v === 'number' && v === 0)
669
- return true;
670
- return false;
671
- }
672
- /**
673
- * ELEMENT_WRITE-10 — best-effort enrichment of a delete PREVIEW so the human
674
- * sees WHAT would be deleted, not just a path. Reads the element (try/catch,
675
- * never blocks the preview on failure) and derives `{element_type, label,
676
- * descendant_count, text_excerpt}`. Deleting a section can remove 10 descendant
677
- * nodes; naming them turns "delete element at /children/3" into an informed
678
- * decision. Returns `{}` on ANY failure so the preview always renders.
679
- */
680
- async function bestEffortDeletePreviewDetails(client, template_id, element_path) {
681
- try {
682
- const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements/${encodeElementPath(element_path)}`);
683
- const elementType = typeof data.element_type === 'string' && data.element_type !== ''
684
- ? data.element_type
685
- : typeof data.type === 'string'
686
- ? data.type
687
- : undefined;
688
- const label = typeof data.label === 'string' && data.label !== ''
689
- ? data.label
690
- : typeof data.path_label === 'string' && data.path_label !== ''
691
- ? data.path_label
692
- : undefined;
693
- const descendantCount = countDescendants(data.children);
694
- const excerpt = firstTextExcerpt(data.props);
695
- const out = {};
696
- if (elementType !== undefined)
697
- out.element_type = elementType;
698
- if (label !== undefined)
699
- out.label = label;
700
- out.descendant_count = descendantCount;
701
- if (excerpt !== undefined)
702
- out.text_excerpt = excerpt;
703
- return out;
704
- }
705
- catch {
706
- return {};
707
- }
708
- }
709
- /** Deep-count every descendant node under a `children` array (0 when absent). */
710
- function countDescendants(children) {
711
- if (!Array.isArray(children))
712
- return 0;
713
- let total = 0;
714
- for (const child of children) {
715
- if (child !== null && typeof child === 'object' && !Array.isArray(child)) {
716
- total += 1;
717
- total += countDescendants(child.children);
718
- }
719
- }
720
- return total;
721
- }
722
- /** First-line text excerpt from a props map's canonical text carriers, capped. */
723
- function firstTextExcerpt(props) {
724
- if (props === null || typeof props !== 'object' || Array.isArray(props))
725
- return undefined;
726
- const p = props;
727
- for (const key of ['content', 'title', 'text']) {
728
- const v = p[key];
729
- if (typeof v === 'string' && v.trim() !== '') {
730
- const firstLine = v.trim().split('\n')[0] ?? '';
731
- return firstLine.length > 80 ? `${firstLine.slice(0, 80)}…` : firstLine;
732
- }
733
- }
734
- return undefined;
735
- }
736
- async function resolveDeleteConfirm(client, elicitation, template_id, element_path, confirm) {
737
- // Wave-6 R4: explicit truthy check — confirm:true (any form) bypasses
738
- // the elicitation/preview path immediately.
739
- if (isConfirmedTrue(confirm))
740
- return null;
741
- // ELEMENT_WRITE-10: only on the PREVIEW path (not a confirmed delete) enrich
742
- // the details with WHAT is about to be deleted. Best-effort — never blocks.
743
- const enriched = await bestEffortDeletePreviewDetails(client, template_id, element_path);
744
- if (isConfirmedFalse(confirm) || !elicitation) {
745
- return confirmGuard({
746
- operation: 'delete element',
747
- details: {
748
- template_id,
749
- element_path,
750
- ...enriched,
751
- // R4: echo back what was received so the agent can compare.
752
- // Wave-7 (2026-05-29): force-encode undefined to null so the
753
- // key survives JSON.stringify in the agent-facing payload.
754
- // Without this the agent saw NO received_confirm field at all
755
- // (key dropped by serializer) and could not diff sent vs
756
- // received — looked like the value was accepted.
757
- received_confirm: confirm === undefined ? null : confirm,
758
- expected: 'confirm: true (boolean)',
759
- },
760
- });
761
- }
762
- const accepted = await elicitConfirmation(elicitation, `Permanently delete element at "${element_path}" in template ` +
763
- `"${template_id}"? This cannot be undone.`);
764
- return accepted
765
- ? null
766
- : confirmGuard({
767
- operation: 'delete element',
768
- details: { template_id, element_path, ...enriched },
769
- });
770
- }
771
- export async function handleElementDelete({ client, elicitation }, input, extra) {
772
- const { template_id, element_path, etag, confirm } = input;
773
- const blocked = await resolveDeleteConfirm(client, elicitation, template_id, element_path, confirm);
774
- if (blocked)
775
- return blocked;
776
- const encoded = encodeElementPath(element_path);
777
- const progress = extra ? createProgressReporter(extra) : null;
778
- await progress?.report(0, 2, PHASE_SEND);
779
- try {
780
- // Wave-12 / Cold-AI #5 F13 (restored Wave-13 post-merge): forward
781
- // `{confirm:true}` as JSON body so the PHP confirm-guard accepts the
782
- // delete. Without it the guard returns `requires_confirm:true` and
783
- // the caller loops forever.
784
- const data = await client.delete(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}`, { etag, body: { confirm: true } });
785
- await progress?.report(2, 2, PHASE_CONFIRM);
786
- return jsonResult(data);
787
- }
788
- catch (e) {
789
- return errorResult({
790
- error: e,
791
- context: { template_id, element_path },
792
- hint: 'On 412 refresh via yootheme_builder_get_etag and retry. On 404 the ' +
793
- 'element may already be gone — verify with yootheme_builder_element_list.',
794
- });
795
- }
796
- }
797
- //# sourceMappingURL=handlers-write.js.map