@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,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-binding write handlers (`element_bind_source`,
|
|
3
|
+
* `element_unbind_source`).
|
|
4
|
+
*
|
|
5
|
+
* Split out of `./handlers.ts` to keep each file under the 200-LoC
|
|
6
|
+
* budget. Wave G.4.2 adds destructive-confirm elicitation;
|
|
7
|
+
* Wave G.4.3 adds ambiguity-resolution elicitation.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { elicitChoice, elicitConfirmation } from '@getimo/mcp-toolkit';
|
|
12
|
+
import { encodeElementPath, encodeTemplateId } from '../../client.js';
|
|
13
|
+
import { RestError } from '../../errors.js';
|
|
14
|
+
import { flattenSourcesPayload, mapSourceRow, } from '../format/sources-format.js';
|
|
15
|
+
import { ambiguityFallbackError, } from '../elicitation.js';
|
|
16
|
+
import { confirmGuard, errorResult, jsonResult, } from '../tool-builder.js';
|
|
17
|
+
/**
|
|
18
|
+
* Wave-12 F9 — extract validation-hint fields surfaced by the WP REST
|
|
19
|
+
* plugin when `source_name` is rejected (`unknown_source` code). The PHP
|
|
20
|
+
* controller writes `given`, `did_you_mean`, and `all_published_sources`
|
|
21
|
+
* into the WP_Error data; WordPress serialises that under the response
|
|
22
|
+
* body's `data` key. Surface those hints into the tool-result `context`
|
|
23
|
+
* so the agent can correct + retry in one step.
|
|
24
|
+
*/
|
|
25
|
+
function extractUnknownSourceHints(body) {
|
|
26
|
+
if (body === null || typeof body !== 'object')
|
|
27
|
+
return null;
|
|
28
|
+
const root = body;
|
|
29
|
+
if (root.code !== 'yootheme_builder_mcp.source_binding.unknown_source')
|
|
30
|
+
return null;
|
|
31
|
+
const data = root.data;
|
|
32
|
+
if (data === null || typeof data !== 'object')
|
|
33
|
+
return null;
|
|
34
|
+
const d = data;
|
|
35
|
+
return {
|
|
36
|
+
given: typeof d.given === 'string' ? d.given : undefined,
|
|
37
|
+
did_you_mean: d.did_you_mean,
|
|
38
|
+
all_published_sources: d.all_published_sources,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// ─── element_bind_source (G.4.3 — ambiguity resolution) ─────────────
|
|
42
|
+
/**
|
|
43
|
+
* Look up sources matching `source_name`. Returns at most one row per
|
|
44
|
+
* (name + origin) tuple; cross-plugin name collisions yield multiple
|
|
45
|
+
* candidates that need disambiguation.
|
|
46
|
+
*
|
|
47
|
+
* TODO(v0.3): cache /sources per session to avoid the round-trip on
|
|
48
|
+
* every bind. The current "fetch on every bind" call is the only REST
|
|
49
|
+
* round-trip introduced by ambiguity resolution and dominates bind
|
|
50
|
+
* latency — see tests/perf/bind-latency.test.ts for the pin.
|
|
51
|
+
*/
|
|
52
|
+
async function fetchSourceCandidates(client, source_name) {
|
|
53
|
+
const data = await client.get('/sources');
|
|
54
|
+
const payload = data.sources ?? data;
|
|
55
|
+
const flat = flattenSourcesPayload(payload);
|
|
56
|
+
return flat.map(mapSourceRow).filter((r) => r.name === source_name);
|
|
57
|
+
}
|
|
58
|
+
export async function handleElementBindSource({ client, elicitation }, input) {
|
|
59
|
+
const { template_id, element_path, source_name, source_id, etag, bindingLevel, field_mappings } = input;
|
|
60
|
+
const encoded = encodeElementPath(element_path);
|
|
61
|
+
// Wave G.4.3 — ambiguity resolution.
|
|
62
|
+
//
|
|
63
|
+
// If `source_id` is supplied, the caller has already disambiguated;
|
|
64
|
+
// skip the /sources lookup entirely.
|
|
65
|
+
//
|
|
66
|
+
// Otherwise look up rows matching `source_name`:
|
|
67
|
+
// - 0 matches: fall through to the bind call; the REST plugin
|
|
68
|
+
// returns its own structured 404 with a precise hint (sources
|
|
69
|
+
// can be added between the lookup and the call).
|
|
70
|
+
// - 1 match: unique → bind directly.
|
|
71
|
+
// - ≥2 matches: cross-plugin collision (e.g. an apimapper flow
|
|
72
|
+
// AND a wordpress source both named "Posts"). Elicit a choice
|
|
73
|
+
// on supporting hosts; on unsupported hosts, return a
|
|
74
|
+
// structured `ambiguityFallbackError` listing every candidate
|
|
75
|
+
// so the agent can retry with `source_id`.
|
|
76
|
+
let resolvedBody = { source_name };
|
|
77
|
+
if (bindingLevel !== undefined) {
|
|
78
|
+
resolvedBody.bindingLevel = bindingLevel;
|
|
79
|
+
}
|
|
80
|
+
if (field_mappings !== undefined) {
|
|
81
|
+
resolvedBody.field_mappings = field_mappings;
|
|
82
|
+
}
|
|
83
|
+
if (source_id === undefined) {
|
|
84
|
+
const candidates = await fetchSourceCandidates(client, source_name);
|
|
85
|
+
if (candidates.length > 1) {
|
|
86
|
+
const elicitCandidates = candidates.map((c) => ({
|
|
87
|
+
id: `${c.origin}:${c.name}`,
|
|
88
|
+
label: `${c.label || c.name} (${c.origin}${c.kind ? `/${c.kind}` : ''})`,
|
|
89
|
+
}));
|
|
90
|
+
const picked = elicitation
|
|
91
|
+
? await elicitChoice(elicitation, `Multiple sources named "${source_name}" exist. Pick which ` +
|
|
92
|
+
`one to bind to "${element_path}".`, elicitCandidates.map((c) => c.id))
|
|
93
|
+
: null;
|
|
94
|
+
if (picked === null) {
|
|
95
|
+
return ambiguityFallbackError({
|
|
96
|
+
code: 'source_ambiguous',
|
|
97
|
+
paramName: 'source_id',
|
|
98
|
+
what: 'sources',
|
|
99
|
+
candidates: elicitCandidates,
|
|
100
|
+
context: { template_id, element_path, source_name },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
resolvedBody = { ...resolvedBody, source_id: picked };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
resolvedBody = { ...resolvedBody, source_id };
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const data = await client.put(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`, { body: resolvedBody, etag });
|
|
111
|
+
return jsonResult(data);
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
// Wave-12 F9 — surface unknown-source hints directly into the
|
|
115
|
+
// result context so the agent can correct the source_name and
|
|
116
|
+
// retry in one step instead of guessing.
|
|
117
|
+
const baseContext = {
|
|
118
|
+
template_id,
|
|
119
|
+
element_path,
|
|
120
|
+
source_name,
|
|
121
|
+
...(source_id ? { source_id } : {}),
|
|
122
|
+
};
|
|
123
|
+
if (e instanceof RestError) {
|
|
124
|
+
const hints = extractUnknownSourceHints(e.body);
|
|
125
|
+
if (hints !== null) {
|
|
126
|
+
if (hints.did_you_mean !== undefined) {
|
|
127
|
+
baseContext.did_you_mean = hints.did_you_mean;
|
|
128
|
+
}
|
|
129
|
+
if (hints.all_published_sources !== undefined) {
|
|
130
|
+
baseContext.all_published_sources = hints.all_published_sources;
|
|
131
|
+
}
|
|
132
|
+
return errorResult({
|
|
133
|
+
error: e,
|
|
134
|
+
context: baseContext,
|
|
135
|
+
hint: 'source_name does not match any published source. Pick from ' +
|
|
136
|
+
'`all_published_sources` (full list) or `did_you_mean` (closest matches) ' +
|
|
137
|
+
'in the context, or run yootheme_builder_sources_list to refresh.',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return errorResult({
|
|
142
|
+
error: e,
|
|
143
|
+
context: baseContext,
|
|
144
|
+
hint: 'Verify source_name via yootheme_builder_sources_list. On 412 ' +
|
|
145
|
+
'refresh ETag and retry.',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// ─── element_unbind_source (destructive — G.4.2) ────────────────────
|
|
150
|
+
export async function handleElementUnbindSource({ client, elicitation }, input) {
|
|
151
|
+
const { template_id, element_path, etag, confirm } = input;
|
|
152
|
+
if (confirm !== true) {
|
|
153
|
+
if (confirm === false || !elicitation) {
|
|
154
|
+
return confirmGuard({
|
|
155
|
+
operation: 'unbind source',
|
|
156
|
+
details: { template_id, element_path },
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
const accepted = await elicitConfirmation(elicitation, `Unbind the dynamic source from element "${element_path}" in template ` +
|
|
160
|
+
`"${template_id}"? This may break dynamic-content rendering.`);
|
|
161
|
+
if (!accepted) {
|
|
162
|
+
return confirmGuard({
|
|
163
|
+
operation: 'unbind source',
|
|
164
|
+
details: { template_id, element_path },
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const encoded = encodeElementPath(element_path);
|
|
169
|
+
try {
|
|
170
|
+
const data = await client.delete(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`, { etag });
|
|
171
|
+
return jsonResult(data);
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
return errorResult({
|
|
175
|
+
error: e,
|
|
176
|
+
context: { template_id, element_path },
|
|
177
|
+
hint: 'On 412 refresh via yootheme_builder_get_etag and retry.',
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=handlers-bind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers-bind.js","sourceRoot":"","sources":["../../../src/tools/sources/handlers-bind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-binding read handlers + shared types/schemas.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `src/tools/sources.ts` (Wave G.4.0b). Write handlers
|
|
5
|
+
* (`element_bind_source` with G.4.3 ambiguity resolution,
|
|
6
|
+
* `element_unbind_source` with G.4.2 elicit-confirm) live in
|
|
7
|
+
* `./handlers-bind.ts`.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import { type RestClient } from '../../client.js';
|
|
13
|
+
import type { McpServerWithElicitation } from '../elicitation.js';
|
|
14
|
+
import { type ToolResult } from '../tool-builder.js';
|
|
15
|
+
export declare const SOURCES_LIST_OUTPUT_SCHEMA: z.ZodObject<{
|
|
16
|
+
items: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
17
|
+
total: z.ZodNumber;
|
|
18
|
+
projected_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
19
|
+
available_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
20
|
+
unknown_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export declare const BINDING_OUTPUT_SCHEMA: z.ZodObject<{
|
|
23
|
+
template_id: z.ZodString;
|
|
24
|
+
element_path: z.ZodString;
|
|
25
|
+
binding: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
26
|
+
has_binding: z.ZodBoolean;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export interface SourcesHandlerDeps {
|
|
29
|
+
readonly client: RestClient;
|
|
30
|
+
/**
|
|
31
|
+
* Optional MCP elicitation capability. When present,
|
|
32
|
+
* `element_unbind_source` prompts for destructive confirmation and
|
|
33
|
+
* `element_bind_source` prompts for cross-plugin disambiguation
|
|
34
|
+
* via the elicitation channel. When absent, both fall back to
|
|
35
|
+
* structured-error / preview flows.
|
|
36
|
+
*/
|
|
37
|
+
readonly elicitation?: McpServerWithElicitation;
|
|
38
|
+
}
|
|
39
|
+
export declare function handleSourcesList({ client }: SourcesHandlerDeps, { fields }: {
|
|
40
|
+
fields?: readonly string[];
|
|
41
|
+
}): Promise<ToolResult>;
|
|
42
|
+
export declare function handleElementGetBinding({ client }: SourcesHandlerDeps, { template_id, element_path }: {
|
|
43
|
+
template_id: string;
|
|
44
|
+
element_path: string;
|
|
45
|
+
}): Promise<ToolResult>;
|
|
46
|
+
export { handleElementBindSource, handleElementUnbindSource, } from './handlers-bind.js';
|
|
47
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQvF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAOlE,OAAO,EAGH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,0BAA0B;;;;;;iBAOrC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;iBAKhC,CAAC;AAEH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACnD;AAID,wBAAsB,iBAAiB,CACnC,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAC9B,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC3C,OAAO,CAAC,UAAU,CAAC,CAyCrB;AAID,wBAAsB,uBAAuB,CACzC,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAC9B,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAID,OAAO,EACH,uBAAuB,EACvB,yBAAyB,GAC5B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-binding read handlers + shared types/schemas.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `src/tools/sources.ts` (Wave G.4.0b). Write handlers
|
|
5
|
+
* (`element_bind_source` with G.4.3 ambiguity resolution,
|
|
6
|
+
* `element_unbind_source` with G.4.2 elicit-confirm) live in
|
|
7
|
+
* `./handlers-bind.ts`.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { detailResult, tableResult } from '@getimo/mcp-toolkit';
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { encodeElementPath, encodeTemplateId } from '../../client.js';
|
|
14
|
+
import { SOURCES_TABLE_COLUMNS, buildBindingDetail, flattenSourcesPayload, mapSourceRow, remapOriginForPlatform, } from '../format/sources-format.js';
|
|
15
|
+
import { DEFAULT_FIELDS_SOURCES_LIST, projectFields, projectedFieldsEcho, projectionFeedback, } from '../sparse-fields.js';
|
|
16
|
+
import { errorResult, structuredResult, } from '../tool-builder.js';
|
|
17
|
+
// ─── outputSchemas (Wave G.2 §4) ─────────────────────────────────────
|
|
18
|
+
export const SOURCES_LIST_OUTPUT_SCHEMA = z.object({
|
|
19
|
+
items: z.array(z.record(z.string(), z.unknown())),
|
|
20
|
+
total: z.number(),
|
|
21
|
+
projected_fields: z.array(z.string()).optional(),
|
|
22
|
+
// F-004 fix (2026-05-25 exhaustive audit): see sparse-fields::projectionFeedback.
|
|
23
|
+
available_fields: z.array(z.string()).optional(),
|
|
24
|
+
unknown_fields: z.array(z.string()).optional(),
|
|
25
|
+
});
|
|
26
|
+
export const BINDING_OUTPUT_SCHEMA = z.object({
|
|
27
|
+
template_id: z.string(),
|
|
28
|
+
element_path: z.string(),
|
|
29
|
+
binding: z.record(z.string(), z.unknown()),
|
|
30
|
+
has_binding: z.boolean(),
|
|
31
|
+
});
|
|
32
|
+
// ─── sources_list ────────────────────────────────────────────────────
|
|
33
|
+
export async function handleSourcesList({ client }, { fields }) {
|
|
34
|
+
try {
|
|
35
|
+
const data = await client.get('/sources');
|
|
36
|
+
const payload = data.sources ?? data;
|
|
37
|
+
const flat = flattenSourcesPayload(payload);
|
|
38
|
+
// F-A5-1 (v1.1.5): the Joomla REST plugin tags native sources
|
|
39
|
+
// (Article / Category / Tag) with the legacy `wordpress` group
|
|
40
|
+
// key. Remap to `joomla` based on the bound client's platform
|
|
41
|
+
// so agents reasoning across WP+Joomla sites get truthful
|
|
42
|
+
// origins. See `remapOriginForPlatform` for the rationale.
|
|
43
|
+
const remapped = remapOriginForPlatform(flat, client.getPlatform().kind);
|
|
44
|
+
const mapped = remapped.map(mapSourceRow);
|
|
45
|
+
const mappedRecords = mapped;
|
|
46
|
+
const items = projectFields(mappedRecords, fields, DEFAULT_FIELDS_SOURCES_LIST);
|
|
47
|
+
const echo = projectedFieldsEcho(fields, DEFAULT_FIELDS_SOURCES_LIST);
|
|
48
|
+
const feedback = projectionFeedback(mappedRecords, fields);
|
|
49
|
+
const unknownNote = feedback !== undefined && feedback.unknown_fields.length > 0
|
|
50
|
+
? ` (unknown fields ignored: ${feedback.unknown_fields.join(', ')}; available: ${feedback.available_fields.join(', ')})`
|
|
51
|
+
: '';
|
|
52
|
+
const toolkitResult = tableResult(mappedRecords, {
|
|
53
|
+
columns: [...SOURCES_TABLE_COLUMNS],
|
|
54
|
+
header: (count) => `${String(count)} sources${unknownNote}`,
|
|
55
|
+
footer: 'Use yootheme_builder_element_bind_source to bind one.',
|
|
56
|
+
});
|
|
57
|
+
return structuredResult(toolkitResult, {
|
|
58
|
+
items,
|
|
59
|
+
total: items.length,
|
|
60
|
+
...(echo !== undefined ? { projected_fields: [...echo] } : {}),
|
|
61
|
+
...(feedback !== undefined ? {
|
|
62
|
+
available_fields: [...feedback.available_fields],
|
|
63
|
+
unknown_fields: [...feedback.unknown_fields],
|
|
64
|
+
} : {}),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
return errorResult({
|
|
69
|
+
error: e,
|
|
70
|
+
context: {},
|
|
71
|
+
hint: 'Run yootheme_builder_diagnose to verify auth.',
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// ─── element_get_binding ─────────────────────────────────────────────
|
|
76
|
+
export async function handleElementGetBinding({ client }, { template_id, element_path }) {
|
|
77
|
+
const encoded = encodeElementPath(element_path);
|
|
78
|
+
try {
|
|
79
|
+
const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`);
|
|
80
|
+
const binding = data !== null && typeof data === 'object' ? data : {};
|
|
81
|
+
// F-01-Mapping (Audit v4): trust the BE-computed `has_binding`
|
|
82
|
+
// flag (BindingSerializer SSoT) — it also flips true for an
|
|
83
|
+
// item-level binding that has field_mappings but no source_name.
|
|
84
|
+
// Fall back to the source_name heuristic only when absent.
|
|
85
|
+
const hasBinding = typeof binding.has_binding === 'boolean'
|
|
86
|
+
? binding.has_binding
|
|
87
|
+
: typeof binding.source_name === 'string' &&
|
|
88
|
+
binding.source_name.length > 0;
|
|
89
|
+
const toolkitResult = detailResult(buildBindingDetail({ template_id, element_path, binding }));
|
|
90
|
+
return structuredResult(toolkitResult, {
|
|
91
|
+
template_id,
|
|
92
|
+
element_path,
|
|
93
|
+
binding,
|
|
94
|
+
has_binding: hasBinding,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
return errorResult({
|
|
99
|
+
error: e,
|
|
100
|
+
context: { template_id, element_path },
|
|
101
|
+
hint: 'Verify element_path via yootheme_builder_element_list.',
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Re-export write handlers so builders can import everything from this
|
|
106
|
+
// barrel and we keep a single `SourcesHandlerDeps` definition.
|
|
107
|
+
export { handleElementBindSource, handleElementUnbindSource, } from './handlers-bind.js';
|
|
108
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/sources/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-tool barrel — public entry-point for the 4 source-binding tools.
|
|
3
|
+
*
|
|
4
|
+
* yootheme_builder_sources_list
|
|
5
|
+
* → list available Builder sources
|
|
6
|
+
* yootheme_builder_element_get_binding
|
|
7
|
+
* → read source binding on an element
|
|
8
|
+
* yootheme_builder_element_bind_source
|
|
9
|
+
* → set source binding (PUT; G.4.3 ambiguity resolution)
|
|
10
|
+
* yootheme_builder_element_unbind_source
|
|
11
|
+
* → remove binding (DELETE; G.4.2 elicit-confirm)
|
|
12
|
+
*
|
|
13
|
+
* Wave G.4.0b — split out of the original `src/tools/sources.ts`.
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
export { buildSourcesTools } from './builders.js';
|
|
18
|
+
export type { SourcesHandlerDeps } from './handlers.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-tool barrel — public entry-point for the 4 source-binding tools.
|
|
3
|
+
*
|
|
4
|
+
* yootheme_builder_sources_list
|
|
5
|
+
* → list available Builder sources
|
|
6
|
+
* yootheme_builder_element_get_binding
|
|
7
|
+
* → read source binding on an element
|
|
8
|
+
* yootheme_builder_element_bind_source
|
|
9
|
+
* → set source binding (PUT; G.4.3 ambiguity resolution)
|
|
10
|
+
* yootheme_builder_element_unbind_source
|
|
11
|
+
* → remove binding (DELETE; G.4.2 elicit-confirm)
|
|
12
|
+
*
|
|
13
|
+
* Wave G.4.0b — split out of the original `src/tools/sources.ts`.
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
export { buildSourcesTools } from './builders.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/sources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backwards-compatible re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* Wave G.4.0b split the original 228-LoC `sources.ts` into
|
|
5
|
+
* `./sources/{index, handlers, builders}.ts` after Wave G.4.2/G.4.3
|
|
6
|
+
* added elicitation + ambiguity-resolution logic that pushed it well
|
|
7
|
+
* over the 200-LoC budget. This shim keeps the legacy import path
|
|
8
|
+
* (`from '../tools/sources.js'`) working for downstream callers and
|
|
9
|
+
* tests. New code should import from `./sources/index.js` directly.
|
|
10
|
+
*
|
|
11
|
+
* @license MIT
|
|
12
|
+
*/
|
|
13
|
+
export { buildSourcesTools } from './sources/index.js';
|
|
14
|
+
//# sourceMappingURL=sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/tools/sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backwards-compatible re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* Wave G.4.0b split the original 228-LoC `sources.ts` into
|
|
5
|
+
* `./sources/{index, handlers, builders}.ts` after Wave G.4.2/G.4.3
|
|
6
|
+
* added elicitation + ambiguity-resolution logic that pushed it well
|
|
7
|
+
* over the 200-LoC budget. This shim keeps the legacy import path
|
|
8
|
+
* (`from '../tools/sources.js'`) working for downstream callers and
|
|
9
|
+
* tests. New code should import from `./sources/index.js` directly.
|
|
10
|
+
*
|
|
11
|
+
* @license MIT
|
|
12
|
+
*/
|
|
13
|
+
export { buildSourcesTools } from './sources/index.js';
|
|
14
|
+
//# sourceMappingURL=sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/tools/sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sparse-fields helper — projects per-item field whitelists onto tool
|
|
3
|
+
* responses and exposes per-tool default-sets that the AI client can rely
|
|
4
|
+
* on when calling read tools without a `fields` parameter.
|
|
5
|
+
*
|
|
6
|
+
* Design references:
|
|
7
|
+
*
|
|
8
|
+
* - §3.5 Sparse-Fields Adaption: 4 read tools opt-in to `fields[]`;
|
|
9
|
+
* the toolkit's `pickFields` is used directly; `projected_fields` is
|
|
10
|
+
* echoed in the result envelope so the LLM can confirm exactly which
|
|
11
|
+
* keys were kept.
|
|
12
|
+
* - §4.4.1 — when used together with `flat: true` projection runs
|
|
13
|
+
* AFTER the depth-first walk so paths are stable before narrowing.
|
|
14
|
+
*
|
|
15
|
+
* Reference implementation pattern: `connections.ts:721, 779-792, 810`
|
|
16
|
+
* in `@wootsup/apimapper-mcp`.
|
|
17
|
+
*
|
|
18
|
+
* The defaults are pure constants so they can be imported, exported, and
|
|
19
|
+
* asserted against in tests without any side-effects.
|
|
20
|
+
*
|
|
21
|
+
* @license MIT
|
|
22
|
+
*/
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
/**
|
|
25
|
+
* Optional whitelist of fields. Per Design §3.5 the cap is 40 to stop
|
|
26
|
+
* runaway prompts from blowing up the request size; nested paths
|
|
27
|
+
* (`props.title`) are supported by the toolkit's `pickFields`.
|
|
28
|
+
*/
|
|
29
|
+
export declare const FIELDS: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
|
+
/**
|
|
31
|
+
* Flag enabling client-side flattening on `page_get_layout`. When true
|
|
32
|
+
* the response shape switches from `{layout, etag}` to
|
|
33
|
+
* `{elements: [...], etag}` and `fields[]` projection becomes meaningful.
|
|
34
|
+
*/
|
|
35
|
+
export declare const FLAT: z.ZodDefault<z.ZodBoolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Default fields echoed when the caller omits `fields`. Following the
|
|
38
|
+
* apimapper-mcp convention these are **echo-only** — projection itself
|
|
39
|
+
* is skipped (default-all preserved) but `projected_fields` still
|
|
40
|
+
* surfaces the implicit compact set so the AI can plan future requests.
|
|
41
|
+
*/
|
|
42
|
+
export declare const DEFAULT_FIELDS_PAGES_LIST: readonly string[];
|
|
43
|
+
export declare const DEFAULT_FIELDS_ELEMENT_LIST: readonly string[];
|
|
44
|
+
export declare const DEFAULT_FIELDS_SCHEMA: readonly string[];
|
|
45
|
+
export declare const DEFAULT_FIELDS_SOURCES_LIST: readonly string[];
|
|
46
|
+
export declare const DEFAULT_FIELDS_TYPES_LIST: readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* element_get defaults to "all" because the AI often needs the full
|
|
49
|
+
* props payload for follow-up edits; sparse projection here is opt-in
|
|
50
|
+
* with nested-path support.
|
|
51
|
+
*/
|
|
52
|
+
export declare const DEFAULT_FIELDS_ELEMENT_GET: readonly string[] | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Project an array of items to the requested fields. Returns items
|
|
55
|
+
* unchanged when `fields` is undefined (default-all). Skips non-object
|
|
56
|
+
* entries without crashing (they pass through as-is).
|
|
57
|
+
*
|
|
58
|
+
* @param items - The items to project.
|
|
59
|
+
* @param fields - The whitelist; `undefined` skips projection.
|
|
60
|
+
* @param _defaults - Per-tool default set, accepted for interface symmetry
|
|
61
|
+
* with `projectedFieldsEcho` (unused for actual projection — default-all
|
|
62
|
+
* semantics matches the apimapper-mcp reference, see `connections.ts:789`).
|
|
63
|
+
*/
|
|
64
|
+
export declare function projectFields<T extends Record<string, unknown>>(items: readonly T[], fields: readonly string[] | undefined, _defaults: readonly string[]): T[];
|
|
65
|
+
/**
|
|
66
|
+
* Project a single object via the same `pickFields` rules. Returns the
|
|
67
|
+
* object unchanged when `fields` is undefined.
|
|
68
|
+
*/
|
|
69
|
+
export declare function projectFieldsSingle<T extends Record<string, unknown>>(obj: T, fields: readonly string[] | undefined, _defaults: readonly string[] | undefined): T;
|
|
70
|
+
/**
|
|
71
|
+
* Compute the `projected_fields` echo. Returns the caller-requested
|
|
72
|
+
* fields when provided; otherwise returns the per-tool default set so
|
|
73
|
+
* the AI client knows exactly which compact view it implicitly opted into.
|
|
74
|
+
*
|
|
75
|
+
* @returns `undefined` only when neither `requested` nor `defaults` was set
|
|
76
|
+
* (e.g. `element_get` with no opt-in) — callers should omit
|
|
77
|
+
* `projected_fields` from the structuredContent in that case.
|
|
78
|
+
*/
|
|
79
|
+
export declare function projectedFieldsEcho(requested: readonly string[] | undefined, defaults: readonly string[] | undefined): readonly string[] | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Per-item projection feedback for the LLM/agent.
|
|
82
|
+
*
|
|
83
|
+
* F-004/F-005 fix (2026-05-25 exhaustive audit): when the caller passes
|
|
84
|
+
* `fields: ["template_id", "name"]` against `pages_list` (whose actual
|
|
85
|
+
* item shape uses `id` + `label`), the previous projection returned
|
|
86
|
+
* `items: [{}, {}, …]` with zero indication that NOTHING matched. The
|
|
87
|
+
* silence cost an entire follow-up debug round in cold-agent flows. We
|
|
88
|
+
* now surface the field vocabulary every call so the agent can self-
|
|
89
|
+
* correct on the next request:
|
|
90
|
+
*
|
|
91
|
+
* - `available_fields`: union of top-level keys observed across items
|
|
92
|
+
* (best-effort vocabulary discovery without needing per-tool enums).
|
|
93
|
+
* - `unknown_fields`: caller-requested fields that did NOT appear in
|
|
94
|
+
* any item — explicit "you asked for these but they aren't a thing".
|
|
95
|
+
*
|
|
96
|
+
* Both are only emitted when the caller supplied `fields[]`; default-
|
|
97
|
+
* compact callers don't need the audit overhead.
|
|
98
|
+
*/
|
|
99
|
+
export interface ProjectionFeedback {
|
|
100
|
+
/** Union of top-level keys observed across items. */
|
|
101
|
+
readonly available_fields: readonly string[];
|
|
102
|
+
/** Caller-requested fields that did NOT appear in any item. */
|
|
103
|
+
readonly unknown_fields: readonly string[];
|
|
104
|
+
}
|
|
105
|
+
export declare function projectionFeedback(items: readonly Record<string, unknown>[], requested: readonly string[] | undefined): ProjectionFeedback | undefined;
|
|
106
|
+
//# sourceMappingURL=sparse-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-fields.d.ts","sourceRoot":"","sources":["../../src/tools/sparse-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AACH,eAAO,MAAM,MAAM,wCASd,CAAC;AAEN;;;;GAIG;AACH,eAAO,MAAM,IAAI,4BAMZ,CAAC;AAIN;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAMtD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAIlD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAKxD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAKtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAAE,GAAG,SAAqB,CAAC;AAInF;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACrC,SAAS,EAAE,SAAS,MAAM,EAAE,GAC7B,CAAC,EAAE,CAWL;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACrC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACzC,CAAC,CAQH;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACxC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACxC,SAAS,MAAM,EAAE,GAAG,SAAS,CAI/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,kBAAkB;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACzC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACzC,kBAAkB,GAAG,SAAS,CAkBhC"}
|