@wootsup/yt-builder-mcp 1.1.7 → 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 +18 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +18 -0
- package/dist/auth.js.map +1 -1
- 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 +28 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +40 -1
- package/dist/client.js.map +1 -1
- package/dist/clients/claude-code.d.ts.map +1 -1
- package/dist/clients/claude-code.js +3 -1
- package/dist/clients/claude-code.js.map +1 -1
- package/dist/clients/claude-desktop.d.ts.map +1 -1
- package/dist/clients/claude-desktop.js +3 -1
- package/dist/clients/claude-desktop.js.map +1 -1
- package/dist/clients/cline.d.ts.map +1 -1
- package/dist/clients/cline.js +3 -1
- package/dist/clients/cline.js.map +1 -1
- package/dist/clients/codex-cli.d.ts +1 -1
- package/dist/clients/codex-cli.d.ts.map +1 -1
- package/dist/clients/codex-cli.js +98 -0
- package/dist/clients/codex-cli.js.map +1 -1
- package/dist/clients/continue.d.ts.map +1 -1
- package/dist/clients/continue.js +70 -1
- package/dist/clients/continue.js.map +1 -1
- package/dist/clients/cursor.d.ts.map +1 -1
- package/dist/clients/cursor.js +3 -1
- package/dist/clients/cursor.js.map +1 -1
- package/dist/clients/gemini-cli.d.ts.map +1 -1
- package/dist/clients/gemini-cli.js +3 -1
- package/dist/clients/gemini-cli.js.map +1 -1
- package/dist/clients/index.d.ts +104 -0
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js +141 -0
- package/dist/clients/index.js.map +1 -1
- package/dist/clients/roo-code.d.ts.map +1 -1
- package/dist/clients/roo-code.js +3 -1
- package/dist/clients/roo-code.js.map +1 -1
- package/dist/clients/zed.d.ts.map +1 -1
- package/dist/clients/zed.js +3 -1
- package/dist/clients/zed.js.map +1 -1
- package/dist/gateway/essentials.d.ts +4 -4
- package/dist/gateway/essentials.d.ts.map +1 -1
- package/dist/gateway/essentials.js +19 -5
- package/dist/gateway/essentials.js.map +1 -1
- package/dist/gateway/test-support.d.ts +3 -3
- package/dist/gateway/test-support.js +3 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/server.d.ts +3 -3
- package/dist/server.js +3 -3
- package/dist/setup-cli.d.ts +41 -0
- package/dist/setup-cli.d.ts.map +1 -1
- package/dist/setup-cli.js +163 -1
- package/dist/setup-cli.js.map +1 -1
- package/dist/setup-prompts.d.ts +23 -0
- package/dist/setup-prompts.d.ts.map +1 -1
- package/dist/setup-prompts.js +76 -1
- package/dist/setup-prompts.js.map +1 -1
- 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/client-pool.d.ts +33 -0
- package/dist/sites/client-pool.d.ts.map +1 -1
- package/dist/sites/client-pool.js +51 -1
- package/dist/sites/client-pool.js.map +1 -1
- package/dist/sites/tools/index.d.ts.map +1 -1
- package/dist/sites/tools/index.js +9 -1
- package/dist/sites/tools/index.js.map +1 -1
- 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/tools/elements/builders.d.ts.map +1 -1
- package/dist/tools/elements/builders.js +16 -7
- package/dist/tools/elements/builders.js.map +1 -1
- package/dist/tools/elements/handlers-write.d.ts +1 -1
- package/dist/tools/elements/handlers-write.d.ts.map +1 -1
- package/dist/tools/elements/handlers-write.js +202 -9
- package/dist/tools/elements/handlers-write.js.map +1 -1
- package/dist/tools/elements/handlers.d.ts.map +1 -1
- package/dist/tools/elements/handlers.js +3 -3
- package/dist/tools/elements/handlers.js.map +1 -1
- package/dist/tools/format/elements-format.d.ts.map +1 -1
- package/dist/tools/format/elements-format.js +10 -11
- package/dist/tools/format/elements-format.js.map +1 -1
- package/dist/tools/format/inspection-format.d.ts +11 -0
- package/dist/tools/format/inspection-format.d.ts.map +1 -1
- package/dist/tools/format/inspection-format.js +77 -21
- package/dist/tools/format/inspection-format.js.map +1 -1
- package/dist/tools/inspection.d.ts.map +1 -1
- package/dist/tools/inspection.js +194 -1
- package/dist/tools/inspection.js.map +1 -1
- package/dist/tools/multi-items/builders.d.ts.map +1 -1
- package/dist/tools/multi-items/builders.js +7 -1
- package/dist/tools/multi-items/builders.js.map +1 -1
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -1
- package/dist/tools/multi-items/clean-implode-handler.js +2 -2
- package/dist/tools/multi-items/clean-implode-handler.js.map +1 -1
- 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/inspect-handler.d.ts +37 -2
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
- package/dist/tools/multi-items/inspect-handler.js +93 -10
- package/dist/tools/multi-items/inspect-handler.js.map +1 -1
- 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/pages/builders.d.ts +31 -2
- package/dist/tools/pages/builders.d.ts.map +1 -1
- package/dist/tools/pages/builders.js +102 -9
- package/dist/tools/pages/builders.js.map +1 -1
- package/dist/tools/pages/handlers-read.d.ts +1 -1
- package/dist/tools/pages/handlers-read.d.ts.map +1 -1
- package/dist/tools/pages/handlers-read.js +78 -21
- package/dist/tools/pages/handlers-read.js.map +1 -1
- package/dist/tools/pages/handlers-write.d.ts +48 -6
- package/dist/tools/pages/handlers-write.d.ts.map +1 -1
- package/dist/tools/pages/handlers-write.js +83 -8
- package/dist/tools/pages/handlers-write.js.map +1 -1
- package/dist/tools/pages/schemas.d.ts +112 -0
- package/dist/tools/pages/schemas.d.ts.map +1 -1
- package/dist/tools/pages/schemas.js +150 -0
- package/dist/tools/pages/schemas.js.map +1 -1
- package/dist/tools/shared-schemas.d.ts.map +1 -1
- package/dist/tools/shared-schemas.js +15 -2
- package/dist/tools/shared-schemas.js.map +1 -1
- package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
- package/dist/tools/sources/handlers-bind.js +56 -4
- package/dist/tools/sources/handlers-bind.js.map +1 -1
- package/dist/tools/sources/handlers.d.ts.map +1 -1
- package/dist/tools/sources/handlers.js +2 -2
- package/dist/tools/sources/handlers.js.map +1 -1
- 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 -2
- package/skills/yt-builder-mcp/SKILL.md +30 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roo-code.js","sourceRoot":"","sources":["../../src/clients/roo-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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,
|
|
1
|
+
{"version":3,"file":"roo-code.js","sourceRoot":"","sources":["../../src/clients/roo-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAE9C,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,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,aAAa,GAAiB;IACvC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,oBAAoB;IAC3B,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zed.d.ts","sourceRoot":"","sources":["../../src/clients/zed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,
|
|
1
|
+
{"version":3,"file":"zed.d.ts","sourceRoot":"","sources":["../../src/clients/zed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAIH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAMpB,eAAO,MAAM,SAAS,EAAE,YA0BvB,CAAC"}
|
package/dist/clients/zed.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { existsSync } from 'node:fs';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import { userHome } from './home.js';
|
|
13
|
-
import { patchJsonFile } from './index.js';
|
|
13
|
+
import { detectInServerMap, patchJsonFile, removeFromServerMap, } from './index.js';
|
|
14
14
|
function configPath() {
|
|
15
15
|
return join(userHome(), '.config', 'zed', 'settings.json');
|
|
16
16
|
}
|
|
@@ -37,5 +37,7 @@ export const zedClient = {
|
|
|
37
37
|
return { ...current, context_servers: servers };
|
|
38
38
|
});
|
|
39
39
|
},
|
|
40
|
+
detect: () => detectInServerMap(configPath(), 'context_servers'),
|
|
41
|
+
remove: () => removeFromServerMap(configPath(), 'context_servers'),
|
|
40
42
|
};
|
|
41
43
|
//# sourceMappingURL=zed.js.map
|
package/dist/clients/zed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zed.js","sourceRoot":"","sources":["../../src/clients/zed.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,
|
|
1
|
+
{"version":3,"file":"zed.js","sourceRoot":"","sources":["../../src/clients/zed.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,EACH,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GAGtB,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAiB;IACnC,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,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,eAAe,KAAK,IAAI;gBAChC,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ;gBAC3C,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBACnC,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,eAA2C,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,OAAO;oBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;iBAClB;gBACD,QAAQ,EAAE,EAAE;aACf,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC;IAChE,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC;CACrE,CAAC"}
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
* SDK never sees a duplicate registration.
|
|
17
17
|
*
|
|
18
18
|
* Why this split: Cursor caps MCP servers at ~40 tools. This adapter
|
|
19
|
-
* declares
|
|
20
|
-
* The 3-lane shape keeps `tools/list` at
|
|
21
|
-
*
|
|
19
|
+
* declares 30 callable tools (22 domain L1/L3 + 7 advanced L2 + 1 gateway).
|
|
20
|
+
* The 3-lane shape keeps `tools/list` at 20 (L1) + 2 (L3) + 1 (gateway) =
|
|
21
|
+
* 23 entries, well under the cap, while every tool stays fully reachable
|
|
22
22
|
* (advanced tools through `yootheme_builder_advanced`).
|
|
23
23
|
*
|
|
24
24
|
* Health + diagnose live in L3 because they MUST be the first thing an
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
* L1 — Tools kept as first-class entries in `tools/list`.
|
|
33
33
|
* Forwarded by the CapturingServer to the real McpServer.
|
|
34
34
|
*/
|
|
35
|
-
export declare const ESSENTIAL_TOOLS: readonly ["yootheme_builder_pages_list", "yootheme_builder_get_etag", "yootheme_builder_element_list", "yootheme_builder_element_add", "yootheme_builder_element_update_settings", "yootheme_builder_sources_list", "yootheme_builder_element_types_list", "yootheme_builder_inspect_multi_items_binding", "yootheme_builder_element_get", "yootheme_builder_element_delete", "yootheme_builder_element_clone", "yootheme_builder_element_move", "yootheme_builder_page_get_layout", "yootheme_builder_template_summary", "yootheme_builder_element_type_get_schema", "yootheme_builder_sites_list", "yootheme_builder_sites_test"];
|
|
35
|
+
export declare const ESSENTIAL_TOOLS: readonly ["yootheme_builder_pages_list", "yootheme_builder_get_etag", "yootheme_builder_element_list", "yootheme_builder_element_add", "yootheme_builder_element_update_settings", "yootheme_builder_sources_list", "yootheme_builder_element_types_list", "yootheme_builder_inspect_multi_items_binding", "yootheme_builder_element_get", "yootheme_builder_element_delete", "yootheme_builder_element_clone", "yootheme_builder_element_move", "yootheme_builder_page_get_layout", "yootheme_builder_template_summary", "yootheme_builder_element_type_get_schema", "yootheme_builder_sites_list", "yootheme_builder_sites_test", "yootheme_builder_use_site", "yootheme_builder_pages_create", "yootheme_builder_pages_delete"];
|
|
36
36
|
/**
|
|
37
37
|
* L3 — Tools registered DIRECTLY on the real McpServer, BEFORE the
|
|
38
38
|
* CapturingServer wraps it. The CapturingServer treats these names as a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"essentials.d.ts","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"essentials.d.ts","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,osBAqDlB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,mEAGzB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
* SDK never sees a duplicate registration.
|
|
17
17
|
*
|
|
18
18
|
* Why this split: Cursor caps MCP servers at ~40 tools. This adapter
|
|
19
|
-
* declares
|
|
20
|
-
* The 3-lane shape keeps `tools/list` at
|
|
21
|
-
*
|
|
19
|
+
* declares 30 callable tools (22 domain L1/L3 + 7 advanced L2 + 1 gateway).
|
|
20
|
+
* The 3-lane shape keeps `tools/list` at 20 (L1) + 2 (L3) + 1 (gateway) =
|
|
21
|
+
* 23 entries, well under the cap, while every tool stays fully reachable
|
|
22
22
|
* (advanced tools through `yootheme_builder_advanced`).
|
|
23
23
|
*
|
|
24
24
|
* Health + diagnose live in L3 because they MUST be the first thing an
|
|
@@ -48,8 +48,8 @@ export const ESSENTIAL_TOOLS = [
|
|
|
48
48
|
// F-16 hot-path promotions (Maria-Audit v2 re-confirmed) — the 5
|
|
49
49
|
// most-used read/mutate operations skip the advanced-router
|
|
50
50
|
// discovery roundtrip. Cursor cap is ~40; with the W7 sites_list +
|
|
51
|
-
// sites_test additions
|
|
52
|
-
// comfortable below the limit.
|
|
51
|
+
// sites_test additions (plus later C4 + config-harmonization) we sit
|
|
52
|
+
// at 20 L1 + 2 L3 + 1 gateway = 23, comfortable below the limit.
|
|
53
53
|
'yootheme_builder_element_get',
|
|
54
54
|
'yootheme_builder_element_delete',
|
|
55
55
|
'yootheme_builder_element_clone',
|
|
@@ -71,6 +71,20 @@ export const ESSENTIAL_TOOLS = [
|
|
|
71
71
|
// sites_test probes /health + /etag for ONE site). L1 surface 15 → 17.
|
|
72
72
|
'yootheme_builder_sites_list',
|
|
73
73
|
'yootheme_builder_sites_test',
|
|
74
|
+
// Phase 3 (config harmonization) — use_site is the runtime active-
|
|
75
|
+
// site SWITCH (mirrors api-mapper's apimapper_use_profile). It must
|
|
76
|
+
// be L1 so an agent can discover + call it directly the same way it
|
|
77
|
+
// reaches sites_list, instead of routing through the advanced
|
|
78
|
+
// gateway. L1 surface 19 → 20.
|
|
79
|
+
'yootheme_builder_use_site',
|
|
80
|
+
// C4 (v1.2) — pages_create + pages_delete are first-class customer-
|
|
81
|
+
// facing page-level mutations (POST /pages, DELETE /pages/{id}).
|
|
82
|
+
// Both must be discoverable directly in tools/list, not behind the
|
|
83
|
+
// advanced-gateway router — they're high-frequency mutations agents
|
|
84
|
+
// reach for whenever the user says "create a new page" or "delete
|
|
85
|
+
// this page". L1 surface 17 → 19.
|
|
86
|
+
'yootheme_builder_pages_create',
|
|
87
|
+
'yootheme_builder_pages_delete',
|
|
74
88
|
];
|
|
75
89
|
/**
|
|
76
90
|
* L3 — Tools registered DIRECTLY on the real McpServer, BEFORE the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"essentials.js","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,6BAA6B;IAC7B,2BAA2B;IAC3B,+BAA+B;IAC/B,8BAA8B;IAC9B,0CAA0C;IAC1C,+BAA+B;IAC/B,qCAAqC;IACrC,6DAA6D;IAC7D,kEAAkE;IAClE,6DAA6D;IAC7D,yCAAyC;IACzC,8CAA8C;IAC9C,iEAAiE;IACjE,4DAA4D;IAC5D,mEAAmE;IACnE,
|
|
1
|
+
{"version":3,"file":"essentials.js","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,6BAA6B;IAC7B,2BAA2B;IAC3B,+BAA+B;IAC/B,8BAA8B;IAC9B,0CAA0C;IAC1C,+BAA+B;IAC/B,qCAAqC;IACrC,6DAA6D;IAC7D,kEAAkE;IAClE,6DAA6D;IAC7D,yCAAyC;IACzC,8CAA8C;IAC9C,iEAAiE;IACjE,4DAA4D;IAC5D,mEAAmE;IACnE,qEAAqE;IACrE,iEAAiE;IACjE,8BAA8B;IAC9B,iCAAiC;IACjC,gCAAgC;IAChC,+BAA+B;IAC/B,kCAAkC;IAClC,oEAAoE;IACpE,sEAAsE;IACtE,mCAAmC;IACnC,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,4DAA4D;IAC5D,4DAA4D;IAC5D,0CAA0C;IAC1C,mEAAmE;IACnE,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,uEAAuE;IACvE,6BAA6B;IAC7B,6BAA6B;IAC7B,mEAAmE;IACnE,oEAAoE;IACpE,oEAAoE;IACpE,8DAA8D;IAC9D,+BAA+B;IAC/B,2BAA2B;IAC3B,oEAAoE;IACpE,iEAAiE;IACjE,mEAAmE;IACnE,oEAAoE;IACpE,kEAAkE;IAClE,kCAAkC;IAClC,+BAA+B;IAC/B,+BAA+B;CACzB,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,yBAAyB;IACzB,2BAA2B;CACrB,CAAC;AAKX,gEAAgE;AAChE,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAQ,eAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,IAAY;IACzC,OAAQ,sBAA4C,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -31,9 +31,9 @@ export interface CollectedTool {
|
|
|
31
31
|
* name. The CapturingServer must have been used to register the L1/L2
|
|
32
32
|
* tools, and `registerAdvancedTool` must have run, before this is called.
|
|
33
33
|
*
|
|
34
|
-
* Production size =
|
|
35
|
-
*
|
|
36
|
-
* + 2 L3 direct (real server) + 1 gateway (real server) =
|
|
34
|
+
* Production size = 30:
|
|
35
|
+
* 20 L1 essentials (real server) + 7 L2 advanced (registry)
|
|
36
|
+
* + 2 L3 direct (real server) + 1 gateway (real server) = 30.
|
|
37
37
|
*/
|
|
38
38
|
export declare function collectAllRegisteredTools(server: McpServer, capturing: CapturingServer): Record<string, CollectedTool>;
|
|
39
39
|
/** By-name lookup over a `collectAllRegisteredTools` map. */
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
* name. The CapturingServer must have been used to register the L1/L2
|
|
21
21
|
* tools, and `registerAdvancedTool` must have run, before this is called.
|
|
22
22
|
*
|
|
23
|
-
* Production size =
|
|
24
|
-
*
|
|
25
|
-
* + 2 L3 direct (real server) + 1 gateway (real server) =
|
|
23
|
+
* Production size = 30:
|
|
24
|
+
* 20 L1 essentials (real server) + 7 L2 advanced (registry)
|
|
25
|
+
* + 2 L3 direct (real server) + 1 gateway (real server) = 30.
|
|
26
26
|
*/
|
|
27
27
|
export function collectAllRegisteredTools(server, capturing) {
|
|
28
28
|
const result = {};
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export { createServer, SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
15
15
|
export { RestClient, REST_NAMESPACE_PATH, encodeElementPath } from './client.js';
|
|
16
|
-
export { loadConfig, loadRegistry, isTestMode, ENV_SITE_URL, ENV_WP_URL, ENV_BEARER, ENV_SITES_FILE, ENV_TEST_MODE, } from './auth.js';
|
|
16
|
+
export { loadConfig, loadRegistry, isTestMode, ENV_SITE_URL, ENV_WP_URL, ENV_BEARER, ENV_SITES_FILE, ENV_PLATFORM, ENV_PROFILE, ENV_TEST_MODE, } from './auth.js';
|
|
17
|
+
export { bootstrapActiveSite } from './sites/bootstrap.js';
|
|
17
18
|
export { ConfigError, RestError, NetworkError } from './errors.js';
|
|
18
19
|
export { buildAllTools } from './tools/index.js';
|
|
19
20
|
export { ClientPool, NoDefaultSiteError, UnknownSiteError } from './sites/client-pool.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EACH,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACH,yBAAyB,EACzB,QAAQ,EACR,KAAK,aAAa,GACrB,MAAM,2BAA2B,CAAC;AAEnC,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuEnC;AAkBD,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,13 +14,15 @@
|
|
|
14
14
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
15
15
|
import { isTestMode, loadRegistry } from './auth.js';
|
|
16
16
|
import { ConfigError } from './errors.js';
|
|
17
|
+
import { bootstrapActiveSite } from './sites/bootstrap.js';
|
|
17
18
|
import { ClientPool } from './sites/client-pool.js';
|
|
18
19
|
import { SiteRegistry } from './sites/registry.js';
|
|
19
20
|
import { defaultSecretResolver } from './sites/secret-resolver.js';
|
|
20
21
|
import { createServer } from './server.js';
|
|
21
22
|
export { createServer, SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
22
23
|
export { RestClient, REST_NAMESPACE_PATH, encodeElementPath } from './client.js';
|
|
23
|
-
export { loadConfig, loadRegistry, isTestMode, ENV_SITE_URL, ENV_WP_URL, ENV_BEARER, ENV_SITES_FILE, ENV_TEST_MODE, } from './auth.js';
|
|
24
|
+
export { loadConfig, loadRegistry, isTestMode, ENV_SITE_URL, ENV_WP_URL, ENV_BEARER, ENV_SITES_FILE, ENV_PLATFORM, ENV_PROFILE, ENV_TEST_MODE, } from './auth.js';
|
|
25
|
+
export { bootstrapActiveSite } from './sites/bootstrap.js';
|
|
24
26
|
export { ConfigError, RestError, NetworkError } from './errors.js';
|
|
25
27
|
export { buildAllTools } from './tools/index.js';
|
|
26
28
|
// W6 — multi-site primitives exported for dist consumers (scripts,
|
|
@@ -79,6 +81,12 @@ async function main() {
|
|
|
79
81
|
}
|
|
80
82
|
const secretResolver = defaultSecretResolver();
|
|
81
83
|
const pool = new ClientPool(registry, secretResolver);
|
|
84
|
+
// Phase 3 — honour YTB_MCP_PROFILE: seed the pool's active-site
|
|
85
|
+
// override so a multi-client config (one MCP entry per site, each
|
|
86
|
+
// with its own profile) boots on the right site without a first
|
|
87
|
+
// tool call. No-op when unset / "default" / unknown — mirrors
|
|
88
|
+
// api-mapper's bootstrapActiveProfile. Pure in-memory pointer move.
|
|
89
|
+
bootstrapActiveSite(pool);
|
|
82
90
|
const { mcp, tools } = createServer({ pool });
|
|
83
91
|
if (testMode) {
|
|
84
92
|
// Print a one-line per tool summary to stderr (stdout is reserved
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EACH,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,aAAa,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,mEAAmE;AACnE,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,eAAe,GAIlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACH,yBAAyB,EACzB,QAAQ,GAEX,MAAM,2BAA2B,CAAC;AAEnC,KAAK,UAAU,IAAI;IACf,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAE9B,mDAAmD;IACnD,4DAA4D;IAC5D,yDAAyD;IACzD,4DAA4D;IAC5D,2CAA2C;IAC3C,EAAE;IACF,8DAA8D;IAC9D,gEAAgE;IAChE,iEAAiE;IACjE,mEAAmE;IACnE,6DAA6D;IAC7D,+CAA+C;IAC/C,IAAI,QAAsB,CAAC;IAC3B,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,8DAA8D;QAC9D,yDAAyD;QACzD,0DAA0D;QAC1D,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,+DAA+D;QAC/D,+DAA+D;QAC/D,gEAAgE;QAChE,kEAAkE;QAClE,yBAAyB;QACzB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,CAAC,YAAY,WAAW;YACjC,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,wCAAwC,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC;QAC5D,QAAQ,GAAG,IAAI,YAAY,CAAC;YACxB,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,EAAE;SACZ,CAAC,CAAC;IACP,CAAC;IAED,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEtD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,IAAI,QAAQ,EAAE,CAAC;QACX,kEAAkE;QAClE,yDAAyD;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,gCAAgC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAC7E,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,EAAE,CAAC;IACzC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/install-skill.js
CHANGED
|
@@ -27,7 +27,7 @@ The YT Builder MCP skill is installed at \`~/.claude/skills/yt-builder-mcp/\`
|
|
|
27
27
|
— the universal-marker path recognised by Claude Desktop and other AI
|
|
28
28
|
clients that follow the \`~/AGENTS.md\` discovery protocol.
|
|
29
29
|
|
|
30
|
-
It documents the
|
|
30
|
+
It documents the 30 MCP tools (29 domain + 1 gateway, 23 entries in
|
|
31
31
|
\`tools/list\`), the 5 canonical workflows (build hero, bind dynamic
|
|
32
32
|
source, clone section, diagnose 401, add custom element), and the
|
|
33
33
|
gateway routing model. Source: https://github.com/wootsup/yt-builder-mcp.
|
package/dist/server.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* misbehaves (chicken-and-egg: the LLM diagnoses gateway breakage
|
|
11
11
|
* via these two).
|
|
12
12
|
*
|
|
13
|
-
* L1 — essential forwarded (
|
|
13
|
+
* L1 — essential forwarded (20 tools)
|
|
14
14
|
* Routed through the CapturingServer to the real server. Appear in
|
|
15
15
|
* `tools/list` as first-class entries (Cursor-cap-safe).
|
|
16
16
|
*
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
* Registered LAST on the real server, after every L1/L2 tool is
|
|
24
24
|
* placed and the advanced registry is final.
|
|
25
25
|
*
|
|
26
|
-
* Result: `tools/list.length ===
|
|
27
|
-
* full callable tool surface is
|
|
26
|
+
* Result: `tools/list.length === 23` (20 L1 + 2 L3 + 1 gateway), and the
|
|
27
|
+
* full callable tool surface is 30 (23 advertised + 7 advanced reachable
|
|
28
28
|
* through the gateway).
|
|
29
29
|
*
|
|
30
30
|
* @license MIT
|
package/dist/server.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* misbehaves (chicken-and-egg: the LLM diagnoses gateway breakage
|
|
11
11
|
* via these two).
|
|
12
12
|
*
|
|
13
|
-
* L1 — essential forwarded (
|
|
13
|
+
* L1 — essential forwarded (20 tools)
|
|
14
14
|
* Routed through the CapturingServer to the real server. Appear in
|
|
15
15
|
* `tools/list` as first-class entries (Cursor-cap-safe).
|
|
16
16
|
*
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
* Registered LAST on the real server, after every L1/L2 tool is
|
|
24
24
|
* placed and the advanced registry is final.
|
|
25
25
|
*
|
|
26
|
-
* Result: `tools/list.length ===
|
|
27
|
-
* full callable tool surface is
|
|
26
|
+
* Result: `tools/list.length === 23` (20 L1 + 2 L3 + 1 gateway), and the
|
|
27
|
+
* full callable tool surface is 30 (23 advertised + 7 advanced reachable
|
|
28
28
|
* through the gateway).
|
|
29
29
|
*
|
|
30
30
|
* @license MIT
|
package/dist/setup-cli.d.ts
CHANGED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import { installSkill as defaultInstallSkill } from './install-skill.js';
|
|
25
25
|
import type { WizardDeps } from './setup-wizard-types.js';
|
|
26
|
+
import { type InstalledClient, type UninstallDeps, type UninstallSelection } from './uninstall.js';
|
|
26
27
|
import { type AddSiteArgs, type AddSiteDeps, type AddSiteResult } from './sites/cli/add-site.js';
|
|
27
28
|
import { type ListSitesDeps } from './sites/cli/list-sites.js';
|
|
28
29
|
import { type RemoveSiteDeps } from './sites/cli/remove-site.js';
|
|
@@ -112,6 +113,24 @@ export interface ParsedAddSiteArgs {
|
|
|
112
113
|
* as errors so typos never silently disable validation.
|
|
113
114
|
*/
|
|
114
115
|
export declare function parseAddSiteArgs(argv: readonly string[]): ParsedAddSiteArgs;
|
|
116
|
+
/** Parsed shape for the `uninstall` / `remove` subcommands. Pure-data. */
|
|
117
|
+
export interface ParsedUninstallArgs {
|
|
118
|
+
/** `--all`: non-interactive complete uninstall. */
|
|
119
|
+
readonly all: boolean;
|
|
120
|
+
/** `--yes` / `-y`: skip the final confirmation. */
|
|
121
|
+
readonly yes: boolean;
|
|
122
|
+
/** `--help` / `-h` requested. */
|
|
123
|
+
readonly helpRequested: boolean;
|
|
124
|
+
/** Validation errors (unknown flags, stray values). Empty when usable. */
|
|
125
|
+
readonly errors: readonly string[];
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Parse the `uninstall` / `remove` argv tail. Pure; does no I/O. Accepts
|
|
129
|
+
* only boolean flags — `--all`, `--yes`/`-y`, `--help`/`-h`. Any value
|
|
130
|
+
* (`--all=x`) or unknown flag is an error so typos don't silently change
|
|
131
|
+
* the destructive behaviour.
|
|
132
|
+
*/
|
|
133
|
+
export declare function parseUninstallArgs(argv: readonly string[]): ParsedUninstallArgs;
|
|
115
134
|
export interface RunCliDeps {
|
|
116
135
|
/**
|
|
117
136
|
* Wizard runner. The optional deps bag lets the non-interactive
|
|
@@ -147,6 +166,28 @@ export interface RunCliDeps {
|
|
|
147
166
|
* without writing to disk.
|
|
148
167
|
*/
|
|
149
168
|
addSiteFromWizard?: (args: AddSiteArgs, path: string) => Promise<AddSiteResult>;
|
|
169
|
+
/**
|
|
170
|
+
* Uninstall orchestration deps (client registry + skill remover).
|
|
171
|
+
* Defaults to {@link DEFAULT_UNINSTALL_DEPS}; tests inject fakes so no
|
|
172
|
+
* real config files are touched.
|
|
173
|
+
*/
|
|
174
|
+
uninstallDeps?: UninstallDeps;
|
|
175
|
+
/**
|
|
176
|
+
* Detection probe for the uninstall flow. Defaults to
|
|
177
|
+
* {@link defaultDetectInstalled} run against the uninstall deps'
|
|
178
|
+
* client registry. Tests stub this to control which clients appear.
|
|
179
|
+
*/
|
|
180
|
+
detectInstalled?: (clients: UninstallDeps['clients']) => Promise<InstalledClient[]>;
|
|
181
|
+
/**
|
|
182
|
+
* Interactive uninstall checklist. Defaults to
|
|
183
|
+
* {@link defaultUninstallPrompt} (clack). Returns the selection or
|
|
184
|
+
* `null` on cancel. Tests inject a stub to avoid driving clack.
|
|
185
|
+
*/
|
|
186
|
+
promptUninstall?: (input: {
|
|
187
|
+
readonly detected: readonly InstalledClient[];
|
|
188
|
+
readonly skillInstalled: boolean;
|
|
189
|
+
readonly skipFinalConfirm?: boolean;
|
|
190
|
+
}) => Promise<UninstallSelection | null>;
|
|
150
191
|
}
|
|
151
192
|
export declare function runCli(argv: readonly string[], deps?: Partial<RunCliDeps>): Promise<number>;
|
|
152
193
|
//# sourceMappingURL=setup-cli.d.ts.map
|
package/dist/setup-cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-cli.d.ts","sourceRoot":"","sources":["../src/setup-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-cli.d.ts","sourceRoot":"","sources":["../src/setup-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/setup-cli.js
CHANGED
|
@@ -25,7 +25,9 @@ import { ALL_CLIENTS } from './clients/index.js';
|
|
|
25
25
|
import { installSkill as defaultInstallSkill } from './install-skill.js';
|
|
26
26
|
import { SERVER_VERSION } from './server.js';
|
|
27
27
|
import { confirmTTY as defaultConfirmTTY } from './setup-cli-confirm.js';
|
|
28
|
+
import { defaultUninstallPrompt } from './setup-prompts.js';
|
|
28
29
|
import { DEFAULT_WIZARD_DEPS, runWizard as runWizardImpl } from './setup-wizard.js';
|
|
30
|
+
import { detectInstalledClients as defaultDetectInstalled, DEFAULT_UNINSTALL_DEPS, runUninstall, } from './uninstall.js';
|
|
29
31
|
import { addSiteCommand, AddSiteError, DEFAULT_ADD_SITE_DEPS, } from './sites/cli/add-site.js';
|
|
30
32
|
import { DEFAULT_LIST_SITES_DEPS, listSitesCommand, } from './sites/cli/list-sites.js';
|
|
31
33
|
import { DEFAULT_REMOVE_SITE_DEPS, removeSiteCommand, RemoveSiteError, } from './sites/cli/remove-site.js';
|
|
@@ -43,6 +45,11 @@ Commands:
|
|
|
43
45
|
~/.claude/skills/ and register it in ~/AGENTS.md.
|
|
44
46
|
Note: ~/.claude/skills/ is the universal-marker path
|
|
45
47
|
recognised by Claude Desktop and other AI clients.
|
|
48
|
+
uninstall Reverse of setup: pick which AI clients to remove the
|
|
49
|
+
(alias: remove) yt-builder-mcp server entry from (interactive checklist,
|
|
50
|
+
all detected clients pre-checked) and optionally remove
|
|
51
|
+
the installed skill. Flags: --all (every detected client
|
|
52
|
+
+ skill, no prompts), --yes/-y (skip the final confirm).
|
|
46
53
|
|
|
47
54
|
Multi-site commands (W9):
|
|
48
55
|
add-site Add a site to ~/.config/yt-builder-mcp/sites.json.
|
|
@@ -115,7 +122,8 @@ Environment (when launched by an AI client):
|
|
|
115
122
|
Set this to 'joomla' when YTB_MCP_SITE_URL is an
|
|
116
123
|
origin-only Joomla URL (no /api/index.php/ in path).
|
|
117
124
|
Defaults to URL-shape auto-detection.
|
|
118
|
-
YTB_MCP_TEST_MODE=1
|
|
125
|
+
YTB_MCP_TEST_MODE=1 Print the registered tool list to stderr and exit 0
|
|
126
|
+
without starting the stdio loop (smoke-test probe).
|
|
119
127
|
|
|
120
128
|
Documentation: https://github.com/wootsup/yt-builder-mcp
|
|
121
129
|
`;
|
|
@@ -469,6 +477,65 @@ const LIST_SITES_HELP = `Usage: yt-builder-mcp list-sites [--sites-file <path>]\
|
|
|
469
477
|
`bearer_source, is_default). No network calls — pure registry read.\n\n` +
|
|
470
478
|
`Example:\n` +
|
|
471
479
|
` yt-builder-mcp list-sites\n`;
|
|
480
|
+
const UNINSTALL_HELP = `Usage: yt-builder-mcp uninstall [--all] [--yes]\n` +
|
|
481
|
+
` yt-builder-mcp remove [--all] [--yes] (alias)\n\n` +
|
|
482
|
+
`Reverse of \`setup\`. Detects which AI clients currently have the\n` +
|
|
483
|
+
`yt-builder-mcp MCP server entry and removes it. Each client's config is\n` +
|
|
484
|
+
`edited in place — every other server + unrelated setting is preserved.\n\n` +
|
|
485
|
+
`Interactive (default):\n` +
|
|
486
|
+
` Shows a checklist of the detected clients (ALL pre-checked, so a\n` +
|
|
487
|
+
` single Enter performs a complete uninstall), each labelled with its\n` +
|
|
488
|
+
` config path, plus a prompt to also remove the installed skill (and\n` +
|
|
489
|
+
` the ~/AGENTS.md marker). Nothing detected → "Nothing to uninstall.".\n\n` +
|
|
490
|
+
`Flags:\n` +
|
|
491
|
+
` --all Non-interactive: remove from EVERY detected client and\n` +
|
|
492
|
+
` remove the skill, with no prompts.\n` +
|
|
493
|
+
` --yes, -y Skip the final confirmation prompt (interactive mode).\n\n` +
|
|
494
|
+
`Examples:\n` +
|
|
495
|
+
` yt-builder-mcp uninstall # interactive checklist\n` +
|
|
496
|
+
` yt-builder-mcp uninstall --all # remove everything, no prompts\n` +
|
|
497
|
+
` yt-builder-mcp remove --yes # interactive, no final confirm\n`;
|
|
498
|
+
/**
|
|
499
|
+
* Parse the `uninstall` / `remove` argv tail. Pure; does no I/O. Accepts
|
|
500
|
+
* only boolean flags — `--all`, `--yes`/`-y`, `--help`/`-h`. Any value
|
|
501
|
+
* (`--all=x`) or unknown flag is an error so typos don't silently change
|
|
502
|
+
* the destructive behaviour.
|
|
503
|
+
*/
|
|
504
|
+
export function parseUninstallArgs(argv) {
|
|
505
|
+
let all = false;
|
|
506
|
+
let yes = false;
|
|
507
|
+
let helpRequested = false;
|
|
508
|
+
const errors = [];
|
|
509
|
+
for (const raw of argv) {
|
|
510
|
+
const eq = raw.indexOf('=');
|
|
511
|
+
const flag = eq >= 0 ? raw.slice(0, eq) : raw;
|
|
512
|
+
const hasInline = eq >= 0;
|
|
513
|
+
switch (flag) {
|
|
514
|
+
case '--all': {
|
|
515
|
+
all = true;
|
|
516
|
+
if (hasInline)
|
|
517
|
+
errors.push('Flag --all does not take a value.');
|
|
518
|
+
break;
|
|
519
|
+
}
|
|
520
|
+
case '--yes':
|
|
521
|
+
case '-y': {
|
|
522
|
+
yes = true;
|
|
523
|
+
if (hasInline)
|
|
524
|
+
errors.push(`Flag ${flag} does not take a value.`);
|
|
525
|
+
break;
|
|
526
|
+
}
|
|
527
|
+
case '--help':
|
|
528
|
+
case '-h': {
|
|
529
|
+
helpRequested = true;
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
default: {
|
|
533
|
+
errors.push(`Unknown uninstall flag: ${flag}`);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return { all, yes, helpRequested, errors };
|
|
538
|
+
}
|
|
472
539
|
function parseIdArgs(argv, allowYes) {
|
|
473
540
|
let siteId = '';
|
|
474
541
|
let yes = false;
|
|
@@ -545,6 +612,9 @@ export async function runCli(argv, deps) {
|
|
|
545
612
|
const testSiteDeps = deps?.testSiteDeps ?? DEFAULT_TEST_SITE_DEPS;
|
|
546
613
|
const addSiteFromWizard = deps?.addSiteFromWizard
|
|
547
614
|
?? ((args, path) => addSiteCommand(args, path, addSiteDeps));
|
|
615
|
+
const uninstallDeps = deps?.uninstallDeps ?? DEFAULT_UNINSTALL_DEPS;
|
|
616
|
+
const detectInstalled = deps?.detectInstalled ?? defaultDetectInstalled;
|
|
617
|
+
const promptUninstall = deps?.promptUninstall ?? defaultUninstallPrompt;
|
|
548
618
|
const [subcommand] = argv;
|
|
549
619
|
// Build a `persistSite` callback for the wizard that translates
|
|
550
620
|
// the collected WizardAnswers into an `addSiteCommand` call so the
|
|
@@ -623,6 +693,98 @@ export async function runCli(argv, deps) {
|
|
|
623
693
|
return 2;
|
|
624
694
|
}
|
|
625
695
|
}
|
|
696
|
+
case 'uninstall':
|
|
697
|
+
case 'remove': {
|
|
698
|
+
const tail = argv.slice(1);
|
|
699
|
+
const parsed = parseUninstallArgs(tail);
|
|
700
|
+
if (parsed.helpRequested) {
|
|
701
|
+
out(UNINSTALL_HELP);
|
|
702
|
+
return 0;
|
|
703
|
+
}
|
|
704
|
+
if (parsed.errors.length > 0) {
|
|
705
|
+
for (const line of parsed.errors)
|
|
706
|
+
err(`yt-builder-mcp: ${line}`);
|
|
707
|
+
err(UNINSTALL_HELP);
|
|
708
|
+
return 2;
|
|
709
|
+
}
|
|
710
|
+
try {
|
|
711
|
+
const detected = await detectInstalled(uninstallDeps.clients);
|
|
712
|
+
const skillInstalled = uninstallDeps.isSkillInstalled();
|
|
713
|
+
if (detected.length === 0 && !skillInstalled) {
|
|
714
|
+
out('Nothing to uninstall — no AI client carries the yt-builder-mcp server entry and no skill is installed.');
|
|
715
|
+
return 0;
|
|
716
|
+
}
|
|
717
|
+
let selection;
|
|
718
|
+
if (parsed.all) {
|
|
719
|
+
// Non-interactive: remove from every detected client +
|
|
720
|
+
// the skill, no prompts.
|
|
721
|
+
selection = {
|
|
722
|
+
clientIds: detected.map((d) => d.id),
|
|
723
|
+
removeSkill: skillInstalled,
|
|
724
|
+
};
|
|
725
|
+
}
|
|
726
|
+
else {
|
|
727
|
+
const picked = await promptUninstall({
|
|
728
|
+
detected,
|
|
729
|
+
skillInstalled,
|
|
730
|
+
skipFinalConfirm: parsed.yes,
|
|
731
|
+
});
|
|
732
|
+
if (picked === null) {
|
|
733
|
+
// User cancelled — clean exit (SIGINT convention).
|
|
734
|
+
return 130;
|
|
735
|
+
}
|
|
736
|
+
selection = picked;
|
|
737
|
+
}
|
|
738
|
+
if (selection.clientIds.length === 0 && !selection.removeSkill) {
|
|
739
|
+
out('Nothing to uninstall — no targets selected.');
|
|
740
|
+
return 0;
|
|
741
|
+
}
|
|
742
|
+
const result = await runUninstall(selection, uninstallDeps);
|
|
743
|
+
// Summary.
|
|
744
|
+
out('Uninstall summary:');
|
|
745
|
+
if (result.clientResults.length === 0) {
|
|
746
|
+
out(' (no AI client configs changed)');
|
|
747
|
+
}
|
|
748
|
+
for (const r of result.clientResults) {
|
|
749
|
+
if (r.error !== undefined) {
|
|
750
|
+
out(` ✗ ${r.label}: FAILED — ${r.error} (${r.configPath})`);
|
|
751
|
+
}
|
|
752
|
+
else if (r.removed) {
|
|
753
|
+
const keys = r.removedKeys.join(', ');
|
|
754
|
+
out(` ✓ ${r.label}: removed [${keys}] from ${r.configPath}`);
|
|
755
|
+
}
|
|
756
|
+
else {
|
|
757
|
+
out(` • ${r.label}: nothing to remove (${r.configPath})`);
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
if (result.skillResult !== undefined) {
|
|
761
|
+
const s = result.skillResult;
|
|
762
|
+
if (s.skillRemoved || s.markerRemoved) {
|
|
763
|
+
const bits = [];
|
|
764
|
+
if (s.skillRemoved)
|
|
765
|
+
bits.push(`skill dir (${s.skillTargetDir})`);
|
|
766
|
+
if (s.markerRemoved)
|
|
767
|
+
bits.push(`AGENTS.md marker (${s.agentsFile})`);
|
|
768
|
+
out(` ✓ Skill: removed ${bits.join(' + ')}`);
|
|
769
|
+
}
|
|
770
|
+
else {
|
|
771
|
+
out(' • Skill: nothing to remove');
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
const anyFailed = result.clientResults.some((r) => r.error !== undefined);
|
|
775
|
+
if (anyFailed) {
|
|
776
|
+
err('yt-builder-mcp: one or more client removals failed (see summary).');
|
|
777
|
+
return 2;
|
|
778
|
+
}
|
|
779
|
+
out('Restart your AI client(s) to drop the removed server.');
|
|
780
|
+
return 0;
|
|
781
|
+
}
|
|
782
|
+
catch (e) {
|
|
783
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
784
|
+
err(`yt-builder-mcp: uninstall failed: ${msg}`);
|
|
785
|
+
return 2;
|
|
786
|
+
}
|
|
787
|
+
}
|
|
626
788
|
case 'add-site': {
|
|
627
789
|
const tail = argv.slice(1);
|
|
628
790
|
const parsed = parseAddSiteArgs(tail);
|