@wootsup/yt-builder-mcp 1.1.6 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/bin/yt-builder-mcp.js +55 -40
- package/dist/auth.d.ts +137 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +244 -0
- package/dist/auth.js.map +1 -0
- package/dist/cli/invocation-decision.d.ts +57 -0
- package/dist/cli/invocation-decision.d.ts.map +1 -0
- package/dist/cli/invocation-decision.js +86 -0
- package/dist/cli/invocation-decision.js.map +1 -0
- package/dist/client.d.ts +112 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +190 -0
- package/dist/client.js.map +1 -0
- package/dist/clients/claude-code.d.ts +18 -0
- package/dist/clients/claude-code.d.ts.map +1 -0
- package/dist/clients/claude-code.js +55 -0
- package/dist/clients/claude-code.js.map +1 -0
- package/dist/clients/claude-desktop.d.ts +19 -0
- package/dist/clients/claude-desktop.d.ts.map +1 -0
- package/dist/clients/claude-desktop.js +58 -0
- package/dist/clients/claude-desktop.js.map +1 -0
- package/dist/clients/cline.d.ts +26 -0
- package/dist/clients/cline.d.ts.map +1 -0
- package/dist/clients/cline.js +82 -0
- package/dist/clients/cline.js.map +1 -0
- package/dist/clients/codex-cli.d.ts +42 -0
- package/dist/clients/codex-cli.d.ts.map +1 -0
- package/dist/clients/codex-cli.js +292 -0
- package/dist/clients/codex-cli.js.map +1 -0
- package/dist/clients/continue.d.ts +13 -0
- package/dist/clients/continue.d.ts.map +1 -0
- package/dist/clients/continue.js +121 -0
- package/dist/clients/continue.js.map +1 -0
- package/dist/clients/cursor.d.ts +12 -0
- package/dist/clients/cursor.d.ts.map +1 -0
- package/dist/clients/cursor.js +40 -0
- package/dist/clients/cursor.js.map +1 -0
- package/dist/clients/gemini-cli.d.ts +18 -0
- package/dist/clients/gemini-cli.d.ts.map +1 -0
- package/dist/clients/gemini-cli.js +46 -0
- package/dist/clients/gemini-cli.js.map +1 -0
- package/dist/clients/home.d.ts +14 -0
- package/dist/clients/home.d.ts.map +1 -0
- package/dist/clients/home.js +20 -0
- package/dist/clients/home.js.map +1 -0
- package/dist/clients/index.d.ts +156 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +213 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/roo-code.d.ts +23 -0
- package/dist/clients/roo-code.d.ts.map +1 -0
- package/dist/clients/roo-code.js +71 -0
- package/dist/clients/roo-code.js.map +1 -0
- package/dist/clients/zed.d.ts +12 -0
- package/dist/clients/zed.d.ts.map +1 -0
- package/dist/clients/zed.js +43 -0
- package/dist/clients/zed.js.map +1 -0
- package/dist/errors/hints.d.ts +51 -0
- package/dist/errors/hints.d.ts.map +1 -0
- package/dist/errors/hints.js +95 -0
- package/dist/errors/hints.js.map +1 -0
- package/dist/errors/mask.d.ts +35 -0
- package/dist/errors/mask.d.ts.map +1 -0
- package/dist/errors/mask.js +49 -0
- package/dist/errors/mask.js.map +1 -0
- package/dist/errors/sanitize.d.ts +31 -0
- package/dist/errors/sanitize.d.ts.map +1 -0
- package/dist/errors/sanitize.js +100 -0
- package/dist/errors/sanitize.js.map +1 -0
- package/dist/errors.d.ts +42 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +61 -0
- package/dist/errors.js.map +1 -0
- package/dist/gateway/advanced-tool/discovery.d.ts +19 -0
- package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/discovery.js +53 -0
- package/dist/gateway/advanced-tool/discovery.js.map +1 -0
- package/dist/gateway/advanced-tool/domains.d.ts +47 -0
- package/dist/gateway/advanced-tool/domains.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/domains.js +94 -0
- package/dist/gateway/advanced-tool/domains.js.map +1 -0
- package/dist/gateway/advanced-tool/execute.d.ts +29 -0
- package/dist/gateway/advanced-tool/execute.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/execute.js +54 -0
- package/dist/gateway/advanced-tool/execute.js.map +1 -0
- package/dist/gateway/advanced-tool/index.d.ts +36 -0
- package/dist/gateway/advanced-tool/index.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/index.js +39 -0
- package/dist/gateway/advanced-tool/index.js.map +1 -0
- package/dist/gateway/advanced-tool/register.d.ts +18 -0
- package/dist/gateway/advanced-tool/register.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/register.js +69 -0
- package/dist/gateway/advanced-tool/register.js.map +1 -0
- package/dist/gateway/advanced-tool.d.ts +13 -0
- package/dist/gateway/advanced-tool.d.ts.map +1 -0
- package/dist/gateway/advanced-tool.js +13 -0
- package/dist/gateway/advanced-tool.js.map +1 -0
- package/dist/gateway/capturing-server.d.ts +117 -0
- package/dist/gateway/capturing-server.d.ts.map +1 -0
- package/dist/gateway/capturing-server.js +103 -0
- package/dist/gateway/capturing-server.js.map +1 -0
- package/dist/gateway/essentials.d.ts +50 -0
- package/dist/gateway/essentials.d.ts.map +1 -0
- package/dist/gateway/essentials.js +108 -0
- package/dist/gateway/essentials.js.map +1 -0
- package/dist/gateway/test-support.d.ts +41 -0
- package/dist/gateway/test-support.d.ts.map +1 -0
- package/dist/gateway/test-support.js +60 -0
- package/dist/gateway/test-support.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/dist/install-skill.d.ts +43 -0
- package/dist/install-skill.d.ts.map +1 -0
- package/dist/install-skill.js +118 -0
- package/dist/install-skill.js.map +1 -0
- package/dist/platform/detect.d.ts +64 -0
- package/dist/platform/detect.d.ts.map +1 -0
- package/dist/platform/detect.js +98 -0
- package/dist/platform/detect.js.map +1 -0
- package/dist/platform/index.d.ts +121 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +176 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/joomla.d.ts +44 -0
- package/dist/platform/joomla.d.ts.map +1 -0
- package/dist/platform/joomla.js +46 -0
- package/dist/platform/joomla.js.map +1 -0
- package/dist/server.d.ts +110 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +274 -0
- package/dist/server.js.map +1 -0
- package/dist/setup-cli-confirm.d.ts +36 -0
- package/dist/setup-cli-confirm.d.ts.map +1 -0
- package/dist/setup-cli-confirm.js +59 -0
- package/dist/setup-cli-confirm.js.map +1 -0
- package/dist/setup-cli.d.ts +193 -0
- package/dist/setup-cli.d.ts.map +1 -0
- package/dist/setup-cli.js +1032 -0
- package/dist/setup-cli.js.map +1 -0
- package/dist/setup-prompts.d.ts +64 -0
- package/dist/setup-prompts.d.ts.map +1 -0
- package/dist/setup-prompts.js +221 -0
- package/dist/setup-prompts.js.map +1 -0
- package/dist/setup-token.d.ts +38 -0
- package/dist/setup-token.d.ts.map +1 -0
- package/dist/setup-token.js +106 -0
- package/dist/setup-token.js.map +1 -0
- package/dist/setup-wizard-defaults.d.ts +43 -0
- package/dist/setup-wizard-defaults.d.ts.map +1 -0
- package/dist/setup-wizard-defaults.js +160 -0
- package/dist/setup-wizard-defaults.js.map +1 -0
- package/dist/setup-wizard-handshake.d.ts +25 -0
- package/dist/setup-wizard-handshake.d.ts.map +1 -0
- package/dist/setup-wizard-handshake.js +103 -0
- package/dist/setup-wizard-handshake.js.map +1 -0
- package/dist/setup-wizard-types.d.ts +164 -0
- package/dist/setup-wizard-types.d.ts.map +1 -0
- package/dist/setup-wizard-types.js +11 -0
- package/dist/setup-wizard-types.js.map +1 -0
- package/dist/setup-wizard.d.ts +33 -0
- package/dist/setup-wizard.d.ts.map +1 -0
- package/dist/setup-wizard.js +199 -0
- package/dist/setup-wizard.js.map +1 -0
- package/dist/setup.d.ts +17 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +33 -0
- package/dist/setup.js.map +1 -0
- package/dist/sites/bootstrap.d.ts +41 -0
- package/dist/sites/bootstrap.d.ts.map +1 -0
- package/dist/sites/bootstrap.js +58 -0
- package/dist/sites/bootstrap.js.map +1 -0
- package/dist/sites/cli/add-site.d.ts +106 -0
- package/dist/sites/cli/add-site.d.ts.map +1 -0
- package/dist/sites/cli/add-site.js +185 -0
- package/dist/sites/cli/add-site.js.map +1 -0
- package/dist/sites/cli/list-sites.d.ts +40 -0
- package/dist/sites/cli/list-sites.d.ts.map +1 -0
- package/dist/sites/cli/list-sites.js +116 -0
- package/dist/sites/cli/list-sites.js.map +1 -0
- package/dist/sites/cli/remove-site.d.ts +60 -0
- package/dist/sites/cli/remove-site.d.ts.map +1 -0
- package/dist/sites/cli/remove-site.js +120 -0
- package/dist/sites/cli/remove-site.js.map +1 -0
- package/dist/sites/cli/set-default.d.ts +47 -0
- package/dist/sites/cli/set-default.d.ts.map +1 -0
- package/dist/sites/cli/set-default.js +69 -0
- package/dist/sites/cli/set-default.js.map +1 -0
- package/dist/sites/cli/test-site.d.ts +77 -0
- package/dist/sites/cli/test-site.d.ts.map +1 -0
- package/dist/sites/cli/test-site.js +146 -0
- package/dist/sites/cli/test-site.js.map +1 -0
- package/dist/sites/client-pool.d.ts +157 -0
- package/dist/sites/client-pool.d.ts.map +1 -0
- package/dist/sites/client-pool.js +222 -0
- package/dist/sites/client-pool.js.map +1 -0
- package/dist/sites/env-bridge.d.ts +55 -0
- package/dist/sites/env-bridge.d.ts.map +1 -0
- package/dist/sites/env-bridge.js +94 -0
- package/dist/sites/env-bridge.js.map +1 -0
- package/dist/sites/paths.d.ts +21 -0
- package/dist/sites/paths.d.ts.map +1 -0
- package/dist/sites/paths.js +37 -0
- package/dist/sites/paths.js.map +1 -0
- package/dist/sites/probe.d.ts +60 -0
- package/dist/sites/probe.d.ts.map +1 -0
- package/dist/sites/probe.js +112 -0
- package/dist/sites/probe.js.map +1 -0
- package/dist/sites/registry.d.ts +142 -0
- package/dist/sites/registry.d.ts.map +1 -0
- package/dist/sites/registry.js +163 -0
- package/dist/sites/registry.js.map +1 -0
- package/dist/sites/schema.d.ts +90 -0
- package/dist/sites/schema.d.ts.map +1 -0
- package/dist/sites/schema.js +71 -0
- package/dist/sites/schema.js.map +1 -0
- package/dist/sites/secret-resolver.d.ts +115 -0
- package/dist/sites/secret-resolver.d.ts.map +1 -0
- package/dist/sites/secret-resolver.js +225 -0
- package/dist/sites/secret-resolver.js.map +1 -0
- package/dist/sites/store.d.ts +82 -0
- package/dist/sites/store.d.ts.map +1 -0
- package/dist/sites/store.js +198 -0
- package/dist/sites/store.js.map +1 -0
- package/dist/sites/tools/index.d.ts +28 -0
- package/dist/sites/tools/index.d.ts.map +1 -0
- package/dist/sites/tools/index.js +38 -0
- package/dist/sites/tools/index.js.map +1 -0
- package/dist/sites/tools/sites-list.d.ts +48 -0
- package/dist/sites/tools/sites-list.d.ts.map +1 -0
- package/dist/sites/tools/sites-list.js +137 -0
- package/dist/sites/tools/sites-list.js.map +1 -0
- package/dist/sites/tools/sites-test.d.ts +47 -0
- package/dist/sites/tools/sites-test.d.ts.map +1 -0
- package/dist/sites/tools/sites-test.js +148 -0
- package/dist/sites/tools/sites-test.js.map +1 -0
- package/dist/sites/tools/use-site.d.ts +47 -0
- package/dist/sites/tools/use-site.d.ts.map +1 -0
- package/dist/sites/tools/use-site.js +183 -0
- package/dist/sites/tools/use-site.js.map +1 -0
- package/dist/skill-loader.d.ts +111 -0
- package/dist/skill-loader.d.ts.map +1 -0
- package/dist/skill-loader.js +191 -0
- package/dist/skill-loader.js.map +1 -0
- package/dist/tools/elements/builders.d.ts +24 -0
- package/dist/tools/elements/builders.d.ts.map +1 -0
- package/dist/tools/elements/builders.js +208 -0
- package/dist/tools/elements/builders.js.map +1 -0
- package/dist/tools/elements/handlers-write.d.ts +49 -0
- package/dist/tools/elements/handlers-write.d.ts.map +1 -0
- package/dist/tools/elements/handlers-write.js +341 -0
- package/dist/tools/elements/handlers-write.js.map +1 -0
- package/dist/tools/elements/handlers.d.ts +70 -0
- package/dist/tools/elements/handlers.d.ts.map +1 -0
- package/dist/tools/elements/handlers.js +292 -0
- package/dist/tools/elements/handlers.js.map +1 -0
- package/dist/tools/elements/index.d.ts +28 -0
- package/dist/tools/elements/index.d.ts.map +1 -0
- package/dist/tools/elements/index.js +27 -0
- package/dist/tools/elements/index.js.map +1 -0
- package/dist/tools/elements.d.ts +13 -0
- package/dist/tools/elements.d.ts.map +1 -0
- package/dist/tools/elements.js +13 -0
- package/dist/tools/elements.js.map +1 -0
- package/dist/tools/elicitation.d.ts +87 -0
- package/dist/tools/elicitation.d.ts.map +1 -0
- package/dist/tools/elicitation.js +100 -0
- package/dist/tools/elicitation.js.map +1 -0
- package/dist/tools/format/elements-format.d.ts +40 -0
- package/dist/tools/format/elements-format.d.ts.map +1 -0
- package/dist/tools/format/elements-format.js +193 -0
- package/dist/tools/format/elements-format.js.map +1 -0
- package/dist/tools/format/health-format.d.ts +79 -0
- package/dist/tools/format/health-format.d.ts.map +1 -0
- package/dist/tools/format/health-format.js +181 -0
- package/dist/tools/format/health-format.js.map +1 -0
- package/dist/tools/format/inspection-format.d.ts +70 -0
- package/dist/tools/format/inspection-format.d.ts.map +1 -0
- package/dist/tools/format/inspection-format.js +359 -0
- package/dist/tools/format/inspection-format.js.map +1 -0
- package/dist/tools/format/pages-format.d.ts +57 -0
- package/dist/tools/format/pages-format.d.ts.map +1 -0
- package/dist/tools/format/pages-format.js +157 -0
- package/dist/tools/format/pages-format.js.map +1 -0
- package/dist/tools/format/sources-format.d.ts +44 -0
- package/dist/tools/format/sources-format.d.ts.map +1 -0
- package/dist/tools/format/sources-format.js +242 -0
- package/dist/tools/format/sources-format.js.map +1 -0
- package/dist/tools/health.d.ts +22 -0
- package/dist/tools/health.d.ts.map +1 -0
- package/dist/tools/health.js +220 -0
- package/dist/tools/health.js.map +1 -0
- package/dist/tools/index.d.ts +30 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +39 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/inspection.d.ts +14 -0
- package/dist/tools/inspection.d.ts.map +1 -0
- package/dist/tools/inspection.js +401 -0
- package/dist/tools/inspection.js.map +1 -0
- package/dist/tools/layout-flatten.d.ts +75 -0
- package/dist/tools/layout-flatten.d.ts.map +1 -0
- package/dist/tools/layout-flatten.js +107 -0
- package/dist/tools/layout-flatten.js.map +1 -0
- package/dist/tools/multi-items/builders.d.ts +23 -0
- package/dist/tools/multi-items/builders.d.ts.map +1 -0
- package/dist/tools/multi-items/builders.js +84 -0
- package/dist/tools/multi-items/builders.js.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts +36 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.js +57 -0
- package/dist/tools/multi-items/clean-implode-handler.js.map +1 -0
- package/dist/tools/multi-items/format/inspection-format.d.ts +41 -0
- package/dist/tools/multi-items/format/inspection-format.d.ts.map +1 -0
- package/dist/tools/multi-items/format/inspection-format.js +64 -0
- package/dist/tools/multi-items/format/inspection-format.js.map +1 -0
- package/dist/tools/multi-items/index.d.ts +18 -0
- package/dist/tools/multi-items/index.d.ts.map +1 -0
- package/dist/tools/multi-items/index.js +18 -0
- package/dist/tools/multi-items/index.js.map +1 -0
- package/dist/tools/multi-items/inspect-handler.d.ts +76 -0
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/inspect-handler.js +133 -0
- package/dist/tools/multi-items/inspect-handler.js.map +1 -0
- package/dist/tools/multi-items/inspection-cache.d.ts +85 -0
- package/dist/tools/multi-items/inspection-cache.d.ts.map +1 -0
- package/dist/tools/multi-items/inspection-cache.js +126 -0
- package/dist/tools/multi-items/inspection-cache.js.map +1 -0
- package/dist/tools/multi-items/item-container-map.d.ts +41 -0
- package/dist/tools/multi-items/item-container-map.d.ts.map +1 -0
- package/dist/tools/multi-items/item-container-map.js +73 -0
- package/dist/tools/multi-items/item-container-map.js.map +1 -0
- package/dist/tools/pages/builders.d.ts +43 -0
- package/dist/tools/pages/builders.d.ts.map +1 -0
- package/dist/tools/pages/builders.js +229 -0
- package/dist/tools/pages/builders.js.map +1 -0
- package/dist/tools/pages/handlers-read.d.ts +33 -0
- package/dist/tools/pages/handlers-read.d.ts.map +1 -0
- package/dist/tools/pages/handlers-read.js +260 -0
- package/dist/tools/pages/handlers-read.js.map +1 -0
- package/dist/tools/pages/handlers-write.d.ts +63 -0
- package/dist/tools/pages/handlers-write.d.ts.map +1 -0
- package/dist/tools/pages/handlers-write.js +127 -0
- package/dist/tools/pages/handlers-write.js.map +1 -0
- package/dist/tools/pages/index.d.ts +17 -0
- package/dist/tools/pages/index.d.ts.map +1 -0
- package/dist/tools/pages/index.js +17 -0
- package/dist/tools/pages/index.js.map +1 -0
- package/dist/tools/pages/schemas.d.ts +157 -0
- package/dist/tools/pages/schemas.d.ts.map +1 -0
- package/dist/tools/pages/schemas.js +232 -0
- package/dist/tools/pages/schemas.js.map +1 -0
- package/dist/tools/pages.d.ts +13 -0
- package/dist/tools/pages.d.ts.map +1 -0
- package/dist/tools/pages.js +13 -0
- package/dist/tools/pages.js.map +1 -0
- package/dist/tools/pool-resolve-helper.d.ts +83 -0
- package/dist/tools/pool-resolve-helper.d.ts.map +1 -0
- package/dist/tools/pool-resolve-helper.js +148 -0
- package/dist/tools/pool-resolve-helper.js.map +1 -0
- package/dist/tools/progress-phases.d.ts +46 -0
- package/dist/tools/progress-phases.d.ts.map +1 -0
- package/dist/tools/progress-phases.js +48 -0
- package/dist/tools/progress-phases.js.map +1 -0
- package/dist/tools/shared-schemas.d.ts +25 -0
- package/dist/tools/shared-schemas.d.ts.map +1 -0
- package/dist/tools/shared-schemas.js +72 -0
- package/dist/tools/shared-schemas.js.map +1 -0
- package/dist/tools/sources/builders.d.ts +13 -0
- package/dist/tools/sources/builders.d.ts.map +1 -0
- package/dist/tools/sources/builders.js +118 -0
- package/dist/tools/sources/builders.js.map +1 -0
- package/dist/tools/sources/handlers-bind.d.ts +28 -0
- package/dist/tools/sources/handlers-bind.d.ts.map +1 -0
- package/dist/tools/sources/handlers-bind.js +181 -0
- package/dist/tools/sources/handlers-bind.js.map +1 -0
- package/dist/tools/sources/handlers.d.ts +47 -0
- package/dist/tools/sources/handlers.d.ts.map +1 -0
- package/dist/tools/sources/handlers.js +108 -0
- package/dist/tools/sources/handlers.js.map +1 -0
- package/dist/tools/sources/index.d.ts +19 -0
- package/dist/tools/sources/index.d.ts.map +1 -0
- package/dist/tools/sources/index.js +18 -0
- package/dist/tools/sources/index.js.map +1 -0
- package/dist/tools/sources.d.ts +14 -0
- package/dist/tools/sources.d.ts.map +1 -0
- package/dist/tools/sources.js +14 -0
- package/dist/tools/sources.js.map +1 -0
- package/dist/tools/sparse-fields.d.ts +106 -0
- package/dist/tools/sparse-fields.d.ts.map +1 -0
- package/dist/tools/sparse-fields.js +165 -0
- package/dist/tools/sparse-fields.js.map +1 -0
- package/dist/tools/tool-builder/annotations.d.ts +55 -0
- package/dist/tools/tool-builder/annotations.d.ts.map +1 -0
- package/dist/tools/tool-builder/annotations.js +86 -0
- package/dist/tools/tool-builder/annotations.js.map +1 -0
- package/dist/tools/tool-builder/define.d.ts +31 -0
- package/dist/tools/tool-builder/define.d.ts.map +1 -0
- package/dist/tools/tool-builder/define.js +31 -0
- package/dist/tools/tool-builder/define.js.map +1 -0
- package/dist/tools/tool-builder/index.d.ts +28 -0
- package/dist/tools/tool-builder/index.d.ts.map +1 -0
- package/dist/tools/tool-builder/index.js +27 -0
- package/dist/tools/tool-builder/index.js.map +1 -0
- package/dist/tools/tool-builder/results.d.ts +104 -0
- package/dist/tools/tool-builder/results.d.ts.map +1 -0
- package/dist/tools/tool-builder/results.js +224 -0
- package/dist/tools/tool-builder/results.js.map +1 -0
- package/dist/tools/tool-builder/types.d.ts +97 -0
- package/dist/tools/tool-builder/types.d.ts.map +1 -0
- package/dist/tools/tool-builder/types.js +9 -0
- package/dist/tools/tool-builder/types.js.map +1 -0
- package/dist/tools/tool-builder.d.ts +16 -0
- package/dist/tools/tool-builder.d.ts.map +1 -0
- package/dist/tools/tool-builder.js +16 -0
- package/dist/tools/tool-builder.js.map +1 -0
- package/dist/uninstall-skill.d.ts +52 -0
- package/dist/uninstall-skill.d.ts.map +1 -0
- package/dist/uninstall-skill.js +146 -0
- package/dist/uninstall-skill.js.map +1 -0
- package/dist/uninstall.d.ts +73 -0
- package/dist/uninstall.d.ts.map +1 -0
- package/dist/uninstall.js +82 -0
- package/dist/uninstall.js.map +1 -0
- package/icon.png +0 -0
- package/manifest.json +10 -10
- package/package.json +4 -1
- package/skills/yt-builder-mcp/SKILL.md +30 -26
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure decision core for the `bin/yt-builder-mcp.js` dispatcher.
|
|
3
|
+
*
|
|
4
|
+
* The bin is a thin JS shim (not type-checked, not linted) so the
|
|
5
|
+
* branching logic that decides what a given invocation should DO lives
|
|
6
|
+
* here, in a typed + tested + covered module. The shim imports the
|
|
7
|
+
* compiled `dist/cli/invocation-decision.js` and acts on the verdict.
|
|
8
|
+
*
|
|
9
|
+
* Three outcomes:
|
|
10
|
+
* - 'cli' → a known subcommand (setup / uninstall / add-site / …):
|
|
11
|
+
* forward argv to the setup-cli dispatcher.
|
|
12
|
+
* - 'hint' → no or unknown subcommand AND stdin is an interactive
|
|
13
|
+
* TTY (a human ran the bin directly): print the
|
|
14
|
+
* discoverability hint to stderr and exit 0, rather than
|
|
15
|
+
* silently blocking on the stdio read loop ("hang").
|
|
16
|
+
* - 'server' → no or unknown subcommand AND stdin is NOT a TTY (a real
|
|
17
|
+
* MCP client piping JSON-RPC over stdin): boot the stdio
|
|
18
|
+
* server. This path MUST stay byte-for-byte equivalent to
|
|
19
|
+
* the pre-hint behaviour — the guard is strict on isTTY so
|
|
20
|
+
* the client path is never diverted.
|
|
21
|
+
*
|
|
22
|
+
* @license MIT
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Canonical set of subcommands handled by the setup-cli dispatcher.
|
|
26
|
+
*
|
|
27
|
+
* Mirrors `CLI_SUBCOMMANDS` in `bin/yt-builder-mcp.js`. Kept frozen so a
|
|
28
|
+
* consumer cannot mutate the shared decision surface at runtime.
|
|
29
|
+
*/
|
|
30
|
+
export const KNOWN_SUBCOMMANDS = Object.freeze(new Set([
|
|
31
|
+
'setup',
|
|
32
|
+
'install-skill',
|
|
33
|
+
'install',
|
|
34
|
+
// Reverse-of-setup: remove our server entry + optional skill.
|
|
35
|
+
'uninstall',
|
|
36
|
+
'remove',
|
|
37
|
+
// W9 multi-site CLI subcommands.
|
|
38
|
+
'add-site',
|
|
39
|
+
'list-sites',
|
|
40
|
+
'remove-site',
|
|
41
|
+
'set-default',
|
|
42
|
+
'test-site',
|
|
43
|
+
'help',
|
|
44
|
+
'--help',
|
|
45
|
+
'-h',
|
|
46
|
+
'--version',
|
|
47
|
+
'-v',
|
|
48
|
+
]));
|
|
49
|
+
/**
|
|
50
|
+
* Discoverability hint printed to stderr when a human runs the bin
|
|
51
|
+
* directly (no/unknown subcommand at an interactive TTY). stderr, not
|
|
52
|
+
* stdout, so it never contaminates a JSON-RPC frame if redirected.
|
|
53
|
+
*/
|
|
54
|
+
export const BARE_INVOCATION_HINT = [
|
|
55
|
+
'This is the YT Builder MCP server (stdio), normally launched by your',
|
|
56
|
+
"AI client, not run directly — that's why it waits.",
|
|
57
|
+
'Did you mean `npx -y @wootsup/yt-builder-mcp setup`?',
|
|
58
|
+
'See also: uninstall, help.',
|
|
59
|
+
].join(' ');
|
|
60
|
+
/**
|
|
61
|
+
* True when `sub` is a subcommand the setup-cli dispatcher handles.
|
|
62
|
+
* `undefined` (no argument) is never a known subcommand.
|
|
63
|
+
*/
|
|
64
|
+
export function isKnownSubcommand(sub) {
|
|
65
|
+
return sub !== undefined && KNOWN_SUBCOMMANDS.has(sub);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Decide the bin action from the first CLI argument and whether stdin is
|
|
69
|
+
* an interactive TTY.
|
|
70
|
+
*
|
|
71
|
+
* @param subcommand argv[2], or undefined when no argument was passed.
|
|
72
|
+
* @param stdinIsTTY `process.stdin.isTTY` — `true` only for an
|
|
73
|
+
* interactive human terminal; `false`/`undefined` for
|
|
74
|
+
* a piped stream (which is how every MCP client runs
|
|
75
|
+
* the server). The guard is STRICT: only `=== true`
|
|
76
|
+
* yields the hint, so the MCP-client path is never
|
|
77
|
+
* diverted.
|
|
78
|
+
*/
|
|
79
|
+
export function decideInvocation(subcommand, stdinIsTTY) {
|
|
80
|
+
if (isKnownSubcommand(subcommand)) {
|
|
81
|
+
return 'cli';
|
|
82
|
+
}
|
|
83
|
+
// No / unknown subcommand. Only an interactive human gets the hint.
|
|
84
|
+
return stdinIsTTY === true ? 'hint' : 'server';
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=invocation-decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-decision.js","sourceRoot":"","sources":["../../src/cli/invocation-decision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,MAAM,CAAC,MAAM,CAC/D,IAAI,GAAG,CAAS;IACZ,OAAO;IACP,eAAe;IACf,SAAS;IACT,8DAA8D;IAC9D,WAAW;IACX,QAAQ;IACR,iCAAiC;IACjC,UAAU;IACV,YAAY;IACZ,aAAa;IACb,aAAa;IACb,WAAW;IACX,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,WAAW;IACX,IAAI;CACP,CAAC,CACL,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAW;IACxC,sEAAsE;IACtE,oDAAoD;IACpD,sDAAsD;IACtD,4BAA4B;CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAKZ;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACrD,OAAO,GAAG,KAAK,SAAS,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC5B,UAA8B,EAC9B,UAA+B;IAE/B,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,oEAAoE;IACpE,OAAO,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,CAAC"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `RestClient` — thin wrapper around `fetch` that targets the
|
|
3
|
+
* `yt-builder-mcp/v1` REST namespace.
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Compose final URLs (`{baseUrl}/wp-json/yt-builder-mcp/v1{path}`)
|
|
7
|
+
* - Attach `Authorization: Bearer …`
|
|
8
|
+
* - Encode JSON bodies + propagate `If-Match` etag headers
|
|
9
|
+
* - Map non-2xx into `RestError` with status / `code` / message
|
|
10
|
+
* - Map network failures into `NetworkError`
|
|
11
|
+
*
|
|
12
|
+
* The client deliberately keeps zero state beyond constructor config
|
|
13
|
+
* so each tool can hold a reference and call `.get/.post/.put/.delete`
|
|
14
|
+
* without coordinating sessions.
|
|
15
|
+
*
|
|
16
|
+
* @license MIT
|
|
17
|
+
*/
|
|
18
|
+
import type { Platform } from './platform/index.js';
|
|
19
|
+
/**
|
|
20
|
+
* Canonical WordPress REST-namespace path. Re-exported for backward
|
|
21
|
+
* compat — new code should reach for `Platform.restNamespacePath`.
|
|
22
|
+
*/
|
|
23
|
+
export declare const REST_NAMESPACE_PATH = "/wp-json/yt-builder-mcp/v1";
|
|
24
|
+
/**
|
|
25
|
+
* Legacy single-platform options shape. Kept so existing call-sites
|
|
26
|
+
* continue working without touching every entry point.
|
|
27
|
+
*/
|
|
28
|
+
export interface LegacyRestClientOptions {
|
|
29
|
+
readonly baseUrl: string;
|
|
30
|
+
readonly bearerToken: string;
|
|
31
|
+
readonly timeoutMs?: number;
|
|
32
|
+
/** Injected for tests. Defaults to `globalThis.fetch`. */
|
|
33
|
+
readonly fetch?: typeof fetch;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Platform-aware options shape (Wave G.0+).
|
|
37
|
+
* Pass an instance of `WordPressPlatform` (or any future `Platform`)
|
|
38
|
+
* instead of a bare `baseUrl`.
|
|
39
|
+
*/
|
|
40
|
+
export interface PlatformRestClientOptions {
|
|
41
|
+
readonly platform: Platform;
|
|
42
|
+
readonly bearerToken: string;
|
|
43
|
+
readonly timeoutMs?: number;
|
|
44
|
+
/** Injected for tests. Defaults to `globalThis.fetch`. */
|
|
45
|
+
readonly fetch?: typeof fetch;
|
|
46
|
+
}
|
|
47
|
+
/** Discriminated union: callers pick whichever shape suits them. */
|
|
48
|
+
export type RestClientOptions = LegacyRestClientOptions | PlatformRestClientOptions;
|
|
49
|
+
export interface RequestOptions {
|
|
50
|
+
/** Optional ETag for optimistic-lock (`If-Match` header). */
|
|
51
|
+
readonly etag?: string;
|
|
52
|
+
/** JSON body. */
|
|
53
|
+
readonly body?: unknown;
|
|
54
|
+
/** Extra headers. */
|
|
55
|
+
readonly headers?: Record<string, string>;
|
|
56
|
+
/** Optional AbortSignal. */
|
|
57
|
+
readonly signal?: AbortSignal;
|
|
58
|
+
}
|
|
59
|
+
export declare class RestClient {
|
|
60
|
+
private readonly platform;
|
|
61
|
+
private readonly baseUrl;
|
|
62
|
+
private readonly bearerToken;
|
|
63
|
+
private readonly timeoutMs;
|
|
64
|
+
private readonly fetchImpl;
|
|
65
|
+
constructor(options: RestClientOptions);
|
|
66
|
+
/** Expose the underlying platform (used by tools that need restNamespacePath/kind). */
|
|
67
|
+
getPlatform(): Platform;
|
|
68
|
+
get<T = unknown>(path: string, options?: RequestOptions): Promise<T>;
|
|
69
|
+
post<T = unknown>(path: string, options?: RequestOptions): Promise<T>;
|
|
70
|
+
put<T = unknown>(path: string, options?: RequestOptions): Promise<T>;
|
|
71
|
+
delete<T = unknown>(path: string, options?: RequestOptions): Promise<T>;
|
|
72
|
+
request<T = unknown>(method: string, path: string, options?: RequestOptions): Promise<T>;
|
|
73
|
+
private buildUrl;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* URL-encode a JSON-Pointer-style element path for use in the route.
|
|
77
|
+
*
|
|
78
|
+
* The plugin's regex captures everything after `/elements/`, so the
|
|
79
|
+
* raw `/grid/1/columns/0` path can be passed as-is — but each segment
|
|
80
|
+
* must be percent-encoded so reserved chars like `~` (used in
|
|
81
|
+
* JSON-Pointer escapes) don't collide with WordPress' router.
|
|
82
|
+
*/
|
|
83
|
+
export declare function encodeElementPath(pointer: string): string;
|
|
84
|
+
/**
|
|
85
|
+
* URL-encode a `template_id` path segment.
|
|
86
|
+
*
|
|
87
|
+
* Per RFC 3986 §3.3 `pchar = unreserved / pct-encoded / sub-delims / ":" /
|
|
88
|
+
* "@"`, the colon is a valid raw character inside a path segment. The
|
|
89
|
+
* plugin route regex on both platforms accepts it directly
|
|
90
|
+
* ({@see ElementsController::register_routes() char class
|
|
91
|
+
* `[A-Za-z0-9_:-]+`}, and the Joomla `templateId` rule
|
|
92
|
+
* `[A-Za-z0-9_:-]{1,32}`).
|
|
93
|
+
*
|
|
94
|
+
* However, WordPress' rewrite rules pass the rest of the path through to
|
|
95
|
+
* the `rest_route` query var WITHOUT percent-decoding `%3A`, so when the
|
|
96
|
+
* REST router compares the route regex against the raw rest_route value,
|
|
97
|
+
* `%3A` doesn't match `:`. We therefore percent-encode every reserved
|
|
98
|
+
* character EXCEPT `:` so URLs like `/pages/page:3290/elements` round-trip
|
|
99
|
+
* to the server with the literal colon intact.
|
|
100
|
+
*
|
|
101
|
+
* `encodeURIComponent` is normally the right choice here (path-segment
|
|
102
|
+
* safety), but it eagerly encodes `:` to `%3A` since the colon is a
|
|
103
|
+
* gen-delim outside path-segment context. We restore the literal `:`
|
|
104
|
+
* post-encode. This fix unblocks the agent flow:
|
|
105
|
+
*
|
|
106
|
+
* pages_create → returns `template_id: "page:3290"`
|
|
107
|
+
* element_add → route URL `/pages/page:3290/elements` MUST match.
|
|
108
|
+
*
|
|
109
|
+
* Task #35 (2026-05-29): E3 live-verify discovered the gap.
|
|
110
|
+
*/
|
|
111
|
+
export declare function encodeTemplateId(templateId: string): string;
|
|
112
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,+BAAgC,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACjC;AAED,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB;IACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CACjC;AAED,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,OAAO,EAAE,iBAAiB;IAYtC,uFAAuF;IACvF,WAAW,IAAI,QAAQ;IAIvB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxE,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrE,OAAO,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,CAAC,CAAC;IAgDb,OAAO,CAAC,QAAQ;CAInB;AAgCD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAczD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `RestClient` — thin wrapper around `fetch` that targets the
|
|
3
|
+
* `yt-builder-mcp/v1` REST namespace.
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Compose final URLs (`{baseUrl}/wp-json/yt-builder-mcp/v1{path}`)
|
|
7
|
+
* - Attach `Authorization: Bearer …`
|
|
8
|
+
* - Encode JSON bodies + propagate `If-Match` etag headers
|
|
9
|
+
* - Map non-2xx into `RestError` with status / `code` / message
|
|
10
|
+
* - Map network failures into `NetworkError`
|
|
11
|
+
*
|
|
12
|
+
* The client deliberately keeps zero state beyond constructor config
|
|
13
|
+
* so each tool can hold a reference and call `.get/.post/.put/.delete`
|
|
14
|
+
* without coordinating sessions.
|
|
15
|
+
*
|
|
16
|
+
* @license MIT
|
|
17
|
+
*/
|
|
18
|
+
import { NetworkError, RestError } from './errors.js';
|
|
19
|
+
import { WordPressPlatform, WORDPRESS_REST_NAMESPACE_PATH } from './platform/index.js';
|
|
20
|
+
/**
|
|
21
|
+
* Canonical WordPress REST-namespace path. Re-exported for backward
|
|
22
|
+
* compat — new code should reach for `Platform.restNamespacePath`.
|
|
23
|
+
*/
|
|
24
|
+
export const REST_NAMESPACE_PATH = WORDPRESS_REST_NAMESPACE_PATH;
|
|
25
|
+
export class RestClient {
|
|
26
|
+
platform;
|
|
27
|
+
baseUrl;
|
|
28
|
+
bearerToken;
|
|
29
|
+
timeoutMs;
|
|
30
|
+
fetchImpl;
|
|
31
|
+
constructor(options) {
|
|
32
|
+
// Dual-form: accept either a `Platform` or a legacy `baseUrl`.
|
|
33
|
+
const platform = isPlatformOptions(options)
|
|
34
|
+
? options.platform
|
|
35
|
+
: new WordPressPlatform(options.baseUrl);
|
|
36
|
+
this.platform = platform;
|
|
37
|
+
this.baseUrl = platform.baseUrl.replace(/\/+$/, '');
|
|
38
|
+
this.bearerToken = options.bearerToken;
|
|
39
|
+
this.timeoutMs = options.timeoutMs ?? 15_000;
|
|
40
|
+
this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
41
|
+
}
|
|
42
|
+
/** Expose the underlying platform (used by tools that need restNamespacePath/kind). */
|
|
43
|
+
getPlatform() {
|
|
44
|
+
return this.platform;
|
|
45
|
+
}
|
|
46
|
+
get(path, options = {}) {
|
|
47
|
+
return this.request('GET', path, options);
|
|
48
|
+
}
|
|
49
|
+
post(path, options = {}) {
|
|
50
|
+
return this.request('POST', path, options);
|
|
51
|
+
}
|
|
52
|
+
put(path, options = {}) {
|
|
53
|
+
return this.request('PUT', path, options);
|
|
54
|
+
}
|
|
55
|
+
delete(path, options = {}) {
|
|
56
|
+
return this.request('DELETE', path, options);
|
|
57
|
+
}
|
|
58
|
+
async request(method, path, options = {}) {
|
|
59
|
+
const url = this.buildUrl(path);
|
|
60
|
+
const headers = {
|
|
61
|
+
Authorization: `Bearer ${this.bearerToken}`,
|
|
62
|
+
Accept: 'application/json',
|
|
63
|
+
...(options.headers ?? {}),
|
|
64
|
+
};
|
|
65
|
+
if (options.etag !== undefined && options.etag !== '') {
|
|
66
|
+
headers['If-Match'] = options.etag;
|
|
67
|
+
}
|
|
68
|
+
const init = { method, headers };
|
|
69
|
+
if (options.body !== undefined) {
|
|
70
|
+
headers['Content-Type'] = 'application/json';
|
|
71
|
+
init.body = JSON.stringify(options.body);
|
|
72
|
+
}
|
|
73
|
+
const controller = new AbortController();
|
|
74
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
75
|
+
if (options.signal !== undefined) {
|
|
76
|
+
options.signal.addEventListener('abort', () => controller.abort());
|
|
77
|
+
}
|
|
78
|
+
init.signal = controller.signal;
|
|
79
|
+
let response;
|
|
80
|
+
try {
|
|
81
|
+
response = await this.fetchImpl(url, init);
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
throw new NetworkError({ cause: e, url });
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
clearTimeout(timeoutId);
|
|
88
|
+
}
|
|
89
|
+
const text = await response.text();
|
|
90
|
+
const parsed = parseJsonSafe(text);
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
throw new RestError({
|
|
93
|
+
status: response.status,
|
|
94
|
+
code: extractErrorCode(parsed),
|
|
95
|
+
message: extractErrorMessage(parsed, response.statusText),
|
|
96
|
+
body: parsed,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return parsed;
|
|
100
|
+
}
|
|
101
|
+
buildUrl(path) {
|
|
102
|
+
const normalized = path.startsWith('/') ? path : `/${path}`;
|
|
103
|
+
return `${this.baseUrl}${this.platform.restNamespacePath}${normalized}`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/** Type guard — discriminate between the two RestClientOptions shapes. */
|
|
107
|
+
function isPlatformOptions(opts) {
|
|
108
|
+
return 'platform' in opts && opts.platform !== undefined;
|
|
109
|
+
}
|
|
110
|
+
function parseJsonSafe(text) {
|
|
111
|
+
if (text.trim() === '')
|
|
112
|
+
return null;
|
|
113
|
+
try {
|
|
114
|
+
return JSON.parse(text);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return text;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function extractErrorCode(body) {
|
|
121
|
+
if (body !== null && typeof body === 'object' && 'code' in body) {
|
|
122
|
+
const code = body.code;
|
|
123
|
+
if (typeof code === 'string')
|
|
124
|
+
return code;
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
function extractErrorMessage(body, fallback) {
|
|
129
|
+
if (body !== null && typeof body === 'object' && 'message' in body) {
|
|
130
|
+
const msg = body.message;
|
|
131
|
+
if (typeof msg === 'string' && msg !== '')
|
|
132
|
+
return msg;
|
|
133
|
+
}
|
|
134
|
+
return fallback !== '' ? fallback : 'Unknown REST error';
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* URL-encode a JSON-Pointer-style element path for use in the route.
|
|
138
|
+
*
|
|
139
|
+
* The plugin's regex captures everything after `/elements/`, so the
|
|
140
|
+
* raw `/grid/1/columns/0` path can be passed as-is — but each segment
|
|
141
|
+
* must be percent-encoded so reserved chars like `~` (used in
|
|
142
|
+
* JSON-Pointer escapes) don't collide with WordPress' router.
|
|
143
|
+
*/
|
|
144
|
+
export function encodeElementPath(pointer) {
|
|
145
|
+
if (pointer === '' || pointer === '/')
|
|
146
|
+
return '';
|
|
147
|
+
// Strip leading slash, split, encode each segment, rejoin.
|
|
148
|
+
// Task #39 (2026-05-29): restore literal `:` per segment so a
|
|
149
|
+
// fully-qualified pointer that embeds a per-page template id
|
|
150
|
+
// (`/templates/page:3315/layout/...`) survives the round-trip
|
|
151
|
+
// without `page%3A3315` landing in the server-side pointer
|
|
152
|
+
// assertion. Mirrors encodeTemplateId. `:` is a valid pchar
|
|
153
|
+
// (RFC 3986 §3.3) and WP REST route captures treat the segment
|
|
154
|
+
// as opaque text — leaving `:` literal is the safest restore.
|
|
155
|
+
const segments = pointer.replace(/^\//, '').split('/');
|
|
156
|
+
return segments
|
|
157
|
+
.map((s) => encodeURIComponent(s).replace(/%3A/g, ':'))
|
|
158
|
+
.join('/');
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* URL-encode a `template_id` path segment.
|
|
162
|
+
*
|
|
163
|
+
* Per RFC 3986 §3.3 `pchar = unreserved / pct-encoded / sub-delims / ":" /
|
|
164
|
+
* "@"`, the colon is a valid raw character inside a path segment. The
|
|
165
|
+
* plugin route regex on both platforms accepts it directly
|
|
166
|
+
* ({@see ElementsController::register_routes() char class
|
|
167
|
+
* `[A-Za-z0-9_:-]+`}, and the Joomla `templateId` rule
|
|
168
|
+
* `[A-Za-z0-9_:-]{1,32}`).
|
|
169
|
+
*
|
|
170
|
+
* However, WordPress' rewrite rules pass the rest of the path through to
|
|
171
|
+
* the `rest_route` query var WITHOUT percent-decoding `%3A`, so when the
|
|
172
|
+
* REST router compares the route regex against the raw rest_route value,
|
|
173
|
+
* `%3A` doesn't match `:`. We therefore percent-encode every reserved
|
|
174
|
+
* character EXCEPT `:` so URLs like `/pages/page:3290/elements` round-trip
|
|
175
|
+
* to the server with the literal colon intact.
|
|
176
|
+
*
|
|
177
|
+
* `encodeURIComponent` is normally the right choice here (path-segment
|
|
178
|
+
* safety), but it eagerly encodes `:` to `%3A` since the colon is a
|
|
179
|
+
* gen-delim outside path-segment context. We restore the literal `:`
|
|
180
|
+
* post-encode. This fix unblocks the agent flow:
|
|
181
|
+
*
|
|
182
|
+
* pages_create → returns `template_id: "page:3290"`
|
|
183
|
+
* element_add → route URL `/pages/page:3290/elements` MUST match.
|
|
184
|
+
*
|
|
185
|
+
* Task #35 (2026-05-29): E3 live-verify discovered the gap.
|
|
186
|
+
*/
|
|
187
|
+
export function encodeTemplateId(templateId) {
|
|
188
|
+
return encodeURIComponent(templateId).replace(/%3A/g, ':');
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code (Anthropic CLI) config writer.
|
|
3
|
+
*
|
|
4
|
+
* All platforms: ~/.claude.json (single file)
|
|
5
|
+
*
|
|
6
|
+
* Schema mirrors Claude Desktop's `mcpServers` map:
|
|
7
|
+
*
|
|
8
|
+
* {
|
|
9
|
+
* "mcpServers": {
|
|
10
|
+
* "<name>": { "command": "npx", "args": [...], "env": {...} }
|
|
11
|
+
* }
|
|
12
|
+
* }
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
import { type ClientWriter } from './index.js';
|
|
17
|
+
export declare const claudeCodeClient: ClientWriter;
|
|
18
|
+
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/clients/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAIH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAgBpB,eAAO,MAAM,gBAAgB,EAAE,YAuB9B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code (Anthropic CLI) config writer.
|
|
3
|
+
*
|
|
4
|
+
* All platforms: ~/.claude.json (single file)
|
|
5
|
+
*
|
|
6
|
+
* Schema mirrors Claude Desktop's `mcpServers` map:
|
|
7
|
+
*
|
|
8
|
+
* {
|
|
9
|
+
* "mcpServers": {
|
|
10
|
+
* "<name>": { "command": "npx", "args": [...], "env": {...} }
|
|
11
|
+
* }
|
|
12
|
+
* }
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync } from 'node:fs';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
import { userHome } from './home.js';
|
|
19
|
+
import { detectInServerMap, patchJsonFile, removeFromServerMap, } from './index.js';
|
|
20
|
+
function configPath() {
|
|
21
|
+
return join(userHome(), '.claude.json');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Detection: either the user-config file already exists, or the
|
|
25
|
+
* `~/.claude/` directory does (Claude Code creates it on first run
|
|
26
|
+
* for skills, transcripts, etc., even before the JSON file lands).
|
|
27
|
+
*/
|
|
28
|
+
function isDetected() {
|
|
29
|
+
const home = userHome();
|
|
30
|
+
return existsSync(join(home, '.claude.json')) || existsSync(join(home, '.claude'));
|
|
31
|
+
}
|
|
32
|
+
export const claudeCodeClient = {
|
|
33
|
+
id: 'claude-code',
|
|
34
|
+
label: 'Claude Code',
|
|
35
|
+
configPath,
|
|
36
|
+
isDetected,
|
|
37
|
+
apply: async (serverName, config) => {
|
|
38
|
+
await patchJsonFile(configPath(), (current) => {
|
|
39
|
+
const servers = current.mcpServers !== null &&
|
|
40
|
+
typeof current.mcpServers === 'object' &&
|
|
41
|
+
!Array.isArray(current.mcpServers)
|
|
42
|
+
? { ...current.mcpServers }
|
|
43
|
+
: {};
|
|
44
|
+
servers[serverName] = {
|
|
45
|
+
command: config.command,
|
|
46
|
+
args: config.args,
|
|
47
|
+
env: config.env,
|
|
48
|
+
};
|
|
49
|
+
return { ...current, mcpServers: servers };
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
detect: () => detectInServerMap(configPath(), 'mcpServers'),
|
|
53
|
+
remove: () => removeFromServerMap(configPath(), 'mcpServers'),
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/clients/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GAGtB,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU;IACf,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC1C,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,aAAa;IACpB,UAAU;IACV,UAAU;IACV,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,UAAU,KAAK,IAAI;gBAC3B,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;gBACtC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9B,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,UAAsC,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;CAChE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Desktop config writer.
|
|
3
|
+
*
|
|
4
|
+
* macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
|
|
5
|
+
* Windows: %APPDATA%\Claude\claude_desktop_config.json
|
|
6
|
+
* Linux: ~/.config/Claude/claude_desktop_config.json (unofficial)
|
|
7
|
+
*
|
|
8
|
+
* Schema:
|
|
9
|
+
* {
|
|
10
|
+
* "mcpServers": {
|
|
11
|
+
* "<name>": { "command": "npx", "args": [...], "env": {...} }
|
|
12
|
+
* }
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
import { type ClientWriter } from './index.js';
|
|
18
|
+
export declare const claudeDesktopClient: ClientWriter;
|
|
19
|
+
//# sourceMappingURL=claude-desktop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-desktop.d.ts","sourceRoot":"","sources":["../../src/clients/claude-desktop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAIH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAgBpB,eAAO,MAAM,mBAAmB,EAAE,YAuBjC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Desktop config writer.
|
|
3
|
+
*
|
|
4
|
+
* macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
|
|
5
|
+
* Windows: %APPDATA%\Claude\claude_desktop_config.json
|
|
6
|
+
* Linux: ~/.config/Claude/claude_desktop_config.json (unofficial)
|
|
7
|
+
*
|
|
8
|
+
* Schema:
|
|
9
|
+
* {
|
|
10
|
+
* "mcpServers": {
|
|
11
|
+
* "<name>": { "command": "npx", "args": [...], "env": {...} }
|
|
12
|
+
* }
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync } from 'node:fs';
|
|
18
|
+
import { platform } from 'node:os';
|
|
19
|
+
import { join } from 'node:path';
|
|
20
|
+
import { userHome } from './home.js';
|
|
21
|
+
import { detectInServerMap, patchJsonFile, removeFromServerMap, } from './index.js';
|
|
22
|
+
function configPath() {
|
|
23
|
+
const home = userHome();
|
|
24
|
+
switch (platform()) {
|
|
25
|
+
case 'darwin':
|
|
26
|
+
return join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
27
|
+
case 'win32': {
|
|
28
|
+
const appData = process.env.APPDATA ?? join(home, 'AppData', 'Roaming');
|
|
29
|
+
return join(appData, 'Claude', 'claude_desktop_config.json');
|
|
30
|
+
}
|
|
31
|
+
default:
|
|
32
|
+
return join(home, '.config', 'Claude', 'claude_desktop_config.json');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export const claudeDesktopClient = {
|
|
36
|
+
id: 'claude-desktop',
|
|
37
|
+
label: 'Claude Desktop',
|
|
38
|
+
configPath,
|
|
39
|
+
isDetected: () => existsSync(configPath()),
|
|
40
|
+
apply: async (serverName, config) => {
|
|
41
|
+
await patchJsonFile(configPath(), (current) => {
|
|
42
|
+
const servers = current.mcpServers !== null &&
|
|
43
|
+
typeof current.mcpServers === 'object' &&
|
|
44
|
+
!Array.isArray(current.mcpServers)
|
|
45
|
+
? { ...current.mcpServers }
|
|
46
|
+
: {};
|
|
47
|
+
servers[serverName] = {
|
|
48
|
+
command: config.command,
|
|
49
|
+
args: config.args,
|
|
50
|
+
env: config.env,
|
|
51
|
+
};
|
|
52
|
+
return { ...current, mcpServers: servers };
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
detect: () => detectInServerMap(configPath(), 'mcpServers'),
|
|
56
|
+
remove: () => removeFromServerMap(configPath(), 'mcpServers'),
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=claude-desktop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-desktop.js","sourceRoot":"","sources":["../../src/clients/claude-desktop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GAGtB,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU;IACf,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACjB,KAAK,QAAQ;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAChG,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QACjE,CAAC;QACD;YACI,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC7C,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,gBAAgB;IACvB,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IAC1C,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,UAAU,KAAK,IAAI;gBAC3B,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;gBACtC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9B,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,UAAsC,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;CAChE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cline MCP config writer.
|
|
3
|
+
*
|
|
4
|
+
* Cline ships as the VS Code extension `saoudrizwan.claude-dev`. Per
|
|
5
|
+
* Cline's docs (`docs.cline.bot` "MCP / Configuration"), the per-user
|
|
6
|
+
* MCP server registry lives at
|
|
7
|
+
* `<vsCodeUserDir>/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`
|
|
8
|
+
*
|
|
9
|
+
* VS Code's `<vsCodeUserDir>` is:
|
|
10
|
+
* macOS: ~/Library/Application Support/Code/User
|
|
11
|
+
* Linux: ~/.config/Code/User
|
|
12
|
+
* Windows: %APPDATA%\Code\User
|
|
13
|
+
*
|
|
14
|
+
* Schema mirrors Claude Desktop's `mcpServers` map:
|
|
15
|
+
*
|
|
16
|
+
* {
|
|
17
|
+
* "mcpServers": {
|
|
18
|
+
* "<name>": { "command": "npx", "args": [...], "env": {...} }
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* @license MIT
|
|
23
|
+
*/
|
|
24
|
+
import { type ClientWriter } from './index.js';
|
|
25
|
+
export declare const clineClient: ClientWriter;
|
|
26
|
+
//# sourceMappingURL=cline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cline.d.ts","sourceRoot":"","sources":["../../src/clients/cline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,EAIH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AA0CpB,eAAO,MAAM,WAAW,EAAE,YAuBzB,CAAC"}
|