@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,685 +0,0 @@
1
- /**
2
- * Finding B3 — schema-driven write validation for element props.
3
- *
4
- * The static `COMMON_PROP_TYPOS` map + `RESERVED_BINDING_KEYS` set in
5
- * `./handlers-write.ts` only catch a small fixed set of known mistakes. An
6
- * unknown prop key that is NOT in those tables slips through, the PHP backend
7
- * silently drops it, and the element renders empty with no signal to the agent
8
- * (customer B3).
9
- *
10
- * This module adds a LIVE cross-check against the element-type's real schema:
11
- * the authoritative prop keys are `fields[].name` from
12
- * `GET /element-types/<type>/schema` — the same source the B1
13
- * `yootheme_builder_element_type_get_schema` tool surfaces (see
14
- * `../inspection.ts`). When the schema is KNOWN and a key is SURELY unknown,
15
- * the write is hard-rejected with a Levenshtein `did_you_mean` suggestion.
16
- *
17
- * Additive-before-breaking (the plugin is live 1.6.x): every uncertainty —
18
- * schema fetch failure, unknown schema shape, empty field list — falls THROUGH
19
- * to the prior behaviour. A schema fetch must NEVER crash the write.
20
- *
21
- * @license MIT
22
- */
23
- import { errorResult, jsonResult } from '../tool-builder.js';
24
- /**
25
- * MCP-side mirror of `Inspector::knownAcceptedButHiddenFields`
26
- * (`src/modules/builder-inspection/src/Inspector.php`). YT-Pro accepts these
27
- * props at runtime even though the UI-tab `fieldset` omits them. The PHP
28
- * `schema()` endpoint already post-merges them into `fields[]`, so a current
29
- * (1.6.x) plugin schema covers them. This mirror is DEFENSE-IN-DEPTH: against
30
- * an older plugin whose schema predates that merge, it keeps a genuinely
31
- * runtime-accepted prop from being false-positive hard-rejected. Keep in sync
32
- * with the PHP list (deliberately small + ground-truthed).
33
- */
34
- export const RUNTIME_ACCEPTED_HIDDEN_PROPS = {
35
- button: ['content', 'link'],
36
- };
37
- /**
38
- * Levenshtein edit distance — small pure function (keys are short). Index
39
- * access is guarded with `?? 0` to satisfy `noUncheckedIndexedAccess`; the
40
- * row is fully populated at every access so the fallback never fires.
41
- */
42
- export function levenshtein(a, b) {
43
- const m = a.length;
44
- const n = b.length;
45
- if (m === 0)
46
- return n;
47
- if (n === 0)
48
- return m;
49
- const row = [];
50
- for (let j = 0; j <= n; j++)
51
- row.push(j);
52
- for (let i = 1; i <= m; i++) {
53
- let prevDiag = row[0] ?? 0; // distance at (i-1, 0)
54
- row[0] = i;
55
- for (let j = 1; j <= n; j++) {
56
- const above = row[j] ?? 0; // (i-1, j), before overwrite
57
- const cost = a.charCodeAt(i - 1) === b.charCodeAt(j - 1) ? 0 : 1;
58
- const deletion = above + 1;
59
- const insertion = (row[j - 1] ?? 0) + 1;
60
- const substitution = prevDiag + cost;
61
- row[j] = Math.min(deletion, insertion, substitution);
62
- prevDiag = above;
63
- }
64
- }
65
- return row[n] ?? 0;
66
- }
67
- /**
68
- * Closest real field name for `key`, or `undefined` when nothing is close
69
- * enough to suggest. Threshold (pinned in tests): `min(max(2, floor(0.4 ·
70
- * key.length)), key.length - 1)` — always tolerate 1–2 char typos and
71
- * proportionally more on longer keys, but a suggestion must be CLOSER than the
72
- * whole key length (M1 clamp), so a wholly-different word is never "suggested".
73
- */
74
- export function nearestFieldName(key, fields) {
75
- let best;
76
- let bestDist = Infinity;
77
- for (const field of fields) {
78
- const d = levenshtein(key, field);
79
- if (d < bestDist) {
80
- bestDist = d;
81
- best = field;
82
- }
83
- }
84
- if (best === undefined)
85
- return undefined;
86
- // M1: additionally clamp to STRICTLY less than the key length. A suggestion
87
- // must be CLOSER than the whole key — otherwise any very short key would
88
- // "match" any other same-length field (`xy` → `id`, distance 2 == length 2).
89
- // For longer keys the `key.length - 1` clamp is a no-op; `max(2, …)` keeps
90
- // catching 1–2 char typos.
91
- const threshold = Math.min(Math.max(2, Math.floor(key.length * 0.4)), key.length - 1);
92
- return bestDist <= threshold ? best : undefined;
93
- }
94
- /**
95
- * PAGES_LIBRARY_MEDIA-27 — suggest real field names for an unknown key,
96
- * combining TWO signals so an obviously-intended key is never missed:
97
- *
98
- * 1. PREFIX / SUBSTRING match — a `title` key on a headline should suggest
99
- * `title_element` / `title_style` / `title_color`, but char-Levenshtein to
100
- * each of those is 6-8 (well over the typo threshold), so the pure-distance
101
- * `nearestFieldName` returns nothing. When the unknown key (≥ 3 chars) is a
102
- * prefix of — or a substring of — a real field, surface EVERY such field
103
- * regardless of edit distance: these are the concrete keys the caller most
104
- * likely meant.
105
- * 2. Levenshtein nearest — the general single/double-char typo case.
106
- *
107
- * Prefix matches lead (they are the strongest signal), then substring matches,
108
- * then the Levenshtein nearest if not already covered. De-duplicated, order
109
- * preserved. Returns `[]` when nothing is close.
110
- */
111
- export function suggestFieldNames(key, fields) {
112
- const out = [];
113
- const push = (name) => {
114
- if (!out.includes(name))
115
- out.push(name);
116
- };
117
- if (key.length >= 3) {
118
- // Prefix matches first (`title` → `title_element`, `title_style`, …).
119
- for (const field of fields) {
120
- if (field !== key && field.startsWith(key))
121
- push(field);
122
- }
123
- // Then substring matches (`color` → `title_color`, `bg_color`).
124
- for (const field of fields) {
125
- if (field !== key && field.includes(key))
126
- push(field);
127
- }
128
- }
129
- // Then the edit-distance nearest for the general typo case.
130
- const near = nearestFieldName(key, fields);
131
- if (near !== undefined)
132
- push(near);
133
- return out;
134
- }
135
- /**
136
- * Pull the full `fields[]` list out of the element-type schema response.
137
- * Mirrors the envelope handling in `../inspection.ts`: the type schema nests
138
- * under `schema`, with a top-level fallback for older backends.
139
- *
140
- * @returns the field list (possibly empty), or `null` when the response
141
- * carries no `fields` array at all (unknown schema shape → treat as unknown).
142
- */
143
- export function extractSchemaFields(data) {
144
- if (data === null || typeof data !== 'object')
145
- return null;
146
- const obj = data;
147
- const schema = obj.schema !== null && typeof obj.schema === 'object'
148
- ? obj.schema
149
- : obj;
150
- const rawFields = schema.fields;
151
- if (!Array.isArray(rawFields))
152
- return null;
153
- const fields = [];
154
- for (const raw of rawFields) {
155
- if (raw === null || typeof raw !== 'object')
156
- continue;
157
- const f = raw;
158
- const name = f.name;
159
- if (typeof name !== 'string' || name === '')
160
- continue;
161
- const field = { name };
162
- if (typeof f.type === 'string' && f.type !== '')
163
- field.type = f.type;
164
- if (Array.isArray(f.enum)) {
165
- // Mirrors Inspector::extractEnum's PHP-side coercion
166
- // (is_string/is_int/is_bool → (string) cast) so a wire response
167
- // that carries raw scalars instead of pre-stringified values is
168
- // still usable.
169
- const enumValues = f.enum
170
- .filter((v) => typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean')
171
- .map((v) => String(v));
172
- if (enumValues.length > 0)
173
- field.enum = enumValues;
174
- }
175
- if ('default' in f)
176
- field.default = f.default;
177
- fields.push(field);
178
- }
179
- return fields;
180
- }
181
- /**
182
- * Pull `fields[].name` out of the element-type schema response. Thin
183
- * name-only projection of {@link extractSchemaFields} — kept as its own
184
- * export because every EXISTING caller/test only needs the name list.
185
- *
186
- * @returns the field-name list (possibly empty), or `null` when the response
187
- * carries no `fields` array at all (unknown schema shape → treat as unknown).
188
- */
189
- export function extractSchemaFieldNames(data) {
190
- const fields = extractSchemaFields(data);
191
- return fields === null ? null : fields.map((f) => f.name);
192
- }
193
- /**
194
- * Best-effort fetch of an element-type's full field schema. ANY failure
195
- * (network, non-2xx, unknown shape) resolves to `null` so the caller falls
196
- * through to the prior behaviour — a schema fetch must never break the write.
197
- */
198
- export async function fetchSchemaFields(client, elementType) {
199
- try {
200
- const data = await client.get(`/element-types/${encodeURIComponent(elementType)}/schema`);
201
- return extractSchemaFields(data);
202
- }
203
- catch {
204
- return null;
205
- }
206
- }
207
- /**
208
- * Best-effort fetch of an element-type's real prop keys. Name-only
209
- * projection of {@link fetchSchemaFields} — kept as its own export for
210
- * existing callers that only need the key list.
211
- */
212
- export async function fetchSchemaFieldNames(client, elementType) {
213
- const fields = await fetchSchemaFields(client, elementType);
214
- return fields === null ? null : fields.map((f) => f.name);
215
- }
216
- /**
217
- * Validate `props` against the element-type's LIVE schema. Returns an
218
- * `errorResult` ONLY when the schema is surely known (non-empty field list) AND
219
- * at least one prop key is surely unknown; otherwise `null` (pass / fall
220
- * through). Reserved binding keys are skipped here — their dedicated guard runs
221
- * first and keeps priority.
222
- */
223
- export async function validatePropsAgainstLiveSchema(opts) {
224
- const { client, elementType, props, reservedKeys } = opts;
225
- if (props === undefined || props === null)
226
- return null;
227
- const keys = Object.keys(props);
228
- if (keys.length === 0)
229
- return null;
230
- const fields = opts.fields !== undefined ? opts.fields : await fetchSchemaFields(client, elementType);
231
- // null = schema unknown / fetch failed; [] = present-but-empty. Both are
232
- // "uncertain" → never hard-reject.
233
- if (fields === null || fields.length === 0)
234
- return null;
235
- const fieldNames = fields.map((f) => f.name);
236
- // Accepted set = live schema fields ∪ the runtime-accepted-hidden mirror.
237
- const accepted = new Set(fieldNames);
238
- for (const extra of RUNTIME_ACCEPTED_HIDDEN_PROPS[elementType] ?? []) {
239
- accepted.add(extra);
240
- }
241
- const unknownKeys = [];
242
- for (const key of keys) {
243
- if (reservedKeys.has(key))
244
- continue; // dedicated guard owns these
245
- if (accepted.has(key))
246
- continue;
247
- unknownKeys.push(key);
248
- }
249
- if (unknownKeys.length === 0)
250
- return null;
251
- // did_you_mean only for keys with a genuinely-close real field. Never
252
- // fabricate a suggestion (a wholly-different key gets no `did_you_mean`).
253
- // PAGES_LIBRARY_MEDIA-27: prefix/substring matches join the Levenshtein
254
- // nearest, so `title` on a headline now suggests title_element/title_style/
255
- // title_color instead of returning nothing.
256
- const didYouMean = {};
257
- const suggestionParts = [];
258
- let firstNear;
259
- for (const key of unknownKeys) {
260
- const suggestions = suggestFieldNames(key, fieldNames);
261
- if (suggestions.length > 0) {
262
- didYouMean[key] = suggestions;
263
- suggestionParts.push(`\`${key}\` → ${suggestions.map((s) => `\`${s}\``).join('/')}`);
264
- if (firstNear === undefined)
265
- firstNear = suggestions[0];
266
- }
267
- }
268
- const hasSuggestions = suggestionParts.length > 0;
269
- const unknownList = unknownKeys.map((k) => `\`${k}\``).join(', ');
270
- return errorResult({
271
- error: new Error(`Unknown prop key(s) for element type \`${elementType}\`: ${unknownList}. ` +
272
- (hasSuggestions ? `Did you mean ${suggestionParts.join(', ')}? ` : '') +
273
- `These keys are not in the element's live schema (fields[].name), so YT-Pro ` +
274
- `silently drops them server-side and the element would render empty. ` +
275
- `Call yootheme_builder_element_type_get_schema({ element_type: "${elementType}" }) ` +
276
- `for the canonical prop keys.`),
277
- context: {
278
- element_type: elementType,
279
- unknown_prop_keys: unknownKeys,
280
- ...(hasSuggestions ? { did_you_mean: didYouMean } : {}),
281
- valid_prop_keys: fieldNames,
282
- },
283
- hint: `Re-try with a canonical prop key` +
284
- (firstNear !== undefined ? ` (e.g. \`${firstNear}\`)` : '') +
285
- `, or fetch the schema first: ` +
286
- `yootheme_builder_element_type_get_schema({ element_type: "${elementType}" }).`,
287
- });
288
- }
289
- // ─── Ordering-red-border fix (2026-07-25) ─────────────────────────────
290
- //
291
- // Root cause: `element_add` forwards ONLY the caller-supplied `props`
292
- // verbatim. YOOtheme's OWN native element-creation additionally initialises
293
- // every REQUIRED enum field (a `select`/dropdown whose schema `enum` does
294
- // NOT list `''` as a member — the same "required" definition the PHP-side
295
- // UiInvariantValidator uses for its `required_field_empty` check) to its
296
- // schema `default`. An element created via element_add without e.g. an
297
- // "Ordering" prop therefore has NO value at all for that required dropdown,
298
- // and YOOtheme's Vue Builder flags the empty required control red.
299
- //
300
- // Two functions close this, both scoped to element_add's CREATE path only
301
- // (element_update_settings is deliberately untouched — an update may
302
- // legitimately clear a field, so injecting a default there would silently
303
- // fight the caller):
304
- // - `seedRequiredEnumDefaults` fills in the schema default ONLY for a
305
- // required-enum field the caller did not supply at all. A caller-
306
- // supplied value (valid or not) is NEVER touched here.
307
- // - `validateEnumPropValues` hard-rejects a caller-supplied value for a
308
- // KNOWN enum-constrained field that is not one of its accepted members
309
- // — closing the create-path KEY-only gap `validatePropsAgainstLiveSchema`
310
- // deliberately leaves open (it only checks the KEY is known, never the
311
- // VALUE).
312
- /**
313
- * A field is "required" in the same sense the PHP-side `UiInvariantValidator`
314
- * uses for its `required_field_empty` violation: it is enum-constrained (a
315
- * non-empty `enum` list) and that list does NOT contain `''` — an optional
316
- * select always lists `''` as its "nothing selected" member.
317
- */
318
- export function isRequiredEnumField(field) {
319
- return field.enum !== undefined && field.enum.length > 0 && !field.enum.includes('');
320
- }
321
- /** A schema `default` that is actually usable as a seeded value — present and non-empty. */
322
- function hasUsableDefault(field) {
323
- return field.default !== undefined && field.default !== null && field.default !== '';
324
- }
325
- /**
326
- * Seed every REQUIRED enum field (see {@link isRequiredEnumField}) that
327
- * declares a non-empty schema `default` and is ABSENT from `props` with that
328
- * default — mirroring what YOOtheme's own native element-creation
329
- * initialises. A field the caller already supplied a key for (any value,
330
- * including one later hard-rejected by {@link validateEnumPropValues}) is
331
- * never touched: the caller's own value ALWAYS wins, no coercion, ever. An
332
- * element type with no schema default for a field gets nothing invented for
333
- * it — the seed set only ever pulls from real schema data.
334
- *
335
- * Returns `props` UNCHANGED (same reference, possibly `undefined`) when
336
- * there is nothing to seed, so a no-op call never allocates a new object.
337
- */
338
- export function seedRequiredEnumDefaults(fields, props) {
339
- const seeds = {};
340
- for (const field of fields) {
341
- if (!isRequiredEnumField(field))
342
- continue;
343
- if (!hasUsableDefault(field))
344
- continue;
345
- if (props !== undefined && Object.prototype.hasOwnProperty.call(props, field.name))
346
- continue;
347
- seeds[field.name] = field.default;
348
- }
349
- if (Object.keys(seeds).length === 0)
350
- return props;
351
- return { ...seeds, ...(props ?? {}) };
352
- }
353
- /**
354
- * YOOtheme persists a BOOLEAN shorthand (true/false/"true"/"false"/1/0/'1'/'0')
355
- * in several fields our schema-derivation would otherwise classify as a plain
356
- * enum-value mismatch (e.g. a link's `link_target: true`, the "open in a new
357
- * window" checkbox, on a field whose enum is `_blank`/`_self`/…). Mirrors
358
- * `UiInvariantValidator::isBooleanish` (PHP) so this pre-flight is never
359
- * STRICTER than the server-side guard the write would hit anyway.
360
- */
361
- function isBooleanishEnumValue(value) {
362
- return (typeof value === 'boolean' ||
363
- value === 1 ||
364
- value === 0 ||
365
- value === '1' ||
366
- value === '0' ||
367
- value === 'true' ||
368
- value === 'false');
369
- }
370
- /**
371
- * Hard-reject a prop VALUE the caller explicitly supplied for a KNOWN
372
- * enum-constrained field when that value is not one of the field's declared
373
- * `enum` members. `validatePropsAgainstLiveSchema` only ever checks that a
374
- * prop KEY is known — this is the VALUE half, scoped to element_add's create
375
- * path only (see the section banner above for why).
376
- *
377
- * An empty value (`''` / `null` / `undefined`) is deliberately NOT judged
378
- * here — persisting an empty value on a required field is a DIFFERENT
379
- * violation (`required_field_empty`) the PHP write guard already owns; this
380
- * function only judges a genuinely non-empty value against enum membership.
381
- * A non-scalar value (a dynamic-binding shape) is skipped — it cannot be
382
- * safely compared against a string enum and is not this function's concern.
383
- *
384
- * Returns `null` (pass) whenever the field is unknown to the given `fields`
385
- * list or is not enum-constrained — this is a value check layered ON TOP of
386
- * the key check, never a whitelist on its own.
387
- */
388
- export function validateEnumPropValues(opts) {
389
- const { elementType, fields, props, reservedKeys } = opts;
390
- if (props === undefined || props === null)
391
- return null;
392
- const byName = new Map(fields.map((f) => [f.name, f]));
393
- for (const [key, value] of Object.entries(props)) {
394
- if (reservedKeys.has(key))
395
- continue; // dedicated guard owns these
396
- if (value === '' || value === null || value === undefined)
397
- continue; // required_field_empty is the PHP guard's concern
398
- if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean')
399
- continue;
400
- if (isBooleanishEnumValue(value))
401
- continue;
402
- const field = byName.get(key);
403
- if (field === undefined || field.enum === undefined || field.enum.length === 0)
404
- continue;
405
- if (field.enum.includes(String(value)))
406
- continue;
407
- return errorResult({
408
- error: new Error(`Invalid value for prop \`${key}\` on element type \`${elementType}\`: ` +
409
- `${JSON.stringify(value)} is not one of its accepted values. ` +
410
- `Valid values: ${field.enum.map((v) => `\`${v}\``).join(', ')}.`),
411
- context: {
412
- element_type: elementType,
413
- field: key,
414
- given_value: value,
415
- valid_values: field.enum,
416
- },
417
- hint: `Use one of the valid values, or fetch the schema: ` +
418
- `yootheme_builder_element_type_get_schema({ element_type: "${elementType}" }).`,
419
- });
420
- }
421
- return null;
422
- }
423
- // ─── Transparent-header write guard (Task 6, 2026-07-27) ─────────────
424
- //
425
- // YOOtheme's transparent header lives in three props on a `section`
426
- // (`header_transparent`, `_noplaceholder`, `_text_color`). The plan's policy
427
- // is that a transparent header is a deliberate EXCEPTION, never a default, and
428
- // that whoever turns it on picks the colour deliberately — with no deliberate
429
- // choice the colour is `''` (the theme default), NEVER `'light'` (which is
430
- // white navigation text, and recolours even over a flat theme background).
431
- //
432
- // This guard is the CLIENT-SIDE half. What it may decide is bounded by what
433
- // it can KNOW, which is the whole design:
434
- //
435
- // - **Class A (dead props) is theme-INDEPENDENT.** `_text_color` /
436
- // `_noplaceholder` on a section whose master switch is off are never read
437
- // by YOOtheme — dead whatever the theme declares. So this surface, which
438
- // can never read `theme.css`, still rejects them. (Ratified for this
439
- // surface by the plan's Task-6 scope; the evaluator docblock in
440
- // `HeaderContrastEvaluator.php` records the open fail-open question.)
441
- // - **Class B (the layout contradicts the theme's own `--uk-inverse`) needs
442
- // the compiled `theme.css`.** TypeScript cannot read it, so class B is NOT
443
- // approximated here — it stays with `pages_audit` /
444
- // `header_transparency_set`, where the declaration IS readable. Guessing
445
- // it client-side would be exactly the invented judgment the plan forbids.
446
- // - **Class C (a hero image/video covers the section background) is allowed
447
- // with a warning**, never rejected: over a medium no colour is provable
448
- // from props and none is safer than another, so the only valid proof is
449
- // looking at the rendered page.
450
- //
451
- // The SECOND bound is the write's own merge semantics. `element_update_settings`
452
- // replaces props by default and deep-merges only on `merge:true`
453
- // (`ElementsController::updateSettings`). A merge payload that omits the master
454
- // switch therefore says NOTHING about the resulting state — so nothing is
455
- // rejected and nothing is seeded there. "Not decidable" is a legitimate answer;
456
- // a false reject on a partial update would be worse than the hole it closes.
457
- //
458
- // ONE chokepoint: `handleElementUpdateSettings` calls this and nothing else
459
- // re-implements it (mirroring the API Mapper Library-First-Guard, which runs at
460
- // `createConnection` only). `element_add`'s create path is deliberately NOT a
461
- // second call site — a section created with dead props is caught by the
462
- // server-side `pages_audit` check, which can also see whether it is the FIRST
463
- // section (`a2`, the other half of class A, is undecidable from a single
464
- // element payload and stays server-side too).
465
- const HEADER_TRANSPARENT_PROP = 'header_transparent';
466
- const HEADER_TRANSPARENT_TEXT_COLOR_PROP = 'header_transparent_text_color';
467
- const HEADER_TRANSPARENT_NOPLACEHOLDER_PROP = 'header_transparent_noplaceholder';
468
- /** The two props that can put a backdrop in front of the theme's own background. */
469
- const HEADER_MEDIA_PROPS = ['image', 'video'];
470
- /**
471
- * Strict-boolean truthiness set — a byte-for-byte mirror of
472
- * `HeaderContrastFacts::TRUTHY_STRINGS` (PHP). Only genuine true-ish values
473
- * engage, so the raw-JSON strings `"false"` / `"0"` can never read as true (a
474
- * loose `!!value` would, which is the bypass the API Mapper Library-First-Guard's
475
- * `acknowledge_no_library` closed).
476
- */
477
- const HEADER_TRUTHY_STRINGS = ['1', 'true', 'yes', 'on'];
478
- /** Mirror of `HeaderContrastFacts::isTruthyFlag`. */
479
- function isHeaderTruthyFlag(value) {
480
- if (typeof value === 'boolean')
481
- return value;
482
- if (typeof value === 'number')
483
- return value === 1;
484
- if (typeof value === 'string')
485
- return HEADER_TRUTHY_STRINGS.includes(value.trim().toLowerCase());
486
- return false;
487
- }
488
- /**
489
- * Mirror of `HeaderContrastFacts::readTextColor` — an unrecognised value
490
- * degrades to `''`. A colour this code does not understand is not a colour it
491
- * may act on (and rejecting a garbage enum value is
492
- * {@link validateEnumPropValues}' job, not this guard's).
493
- */
494
- function readHeaderTextColor(value) {
495
- if (typeof value !== 'string')
496
- return '';
497
- const normalised = value.trim().toLowerCase();
498
- if (normalised === 'light')
499
- return 'light';
500
- if (normalised === 'dark')
501
- return 'dark';
502
- return '';
503
- }
504
- /** Mirror of `HeaderContrastFacts::isPresent` — does a media prop carry an actual backdrop? */
505
- function isHeaderMediaPresent(value) {
506
- if (value === null || value === undefined || value === false)
507
- return false;
508
- if (typeof value === 'string')
509
- return value.trim() !== '';
510
- if (Array.isArray(value))
511
- return value.length > 0;
512
- if (typeof value === 'object')
513
- return Object.keys(value).length > 0;
514
- if (typeof value === 'number')
515
- return value !== 0;
516
- return true;
517
- }
518
- /**
519
- * Resolve one prop's state AFTER the write, honouring merge semantics.
520
- *
521
- * @param present a reader for "the payload states this key" → its value
522
- * @param replaces `true` when the write REPLACES all props (the default), so an
523
- * absent key means the prop ends up absent; `false` (merge) means an
524
- * absent key leaves the stored value — unknowable from here.
525
- */
526
- function resolveAfterWrite(props, key, unset, replaces, read, absent) {
527
- if (Object.prototype.hasOwnProperty.call(props, key))
528
- return read(props[key]);
529
- if (unset.has(key))
530
- return absent; // explicitly removed → YOOtheme's default
531
- return replaces ? absent : 'unknown';
532
- }
533
- /** Media backdrop after the write: `true` if either media prop ends up set. */
534
- function resolveMediaBackdrop(props, unset, replaces) {
535
- let anyUnknown = false;
536
- for (const key of HEADER_MEDIA_PROPS) {
537
- const resolved = resolveAfterWrite(props, key, unset, replaces, isHeaderMediaPresent, false);
538
- if (resolved === true)
539
- return true;
540
- if (resolved === 'unknown')
541
- anyUnknown = true;
542
- }
543
- return anyUnknown ? 'unknown' : false;
544
- }
545
- /**
546
- * The class-A reject. Error shape mirrors the API Mapper Library-First-Guard:
547
- * the human-readable instruction rides INSIDE `error` (the only leg some MCP
548
- * plumbing surfaces), with a machine-readable `error_code` alongside it.
549
- */
550
- function deadPropRejection(deadProps, elementPath, masterSwitchStatedOff) {
551
- const list = deadProps.map((p) => `\`${p}\``).join(', ');
552
- const why = masterSwitchStatedOff
553
- ? 'this write leaves `header_transparent` off'
554
- : 'this write does not set `header_transparent` (a full-replace update drops every prop it omits, '
555
- + 'so the master switch ends up off)';
556
- return jsonResult({
557
- error: `Dead transparent-header prop(s) ${list} at \`${elementPath}\`: ${why}, and YOOtheme reads `
558
- + `${list} ONLY while \`header_transparent\` is true. The write would store configuration `
559
- + `that looks applied and never is — no error, no builder warning. Either set `
560
- + `\`header_transparent: true\` DELIBERATELY in the same call (a transparent header is the `
561
- + `exception, not a default — leave it off when in doubt), or drop ${list} from the props. `
562
- + `To inspect or repair the transparent header properly use `
563
- + `yootheme_builder_header_transparency_set({ template_id: "<id>" }) — it targets the FIRST `
564
- + `section by itself (YOOtheme reads these props there only) and dry-runs by default.`,
565
- error_code: 'header_transparent_dead_prop',
566
- context: {
567
- element_path: elementPath,
568
- dead_prop_keys: [...deadProps],
569
- master_switch: HEADER_TRANSPARENT_PROP,
570
- },
571
- hint: 'Re-send without the dead prop(s), or add `header_transparent: true` when the customer '
572
- + 'actually asked for a transparent header. Prefer '
573
- + 'yootheme_builder_header_transparency_set (advanced gateway) — it also checks the '
574
- + 'first-section rule and the theme\'s own --uk-inverse declaration, neither of which is '
575
- + 'readable from here.',
576
- }, { isError: true });
577
- }
578
- /**
579
- * Guard a props write against the transparent-header failure modes.
580
- *
581
- * Pure: takes the write's own payload (plus its merge/unset semantics) and
582
- * returns a rejection, the props to send, and any warnings. No I/O — it never
583
- * needs the element type either, because the three props are namespaced and
584
- * exist on `section` alone.
585
- */
586
- export function guardHeaderTransparencyWrite(opts) {
587
- const { props, elementPath } = opts;
588
- const pass = { rejection: null, props, warnings: [] };
589
- if (props === undefined || props === null || typeof props !== 'object')
590
- return pass;
591
- const touchesHeader = Object.prototype.hasOwnProperty.call(props, HEADER_TRANSPARENT_PROP)
592
- || Object.prototype.hasOwnProperty.call(props, HEADER_TRANSPARENT_TEXT_COLOR_PROP)
593
- || Object.prototype.hasOwnProperty.call(props, HEADER_TRANSPARENT_NOPLACEHOLDER_PROP);
594
- // A write that mentions none of the three props changes nothing about the
595
- // transparent header — leave it completely alone (same props reference).
596
- if (!touchesHeader)
597
- return pass;
598
- const replaces = opts.merge !== true;
599
- const unset = new Set(opts.unset ?? []);
600
- const transparent = resolveAfterWrite(props, HEADER_TRANSPARENT_PROP, unset, replaces, isHeaderTruthyFlag, false);
601
- const textColor = resolveAfterWrite(props, HEADER_TRANSPARENT_TEXT_COLOR_PROP, unset, replaces, readHeaderTextColor, '');
602
- const noPlaceholder = resolveAfterWrite(props, HEADER_TRANSPARENT_NOPLACEHOLDER_PROP, unset, replaces, isHeaderTruthyFlag, false);
603
- // ── Class A (a1): a prop YOOtheme will never read ──────────────────
604
- if (transparent === false) {
605
- const dead = [];
606
- if (textColor !== 'unknown' && textColor !== '')
607
- dead.push(HEADER_TRANSPARENT_TEXT_COLOR_PROP);
608
- if (noPlaceholder === true)
609
- dead.push(HEADER_TRANSPARENT_NOPLACEHOLDER_PROP);
610
- if (dead.length > 0) {
611
- return {
612
- rejection: deadPropRejection(dead, elementPath, Object.prototype.hasOwnProperty.call(props, HEADER_TRANSPARENT_PROP)
613
- || unset.has(HEADER_TRANSPARENT_PROP)),
614
- props,
615
- warnings: [],
616
- };
617
- }
618
- }
619
- // Everything below only applies once the header IS transparent afterwards.
620
- if (transparent !== true)
621
- return pass;
622
- const warnings = [];
623
- let outProps = props;
624
- // ── The safe default: '' (the theme's own), never 'light' ─────────
625
- const statesColour = Object.prototype.hasOwnProperty.call(props, HEADER_TRANSPARENT_TEXT_COLOR_PROP);
626
- if (!statesColour) {
627
- if (textColor === 'unknown') {
628
- // merge:true — the stored colour is unreadable from here. Seeding
629
- // '' would CLOBBER a value that was set deliberately (or measured
630
- // over a hero medium), so say so instead of acting on a guess.
631
- warnings.push({
632
- code: 'header_transparent_text_color_unstated',
633
- message: 'This merge update turns the transparent header ON without stating '
634
- + '`header_transparent_text_color`, and the stored value cannot be read from here — so '
635
- + 'nothing was seeded. State the colour explicitly (`""` = the theme default; `"light"` '
636
- + 'is WHITE navigation text and is never a safe guess), or use '
637
- + 'yootheme_builder_header_transparency_set, which reads the theme\'s own --uk-inverse '
638
- + 'declaration.',
639
- });
640
- }
641
- else if (!unset.has(HEADER_TRANSPARENT_TEXT_COLOR_PROP)) {
642
- // Full replace: the resulting props would carry no colour at all.
643
- // Record the theme default EXPLICITLY so the layout states the
644
- // deliberate choice — and so nothing downstream fills in 'light'.
645
- outProps = { ...props, [HEADER_TRANSPARENT_TEXT_COLOR_PROP]: '' };
646
- warnings.push({
647
- code: 'header_transparent_text_color_defaulted',
648
- message: 'The transparent header was turned on without a colour, so '
649
- + '`header_transparent_text_color` was written as `""` — the theme\'s own default for '
650
- + 'this section style. It is never defaulted to `"light"`, which is WHITE navigation '
651
- + 'text and recolours even over a flat theme background. To choose deliberately, read '
652
- + 'the theme declaration via yootheme_builder_header_transparency_set (dry run).',
653
- });
654
- }
655
- }
656
- // ── Class C: a medium hides the background the theme describes ────
657
- if (resolveMediaBackdrop(props, unset, replaces) === true) {
658
- warnings.push({
659
- code: 'header_contrast_unverifiable_over_media',
660
- message: 'This section has an image or video behind the transparent header. The medium covers '
661
- + 'exactly the background the theme\'s --uk-inverse declaration describes, so NO navigation '
662
- + 'colour is verifiable from the props here and none is safer than another (not even `""`). '
663
- + 'Nothing was changed or recommended: LOOK at the rendered page at the customer\'s '
664
- + 'viewport — unscrolled AND after scrolling, because a sticky header drops its '
665
- + 'transparency — and set what you SAW.',
666
- });
667
- }
668
- return { rejection: null, props: outProps, warnings };
669
- }
670
- /**
671
- * Merge client-side warnings into a REST response body so a successful write
672
- * still carries them. A non-object body (or an empty warning list) is returned
673
- * untouched, so nothing that has no place to put them is reshaped.
674
- */
675
- export function withHeaderTransparencyWarnings(data, warnings) {
676
- if (warnings.length === 0)
677
- return data;
678
- if (data === null || typeof data !== 'object' || Array.isArray(data)) {
679
- return { data, warnings: [...warnings] };
680
- }
681
- const existing = data.warnings;
682
- const merged = Array.isArray(existing) ? [...existing, ...warnings] : [...warnings];
683
- return { ...data, warnings: merged };
684
- }
685
- //# sourceMappingURL=schema-validation.js.map