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