@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,18 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `tool-builder/results` — envelope builders (`jsonResult`,
|
|
3
|
-
* `errorResult`, `structuredResult`, `confirmGuard`) + the shared
|
|
4
|
-
* `sanitizeContentItem` helper. Every payload accepted here runs
|
|
5
|
-
* through the `sanitizeSecrets` / `sanitizeForLogs` boundary so an
|
|
6
|
-
* upstream regression can never land in the LLM context. The mask
|
|
7
|
-
* is concentrated here — `define.ts` and call-sites do not re-mask.
|
|
8
|
-
*
|
|
9
|
-
* Split from `tool-builder.ts` in Round-1.5.
|
|
10
|
-
*
|
|
11
|
-
* @license MIT
|
|
12
|
-
*/
|
|
13
1
|
import { NetworkError, RestError } from '../../errors.js';
|
|
14
2
|
import { sanitizeForLogs } from '../../errors/mask.js';
|
|
15
3
|
import { sanitizeSecrets } from '../../errors/sanitize.js';
|
|
4
|
+
import { redactCredentials } from '../../errors/redact-credentials.js';
|
|
5
|
+
import { activeSiteFromResolution, withActiveSiteKey } from '../active-site.js';
|
|
16
6
|
function stringify(value) {
|
|
17
7
|
try {
|
|
18
8
|
return JSON.stringify(value, null, 2);
|
|
@@ -21,37 +11,7 @@ function stringify(value) {
|
|
|
21
11
|
return String(value);
|
|
22
12
|
}
|
|
23
13
|
}
|
|
24
|
-
/**
|
|
25
|
-
* F80 (2026-06-10): the size at/above which a JSON-document text body is
|
|
26
|
-
* split off into its own content block instead of carrying the in-band
|
|
27
|
-
* `[label @ host] ` site-prefix.
|
|
28
|
-
*
|
|
29
|
-
* Why a threshold rather than "all JSON": a tool host (Claude Code, …)
|
|
30
|
-
* spills only OVERSIZED tool results to a temp file. That file is read
|
|
31
|
-
* back with `jq`, so the bytes must be pure JSON — an in-band prefix
|
|
32
|
-
* corrupts the first line and breaks the parse (the observed F80
|
|
33
|
-
* friction on `page_get_layout`, a multi-kB layout dump). Small JSON
|
|
34
|
-
* envelopes (error results, single-element confirms, short lists) are
|
|
35
|
-
* NEVER dumped, so they keep the in-band prefix — which preserves the
|
|
36
|
-
* long-standing contract that `content[0].text` is the directly-parseable
|
|
37
|
-
* JSON for those results (141 error-matrix / handler tests depend on it).
|
|
38
|
-
*
|
|
39
|
-
* 8 kB is comfortably below any host's spill threshold yet above every
|
|
40
|
-
* small structured envelope this surface emits.
|
|
41
|
-
*/
|
|
42
14
|
export const SITE_PREFIX_JSON_SPLIT_THRESHOLD = 8 * 1024;
|
|
43
|
-
/**
|
|
44
|
-
* Detect whether a text body is a PURE JSON DOCUMENT (object or array)
|
|
45
|
-
* LARGE enough that a host might spill it to a `jq`-read temp file.
|
|
46
|
-
* Tools like `page_get_layout` emit `jsonResult(data)` whose
|
|
47
|
-
* `content[0].text` IS the JSON payload; for a large layout that text
|
|
48
|
-
* lands in the dump verbatim, so an in-band `[label @ host] ` prefix
|
|
49
|
-
* would corrupt the first bytes.
|
|
50
|
-
*
|
|
51
|
-
* Only OBJECT / ARRAY documents qualify (a bare scalar like `"hello"`
|
|
52
|
-
* stays in-band). The cheap length + first-glyph pre-checks avoid a
|
|
53
|
-
* JSON.parse on every human-readable table on the hot path.
|
|
54
|
-
*/
|
|
55
15
|
function isLargeJsonDocumentText(text) {
|
|
56
16
|
if (text.length < SITE_PREFIX_JSON_SPLIT_THRESHOLD)
|
|
57
17
|
return false;
|
|
@@ -67,13 +27,6 @@ function isLargeJsonDocumentText(text) {
|
|
|
67
27
|
return false;
|
|
68
28
|
}
|
|
69
29
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Convert any JSON-serializable value into the MCP content envelope
|
|
72
|
-
* (2-space JSON). Wave G.6.4b: every payload is deep-walked through
|
|
73
|
-
* `sanitizeSecrets` before stringification so an upstream regression
|
|
74
|
-
* (REST handler surfacing `oauth_refresh_token`, `auth_data`, etc.)
|
|
75
|
-
* can never land in the LLM context.
|
|
76
|
-
*/
|
|
77
30
|
export function jsonResult(payload, options = {}) {
|
|
78
31
|
const safe = sanitizeSecrets(payload);
|
|
79
32
|
return {
|
|
@@ -81,8 +34,27 @@ export function jsonResult(payload, options = {}) {
|
|
|
81
34
|
...(options.isError === true ? { isError: true } : {}),
|
|
82
35
|
};
|
|
83
36
|
}
|
|
84
|
-
|
|
85
|
-
|
|
37
|
+
export function rejectionOnBothLegs(payload) {
|
|
38
|
+
const safe = sanitizeSecrets(redactStrings(payload));
|
|
39
|
+
const r = jsonResult(safe, { isError: true });
|
|
40
|
+
if (safe === null || typeof safe !== 'object' || Array.isArray(safe))
|
|
41
|
+
return r;
|
|
42
|
+
return { ...r, structuredContent: safe };
|
|
43
|
+
}
|
|
44
|
+
function redactStrings(value) {
|
|
45
|
+
if (typeof value === 'string')
|
|
46
|
+
return redactCredentials(value);
|
|
47
|
+
if (Array.isArray(value))
|
|
48
|
+
return value.map(redactStrings);
|
|
49
|
+
if (value !== null && typeof value === 'object') {
|
|
50
|
+
const out = {};
|
|
51
|
+
for (const [k, v] of Object.entries(value)) {
|
|
52
|
+
out[k] = redactStrings(v);
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
86
58
|
function describeError(e) {
|
|
87
59
|
if (e instanceof RestError)
|
|
88
60
|
return { message: e.message, status: e.status, code: e.code };
|
|
@@ -92,15 +64,6 @@ function describeError(e) {
|
|
|
92
64
|
return { message: e.message };
|
|
93
65
|
return { message: stringify(e) };
|
|
94
66
|
}
|
|
95
|
-
/**
|
|
96
|
-
* G7 — pull the whitelisted nearest-path self-correction keys out of a thrown
|
|
97
|
-
* value's `RestError.body`, if present. GENERIC: the moment any plugin version
|
|
98
|
-
* emits the envelope on a 404, the Node HTTP path forwards it — mirroring the
|
|
99
|
-
* already-self-correcting in-process path. Only `RestError` carries a parsed
|
|
100
|
-
* upstream body; every other thrown value yields an empty envelope. The four
|
|
101
|
-
* keys are individually type-guarded (a `null` `nearest_path` is preserved as a
|
|
102
|
-
* legitimate "no candidate" signal); unknown keys never leak through.
|
|
103
|
-
*/
|
|
104
67
|
function nearestPathFromError(e) {
|
|
105
68
|
if (!(e instanceof RestError))
|
|
106
69
|
return {};
|
|
@@ -119,27 +82,10 @@ function nearestPathFromError(e) {
|
|
|
119
82
|
if (Array.isArray(b.available_paths) && b.available_paths.every((p) => typeof p === 'string')) {
|
|
120
83
|
out.available_paths = b.available_paths;
|
|
121
84
|
}
|
|
122
|
-
// N4: the canonical id-form a bare-numeric not-found should re-address with.
|
|
123
85
|
if (typeof b.expected_id_form === 'string')
|
|
124
86
|
out.expected_id_form = b.expected_id_form;
|
|
125
87
|
return out;
|
|
126
88
|
}
|
|
127
|
-
/**
|
|
128
|
-
* ELEMENT_WRITE-2 — pull the CURRENT resource ETag out of a 412 RestError so a
|
|
129
|
-
* stale-ETag write can be retried MECHANICALLY (copy `current_etag` from the
|
|
130
|
-
* error, retry) instead of forcing an extra `get_etag` round-trip.
|
|
131
|
-
*
|
|
132
|
-
* A 412 (precondition-failed) write carries the live ETag in TWO possible
|
|
133
|
-
* shapes: a structured `body.data.current_etag` (the canonical field a PHP host
|
|
134
|
-
* emits) OR, on a host that only put it in prose, the message
|
|
135
|
-
* `…does not match current resource ETag (…-r346)`. Both are checked; the
|
|
136
|
-
* structured field wins. Returns the empty string sentinel `undefined` when the
|
|
137
|
-
* error is not a 412 or carries no recoverable ETag, so the caller spreads
|
|
138
|
-
* nothing on the happy path.
|
|
139
|
-
*
|
|
140
|
-
* Only `RestError` at status 412 is considered — a non-412 message that happens
|
|
141
|
-
* to contain the phrase is never mined (it would surface a misleading value).
|
|
142
|
-
*/
|
|
143
89
|
function currentEtagFromError(e) {
|
|
144
90
|
if (!(e instanceof RestError) || e.status !== 412)
|
|
145
91
|
return {};
|
|
@@ -163,20 +109,7 @@ function currentEtagFromError(e) {
|
|
|
163
109
|
}
|
|
164
110
|
return {};
|
|
165
111
|
}
|
|
166
|
-
/**
|
|
167
|
-
* MM-2 / BUG-2 — the transport-side bound on a forwarded candidate list.
|
|
168
|
-
*
|
|
169
|
-
* Mirrors PHP's `AMBIGUITY_CANDIDATE_CAP = 10`, which BOTH producers already
|
|
170
|
-
* apply before the list ever leaves the host, so in practice this is never
|
|
171
|
-
* reached. It exists so a newer (or hostile) host cannot blow the error
|
|
172
|
-
* envelope — and when it IS reached, `candidates_truncated` says so, because a
|
|
173
|
-
* silently-shortened chooser would let an agent conclude it had seen every
|
|
174
|
-
* option after trying the tenth.
|
|
175
|
-
*/
|
|
176
112
|
const CANDIDATE_FORWARD_CAP = 10;
|
|
177
|
-
/** Type-guard ONE candidate row. All three members are load-bearing: `id` is
|
|
178
|
-
* what the retry addresses, `label` is what the user is shown, `type` is how
|
|
179
|
-
* the two are told apart in a mixed page/template/category list. */
|
|
180
113
|
function isAmbiguityCandidate(value) {
|
|
181
114
|
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
182
115
|
return false;
|
|
@@ -186,28 +119,6 @@ function isAmbiguityCandidate(value) {
|
|
|
186
119
|
&& typeof row.label === 'string'
|
|
187
120
|
&& typeof row.type === 'string');
|
|
188
121
|
}
|
|
189
|
-
/**
|
|
190
|
-
* MM-2 / BUG-2 — pull the AMBIGUITY CANDIDATE LIST out of a thrown value's
|
|
191
|
-
* `RestError.body`.
|
|
192
|
-
*
|
|
193
|
-
* `title_ambiguous` (both platforms) and `blog_ambiguous` (Joomla) answer 409
|
|
194
|
-
* with a list of distinct, addressable pages, and the MESSAGE they carry tells
|
|
195
|
-
* the agent to pick one of them. Both in-process handlers already forward it
|
|
196
|
-
* (`McpPagesResolveHandler` / `McpPagesAuditHandler`); without this the Node
|
|
197
|
-
* transport handed the agent prose promising a list it never received — the
|
|
198
|
-
* same tool answering the same site differently per transport.
|
|
199
|
-
*
|
|
200
|
-
* `data.candidates` is checked FIRST because it is where both CMSes actually
|
|
201
|
-
* put it: WordPress via `WP_Error`'s data bag
|
|
202
|
-
* (`PagesController::targetErrorResponse()`) and Joomla via
|
|
203
|
-
* `JoomlaJsonResponse::error()`, which merges its `$data` into the SAME
|
|
204
|
-
* WP-compatible `data:{…}` envelope. The top-level fallback costs one lookup
|
|
205
|
-
* and covers any flatter envelope a future host emits.
|
|
206
|
-
*
|
|
207
|
-
* ALL-OR-NOTHING on shape: a list the agent renders as a chooser has to be
|
|
208
|
-
* trustworthy, so one unusable row drops the whole list rather than presenting
|
|
209
|
-
* a chooser with a dead option in it (the prose message still names the count).
|
|
210
|
-
*/
|
|
211
122
|
function candidatesFromError(e) {
|
|
212
123
|
if (!(e instanceof RestError))
|
|
213
124
|
return {};
|
|
@@ -227,74 +138,254 @@ function candidatesFromError(e) {
|
|
|
227
138
|
? { candidates: raw.slice(0, CANDIDATE_FORWARD_CAP), candidates_truncated: true }
|
|
228
139
|
: { candidates: [...raw] };
|
|
229
140
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
141
|
+
function isPlacementWay(value) {
|
|
142
|
+
if (value === null || typeof value !== 'object')
|
|
143
|
+
return false;
|
|
144
|
+
const v = value;
|
|
145
|
+
return (typeof v.placement === 'string'
|
|
146
|
+
&& typeof v.reach === 'string'
|
|
147
|
+
&& typeof v.summary === 'string'
|
|
148
|
+
&& (v.can_limit_to_pages === undefined || typeof v.can_limit_to_pages === 'boolean'));
|
|
149
|
+
}
|
|
150
|
+
function waysFromError(e) {
|
|
151
|
+
if (!(e instanceof RestError))
|
|
152
|
+
return {};
|
|
153
|
+
const body = e.body;
|
|
154
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
155
|
+
return {};
|
|
156
|
+
const b = body;
|
|
157
|
+
const nested = b.data;
|
|
158
|
+
const raw = nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
159
|
+
? (nested.ways ?? b.ways)
|
|
160
|
+
: b.ways;
|
|
161
|
+
if (!Array.isArray(raw) || raw.length === 0)
|
|
162
|
+
return {};
|
|
163
|
+
if (!raw.every(isPlacementWay))
|
|
164
|
+
return {};
|
|
165
|
+
return { ways: raw };
|
|
166
|
+
}
|
|
167
|
+
function notesFromError(e) {
|
|
168
|
+
if (!(e instanceof RestError))
|
|
169
|
+
return {};
|
|
170
|
+
const body = e.body;
|
|
171
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
172
|
+
return {};
|
|
173
|
+
const b = body;
|
|
174
|
+
const nested = b.data;
|
|
175
|
+
const raw = nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
176
|
+
? (nested.notes ?? b.notes)
|
|
177
|
+
: b.notes;
|
|
178
|
+
if (!isStringArray(raw) || raw.length === 0)
|
|
179
|
+
return {};
|
|
180
|
+
return { notes: [...raw] };
|
|
181
|
+
}
|
|
182
|
+
function isRemovalIntent(value) {
|
|
183
|
+
if (value === null || typeof value !== 'object')
|
|
184
|
+
return false;
|
|
185
|
+
const v = value;
|
|
186
|
+
return (typeof v.intent === 'string'
|
|
187
|
+
&& typeof v.effect === 'string'
|
|
188
|
+
&& typeof v.reversible === 'boolean'
|
|
189
|
+
&& typeof v.native_name === 'string'
|
|
190
|
+
&& (v.restore_call === undefined
|
|
191
|
+
|| v.restore_call === null
|
|
192
|
+
|| typeof v.restore_call === 'string'));
|
|
193
|
+
}
|
|
194
|
+
function intentsFromError(e) {
|
|
195
|
+
if (!(e instanceof RestError))
|
|
196
|
+
return {};
|
|
197
|
+
const body = e.body;
|
|
198
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
199
|
+
return {};
|
|
200
|
+
const b = body;
|
|
201
|
+
const nested = b.data;
|
|
202
|
+
const raw = nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
203
|
+
? (nested.intents ?? b.intents)
|
|
204
|
+
: b.intents;
|
|
205
|
+
if (!Array.isArray(raw) || raw.length === 0)
|
|
206
|
+
return {};
|
|
207
|
+
if (!raw.every(isRemovalIntent))
|
|
208
|
+
return {};
|
|
209
|
+
return { intents: [...raw] };
|
|
210
|
+
}
|
|
211
|
+
function currentStateFromError(e) {
|
|
212
|
+
if (!(e instanceof RestError))
|
|
213
|
+
return {};
|
|
214
|
+
const body = e.body;
|
|
215
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
216
|
+
return {};
|
|
217
|
+
const b = body;
|
|
218
|
+
const nested = b.data;
|
|
219
|
+
const raw = nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
220
|
+
? (nested.current_state ?? b.current_state)
|
|
221
|
+
: b.current_state;
|
|
222
|
+
return typeof raw === 'string' && raw !== '' ? { current_state: raw } : {};
|
|
223
|
+
}
|
|
224
|
+
function declaredPositionsFromError(e) {
|
|
225
|
+
if (!(e instanceof RestError))
|
|
226
|
+
return {};
|
|
227
|
+
const body = e.body;
|
|
228
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
229
|
+
return {};
|
|
230
|
+
const b = body;
|
|
231
|
+
const nested = b.data;
|
|
232
|
+
const raw = nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
233
|
+
? (nested.declared_positions ?? b.declared_positions)
|
|
234
|
+
: b.declared_positions;
|
|
235
|
+
if (!isStringArray(raw) || raw.length === 0)
|
|
236
|
+
return {};
|
|
237
|
+
return { declared_positions: [...raw] };
|
|
238
|
+
}
|
|
239
|
+
const UNKNOWN_SOURCE_LIST_CAP = CANDIDATE_FORWARD_CAP;
|
|
240
|
+
function isStringArray(value) {
|
|
241
|
+
return Array.isArray(value) && value.every((v) => typeof v === 'string');
|
|
242
|
+
}
|
|
243
|
+
function unknownSourceFromError(e) {
|
|
244
|
+
if (!(e instanceof RestError))
|
|
245
|
+
return {};
|
|
246
|
+
const body = e.body;
|
|
247
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
248
|
+
return {};
|
|
249
|
+
const b = body;
|
|
250
|
+
const nested = b.data;
|
|
251
|
+
const data = nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
252
|
+
? nested
|
|
253
|
+
: b;
|
|
254
|
+
const given = data.given;
|
|
255
|
+
const didYouMean = data.did_you_mean;
|
|
256
|
+
const allPublished = data.all_published_sources;
|
|
257
|
+
if (typeof given !== 'string')
|
|
258
|
+
return {};
|
|
259
|
+
if (!isStringArray(didYouMean) || !isStringArray(allPublished))
|
|
260
|
+
return {};
|
|
261
|
+
const truncated = allPublished.length > UNKNOWN_SOURCE_LIST_CAP;
|
|
262
|
+
return {
|
|
263
|
+
given,
|
|
264
|
+
did_you_mean: didYouMean.slice(0, UNKNOWN_SOURCE_LIST_CAP),
|
|
265
|
+
all_published_sources: allPublished.slice(0, UNKNOWN_SOURCE_LIST_CAP),
|
|
266
|
+
...(truncated ? { all_published_sources_truncated: true } : {}),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
function serverHintFromError(error) {
|
|
270
|
+
const body = error?.body;
|
|
271
|
+
if (body === null || typeof body !== 'object')
|
|
272
|
+
return {};
|
|
273
|
+
const b = body;
|
|
274
|
+
const nested = b.data;
|
|
275
|
+
const raw = typeof b.hint === 'string'
|
|
276
|
+
? b.hint
|
|
277
|
+
: nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
278
|
+
? nested.hint
|
|
279
|
+
: undefined;
|
|
280
|
+
return typeof raw === 'string' && raw.trim() !== '' ? { server_hint: raw } : {};
|
|
281
|
+
}
|
|
282
|
+
export const PASSTHROUGH_ERROR_KEYS = [
|
|
283
|
+
'element_path',
|
|
284
|
+
'expected_etag',
|
|
285
|
+
'error_code',
|
|
286
|
+
'retry_after',
|
|
287
|
+
'retry_after_ms',
|
|
288
|
+
'retry_after_seconds',
|
|
289
|
+
'limit',
|
|
290
|
+
'window_seconds',
|
|
291
|
+
'required_scope',
|
|
292
|
+
'token_scope',
|
|
293
|
+
'remediation',
|
|
294
|
+
'min_client',
|
|
295
|
+
'current_client',
|
|
296
|
+
];
|
|
297
|
+
const RESERVED_RESULT_KEYS = new Set(['error', 'status', 'code', 'context', 'hint']);
|
|
298
|
+
for (const key of PASSTHROUGH_ERROR_KEYS) {
|
|
299
|
+
if (RESERVED_RESULT_KEYS.has(key)) {
|
|
300
|
+
throw new Error(`PASSTHROUGH_ERROR_KEYS must never shadow the fixed errorResult() key "${key}"`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
const PASSTHROUGH_VALUE_MAX_JSON_LENGTH = 2000;
|
|
304
|
+
function isForwardableScalar(value) {
|
|
305
|
+
if (typeof value === 'boolean')
|
|
306
|
+
return true;
|
|
307
|
+
if (typeof value === 'number')
|
|
308
|
+
return Number.isFinite(value);
|
|
309
|
+
return typeof value === 'string';
|
|
310
|
+
}
|
|
311
|
+
function passthroughFieldsFromError(e) {
|
|
312
|
+
if (!(e instanceof RestError))
|
|
313
|
+
return {};
|
|
314
|
+
const body = e.body;
|
|
315
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
316
|
+
return {};
|
|
317
|
+
const b = body;
|
|
318
|
+
const nested = b.data;
|
|
319
|
+
const data = nested !== null && typeof nested === 'object' && !Array.isArray(nested)
|
|
320
|
+
? nested
|
|
321
|
+
: undefined;
|
|
322
|
+
const out = {};
|
|
323
|
+
for (const key of PASSTHROUGH_ERROR_KEYS) {
|
|
324
|
+
const raw = data?.[key] ?? b[key];
|
|
325
|
+
if (!isForwardableScalar(raw))
|
|
326
|
+
continue;
|
|
327
|
+
if (stringify(raw).length > PASSTHROUGH_VALUE_MAX_JSON_LENGTH)
|
|
328
|
+
continue;
|
|
329
|
+
out[key] = raw;
|
|
330
|
+
}
|
|
331
|
+
return out;
|
|
332
|
+
}
|
|
236
333
|
export function errorResult(opts) {
|
|
237
334
|
const { message, status, code } = describeError(opts.error);
|
|
238
|
-
|
|
239
|
-
// the upstream 404 body carried it, so the agent retries IN-LOOP — the SAME
|
|
240
|
-
// contract the in-process MCP surfaces emit. Spread LAST so it rides
|
|
241
|
-
// alongside (never clobbers) error/status/code/context/hint; absent on every
|
|
242
|
-
// non-enriched failure (empty envelope → no extra keys).
|
|
335
|
+
const passthrough = passthroughFieldsFromError(opts.error);
|
|
243
336
|
const nearest = nearestPathFromError(opts.error);
|
|
244
|
-
|
|
245
|
-
// alongside (never over) error/status/code/context/hint, and absent
|
|
246
|
-
// entirely on every non-ambiguous failure.
|
|
337
|
+
const unknownSource = unknownSourceFromError(opts.error);
|
|
247
338
|
const candidates = candidatesFromError(opts.error);
|
|
248
|
-
// ELEMENT_WRITE-2 / PAGES_LIBRARY_MEDIA-7: a 412 write carries the live
|
|
249
|
-
// ETag; surface it as `current_etag` so a retry is mechanical (no extra
|
|
250
|
-
// get_etag round-trip). Spread last, alongside (never over) the other keys;
|
|
251
|
-
// absent on every non-412 failure.
|
|
252
339
|
const currentEtag = currentEtagFromError(opts.error);
|
|
340
|
+
const serverHintRaw = serverHintFromError(opts.error);
|
|
341
|
+
const serverHint = serverHintRaw.server_hint !== undefined && serverHintRaw.server_hint !== opts.hint
|
|
342
|
+
? serverHintRaw
|
|
343
|
+
: {};
|
|
344
|
+
const ways = waysFromError(opts.error);
|
|
345
|
+
const notes = notesFromError(opts.error);
|
|
346
|
+
const declaredPositions = declaredPositionsFromError(opts.error);
|
|
347
|
+
const intents = intentsFromError(opts.error);
|
|
348
|
+
const currentState = currentStateFromError(opts.error);
|
|
253
349
|
return jsonResult({
|
|
254
350
|
error: sanitizeForLogs(message),
|
|
255
351
|
...(status !== undefined ? { status } : {}),
|
|
256
352
|
...(code !== undefined ? { code } : {}),
|
|
257
353
|
context: sanitizeSecrets(opts.context),
|
|
258
354
|
hint: opts.hint,
|
|
355
|
+
...passthrough,
|
|
356
|
+
...unknownSource,
|
|
259
357
|
...nearest,
|
|
260
358
|
...candidates,
|
|
261
359
|
...currentEtag,
|
|
360
|
+
...ways,
|
|
361
|
+
...notes,
|
|
362
|
+
...declaredPositions,
|
|
363
|
+
...intents,
|
|
364
|
+
...currentState,
|
|
365
|
+
...serverHint,
|
|
262
366
|
}, { isError: true });
|
|
263
367
|
}
|
|
264
|
-
/**
|
|
265
|
-
* Confirm-guard preview helper for destructive tools. Returns the
|
|
266
|
-
* preview `ToolResult` when `confirm` is false; callers `return` it
|
|
267
|
-
* before executing the destructive REST call.
|
|
268
|
-
*
|
|
269
|
-
* F131 (Wave 4a): the blocked-state result is now STRUCTURALLY distinct
|
|
270
|
-
* from a successful mutation. Previously the preview was a plain
|
|
271
|
-
* `jsonResult` with no `isError` — envelope-identical to a success — so a
|
|
272
|
-
* model that did not parse `preview:true` read "delete succeeded" and
|
|
273
|
-
* silently left the element in place (the dry-run / silent-no-op footgun
|
|
274
|
-
* class). Three redundant signals now make the block unmistakable:
|
|
275
|
-
* 1. result-level `isError: true` (hosts that only read the error flag),
|
|
276
|
-
* 2. body `applied: false` + `requires_confirmation: true` (structured
|
|
277
|
-
* consumers),
|
|
278
|
-
* 3. a leading "NOT EXECUTED" line in the human-readable warning text
|
|
279
|
-
* (models that skim prose).
|
|
280
|
-
*/
|
|
281
368
|
export function confirmGuard(opts) {
|
|
282
|
-
|
|
369
|
+
const warning = `NOT EXECUTED — DESTRUCTIVE operation requires confirmation. ` +
|
|
370
|
+
`The "${opts.operation}" call was BLOCKED and nothing was changed.`;
|
|
371
|
+
const instruction = 'Ask the user to confirm, then call again with `confirm: true`.';
|
|
372
|
+
return structuredResult(jsonResult({
|
|
283
373
|
preview: true,
|
|
284
374
|
applied: false,
|
|
285
375
|
requires_confirmation: true,
|
|
286
|
-
warning
|
|
376
|
+
warning,
|
|
287
377
|
operation: opts.operation,
|
|
288
378
|
details: opts.details,
|
|
289
|
-
instruction
|
|
290
|
-
}, {
|
|
379
|
+
instruction,
|
|
380
|
+
}), {
|
|
381
|
+
...opts.structured,
|
|
382
|
+
...opts.structuredExtra,
|
|
383
|
+
applied: false,
|
|
384
|
+
requires_confirmation: true,
|
|
385
|
+
warning,
|
|
386
|
+
instruction,
|
|
387
|
+
});
|
|
291
388
|
}
|
|
292
|
-
/**
|
|
293
|
-
* Sanitise a single content item from a toolkit builder. Text items
|
|
294
|
-
* frequently embed a JSON-stringified payload — if it parses, deep-walk
|
|
295
|
-
* and re-stringify; otherwise leave as-is (toolkit-rendered tables /
|
|
296
|
-
* details are already domain-mapped at the call site).
|
|
297
|
-
*/
|
|
298
389
|
function sanitizeContentItem(item) {
|
|
299
390
|
if (item.type !== 'text' || typeof item.text !== 'string')
|
|
300
391
|
return item;
|
|
@@ -305,63 +396,9 @@ function sanitizeContentItem(item) {
|
|
|
305
396
|
return { ...item, text: stringify(safe) };
|
|
306
397
|
}
|
|
307
398
|
catch {
|
|
308
|
-
// Not JSON — toolkit-rendered text. No structural redaction
|
|
309
|
-
// possible without false-positives; the caller has already
|
|
310
|
-
// mapped raw secrets out via field-projection helpers.
|
|
311
399
|
return item;
|
|
312
400
|
}
|
|
313
401
|
}
|
|
314
|
-
/**
|
|
315
|
-
* Merge a toolkit `StructuredCallToolResult` (carries `content[0].text`
|
|
316
|
-
* + `_meta.ui`) with a domain-typed `structuredContent` payload. The
|
|
317
|
-
* result satisfies both Rich-Card hosts (read `_meta.ui`) AND
|
|
318
|
-
* structured-output hosts (read `structuredContent`, may validate
|
|
319
|
-
* against `outputSchema`). Single envelope-merger from every migrated
|
|
320
|
-
* tool's handler — toolkit builders are wrapped, not modified.
|
|
321
|
-
*/
|
|
322
|
-
/**
|
|
323
|
-
* W6.2 — site-awareness envelope wrapper.
|
|
324
|
-
*
|
|
325
|
-
* Stamps a resolved-site descriptor onto a tool result so the human +
|
|
326
|
-
* agent both know which connected site the call ran against. Two
|
|
327
|
-
* channels:
|
|
328
|
-
*
|
|
329
|
-
* 1. **text-prefix PRIMARY surface** — `[<label or site_id> @
|
|
330
|
-
* <hostname>] ` is injected at the start of `content[0].text`
|
|
331
|
-
* when that block is a text item. Per the W6 web-research
|
|
332
|
-
* addendum (HCFV §B, Claude-Desktop UI gap doc'd in plan
|
|
333
|
-
* Z.1329-1332), `_meta` is read by the agent but NOT rendered as
|
|
334
|
-
* a UI widget today — so the prefix is the only thing Maria the
|
|
335
|
-
* Claude-Desktop-user reliably SEES. LOAD-BEARING.
|
|
336
|
-
*
|
|
337
|
-
* 2. **result-level `_meta` SECONDARY surface** — `_meta:
|
|
338
|
-
* {site_id, site_url, platform}` is merged into the RESULT-level
|
|
339
|
-
* `_meta` (alongside the toolkit's `_meta.ui`). This is the
|
|
340
|
-
* MCP-spec metadata channel: free-form and NOT validated against
|
|
341
|
-
* the tool's `outputSchema`.
|
|
342
|
-
*
|
|
343
|
-
* W12-R2 fix: site meta was previously merged into
|
|
344
|
-
* `structuredContent._meta`. That broke real hosts. Every tool's
|
|
345
|
-
* `outputSchema` is generated with `additionalProperties:false`,
|
|
346
|
-
* so an undeclared `_meta` key inside `structuredContent` fails
|
|
347
|
-
* client-side schema validation (`-32602`) and surfaces as a
|
|
348
|
-
* "Failed to call tool" toast in Claude Desktop EVEN ON A
|
|
349
|
-
* SUCCESSFUL CALL. `live-verify.mjs` never caught it because raw
|
|
350
|
-
* JSON-RPC calls skip the host's structuredContent↔outputSchema
|
|
351
|
-
* validation. `structuredContent` must stay schema-pure.
|
|
352
|
-
*
|
|
353
|
-
* Pure function: never mutates the input result. Non-text blocks
|
|
354
|
-
* (resource / image / etc.) pass through verbatim. `structuredContent`
|
|
355
|
-
* is passed through UNTOUCHED so it always validates against
|
|
356
|
-
* `outputSchema`. Empty `content[]` is tolerated and produces a
|
|
357
|
-
* prefix-free result (the meta still lands in result-level `_meta`).
|
|
358
|
-
*
|
|
359
|
-
* Label-fallback: `site.label` wins; falls back to `site.id`.
|
|
360
|
-
*
|
|
361
|
-
* Hostname extraction defaults to `new URL(site.url).host`. A
|
|
362
|
-
* malformed URL falls back to the raw site.url string so the prefix
|
|
363
|
-
* remains user-readable even when the registry was hand-edited.
|
|
364
|
-
*/
|
|
365
402
|
export function withSiteMeta(result, site) {
|
|
366
403
|
const displayLabel = site.label ?? site.id;
|
|
367
404
|
let host;
|
|
@@ -371,20 +408,11 @@ export function withSiteMeta(result, site) {
|
|
|
371
408
|
catch {
|
|
372
409
|
host = site.url;
|
|
373
410
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
// call was not isolated from concurrent `use_site` switches. An
|
|
378
|
-
// explicit `site_id` (or a legacy fixture without `resolvedVia`) gets
|
|
379
|
-
// the plain prefix.
|
|
380
|
-
const routedViaSharedDefault = site.resolvedVia === 'registry_default'
|
|
381
|
-
|| site.resolvedVia === 'active_override';
|
|
382
|
-
const marker = routedViaSharedDefault ? ' · default' : '';
|
|
411
|
+
const marker = site.resolvedVia === 'active_override' ? ' · active override, not the configured default'
|
|
412
|
+
: site.resolvedVia === 'registry_default' ? ' · default'
|
|
413
|
+
: '';
|
|
383
414
|
const prefix = `[${displayLabel} @ ${host}${marker}] `;
|
|
384
|
-
|
|
385
|
-
// (it mirrors `site_id` but names the concept the agent reasons about
|
|
386
|
-
// — "which site did this call actually land on"). `resolved_via` is
|
|
387
|
-
// only stamped when known, so legacy fixtures add no noise.
|
|
415
|
+
const active = activeSiteFromResolution(site.id, site.resolvedVia);
|
|
388
416
|
const meta = {
|
|
389
417
|
site_id: site.id,
|
|
390
418
|
site_url: site.url,
|
|
@@ -393,24 +421,12 @@ export function withSiteMeta(result, site) {
|
|
|
393
421
|
...(site.resolvedVia !== undefined
|
|
394
422
|
? { resolved_via: site.resolvedVia }
|
|
395
423
|
: {}),
|
|
424
|
+
...(active !== undefined ? { active_site: active } : {}),
|
|
396
425
|
};
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
// signal of which site the call ran against. Prepend a synthetic
|
|
402
|
-
// text block so the prefix is ALWAYS the first visible glyph.
|
|
403
|
-
// Trim the trailing space — a standalone prefix block reads better
|
|
404
|
-
// without it.
|
|
405
|
-
//
|
|
406
|
-
// F80 (2026-06-10): the SAME synthetic-block path is taken when the
|
|
407
|
-
// first text body is a PURE JSON DOCUMENT (page_get_layout etc.).
|
|
408
|
-
// Concatenating the prefix in-band there yields `[label @ host] {...}`
|
|
409
|
-
// — not valid JSON — which corrupts the harness's file-dump of an
|
|
410
|
-
// oversized result and breaks `jq`. Routing JSON documents through the
|
|
411
|
-
// synthetic block keeps the JSON byte-pure while the human still sees
|
|
412
|
-
// the marker first. Human-readable text (tables / details / prose)
|
|
413
|
-
// keeps the in-band prefix unchanged.
|
|
426
|
+
const structured = result.structuredContent;
|
|
427
|
+
const enrichedStructured = active !== undefined && structured !== undefined && structured !== null && !Array.isArray(structured)
|
|
428
|
+
? withActiveSiteKey(structured, active)
|
|
429
|
+
: structured;
|
|
414
430
|
const firstItem = result.content[0];
|
|
415
431
|
const firstIsLargeJsonDoc = firstItem !== undefined
|
|
416
432
|
&& firstItem.type === 'text'
|
|
@@ -433,12 +449,6 @@ export function withSiteMeta(result, site) {
|
|
|
433
449
|
const existingText = typeof item.text === 'string' ? item.text : '';
|
|
434
450
|
return { ...item, text: prefix + existingText };
|
|
435
451
|
});
|
|
436
|
-
// Site meta merges into the RESULT-level `_meta` (next to the
|
|
437
|
-
// toolkit's `_meta.ui`), NEVER into `structuredContent`. The latter
|
|
438
|
-
// is validated by the host against the tool's `outputSchema`
|
|
439
|
-
// (additionalProperties:false); an undeclared key there triggers a
|
|
440
|
-
// `-32602` "Failed to call tool" reject even on success. The result
|
|
441
|
-
// envelope `_meta` is the spec's free-form metadata channel.
|
|
442
452
|
const baseTopMeta = result._meta;
|
|
443
453
|
const mergedTopMeta = baseTopMeta !== undefined && baseTopMeta !== null && typeof baseTopMeta === 'object'
|
|
444
454
|
? { ...baseTopMeta, ...meta }
|
|
@@ -446,13 +456,11 @@ export function withSiteMeta(result, site) {
|
|
|
446
456
|
return {
|
|
447
457
|
...result,
|
|
448
458
|
content: newContent,
|
|
459
|
+
...(enrichedStructured !== undefined ? { structuredContent: enrichedStructured } : {}),
|
|
449
460
|
_meta: mergedTopMeta,
|
|
450
461
|
};
|
|
451
462
|
}
|
|
452
463
|
export function structuredResult(toolkitResult, structuredContent) {
|
|
453
|
-
// Wave G.6.4b — deep-walk-sanitise all three legs (text content,
|
|
454
|
-
// _meta.ui, structuredContent) so regressing sources never bypass
|
|
455
|
-
// the LLM-boundary mask.
|
|
456
464
|
const safeContent = toolkitResult.content.map(sanitizeContentItem);
|
|
457
465
|
const safeStructured = sanitizeSecrets(structuredContent);
|
|
458
466
|
const safeMeta = toolkitResult._meta !== undefined
|