@wootsup/yt-builder-mcp 1.1.6 → 1.1.7
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/dist/auth.d.ts +119 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +226 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +84 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +151 -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 +53 -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 +56 -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 +80 -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 +194 -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 +52 -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 +38 -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 +44 -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 +52 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +72 -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 +69 -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 +41 -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 +94 -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 +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +111 -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 +152 -0
- package/dist/setup-cli.d.ts.map +1 -0
- package/dist/setup-cli.js +870 -0
- package/dist/setup-cli.js.map +1 -0
- package/dist/setup-prompts.d.ts +41 -0
- package/dist/setup-prompts.d.ts.map +1 -0
- package/dist/setup-prompts.js +146 -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/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 +124 -0
- package/dist/sites/client-pool.d.ts.map +1 -0
- package/dist/sites/client-pool.js +172 -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 +30 -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/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 +199 -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 +148 -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 +194 -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 +59 -0
- package/dist/tools/format/inspection-format.d.ts.map +1 -0
- package/dist/tools/format/inspection-format.js +303 -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 +208 -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 +78 -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/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 +41 -0
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/inspect-handler.js +50 -0
- package/dist/tools/multi-items/inspect-handler.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 +14 -0
- package/dist/tools/pages/builders.d.ts.map +1 -0
- package/dist/tools/pages/builders.js +136 -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 +203 -0
- package/dist/tools/pages/handlers-read.js.map +1 -0
- package/dist/tools/pages/handlers-write.d.ts +21 -0
- package/dist/tools/pages/handlers-write.d.ts.map +1 -0
- package/dist/tools/pages/handlers-write.js +52 -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 +45 -0
- package/dist/tools/pages/schemas.d.ts.map +1 -0
- package/dist/tools/pages/schemas.js +82 -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 +59 -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 +129 -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/package.json +2 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sources format-sidecar — pure transforms for `sources_list` (table) and
|
|
3
|
+
* `element_get_binding` (detail). Wave G.2.7 (Design §3.2 rows 16 / 17).
|
|
4
|
+
*
|
|
5
|
+
* @license MIT
|
|
6
|
+
*/
|
|
7
|
+
// ─── sources_list columns (Design §3.2 row 16) ───────────────────────
|
|
8
|
+
export const SOURCES_TABLE_COLUMNS = [
|
|
9
|
+
{ key: 'name', label: 'NAME', width: 36, llmOnly: true },
|
|
10
|
+
{ key: 'label', label: 'LABEL', width: 28 },
|
|
11
|
+
{ key: 'origin', label: 'ORIGIN', width: 12 },
|
|
12
|
+
{ key: 'kind', label: 'KIND', width: 10 },
|
|
13
|
+
];
|
|
14
|
+
// ─── Row mapper ──────────────────────────────────────────────────────
|
|
15
|
+
function asString(v) {
|
|
16
|
+
return typeof v === 'string' ? v : '';
|
|
17
|
+
}
|
|
18
|
+
export function mapSourceRow(input) {
|
|
19
|
+
return {
|
|
20
|
+
name: asString(input.name),
|
|
21
|
+
label: asString(input.label),
|
|
22
|
+
origin: asString(input.origin),
|
|
23
|
+
// F-04 Kleinkram (Audit v2): BE returns `type` (GraphQL type name
|
|
24
|
+
// from the YT source-provider), not `kind`. Fall back so the
|
|
25
|
+
// column populates without needing a BE rename.
|
|
26
|
+
kind: asString(input.kind !== undefined && input.kind !== '' ? input.kind : input.type),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The REST plugin exposes sources EITHER as a grouped object
|
|
31
|
+
* `{apimapper:[…], wordpress:[…], essentials:[…], joomla:[…]}` OR
|
|
32
|
+
* (post-refactor) as a flat array of `{name, label, origin, kind}`.
|
|
33
|
+
* This helper normalises both into a flat array — flattening adds
|
|
34
|
+
* `origin` from the group key when absent.
|
|
35
|
+
*
|
|
36
|
+
* F-A5-1 (v1.1.5): `joomla` is included so Joomla's native content
|
|
37
|
+
* sources (Article, Category, Tag, etc.) flow through when the host
|
|
38
|
+
* plugin uses that group key. See also {@link remapOriginForPlatform}
|
|
39
|
+
* for the per-platform normalisation applied after flattening.
|
|
40
|
+
*/
|
|
41
|
+
const KNOWN_ORIGINS = ['apimapper', 'wordpress', 'essentials', 'joomla'];
|
|
42
|
+
export function flattenSourcesPayload(payload) {
|
|
43
|
+
if (Array.isArray(payload)) {
|
|
44
|
+
return payload.filter((x) => x !== null && typeof x === 'object');
|
|
45
|
+
}
|
|
46
|
+
if (payload !== null && typeof payload === 'object') {
|
|
47
|
+
const out = [];
|
|
48
|
+
const obj = payload;
|
|
49
|
+
for (const origin of KNOWN_ORIGINS) {
|
|
50
|
+
const group = obj[origin];
|
|
51
|
+
if (Array.isArray(group)) {
|
|
52
|
+
for (const item of group) {
|
|
53
|
+
if (item !== null && typeof item === 'object') {
|
|
54
|
+
const rec = item;
|
|
55
|
+
out.push({ origin, ...rec });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* F-A5-1 (v1.1.5) — Joomla content sources arrive tagged with
|
|
66
|
+
* `origin: "wordpress"` because YT Pro historically uses that group
|
|
67
|
+
* key for "host-CMS-native" sources. On Joomla that label is wrong:
|
|
68
|
+
* `Article` / `Category` / `Tag` are Joomla concepts, not WordPress.
|
|
69
|
+
*
|
|
70
|
+
* The MCP server knows the bound client's platform via
|
|
71
|
+
* {@link RestClient.getPlatform}, so we remap unconditionally:
|
|
72
|
+
*
|
|
73
|
+
* platform === 'joomla' AND origin === 'wordpress' → 'joomla'
|
|
74
|
+
*
|
|
75
|
+
* The unconditional remap is safe in v1.x: the Joomla host plugin
|
|
76
|
+
* never serves WP-named sources (WP custom-post-type integrations
|
|
77
|
+
* don't apply on Joomla), so any row tagged `wordpress` on a Joomla
|
|
78
|
+
* site is by definition a Joomla-native source mis-labelled by the
|
|
79
|
+
* upstream group key. A server-side fix is tracked separately for
|
|
80
|
+
* v1.2; until then this keeps cross-platform agent reasoning honest.
|
|
81
|
+
*/
|
|
82
|
+
export function remapOriginForPlatform(rows, platformKind) {
|
|
83
|
+
if (platformKind !== 'joomla') {
|
|
84
|
+
return rows;
|
|
85
|
+
}
|
|
86
|
+
return rows.map((row) => {
|
|
87
|
+
if (row.origin === 'wordpress') {
|
|
88
|
+
return { ...row, origin: 'joomla' };
|
|
89
|
+
}
|
|
90
|
+
return row;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// ─── Detail builder (Design §3.2 row 17) ─────────────────────────────
|
|
94
|
+
/** Render a primitive binding-value into a DetailEntry-safe scalar. */
|
|
95
|
+
function scalarValue(v) {
|
|
96
|
+
if (v === null || typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {
|
|
97
|
+
return v;
|
|
98
|
+
}
|
|
99
|
+
// Objects / arrays (nested filters, directive args) — JSON-flatten so
|
|
100
|
+
// the LLM still sees the structure without an [object Object].
|
|
101
|
+
try {
|
|
102
|
+
return JSON.stringify(v);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return String(v);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Normalise the field-mappings carried on the binding response into a
|
|
110
|
+
* `prop → source_field` dict.
|
|
111
|
+
*
|
|
112
|
+
* F-01-Mapping (Audit v4): the REST plugin surfaces field-mappings in
|
|
113
|
+
* TWO shapes — `field_mappings` (dict, back-compat) and
|
|
114
|
+
* `field_mappings_structured` (list of `{element_prop, source_field}`,
|
|
115
|
+
* the BindingSerializer SSoT output). The structured list is preferred
|
|
116
|
+
* because it preserves insertion order and field-level `filters`.
|
|
117
|
+
*/
|
|
118
|
+
function extractFieldMappings(binding) {
|
|
119
|
+
const structured = binding.field_mappings_structured;
|
|
120
|
+
if (Array.isArray(structured)) {
|
|
121
|
+
const out = [];
|
|
122
|
+
for (const entry of structured) {
|
|
123
|
+
if (entry !== null && typeof entry === 'object') {
|
|
124
|
+
const rec = entry;
|
|
125
|
+
const prop = rec.element_prop;
|
|
126
|
+
const field = rec.source_field;
|
|
127
|
+
if (typeof prop === 'string' && prop !== '') {
|
|
128
|
+
out.push({
|
|
129
|
+
prop,
|
|
130
|
+
field: typeof field === 'string' ? field : String(field ?? ''),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
const dict = binding.field_mappings;
|
|
138
|
+
if (dict !== null && typeof dict === 'object') {
|
|
139
|
+
return Object.entries(dict).map(([prop, field]) => ({
|
|
140
|
+
prop,
|
|
141
|
+
field: typeof field === 'string' ? field : String(field ?? ''),
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
/** Pull `query_arguments` off the binding as a flat record. */
|
|
147
|
+
function extractQueryArguments(binding) {
|
|
148
|
+
const args = binding.query_arguments;
|
|
149
|
+
if (args !== null && typeof args === 'object' && !Array.isArray(args)) {
|
|
150
|
+
return args;
|
|
151
|
+
}
|
|
152
|
+
return {};
|
|
153
|
+
}
|
|
154
|
+
export function buildBindingDetail(payload) {
|
|
155
|
+
const b = payload.binding;
|
|
156
|
+
const sourceName = typeof b.source_name === 'string' ? b.source_name : null;
|
|
157
|
+
const queryField = typeof b.query_field === 'string' ? b.query_field : null;
|
|
158
|
+
const fieldMappings = extractFieldMappings(b);
|
|
159
|
+
const queryArgs = extractQueryArguments(b);
|
|
160
|
+
const argEntries = Object.entries(queryArgs);
|
|
161
|
+
const bindingEntries = [
|
|
162
|
+
{
|
|
163
|
+
key: 'source_name',
|
|
164
|
+
label: 'Source',
|
|
165
|
+
value: sourceName,
|
|
166
|
+
format: 'badge',
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
if (queryField !== null) {
|
|
170
|
+
bindingEntries.push({
|
|
171
|
+
key: 'query_field',
|
|
172
|
+
label: 'Query field',
|
|
173
|
+
value: queryField,
|
|
174
|
+
format: 'code',
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
bindingEntries.push({
|
|
178
|
+
key: 'mapping_count',
|
|
179
|
+
label: 'Field mappings',
|
|
180
|
+
value: fieldMappings.length,
|
|
181
|
+
format: 'text',
|
|
182
|
+
}, {
|
|
183
|
+
key: 'arg_count',
|
|
184
|
+
label: 'Query arguments',
|
|
185
|
+
value: argEntries.length,
|
|
186
|
+
format: 'text',
|
|
187
|
+
});
|
|
188
|
+
const groups = [
|
|
189
|
+
{
|
|
190
|
+
label: 'Element',
|
|
191
|
+
entries: [
|
|
192
|
+
{
|
|
193
|
+
key: 'template_id',
|
|
194
|
+
label: 'Template',
|
|
195
|
+
value: payload.template_id,
|
|
196
|
+
format: 'badge',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
key: 'element_path',
|
|
200
|
+
label: 'Path',
|
|
201
|
+
value: payload.element_path,
|
|
202
|
+
format: 'code',
|
|
203
|
+
copyable: true,
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
label: 'Binding',
|
|
209
|
+
entries: bindingEntries,
|
|
210
|
+
},
|
|
211
|
+
];
|
|
212
|
+
// Field-mapping group — one entry per element-prop → source-field
|
|
213
|
+
// pair so the LLM sees exactly WHICH source field feeds WHICH prop.
|
|
214
|
+
if (fieldMappings.length > 0) {
|
|
215
|
+
groups.push({
|
|
216
|
+
label: 'Field mappings',
|
|
217
|
+
entries: fieldMappings.map((m, i) => ({
|
|
218
|
+
key: `mapping_${String(i)}`,
|
|
219
|
+
label: m.prop,
|
|
220
|
+
value: m.field,
|
|
221
|
+
format: 'code',
|
|
222
|
+
})),
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
// Query-arguments group — the GraphQL `query.field.arguments`.
|
|
226
|
+
if (argEntries.length > 0) {
|
|
227
|
+
groups.push({
|
|
228
|
+
label: 'Query arguments',
|
|
229
|
+
entries: argEntries.map(([key, value], i) => ({
|
|
230
|
+
key: `arg_${String(i)}`,
|
|
231
|
+
label: key,
|
|
232
|
+
value: scalarValue(value),
|
|
233
|
+
format: 'text',
|
|
234
|
+
})),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
title: `Binding for ${payload.element_path}`,
|
|
239
|
+
groups,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=sources-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources-format.js","sourceRoot":"","sources":["../../../src/tools/format/sources-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health & diagnostics tools.
|
|
3
|
+
*
|
|
4
|
+
* yootheme_builder_health
|
|
5
|
+
* → GET /health (unauthenticated). Verifies the plugin is
|
|
6
|
+
* installed and reachable. Returns plugin/YT/WP/PHP versions
|
|
7
|
+
* + available endpoints.
|
|
8
|
+
*
|
|
9
|
+
* yootheme_builder_diagnose
|
|
10
|
+
* → Aggregates health + a Bearer-auth probe so the agent can
|
|
11
|
+
* distinguish "plugin missing" from "wrong key".
|
|
12
|
+
*
|
|
13
|
+
* Both tools emit `detailResult` (Wave G.2) so hosts that support
|
|
14
|
+
* structured content render a Detail-Card; the LLM still reads the text
|
|
15
|
+
* leg from `content[0].text`.
|
|
16
|
+
*
|
|
17
|
+
* @license MIT
|
|
18
|
+
*/
|
|
19
|
+
import type { ClientPool } from '../sites/client-pool.js';
|
|
20
|
+
import { type AnyToolDefinition } from './tool-builder.js';
|
|
21
|
+
export declare function buildHealthTools(pool: ClientPool): readonly AnyToolDefinition[];
|
|
22
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAS1D,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAC;AA4E3B,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,iBAAiB,EAAE,CAqI/E"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health & diagnostics tools.
|
|
3
|
+
*
|
|
4
|
+
* yootheme_builder_health
|
|
5
|
+
* → GET /health (unauthenticated). Verifies the plugin is
|
|
6
|
+
* installed and reachable. Returns plugin/YT/WP/PHP versions
|
|
7
|
+
* + available endpoints.
|
|
8
|
+
*
|
|
9
|
+
* yootheme_builder_diagnose
|
|
10
|
+
* → Aggregates health + a Bearer-auth probe so the agent can
|
|
11
|
+
* distinguish "plugin missing" from "wrong key".
|
|
12
|
+
*
|
|
13
|
+
* Both tools emit `detailResult` (Wave G.2) so hosts that support
|
|
14
|
+
* structured content render a Detail-Card; the LLM still reads the text
|
|
15
|
+
* leg from `content[0].text`.
|
|
16
|
+
*
|
|
17
|
+
* @license MIT
|
|
18
|
+
*/
|
|
19
|
+
import { detailResult, statsResult } from '@getimo/mcp-toolkit';
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
import { RestError } from '../errors.js';
|
|
22
|
+
import { buildDiagnoseDetail, buildHealthStats, } from './format/health-format.js';
|
|
23
|
+
import { SITE_ID_SCHEMA } from './shared-schemas.js';
|
|
24
|
+
import { resolveSiteOrError } from './pool-resolve-helper.js';
|
|
25
|
+
import { defineTool, errorResult, jsonResult, readOnly, structuredResult, withSiteMeta, } from './tool-builder.js';
|
|
26
|
+
// ─── outputSchemas (Wave G.2 §4) ─────────────────────────────────────
|
|
27
|
+
const HEALTH_OUTPUT_SCHEMA = z.object({
|
|
28
|
+
plugin_version: z.string(),
|
|
29
|
+
// Cross-platform note (Wave 7): the anonymous health payload only carries
|
|
30
|
+
// {plugin_version, status, yootheme_loaded}; the rest is disclosed ONLY
|
|
31
|
+
// with a valid Bearer (server-side fingerprint-reduction). On Joomla the
|
|
32
|
+
// augmented payload uses `cms`/`cms_version` and emits NEITHER `wp_version`
|
|
33
|
+
// NOR `yootheme_version`. All platform-/tier-variable fields are therefore
|
|
34
|
+
// optional so the same MCP tool validates against WP and Joomla, anon and
|
|
35
|
+
// authenticated.
|
|
36
|
+
yootheme_version: z.string().nullable().optional(),
|
|
37
|
+
wp_version: z.string().nullable().optional(),
|
|
38
|
+
cms: z.string().optional(),
|
|
39
|
+
cms_version: z.string().optional(),
|
|
40
|
+
php_version: z.string().optional(),
|
|
41
|
+
storage_type: z.string().optional(),
|
|
42
|
+
storage_target: z.string().optional(),
|
|
43
|
+
yootheme_loaded: z.boolean(),
|
|
44
|
+
available_endpoints: z.array(z.string()).optional(),
|
|
45
|
+
// 1.0.1 — surface canonical WP URLs so an agent can deep-link the
|
|
46
|
+
// customer to the live site without a separate REST round-trip.
|
|
47
|
+
// Both fields are optional in the schema for back-compat with older
|
|
48
|
+
// 1.0.0 PHP servers that don't yet emit them.
|
|
49
|
+
site_url: z
|
|
50
|
+
.string()
|
|
51
|
+
.nullable()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe('Canonical WordPress install URL including any subpath ' +
|
|
54
|
+
'(e.g. `https://example.com/wordpress`). Authenticated payload only.'),
|
|
55
|
+
home_url: z
|
|
56
|
+
.string()
|
|
57
|
+
.nullable()
|
|
58
|
+
.optional()
|
|
59
|
+
.describe('Front-end home URL — use this to deep-link the user to the live ' +
|
|
60
|
+
'site they edited.'),
|
|
61
|
+
});
|
|
62
|
+
const DIAGNOSE_OUTPUT_SCHEMA = z.object({
|
|
63
|
+
plugin_reachable: z.boolean(),
|
|
64
|
+
plugin_version: z.string().optional(),
|
|
65
|
+
yootheme_loaded: z.boolean().optional(),
|
|
66
|
+
yootheme_version: z.string().nullable().optional(),
|
|
67
|
+
endpoint_count: z.number().optional(),
|
|
68
|
+
plugin_error: z.string().optional(),
|
|
69
|
+
bearer_valid: z.boolean().optional(),
|
|
70
|
+
bearer_error: z.string().optional(),
|
|
71
|
+
summary: z.string().optional(),
|
|
72
|
+
// 1.0.1 — mirror the health fields for parity. Diagnose calls /health
|
|
73
|
+
// internally so it has the values; surfacing them avoids forcing the
|
|
74
|
+
// agent to call both tools to get URL info + bearer status.
|
|
75
|
+
site_url: z
|
|
76
|
+
.string()
|
|
77
|
+
.nullable()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe('Canonical WordPress install URL including any subpath ' +
|
|
80
|
+
'(e.g. `https://example.com/wordpress`). Mirrored from /health so an ' +
|
|
81
|
+
'agent gets URL info + bearer status in one call.'),
|
|
82
|
+
home_url: z
|
|
83
|
+
.string()
|
|
84
|
+
.nullable()
|
|
85
|
+
.optional()
|
|
86
|
+
.describe('Front-end home URL — use this to deep-link the user to the live ' +
|
|
87
|
+
'site they edited.'),
|
|
88
|
+
});
|
|
89
|
+
export function buildHealthTools(pool) {
|
|
90
|
+
return [
|
|
91
|
+
defineTool({
|
|
92
|
+
name: 'yootheme_builder_health',
|
|
93
|
+
description: 'Check plugin installed/reachable. Returns plugin version, YT Pro version, REST ' +
|
|
94
|
+
'endpoints. Authenticated payload adds site_url + home_url for deep-linking. ' +
|
|
95
|
+
'See yootheme_builder_diagnose for Bearer-validity + connectivity summary. ' +
|
|
96
|
+
'Operates on the default site unless site_id is provided.',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
site_id: SITE_ID_SCHEMA,
|
|
99
|
+
},
|
|
100
|
+
outputSchema: HEALTH_OUTPUT_SCHEMA,
|
|
101
|
+
annotations: readOnly('Health Check'),
|
|
102
|
+
handler: async ({ site_id }) => {
|
|
103
|
+
const r = await resolveSiteOrError(pool, site_id);
|
|
104
|
+
if (!r.ok)
|
|
105
|
+
return r.error;
|
|
106
|
+
const { client: siteClient, site } = r;
|
|
107
|
+
try {
|
|
108
|
+
const data = await siteClient.get('/health');
|
|
109
|
+
// Round-1 audit I1 fix: spec §3.2 row 1 calls for
|
|
110
|
+
// `statsResult` (flat metrics). Earlier shipped
|
|
111
|
+
// `detailResult` — that's a Detail-Card variant, not
|
|
112
|
+
// the stats-display the spec asked for. The flat
|
|
113
|
+
// shape is built by `buildHealthStats`.
|
|
114
|
+
const toolkitResult = statsResult(buildHealthStats(data));
|
|
115
|
+
// Only surface fields the server actually returned — the
|
|
116
|
+
// anonymous tier and Joomla omit different subsets, and the
|
|
117
|
+
// output schema now marks all platform-/tier-variable fields
|
|
118
|
+
// optional (Wave 7 cross-platform parity).
|
|
119
|
+
return withSiteMeta(structuredResult(toolkitResult, {
|
|
120
|
+
plugin_version: data.plugin_version,
|
|
121
|
+
yootheme_loaded: data.yootheme_loaded,
|
|
122
|
+
...(data.yootheme_version !== undefined ? { yootheme_version: data.yootheme_version } : {}),
|
|
123
|
+
...(data.wp_version !== undefined ? { wp_version: data.wp_version } : {}),
|
|
124
|
+
...(data.cms !== undefined ? { cms: data.cms } : {}),
|
|
125
|
+
...(data.cms_version !== undefined ? { cms_version: data.cms_version } : {}),
|
|
126
|
+
...(data.php_version !== undefined ? { php_version: data.php_version } : {}),
|
|
127
|
+
...(data.storage_type !== undefined ? { storage_type: data.storage_type } : {}),
|
|
128
|
+
...(data.storage_target !== undefined ? { storage_target: data.storage_target } : {}),
|
|
129
|
+
...(data.available_endpoints !== undefined ? { available_endpoints: data.available_endpoints } : {}),
|
|
130
|
+
...(data.site_url !== undefined ? { site_url: data.site_url } : {}),
|
|
131
|
+
...(data.home_url !== undefined ? { home_url: data.home_url } : {}),
|
|
132
|
+
}), site);
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
return withSiteMeta(errorResult({
|
|
136
|
+
error: e,
|
|
137
|
+
context: { site_id: site.id },
|
|
138
|
+
hint: 'Verify YTB_MCP_SITE_URL points at a WordPress or Joomla site with the ' +
|
|
139
|
+
'yt-builder-mcp plugin active. Try opening ' +
|
|
140
|
+
'<site_url>/wp-json/yt-builder-mcp/v1/health (WP) or ' +
|
|
141
|
+
'<site_url>/api/index.php/v1/yt-builder-mcp/health (Joomla) in a browser.',
|
|
142
|
+
}), site);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
}),
|
|
146
|
+
defineTool({
|
|
147
|
+
name: 'yootheme_builder_diagnose',
|
|
148
|
+
description: 'Full diagnostic: /health + authenticated /etag probe. Returns site_url, ' +
|
|
149
|
+
'home_url, plugin reachability, Bearer validity in one call. First call when ' +
|
|
150
|
+
'you need to know where the site lives. For per-template URLs see pages_list. ' +
|
|
151
|
+
'Operates on the default site unless site_id is provided.',
|
|
152
|
+
inputSchema: {
|
|
153
|
+
site_id: SITE_ID_SCHEMA,
|
|
154
|
+
},
|
|
155
|
+
outputSchema: DIAGNOSE_OUTPUT_SCHEMA,
|
|
156
|
+
annotations: readOnly('Diagnose Connection'),
|
|
157
|
+
handler: async ({ site_id }) => {
|
|
158
|
+
const r = await resolveSiteOrError(pool, site_id);
|
|
159
|
+
if (!r.ok)
|
|
160
|
+
return r.error;
|
|
161
|
+
const { client: siteClient, site } = r;
|
|
162
|
+
const checks = { plugin_reachable: false };
|
|
163
|
+
try {
|
|
164
|
+
const health = await siteClient.get('/health');
|
|
165
|
+
checks.plugin_reachable = true;
|
|
166
|
+
checks.plugin_version = health.plugin_version;
|
|
167
|
+
checks.yootheme_loaded = health.yootheme_loaded;
|
|
168
|
+
checks.yootheme_version = health.yootheme_version;
|
|
169
|
+
checks.endpoint_count = (health.available_endpoints ?? []).length;
|
|
170
|
+
// 1.0.1 — mirror health URLs into diagnose output so an
|
|
171
|
+
// agent gets URL info AND bearer-status in one call.
|
|
172
|
+
if (health.site_url !== undefined) {
|
|
173
|
+
checks.site_url = health.site_url;
|
|
174
|
+
}
|
|
175
|
+
if (health.home_url !== undefined) {
|
|
176
|
+
checks.home_url = health.home_url;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (e) {
|
|
180
|
+
checks.plugin_reachable = false;
|
|
181
|
+
checks.plugin_error = e instanceof Error ? e.message : String(e);
|
|
182
|
+
// Plugin-unreachable path stays on jsonResult so the LLM
|
|
183
|
+
// sees the structured error hint inline (detailResult would
|
|
184
|
+
// hide the actionable "verify YTB_MCP_SITE_URL" hint inside
|
|
185
|
+
// a sub-group). isError=true preserves SDK semantics.
|
|
186
|
+
return withSiteMeta(jsonResult({
|
|
187
|
+
...checks,
|
|
188
|
+
hint: 'Plugin not reachable. Verify YTB_MCP_SITE_URL and that the ' +
|
|
189
|
+
'yt-builder-mcp plugin is active on this site.',
|
|
190
|
+
}, { isError: true }), site);
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
await siteClient.get('/etag');
|
|
194
|
+
checks.bearer_valid = true;
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
checks.bearer_valid = false;
|
|
198
|
+
if (e instanceof RestError) {
|
|
199
|
+
checks.bearer_error = `HTTP ${String(e.status)}: ${e.message}`;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
checks.bearer_error = e instanceof Error ? e.message : String(e);
|
|
203
|
+
}
|
|
204
|
+
return withSiteMeta(jsonResult({
|
|
205
|
+
...checks,
|
|
206
|
+
hint: 'Bearer key rejected. Regenerate the key in wp-admin → Tools → ' +
|
|
207
|
+
'"YT Builder MCP" → Bearer Keys (or Joomla Components → YT Builder MCP) ' +
|
|
208
|
+
'and re-run `yt-builder-mcp setup`.',
|
|
209
|
+
}, { isError: true }), site);
|
|
210
|
+
}
|
|
211
|
+
const toolkitResult = detailResult(buildDiagnoseDetail(checks));
|
|
212
|
+
return withSiteMeta(structuredResult(toolkitResult, {
|
|
213
|
+
...checks,
|
|
214
|
+
summary: 'OK — plugin reachable and Bearer key accepted.',
|
|
215
|
+
}), site);
|
|
216
|
+
},
|
|
217
|
+
}),
|
|
218
|
+
];
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool aggregator — collects all domain tools into a single list.
|
|
3
|
+
* The MCP server iterates this list at startup to register handlers
|
|
4
|
+
* with `@modelcontextprotocol/sdk`.
|
|
5
|
+
*
|
|
6
|
+
* @license MIT
|
|
7
|
+
*/
|
|
8
|
+
import type { ClientPool } from '../sites/client-pool.js';
|
|
9
|
+
import type { McpServerWithElicitation } from './elicitation.js';
|
|
10
|
+
import type { AnyToolDefinition } from './tool-builder.js';
|
|
11
|
+
export interface BuildAllToolsOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Optional MCP elicitation capability — see
|
|
14
|
+
* `src/tools/elicitation.ts` for the adapter. When supplied,
|
|
15
|
+
* destructive + ambiguity-resolution tools prompt the user via the
|
|
16
|
+
* elicitation channel; when omitted, they fall back to the
|
|
17
|
+
* preview-then-retry / `ambiguityFallbackError` flow.
|
|
18
|
+
*/
|
|
19
|
+
readonly elicitation?: McpServerWithElicitation;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* W6 — pool-based registration entrypoint. Pre-W6 this took a bare
|
|
23
|
+
* `RestClient`; W6 introduces the {@link ClientPool} as the single
|
|
24
|
+
* source of REST clients (multi-site). Each domain builder now
|
|
25
|
+
* resolves the pool per-handler via `resolveSiteOrError` and wraps
|
|
26
|
+
* every result in `withSiteMeta` (Commit 3 of the W6 trio).
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildAllTools(pool: ClientPool, options?: BuildAllToolsOptions): readonly AnyToolDefinition[];
|
|
29
|
+
export type { AnyToolDefinition, ToolDefinition } from './tool-builder.js';
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAMjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACnD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CACzB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,oBAAyB,GACnC,SAAS,iBAAiB,EAAE,CAgB9B;AAED,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool aggregator — collects all domain tools into a single list.
|
|
3
|
+
* The MCP server iterates this list at startup to register handlers
|
|
4
|
+
* with `@modelcontextprotocol/sdk`.
|
|
5
|
+
*
|
|
6
|
+
* @license MIT
|
|
7
|
+
*/
|
|
8
|
+
import { buildSitesTools } from '../sites/tools/index.js';
|
|
9
|
+
import { buildElementsTools } from './elements/index.js';
|
|
10
|
+
import { buildHealthTools } from './health.js';
|
|
11
|
+
import { buildInspectionTools } from './inspection.js';
|
|
12
|
+
import { buildMultiItemsTools } from './multi-items/index.js';
|
|
13
|
+
import { buildPagesTools } from './pages.js';
|
|
14
|
+
import { buildSourcesTools } from './sources/index.js';
|
|
15
|
+
/**
|
|
16
|
+
* W6 — pool-based registration entrypoint. Pre-W6 this took a bare
|
|
17
|
+
* `RestClient`; W6 introduces the {@link ClientPool} as the single
|
|
18
|
+
* source of REST clients (multi-site). Each domain builder now
|
|
19
|
+
* resolves the pool per-handler via `resolveSiteOrError` and wraps
|
|
20
|
+
* every result in `withSiteMeta` (Commit 3 of the W6 trio).
|
|
21
|
+
*/
|
|
22
|
+
export function buildAllTools(pool, options = {}) {
|
|
23
|
+
const deps = options.elicitation !== undefined ? { elicitation: options.elicitation } : {};
|
|
24
|
+
return [
|
|
25
|
+
...buildHealthTools(pool),
|
|
26
|
+
...buildPagesTools(pool),
|
|
27
|
+
...buildElementsTools(pool, deps),
|
|
28
|
+
...buildSourcesTools(pool, deps),
|
|
29
|
+
...buildMultiItemsTools(pool),
|
|
30
|
+
...buildInspectionTools(pool),
|
|
31
|
+
// W7 — Multi-Site registry tools (L1). The aggregator pulls
|
|
32
|
+
// `pool.registry` internally (W12-R1.3); the sites_list handler
|
|
33
|
+
// reads the registry without ever resolving a bearer or hitting
|
|
34
|
+
// the network, while sites_test threads the pool through to
|
|
35
|
+
// probe one specific site.
|
|
36
|
+
...buildSitesTools(pool),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAcvD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CACzB,IAAgB,EAChB,UAAgC,EAAE;IAElC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO;QACH,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACzB,GAAG,eAAe,CAAC,IAAI,CAAC;QACxB,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC;QACjC,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;QAChC,GAAG,oBAAoB,CAAC,IAAI,CAAC;QAC7B,GAAG,oBAAoB,CAAC,IAAI,CAAC;QAC7B,4DAA4D;QAC5D,gEAAgE;QAChE,gEAAgE;QAChE,4DAA4D;QAC5D,2BAA2B;QAC3B,GAAG,eAAe,CAAC,IAAI,CAAC;KAC3B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Element-type inspection tools.
|
|
3
|
+
*
|
|
4
|
+
* yootheme_builder_element_types_list
|
|
5
|
+
* → catalogue of available element types (tableResult — Wave G.2)
|
|
6
|
+
* yootheme_builder_element_type_get_schema
|
|
7
|
+
* → field schema for a single element type (detailResult — Wave G.2)
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import type { ClientPool } from '../sites/client-pool.js';
|
|
12
|
+
import { type AnyToolDefinition } from './tool-builder.js';
|
|
13
|
+
export declare function buildInspectionTools(pool: ClientPool): readonly AnyToolDefinition[];
|
|
14
|
+
//# sourceMappingURL=inspection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../../src/tools/inspection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAU1D,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAC;AA+B3B,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,iBAAiB,EAAE,CA0DnF"}
|