@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,53 @@
|
|
|
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 { patchJsonFile } 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
|
+
};
|
|
53
|
+
//# 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,EAAE,aAAa,EAA2C,MAAM,YAAY,CAAC;AAEpF,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;CACJ,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,EAAiB,KAAK,YAAY,EAAwB,MAAM,YAAY,CAAC;AAgBpF,eAAO,MAAM,mBAAmB,EAAE,YAqBjC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 { patchJsonFile } 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
|
+
};
|
|
56
|
+
//# 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,EAAE,aAAa,EAA2C,MAAM,YAAY,CAAC;AAEpF,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;CACJ,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,EAAiB,KAAK,YAAY,EAAwB,MAAM,YAAY,CAAC;AA0CpF,eAAO,MAAM,WAAW,EAAE,YAqBzB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { existsSync } from 'node:fs';
|
|
25
|
+
import { platform } from 'node:os';
|
|
26
|
+
import { join } from 'node:path';
|
|
27
|
+
import { userHome } from './home.js';
|
|
28
|
+
import { patchJsonFile } from './index.js';
|
|
29
|
+
const EXTENSION_ID = 'saoudrizwan.claude-dev';
|
|
30
|
+
const SETTINGS_FILENAME = 'cline_mcp_settings.json';
|
|
31
|
+
function vsCodeUserDir() {
|
|
32
|
+
const home = userHome();
|
|
33
|
+
switch (platform()) {
|
|
34
|
+
case 'darwin':
|
|
35
|
+
return join(home, 'Library', 'Application Support', 'Code', 'User');
|
|
36
|
+
case 'win32': {
|
|
37
|
+
const appData = process.env.APPDATA ?? join(home, 'AppData', 'Roaming');
|
|
38
|
+
return join(appData, 'Code', 'User');
|
|
39
|
+
}
|
|
40
|
+
default:
|
|
41
|
+
return join(home, '.config', 'Code', 'User');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function configPath() {
|
|
45
|
+
return join(vsCodeUserDir(), 'globalStorage', EXTENSION_ID, 'settings', SETTINGS_FILENAME);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Detection: prefer the most concrete signal we can get without
|
|
49
|
+
* triggering false-negatives on a fresh install. The extension's
|
|
50
|
+
* globalStorage directory is created on first launch — checking for
|
|
51
|
+
* its existence reliably distinguishes "Cline installed" from "VS
|
|
52
|
+
* Code installed without Cline". As a fallback we accept the bare
|
|
53
|
+
* VS Code user dir so the wizard at least surfaces the option.
|
|
54
|
+
*/
|
|
55
|
+
function isDetected() {
|
|
56
|
+
const extDir = join(vsCodeUserDir(), 'globalStorage', EXTENSION_ID);
|
|
57
|
+
return existsSync(extDir) || existsSync(configPath());
|
|
58
|
+
}
|
|
59
|
+
export const clineClient = {
|
|
60
|
+
id: 'cline',
|
|
61
|
+
label: 'Cline (VS Code)',
|
|
62
|
+
configPath,
|
|
63
|
+
isDetected,
|
|
64
|
+
apply: async (serverName, config) => {
|
|
65
|
+
await patchJsonFile(configPath(), (current) => {
|
|
66
|
+
const servers = current.mcpServers !== null &&
|
|
67
|
+
typeof current.mcpServers === 'object' &&
|
|
68
|
+
!Array.isArray(current.mcpServers)
|
|
69
|
+
? { ...current.mcpServers }
|
|
70
|
+
: {};
|
|
71
|
+
servers[serverName] = {
|
|
72
|
+
command: config.command,
|
|
73
|
+
args: config.args,
|
|
74
|
+
env: config.env,
|
|
75
|
+
};
|
|
76
|
+
return { ...current, mcpServers: servers };
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=cline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cline.js","sourceRoot":"","sources":["../../src/clients/cline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;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,EAAE,aAAa,EAA2C,MAAM,YAAY,CAAC;AAEpF,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAEpD,SAAS,aAAa;IAClB,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,MAAM,EAAE,MAAM,CAAC,CAAC;QACxE,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,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QACD;YACI,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;AACL,CAAC;AAED,SAAS,UAAU;IACf,OAAO,IAAI,CACP,aAAa,EAAE,EACf,eAAe,EACf,YAAY,EACZ,UAAU,EACV,iBAAiB,CACpB,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU;IACf,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACpE,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAiB;IACrC,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,iBAAiB;IACxB,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;CACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Codex CLI config writer.
|
|
3
|
+
*
|
|
4
|
+
* All platforms: ~/.codex/config.toml
|
|
5
|
+
*
|
|
6
|
+
* TOML schema:
|
|
7
|
+
*
|
|
8
|
+
* [mcp_servers.<name>]
|
|
9
|
+
* command = "npx"
|
|
10
|
+
* args = ["-y", "@wootsup/yt-builder-mcp"]
|
|
11
|
+
*
|
|
12
|
+
* [mcp_servers.<name>.env]
|
|
13
|
+
* KEY = "value"
|
|
14
|
+
*
|
|
15
|
+
* No TOML library is currently in this package's dependency closure
|
|
16
|
+
* (see `pnpm list` at build-time). To avoid pulling a new dep for one
|
|
17
|
+
* tiny use-case, this adapter uses a minimal serializer + an
|
|
18
|
+
* "append-or-replace section" regex strategy:
|
|
19
|
+
*
|
|
20
|
+
* - To write: emit the full `[mcp_servers.<name>] ...` block and
|
|
21
|
+
* any sub-tables (currently just `.env`) as a contiguous chunk.
|
|
22
|
+
* - To merge with an existing file: regex-delete any prior chunk
|
|
23
|
+
* for the same server name (top-level table + its sub-tables),
|
|
24
|
+
* then append the new chunk.
|
|
25
|
+
*
|
|
26
|
+
* Constraints (deliberately narrow — we own ALL writes via this
|
|
27
|
+
* adapter, so we never have to round-trip arbitrary user TOML):
|
|
28
|
+
*
|
|
29
|
+
* - string keys only
|
|
30
|
+
* - values: string, string[]
|
|
31
|
+
* - sub-tables: one level deep (just `.env`)
|
|
32
|
+
* - no inline tables, no datetime, no float, no bool
|
|
33
|
+
*
|
|
34
|
+
* If a customer hand-edits the file with richer TOML, those edits
|
|
35
|
+
* are preserved verbatim because we only touch our own
|
|
36
|
+
* `[mcp_servers.<name>]` sections by name.
|
|
37
|
+
*
|
|
38
|
+
* @license MIT
|
|
39
|
+
*/
|
|
40
|
+
import type { ClientWriter } from './index.js';
|
|
41
|
+
export declare const codexCliClient: ClientWriter;
|
|
42
|
+
//# sourceMappingURL=codex-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-cli.d.ts","sourceRoot":"","sources":["../../src/clients/codex-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,YAAY,CAAC;AA4HhE,eAAO,MAAM,cAAc,EAAE,YA6B5B,CAAC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Codex CLI config writer.
|
|
3
|
+
*
|
|
4
|
+
* All platforms: ~/.codex/config.toml
|
|
5
|
+
*
|
|
6
|
+
* TOML schema:
|
|
7
|
+
*
|
|
8
|
+
* [mcp_servers.<name>]
|
|
9
|
+
* command = "npx"
|
|
10
|
+
* args = ["-y", "@wootsup/yt-builder-mcp"]
|
|
11
|
+
*
|
|
12
|
+
* [mcp_servers.<name>.env]
|
|
13
|
+
* KEY = "value"
|
|
14
|
+
*
|
|
15
|
+
* No TOML library is currently in this package's dependency closure
|
|
16
|
+
* (see `pnpm list` at build-time). To avoid pulling a new dep for one
|
|
17
|
+
* tiny use-case, this adapter uses a minimal serializer + an
|
|
18
|
+
* "append-or-replace section" regex strategy:
|
|
19
|
+
*
|
|
20
|
+
* - To write: emit the full `[mcp_servers.<name>] ...` block and
|
|
21
|
+
* any sub-tables (currently just `.env`) as a contiguous chunk.
|
|
22
|
+
* - To merge with an existing file: regex-delete any prior chunk
|
|
23
|
+
* for the same server name (top-level table + its sub-tables),
|
|
24
|
+
* then append the new chunk.
|
|
25
|
+
*
|
|
26
|
+
* Constraints (deliberately narrow — we own ALL writes via this
|
|
27
|
+
* adapter, so we never have to round-trip arbitrary user TOML):
|
|
28
|
+
*
|
|
29
|
+
* - string keys only
|
|
30
|
+
* - values: string, string[]
|
|
31
|
+
* - sub-tables: one level deep (just `.env`)
|
|
32
|
+
* - no inline tables, no datetime, no float, no bool
|
|
33
|
+
*
|
|
34
|
+
* If a customer hand-edits the file with richer TOML, those edits
|
|
35
|
+
* are preserved verbatim because we only touch our own
|
|
36
|
+
* `[mcp_servers.<name>]` sections by name.
|
|
37
|
+
*
|
|
38
|
+
* @license MIT
|
|
39
|
+
*/
|
|
40
|
+
import { existsSync } from 'node:fs';
|
|
41
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
42
|
+
import { dirname, join } from 'node:path';
|
|
43
|
+
import { userHome } from './home.js';
|
|
44
|
+
function configPath() {
|
|
45
|
+
return join(userHome(), '.codex', 'config.toml');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Escape a string for use as a TOML basic-string value (between
|
|
49
|
+
* double quotes). Handles backslash, double-quote, and control
|
|
50
|
+
* characters via TOML's standard escape sequences.
|
|
51
|
+
*/
|
|
52
|
+
function escapeTomlString(input) {
|
|
53
|
+
let out = '';
|
|
54
|
+
for (const ch of input) {
|
|
55
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
56
|
+
if (ch === '\\')
|
|
57
|
+
out += '\\\\';
|
|
58
|
+
else if (ch === '"')
|
|
59
|
+
out += '\\"';
|
|
60
|
+
else if (ch === '\b')
|
|
61
|
+
out += '\\b';
|
|
62
|
+
else if (ch === '\t')
|
|
63
|
+
out += '\\t';
|
|
64
|
+
else if (ch === '\n')
|
|
65
|
+
out += '\\n';
|
|
66
|
+
else if (ch === '\f')
|
|
67
|
+
out += '\\f';
|
|
68
|
+
else if (ch === '\r')
|
|
69
|
+
out += '\\r';
|
|
70
|
+
else if (code < 0x20)
|
|
71
|
+
out += '\\u' + code.toString(16).padStart(4, '0').toUpperCase();
|
|
72
|
+
else
|
|
73
|
+
out += ch;
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Bare key validity per TOML spec: ASCII letters, digits, underscore,
|
|
79
|
+
* dash. Anything else gets quoted.
|
|
80
|
+
*/
|
|
81
|
+
function tomlKey(key) {
|
|
82
|
+
return /^[A-Za-z0-9_-]+$/.test(key) ? key : `"${escapeTomlString(key)}"`;
|
|
83
|
+
}
|
|
84
|
+
function tomlStringValue(value) {
|
|
85
|
+
return `"${escapeTomlString(value)}"`;
|
|
86
|
+
}
|
|
87
|
+
function tomlStringArray(values) {
|
|
88
|
+
return '[' + values.map((v) => tomlStringValue(v)).join(', ') + ']';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Render the `[mcp_servers.<name>]` block plus a `[mcp_servers.<name>.env]`
|
|
92
|
+
* sub-table when the env map is non-empty. Always ends with a trailing
|
|
93
|
+
* blank line so successive sections are visually separated.
|
|
94
|
+
*/
|
|
95
|
+
function renderServerBlock(serverName, config) {
|
|
96
|
+
const nameKey = tomlKey(serverName);
|
|
97
|
+
const lines = [];
|
|
98
|
+
lines.push(`[mcp_servers.${nameKey}]`);
|
|
99
|
+
lines.push(`command = ${tomlStringValue(config.command)}`);
|
|
100
|
+
lines.push(`args = ${tomlStringArray(config.args)}`);
|
|
101
|
+
const envKeys = Object.keys(config.env);
|
|
102
|
+
if (envKeys.length === 0) {
|
|
103
|
+
lines.push('');
|
|
104
|
+
return lines.join('\n') + '\n';
|
|
105
|
+
}
|
|
106
|
+
lines.push('');
|
|
107
|
+
lines.push(`[mcp_servers.${nameKey}.env]`);
|
|
108
|
+
for (const key of envKeys) {
|
|
109
|
+
const v = config.env[key];
|
|
110
|
+
if (typeof v !== 'string')
|
|
111
|
+
continue;
|
|
112
|
+
lines.push(`${tomlKey(key)} = ${tomlStringValue(v)}`);
|
|
113
|
+
}
|
|
114
|
+
lines.push('');
|
|
115
|
+
return lines.join('\n') + '\n';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Strip any prior `[mcp_servers.<name>]` (and its `[mcp_servers.<name>.<sub>]`
|
|
119
|
+
* children) from an existing TOML body. We anchor on the literal table
|
|
120
|
+
* header and consume up to the next top-level `[...]` header or EOF.
|
|
121
|
+
*
|
|
122
|
+
* Regex notes:
|
|
123
|
+
* - `^` with `m` flag so the table header must start a line
|
|
124
|
+
* - `[\s\S]*?` lazy so we stop at the next header
|
|
125
|
+
* - `(?=\n\[[^.])` lookahead: next `[xxx]` that is NOT a sub-table
|
|
126
|
+
* of our removed section (sub-tables start with `[mcp_servers.<name>.`,
|
|
127
|
+
* containing a dot — so we want the next `[` followed by a non-`m`
|
|
128
|
+
* OR more conservatively, any `[` that doesn't start a sub-table).
|
|
129
|
+
*
|
|
130
|
+
* To keep this readable we just delete `[mcp_servers.<name>]` and any
|
|
131
|
+
* `[mcp_servers.<name>.*]` blocks individually.
|
|
132
|
+
*/
|
|
133
|
+
function stripExistingSection(body, serverName) {
|
|
134
|
+
// Build matchers for both bare and quoted forms of the server key.
|
|
135
|
+
const bare = /^[A-Za-z0-9_-]+$/.test(serverName) ? serverName : null;
|
|
136
|
+
const quoted = `"${escapeTomlString(serverName)}"`;
|
|
137
|
+
const keyAlternatives = bare ? [bare, quoted] : [quoted];
|
|
138
|
+
let result = body;
|
|
139
|
+
for (const k of keyAlternatives) {
|
|
140
|
+
// Escape regex specials in the key (quoted form contains backslashes
|
|
141
|
+
// for embedded quotes — escape those for the regex itself).
|
|
142
|
+
const kEsc = k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
143
|
+
// Match `[mcp_servers.<key>]` or `[mcp_servers.<key>.<sub>]` and
|
|
144
|
+
// everything up to the next top-level table header or EOF.
|
|
145
|
+
// A top-level header is `[mcp_servers.X]` (X != <key>) or `[anything]`
|
|
146
|
+
// that isn't our sub-table. To keep this simple we stop at the next
|
|
147
|
+
// line starting with `[` that isn't a sub-table of our key.
|
|
148
|
+
const re = new RegExp(`(^|\\n)\\[mcp_servers\\.${kEsc}(?:\\.[^\\]]+)?\\][^\\[]*?(?=\\n\\[|$)`, 'g');
|
|
149
|
+
result = result.replace(re, (match, leading) => leading);
|
|
150
|
+
}
|
|
151
|
+
// Collapse 3+ consecutive newlines to 2 so deletions don't leave gaps.
|
|
152
|
+
result = result.replace(/\n{3,}/g, '\n\n');
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Detection: the `~/.codex/` directory exists. Codex CLI creates it
|
|
157
|
+
* during first-run auth (`codex login`), even before the user has
|
|
158
|
+
* configured any MCP servers.
|
|
159
|
+
*/
|
|
160
|
+
function isDetected() {
|
|
161
|
+
return existsSync(join(userHome(), '.codex'));
|
|
162
|
+
}
|
|
163
|
+
export const codexCliClient = {
|
|
164
|
+
id: 'codex-cli',
|
|
165
|
+
label: 'Codex CLI',
|
|
166
|
+
configPath,
|
|
167
|
+
isDetected,
|
|
168
|
+
apply: async (serverName, config) => {
|
|
169
|
+
const path = configPath();
|
|
170
|
+
let existing = '';
|
|
171
|
+
if (existsSync(path)) {
|
|
172
|
+
try {
|
|
173
|
+
existing = await readFile(path, 'utf-8');
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
existing = '';
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
await mkdir(dirname(path), { recursive: true });
|
|
181
|
+
}
|
|
182
|
+
const stripped = stripExistingSection(existing, serverName);
|
|
183
|
+
// Ensure a clean separator before our new section if there is
|
|
184
|
+
// pre-existing content that doesn't already end with a blank line.
|
|
185
|
+
let prefix = stripped;
|
|
186
|
+
if (prefix.length > 0 && !prefix.endsWith('\n\n')) {
|
|
187
|
+
prefix = prefix.endsWith('\n') ? prefix + '\n' : prefix + '\n\n';
|
|
188
|
+
}
|
|
189
|
+
const block = renderServerBlock(serverName, config);
|
|
190
|
+
const next = prefix + block;
|
|
191
|
+
await writeFile(path, next, 'utf-8');
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
//# sourceMappingURL=codex-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../src/clients/codex-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Continue MCP config writer.
|
|
3
|
+
*
|
|
4
|
+
* Global: ~/.continue/config.json
|
|
5
|
+
*
|
|
6
|
+
* Schema: `experimental.modelContextProtocolServers` array of
|
|
7
|
+
* { transport: { type: 'stdio', command, args, env } } entries.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { type ClientWriter } from './index.js';
|
|
12
|
+
export declare const continueClient: ClientWriter;
|
|
13
|
+
//# sourceMappingURL=continue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/clients/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAiB,KAAK,YAAY,EAAwB,MAAM,YAAY,CAAC;AAgBpF,eAAO,MAAM,cAAc,EAAE,YAqC5B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Continue MCP config writer.
|
|
3
|
+
*
|
|
4
|
+
* Global: ~/.continue/config.json
|
|
5
|
+
*
|
|
6
|
+
* Schema: `experimental.modelContextProtocolServers` array of
|
|
7
|
+
* { transport: { type: 'stdio', command, args, env } } entries.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { userHome } from './home.js';
|
|
14
|
+
import { patchJsonFile } from './index.js';
|
|
15
|
+
function configPath() {
|
|
16
|
+
return join(userHome(), '.continue', 'config.json');
|
|
17
|
+
}
|
|
18
|
+
export const continueClient = {
|
|
19
|
+
id: 'continue',
|
|
20
|
+
label: 'Continue',
|
|
21
|
+
configPath,
|
|
22
|
+
isDetected: () => existsSync(join(userHome(), '.continue')),
|
|
23
|
+
apply: async (serverName, config) => {
|
|
24
|
+
await patchJsonFile(configPath(), (current) => {
|
|
25
|
+
const experimental = current.experimental !== null &&
|
|
26
|
+
typeof current.experimental === 'object' &&
|
|
27
|
+
!Array.isArray(current.experimental)
|
|
28
|
+
? { ...current.experimental }
|
|
29
|
+
: {};
|
|
30
|
+
const rawList = experimental.modelContextProtocolServers;
|
|
31
|
+
const list = Array.isArray(rawList)
|
|
32
|
+
? rawList.filter((e) => e !== null &&
|
|
33
|
+
typeof e === 'object' &&
|
|
34
|
+
typeof e.name === 'string')
|
|
35
|
+
: [];
|
|
36
|
+
const entry = {
|
|
37
|
+
name: serverName,
|
|
38
|
+
transport: {
|
|
39
|
+
type: 'stdio',
|
|
40
|
+
command: config.command,
|
|
41
|
+
args: config.args,
|
|
42
|
+
env: config.env,
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
const filtered = list.filter((e) => e.name !== serverName);
|
|
46
|
+
filtered.push(entry);
|
|
47
|
+
experimental.modelContextProtocolServers = filtered;
|
|
48
|
+
return { ...current, experimental };
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=continue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/clients/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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,EAAE,aAAa,EAA2C,MAAM,YAAY,CAAC;AAEpF,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAYD,MAAM,CAAC,MAAM,cAAc,GAAiB;IACxC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,YAAY,GACd,OAAO,CAAC,YAAY,KAAK,IAAI;gBAC7B,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ;gBACxC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;gBAChC,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,YAAwC,EAAE;gBAC1D,CAAC,CAAC,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,YAAY,CAAC,2BAA2B,CAAC;YACzD,MAAM,IAAI,GAA0B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtD,CAAC,CAAE,OAAO,CAAC,MAAM,CACX,CAAC,CAAC,EAA4B,EAAE,CAC5B,CAAC,KAAK,IAAI;oBACV,OAAO,CAAC,KAAK,QAAQ;oBACrB,OAAQ,CAAyB,CAAC,IAAI,KAAK,QAAQ,CAChC;gBAC7B,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,KAAK,GAAwB;gBAC/B,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;iBAClB;aACJ,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,YAAY,CAAC,2BAA2B,GAAG,QAAQ,CAAC;YACpD,OAAO,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor MCP config writer.
|
|
3
|
+
*
|
|
4
|
+
* Global: ~/.cursor/mcp.json
|
|
5
|
+
*
|
|
6
|
+
* Schema mirrors Claude Desktop's `mcpServers` map.
|
|
7
|
+
*
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
import { type ClientWriter } from './index.js';
|
|
11
|
+
export declare const cursorClient: ClientWriter;
|
|
12
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/clients/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAiB,KAAK,YAAY,EAAwB,MAAM,YAAY,CAAC;AAMpF,eAAO,MAAM,YAAY,EAAE,YAqB1B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor MCP config writer.
|
|
3
|
+
*
|
|
4
|
+
* Global: ~/.cursor/mcp.json
|
|
5
|
+
*
|
|
6
|
+
* Schema mirrors Claude Desktop's `mcpServers` map.
|
|
7
|
+
*
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync } from 'node:fs';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { userHome } from './home.js';
|
|
13
|
+
import { patchJsonFile } from './index.js';
|
|
14
|
+
function configPath() {
|
|
15
|
+
return join(userHome(), '.cursor', 'mcp.json');
|
|
16
|
+
}
|
|
17
|
+
export const cursorClient = {
|
|
18
|
+
id: 'cursor',
|
|
19
|
+
label: 'Cursor',
|
|
20
|
+
configPath,
|
|
21
|
+
isDetected: () => existsSync(join(userHome(), '.cursor')),
|
|
22
|
+
apply: async (serverName, config) => {
|
|
23
|
+
await patchJsonFile(configPath(), (current) => {
|
|
24
|
+
const servers = current.mcpServers !== null &&
|
|
25
|
+
typeof current.mcpServers === 'object' &&
|
|
26
|
+
!Array.isArray(current.mcpServers)
|
|
27
|
+
? { ...current.mcpServers }
|
|
28
|
+
: {};
|
|
29
|
+
servers[serverName] = {
|
|
30
|
+
command: config.command,
|
|
31
|
+
args: config.args,
|
|
32
|
+
env: config.env,
|
|
33
|
+
};
|
|
34
|
+
return { ...current, mcpServers: servers };
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/clients/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,EAAE,aAAa,EAA2C,MAAM,YAAY,CAAC;AAEpF,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAiB;IACtC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,QAAQ;IACf,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;IACzD,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;CACJ,CAAC"}
|