@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
package/dist/tools/inspection.js
CHANGED
|
@@ -1,50 +1,120 @@
|
|
|
1
|
-
|
|
2
|
-
* Element-type inspection tools.
|
|
3
|
-
*
|
|
4
|
-
* yootheme_builder_element_types_list
|
|
5
|
-
* → catalogue of available element types (tableResult — Wave G.2)
|
|
6
|
-
* yootheme_builder_element_type_get_schema
|
|
7
|
-
* → field schema for a single element type (detailResult — Wave G.2)
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
import { detailResult, tableResult } from '@getimo/mcp-toolkit';
|
|
1
|
+
import { detailResult } from '@getimo/mcp-toolkit';
|
|
12
2
|
import { z } from 'zod';
|
|
13
3
|
import { BIND_VIA_GATEWAY_EXAMPLE } from './bind-guidance.js';
|
|
14
4
|
import { TYPES_COMPACT_COLUMNS, TYPES_TABLE_COLUMNS, buildTypeSchemaDetail, flattenTypesPayload, mapTypeRow, } from './format/inspection-format.js';
|
|
15
|
-
import { SITE_ID_SCHEMA } from './shared-schemas.js';
|
|
5
|
+
import { INCLUDE_META_SCHEMA, SITE_ID_SCHEMA } from './shared-schemas.js';
|
|
6
|
+
import { strictInputObject } from './strict-input.js';
|
|
16
7
|
import { resolveSiteOrError } from './pool-resolve-helper.js';
|
|
17
8
|
import { defineTool, errorResult, readOnly, structuredResult, withSiteMeta, } from './tool-builder.js';
|
|
18
|
-
import { DEFAULT_FIELDS_TYPES_LIST, FIELDS, MAX_CHARS, applyMaxChars, projectFields, projectedFieldsEcho, projectionFeedback,
|
|
9
|
+
import { DEFAULT_FIELDS_TYPES_LIST, FIELDS, FIELD_NAMES, FIELD_NAME_CONTAINS, FIELD_COVERAGE_SCHEMA, MAX_CHARS, applyMaxChars, projectFields, prependTextBlock, projectedFieldsEcho, projectionCoverageBlock, projectionDetailBlock, projectionFeedback, projectionInlineNote, projectionNoteText, selectDescriptorsByName, } from './sparse-fields.js';
|
|
19
10
|
import { ITEM_CHILDREN_OF_CONTAINER } from './multi-items/item-container-map.js';
|
|
20
|
-
|
|
11
|
+
import { budgetedTableResult } from "./budgeted-table.js";
|
|
12
|
+
import { RESPONSE_BUDGET } from "./response-budget.js";
|
|
21
13
|
const TYPES_LIST_OUTPUT_SCHEMA = z.object({
|
|
22
14
|
items: z.array(z.record(z.string(), z.unknown())),
|
|
23
15
|
total: z.number(),
|
|
24
16
|
projected_fields: z.array(z.string()).optional(),
|
|
25
|
-
// F-004 fix (2026-05-25 exhaustive audit): see sparse-fields::projectionFeedback.
|
|
26
17
|
available_fields: z.array(z.string()).optional(),
|
|
18
|
+
available_fields_by_kind: z.record(z.string(), z.array(z.string())).optional(),
|
|
27
19
|
unknown_fields: z.array(z.string()).optional(),
|
|
28
|
-
|
|
29
|
-
// structuredContent — hosts that surface structuredContent (not the
|
|
30
|
-
// text leg) to the model would otherwise never see it.
|
|
20
|
+
field_coverage: FIELD_COVERAGE_SCHEMA,
|
|
31
21
|
projection_warning: z.string().optional(),
|
|
32
22
|
});
|
|
33
23
|
const TYPE_SCHEMA_OUTPUT_SCHEMA = z.object({
|
|
34
|
-
name: z.string(),
|
|
24
|
+
name: z.string().optional(),
|
|
25
|
+
element_types: z
|
|
26
|
+
.array(z.object({
|
|
27
|
+
name: z.string(),
|
|
28
|
+
label: z.string().optional(),
|
|
29
|
+
requires_child_type: z.string().optional(),
|
|
30
|
+
origin: z.string().optional(),
|
|
31
|
+
has_children: z.boolean().optional(),
|
|
32
|
+
}))
|
|
33
|
+
.optional(),
|
|
34
|
+
total: z.number().optional(),
|
|
35
35
|
label: z.string().optional(),
|
|
36
36
|
origin: z.string().optional(),
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
has_children: z.boolean().optional(),
|
|
38
|
+
semantic_role: z.string().nullable().optional(),
|
|
39
|
+
available_fields: z.array(z.string()).optional(),
|
|
40
|
+
available_fields_by_kind: z.record(z.string(), z.array(z.string())).optional(),
|
|
41
|
+
unknown_fields: z.array(z.string()).optional(),
|
|
42
|
+
field_coverage: FIELD_COVERAGE_SCHEMA,
|
|
43
|
+
projection_warning: z.string().optional(),
|
|
44
|
+
projected_fields: z.array(z.string()).optional(),
|
|
40
45
|
fields: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
groups: z
|
|
47
|
+
.array(z.object({
|
|
48
|
+
name: z.string().describe('Matches a field descriptor\'s `group`.'),
|
|
49
|
+
description: z
|
|
50
|
+
.string()
|
|
51
|
+
.describe("The fieldset group's own sentence, as YOOtheme ships it."),
|
|
52
|
+
}))
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('Fieldset groups that carry a rule of their own, stated once each. ' +
|
|
55
|
+
'YOOtheme parks the semantics of a whole class of fields on the ' +
|
|
56
|
+
'GROUP rather than on the field — grid.image_width/image_height ' +
|
|
57
|
+
'declare no description and the crop rule lives here — so a ' +
|
|
58
|
+
'descriptor with no `description` is not undocumented, you are ' +
|
|
59
|
+
'reading at the wrong level. Join on the field\'s `group`. ' +
|
|
60
|
+
'Narrows with field_names/name_contains.'),
|
|
61
|
+
renders_only_if: z
|
|
62
|
+
.array(z.array(z.string()))
|
|
63
|
+
.optional()
|
|
64
|
+
.describe('ALL groups need >=1 non-empty member or YOOtheme DELETES this element at ' +
|
|
65
|
+
'render (no error; an emptied parent then collapses too). Applies to ' +
|
|
66
|
+
'PRESENT-but-empty props; for ABSENT ones see placeholder_fallback. A ' +
|
|
67
|
+
"member may be `a&&b`; `parent.` prefixes the container's prop."),
|
|
68
|
+
placeholder_fallback: z
|
|
69
|
+
.object({ suppressed_by: z.array(z.string()), fills: z.array(z.string()) })
|
|
70
|
+
.optional()
|
|
71
|
+
.describe('Why renders_only_if often does NOT delete: leave every suppressed_by key ' +
|
|
72
|
+
"UNSET and YOOtheme merges its placeholder (prerender, front end too), so " +
|
|
73
|
+
'fills render as lorem ipsum/"Title"/a placeholder image on the LIVE page. ' +
|
|
74
|
+
'Write any suppressed_by key, even "", to suppress the merge and get deletion.'),
|
|
75
|
+
blanked_by_parent: z
|
|
76
|
+
.record(z.string(), z.array(z.string()))
|
|
77
|
+
.optional()
|
|
78
|
+
.describe('Container show_* flag -> props of THIS element the RENDER blanks (not ' +
|
|
79
|
+
'CSS-hide). Blanks the OUTPUT only: your stored value survives and the ' +
|
|
80
|
+
'flag is reversible. Runs before renders_only_if, so clearing one can ' +
|
|
81
|
+
'drop the whole item — intersect the two to see which.'),
|
|
82
|
+
media_autoswap: z
|
|
83
|
+
.object({
|
|
84
|
+
precedence: z.array(z.string()),
|
|
85
|
+
sniffed: z.array(z.string()).optional(),
|
|
86
|
+
clears_on_conflict: z.array(z.string()).optional(),
|
|
87
|
+
})
|
|
88
|
+
.optional()
|
|
89
|
+
.describe('Image/video collision, per element — not uniform across YOOtheme. ' +
|
|
90
|
+
'precedence: first non-empty renders. sniffed: URL-sniffed, value MOVED ' +
|
|
91
|
+
'between image/video. clears_on_conflict: prop SET FALSE, not just skipped.'),
|
|
92
|
+
rules: z
|
|
93
|
+
.array(z.string())
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Shared render-rule ids — resolve each in `rule_notes`. Each marks a case ' +
|
|
96
|
+
'where the write succeeds and the render differs; read before writing ' +
|
|
97
|
+
'that prop.'),
|
|
98
|
+
rule_notes: z
|
|
99
|
+
.record(z.string(), z.string())
|
|
100
|
+
.optional()
|
|
101
|
+
.describe('id -> rule text, for the ids this response references. Element-level ids ' +
|
|
102
|
+
'always resolve; a field-level one only while its field is returned.'),
|
|
103
|
+
claims_verified_on: z
|
|
104
|
+
.object({
|
|
105
|
+
build: z.string(),
|
|
106
|
+
here: z.string().nullable(),
|
|
107
|
+
status: z.enum(['match', 'differs', 'unknown']),
|
|
108
|
+
keys: z.array(z.string()),
|
|
109
|
+
})
|
|
110
|
+
.optional()
|
|
111
|
+
.describe('Build the keys named in `keys` were READ on vs this site — those ' +
|
|
112
|
+
'ONLY, never the whole response. "differs"/"unknown" = NOT ' +
|
|
113
|
+
're-checked here, so they are reports, not facts, and no_effect ' +
|
|
114
|
+
'ships as no_effect_unverified.'),
|
|
115
|
+
field_count: z.number().optional(),
|
|
116
|
+
returned_count: z.number().optional(),
|
|
117
|
+
next_step: z.string().optional(),
|
|
48
118
|
binding_contract: z
|
|
49
119
|
.object({
|
|
50
120
|
kind: z.enum(['container', 'item', 'leaf', 'none']),
|
|
@@ -52,67 +122,40 @@ const TYPE_SCHEMA_OUTPUT_SCHEMA = z.object({
|
|
|
52
122
|
child_type: z.string().optional(),
|
|
53
123
|
child_required: z.boolean().optional(),
|
|
54
124
|
binding_target_props: z.array(z.string()).optional(),
|
|
55
|
-
// F151 (2026-06-11): the single canonical text prop for this
|
|
56
|
-
// element type (e.g. grid_item → "title", list_item/headline →
|
|
57
|
-
// "content"). Names the right key so the agent does not guess.
|
|
58
125
|
canonical_text_prop: z.string().optional(),
|
|
59
|
-
// F143 (2026-06-11): map_item's single combined "lat,lng"
|
|
60
|
-
// location prop contract — present only for location-bearing
|
|
61
|
-
// item types.
|
|
62
126
|
location_prop: z
|
|
63
127
|
.object({ prop: z.string(), format: z.string() })
|
|
64
128
|
.optional(),
|
|
65
129
|
minimal_layout: z.record(z.string(), z.unknown()).optional(),
|
|
66
130
|
set_via_tool: z.string().optional(),
|
|
67
131
|
discover_source_tool: z.string().optional(),
|
|
68
|
-
// Wave-7 (2026-05-29): explicit anti-patterns. Cold-AI #5 misread
|
|
69
|
-
// the minimal_layout and produced `props.source` nesting instead of
|
|
70
|
-
// sibling — YT-Pro silently ignored the binding and rendered 0 rows.
|
|
71
132
|
do_not: z.array(z.string()).optional(),
|
|
72
133
|
})
|
|
73
134
|
.optional(),
|
|
135
|
+
})
|
|
136
|
+
.superRefine((v, ctx) => {
|
|
137
|
+
if (v.element_types !== undefined)
|
|
138
|
+
return;
|
|
139
|
+
for (const key of ['name', 'field_count', 'returned_count']) {
|
|
140
|
+
if (v[key] === undefined) {
|
|
141
|
+
ctx.addIssue({
|
|
142
|
+
code: 'custom',
|
|
143
|
+
path: [key],
|
|
144
|
+
message: `${key} is required when a single element type was read`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
74
148
|
});
|
|
75
|
-
// Wave-6 R3 (2026-05-29): Binding-contract derivation.
|
|
76
|
-
//
|
|
77
|
-
// Container types are the Multi-Items hosts — when bound to a source they
|
|
78
|
-
// clone their *_item child once per source row. The binding LIVES on the
|
|
79
|
-
// child item, not the container.
|
|
80
|
-
//
|
|
81
|
-
// Wave-13 A5 (2026-05-31): the canonical 16-pair map lives in
|
|
82
|
-
// `multi-items/item-container-map.ts` (TypeScript mirror of the PHP
|
|
83
|
-
// `ItemContainerMap` constant, pinned via Joomla/WP cross-platform tests).
|
|
84
|
-
// Re-aliased here as CONTAINER_TO_ITEM_TYPE so the binding-contract derivation
|
|
85
|
-
// always agrees with the rest of the surface. The previous inline 10-entry
|
|
86
|
-
// map had drifted (missing button/description_list/nav/popover/social/subnav/
|
|
87
|
-
// table; routed `slider`/`panel`/`overlay` to non-existent item types).
|
|
88
|
-
//
|
|
89
|
-
// Leaf types (headline, text, image) cannot host Multi-Items but they DO
|
|
90
|
-
// accept per-prop source bindings (e.g. `content` of a headline maps to a
|
|
91
|
-
// single source field). We surface the canonical prop keys below so the
|
|
92
|
-
// agent knows which keys to bind without guessing.
|
|
93
149
|
const CONTAINER_TO_ITEM_TYPE = ITEM_CHILDREN_OF_CONTAINER;
|
|
94
150
|
const ITEM_TO_CONTAINER_TYPE = Object.fromEntries(Object.entries(CONTAINER_TO_ITEM_TYPE).map(([k, v]) => [v, k]));
|
|
95
|
-
/** Canonical binding-target props per leaf type. Empty array → leaf type has no clear single-field binding. */
|
|
96
151
|
const LEAF_BINDING_TARGETS = {
|
|
97
|
-
headline: ['content'
|
|
152
|
+
headline: ['content'],
|
|
98
153
|
text: ['content'],
|
|
99
154
|
button: ['content', 'link'],
|
|
100
155
|
image: ['image'],
|
|
101
156
|
icon: ['icon'],
|
|
102
|
-
|
|
103
|
-
subtitle: ['content'],
|
|
157
|
+
quotation: ['content'],
|
|
104
158
|
};
|
|
105
|
-
// F151 (2026-06-11): the SINGLE canonical text prop per element type.
|
|
106
|
-
//
|
|
107
|
-
// Prop names diverge across types — a `grid_item` carries its primary
|
|
108
|
-
// text on `title`, while `list_item`/`headline`/`text` carry it on
|
|
109
|
-
// `content`. A cold agent that guesses one key consistently writes a
|
|
110
|
-
// DEAD prop (silent placeholder, no error). The F129 bind-time validator
|
|
111
|
-
// (Wave 4) already WARNS on unknown prop keys after the fact; this map is
|
|
112
|
-
// the SCHEMA side — it names the right key UP FRONT so the agent never
|
|
113
|
-
// guesses. Only types with an unambiguous single text carrier are listed;
|
|
114
|
-
// types with no clear single text prop are simply omitted (no
|
|
115
|
-
// `canonical_text_prop` emitted).
|
|
116
159
|
const CANONICAL_TEXT_PROP = {
|
|
117
160
|
grid_item: 'title',
|
|
118
161
|
list_item: 'content',
|
|
@@ -120,21 +163,13 @@ const CANONICAL_TEXT_PROP = {
|
|
|
120
163
|
slideshow_item: 'title',
|
|
121
164
|
switcher_item: 'title',
|
|
122
165
|
gallery_item: 'title',
|
|
123
|
-
|
|
166
|
+
'panel-slider_item': 'title',
|
|
124
167
|
headline: 'content',
|
|
125
168
|
text: 'content',
|
|
126
|
-
|
|
127
|
-
subtitle: 'content',
|
|
169
|
+
quotation: 'content',
|
|
128
170
|
button: 'content',
|
|
129
171
|
button_item: 'content',
|
|
130
172
|
};
|
|
131
|
-
// F143 (2026-06-11): `map_item` renders a marker off a SINGLE `location`
|
|
132
|
-
// prop that wants ONE combined "lat,lng" string. Sources almost always
|
|
133
|
-
// supply latitude and longitude as two separate fields, so the natural
|
|
134
|
-
// (wrong) move is to map two props — which leaves the map with zero pins
|
|
135
|
-
// and no error. Surface the contract on the schema so the agent maps one
|
|
136
|
-
// combined value instead. See also the inspect_multi_items_binding hard
|
|
137
|
-
// warning (PHP MultiItemsInspector) for the post-bind safety net.
|
|
138
173
|
const LOCATION_PROP_CONTRACT = {
|
|
139
174
|
map_item: {
|
|
140
175
|
prop: 'location',
|
|
@@ -145,12 +180,6 @@ const LOCATION_PROP_CONTRACT = {
|
|
|
145
180
|
'location binding the map renders 0 markers.',
|
|
146
181
|
},
|
|
147
182
|
};
|
|
148
|
-
/**
|
|
149
|
-
* F151/F143 — attach the canonical single text prop and (for map_item)
|
|
150
|
-
* the location-prop contract to whatever contract `deriveBindingContract`
|
|
151
|
-
* built. Pure: returns a new object, only sets the keys when a mapping
|
|
152
|
-
* exists for `elementType`.
|
|
153
|
-
*/
|
|
154
183
|
function withPropContracts(contract, elementType) {
|
|
155
184
|
const textProp = CANONICAL_TEXT_PROP[elementType];
|
|
156
185
|
const location = LOCATION_PROP_CONTRACT[elementType];
|
|
@@ -160,6 +189,10 @@ function withPropContracts(contract, elementType) {
|
|
|
160
189
|
...(location !== undefined ? { location_prop: { ...location } } : {}),
|
|
161
190
|
};
|
|
162
191
|
}
|
|
192
|
+
const DISCOVER_SOURCE_TOOL = 'apimapper_yootheme_binding_for_flow({ flow_id }) — a tool of the SEPARATE API Mapper ' +
|
|
193
|
+
'MCP server, available only when that server is connected alongside this one. If it ' +
|
|
194
|
+
'is not, read the published source and its fields with yootheme_builder_sources_list ' +
|
|
195
|
+
'and yootheme_builder_source_get_schema instead.';
|
|
163
196
|
function deriveBindingContract(elementType) {
|
|
164
197
|
const built = deriveBindingContractBase(elementType);
|
|
165
198
|
return built !== undefined ? withPropContracts(built, elementType) : built;
|
|
@@ -180,40 +213,24 @@ function deriveBindingContractBase(elementType) {
|
|
|
180
213
|
`N siblings.`,
|
|
181
214
|
child_type: itemType,
|
|
182
215
|
child_required: true,
|
|
183
|
-
// F132 (Wave 4a): the example shows a BARE container + child —
|
|
184
|
-
// NO populated `source` block. element_add's children-guard now
|
|
185
|
-
// rejects a hand-authored `source` anywhere in the tree (it
|
|
186
|
-
// silently renders 0 rows in a stored layout), so teaching the
|
|
187
|
-
// populated shape here would hand the agent a guaranteed reject /
|
|
188
|
-
// broken render. Build this bare structure first, THEN bind the
|
|
189
|
-
// source through the dedicated bind tool — see `set_via_tool`
|
|
190
|
-
// and `do_not` below. The binding lands on the *_item as a
|
|
191
|
-
// SIBLING of `props`/`children`; the bind tool writes it at the
|
|
192
|
-
// correct nesting level so you never hand-author it.
|
|
193
216
|
minimal_layout: {
|
|
194
217
|
type: elementType,
|
|
195
|
-
// Container is bare — it never holds a `source` of its own.
|
|
196
218
|
children: [
|
|
197
219
|
{
|
|
198
220
|
type: itemType,
|
|
199
|
-
// `props` stays minimal — settings only. NO `source`
|
|
200
|
-
// here: add the structure first, then bind via
|
|
201
|
-
// yootheme_builder_element_bind_source (see set_via_tool).
|
|
202
221
|
props: {},
|
|
203
222
|
children: [],
|
|
204
223
|
},
|
|
205
224
|
],
|
|
206
|
-
// After this structure exists, bind the source:
|
|
207
225
|
bind_after_create: 'Call yootheme_builder_element_bind_source on the *_item child ' +
|
|
208
|
-
'(NOT this container). Discover the binding shape
|
|
209
|
-
'
|
|
210
|
-
'to this layout by hand.',
|
|
226
|
+
'(NOT this container). Discover the binding shape via ' +
|
|
227
|
+
'`discover_source_tool` below. Do NOT add `source` to this layout by hand.',
|
|
211
228
|
},
|
|
212
|
-
set_via_tool: 'yootheme_builder_element_bind_source({
|
|
229
|
+
set_via_tool: 'yootheme_builder_element_bind_source({ layout_id, element_path, ' +
|
|
213
230
|
'source_name, field_mappings }) — REQUIRED. The bind tool is a first-class ' +
|
|
214
231
|
'tool in tools/list (since F116); call it directly. Hand-authoring source via ' +
|
|
215
232
|
'element_update_settings is rejected (props-schema does not include source).',
|
|
216
|
-
discover_source_tool:
|
|
233
|
+
discover_source_tool: DISCOVER_SOURCE_TOOL,
|
|
217
234
|
do_not: [
|
|
218
235
|
`Do NOT set \`source\` on the container (${elementType}) itself — only on the *_item child.`,
|
|
219
236
|
`Do NOT nest \`source\` under \`props\` on the ${itemType} — it must be a sibling of props.`,
|
|
@@ -232,16 +249,16 @@ function deriveBindingContractBase(elementType) {
|
|
|
232
249
|
`— do NOT hand-author the source via element_update_settings.** The source must ` +
|
|
233
250
|
`be set on THIS element (as a SIBLING of \`props\`/\`children\`, not nested ` +
|
|
234
251
|
`inside \`props\`), not on the parent ${containerType}.`,
|
|
235
|
-
set_via_tool: 'yootheme_builder_element_bind_source({
|
|
252
|
+
set_via_tool: 'yootheme_builder_element_bind_source({ layout_id, element_path, ' +
|
|
236
253
|
'source_name, field_mappings }) — REQUIRED. The bind tool is a first-class ' +
|
|
237
254
|
'tool in tools/list (since F116); call it directly. Hand-authoring source via ' +
|
|
238
255
|
'element_update_settings is rejected (props-schema does not include source).',
|
|
239
|
-
discover_source_tool:
|
|
256
|
+
discover_source_tool: DISCOVER_SOURCE_TOOL,
|
|
240
257
|
do_not: [
|
|
241
258
|
`Do NOT set \`source\` on the parent ${containerType} — only on this ${elementType}.`,
|
|
242
259
|
'Do NOT nest `source` under `props` — it must be a sibling of `props`/`children`.',
|
|
243
260
|
'Do NOT call element_update_settings with {source} or {source_extended} — bind via ' +
|
|
244
|
-
'yootheme_builder_element_bind_source({
|
|
261
|
+
'yootheme_builder_element_bind_source({ layout_id, element_path, source_name, field_mappings }).',
|
|
245
262
|
'Do NOT add child leaves with their own per-prop `source` + `${builder.source}` placeholders.',
|
|
246
263
|
],
|
|
247
264
|
};
|
|
@@ -254,7 +271,7 @@ function deriveBindingContractBase(elementType) {
|
|
|
254
271
|
`listed in \`binding_target_props\`. NOT a Multi-Items host.`,
|
|
255
272
|
binding_target_props: [...leafTargets],
|
|
256
273
|
set_via_tool: BIND_VIA_GATEWAY_EXAMPLE,
|
|
257
|
-
discover_source_tool:
|
|
274
|
+
discover_source_tool: DISCOVER_SOURCE_TOOL,
|
|
258
275
|
};
|
|
259
276
|
}
|
|
260
277
|
return {
|
|
@@ -264,28 +281,10 @@ function deriveBindingContractBase(elementType) {
|
|
|
264
281
|
'(the bind tool is a first-class tool in tools/list since F116).',
|
|
265
282
|
};
|
|
266
283
|
}
|
|
267
|
-
/**
|
|
268
|
-
* Test-only re-export of the module-private `deriveBindingContract`. Kept
|
|
269
|
-
* out of the public tool surface; consumed by the F132 minimal_layout pin
|
|
270
|
-
* (tests/tools/inspection-minimal-layout-bare.test.ts).
|
|
271
|
-
*/
|
|
272
284
|
export const __test_deriveBindingContract = deriveBindingContract;
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
* in `fields[]` even though they are SIBLINGS of `props` on the node, not props.
|
|
276
|
-
* Writing `props.name` via element_add is silently accepted (the key IS in
|
|
277
|
-
* fields[]) but never renders as the builder label. Annotating them steers the
|
|
278
|
-
* agent to set them OUTSIDE props (a first-class `name` arg is the cross-file
|
|
279
|
-
* follow-up owned by the element_add builder schema).
|
|
280
|
-
*/
|
|
285
|
+
export const __test_CANONICAL_TEXT_PROP = CANONICAL_TEXT_PROP;
|
|
286
|
+
export const __test_LEAF_BINDING_TARGETS = LEAF_BINDING_TARGETS;
|
|
281
287
|
const NODE_LEVEL_FIELD_KEYS = new Set(['name', 'status', 'source', 'id']);
|
|
282
|
-
/**
|
|
283
|
-
* Annotate node-level descriptors (`name`/`status`/`source`/`id`) with
|
|
284
|
-
* `group:'node-level'` + a value_hint so the agent knows they live OUTSIDE
|
|
285
|
-
* `props`. Non-destructive: returns a shallow-cloned array; other descriptors
|
|
286
|
-
* pass through untouched, and a descriptor that already declares a group keeps
|
|
287
|
-
* it (we only fill an ABSENT group).
|
|
288
|
-
*/
|
|
289
288
|
function annotateNodeLevelFields(fields) {
|
|
290
289
|
return fields.map((field) => {
|
|
291
290
|
const name = field.name;
|
|
@@ -294,7 +293,7 @@ function annotateNodeLevelFields(fields) {
|
|
|
294
293
|
}
|
|
295
294
|
return {
|
|
296
295
|
...field,
|
|
297
|
-
|
|
296
|
+
group: 'node-level',
|
|
298
297
|
value_hint: typeof field.value_hint === 'string' && field.value_hint !== ''
|
|
299
298
|
? field.value_hint
|
|
300
299
|
: 'builder label / node metadata — lives OUTSIDE `props` (a SIBLING of ' +
|
|
@@ -303,29 +302,124 @@ function annotateNodeLevelFields(fields) {
|
|
|
303
302
|
};
|
|
304
303
|
});
|
|
305
304
|
}
|
|
305
|
+
function narrowGroupsToSelection(raw, selected) {
|
|
306
|
+
if (!Array.isArray(raw))
|
|
307
|
+
return undefined;
|
|
308
|
+
const groups = [];
|
|
309
|
+
for (const entry of raw) {
|
|
310
|
+
if (entry === null || typeof entry !== 'object')
|
|
311
|
+
continue;
|
|
312
|
+
const { name, description } = entry;
|
|
313
|
+
if (typeof name === 'string' && name !== '' && typeof description === 'string') {
|
|
314
|
+
groups.push({ name, description });
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (groups.length === 0)
|
|
318
|
+
return undefined;
|
|
319
|
+
if (selected === undefined)
|
|
320
|
+
return groups;
|
|
321
|
+
const named = new Set();
|
|
322
|
+
for (const field of selected) {
|
|
323
|
+
if (typeof field.group === 'string')
|
|
324
|
+
named.add(field.group);
|
|
325
|
+
}
|
|
326
|
+
return groups.filter((g) => named.has(g.name));
|
|
327
|
+
}
|
|
328
|
+
function extractRenderRules(schema) {
|
|
329
|
+
const out = {};
|
|
330
|
+
const isStringList = (v) => Array.isArray(v) && v.every((s) => typeof s === 'string');
|
|
331
|
+
const gate = schema.renders_only_if;
|
|
332
|
+
if (Array.isArray(gate) && gate.length > 0 && gate.every(isStringList)) {
|
|
333
|
+
out.renders_only_if = gate;
|
|
334
|
+
}
|
|
335
|
+
const blanked = schema.blanked_by_parent;
|
|
336
|
+
if (blanked !== null && typeof blanked === 'object' && !Array.isArray(blanked)) {
|
|
337
|
+
const map = {};
|
|
338
|
+
for (const [flag, props] of Object.entries(blanked)) {
|
|
339
|
+
if (isStringList(props))
|
|
340
|
+
map[flag] = props;
|
|
341
|
+
}
|
|
342
|
+
if (Object.keys(map).length > 0)
|
|
343
|
+
out.blanked_by_parent = map;
|
|
344
|
+
}
|
|
345
|
+
const media = schema.media_autoswap;
|
|
346
|
+
if (media !== null && typeof media === 'object' && !Array.isArray(media)) {
|
|
347
|
+
const { precedence, sniffed, clears_on_conflict } = media;
|
|
348
|
+
if (isStringList(precedence) && precedence.length > 0) {
|
|
349
|
+
out.media_autoswap = {
|
|
350
|
+
precedence,
|
|
351
|
+
...(isStringList(sniffed) ? { sniffed } : {}),
|
|
352
|
+
...(isStringList(clears_on_conflict) ? { clears_on_conflict } : {}),
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
const fallback = schema.placeholder_fallback;
|
|
357
|
+
if (fallback !== null && typeof fallback === 'object' && !Array.isArray(fallback)) {
|
|
358
|
+
const { suppressed_by, fills } = fallback;
|
|
359
|
+
if (isStringList(suppressed_by) && suppressed_by.length > 0 && isStringList(fills)) {
|
|
360
|
+
out.placeholder_fallback = { suppressed_by, fills };
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return out;
|
|
364
|
+
}
|
|
365
|
+
function extractClaimProvenance(schema) {
|
|
366
|
+
const raw = schema.claims_verified_on;
|
|
367
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
368
|
+
return undefined;
|
|
369
|
+
const { build, here, status, keys } = raw;
|
|
370
|
+
if (typeof build !== 'string' || build === '')
|
|
371
|
+
return undefined;
|
|
372
|
+
if (status !== 'match' && status !== 'differs' && status !== 'unknown')
|
|
373
|
+
return undefined;
|
|
374
|
+
if (here !== null && typeof here !== 'string')
|
|
375
|
+
return undefined;
|
|
376
|
+
if (!Array.isArray(keys) || keys.length === 0)
|
|
377
|
+
return undefined;
|
|
378
|
+
if (!keys.every((k) => typeof k === 'string'))
|
|
379
|
+
return undefined;
|
|
380
|
+
return { build, here, status, keys };
|
|
381
|
+
}
|
|
382
|
+
function extractSharedRuleNotes(schema, selected) {
|
|
383
|
+
const isStringList = (v) => Array.isArray(v) && v.every((s) => typeof s === 'string');
|
|
384
|
+
const elementRules = isStringList(schema.rules) ? schema.rules : [];
|
|
385
|
+
const referenced = new Set(elementRules);
|
|
386
|
+
for (const field of selected ?? []) {
|
|
387
|
+
const refs = field.rules;
|
|
388
|
+
if (isStringList(refs)) {
|
|
389
|
+
for (const id of refs)
|
|
390
|
+
referenced.add(id);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const rawNotes = schema.rule_notes;
|
|
394
|
+
const notes = {};
|
|
395
|
+
if (rawNotes !== null && typeof rawNotes === 'object' && !Array.isArray(rawNotes)) {
|
|
396
|
+
for (const [id, text] of Object.entries(rawNotes)) {
|
|
397
|
+
if (typeof text === 'string' && text !== '' && referenced.has(id)) {
|
|
398
|
+
notes[id] = text;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return {
|
|
403
|
+
...(elementRules.length > 0 ? { rules: elementRules } : {}),
|
|
404
|
+
...(Object.keys(notes).length > 0 ? { rule_notes: notes } : {}),
|
|
405
|
+
};
|
|
406
|
+
}
|
|
306
407
|
export function buildInspectionTools(pool) {
|
|
307
408
|
return [
|
|
308
409
|
defineTool({
|
|
309
410
|
name: 'yootheme_builder_element_types_list',
|
|
310
|
-
description: 'List element types registered on this site (built-ins + ' +
|
|
311
|
-
'
|
|
312
|
-
'
|
|
313
|
-
|
|
314
|
-
// names. F62: prop keys are per-element (grid_item `title` vs
|
|
315
|
-
// headline `content`) — call element_type_get_schema first.
|
|
316
|
-
'Keywords: "slider"/"carousel" → `slideshow`/`panel-slider`/`overlay-slider`. ' +
|
|
317
|
-
'Prop keys differ per element (grid_item `title` vs headline `content`) — ' +
|
|
318
|
-
'use element_type_get_schema before element_add/bind. Container rows carry ' +
|
|
319
|
-
'`requires_child_type` (grid→grid_item); `has_children`/`has_children_support` ' +
|
|
320
|
-
'are aliases (same value). ' +
|
|
321
|
-
'Operates on the default site unless site_id is provided.',
|
|
411
|
+
description: 'List element types registered on this site (built-ins + YOOessentials extras). ' +
|
|
412
|
+
'Names feed `element_type` of element_add. ' +
|
|
413
|
+
'"slider"/"carousel" → `slideshow`/`panel-slider`/`overlay-slider`. Prop keys ' +
|
|
414
|
+
'differ per element — use element_type_get_schema before element_add/bind.',
|
|
322
415
|
inputSchema: {
|
|
323
416
|
site_id: SITE_ID_SCHEMA,
|
|
324
417
|
fields: FIELDS,
|
|
418
|
+
include_meta: INCLUDE_META_SCHEMA,
|
|
325
419
|
},
|
|
326
420
|
outputSchema: TYPES_LIST_OUTPUT_SCHEMA,
|
|
327
421
|
annotations: readOnly('List Element Types'),
|
|
328
|
-
handler: async ({ site_id, fields }) => {
|
|
422
|
+
handler: async ({ site_id, fields, include_meta }) => {
|
|
329
423
|
const r = await resolveSiteOrError(pool, site_id);
|
|
330
424
|
if (!r.ok)
|
|
331
425
|
return r.error;
|
|
@@ -334,10 +428,6 @@ export function buildInspectionTools(pool) {
|
|
|
334
428
|
const data = await siteClient.get('/element-types');
|
|
335
429
|
const flat = flattenTypesPayload(data);
|
|
336
430
|
const mapped = flat.map(mapTypeRow);
|
|
337
|
-
// ELEMENT_WRITE-26: surface the container→item pairing per row
|
|
338
|
-
// (grid→grid_item, button→button_item) so the Multi-Items child
|
|
339
|
-
// requirement is visible WITHOUT opening each type's schema.
|
|
340
|
-
// Present only on container rows; leaf/item rows stay unchanged.
|
|
341
431
|
const mappedRecords = mapped.map((row) => {
|
|
342
432
|
const child = CONTAINER_TO_ITEM_TYPE[row.name];
|
|
343
433
|
return child !== undefined
|
|
@@ -347,14 +437,17 @@ export function buildInspectionTools(pool) {
|
|
|
347
437
|
const items = projectFields(mappedRecords, fields, DEFAULT_FIELDS_TYPES_LIST);
|
|
348
438
|
const echo = projectedFieldsEcho(fields, DEFAULT_FIELDS_TYPES_LIST);
|
|
349
439
|
const feedback = projectionFeedback(mappedRecords, fields);
|
|
350
|
-
|
|
351
|
-
const
|
|
352
|
-
const
|
|
440
|
+
const unknownNote = projectionInlineNote(feedback, fields);
|
|
441
|
+
const coverageBlock = projectionCoverageBlock(feedback?.field_coverage, feedback?.unknown_fields);
|
|
442
|
+
const projectionNote = projectionNoteText(coverageBlock, unknownNote);
|
|
443
|
+
const toolkitResult = budgetedTableResult(mappedRecords, {
|
|
353
444
|
columns: [...TYPES_TABLE_COLUMNS],
|
|
354
445
|
compactColumns: [...TYPES_COMPACT_COLUMNS],
|
|
355
|
-
header: (count) => `${String(count)} element types${unknownNote}`,
|
|
356
|
-
footer: '
|
|
357
|
-
|
|
446
|
+
header: (count) => `${coverageBlock}${String(count)} element types${unknownNote}`,
|
|
447
|
+
footer: 'Fields of a type: yootheme_builder_element_type_get_schema(' +
|
|
448
|
+
'{element_type: "<NAME column>"}).',
|
|
449
|
+
includeMeta: include_meta,
|
|
450
|
+
}, RESPONSE_BUDGET.BULKY);
|
|
358
451
|
return withSiteMeta(structuredResult(toolkitResult, {
|
|
359
452
|
items,
|
|
360
453
|
total: items.length,
|
|
@@ -362,8 +455,9 @@ export function buildInspectionTools(pool) {
|
|
|
362
455
|
...(feedback !== undefined ? {
|
|
363
456
|
available_fields: [...feedback.available_fields],
|
|
364
457
|
unknown_fields: [...feedback.unknown_fields],
|
|
365
|
-
|
|
458
|
+
field_coverage: { ...feedback.field_coverage },
|
|
366
459
|
} : {}),
|
|
460
|
+
...(projectionNote !== '' ? { projection_warning: projectionNote } : {}),
|
|
367
461
|
}), site);
|
|
368
462
|
}
|
|
369
463
|
catch (e) {
|
|
@@ -378,24 +472,9 @@ export function buildInspectionTools(pool) {
|
|
|
378
472
|
buildElementTypeGetSchemaTool(pool),
|
|
379
473
|
];
|
|
380
474
|
}
|
|
381
|
-
/**
|
|
382
|
-
* F-203 follow-up (Audit 2026-05-26 reviewer Gap 2): factored out of
|
|
383
|
-
* `buildInspectionTools` so the shape + refined ZodObject pair lives in
|
|
384
|
-
* one place. The SDK's pre-handler validator honours the top-level
|
|
385
|
-
* `.refine()` on `TYPE_SCHEMA_REFINED` and raises
|
|
386
|
-
* JSON-RPC `-32602 InvalidParams` when violated — hosts see the
|
|
387
|
-
* failure BEFORE the handler ever runs. The raw shape stays for
|
|
388
|
-
* handler-type inference (see `inputSchema`).
|
|
389
|
-
*/
|
|
390
475
|
function buildElementTypeGetSchemaTool(pool) {
|
|
391
476
|
const TYPE_SCHEMA_SHAPE = {
|
|
392
477
|
site_id: SITE_ID_SCHEMA,
|
|
393
|
-
// 1.0.1 cross-tool parameter naming alignment: every other
|
|
394
|
-
// tool in this domain uses `element_type` (element_add,
|
|
395
|
-
// element_update_settings, element_list rows). This tool
|
|
396
|
-
// originally shipped with `type_name`; we accept BOTH for
|
|
397
|
-
// backward-compatibility but the canonical key going
|
|
398
|
-
// forward is `element_type`.
|
|
399
478
|
element_type: z
|
|
400
479
|
.string()
|
|
401
480
|
.min(1)
|
|
@@ -409,148 +488,232 @@ function buildElementTypeGetSchemaTool(pool) {
|
|
|
409
488
|
.describe('DEPRECATED alias of `element_type` — use `element_type` ' +
|
|
410
489
|
'instead. Kept for 1.0.x backward-compatibility; will be ' +
|
|
411
490
|
'removed in a future major.'),
|
|
412
|
-
// ELEMENT_WRITE-17 / SOURCES_BINDING-23: this was the only read tool with
|
|
413
|
-
// NO way to bound its response (grid returns ~154 field descriptors in one
|
|
414
|
-
// blob). `fields[]` sparse-projects each field descriptor to the requested
|
|
415
|
-
// sub-keys; `max_chars` caps the text leg — mirroring the sibling reads.
|
|
416
491
|
fields: FIELDS,
|
|
492
|
+
field_names: FIELD_NAMES,
|
|
493
|
+
name_contains: FIELD_NAME_CONTAINS,
|
|
494
|
+
include_fields: z
|
|
495
|
+
.boolean()
|
|
496
|
+
.optional()
|
|
497
|
+
.describe('Return the full field-descriptor list (e.g. 147 for `grid`). ' +
|
|
498
|
+
'Default: head data only — binding_contract, minimal_layout ' +
|
|
499
|
+
'and field_count. `field_names`/`name_contains` also return ' +
|
|
500
|
+
'descriptors, narrowed to what they select.'),
|
|
417
501
|
max_chars: MAX_CHARS,
|
|
418
502
|
};
|
|
419
|
-
const TYPE_SCHEMA_REFINED =
|
|
420
|
-
.object(TYPE_SCHEMA_SHAPE)
|
|
421
|
-
.refine((args) => (typeof args.element_type === 'string' && args.element_type !== '') ||
|
|
422
|
-
(typeof args.type_name === 'string' && args.type_name !== ''), {
|
|
423
|
-
message: 'Provide either `element_type` (canonical) or ' +
|
|
424
|
-
'`type_name` (deprecated alias).',
|
|
425
|
-
});
|
|
503
|
+
const TYPE_SCHEMA_REFINED = strictInputObject('yootheme_builder_element_type_get_schema', TYPE_SCHEMA_SHAPE);
|
|
426
504
|
return defineTool({
|
|
427
505
|
name: 'yootheme_builder_element_type_get_schema',
|
|
428
|
-
description: '
|
|
429
|
-
'
|
|
430
|
-
'
|
|
431
|
-
'
|
|
432
|
-
'
|
|
433
|
-
'
|
|
434
|
-
'
|
|
435
|
-
'
|
|
506
|
+
description: 'Prop schema; read before element_add/element_update_settings: ' +
|
|
507
|
+
'undeclared keys are STORED, not refused: warns unknown_prop_keys. ' +
|
|
508
|
+
'NO element_type: lists the types. With one: head only ' +
|
|
509
|
+
'— binding_contract (containers/items) + groups[] + field_count. ' +
|
|
510
|
+
'include_fields:true adds every descriptor {name,type,label?,text?,' +
|
|
511
|
+
'description?,enum?,value_hint?,group?,no_effect?}; ' +
|
|
512
|
+
'Select descriptors: field_names/name_contains, answered with ' +
|
|
513
|
+
'field_count/returned_count. value_hint+enum first: some ' +
|
|
514
|
+
'defaults are SEO-fatal (headline.title_element→h1); checkbox = boolean ' +
|
|
515
|
+
'true/false; no_effect = read by nothing, never write it; ' +
|
|
516
|
+
'group:"runtime-accepted" = honoured at render, hidden in UI. ' +
|
|
517
|
+
'Bound size with fields[]/max_chars.',
|
|
436
518
|
inputSchema: TYPE_SCHEMA_SHAPE,
|
|
437
|
-
// F-203 follow-up: the refined object is what the SDK actually
|
|
438
|
-
// validates. The raw shape above stays for handler-type inference.
|
|
439
519
|
inputObjectSchema: TYPE_SCHEMA_REFINED,
|
|
440
520
|
outputSchema: TYPE_SCHEMA_OUTPUT_SCHEMA,
|
|
441
521
|
annotations: readOnly('Get Element Type Schema'),
|
|
442
522
|
handler: async (args) => {
|
|
443
|
-
// Defensive re-assert of the refine — should never fire when
|
|
444
|
-
// reached through the SDK (the boundary rejects with -32602
|
|
445
|
-
// first), but in-process tests bypass the SDK and call the
|
|
446
|
-
// handler directly, so the structured error path stays
|
|
447
|
-
// reachable for unit-test coverage.
|
|
448
523
|
const typeNameInput = typeof args.element_type === 'string' && args.element_type !== ''
|
|
449
524
|
? args.element_type
|
|
450
525
|
: typeof args.type_name === 'string'
|
|
451
526
|
? args.type_name
|
|
452
527
|
: '';
|
|
453
|
-
if (typeNameInput === '') {
|
|
454
|
-
return errorResult({
|
|
455
|
-
error: new Error('Provide either `element_type` (canonical) or ' +
|
|
456
|
-
'`type_name` (deprecated alias).'),
|
|
457
|
-
context: { site_id: typeof args.site_id === 'string' ? args.site_id : null },
|
|
458
|
-
hint: 'Pass `element_type` (e.g. "headline"). Use ' +
|
|
459
|
-
'yootheme_builder_element_types_list to discover valid values.',
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
const type_name = typeNameInput;
|
|
463
528
|
const r = await resolveSiteOrError(pool, typeof args.site_id === 'string' ? args.site_id : undefined);
|
|
464
529
|
if (!r.ok)
|
|
465
530
|
return r.error;
|
|
466
531
|
const { client: siteClient, site } = r;
|
|
532
|
+
if (typeNameInput === '') {
|
|
533
|
+
try {
|
|
534
|
+
const listData = await siteClient.get('/element-types');
|
|
535
|
+
const rows = flattenTypesPayload(listData).map(mapTypeRow);
|
|
536
|
+
const types = rows.map((row) => {
|
|
537
|
+
const child = CONTAINER_TO_ITEM_TYPE[row.name];
|
|
538
|
+
return {
|
|
539
|
+
name: row.name,
|
|
540
|
+
...(typeof row.label === 'string' && row.label !== ''
|
|
541
|
+
? { label: row.label }
|
|
542
|
+
: {}),
|
|
543
|
+
...(child !== undefined ? { requires_child_type: child } : {}),
|
|
544
|
+
};
|
|
545
|
+
});
|
|
546
|
+
const lines = types
|
|
547
|
+
.map((t) => t.requires_child_type !== undefined
|
|
548
|
+
? `${t.name} (needs a ${t.requires_child_type} child)`
|
|
549
|
+
: t.name)
|
|
550
|
+
.join('\n');
|
|
551
|
+
return withSiteMeta(structuredResult({
|
|
552
|
+
content: [
|
|
553
|
+
{
|
|
554
|
+
type: 'text',
|
|
555
|
+
text: `${String(types.length)} element types. Read one ` +
|
|
556
|
+
'with yootheme_builder_element_type_get_schema(' +
|
|
557
|
+
'{ element_type: "<NAME>" }) — that returns the ' +
|
|
558
|
+
'binding contract and the field COUNT; add ' +
|
|
559
|
+
'include_fields:true for the descriptors.' +
|
|
560
|
+
`\n\n${lines}`,
|
|
561
|
+
},
|
|
562
|
+
],
|
|
563
|
+
}, { element_types: types, total: types.length }), site);
|
|
564
|
+
}
|
|
565
|
+
catch (e) {
|
|
566
|
+
return withSiteMeta(errorResult({
|
|
567
|
+
error: e,
|
|
568
|
+
context: { site_id: site.id },
|
|
569
|
+
hint: 'Use yootheme_builder_health to check connectivity + auth.',
|
|
570
|
+
}), site);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
const type_name = typeNameInput;
|
|
467
574
|
try {
|
|
468
575
|
const data = await siteClient.get(`/element-types/${encodeURIComponent(type_name)}/schema`);
|
|
469
|
-
// The REST endpoint nests the type schema under `schema`:
|
|
470
|
-
// {type_name, schema:{name,label,origin,has_children,fields:[…]}}.
|
|
471
|
-
// Fall back to the top-level object for older backends.
|
|
472
576
|
const schema = data.schema !== null && typeof data.schema === 'object'
|
|
473
577
|
? data.schema
|
|
474
578
|
: data;
|
|
475
579
|
const name = typeof schema.name === 'string' ? schema.name : type_name;
|
|
476
580
|
const label = typeof schema.label === 'string' ? schema.label : undefined;
|
|
477
581
|
const origin = typeof schema.origin === 'string' ? schema.origin : undefined;
|
|
478
|
-
// `fields` is a list of {name,type,label?} field descriptors.
|
|
479
582
|
const rawFields = Array.isArray(schema.fields)
|
|
480
583
|
? schema.fields
|
|
481
584
|
: undefined;
|
|
482
|
-
// ELEMENT_WRITE-4 (part 1): the node-level keys {name,status,
|
|
483
|
-
// source,id} are siblings of `props`, NOT props — but they render
|
|
484
|
-
// in the Fields table with no group, so an agent writes props.name
|
|
485
|
-
// via element_add and it is silently accepted (name is a fields[]
|
|
486
|
-
// entry). Annotate them so the agent knows they live OUTSIDE props.
|
|
487
585
|
const annotatedFields = rawFields !== undefined ? annotateNodeLevelFields(rawFields) : undefined;
|
|
488
|
-
// ELEMENT_WRITE-17 / SOURCES_BINDING-23: project each descriptor to
|
|
489
|
-
// the requested sub-keys when `fields[]` was passed (bounds the
|
|
490
|
-
// structured leg); `max_chars` bounds the text leg below.
|
|
491
586
|
const fieldsParam = Array.isArray(args.fields) &&
|
|
492
587
|
args.fields.every((f) => typeof f === 'string')
|
|
493
588
|
? args.fields
|
|
494
589
|
: undefined;
|
|
495
590
|
const maxChars = typeof args.max_chars === 'number' ? args.max_chars : undefined;
|
|
496
|
-
const
|
|
497
|
-
|
|
591
|
+
const fieldNamesParam = Array.isArray(args.field_names) &&
|
|
592
|
+
args.field_names.every((f) => typeof f === 'string')
|
|
593
|
+
? args.field_names
|
|
498
594
|
: undefined;
|
|
595
|
+
const nameContains = typeof args.name_contains === 'string' ? args.name_contains : undefined;
|
|
596
|
+
const wantsDescriptors = args.include_fields === true ||
|
|
597
|
+
fieldsParam !== undefined ||
|
|
598
|
+
fieldNamesParam !== undefined ||
|
|
599
|
+
nameContains !== undefined;
|
|
600
|
+
const selected = annotatedFields !== undefined && wantsDescriptors
|
|
601
|
+
? selectDescriptorsByName(annotatedFields, fieldNamesParam, nameContains)
|
|
602
|
+
: undefined;
|
|
603
|
+
const fields = selected !== undefined
|
|
604
|
+
? projectFields(selected, fieldsParam, [])
|
|
605
|
+
: undefined;
|
|
606
|
+
const descriptorFeedback = projectionFeedback(selected ?? [], fieldsParam);
|
|
607
|
+
const descriptorNote = projectionNoteText(projectionCoverageBlock(descriptorFeedback?.field_coverage, descriptorFeedback?.unknown_fields), projectionInlineNote(descriptorFeedback, fieldsParam));
|
|
608
|
+
const descriptorNoteBlock = projectionDetailBlock(descriptorFeedback, fieldsParam);
|
|
499
609
|
const fieldCount = annotatedFields !== undefined ? annotatedFields.length : 0;
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
610
|
+
const returnedCount = selected !== undefined ? selected.length : 0;
|
|
611
|
+
const nextStep = wantsDescriptors
|
|
612
|
+
? undefined
|
|
613
|
+
: `yootheme_builder_element_type_get_schema({ element_type: "${name}", ` +
|
|
614
|
+
`include_fields: true }) returns all ${String(fieldCount)} field ` +
|
|
615
|
+
'descriptors; field_names/name_contains return a subset.';
|
|
616
|
+
const groups = narrowGroupsToSelection(schema.groups, selected);
|
|
617
|
+
const renderRules = extractRenderRules(schema);
|
|
618
|
+
const sharedRules = extractSharedRuleNotes(schema, selected);
|
|
619
|
+
const claimProvenance = extractClaimProvenance(schema);
|
|
503
620
|
const bindingContract = deriveBindingContract(name);
|
|
504
|
-
const toolkitResult = detailResult(
|
|
621
|
+
const toolkitResult = detailResult({
|
|
622
|
+
...buildTypeSchemaDetail({
|
|
623
|
+
name,
|
|
624
|
+
label,
|
|
625
|
+
origin,
|
|
626
|
+
fields,
|
|
627
|
+
fieldCount,
|
|
628
|
+
returnedCount,
|
|
629
|
+
...(fieldsParam !== undefined && fieldsParam.length > 0 && selected !== undefined
|
|
630
|
+
? {
|
|
631
|
+
descriptorNames: selected.map((d) => typeof d.name === 'string' ? d.name : ''),
|
|
632
|
+
projectedFields: fieldsParam,
|
|
633
|
+
}
|
|
634
|
+
: {}),
|
|
635
|
+
...(bindingContract !== undefined
|
|
636
|
+
? {
|
|
637
|
+
bindingContract: {
|
|
638
|
+
kind: bindingContract.kind,
|
|
639
|
+
pattern: bindingContract.pattern,
|
|
640
|
+
...(bindingContract.child_type !== undefined
|
|
641
|
+
? { child_type: bindingContract.child_type }
|
|
642
|
+
: {}),
|
|
643
|
+
...(bindingContract.binding_target_props !== undefined
|
|
644
|
+
? {
|
|
645
|
+
binding_target_props: bindingContract.binding_target_props,
|
|
646
|
+
}
|
|
647
|
+
: {}),
|
|
648
|
+
...(bindingContract.canonical_text_prop !== undefined
|
|
649
|
+
? {
|
|
650
|
+
canonical_text_prop: bindingContract.canonical_text_prop,
|
|
651
|
+
}
|
|
652
|
+
: {}),
|
|
653
|
+
...(bindingContract.location_prop !== undefined
|
|
654
|
+
? { location_prop: bindingContract.location_prop }
|
|
655
|
+
: {}),
|
|
656
|
+
...(bindingContract.set_via_tool !== undefined
|
|
657
|
+
? { set_via_tool: bindingContract.set_via_tool }
|
|
658
|
+
: {}),
|
|
659
|
+
...(bindingContract.discover_source_tool !== undefined
|
|
660
|
+
? {
|
|
661
|
+
discover_source_tool: bindingContract.discover_source_tool,
|
|
662
|
+
}
|
|
663
|
+
: {}),
|
|
664
|
+
...(bindingContract.do_not !== undefined
|
|
665
|
+
? { do_not: bindingContract.do_not }
|
|
666
|
+
: {}),
|
|
667
|
+
...(bindingContract.minimal_layout !== undefined
|
|
668
|
+
? { minimal_layout: bindingContract.minimal_layout }
|
|
669
|
+
: {}),
|
|
670
|
+
},
|
|
671
|
+
}
|
|
672
|
+
: {}),
|
|
673
|
+
}),
|
|
674
|
+
includeMeta: false,
|
|
675
|
+
});
|
|
676
|
+
return withSiteMeta(structuredResult(applyMaxChars(prependTextBlock(toolkitResult, descriptorNoteBlock), maxChars), {
|
|
505
677
|
name,
|
|
506
|
-
label,
|
|
507
|
-
origin,
|
|
508
|
-
|
|
509
|
-
...(bindingContract !== undefined
|
|
678
|
+
...(label !== undefined ? { label } : {}),
|
|
679
|
+
...(origin !== undefined ? { origin } : {}),
|
|
680
|
+
...(descriptorFeedback !== undefined
|
|
510
681
|
? {
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
...(bindingContract.child_type !== undefined
|
|
515
|
-
? { child_type: bindingContract.child_type }
|
|
516
|
-
: {}),
|
|
517
|
-
...(bindingContract.binding_target_props !== undefined
|
|
518
|
-
? {
|
|
519
|
-
binding_target_props: bindingContract.binding_target_props,
|
|
520
|
-
}
|
|
521
|
-
: {}),
|
|
522
|
-
...(bindingContract.canonical_text_prop !== undefined
|
|
523
|
-
? {
|
|
524
|
-
canonical_text_prop: bindingContract.canonical_text_prop,
|
|
525
|
-
}
|
|
526
|
-
: {}),
|
|
527
|
-
...(bindingContract.location_prop !== undefined
|
|
528
|
-
? { location_prop: bindingContract.location_prop }
|
|
529
|
-
: {}),
|
|
530
|
-
...(bindingContract.set_via_tool !== undefined
|
|
531
|
-
? { set_via_tool: bindingContract.set_via_tool }
|
|
532
|
-
: {}),
|
|
533
|
-
...(bindingContract.discover_source_tool !== undefined
|
|
534
|
-
? {
|
|
535
|
-
discover_source_tool: bindingContract.discover_source_tool,
|
|
536
|
-
}
|
|
537
|
-
: {}),
|
|
538
|
-
...(bindingContract.do_not !== undefined
|
|
539
|
-
? { do_not: bindingContract.do_not }
|
|
540
|
-
: {}),
|
|
541
|
-
...(bindingContract.minimal_layout !== undefined
|
|
542
|
-
? { minimal_layout: bindingContract.minimal_layout }
|
|
543
|
-
: {}),
|
|
544
|
-
},
|
|
682
|
+
available_fields: [...descriptorFeedback.available_fields],
|
|
683
|
+
unknown_fields: [...descriptorFeedback.unknown_fields],
|
|
684
|
+
field_coverage: { ...descriptorFeedback.field_coverage },
|
|
545
685
|
}
|
|
546
686
|
: {}),
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
...(
|
|
551
|
-
|
|
687
|
+
...(descriptorNote !== ''
|
|
688
|
+
? { projection_warning: descriptorNote }
|
|
689
|
+
: {}),
|
|
690
|
+
...(fieldsParam !== undefined && fieldsParam.length > 0
|
|
691
|
+
? { projected_fields: [...fieldsParam] }
|
|
692
|
+
: {}),
|
|
693
|
+
...(groups !== undefined ? { groups } : {}),
|
|
694
|
+
...(renderRules.renders_only_if !== undefined
|
|
695
|
+
? { renders_only_if: renderRules.renders_only_if }
|
|
696
|
+
: {}),
|
|
697
|
+
...(renderRules.blanked_by_parent !== undefined
|
|
698
|
+
? { blanked_by_parent: renderRules.blanked_by_parent }
|
|
699
|
+
: {}),
|
|
700
|
+
...(renderRules.media_autoswap !== undefined
|
|
701
|
+
? { media_autoswap: renderRules.media_autoswap }
|
|
702
|
+
: {}),
|
|
703
|
+
...(renderRules.placeholder_fallback !== undefined
|
|
704
|
+
? { placeholder_fallback: renderRules.placeholder_fallback }
|
|
705
|
+
: {}),
|
|
706
|
+
...(sharedRules.rules !== undefined ? { rules: sharedRules.rules } : {}),
|
|
707
|
+
...(sharedRules.rule_notes !== undefined
|
|
708
|
+
? { rule_notes: sharedRules.rule_notes }
|
|
709
|
+
: {}),
|
|
710
|
+
...(claimProvenance !== undefined
|
|
711
|
+
? { claims_verified_on: claimProvenance }
|
|
712
|
+
: {}),
|
|
552
713
|
...(fields !== undefined ? { fields } : {}),
|
|
553
714
|
field_count: fieldCount,
|
|
715
|
+
returned_count: returnedCount,
|
|
716
|
+
...(nextStep !== undefined ? { next_step: nextStep } : {}),
|
|
554
717
|
...(bindingContract !== undefined
|
|
555
718
|
? { binding_contract: bindingContract }
|
|
556
719
|
: {}),
|