@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,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `yootheme_builder_advanced` gateway tool — Wave G.1 / Design-Doc §3.1.1.
|
|
3
|
+
*
|
|
4
|
+
* Single entry-point to every L2 (non-essential, non-direct) tool. Cursor
|
|
5
|
+
* caps MCP servers at ~40 tools; routing 12 advanced tools through one
|
|
6
|
+
* gateway keeps `tools/list` at 10 (7 L1 + 2 L3 + 1 gateway).
|
|
7
|
+
*
|
|
8
|
+
* Two modes:
|
|
9
|
+
* { tool } → discovery: returns the target's description,
|
|
10
|
+
* a JSON-schema derived from its Zod inputSchema,
|
|
11
|
+
* and its annotation flags. The target handler
|
|
12
|
+
* is NOT invoked.
|
|
13
|
+
* { tool, arguments } → execution: `arguments` is validated against
|
|
14
|
+
* the target's Zod inputSchema in `.strict()`
|
|
15
|
+
* mode (unknown keys surface as Zod issues), then
|
|
16
|
+
* the target handler is invoked with the parsed
|
|
17
|
+
* args and the same `extra` object — so the
|
|
18
|
+
* target tool's progress, elicitation and
|
|
19
|
+
* AbortSignal keep working.
|
|
20
|
+
*
|
|
21
|
+
* Errors are structured ({ error, code, suggestion, details }). The gateway
|
|
22
|
+
* cannot route to itself: `yootheme_builder_advanced` is never in the
|
|
23
|
+
* advanced registry (the CapturingServer never sees its name — it's
|
|
24
|
+
* registered after the CapturingServer hands off).
|
|
25
|
+
*
|
|
26
|
+
* Round-2 (R2-A2-CRIT2): split into 5 files under `advanced-tool/`
|
|
27
|
+
* (this barrel + `domains.ts` + `discovery.ts` + `execute.ts` +
|
|
28
|
+
* `register.ts`) to keep each file ≤ 100 LoC per Architecture §11.
|
|
29
|
+
*
|
|
30
|
+
* @license MIT
|
|
31
|
+
*/
|
|
32
|
+
export { DOMAIN_ORDER, DOMAIN_PREFIX_MAP, TOOL_PREFIX, buildDescription, domainOf, groupByDomain, renderGroupedList, } from './domains.js';
|
|
33
|
+
export { discoveryResult, inputSchemaJson, shapeOf } from './discovery.js';
|
|
34
|
+
export { errorResult, executeAdvancedTool } from './execute.js';
|
|
35
|
+
export { registerAdvancedTool } from './register.js';
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,EACH,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,iBAAiB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `yootheme_builder_advanced` gateway tool — Wave G.1 / Design-Doc §3.1.1.
|
|
3
|
+
*
|
|
4
|
+
* Single entry-point to every L2 (non-essential, non-direct) tool. Cursor
|
|
5
|
+
* caps MCP servers at ~40 tools; routing 12 advanced tools through one
|
|
6
|
+
* gateway keeps `tools/list` at 10 (7 L1 + 2 L3 + 1 gateway).
|
|
7
|
+
*
|
|
8
|
+
* Two modes:
|
|
9
|
+
* { tool } → discovery: returns the target's description,
|
|
10
|
+
* a JSON-schema derived from its Zod inputSchema,
|
|
11
|
+
* and its annotation flags. The target handler
|
|
12
|
+
* is NOT invoked.
|
|
13
|
+
* { tool, arguments } → execution: `arguments` is validated against
|
|
14
|
+
* the target's Zod inputSchema in `.strict()`
|
|
15
|
+
* mode (unknown keys surface as Zod issues), then
|
|
16
|
+
* the target handler is invoked with the parsed
|
|
17
|
+
* args and the same `extra` object — so the
|
|
18
|
+
* target tool's progress, elicitation and
|
|
19
|
+
* AbortSignal keep working.
|
|
20
|
+
*
|
|
21
|
+
* Errors are structured ({ error, code, suggestion, details }). The gateway
|
|
22
|
+
* cannot route to itself: `yootheme_builder_advanced` is never in the
|
|
23
|
+
* advanced registry (the CapturingServer never sees its name — it's
|
|
24
|
+
* registered after the CapturingServer hands off).
|
|
25
|
+
*
|
|
26
|
+
* Round-2 (R2-A2-CRIT2): split into 5 files under `advanced-tool/`
|
|
27
|
+
* (this barrel + `domains.ts` + `discovery.ts` + `execute.ts` +
|
|
28
|
+
* `register.ts`) to keep each file ≤ 100 LoC per Architecture §11.
|
|
29
|
+
*
|
|
30
|
+
* @license MIT
|
|
31
|
+
*/
|
|
32
|
+
// Re-exports — keep the public surface that `advanced-tool.ts` exposed
|
|
33
|
+
// before the split, so downstream importers keep working through the
|
|
34
|
+
// `./advanced-tool.js` backward-compat shim.
|
|
35
|
+
export { DOMAIN_ORDER, DOMAIN_PREFIX_MAP, TOOL_PREFIX, buildDescription, domainOf, groupByDomain, renderGroupedList, } from './domains.js';
|
|
36
|
+
export { discoveryResult, inputSchemaJson, shapeOf } from './discovery.js';
|
|
37
|
+
export { errorResult, executeAdvancedTool } from './execute.js';
|
|
38
|
+
export { registerAdvancedTool } from './register.js';
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,uEAAuE;AACvE,qEAAqE;AACrE,6CAA6C;AAC7C,OAAO,EACH,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,iBAAiB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway tool registration — wires `yootheme_builder_advanced` onto the
|
|
3
|
+
* real McpServer, with discovery-mode + execute-mode dispatch.
|
|
4
|
+
*
|
|
5
|
+
* Round-2 (R2-A2-CRIT2) extracted from `gateway/advanced-tool.ts`.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
10
|
+
import type { AdvancedToolEntry } from '../capturing-server.js';
|
|
11
|
+
/**
|
|
12
|
+
* Registers `yootheme_builder_advanced` on the real McpServer.
|
|
13
|
+
*
|
|
14
|
+
* @param realServer the McpServer that exposes the gateway tool
|
|
15
|
+
* @param advancedRegistry the captured non-essential tools (from CapturingServer)
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerAdvancedTool(realServer: McpServer, advancedRegistry: Map<string, AdvancedToolEntry>): void;
|
|
18
|
+
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/register.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAmBhE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,UAAU,EAAE,SAAS,EACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GACjD,IAAI,CA+CN"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway tool registration — wires `yootheme_builder_advanced` onto the
|
|
3
|
+
* real McpServer, with discovery-mode + execute-mode dispatch.
|
|
4
|
+
*
|
|
5
|
+
* Round-2 (R2-A2-CRIT2) extracted from `gateway/advanced-tool.ts`.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { buildDescription, renderGroupedList } from './domains.js';
|
|
11
|
+
import { discoveryResult } from './discovery.js';
|
|
12
|
+
import { errorResult, executeAdvancedTool } from './execute.js';
|
|
13
|
+
/** Builds the gateway tool's Zod inputSchema for a given non-empty enum of advanced names. */
|
|
14
|
+
function gatewayInputSchema(enumValues) {
|
|
15
|
+
return {
|
|
16
|
+
tool: z.enum(enumValues).describe('Advanced tool to route to (e.g. "yootheme_builder_page_save"). ' +
|
|
17
|
+
'Omit `arguments` to discover its schema first.'),
|
|
18
|
+
arguments: z.record(z.string(), z.unknown()).optional().describe('Arguments for the target tool. Omit for discovery mode ' +
|
|
19
|
+
"(returns the tool's schema + annotations)."),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Registers `yootheme_builder_advanced` on the real McpServer.
|
|
24
|
+
*
|
|
25
|
+
* @param realServer the McpServer that exposes the gateway tool
|
|
26
|
+
* @param advancedRegistry the captured non-essential tools (from CapturingServer)
|
|
27
|
+
*/
|
|
28
|
+
export function registerAdvancedTool(realServer, advancedRegistry) {
|
|
29
|
+
const advancedNames = [...advancedRegistry.keys()].sort();
|
|
30
|
+
// z.enum needs a non-empty tuple. The empty-registry arm is exercised
|
|
31
|
+
// only by defensive test wiring; production always populates the
|
|
32
|
+
// registry. Keeping the guard means a zero-tool wiring still yields a
|
|
33
|
+
// valid (if inert) gateway schema rather than a z.enum crash.
|
|
34
|
+
const enumValues = advancedNames.length > 0 ? advancedNames : ['__none__'];
|
|
35
|
+
realServer.registerTool('yootheme_builder_advanced', {
|
|
36
|
+
title: 'Advanced Tool Gateway',
|
|
37
|
+
description: buildDescription(advancedNames),
|
|
38
|
+
inputSchema: gatewayInputSchema(enumValues),
|
|
39
|
+
// Stream D3 T3: gateway is the only L1 tool that retains
|
|
40
|
+
// `openWorldHint:true` — its effective behaviour is
|
|
41
|
+
// dynamic (target tool decided at call-time). Conservative
|
|
42
|
+
// spec-default marks it destructive because it can route
|
|
43
|
+
// into delete/unbind handlers; the destination tool's own
|
|
44
|
+
// confirm-guard still gates the actual mutation.
|
|
45
|
+
annotations: {
|
|
46
|
+
title: 'Advanced Tool Gateway',
|
|
47
|
+
readOnlyHint: false,
|
|
48
|
+
destructiveHint: true,
|
|
49
|
+
idempotentHint: false,
|
|
50
|
+
openWorldHint: true,
|
|
51
|
+
},
|
|
52
|
+
}, async (args, extra) => {
|
|
53
|
+
const entry = advancedRegistry.get(args.tool);
|
|
54
|
+
if (!entry) {
|
|
55
|
+
return errorResult({
|
|
56
|
+
message: `Unknown advanced tool: "${args.tool}".`,
|
|
57
|
+
code: 'unknown_tool',
|
|
58
|
+
suggestion: 'Pick one of the valid advanced tool names below, or call ' +
|
|
59
|
+
'yootheme_builder_health to verify connectivity.\n\n' +
|
|
60
|
+
`Valid advanced tools by domain:\n${renderGroupedList(advancedNames)}`,
|
|
61
|
+
details: { valid_tools_by_domain: renderGroupedList(advancedNames) },
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (args.arguments === undefined)
|
|
65
|
+
return discoveryResult(args.tool, entry);
|
|
66
|
+
return executeAdvancedTool(args.tool, entry, args.arguments, extra);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/register.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEhE,8FAA8F;AAC9F,SAAS,kBAAkB,CAAC,UAAiC;IACzD,OAAO;QACH,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC7B,iEAAiE;YAC7D,gDAAgD,CACvD;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5D,yDAAyD;YACrD,4CAA4C,CACnD;KACJ,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAChC,UAAqB,EACrB,gBAAgD;IAEhD,MAAM,aAAa,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1D,sEAAsE;IACtE,iEAAiE;IACjE,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,UAAU,GACZ,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,aAAuC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAEvF,UAAU,CAAC,YAAY,CACnB,2BAA2B,EAC3B;QACI,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC;QAC5C,WAAW,EAAE,kBAAkB,CAAC,UAAU,CAAC;QAC3C,yDAAyD;QACzD,oDAAoD;QACpD,2DAA2D;QAC3D,yDAAyD;QACzD,0DAA0D;QAC1D,iDAAiD;QACjD,WAAW,EAAE;YACT,KAAK,EAAE,uBAAuB;YAC9B,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACtB;KACJ,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAA2B,EAAE;QAC3C,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,WAAW,CAAC;gBACf,OAAO,EAAE,2BAA2B,IAAI,CAAC,IAAI,IAAI;gBACjD,IAAI,EAAE,cAAc;gBACpB,UAAU,EACN,2DAA2D;oBAC3D,qDAAqD;oBACrD,oCAAoC,iBAAiB,CAAC,aAAa,CAAC,EAAE;gBAC1E,OAAO,EAAE,EAAE,qBAAqB,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE;aACvE,CAAC,CAAC;QACP,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3E,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC,CACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backward-compat shim for `gateway/advanced-tool.ts`.
|
|
3
|
+
*
|
|
4
|
+
* The original 283-LoC module was split into `gateway/advanced-tool/`
|
|
5
|
+
* (4 files, each ≤ 100 LoC) per Architecture §11 cap (Round-2
|
|
6
|
+
* R2-A2-CRIT2 audit fix). This shim preserves the public import path
|
|
7
|
+
* (`from '../gateway/advanced-tool.js'`) so server.ts, src/index.ts,
|
|
8
|
+
* and the test suite keep working unchanged.
|
|
9
|
+
*
|
|
10
|
+
* @license MIT
|
|
11
|
+
*/
|
|
12
|
+
export * from './advanced-tool/index.js';
|
|
13
|
+
//# sourceMappingURL=advanced-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-tool.d.ts","sourceRoot":"","sources":["../../src/gateway/advanced-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backward-compat shim for `gateway/advanced-tool.ts`.
|
|
3
|
+
*
|
|
4
|
+
* The original 283-LoC module was split into `gateway/advanced-tool/`
|
|
5
|
+
* (4 files, each ≤ 100 LoC) per Architecture §11 cap (Round-2
|
|
6
|
+
* R2-A2-CRIT2 audit fix). This shim preserves the public import path
|
|
7
|
+
* (`from '../gateway/advanced-tool.js'`) so server.ts, src/index.ts,
|
|
8
|
+
* and the test suite keep working unchanged.
|
|
9
|
+
*
|
|
10
|
+
* @license MIT
|
|
11
|
+
*/
|
|
12
|
+
export * from './advanced-tool/index.js';
|
|
13
|
+
//# sourceMappingURL=advanced-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-tool.js","sourceRoot":"","sources":["../../src/gateway/advanced-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CapturingServer — registration interceptor wrapping a real McpServer.
|
|
3
|
+
*
|
|
4
|
+
* Tool routing (Wave G.1 / Design-Doc §3.1.1):
|
|
5
|
+
* - L3 direct (yootheme_builder_health, yootheme_builder_diagnose):
|
|
6
|
+
* skipped — no forward, no capture. These tools must already be
|
|
7
|
+
* registered directly on the real server BEFORE the CapturingServer
|
|
8
|
+
* wraps it, so the SDK never sees a duplicate name.
|
|
9
|
+
* - L1 essential (ESSENTIAL_TOOLS): forwarded to the real server as a
|
|
10
|
+
* first-class MCP tool reachable from `tools/list`.
|
|
11
|
+
* - L2 advanced (everything else): captured into the in-process
|
|
12
|
+
* advanced registry, reachable through the single
|
|
13
|
+
* `yootheme_builder_advanced` gateway tool.
|
|
14
|
+
*
|
|
15
|
+
* This is a typed wrapper, NOT a JS Proxy — TypeScript stays strict.
|
|
16
|
+
*
|
|
17
|
+
* Typing approach (mirrors the reference apimapper-mcp implementation):
|
|
18
|
+
* `ToolRegistrar` is the McpServer subsurface modules consume:
|
|
19
|
+
* `registerTool` + `registerResource`. `registerTool` is a hand-written
|
|
20
|
+
* generic mirroring the SDK signature EXCEPT its return type is `void`
|
|
21
|
+
* — captured tools have no live `RegisteredTool`, and no module reads
|
|
22
|
+
* the return value. A real `McpServer` is still assignable to
|
|
23
|
+
* `ToolRegistrar` (return-type bivariance for `void`), so every
|
|
24
|
+
* call-site accepts both shapes cast-free.
|
|
25
|
+
*
|
|
26
|
+
* Casts in this file (each documented + justified inline):
|
|
27
|
+
* 1. forwarded-essential — erases the handler's `InputArgs` generic to
|
|
28
|
+
* the SDK default when `config` is the erased `CapturedToolConfig`.
|
|
29
|
+
* 2. registry storage — erases the generic handler to the homogeneous
|
|
30
|
+
* `CapturedToolHandler` shape so one Map type fits all entries.
|
|
31
|
+
* 3. `registerResource` field — the SDK declares two overloads; a
|
|
32
|
+
* single spread-arg arrow cannot re-express the pair.
|
|
33
|
+
*
|
|
34
|
+
* @license MIT
|
|
35
|
+
*/
|
|
36
|
+
import type { McpServer, ToolCallback } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
37
|
+
import type { AnySchema, ZodRawShapeCompat } from '@modelcontextprotocol/sdk/server/zod-compat.js';
|
|
38
|
+
import type { CallToolResult, ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
|
|
39
|
+
/**
|
|
40
|
+
* The input-schema constraint the SDK's `registerTool` accepts — a raw Zod
|
|
41
|
+
* shape, a Zod schema, or `undefined` (zero-arg tools). Reused so the
|
|
42
|
+
* `ToolRegistrar.registerTool` generic stays in lockstep with `ToolCallback`.
|
|
43
|
+
*/
|
|
44
|
+
type ToolInputArgs = undefined | ZodRawShapeCompat | AnySchema;
|
|
45
|
+
/**
|
|
46
|
+
* The config object accepted by `registerTool` — mirrors the SDK's 2nd arg.
|
|
47
|
+
* `inputSchema` is generic so per-tool handler args stay strongly inferred.
|
|
48
|
+
*/
|
|
49
|
+
interface RegisterToolConfig<InputArgs extends ToolInputArgs> {
|
|
50
|
+
title?: string;
|
|
51
|
+
description?: string;
|
|
52
|
+
inputSchema?: InputArgs;
|
|
53
|
+
outputSchema?: ZodRawShapeCompat | AnySchema;
|
|
54
|
+
annotations?: ToolAnnotations;
|
|
55
|
+
_meta?: Record<string, unknown>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The McpServer subsurface our `registerXTools` builders consume.
|
|
59
|
+
*
|
|
60
|
+
* `registerTool` is a hand-written generic mirroring the SDK signature with a
|
|
61
|
+
* `void` return type. A real `McpServer` (whose method returns
|
|
62
|
+
* `RegisteredTool`) is still assignable here because a value-returning method
|
|
63
|
+
* satisfies a `void`-returning member. The `InputArgs` generic preserves
|
|
64
|
+
* per-tool `ToolCallback` argument inference at every call-site.
|
|
65
|
+
*/
|
|
66
|
+
export interface ToolRegistrar {
|
|
67
|
+
registerTool<InputArgs extends ToolInputArgs = undefined>(name: string, config: RegisterToolConfig<InputArgs>, cb: ToolCallback<InputArgs>): void;
|
|
68
|
+
registerResource: McpServer['registerResource'];
|
|
69
|
+
}
|
|
70
|
+
/** Config object passed to `registerTool` (the SDK's 2nd arg). */
|
|
71
|
+
export type CapturedToolConfig = Parameters<McpServer['registerTool']>[1];
|
|
72
|
+
/**
|
|
73
|
+
* Captured-handler shape. The SDK's `registerTool` is generic over the input
|
|
74
|
+
* shape, so a captured handler is stored with its args erased to
|
|
75
|
+
* `Record<string, unknown>`. The gateway validates `arguments` against the
|
|
76
|
+
* tool's Zod schema before calling the handler, so the runtime contract holds.
|
|
77
|
+
*/
|
|
78
|
+
export type CapturedToolHandler = (args: Record<string, unknown>, extra: unknown) => CallToolResult | Promise<CallToolResult>;
|
|
79
|
+
/** A captured advanced tool: its registration config and its handler. */
|
|
80
|
+
export interface AdvancedToolEntry {
|
|
81
|
+
config: CapturedToolConfig;
|
|
82
|
+
handler: CapturedToolHandler;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Wraps a real McpServer. Forwards L1 essentials (and all resources) to it,
|
|
86
|
+
* captures L2 non-essentials into an in-process registry, and silently
|
|
87
|
+
* skips L3 direct top-level names that must already be on the real server.
|
|
88
|
+
*/
|
|
89
|
+
export declare class CapturingServer implements ToolRegistrar {
|
|
90
|
+
private readonly realServer;
|
|
91
|
+
private readonly advancedRegistry;
|
|
92
|
+
constructor(realServer: McpServer);
|
|
93
|
+
/**
|
|
94
|
+
* Routes a tool registration by name. Returns `void`: captured tools
|
|
95
|
+
* have no `RegisteredTool` and no `registerXTools` module reads the
|
|
96
|
+
* return value.
|
|
97
|
+
*
|
|
98
|
+
* Routing order matters: the L3-direct check is FIRST so a caller
|
|
99
|
+
* cannot accidentally re-route a direct-registered name through the
|
|
100
|
+
* gateway just by re-naming a future tool builder.
|
|
101
|
+
*/
|
|
102
|
+
registerTool<InputArgs extends ToolInputArgs = undefined>(name: string, config: CapturedToolConfig, handler: ToolCallback<InputArgs>): void;
|
|
103
|
+
/**
|
|
104
|
+
* Resources are always forwarded — they are not part of the tool cap.
|
|
105
|
+
*
|
|
106
|
+
* Cast: the SDK declares `registerResource` as two overloads; a single
|
|
107
|
+
* spread `(...args: RegisterResourceArgs)` arrow cannot re-express that
|
|
108
|
+
* overload pair, so the field is asserted to the SDK's exact member
|
|
109
|
+
* type. The spread forwards every argument verbatim, so the runtime
|
|
110
|
+
* contract is unchanged.
|
|
111
|
+
*/
|
|
112
|
+
registerResource: McpServer['registerResource'];
|
|
113
|
+
/** The captured non-essential tools, keyed by tool name. */
|
|
114
|
+
getAdvancedRegistry(): Map<string, AdvancedToolEntry>;
|
|
115
|
+
}
|
|
116
|
+
export {};
|
|
117
|
+
//# sourceMappingURL=capturing-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capturing-server.d.ts","sourceRoot":"","sources":["../../src/gateway/capturing-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAI1F;;;;GAIG;AACH,KAAK,aAAa,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE/D;;;GAGG;AACH,UAAU,kBAAkB,CAAC,SAAS,SAAS,aAAa;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC7C,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC1B,YAAY,CAAC,SAAS,SAAS,aAAa,GAAG,SAAS,EACpD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACrC,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,GAC5B,IAAI,CAAC;IACR,gBAAgB,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;CACnD;AAED,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAI1E;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,OAAO,KACb,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9C,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwC;gBAE7D,UAAU,EAAE,SAAS;IAIjC;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,SAAS,aAAa,GAAG,SAAS,EACpD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,GACjC,IAAI;IAkCP;;;;;;;;OAQG;IACH,gBAAgB,EAAE,SAAS,CAAC,kBAAkB,CAAC,CACiC;IAEhF,4DAA4D;IAC5D,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC;CAGxD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CapturingServer — registration interceptor wrapping a real McpServer.
|
|
3
|
+
*
|
|
4
|
+
* Tool routing (Wave G.1 / Design-Doc §3.1.1):
|
|
5
|
+
* - L3 direct (yootheme_builder_health, yootheme_builder_diagnose):
|
|
6
|
+
* skipped — no forward, no capture. These tools must already be
|
|
7
|
+
* registered directly on the real server BEFORE the CapturingServer
|
|
8
|
+
* wraps it, so the SDK never sees a duplicate name.
|
|
9
|
+
* - L1 essential (ESSENTIAL_TOOLS): forwarded to the real server as a
|
|
10
|
+
* first-class MCP tool reachable from `tools/list`.
|
|
11
|
+
* - L2 advanced (everything else): captured into the in-process
|
|
12
|
+
* advanced registry, reachable through the single
|
|
13
|
+
* `yootheme_builder_advanced` gateway tool.
|
|
14
|
+
*
|
|
15
|
+
* This is a typed wrapper, NOT a JS Proxy — TypeScript stays strict.
|
|
16
|
+
*
|
|
17
|
+
* Typing approach (mirrors the reference apimapper-mcp implementation):
|
|
18
|
+
* `ToolRegistrar` is the McpServer subsurface modules consume:
|
|
19
|
+
* `registerTool` + `registerResource`. `registerTool` is a hand-written
|
|
20
|
+
* generic mirroring the SDK signature EXCEPT its return type is `void`
|
|
21
|
+
* — captured tools have no live `RegisteredTool`, and no module reads
|
|
22
|
+
* the return value. A real `McpServer` is still assignable to
|
|
23
|
+
* `ToolRegistrar` (return-type bivariance for `void`), so every
|
|
24
|
+
* call-site accepts both shapes cast-free.
|
|
25
|
+
*
|
|
26
|
+
* Casts in this file (each documented + justified inline):
|
|
27
|
+
* 1. forwarded-essential — erases the handler's `InputArgs` generic to
|
|
28
|
+
* the SDK default when `config` is the erased `CapturedToolConfig`.
|
|
29
|
+
* 2. registry storage — erases the generic handler to the homogeneous
|
|
30
|
+
* `CapturedToolHandler` shape so one Map type fits all entries.
|
|
31
|
+
* 3. `registerResource` field — the SDK declares two overloads; a
|
|
32
|
+
* single spread-arg arrow cannot re-express the pair.
|
|
33
|
+
*
|
|
34
|
+
* @license MIT
|
|
35
|
+
*/
|
|
36
|
+
import { isDirectTopLevel, isEssential } from './essentials.js';
|
|
37
|
+
/**
|
|
38
|
+
* Wraps a real McpServer. Forwards L1 essentials (and all resources) to it,
|
|
39
|
+
* captures L2 non-essentials into an in-process registry, and silently
|
|
40
|
+
* skips L3 direct top-level names that must already be on the real server.
|
|
41
|
+
*/
|
|
42
|
+
export class CapturingServer {
|
|
43
|
+
realServer;
|
|
44
|
+
advancedRegistry = new Map();
|
|
45
|
+
constructor(realServer) {
|
|
46
|
+
this.realServer = realServer;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Routes a tool registration by name. Returns `void`: captured tools
|
|
50
|
+
* have no `RegisteredTool` and no `registerXTools` module reads the
|
|
51
|
+
* return value.
|
|
52
|
+
*
|
|
53
|
+
* Routing order matters: the L3-direct check is FIRST so a caller
|
|
54
|
+
* cannot accidentally re-route a direct-registered name through the
|
|
55
|
+
* gateway just by re-naming a future tool builder.
|
|
56
|
+
*/
|
|
57
|
+
registerTool(name, config, handler) {
|
|
58
|
+
// L3 — direct top-level: already on the real server, do nothing.
|
|
59
|
+
// Returning early here prevents the SDK from raising a duplicate-name
|
|
60
|
+
// error when an L3 tool's builder is accidentally re-included in the
|
|
61
|
+
// forwarded tool list.
|
|
62
|
+
if (isDirectTopLevel(name)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (isEssential(name)) {
|
|
66
|
+
// L1 — forward to the real server.
|
|
67
|
+
//
|
|
68
|
+
// Cast: the SDK pairs `config.inputSchema` and the handler through
|
|
69
|
+
// one `InputArgs` generic. Here `config` is the erased
|
|
70
|
+
// `CapturedToolConfig`, so the SDK cannot re-infer that link; the
|
|
71
|
+
// handler is asserted to the SDK's default `ToolCallback` to satisfy
|
|
72
|
+
// the call. The runtime values are exactly what the SDK expects —
|
|
73
|
+
// only the static generic linkage is erased.
|
|
74
|
+
this.realServer.registerTool(name, config, handler);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// L2 — capture into the advanced registry.
|
|
78
|
+
//
|
|
79
|
+
// Erase the generic handler to the captured-handler shape for
|
|
80
|
+
// homogeneous Map storage. The gateway validates `arguments` against
|
|
81
|
+
// the tool's Zod schema before invoking it, so the (args, extra)
|
|
82
|
+
// runtime contract holds.
|
|
83
|
+
this.advancedRegistry.set(name, {
|
|
84
|
+
config,
|
|
85
|
+
handler: handler,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Resources are always forwarded — they are not part of the tool cap.
|
|
90
|
+
*
|
|
91
|
+
* Cast: the SDK declares `registerResource` as two overloads; a single
|
|
92
|
+
* spread `(...args: RegisterResourceArgs)` arrow cannot re-express that
|
|
93
|
+
* overload pair, so the field is asserted to the SDK's exact member
|
|
94
|
+
* type. The spread forwards every argument verbatim, so the runtime
|
|
95
|
+
* contract is unchanged.
|
|
96
|
+
*/
|
|
97
|
+
registerResource = ((...args) => this.realServer.registerResource(...args));
|
|
98
|
+
/** The captured non-essential tools, keyed by tool name. */
|
|
99
|
+
getAdvancedRegistry() {
|
|
100
|
+
return this.advancedRegistry;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=capturing-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capturing-server.js","sourceRoot":"","sources":["../../src/gateway/capturing-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8DhE;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACP,UAAU,CAAY;IACtB,gBAAgB,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEzE,YAAY,UAAqB;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CACR,IAAY,EACZ,MAA0B,EAC1B,OAAgC;QAEhC,iEAAiE;QACjE,sEAAsE;QACtE,qEAAqE;QACrE,uBAAuB;QACvB,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,mCAAmC;YACnC,EAAE;YACF,mEAAmE;YACnE,uDAAuD;YACvD,kEAAkE;YAClE,qEAAqE;YACrE,kEAAkE;YAClE,6CAA6C;YAC7C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAuB,CAAC,CAAC;YACpE,OAAO;QACX,CAAC;QAED,2CAA2C;QAC3C,EAAE;QACF,8DAA8D;QAC9D,qEAAqE;QACrE,iEAAiE;QACjE,0BAA0B;QAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE;YAC5B,MAAM;YACN,OAAO,EAAE,OAAyC;SACrD,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,GAAkC,CAAC,CAAC,GAAG,IAA0B,EAAE,EAAE,CACjF,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAkC,CAAC;IAEhF,4DAA4D;IAC5D,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;CACJ"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway-Hub — single source of truth for the YT Builder MCP
|
|
3
|
+
* 3-lane registration surface.
|
|
4
|
+
*
|
|
5
|
+
* Lanes (Wave G.1 / Design-Doc §3.1.1):
|
|
6
|
+
* L1 — ESSENTIAL_TOOLS forwarded by the CapturingServer as
|
|
7
|
+
* first-class MCP tools in `tools/list`.
|
|
8
|
+
* L2 — (advanced) every NON-essential, NON-direct tool is
|
|
9
|
+
* captured by the CapturingServer and
|
|
10
|
+
* reachable through the single
|
|
11
|
+
* `yootheme_builder_advanced` gateway tool.
|
|
12
|
+
* L3 — DIRECT_TOP_LEVEL_TOOLS registered directly on the real McpServer
|
|
13
|
+
* BEFORE the CapturingServer wraps it.
|
|
14
|
+
* The CapturingServer skips these names
|
|
15
|
+
* entirely (no forward, no capture) so the
|
|
16
|
+
* SDK never sees a duplicate registration.
|
|
17
|
+
*
|
|
18
|
+
* Why this split: Cursor caps MCP servers at ~40 tools. This adapter
|
|
19
|
+
* declares 27 callable tools (19 domain L1/L3 + 7 advanced L2 + 1 gateway).
|
|
20
|
+
* The 3-lane shape keeps `tools/list` at 17 (L1) + 2 (L3) + 1 (gateway) =
|
|
21
|
+
* 20 entries, well under the cap, while every tool stays fully reachable
|
|
22
|
+
* (advanced tools through `yootheme_builder_advanced`).
|
|
23
|
+
*
|
|
24
|
+
* Health + diagnose live in L3 because they MUST be the first thing an
|
|
25
|
+
* LLM-host calls when something is broken; routing them through a gateway
|
|
26
|
+
* would create a chicken-and-egg loop (the LLM would have to discover
|
|
27
|
+
* the gateway before it can diagnose why the gateway is unreachable).
|
|
28
|
+
*
|
|
29
|
+
* @license MIT
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* L1 — Tools kept as first-class entries in `tools/list`.
|
|
33
|
+
* Forwarded by the CapturingServer to the real McpServer.
|
|
34
|
+
*/
|
|
35
|
+
export declare const ESSENTIAL_TOOLS: readonly ["yootheme_builder_pages_list", "yootheme_builder_get_etag", "yootheme_builder_element_list", "yootheme_builder_element_add", "yootheme_builder_element_update_settings", "yootheme_builder_sources_list", "yootheme_builder_element_types_list", "yootheme_builder_inspect_multi_items_binding", "yootheme_builder_element_get", "yootheme_builder_element_delete", "yootheme_builder_element_clone", "yootheme_builder_element_move", "yootheme_builder_page_get_layout", "yootheme_builder_template_summary", "yootheme_builder_element_type_get_schema", "yootheme_builder_sites_list", "yootheme_builder_sites_test"];
|
|
36
|
+
/**
|
|
37
|
+
* L3 — Tools registered DIRECTLY on the real McpServer, BEFORE the
|
|
38
|
+
* CapturingServer wraps it. The CapturingServer treats these names as a
|
|
39
|
+
* no-op (no forward, no capture) so the SDK never sees a duplicate
|
|
40
|
+
* registration. Use this lane only for tools that must be reachable
|
|
41
|
+
* even if the gateway itself fails — currently health + diagnose.
|
|
42
|
+
*/
|
|
43
|
+
export declare const DIRECT_TOP_LEVEL_TOOLS: readonly ["yootheme_builder_health", "yootheme_builder_diagnose"];
|
|
44
|
+
export type EssentialTool = (typeof ESSENTIAL_TOOLS)[number];
|
|
45
|
+
export type DirectTopLevelTool = (typeof DIRECT_TOP_LEVEL_TOOLS)[number];
|
|
46
|
+
/** True if `name` is in the L1 forwarded essentials surface. */
|
|
47
|
+
export declare function isEssential(name: string): boolean;
|
|
48
|
+
/** True if `name` is in the L3 direct top-level surface. */
|
|
49
|
+
export declare function isDirectTopLevel(name: string): boolean;
|
|
50
|
+
//# sourceMappingURL=essentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"essentials.d.ts","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,qmBAuClB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,mEAGzB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway-Hub — single source of truth for the YT Builder MCP
|
|
3
|
+
* 3-lane registration surface.
|
|
4
|
+
*
|
|
5
|
+
* Lanes (Wave G.1 / Design-Doc §3.1.1):
|
|
6
|
+
* L1 — ESSENTIAL_TOOLS forwarded by the CapturingServer as
|
|
7
|
+
* first-class MCP tools in `tools/list`.
|
|
8
|
+
* L2 — (advanced) every NON-essential, NON-direct tool is
|
|
9
|
+
* captured by the CapturingServer and
|
|
10
|
+
* reachable through the single
|
|
11
|
+
* `yootheme_builder_advanced` gateway tool.
|
|
12
|
+
* L3 — DIRECT_TOP_LEVEL_TOOLS registered directly on the real McpServer
|
|
13
|
+
* BEFORE the CapturingServer wraps it.
|
|
14
|
+
* The CapturingServer skips these names
|
|
15
|
+
* entirely (no forward, no capture) so the
|
|
16
|
+
* SDK never sees a duplicate registration.
|
|
17
|
+
*
|
|
18
|
+
* Why this split: Cursor caps MCP servers at ~40 tools. This adapter
|
|
19
|
+
* declares 27 callable tools (19 domain L1/L3 + 7 advanced L2 + 1 gateway).
|
|
20
|
+
* The 3-lane shape keeps `tools/list` at 17 (L1) + 2 (L3) + 1 (gateway) =
|
|
21
|
+
* 20 entries, well under the cap, while every tool stays fully reachable
|
|
22
|
+
* (advanced tools through `yootheme_builder_advanced`).
|
|
23
|
+
*
|
|
24
|
+
* Health + diagnose live in L3 because they MUST be the first thing an
|
|
25
|
+
* LLM-host calls when something is broken; routing them through a gateway
|
|
26
|
+
* would create a chicken-and-egg loop (the LLM would have to discover
|
|
27
|
+
* the gateway before it can diagnose why the gateway is unreachable).
|
|
28
|
+
*
|
|
29
|
+
* @license MIT
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* L1 — Tools kept as first-class entries in `tools/list`.
|
|
33
|
+
* Forwarded by the CapturingServer to the real McpServer.
|
|
34
|
+
*/
|
|
35
|
+
export const ESSENTIAL_TOOLS = [
|
|
36
|
+
'yootheme_builder_pages_list',
|
|
37
|
+
'yootheme_builder_get_etag',
|
|
38
|
+
'yootheme_builder_element_list',
|
|
39
|
+
'yootheme_builder_element_add',
|
|
40
|
+
'yootheme_builder_element_update_settings',
|
|
41
|
+
'yootheme_builder_sources_list',
|
|
42
|
+
'yootheme_builder_element_types_list',
|
|
43
|
+
// Multi-Items inspector — L1 discovery tool. Surfaces when a
|
|
44
|
+
// binding lives on the wrong (container) level and which `*_item`
|
|
45
|
+
// child should carry it. Frequent first-call when diagnosing
|
|
46
|
+
// Grid/Slider/Switcher rendering issues.
|
|
47
|
+
'yootheme_builder_inspect_multi_items_binding',
|
|
48
|
+
// F-16 hot-path promotions (Maria-Audit v2 re-confirmed) — the 5
|
|
49
|
+
// most-used read/mutate operations skip the advanced-router
|
|
50
|
+
// discovery roundtrip. Cursor cap is ~40; with the W7 sites_list +
|
|
51
|
+
// sites_test additions we sit at 17 L1 + 2 L3 + 1 gateway = 20,
|
|
52
|
+
// comfortable below the limit.
|
|
53
|
+
'yootheme_builder_element_get',
|
|
54
|
+
'yootheme_builder_element_delete',
|
|
55
|
+
'yootheme_builder_element_clone',
|
|
56
|
+
'yootheme_builder_element_move',
|
|
57
|
+
'yootheme_builder_page_get_layout',
|
|
58
|
+
// T9 (Audit-v3 B.5) — token-efficient template overview. L1 because
|
|
59
|
+
// it's the recommended first call when orienting in a large template.
|
|
60
|
+
'yootheme_builder_template_summary',
|
|
61
|
+
// 1.0.1 — element_type_get_schema promoted L2 → L1. Live-testing
|
|
62
|
+
// 1.0.0 in Claude Desktop showed tool_search couldn't surface it
|
|
63
|
+
// through the advanced gateway, yet it is the canonical prop-key
|
|
64
|
+
// discovery tool an agent needs BEFORE every element_add or
|
|
65
|
+
// element_update_settings. Hot-path for any write workflow.
|
|
66
|
+
'yootheme_builder_element_type_get_schema',
|
|
67
|
+
// W7 (Multi-Site) — sites_list + sites_test must be L1 so an agent
|
|
68
|
+
// that just connected to a fresh MCP server can answer "which sites
|
|
69
|
+
// am I configured against?" without first discovering the gateway.
|
|
70
|
+
// Both are platform-agnostic (sites_list reads the registry only,
|
|
71
|
+
// sites_test probes /health + /etag for ONE site). L1 surface 15 → 17.
|
|
72
|
+
'yootheme_builder_sites_list',
|
|
73
|
+
'yootheme_builder_sites_test',
|
|
74
|
+
];
|
|
75
|
+
/**
|
|
76
|
+
* L3 — Tools registered DIRECTLY on the real McpServer, BEFORE the
|
|
77
|
+
* CapturingServer wraps it. The CapturingServer treats these names as a
|
|
78
|
+
* no-op (no forward, no capture) so the SDK never sees a duplicate
|
|
79
|
+
* registration. Use this lane only for tools that must be reachable
|
|
80
|
+
* even if the gateway itself fails — currently health + diagnose.
|
|
81
|
+
*/
|
|
82
|
+
export const DIRECT_TOP_LEVEL_TOOLS = [
|
|
83
|
+
'yootheme_builder_health',
|
|
84
|
+
'yootheme_builder_diagnose',
|
|
85
|
+
];
|
|
86
|
+
/** True if `name` is in the L1 forwarded essentials surface. */
|
|
87
|
+
export function isEssential(name) {
|
|
88
|
+
return ESSENTIAL_TOOLS.includes(name);
|
|
89
|
+
}
|
|
90
|
+
/** True if `name` is in the L3 direct top-level surface. */
|
|
91
|
+
export function isDirectTopLevel(name) {
|
|
92
|
+
return DIRECT_TOP_LEVEL_TOOLS.includes(name);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=essentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"essentials.js","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,6BAA6B;IAC7B,2BAA2B;IAC3B,+BAA+B;IAC/B,8BAA8B;IAC9B,0CAA0C;IAC1C,+BAA+B;IAC/B,qCAAqC;IACrC,6DAA6D;IAC7D,kEAAkE;IAClE,6DAA6D;IAC7D,yCAAyC;IACzC,8CAA8C;IAC9C,iEAAiE;IACjE,4DAA4D;IAC5D,mEAAmE;IACnE,gEAAgE;IAChE,+BAA+B;IAC/B,8BAA8B;IAC9B,iCAAiC;IACjC,gCAAgC;IAChC,+BAA+B;IAC/B,kCAAkC;IAClC,oEAAoE;IACpE,sEAAsE;IACtE,mCAAmC;IACnC,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,4DAA4D;IAC5D,4DAA4D;IAC5D,0CAA0C;IAC1C,mEAAmE;IACnE,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,uEAAuE;IACvE,6BAA6B;IAC7B,6BAA6B;CACvB,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,yBAAyB;IACzB,2BAA2B;CACrB,CAAC;AAKX,gEAAgE;AAChE,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAQ,eAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,IAAY;IACzC,OAAQ,sBAA4C,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC"}
|