@wootsup/yt-builder-mcp 1.1.6 → 1.2.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 +7 -7
- package/bin/yt-builder-mcp.js +55 -40
- package/dist/auth.d.ts +137 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +244 -0
- package/dist/auth.js.map +1 -0
- package/dist/cli/invocation-decision.d.ts +57 -0
- package/dist/cli/invocation-decision.d.ts.map +1 -0
- package/dist/cli/invocation-decision.js +86 -0
- package/dist/cli/invocation-decision.js.map +1 -0
- package/dist/client.d.ts +112 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +190 -0
- package/dist/client.js.map +1 -0
- package/dist/clients/claude-code.d.ts +18 -0
- package/dist/clients/claude-code.d.ts.map +1 -0
- package/dist/clients/claude-code.js +55 -0
- package/dist/clients/claude-code.js.map +1 -0
- package/dist/clients/claude-desktop.d.ts +19 -0
- package/dist/clients/claude-desktop.d.ts.map +1 -0
- package/dist/clients/claude-desktop.js +58 -0
- package/dist/clients/claude-desktop.js.map +1 -0
- package/dist/clients/cline.d.ts +26 -0
- package/dist/clients/cline.d.ts.map +1 -0
- package/dist/clients/cline.js +82 -0
- package/dist/clients/cline.js.map +1 -0
- package/dist/clients/codex-cli.d.ts +42 -0
- package/dist/clients/codex-cli.d.ts.map +1 -0
- package/dist/clients/codex-cli.js +292 -0
- package/dist/clients/codex-cli.js.map +1 -0
- package/dist/clients/continue.d.ts +13 -0
- package/dist/clients/continue.d.ts.map +1 -0
- package/dist/clients/continue.js +121 -0
- package/dist/clients/continue.js.map +1 -0
- package/dist/clients/cursor.d.ts +12 -0
- package/dist/clients/cursor.d.ts.map +1 -0
- package/dist/clients/cursor.js +40 -0
- package/dist/clients/cursor.js.map +1 -0
- package/dist/clients/gemini-cli.d.ts +18 -0
- package/dist/clients/gemini-cli.d.ts.map +1 -0
- package/dist/clients/gemini-cli.js +46 -0
- package/dist/clients/gemini-cli.js.map +1 -0
- package/dist/clients/home.d.ts +14 -0
- package/dist/clients/home.d.ts.map +1 -0
- package/dist/clients/home.js +20 -0
- package/dist/clients/home.js.map +1 -0
- package/dist/clients/index.d.ts +156 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +213 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/roo-code.d.ts +23 -0
- package/dist/clients/roo-code.d.ts.map +1 -0
- package/dist/clients/roo-code.js +71 -0
- package/dist/clients/roo-code.js.map +1 -0
- package/dist/clients/zed.d.ts +12 -0
- package/dist/clients/zed.d.ts.map +1 -0
- package/dist/clients/zed.js +43 -0
- package/dist/clients/zed.js.map +1 -0
- package/dist/errors/hints.d.ts +51 -0
- package/dist/errors/hints.d.ts.map +1 -0
- package/dist/errors/hints.js +95 -0
- package/dist/errors/hints.js.map +1 -0
- package/dist/errors/mask.d.ts +35 -0
- package/dist/errors/mask.d.ts.map +1 -0
- package/dist/errors/mask.js +49 -0
- package/dist/errors/mask.js.map +1 -0
- package/dist/errors/sanitize.d.ts +31 -0
- package/dist/errors/sanitize.d.ts.map +1 -0
- package/dist/errors/sanitize.js +100 -0
- package/dist/errors/sanitize.js.map +1 -0
- package/dist/errors.d.ts +42 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +61 -0
- package/dist/errors.js.map +1 -0
- package/dist/gateway/advanced-tool/discovery.d.ts +19 -0
- package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/discovery.js +53 -0
- package/dist/gateway/advanced-tool/discovery.js.map +1 -0
- package/dist/gateway/advanced-tool/domains.d.ts +47 -0
- package/dist/gateway/advanced-tool/domains.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/domains.js +94 -0
- package/dist/gateway/advanced-tool/domains.js.map +1 -0
- package/dist/gateway/advanced-tool/execute.d.ts +29 -0
- package/dist/gateway/advanced-tool/execute.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/execute.js +54 -0
- package/dist/gateway/advanced-tool/execute.js.map +1 -0
- package/dist/gateway/advanced-tool/index.d.ts +36 -0
- package/dist/gateway/advanced-tool/index.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/index.js +39 -0
- package/dist/gateway/advanced-tool/index.js.map +1 -0
- package/dist/gateway/advanced-tool/register.d.ts +18 -0
- package/dist/gateway/advanced-tool/register.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/register.js +69 -0
- package/dist/gateway/advanced-tool/register.js.map +1 -0
- package/dist/gateway/advanced-tool.d.ts +13 -0
- package/dist/gateway/advanced-tool.d.ts.map +1 -0
- package/dist/gateway/advanced-tool.js +13 -0
- package/dist/gateway/advanced-tool.js.map +1 -0
- package/dist/gateway/capturing-server.d.ts +117 -0
- package/dist/gateway/capturing-server.d.ts.map +1 -0
- package/dist/gateway/capturing-server.js +103 -0
- package/dist/gateway/capturing-server.js.map +1 -0
- package/dist/gateway/essentials.d.ts +50 -0
- package/dist/gateway/essentials.d.ts.map +1 -0
- package/dist/gateway/essentials.js +108 -0
- package/dist/gateway/essentials.js.map +1 -0
- package/dist/gateway/test-support.d.ts +41 -0
- package/dist/gateway/test-support.d.ts.map +1 -0
- package/dist/gateway/test-support.js +60 -0
- package/dist/gateway/test-support.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/dist/install-skill.d.ts +43 -0
- package/dist/install-skill.d.ts.map +1 -0
- package/dist/install-skill.js +118 -0
- package/dist/install-skill.js.map +1 -0
- package/dist/platform/detect.d.ts +64 -0
- package/dist/platform/detect.d.ts.map +1 -0
- package/dist/platform/detect.js +98 -0
- package/dist/platform/detect.js.map +1 -0
- package/dist/platform/index.d.ts +121 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +176 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/joomla.d.ts +44 -0
- package/dist/platform/joomla.d.ts.map +1 -0
- package/dist/platform/joomla.js +46 -0
- package/dist/platform/joomla.js.map +1 -0
- package/dist/server.d.ts +110 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +274 -0
- package/dist/server.js.map +1 -0
- package/dist/setup-cli-confirm.d.ts +36 -0
- package/dist/setup-cli-confirm.d.ts.map +1 -0
- package/dist/setup-cli-confirm.js +59 -0
- package/dist/setup-cli-confirm.js.map +1 -0
- package/dist/setup-cli.d.ts +193 -0
- package/dist/setup-cli.d.ts.map +1 -0
- package/dist/setup-cli.js +1032 -0
- package/dist/setup-cli.js.map +1 -0
- package/dist/setup-prompts.d.ts +64 -0
- package/dist/setup-prompts.d.ts.map +1 -0
- package/dist/setup-prompts.js +221 -0
- package/dist/setup-prompts.js.map +1 -0
- package/dist/setup-token.d.ts +38 -0
- package/dist/setup-token.d.ts.map +1 -0
- package/dist/setup-token.js +106 -0
- package/dist/setup-token.js.map +1 -0
- package/dist/setup-wizard-defaults.d.ts +43 -0
- package/dist/setup-wizard-defaults.d.ts.map +1 -0
- package/dist/setup-wizard-defaults.js +160 -0
- package/dist/setup-wizard-defaults.js.map +1 -0
- package/dist/setup-wizard-handshake.d.ts +25 -0
- package/dist/setup-wizard-handshake.d.ts.map +1 -0
- package/dist/setup-wizard-handshake.js +103 -0
- package/dist/setup-wizard-handshake.js.map +1 -0
- package/dist/setup-wizard-types.d.ts +164 -0
- package/dist/setup-wizard-types.d.ts.map +1 -0
- package/dist/setup-wizard-types.js +11 -0
- package/dist/setup-wizard-types.js.map +1 -0
- package/dist/setup-wizard.d.ts +33 -0
- package/dist/setup-wizard.d.ts.map +1 -0
- package/dist/setup-wizard.js +199 -0
- package/dist/setup-wizard.js.map +1 -0
- package/dist/setup.d.ts +17 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +33 -0
- package/dist/setup.js.map +1 -0
- package/dist/sites/bootstrap.d.ts +41 -0
- package/dist/sites/bootstrap.d.ts.map +1 -0
- package/dist/sites/bootstrap.js +58 -0
- package/dist/sites/bootstrap.js.map +1 -0
- package/dist/sites/cli/add-site.d.ts +106 -0
- package/dist/sites/cli/add-site.d.ts.map +1 -0
- package/dist/sites/cli/add-site.js +185 -0
- package/dist/sites/cli/add-site.js.map +1 -0
- package/dist/sites/cli/list-sites.d.ts +40 -0
- package/dist/sites/cli/list-sites.d.ts.map +1 -0
- package/dist/sites/cli/list-sites.js +116 -0
- package/dist/sites/cli/list-sites.js.map +1 -0
- package/dist/sites/cli/remove-site.d.ts +60 -0
- package/dist/sites/cli/remove-site.d.ts.map +1 -0
- package/dist/sites/cli/remove-site.js +120 -0
- package/dist/sites/cli/remove-site.js.map +1 -0
- package/dist/sites/cli/set-default.d.ts +47 -0
- package/dist/sites/cli/set-default.d.ts.map +1 -0
- package/dist/sites/cli/set-default.js +69 -0
- package/dist/sites/cli/set-default.js.map +1 -0
- package/dist/sites/cli/test-site.d.ts +77 -0
- package/dist/sites/cli/test-site.d.ts.map +1 -0
- package/dist/sites/cli/test-site.js +146 -0
- package/dist/sites/cli/test-site.js.map +1 -0
- package/dist/sites/client-pool.d.ts +157 -0
- package/dist/sites/client-pool.d.ts.map +1 -0
- package/dist/sites/client-pool.js +222 -0
- package/dist/sites/client-pool.js.map +1 -0
- package/dist/sites/env-bridge.d.ts +55 -0
- package/dist/sites/env-bridge.d.ts.map +1 -0
- package/dist/sites/env-bridge.js +94 -0
- package/dist/sites/env-bridge.js.map +1 -0
- package/dist/sites/paths.d.ts +21 -0
- package/dist/sites/paths.d.ts.map +1 -0
- package/dist/sites/paths.js +37 -0
- package/dist/sites/paths.js.map +1 -0
- package/dist/sites/probe.d.ts +60 -0
- package/dist/sites/probe.d.ts.map +1 -0
- package/dist/sites/probe.js +112 -0
- package/dist/sites/probe.js.map +1 -0
- package/dist/sites/registry.d.ts +142 -0
- package/dist/sites/registry.d.ts.map +1 -0
- package/dist/sites/registry.js +163 -0
- package/dist/sites/registry.js.map +1 -0
- package/dist/sites/schema.d.ts +90 -0
- package/dist/sites/schema.d.ts.map +1 -0
- package/dist/sites/schema.js +71 -0
- package/dist/sites/schema.js.map +1 -0
- package/dist/sites/secret-resolver.d.ts +115 -0
- package/dist/sites/secret-resolver.d.ts.map +1 -0
- package/dist/sites/secret-resolver.js +225 -0
- package/dist/sites/secret-resolver.js.map +1 -0
- package/dist/sites/store.d.ts +82 -0
- package/dist/sites/store.d.ts.map +1 -0
- package/dist/sites/store.js +198 -0
- package/dist/sites/store.js.map +1 -0
- package/dist/sites/tools/index.d.ts +28 -0
- package/dist/sites/tools/index.d.ts.map +1 -0
- package/dist/sites/tools/index.js +38 -0
- package/dist/sites/tools/index.js.map +1 -0
- package/dist/sites/tools/sites-list.d.ts +48 -0
- package/dist/sites/tools/sites-list.d.ts.map +1 -0
- package/dist/sites/tools/sites-list.js +137 -0
- package/dist/sites/tools/sites-list.js.map +1 -0
- package/dist/sites/tools/sites-test.d.ts +47 -0
- package/dist/sites/tools/sites-test.d.ts.map +1 -0
- package/dist/sites/tools/sites-test.js +148 -0
- package/dist/sites/tools/sites-test.js.map +1 -0
- package/dist/sites/tools/use-site.d.ts +47 -0
- package/dist/sites/tools/use-site.d.ts.map +1 -0
- package/dist/sites/tools/use-site.js +183 -0
- package/dist/sites/tools/use-site.js.map +1 -0
- package/dist/skill-loader.d.ts +111 -0
- package/dist/skill-loader.d.ts.map +1 -0
- package/dist/skill-loader.js +191 -0
- package/dist/skill-loader.js.map +1 -0
- package/dist/tools/elements/builders.d.ts +24 -0
- package/dist/tools/elements/builders.d.ts.map +1 -0
- package/dist/tools/elements/builders.js +208 -0
- package/dist/tools/elements/builders.js.map +1 -0
- package/dist/tools/elements/handlers-write.d.ts +49 -0
- package/dist/tools/elements/handlers-write.d.ts.map +1 -0
- package/dist/tools/elements/handlers-write.js +341 -0
- package/dist/tools/elements/handlers-write.js.map +1 -0
- package/dist/tools/elements/handlers.d.ts +70 -0
- package/dist/tools/elements/handlers.d.ts.map +1 -0
- package/dist/tools/elements/handlers.js +292 -0
- package/dist/tools/elements/handlers.js.map +1 -0
- package/dist/tools/elements/index.d.ts +28 -0
- package/dist/tools/elements/index.d.ts.map +1 -0
- package/dist/tools/elements/index.js +27 -0
- package/dist/tools/elements/index.js.map +1 -0
- package/dist/tools/elements.d.ts +13 -0
- package/dist/tools/elements.d.ts.map +1 -0
- package/dist/tools/elements.js +13 -0
- package/dist/tools/elements.js.map +1 -0
- package/dist/tools/elicitation.d.ts +87 -0
- package/dist/tools/elicitation.d.ts.map +1 -0
- package/dist/tools/elicitation.js +100 -0
- package/dist/tools/elicitation.js.map +1 -0
- package/dist/tools/format/elements-format.d.ts +40 -0
- package/dist/tools/format/elements-format.d.ts.map +1 -0
- package/dist/tools/format/elements-format.js +193 -0
- package/dist/tools/format/elements-format.js.map +1 -0
- package/dist/tools/format/health-format.d.ts +79 -0
- package/dist/tools/format/health-format.d.ts.map +1 -0
- package/dist/tools/format/health-format.js +181 -0
- package/dist/tools/format/health-format.js.map +1 -0
- package/dist/tools/format/inspection-format.d.ts +70 -0
- package/dist/tools/format/inspection-format.d.ts.map +1 -0
- package/dist/tools/format/inspection-format.js +359 -0
- package/dist/tools/format/inspection-format.js.map +1 -0
- package/dist/tools/format/pages-format.d.ts +57 -0
- package/dist/tools/format/pages-format.d.ts.map +1 -0
- package/dist/tools/format/pages-format.js +157 -0
- package/dist/tools/format/pages-format.js.map +1 -0
- package/dist/tools/format/sources-format.d.ts +44 -0
- package/dist/tools/format/sources-format.d.ts.map +1 -0
- package/dist/tools/format/sources-format.js +242 -0
- package/dist/tools/format/sources-format.js.map +1 -0
- package/dist/tools/health.d.ts +22 -0
- package/dist/tools/health.d.ts.map +1 -0
- package/dist/tools/health.js +220 -0
- package/dist/tools/health.js.map +1 -0
- package/dist/tools/index.d.ts +30 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +39 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/inspection.d.ts +14 -0
- package/dist/tools/inspection.d.ts.map +1 -0
- package/dist/tools/inspection.js +401 -0
- package/dist/tools/inspection.js.map +1 -0
- package/dist/tools/layout-flatten.d.ts +75 -0
- package/dist/tools/layout-flatten.d.ts.map +1 -0
- package/dist/tools/layout-flatten.js +107 -0
- package/dist/tools/layout-flatten.js.map +1 -0
- package/dist/tools/multi-items/builders.d.ts +23 -0
- package/dist/tools/multi-items/builders.d.ts.map +1 -0
- package/dist/tools/multi-items/builders.js +84 -0
- package/dist/tools/multi-items/builders.js.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts +36 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.js +57 -0
- package/dist/tools/multi-items/clean-implode-handler.js.map +1 -0
- package/dist/tools/multi-items/format/inspection-format.d.ts +41 -0
- package/dist/tools/multi-items/format/inspection-format.d.ts.map +1 -0
- package/dist/tools/multi-items/format/inspection-format.js +64 -0
- package/dist/tools/multi-items/format/inspection-format.js.map +1 -0
- package/dist/tools/multi-items/index.d.ts +18 -0
- package/dist/tools/multi-items/index.d.ts.map +1 -0
- package/dist/tools/multi-items/index.js +18 -0
- package/dist/tools/multi-items/index.js.map +1 -0
- package/dist/tools/multi-items/inspect-handler.d.ts +76 -0
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/inspect-handler.js +133 -0
- package/dist/tools/multi-items/inspect-handler.js.map +1 -0
- package/dist/tools/multi-items/inspection-cache.d.ts +85 -0
- package/dist/tools/multi-items/inspection-cache.d.ts.map +1 -0
- package/dist/tools/multi-items/inspection-cache.js +126 -0
- package/dist/tools/multi-items/inspection-cache.js.map +1 -0
- package/dist/tools/multi-items/item-container-map.d.ts +41 -0
- package/dist/tools/multi-items/item-container-map.d.ts.map +1 -0
- package/dist/tools/multi-items/item-container-map.js +73 -0
- package/dist/tools/multi-items/item-container-map.js.map +1 -0
- package/dist/tools/pages/builders.d.ts +43 -0
- package/dist/tools/pages/builders.d.ts.map +1 -0
- package/dist/tools/pages/builders.js +229 -0
- package/dist/tools/pages/builders.js.map +1 -0
- package/dist/tools/pages/handlers-read.d.ts +33 -0
- package/dist/tools/pages/handlers-read.d.ts.map +1 -0
- package/dist/tools/pages/handlers-read.js +260 -0
- package/dist/tools/pages/handlers-read.js.map +1 -0
- package/dist/tools/pages/handlers-write.d.ts +63 -0
- package/dist/tools/pages/handlers-write.d.ts.map +1 -0
- package/dist/tools/pages/handlers-write.js +127 -0
- package/dist/tools/pages/handlers-write.js.map +1 -0
- package/dist/tools/pages/index.d.ts +17 -0
- package/dist/tools/pages/index.d.ts.map +1 -0
- package/dist/tools/pages/index.js +17 -0
- package/dist/tools/pages/index.js.map +1 -0
- package/dist/tools/pages/schemas.d.ts +157 -0
- package/dist/tools/pages/schemas.d.ts.map +1 -0
- package/dist/tools/pages/schemas.js +232 -0
- package/dist/tools/pages/schemas.js.map +1 -0
- package/dist/tools/pages.d.ts +13 -0
- package/dist/tools/pages.d.ts.map +1 -0
- package/dist/tools/pages.js +13 -0
- package/dist/tools/pages.js.map +1 -0
- package/dist/tools/pool-resolve-helper.d.ts +83 -0
- package/dist/tools/pool-resolve-helper.d.ts.map +1 -0
- package/dist/tools/pool-resolve-helper.js +148 -0
- package/dist/tools/pool-resolve-helper.js.map +1 -0
- package/dist/tools/progress-phases.d.ts +46 -0
- package/dist/tools/progress-phases.d.ts.map +1 -0
- package/dist/tools/progress-phases.js +48 -0
- package/dist/tools/progress-phases.js.map +1 -0
- package/dist/tools/shared-schemas.d.ts +25 -0
- package/dist/tools/shared-schemas.d.ts.map +1 -0
- package/dist/tools/shared-schemas.js +72 -0
- package/dist/tools/shared-schemas.js.map +1 -0
- package/dist/tools/sources/builders.d.ts +13 -0
- package/dist/tools/sources/builders.d.ts.map +1 -0
- package/dist/tools/sources/builders.js +118 -0
- package/dist/tools/sources/builders.js.map +1 -0
- package/dist/tools/sources/handlers-bind.d.ts +28 -0
- package/dist/tools/sources/handlers-bind.d.ts.map +1 -0
- package/dist/tools/sources/handlers-bind.js +181 -0
- package/dist/tools/sources/handlers-bind.js.map +1 -0
- package/dist/tools/sources/handlers.d.ts +47 -0
- package/dist/tools/sources/handlers.d.ts.map +1 -0
- package/dist/tools/sources/handlers.js +108 -0
- package/dist/tools/sources/handlers.js.map +1 -0
- package/dist/tools/sources/index.d.ts +19 -0
- package/dist/tools/sources/index.d.ts.map +1 -0
- package/dist/tools/sources/index.js +18 -0
- package/dist/tools/sources/index.js.map +1 -0
- package/dist/tools/sources.d.ts +14 -0
- package/dist/tools/sources.d.ts.map +1 -0
- package/dist/tools/sources.js +14 -0
- package/dist/tools/sources.js.map +1 -0
- package/dist/tools/sparse-fields.d.ts +106 -0
- package/dist/tools/sparse-fields.d.ts.map +1 -0
- package/dist/tools/sparse-fields.js +165 -0
- package/dist/tools/sparse-fields.js.map +1 -0
- package/dist/tools/tool-builder/annotations.d.ts +55 -0
- package/dist/tools/tool-builder/annotations.d.ts.map +1 -0
- package/dist/tools/tool-builder/annotations.js +86 -0
- package/dist/tools/tool-builder/annotations.js.map +1 -0
- package/dist/tools/tool-builder/define.d.ts +31 -0
- package/dist/tools/tool-builder/define.d.ts.map +1 -0
- package/dist/tools/tool-builder/define.js +31 -0
- package/dist/tools/tool-builder/define.js.map +1 -0
- package/dist/tools/tool-builder/index.d.ts +28 -0
- package/dist/tools/tool-builder/index.d.ts.map +1 -0
- package/dist/tools/tool-builder/index.js +27 -0
- package/dist/tools/tool-builder/index.js.map +1 -0
- package/dist/tools/tool-builder/results.d.ts +104 -0
- package/dist/tools/tool-builder/results.d.ts.map +1 -0
- package/dist/tools/tool-builder/results.js +224 -0
- package/dist/tools/tool-builder/results.js.map +1 -0
- package/dist/tools/tool-builder/types.d.ts +97 -0
- package/dist/tools/tool-builder/types.d.ts.map +1 -0
- package/dist/tools/tool-builder/types.js +9 -0
- package/dist/tools/tool-builder/types.js.map +1 -0
- package/dist/tools/tool-builder.d.ts +16 -0
- package/dist/tools/tool-builder.d.ts.map +1 -0
- package/dist/tools/tool-builder.js +16 -0
- package/dist/tools/tool-builder.js.map +1 -0
- package/dist/uninstall-skill.d.ts +52 -0
- package/dist/uninstall-skill.d.ts.map +1 -0
- package/dist/uninstall-skill.js +146 -0
- package/dist/uninstall-skill.js.map +1 -0
- package/dist/uninstall.d.ts +73 -0
- package/dist/uninstall.d.ts.map +1 -0
- package/dist/uninstall.js +82 -0
- package/dist/uninstall.js.map +1 -0
- package/icon.png +0 -0
- package/manifest.json +10 -10
- package/package.json +4 -1
- package/skills/yt-builder-mcp/SKILL.md +30 -26
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page-tool output-schemas (Wave G.2 §4 structuredContent contracts).
|
|
3
|
+
*
|
|
4
|
+
* Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1) so the
|
|
5
|
+
* handler files stay focused on logic.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
export declare const PAGES_LIST_OUTPUT_SCHEMA: z.ZodObject<{
|
|
11
|
+
items: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
12
|
+
total: z.ZodNumber;
|
|
13
|
+
etag: z.ZodOptional<z.ZodString>;
|
|
14
|
+
projected_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
|
+
available_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
16
|
+
unknown_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
export declare const SCHEMA_OUTPUT_SCHEMA: z.ZodObject<{
|
|
19
|
+
items: z.ZodArray<z.ZodObject<{
|
|
20
|
+
rel_path: z.ZodString;
|
|
21
|
+
path: z.ZodOptional<z.ZodString>;
|
|
22
|
+
element_type: z.ZodString;
|
|
23
|
+
label: z.ZodString;
|
|
24
|
+
has_binding: z.ZodBoolean;
|
|
25
|
+
}, z.core.$strip>>;
|
|
26
|
+
total: z.ZodNumber;
|
|
27
|
+
template_id: z.ZodString;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export declare const ETAG_OUTPUT_SCHEMA: z.ZodObject<{
|
|
30
|
+
etag: z.ZodString;
|
|
31
|
+
generated_at: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
export declare const TEMPLATE_SUMMARY_OUTPUT_SCHEMA: z.ZodObject<{
|
|
34
|
+
template_id: z.ZodString;
|
|
35
|
+
counts_by_type: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
36
|
+
bound_count: z.ZodNumber;
|
|
37
|
+
max_depth: z.ZodNumber;
|
|
38
|
+
total: z.ZodNumber;
|
|
39
|
+
named_sections: z.ZodArray<z.ZodObject<{
|
|
40
|
+
path: z.ZodString;
|
|
41
|
+
name: z.ZodString;
|
|
42
|
+
}, z.core.$strip>>;
|
|
43
|
+
etag: z.ZodString;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
/**
|
|
46
|
+
* Input shape for `yootheme_builder_pages_create`.
|
|
47
|
+
*
|
|
48
|
+
* Mirrors the args of `POST /pages` (Phase B).
|
|
49
|
+
*
|
|
50
|
+
* Design pins:
|
|
51
|
+
* - `post_type` is intentionally NOT exposed. Layer 9 defensive guard
|
|
52
|
+
* on the REST side rejects it server-side; surfacing it at the MCP
|
|
53
|
+
* boundary would invite a footgun where an agent tries to set it
|
|
54
|
+
* and fails confusingly.
|
|
55
|
+
* - `status` defaults to `draft` on the server (Q6 design — no public
|
|
56
|
+
* empty page).
|
|
57
|
+
* - `dry_run` triggers validation Layers 1+2+4 without persisting.
|
|
58
|
+
*/
|
|
59
|
+
export declare const PAGES_CREATE_INPUT: {
|
|
60
|
+
title: z.ZodString;
|
|
61
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
62
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
63
|
+
publish: "publish";
|
|
64
|
+
draft: "draft";
|
|
65
|
+
pending: "pending";
|
|
66
|
+
private: "private";
|
|
67
|
+
future: "future";
|
|
68
|
+
}>>;
|
|
69
|
+
layout: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
70
|
+
dry_run: z.ZodOptional<z.ZodBoolean>;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Wire shape for `yootheme_builder_pages_create` on success (non-dry-run).
|
|
74
|
+
*
|
|
75
|
+
* Mirrors the REST 201 response shape.
|
|
76
|
+
*
|
|
77
|
+
* Design pins:
|
|
78
|
+
* - `frontend_url` is nullable: REST returns null for fresh drafts
|
|
79
|
+
* before publish.
|
|
80
|
+
* - `template_id` is a plain string. The "page:{post_id}" prefix is
|
|
81
|
+
* enforced server-side; adding a `.startsWith()` here would buy no
|
|
82
|
+
* MCP-client value while adding Zod complexity.
|
|
83
|
+
* - `warnings` is a lean string array (e.g. "slug_collision_resolved"
|
|
84
|
+
* when WP auto-appends `-2`). The REST surface may expand this to
|
|
85
|
+
* richer objects in v1.3; strings keep the v1.2 surface minimal.
|
|
86
|
+
*/
|
|
87
|
+
export declare const PAGES_CREATE_OUTPUT_SCHEMA: z.ZodObject<{
|
|
88
|
+
page_id: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
article_id: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
title: z.ZodString;
|
|
91
|
+
slug: z.ZodString;
|
|
92
|
+
status: z.ZodString;
|
|
93
|
+
frontend_url: z.ZodNullable<z.ZodString>;
|
|
94
|
+
template_id: z.ZodString;
|
|
95
|
+
etag: z.ZodString;
|
|
96
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
/**
|
|
99
|
+
* Wire shape for `yootheme_builder_pages_create` when `dry_run:true`.
|
|
100
|
+
*
|
|
101
|
+
* Design pin: NO `etag` field. The B6 fix-cycle decision was that
|
|
102
|
+
* surfacing a "live" ETag with a dry-run response invites a stale-
|
|
103
|
+
* If-Match footgun (caller pins the ETag, then non-dry-run mutates,
|
|
104
|
+
* stale ETag rejected with 412). Dry-run is validation-only.
|
|
105
|
+
*
|
|
106
|
+
* `template_id_pattern` is a literal — the actual `template_id` cannot
|
|
107
|
+
* be materialised before WP allocates the post_id.
|
|
108
|
+
*/
|
|
109
|
+
export declare const PAGES_CREATE_DRY_RUN_OUTPUT_SCHEMA: z.ZodObject<{
|
|
110
|
+
dry_run: z.ZodLiteral<true>;
|
|
111
|
+
would_create: z.ZodObject<{
|
|
112
|
+
title: z.ZodString;
|
|
113
|
+
slug: z.ZodString;
|
|
114
|
+
status: z.ZodString;
|
|
115
|
+
template_id_pattern: z.ZodEnum<{
|
|
116
|
+
"page:{post_id}": "page:{post_id}";
|
|
117
|
+
"article:{article_id}": "article:{article_id}";
|
|
118
|
+
}>;
|
|
119
|
+
}, z.core.$strip>;
|
|
120
|
+
validation_report: z.ZodObject<{
|
|
121
|
+
layer_1_structural: z.ZodLiteral<"passed">;
|
|
122
|
+
layer_2_element_types: z.ZodLiteral<"passed">;
|
|
123
|
+
layer_4_renderer: z.ZodLiteral<"passed">;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
}, z.core.$strip>;
|
|
126
|
+
/**
|
|
127
|
+
* Input shape for `yootheme_builder_pages_delete`.
|
|
128
|
+
*
|
|
129
|
+
* Mirrors the args of `DELETE /pages/{post_id}` (Phase B).
|
|
130
|
+
*
|
|
131
|
+
* Design pin: `confirm` is `z.literal(true)`. This is the Zod-side
|
|
132
|
+
* enforcement of the confirm gate — the MCP boundary rejects requests
|
|
133
|
+
* without `confirm:true` before they ever hit the REST layer.
|
|
134
|
+
*
|
|
135
|
+
* `force` defaults to false server-side → wp_delete_post(trash). When
|
|
136
|
+
* true → hard delete (irrecoverable).
|
|
137
|
+
*/
|
|
138
|
+
export declare const PAGES_DELETE_INPUT: {
|
|
139
|
+
post_id: z.ZodNumber;
|
|
140
|
+
confirm: z.ZodLiteral<true>;
|
|
141
|
+
force: z.ZodOptional<z.ZodBoolean>;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Wire shape for `yootheme_builder_pages_delete` on success.
|
|
145
|
+
*
|
|
146
|
+
* `deleted` is `z.literal(true)` — the success-response invariant. A
|
|
147
|
+
* failed delete surfaces as `isError:true` with a structured-error
|
|
148
|
+
* envelope, not as `deleted:false`.
|
|
149
|
+
*/
|
|
150
|
+
export declare const PAGES_DELETE_OUTPUT_SCHEMA: z.ZodObject<{
|
|
151
|
+
deleted: z.ZodLiteral<true>;
|
|
152
|
+
page_id: z.ZodOptional<z.ZodNumber>;
|
|
153
|
+
article_id: z.ZodOptional<z.ZodNumber>;
|
|
154
|
+
force_deleted: z.ZodBoolean;
|
|
155
|
+
etag: z.ZodString;
|
|
156
|
+
}, z.core.$strip>;
|
|
157
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;iBA8BnC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAiB/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAWH,eAAO,MAAM,8BAA8B;;;;;;;;;;;iBAazC,CAAC;AAWH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CA6B9B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAqBlC,CAAC;AAEN;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;iBAe7C,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB;;;;CAiB9B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;;;;;iBAYlC,CAAC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page-tool output-schemas (Wave G.2 §4 structuredContent contracts).
|
|
3
|
+
*
|
|
4
|
+
* Split out of `src/tools/pages.ts` (Round-2 R2-A2-CRIT1) so the
|
|
5
|
+
* handler files stay focused on logic.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
export const PAGES_LIST_OUTPUT_SCHEMA = z.object({
|
|
11
|
+
// F-Frontend-URL (2026-05-25): each row carries `frontend_url`,
|
|
12
|
+
// `frontend_url_template`, `frontend_url_description` so an MCP-agent
|
|
13
|
+
// can answer "What is the URL of my <type> template?" without a
|
|
14
|
+
// follow-up REST call or operator input. Server-side resolvers
|
|
15
|
+
// (WordPress: get_permalink/get_term_link/get_author_posts_url; Joomla:
|
|
16
|
+
// RouteHelper::getArticleRoute/getCategoryRoute/getTagRoute) emit one
|
|
17
|
+
// of two shapes per row:
|
|
18
|
+
// - `frontend_url: <permalink>` + `frontend_url_template: null`
|
|
19
|
+
// when a canonical public URL exists (latest post / first category
|
|
20
|
+
// / first author etc.).
|
|
21
|
+
// - `frontend_url: null` + `frontend_url_template: <pattern>` when
|
|
22
|
+
// the URL needs a runtime parameter (search, 404-test) or when no
|
|
23
|
+
// public content of the matching type exists yet.
|
|
24
|
+
// `frontend_url_description` is a short human hint ("Append any non-
|
|
25
|
+
// existent path to test." / "Latest published post — rendered with
|
|
26
|
+
// this template.") so the agent can render an instruction to the
|
|
27
|
+
// end-user. All three keys are kept on the row-record (not an extra
|
|
28
|
+
// schema object) so per-item sparse-field projection works.
|
|
29
|
+
items: z.array(z.record(z.string(), z.unknown())),
|
|
30
|
+
total: z.number(),
|
|
31
|
+
etag: z.string().optional(),
|
|
32
|
+
projected_fields: z.array(z.string()).optional(),
|
|
33
|
+
// F-004 fix (2026-05-25 exhaustive audit): projection-feedback —
|
|
34
|
+
// emitted ONLY when the caller passed `fields[]`. `available_fields`
|
|
35
|
+
// is the discovered top-level field vocabulary; `unknown_fields` is
|
|
36
|
+
// the subset of requested fields that did NOT appear in any item
|
|
37
|
+
// (previously: items came back as `[{}, {}, …]` silently).
|
|
38
|
+
available_fields: z.array(z.string()).optional(),
|
|
39
|
+
unknown_fields: z.array(z.string()).optional(),
|
|
40
|
+
});
|
|
41
|
+
export const SCHEMA_OUTPUT_SCHEMA = z.object({
|
|
42
|
+
// F-006 (2026-05-26): `rel_path` is the agent-preferred path form
|
|
43
|
+
// (matches `element_list` + `page_get_layout` emit). `path` (the
|
|
44
|
+
// fully-qualified `/templates/<id>/layout/...` pointer) stays on the
|
|
45
|
+
// row for back-compat but is optional so callers reading the schema
|
|
46
|
+
// know `rel_path` is the canonical projection column.
|
|
47
|
+
items: z.array(z.object({
|
|
48
|
+
rel_path: z.string(),
|
|
49
|
+
path: z.string().optional(),
|
|
50
|
+
element_type: z.string(),
|
|
51
|
+
label: z.string(),
|
|
52
|
+
has_binding: z.boolean(),
|
|
53
|
+
})),
|
|
54
|
+
total: z.number(),
|
|
55
|
+
template_id: z.string(),
|
|
56
|
+
});
|
|
57
|
+
export const ETAG_OUTPUT_SCHEMA = z.object({
|
|
58
|
+
etag: z.string(),
|
|
59
|
+
generated_at: z.string().optional(),
|
|
60
|
+
});
|
|
61
|
+
// F-AUDIT-2 (2026-05-26): template_summary outputSchema. The handler
|
|
62
|
+
// passes the REST `/pages/{id}/summary` body through verbatim via
|
|
63
|
+
// `jsonResult(data)`. Live shape verified against the WP+Joomla dev
|
|
64
|
+
// hosts: `template_id`, `counts_by_type` (open-ended map element-type
|
|
65
|
+
// → count), `bound_count`, `max_depth`, `total`, `named_sections` (each
|
|
66
|
+
// `{path, name}`), and the `etag` string. NOTE: `_meta` is merged at
|
|
67
|
+
// the RESULT-LEVEL by `withSiteMeta`, NEVER into `structuredContent`
|
|
68
|
+
// (see results.ts W12-R2 commentary) — this schema therefore validates
|
|
69
|
+
// only the inner template-summary shape.
|
|
70
|
+
export const TEMPLATE_SUMMARY_OUTPUT_SCHEMA = z.object({
|
|
71
|
+
template_id: z.string(),
|
|
72
|
+
counts_by_type: z.record(z.string(), z.number().int().nonnegative()),
|
|
73
|
+
bound_count: z.number().int().nonnegative(),
|
|
74
|
+
max_depth: z.number().int().nonnegative(),
|
|
75
|
+
total: z.number().int().nonnegative(),
|
|
76
|
+
named_sections: z.array(z.object({
|
|
77
|
+
path: z.string(),
|
|
78
|
+
name: z.string(),
|
|
79
|
+
})),
|
|
80
|
+
etag: z.string(),
|
|
81
|
+
});
|
|
82
|
+
// ─── C1 — pages_create + pages_delete (v1.2) ──────────────────────────
|
|
83
|
+
//
|
|
84
|
+
// MCP tool schemas wrapping the Phase B REST endpoints:
|
|
85
|
+
// POST /pages → yootheme_builder_pages_create
|
|
86
|
+
// DELETE /pages/{post_id} → yootheme_builder_pages_delete
|
|
87
|
+
//
|
|
88
|
+
// These schemas drive (a) input validation at the MCP boundary and (b)
|
|
89
|
+
// the structured-content outputSchema for client introspection.
|
|
90
|
+
/**
|
|
91
|
+
* Input shape for `yootheme_builder_pages_create`.
|
|
92
|
+
*
|
|
93
|
+
* Mirrors the args of `POST /pages` (Phase B).
|
|
94
|
+
*
|
|
95
|
+
* Design pins:
|
|
96
|
+
* - `post_type` is intentionally NOT exposed. Layer 9 defensive guard
|
|
97
|
+
* on the REST side rejects it server-side; surfacing it at the MCP
|
|
98
|
+
* boundary would invite a footgun where an agent tries to set it
|
|
99
|
+
* and fails confusingly.
|
|
100
|
+
* - `status` defaults to `draft` on the server (Q6 design — no public
|
|
101
|
+
* empty page).
|
|
102
|
+
* - `dry_run` triggers validation Layers 1+2+4 without persisting.
|
|
103
|
+
*/
|
|
104
|
+
export const PAGES_CREATE_INPUT = {
|
|
105
|
+
title: z
|
|
106
|
+
.string()
|
|
107
|
+
.min(1)
|
|
108
|
+
.describe('Page title (required, byte-equal stored in post_title).'),
|
|
109
|
+
slug: z
|
|
110
|
+
.string()
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Optional explicit slug; defaults to sanitize_title($title).'),
|
|
113
|
+
status: z
|
|
114
|
+
.enum(['publish', 'draft', 'pending', 'private', 'future'])
|
|
115
|
+
.optional()
|
|
116
|
+
.describe('Initial post status. Default: draft (Q6 design — no public empty page).'),
|
|
117
|
+
layout: z
|
|
118
|
+
.record(z.string(), z.unknown())
|
|
119
|
+
.optional()
|
|
120
|
+
.describe('Optional initial YT layout. Default: {type:"layout",children:[]}.'),
|
|
121
|
+
dry_run: z
|
|
122
|
+
.boolean()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe('When true, runs validation Layers 1+2+4 without persisting.'),
|
|
125
|
+
// post_type intentionally NOT exposed — Layer 9 defensive guard rejects
|
|
126
|
+
// it server-side. Exposing it would invite footgun attempts.
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Wire shape for `yootheme_builder_pages_create` on success (non-dry-run).
|
|
130
|
+
*
|
|
131
|
+
* Mirrors the REST 201 response shape.
|
|
132
|
+
*
|
|
133
|
+
* Design pins:
|
|
134
|
+
* - `frontend_url` is nullable: REST returns null for fresh drafts
|
|
135
|
+
* before publish.
|
|
136
|
+
* - `template_id` is a plain string. The "page:{post_id}" prefix is
|
|
137
|
+
* enforced server-side; adding a `.startsWith()` here would buy no
|
|
138
|
+
* MCP-client value while adding Zod complexity.
|
|
139
|
+
* - `warnings` is a lean string array (e.g. "slug_collision_resolved"
|
|
140
|
+
* when WP auto-appends `-2`). The REST surface may expand this to
|
|
141
|
+
* richer objects in v1.3; strings keep the v1.2 surface minimal.
|
|
142
|
+
*/
|
|
143
|
+
export const PAGES_CREATE_OUTPUT_SCHEMA = z
|
|
144
|
+
.object({
|
|
145
|
+
// E1 cross-platform divergence: WP returns `page_id`, Joomla returns
|
|
146
|
+
// `article_id`. Both are positive ints; at least one is always present.
|
|
147
|
+
page_id: z.number().int().positive().optional(),
|
|
148
|
+
article_id: z.number().int().positive().optional(),
|
|
149
|
+
title: z.string(),
|
|
150
|
+
slug: z.string(),
|
|
151
|
+
status: z.string(),
|
|
152
|
+
frontend_url: z.string().nullable(),
|
|
153
|
+
template_id: z
|
|
154
|
+
.string()
|
|
155
|
+
.describe('Synthetic per-page template id, e.g. "page:3275" (WP) or "article:42" (Joomla).'),
|
|
156
|
+
etag: z.string(),
|
|
157
|
+
warnings: z
|
|
158
|
+
.array(z.string())
|
|
159
|
+
.describe('e.g. "slug_collision_resolved" when slug collision was resolved.'),
|
|
160
|
+
})
|
|
161
|
+
.refine((v) => typeof v.page_id === 'number' || typeof v.article_id === 'number', { message: 'response must contain either page_id (WP) or article_id (Joomla)' });
|
|
162
|
+
/**
|
|
163
|
+
* Wire shape for `yootheme_builder_pages_create` when `dry_run:true`.
|
|
164
|
+
*
|
|
165
|
+
* Design pin: NO `etag` field. The B6 fix-cycle decision was that
|
|
166
|
+
* surfacing a "live" ETag with a dry-run response invites a stale-
|
|
167
|
+
* If-Match footgun (caller pins the ETag, then non-dry-run mutates,
|
|
168
|
+
* stale ETag rejected with 412). Dry-run is validation-only.
|
|
169
|
+
*
|
|
170
|
+
* `template_id_pattern` is a literal — the actual `template_id` cannot
|
|
171
|
+
* be materialised before WP allocates the post_id.
|
|
172
|
+
*/
|
|
173
|
+
export const PAGES_CREATE_DRY_RUN_OUTPUT_SCHEMA = z.object({
|
|
174
|
+
dry_run: z.literal(true),
|
|
175
|
+
would_create: z.object({
|
|
176
|
+
title: z.string(),
|
|
177
|
+
slug: z.string(),
|
|
178
|
+
status: z.string(),
|
|
179
|
+
// E1 cross-platform divergence: WP returns 'page:{post_id}', Joomla returns 'article:{article_id}'.
|
|
180
|
+
template_id_pattern: z.enum(['page:{post_id}', 'article:{article_id}']),
|
|
181
|
+
}),
|
|
182
|
+
validation_report: z.object({
|
|
183
|
+
layer_1_structural: z.literal('passed'),
|
|
184
|
+
layer_2_element_types: z.literal('passed'),
|
|
185
|
+
layer_4_renderer: z.literal('passed'),
|
|
186
|
+
}),
|
|
187
|
+
// No `etag` field — by design (see B6 fix-cycle: stale-If-Match footgun).
|
|
188
|
+
});
|
|
189
|
+
/**
|
|
190
|
+
* Input shape for `yootheme_builder_pages_delete`.
|
|
191
|
+
*
|
|
192
|
+
* Mirrors the args of `DELETE /pages/{post_id}` (Phase B).
|
|
193
|
+
*
|
|
194
|
+
* Design pin: `confirm` is `z.literal(true)`. This is the Zod-side
|
|
195
|
+
* enforcement of the confirm gate — the MCP boundary rejects requests
|
|
196
|
+
* without `confirm:true` before they ever hit the REST layer.
|
|
197
|
+
*
|
|
198
|
+
* `force` defaults to false server-side → wp_delete_post(trash). When
|
|
199
|
+
* true → hard delete (irrecoverable).
|
|
200
|
+
*/
|
|
201
|
+
export const PAGES_DELETE_INPUT = {
|
|
202
|
+
post_id: z
|
|
203
|
+
.number()
|
|
204
|
+
.int()
|
|
205
|
+
.positive()
|
|
206
|
+
.describe('WP page post_id to delete.'),
|
|
207
|
+
confirm: z
|
|
208
|
+
.literal(true)
|
|
209
|
+
.describe('Must be true. Confirm gate prevents accidental deletes.'),
|
|
210
|
+
force: z
|
|
211
|
+
.boolean()
|
|
212
|
+
.optional()
|
|
213
|
+
.describe('If true, hard-deletes (wp_delete_post force=true). Default: trash (recoverable).'),
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* Wire shape for `yootheme_builder_pages_delete` on success.
|
|
217
|
+
*
|
|
218
|
+
* `deleted` is `z.literal(true)` — the success-response invariant. A
|
|
219
|
+
* failed delete surfaces as `isError:true` with a structured-error
|
|
220
|
+
* envelope, not as `deleted:false`.
|
|
221
|
+
*/
|
|
222
|
+
export const PAGES_DELETE_OUTPUT_SCHEMA = z
|
|
223
|
+
.object({
|
|
224
|
+
deleted: z.literal(true),
|
|
225
|
+
// E1 cross-platform divergence: WP returns page_id, Joomla returns article_id.
|
|
226
|
+
page_id: z.number().int().positive().optional(),
|
|
227
|
+
article_id: z.number().int().positive().optional(),
|
|
228
|
+
force_deleted: z.boolean(),
|
|
229
|
+
etag: z.string(),
|
|
230
|
+
})
|
|
231
|
+
.refine((v) => typeof v.page_id === 'number' || typeof v.article_id === 'number', { message: 'response must contain either page_id (WP) or article_id (Joomla)' });
|
|
232
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backward-compat shim for `src/tools/pages.ts`.
|
|
3
|
+
*
|
|
4
|
+
* The original 358-LoC module was split into `src/tools/pages/`
|
|
5
|
+
* (5 files, each ≤ 200 LoC) per Architecture §11 cap (Round-2
|
|
6
|
+
* R2-A2-CRIT1 audit fix). This shim preserves the public import path
|
|
7
|
+
* (`from '../../src/tools/pages.js'`) so all existing test imports
|
|
8
|
+
* and `tools/index.ts` keep working unchanged.
|
|
9
|
+
*
|
|
10
|
+
* @license MIT
|
|
11
|
+
*/
|
|
12
|
+
export * from './pages/index.js';
|
|
13
|
+
//# sourceMappingURL=pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backward-compat shim for `src/tools/pages.ts`.
|
|
3
|
+
*
|
|
4
|
+
* The original 358-LoC module was split into `src/tools/pages/`
|
|
5
|
+
* (5 files, each ≤ 200 LoC) per Architecture §11 cap (Round-2
|
|
6
|
+
* R2-A2-CRIT1 audit fix). This shim preserves the public import path
|
|
7
|
+
* (`from '../../src/tools/pages.js'`) so all existing test imports
|
|
8
|
+
* and `tools/index.ts` keep working unchanged.
|
|
9
|
+
*
|
|
10
|
+
* @license MIT
|
|
11
|
+
*/
|
|
12
|
+
export * from './pages/index.js';
|
|
13
|
+
//# sourceMappingURL=pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* W6.3 — shared helper for the per-handler `pool.resolve(site_id)`
|
|
3
|
+
* pattern.
|
|
4
|
+
*
|
|
5
|
+
* Every tool handler does the same dance:
|
|
6
|
+
* 1. Extract `site_id` from args (optional, undefined → default site).
|
|
7
|
+
* 2. Call `pool.resolve(site_id)`.
|
|
8
|
+
* 3. Translate `NoDefaultSiteError` / `UnknownSiteError` into a
|
|
9
|
+
* structured `errorResult` so the agent can self-recover.
|
|
10
|
+
* 4. Hand back `{client, site}` for downstream use.
|
|
11
|
+
*
|
|
12
|
+
* Centralising the dance keeps the 24 handler bodies short and ensures
|
|
13
|
+
* the error wording stays consistent across the tool surface.
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
import { type ClientPool, type PoolResolution } from '../sites/client-pool.js';
|
|
18
|
+
import type { ResolvedSite } from '../sites/registry.js';
|
|
19
|
+
import type { RestClient } from '../client.js';
|
|
20
|
+
import { type ToolResult } from './tool-builder.js';
|
|
21
|
+
/**
|
|
22
|
+
* Discriminated union returned by {@link resolveSiteOrError}: callers
|
|
23
|
+
* check the `ok` boolean before destructuring. When `ok === false`,
|
|
24
|
+
* the `error` field is a fully-formed `ToolResult` ready to be
|
|
25
|
+
* returned from the handler verbatim (no further wrapping needed).
|
|
26
|
+
*
|
|
27
|
+
* The dual-channel shape lets handlers keep their flat top-level
|
|
28
|
+
* control flow:
|
|
29
|
+
*
|
|
30
|
+
* const r = await resolveSiteOrError(pool, args.site_id);
|
|
31
|
+
* if (!r.ok) return r.error;
|
|
32
|
+
* const { client, site } = r;
|
|
33
|
+
* // ... existing logic ...
|
|
34
|
+
* return withSiteMeta(result, site);
|
|
35
|
+
*/
|
|
36
|
+
export type SiteResolution = {
|
|
37
|
+
readonly ok: true;
|
|
38
|
+
readonly client: PoolResolution['client'];
|
|
39
|
+
readonly site: PoolResolution['site'];
|
|
40
|
+
} | {
|
|
41
|
+
readonly ok: false;
|
|
42
|
+
readonly error: ToolResult;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a site_id through the pool, translating the W4 typed errors
|
|
46
|
+
* into structured `ToolResult` envelopes. Non-typed errors (genuine
|
|
47
|
+
* fetch failures during the platform probe, secret-resolver crashes,
|
|
48
|
+
* etc.) re-throw so the handler's outer try/catch can shape them with
|
|
49
|
+
* domain-specific hints.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveSiteOrError(pool: ClientPool, siteId: string | undefined): Promise<SiteResolution>;
|
|
52
|
+
/**
|
|
53
|
+
* W12-R2A (A4-F3 / A5-S2) — resolve a site + execute a handler-body with
|
|
54
|
+
* a 1-shot 401 retry.
|
|
55
|
+
*
|
|
56
|
+
* Bearer-rotation use case: a site's bearer is revoked / rotated /
|
|
57
|
+
* expired AFTER the pool cached a {@link RestClient} for it. The next
|
|
58
|
+
* call returns HTTP 401. Without retry the agent has to be told
|
|
59
|
+
* "restart your client". With retry we drop the cached client (so the
|
|
60
|
+
* next `pool.resolve` re-runs `secretResolver.resolve`), then call the
|
|
61
|
+
* handler-body again exactly once. If the second attempt also returns
|
|
62
|
+
* 401, we surface a structured `bearer_invalid` error with an
|
|
63
|
+
* actionable hint pointing at `sites_test` / sites.json.
|
|
64
|
+
*
|
|
65
|
+
* Scope: deliberately ONE retry. A second 401 means the bearer is
|
|
66
|
+
* genuinely revoked at the source — looping forever wastes tokens and
|
|
67
|
+
* masks the real problem.
|
|
68
|
+
*
|
|
69
|
+
* The wrapper handles {@link NoDefaultSiteError} / {@link
|
|
70
|
+
* UnknownSiteError} via the same `resolveSiteOrError` envelope so
|
|
71
|
+
* call-sites don't have to duplicate the structured-error wording.
|
|
72
|
+
* Non-401 thrown errors propagate to the handler's outer try/catch
|
|
73
|
+
* (or the SDK boundary) untouched — only HTTP 401 triggers the retry
|
|
74
|
+
* / structured-error path.
|
|
75
|
+
*
|
|
76
|
+
* Usage (post-migration):
|
|
77
|
+
*
|
|
78
|
+
* handler: async ({ site_id, ...rest }) =>
|
|
79
|
+
* withSiteRetry(pool, site_id, async (client, site) =>
|
|
80
|
+
* withSiteMeta(await handleX(makeDeps(client), rest), site)),
|
|
81
|
+
*/
|
|
82
|
+
export declare function withSiteRetry(pool: ClientPool, siteId: string | undefined, fn: (client: RestClient, site: ResolvedSite) => Promise<ToolResult>): Promise<ToolResult>;
|
|
83
|
+
//# sourceMappingURL=pool-resolve-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-resolve-helper.d.ts","sourceRoot":"","sources":["../../src/tools/pool-resolve-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACH,KAAK,UAAU,EAEf,KAAK,cAAc,EAEtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAAE,GACvG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACpC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,cAAc,CAAC,CAqDzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,aAAa,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,GACpE,OAAO,CAAC,UAAU,CAAC,CA8CrB"}
|