@wootsup/yt-builder-mcp 1.6.1 → 1.7.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 +1 -1
- package/dist/catalog/tool-catalog-markdown.d.ts +55 -0
- package/dist/catalog/tool-catalog-markdown.d.ts.map +1 -0
- package/dist/catalog/tool-catalog-markdown.js +84 -0
- package/dist/catalog/tool-catalog-markdown.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/install-skill.d.ts +23 -2
- package/dist/install-skill.d.ts.map +1 -1
- package/dist/install-skill.js +35 -3
- package/dist/install-skill.js.map +1 -1
- package/dist/setup-cli.d.ts +7 -3
- package/dist/setup-cli.d.ts.map +1 -1
- package/dist/setup-cli.js +82 -13
- package/dist/setup-cli.js.map +1 -1
- package/dist/skill-manifest.d.ts +35 -0
- package/dist/skill-manifest.d.ts.map +1 -0
- package/dist/skill-manifest.js +91 -0
- package/dist/skill-manifest.js.map +1 -0
- package/dist/tools/elements/handlers-write.d.ts.map +1 -1
- package/dist/tools/elements/handlers-write.js +55 -0
- package/dist/tools/elements/handlers-write.js.map +1 -1
- package/dist/tools/elements/schema-validation.d.ts +78 -0
- package/dist/tools/elements/schema-validation.d.ts.map +1 -0
- package/dist/tools/elements/schema-validation.js +205 -0
- package/dist/tools/elements/schema-validation.js.map +1 -0
- package/dist/tools/format/source-schema-format.d.ts +10 -0
- package/dist/tools/format/source-schema-format.d.ts.map +1 -1
- package/dist/tools/format/source-schema-format.js +50 -3
- package/dist/tools/format/source-schema-format.js.map +1 -1
- package/dist/tools/inspection.js +6 -5
- package/dist/tools/inspection.js.map +1 -1
- package/dist/tools/sources/builders.d.ts.map +1 -1
- package/dist/tools/sources/builders.js +4 -3
- package/dist/tools/sources/builders.js.map +1 -1
- package/dist/tools/sources/handlers.d.ts +2 -0
- package/dist/tools/sources/handlers.d.ts.map +1 -1
- package/dist/tools/sources/handlers.js +8 -0
- package/dist/tools/sources/handlers.js.map +1 -1
- package/dist/uninstall-skill.d.ts +6 -0
- package/dist/uninstall-skill.d.ts.map +1 -1
- package/dist/uninstall-skill.js +20 -2
- package/dist/uninstall-skill.js.map +1 -1
- package/dist/uninstall.d.ts +2 -0
- package/dist/uninstall.d.ts.map +1 -1
- package/dist/uninstall.js +1 -1
- package/dist/uninstall.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/yt-builder-mcp/SKILL.md +76 -48
package/README.md
CHANGED
|
@@ -196,7 +196,7 @@ exit with code `2` and a clear error to stderr:
|
|
|
196
196
|
npx -y @wootsup/yt-builder-mcp setup \
|
|
197
197
|
--non-interactive \
|
|
198
198
|
--client cursor --client claude-desktop \
|
|
199
|
-
--url https://
|
|
199
|
+
--url https://your-site.example/wordpress \
|
|
200
200
|
--token "$YTB_TOKEN"
|
|
201
201
|
```
|
|
202
202
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* packages/mcp/src/catalog/tool-catalog-markdown.ts — Behavior-Truth ④.
|
|
3
|
+
*
|
|
4
|
+
* The SINGLE source of truth for the SKILL.md "Tool Catalog" appendix
|
|
5
|
+
* Markdown. Previously this rendering logic lived ONLY inline in
|
|
6
|
+
* `scripts/extract-tools.mjs`, so nothing could re-derive the appendix to
|
|
7
|
+
* assert it stayed fresh — a tool description could drift from the committed
|
|
8
|
+
* appendix and every test stayed green (the render_preview/A6 stale-row proved
|
|
9
|
+
* it live).
|
|
10
|
+
*
|
|
11
|
+
* Now BOTH consumers import this one pure function:
|
|
12
|
+
* - `scripts/extract-tools.mjs` (the generator) — via the compiled
|
|
13
|
+
* `dist/index.js` re-export.
|
|
14
|
+
* - `tests/skills/skill-md-behavior-truth.test.ts` (the freshness gate) —
|
|
15
|
+
* re-renders from the live `buildAllTools()` registry and byte-compares
|
|
16
|
+
* against the committed appendix block.
|
|
17
|
+
*
|
|
18
|
+
* Because there is exactly ONE renderer, the generated appendix and the
|
|
19
|
+
* freshness assertion can never disagree about the row format. The output is
|
|
20
|
+
* byte-identical to the prior inline implementation.
|
|
21
|
+
*
|
|
22
|
+
* @license MIT
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* The minimal tool metadata the catalog row needs. `buildAllTools()` returns
|
|
26
|
+
* `AnyToolDefinition[]`, which is structurally assignable to this — kept as a
|
|
27
|
+
* decoupled structural type so the renderer stays pure and dependency-free.
|
|
28
|
+
*/
|
|
29
|
+
export interface CatalogToolEntry {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly description: string;
|
|
32
|
+
readonly inputSchema: Readonly<Record<string, unknown>>;
|
|
33
|
+
readonly annotations: {
|
|
34
|
+
readonly readOnlyHint?: boolean;
|
|
35
|
+
readonly destructiveHint?: boolean;
|
|
36
|
+
readonly idempotentHint?: boolean;
|
|
37
|
+
readonly openWorldHint?: boolean;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** Split counts the header line derives from the gateway source-of-truth. */
|
|
41
|
+
export interface CatalogCounts {
|
|
42
|
+
/** `ESSENTIAL_TOOLS.length` — the L1 forwarded essentials. */
|
|
43
|
+
readonly essentialCount: number;
|
|
44
|
+
/** `DIRECT_TOP_LEVEL_TOOLS.length` — the L3 direct top-level tools. */
|
|
45
|
+
readonly directCount: number;
|
|
46
|
+
/** Top-level gateways advertised in `tools/list` (write + read-only). */
|
|
47
|
+
readonly gatewayCount?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Render the deterministic tool-catalog Markdown (header line + table) for the
|
|
51
|
+
* SKILL.md appendix. Pure: identical input ⇒ identical bytes. The trailing
|
|
52
|
+
* newline matches the generator's `lines.join('\n') + '\n'` contract.
|
|
53
|
+
*/
|
|
54
|
+
export declare function renderToolCatalogMarkdown(tools: readonly CatalogToolEntry[], counts: CatalogCounts): string;
|
|
55
|
+
//# sourceMappingURL=tool-catalog-markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-catalog-markdown.d.ts","sourceRoot":"","sources":["../../src/catalog/tool-catalog-markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE;QAClB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;KACpC,CAAC;CACL;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAiCD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAClC,MAAM,EAAE,aAAa,GACtB,MAAM,CA+BR"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* packages/mcp/src/catalog/tool-catalog-markdown.ts — Behavior-Truth ④.
|
|
3
|
+
*
|
|
4
|
+
* The SINGLE source of truth for the SKILL.md "Tool Catalog" appendix
|
|
5
|
+
* Markdown. Previously this rendering logic lived ONLY inline in
|
|
6
|
+
* `scripts/extract-tools.mjs`, so nothing could re-derive the appendix to
|
|
7
|
+
* assert it stayed fresh — a tool description could drift from the committed
|
|
8
|
+
* appendix and every test stayed green (the render_preview/A6 stale-row proved
|
|
9
|
+
* it live).
|
|
10
|
+
*
|
|
11
|
+
* Now BOTH consumers import this one pure function:
|
|
12
|
+
* - `scripts/extract-tools.mjs` (the generator) — via the compiled
|
|
13
|
+
* `dist/index.js` re-export.
|
|
14
|
+
* - `tests/skills/skill-md-behavior-truth.test.ts` (the freshness gate) —
|
|
15
|
+
* re-renders from the live `buildAllTools()` registry and byte-compares
|
|
16
|
+
* against the committed appendix block.
|
|
17
|
+
*
|
|
18
|
+
* Because there is exactly ONE renderer, the generated appendix and the
|
|
19
|
+
* freshness assertion can never disagree about the row format. The output is
|
|
20
|
+
* byte-identical to the prior inline implementation.
|
|
21
|
+
*
|
|
22
|
+
* @license MIT
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Derive the `Kind` column from the MCP annotation hints. Mirrors the prior
|
|
26
|
+
* inline logic exactly: read flag → 'read', plus destructive / idempotent /
|
|
27
|
+
* openWorld; no flags at all ⇒ 'mutating'.
|
|
28
|
+
*/
|
|
29
|
+
function describeAnnotations(a) {
|
|
30
|
+
if (a === null || a === undefined || typeof a !== 'object')
|
|
31
|
+
return 'read';
|
|
32
|
+
const flags = [];
|
|
33
|
+
if (a.readOnlyHint === true)
|
|
34
|
+
flags.push('read');
|
|
35
|
+
if (a.destructiveHint === true)
|
|
36
|
+
flags.push('destructive');
|
|
37
|
+
if (a.idempotentHint === true)
|
|
38
|
+
flags.push('idempotent');
|
|
39
|
+
if (a.openWorldHint === true)
|
|
40
|
+
flags.push('openWorld');
|
|
41
|
+
return flags.length === 0 ? 'mutating' : flags.join('+');
|
|
42
|
+
}
|
|
43
|
+
/** The sorted input-key list for the `Input keys` column. */
|
|
44
|
+
function listInputKeys(schema) {
|
|
45
|
+
if (schema === null || schema === undefined || typeof schema !== 'object') {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
return Object.keys(schema).sort();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Render the deterministic tool-catalog Markdown (header line + table) for the
|
|
52
|
+
* SKILL.md appendix. Pure: identical input ⇒ identical bytes. The trailing
|
|
53
|
+
* newline matches the generator's `lines.join('\n') + '\n'` contract.
|
|
54
|
+
*/
|
|
55
|
+
export function renderToolCatalogMarkdown(tools, counts) {
|
|
56
|
+
const records = tools
|
|
57
|
+
.map((t) => ({
|
|
58
|
+
name: String(t.name ?? ''),
|
|
59
|
+
description: String(t.description ?? '').replace(/\s+/g, ' ').trim(),
|
|
60
|
+
kind: describeAnnotations(t.annotations),
|
|
61
|
+
inputKeys: listInputKeys(t.inputSchema),
|
|
62
|
+
}))
|
|
63
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
64
|
+
const l1 = counts.essentialCount;
|
|
65
|
+
const l3 = counts.directCount;
|
|
66
|
+
const gateway = counts.gatewayCount ?? 2;
|
|
67
|
+
const advertised = l1 + l3 + gateway;
|
|
68
|
+
const advanced = records.length - l1 - l3;
|
|
69
|
+
const callable = records.length + gateway;
|
|
70
|
+
const lines = [
|
|
71
|
+
`**${records.length} catalogued tools** plus the \`yootheme_builder_advanced\` (write) + \`yootheme_builder_advanced_read\` (read-only) gateways = **${callable} reachable via \`tools/list\`** (${l1} L1 + ${l3} L3 + ${gateway} gateways = ${advertised} advertised; the gateways route to ${advanced} additional advanced tools, bringing the total to ${callable} callable). Generated by \`scripts/extract-tools.mjs\` from the compiled \`buildAllTools()\` registry. Do not hand-edit this section; re-run \`npm run build && node scripts/extract-tools.mjs\` after changing tool definitions.`,
|
|
72
|
+
'',
|
|
73
|
+
'| Tool | Kind | Input keys | Description |',
|
|
74
|
+
'| --- | --- | --- | --- |',
|
|
75
|
+
];
|
|
76
|
+
for (const r of records) {
|
|
77
|
+
const keys = r.inputKeys.length === 0 ? '_(none)_' : '`' + r.inputKeys.join('`, `') + '`';
|
|
78
|
+
// Escape pipe chars in the description so the table doesn't break.
|
|
79
|
+
const desc = r.description.replace(/\|/g, '\\|');
|
|
80
|
+
lines.push(`| \`${r.name}\` | ${r.kind} | ${keys} | ${desc} |`);
|
|
81
|
+
}
|
|
82
|
+
return lines.join('\n') + '\n';
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=tool-catalog-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-catalog-markdown.js","sourceRoot":"","sources":["../../src/catalog/tool-catalog-markdown.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { loadConfig, loadRegistry, isTestMode, ENV_SITE_URL, ENV_WP_URL, ENV_BEA
|
|
|
18
18
|
export { bootstrapActiveSite } from './sites/bootstrap.js';
|
|
19
19
|
export { ConfigError, RestError, NetworkError } from './errors.js';
|
|
20
20
|
export { buildAllTools } from './tools/index.js';
|
|
21
|
+
export { renderToolCatalogMarkdown, type CatalogToolEntry, type CatalogCounts, } from './catalog/tool-catalog-markdown.js';
|
|
21
22
|
export { ClientPool, NoDefaultSiteError, UnknownSiteError } from './sites/client-pool.js';
|
|
22
23
|
export { SiteRegistry } from './sites/registry.js';
|
|
23
24
|
export { synthesiseFromEnv } from './sites/env-bridge.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;AAKH,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAczF,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAczF,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;AAIjD,OAAO,EACH,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACrB,MAAM,oCAAoC,CAAC;AAG5C,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;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACrB,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;CAC3C;AAED,iBAAe,IAAI,CAAC,IAAI,GAAE,QAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJtD;AAkBD,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,10 @@ export { loadConfig, loadRegistry, isTestMode, ENV_SITE_URL, ENV_WP_URL, ENV_BEA
|
|
|
31
31
|
export { bootstrapActiveSite } from './sites/bootstrap.js';
|
|
32
32
|
export { ConfigError, RestError, NetworkError } from './errors.js';
|
|
33
33
|
export { buildAllTools } from './tools/index.js';
|
|
34
|
+
// Behavior-Truth ④ — the SINGLE tool-catalog Markdown renderer, shared by the
|
|
35
|
+
// extract-tools generator (via this dist re-export) and the SKILL.md appendix
|
|
36
|
+
// freshness test, so the generated appendix and the drift gate never disagree.
|
|
37
|
+
export { renderToolCatalogMarkdown, } from './catalog/tool-catalog-markdown.js';
|
|
34
38
|
// W6 — multi-site primitives exported for dist consumers (scripts,
|
|
35
39
|
// embedded uses). The `ClientPool` is the new wiring contract.
|
|
36
40
|
export { ClientPool, NoDefaultSiteError, UnknownSiteError } from './sites/client-pool.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/install-skill.d.ts
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
* agent-skill folder (typically `~/.claude/skills/`) and appends a marker
|
|
6
6
|
* block to `~/AGENTS.md` so other AI clients pick it up automatically.
|
|
7
7
|
*
|
|
8
|
-
* Idempotent: re-running overwrites
|
|
9
|
-
* AGENTS.md append when the marker is already present.
|
|
8
|
+
* Idempotent: re-running overwrites an UNMODIFIED skill and skips the
|
|
9
|
+
* AGENTS.md append when the marker is already present. A locally-modified
|
|
10
|
+
* skill is left untouched unless `force` is set (see
|
|
11
|
+
* {@link InstallSkillOptions.force}); an install-manifest records the
|
|
12
|
+
* version + content hash at install time as the modified-detection baseline.
|
|
10
13
|
*
|
|
11
14
|
* Mirrors the pattern from `@wootsup/apimapper-mcp install-skill` so users on both
|
|
12
15
|
* products get the same workflow.
|
|
@@ -32,12 +35,30 @@ export interface InstallSkillOptions {
|
|
|
32
35
|
readonly removeLegacyDir?: boolean;
|
|
33
36
|
/** Target AGENTS.md file to append the marker to. */
|
|
34
37
|
readonly targetAgentsFile?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Overwrite even a locally-modified skill. Default `false`: a skill whose
|
|
40
|
+
* current hash no longer matches its install-manifest is left untouched
|
|
41
|
+
* (the customer edited it) — see {@link InstallSkillResult.modifiedSkipped}.
|
|
42
|
+
*/
|
|
43
|
+
readonly force?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Version recorded into the install-manifest (the caller injects
|
|
46
|
+
* `SERVER_VERSION`). Default `'0.0.0'` keeps this function free of a
|
|
47
|
+
* server.js import; production callers always pass the real version.
|
|
48
|
+
*/
|
|
49
|
+
readonly bundledVersion?: string;
|
|
50
|
+
/** Override the manifest file location (tests). Default: beside the skills dir. */
|
|
51
|
+
readonly manifestPath?: string;
|
|
35
52
|
}
|
|
36
53
|
export interface InstallSkillResult {
|
|
37
54
|
readonly copied: boolean;
|
|
38
55
|
readonly markerAlreadyPresent: boolean;
|
|
39
56
|
readonly skillTargetDir: string;
|
|
40
57
|
readonly agentsFile: string;
|
|
58
|
+
/** True when an install-manifest was written this run. */
|
|
59
|
+
readonly manifestWritten: boolean;
|
|
60
|
+
/** True when the copy was SKIPPED because the installed skill is modified. */
|
|
61
|
+
readonly modifiedSkipped: boolean;
|
|
41
62
|
}
|
|
42
63
|
export declare function installSkill(options?: InstallSkillOptions): Promise<InstallSkillResult>;
|
|
43
64
|
//# sourceMappingURL=install-skill.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../src/install-skill.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../src/install-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA0BH,eAAO,MAAM,WAAW,4CAA4C,CAAC;AAiBrE,MAAM,WAAW,mBAAmB;IAChC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,qDAAqD;IACrD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACrC;AAwCD,wBAAsB,YAAY,CAC9B,OAAO,GAAE,mBAAwB,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAoF7B"}
|
package/dist/install-skill.js
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
* agent-skill folder (typically `~/.claude/skills/`) and appends a marker
|
|
6
6
|
* block to `~/AGENTS.md` so other AI clients pick it up automatically.
|
|
7
7
|
*
|
|
8
|
-
* Idempotent: re-running overwrites
|
|
9
|
-
* AGENTS.md append when the marker is already present.
|
|
8
|
+
* Idempotent: re-running overwrites an UNMODIFIED skill and skips the
|
|
9
|
+
* AGENTS.md append when the marker is already present. A locally-modified
|
|
10
|
+
* skill is left untouched unless `force` is set (see
|
|
11
|
+
* {@link InstallSkillOptions.force}); an install-manifest records the
|
|
12
|
+
* version + content hash at install time as the modified-detection baseline.
|
|
10
13
|
*
|
|
11
14
|
* Mirrors the pattern from `@wootsup/apimapper-mcp install-skill` so users on both
|
|
12
15
|
* products get the same workflow.
|
|
@@ -17,6 +20,7 @@ import { appendFileSync, copyFileSync, existsSync, mkdirSync, readdirSync, readF
|
|
|
17
20
|
import { homedir } from 'node:os';
|
|
18
21
|
import { dirname, join, resolve } from 'node:path';
|
|
19
22
|
import { fileURLToPath } from 'node:url';
|
|
23
|
+
import { computeSkillHash, detectModification, manifestPathFor, MANIFEST_SCHEMA_VERSION, readInstallManifest, writeInstallManifest, } from './skill-manifest.js';
|
|
20
24
|
export const MARKER_LINE = '<!-- yt-builder-mcp:skill-installed -->';
|
|
21
25
|
const MARKER_BLOCK = `
|
|
22
26
|
|
|
@@ -73,15 +77,35 @@ export async function installSkill(options = {}) {
|
|
|
73
77
|
const pkgRoot = options.pkgRoot ?? defaultPkgRoot();
|
|
74
78
|
const targetSkillsDir = options.targetSkillsDir ?? join(homedir(), '.claude', 'skills');
|
|
75
79
|
const targetAgentsFile = options.targetAgentsFile ?? join(homedir(), 'AGENTS.md');
|
|
80
|
+
const force = options.force ?? false;
|
|
81
|
+
const bundledVersion = options.bundledVersion ?? '0.0.0';
|
|
82
|
+
const manifestPath = options.manifestPath ?? manifestPathFor(targetSkillsDir);
|
|
76
83
|
const srcSkillDir = findSkillSource(pkgRoot);
|
|
77
84
|
if (!existsSync(srcSkillDir)) {
|
|
78
85
|
throw new Error(`Bundled skill not found at ${srcSkillDir}. ` +
|
|
79
86
|
`Is the package installed correctly? (pkgRoot=${pkgRoot})`);
|
|
80
87
|
}
|
|
88
|
+
const skillTargetDir = join(targetSkillsDir, 'yt-builder-mcp');
|
|
89
|
+
// ── Modified-Schutz (Spec §8) ─────────────────────────────────────────
|
|
90
|
+
// Vergleich gegen das MANIFEST (Hash zum Install-Zeitpunkt), nicht gegen
|
|
91
|
+
// die gebundelte Version. 'modified' + !force → NICHT überschreiben.
|
|
92
|
+
const existingManifest = readInstallManifest(manifestPath);
|
|
93
|
+
const modState = detectModification(skillTargetDir, existingManifest);
|
|
94
|
+
if (modState === 'modified' && !force) {
|
|
95
|
+
const markerAlreadyPresent = existsSync(targetAgentsFile)
|
|
96
|
+
&& readFileSync(targetAgentsFile, 'utf-8').includes(MARKER_LINE);
|
|
97
|
+
return {
|
|
98
|
+
copied: false,
|
|
99
|
+
modifiedSkipped: true,
|
|
100
|
+
manifestWritten: false,
|
|
101
|
+
markerAlreadyPresent,
|
|
102
|
+
skillTargetDir,
|
|
103
|
+
agentsFile: targetAgentsFile,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
81
106
|
if (!existsSync(targetSkillsDir)) {
|
|
82
107
|
mkdirSync(targetSkillsDir, { recursive: true });
|
|
83
108
|
}
|
|
84
|
-
const skillTargetDir = join(targetSkillsDir, 'yt-builder-mcp');
|
|
85
109
|
copyDirRecursive(srcSkillDir, skillTargetDir);
|
|
86
110
|
// 1.0.1 Wave-R: clean up the legacy directory created by pre-1.0.1
|
|
87
111
|
// installs so the user doesn't end up with two side-by-side skill
|
|
@@ -108,11 +132,19 @@ export async function installSkill(options = {}) {
|
|
|
108
132
|
// Create with a sensible top-line and the marker block (trimmed).
|
|
109
133
|
writeFileSync(targetAgentsFile, MARKER_BLOCK.trimStart(), 'utf-8');
|
|
110
134
|
}
|
|
135
|
+
// Install-Manifest schreiben: Hash des JETZT installierten Skills + Version.
|
|
136
|
+
writeInstallManifest(manifestPath, {
|
|
137
|
+
schemaVersion: MANIFEST_SCHEMA_VERSION,
|
|
138
|
+
skillVersion: bundledVersion,
|
|
139
|
+
hash: computeSkillHash(skillTargetDir),
|
|
140
|
+
});
|
|
111
141
|
return {
|
|
112
142
|
copied: true,
|
|
113
143
|
markerAlreadyPresent,
|
|
114
144
|
skillTargetDir,
|
|
115
145
|
agentsFile: targetAgentsFile,
|
|
146
|
+
manifestWritten: true,
|
|
147
|
+
modifiedSkipped: false,
|
|
116
148
|
};
|
|
117
149
|
}
|
|
118
150
|
//# sourceMappingURL=install-skill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../src/install-skill.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../src/install-skill.ts"],"names":[],"mappings":"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"}
|
package/dist/setup-cli.d.ts
CHANGED
|
@@ -146,6 +146,10 @@ export interface ParsedUninstallArgs {
|
|
|
146
146
|
readonly all: boolean;
|
|
147
147
|
/** `--yes` / `-y`: skip the final confirmation. */
|
|
148
148
|
readonly yes: boolean;
|
|
149
|
+
/** `--keep-skill`: leave the installed skill untouched (removeSkill=false). */
|
|
150
|
+
readonly keepSkill: boolean;
|
|
151
|
+
/** `--force`: override the uninstall modified-protection. */
|
|
152
|
+
readonly force: boolean;
|
|
149
153
|
/** `--help` / `-h` requested. */
|
|
150
154
|
readonly helpRequested: boolean;
|
|
151
155
|
/** Validation errors (unknown flags, stray values). Empty when usable. */
|
|
@@ -153,9 +157,9 @@ export interface ParsedUninstallArgs {
|
|
|
153
157
|
}
|
|
154
158
|
/**
|
|
155
159
|
* Parse the `uninstall` / `remove` argv tail. Pure; does no I/O. Accepts
|
|
156
|
-
* only boolean flags — `--all`, `--yes`/`-y`,
|
|
157
|
-
* (`--all=x`) or unknown flag is an error so typos
|
|
158
|
-
* the destructive behaviour.
|
|
160
|
+
* only boolean flags — `--all`, `--keep-skill`, `--force`, `--yes`/`-y`,
|
|
161
|
+
* `--help`/`-h`. Any value (`--all=x`) or unknown flag is an error so typos
|
|
162
|
+
* don't silently change the destructive behaviour.
|
|
159
163
|
*/
|
|
160
164
|
export declare function parseUninstallArgs(argv: readonly string[]): ParsedUninstallArgs;
|
|
161
165
|
export interface RunCliDeps {
|
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":"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
|
|
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
|
@@ -612,20 +612,24 @@ const UNINSTALL_HELP = `Usage: yt-builder-mcp uninstall [--all] [--yes]\n` +
|
|
|
612
612
|
`Flags:\n` +
|
|
613
613
|
` --all Non-interactive: remove from EVERY detected client and\n` +
|
|
614
614
|
` remove the skill, with no prompts.\n` +
|
|
615
|
-
` --yes, -y Skip the final confirmation prompt (interactive mode).\n
|
|
615
|
+
` --yes, -y Skip the final confirmation prompt (interactive mode).\n` +
|
|
616
|
+
` --keep-skill Leave the installed skill untouched (remove only client entries).\n` +
|
|
617
|
+
` --force Remove the skill even if it was locally modified.\n\n` +
|
|
616
618
|
`Examples:\n` +
|
|
617
619
|
` yt-builder-mcp uninstall # interactive checklist\n` +
|
|
618
620
|
` yt-builder-mcp uninstall --all # remove everything, no prompts\n` +
|
|
619
621
|
` yt-builder-mcp remove --yes # interactive, no final confirm\n`;
|
|
620
622
|
/**
|
|
621
623
|
* Parse the `uninstall` / `remove` argv tail. Pure; does no I/O. Accepts
|
|
622
|
-
* only boolean flags — `--all`, `--yes`/`-y`,
|
|
623
|
-
* (`--all=x`) or unknown flag is an error so typos
|
|
624
|
-
* the destructive behaviour.
|
|
624
|
+
* only boolean flags — `--all`, `--keep-skill`, `--force`, `--yes`/`-y`,
|
|
625
|
+
* `--help`/`-h`. Any value (`--all=x`) or unknown flag is an error so typos
|
|
626
|
+
* don't silently change the destructive behaviour.
|
|
625
627
|
*/
|
|
626
628
|
export function parseUninstallArgs(argv) {
|
|
627
629
|
let all = false;
|
|
628
630
|
let yes = false;
|
|
631
|
+
let keepSkill = false;
|
|
632
|
+
let force = false;
|
|
629
633
|
let helpRequested = false;
|
|
630
634
|
const errors = [];
|
|
631
635
|
for (const raw of argv) {
|
|
@@ -646,6 +650,18 @@ export function parseUninstallArgs(argv) {
|
|
|
646
650
|
errors.push(`Flag ${flag} does not take a value.`);
|
|
647
651
|
break;
|
|
648
652
|
}
|
|
653
|
+
case '--keep-skill': {
|
|
654
|
+
keepSkill = true;
|
|
655
|
+
if (hasInline)
|
|
656
|
+
errors.push('Flag --keep-skill does not take a value.');
|
|
657
|
+
break;
|
|
658
|
+
}
|
|
659
|
+
case '--force': {
|
|
660
|
+
force = true;
|
|
661
|
+
if (hasInline)
|
|
662
|
+
errors.push('Flag --force does not take a value.');
|
|
663
|
+
break;
|
|
664
|
+
}
|
|
649
665
|
case '--help':
|
|
650
666
|
case '-h': {
|
|
651
667
|
helpRequested = true;
|
|
@@ -656,7 +672,7 @@ export function parseUninstallArgs(argv) {
|
|
|
656
672
|
}
|
|
657
673
|
}
|
|
658
674
|
}
|
|
659
|
-
return { all, yes, helpRequested, errors };
|
|
675
|
+
return { all, yes, keepSkill, force, helpRequested, errors };
|
|
660
676
|
}
|
|
661
677
|
function parseIdArgs(argv, allowYes) {
|
|
662
678
|
let siteId = '';
|
|
@@ -760,6 +776,30 @@ export async function runCli(argv, deps) {
|
|
|
760
776
|
await addSiteFromWizard(args, path);
|
|
761
777
|
};
|
|
762
778
|
};
|
|
779
|
+
// D1: after a SUCCESSFUL wizard (exit 0), install the skill too. A
|
|
780
|
+
// skill-install failure is NON-FATAL — warn, keep the wizard exit code.
|
|
781
|
+
const runSetupThenInstall = async (wizardDeps) => {
|
|
782
|
+
const code = await wizard(wizardDeps);
|
|
783
|
+
if (code === 0) {
|
|
784
|
+
try {
|
|
785
|
+
const result = await install({ bundledVersion: SERVER_VERSION });
|
|
786
|
+
if (result.modifiedSkipped) {
|
|
787
|
+
out(`yt-builder-mcp: skill left untouched at ${result.skillTargetDir} (locally modified; run 'yt-builder-mcp install-skill --force' to overwrite).`);
|
|
788
|
+
}
|
|
789
|
+
else if (result.markerAlreadyPresent) {
|
|
790
|
+
out(`yt-builder-mcp: skill installed/refreshed at ${result.skillTargetDir}.`);
|
|
791
|
+
}
|
|
792
|
+
else {
|
|
793
|
+
out(`yt-builder-mcp: skill installed at ${result.skillTargetDir}; ${result.agentsFile} updated.`);
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
catch (e) {
|
|
797
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
798
|
+
err(`yt-builder-mcp: warning: skill install skipped (${msg}). Run 'yt-builder-mcp install-skill' manually.`);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
return code;
|
|
802
|
+
};
|
|
763
803
|
if (subcommand === undefined || subcommand === 'setup') {
|
|
764
804
|
const setupArgs = argv[0] === 'setup' ? argv.slice(1) : argv;
|
|
765
805
|
const parsed = parseSetupArgs(setupArgs, process.env);
|
|
@@ -825,7 +865,7 @@ export async function runCli(argv, deps) {
|
|
|
825
865
|
err(HELP_TEXT);
|
|
826
866
|
return 2;
|
|
827
867
|
}
|
|
828
|
-
return
|
|
868
|
+
return runSetupThenInstall(withPersist(buildPickupDeps(parsed)));
|
|
829
869
|
}
|
|
830
870
|
if (parsed.nonInteractive) {
|
|
831
871
|
if (parsed.errors.length > 0) {
|
|
@@ -834,7 +874,7 @@ export async function runCli(argv, deps) {
|
|
|
834
874
|
err(HELP_TEXT);
|
|
835
875
|
return 2;
|
|
836
876
|
}
|
|
837
|
-
return
|
|
877
|
+
return runSetupThenInstall(withPersist(buildNonInteractiveDeps(parsed)));
|
|
838
878
|
}
|
|
839
879
|
if (parsed.errors.length > 0) {
|
|
840
880
|
for (const line of parsed.errors)
|
|
@@ -842,7 +882,7 @@ export async function runCli(argv, deps) {
|
|
|
842
882
|
err(HELP_TEXT);
|
|
843
883
|
return 1;
|
|
844
884
|
}
|
|
845
|
-
return
|
|
885
|
+
return runSetupThenInstall(withCa(withPin(withPersist(interactiveBase))));
|
|
846
886
|
}
|
|
847
887
|
switch (subcommand) {
|
|
848
888
|
case 'doctor': {
|
|
@@ -851,9 +891,29 @@ export async function runCli(argv, deps) {
|
|
|
851
891
|
}
|
|
852
892
|
case 'install-skill':
|
|
853
893
|
case 'install': {
|
|
894
|
+
// Only `--force` is accepted here (overwrite a locally-modified
|
|
895
|
+
// skill). Reject anything else so a typo'd flag isn't silently
|
|
896
|
+
// ignored — and so the `install-skill --force` remediation that
|
|
897
|
+
// the setup-path advertises actually works.
|
|
898
|
+
const tail = argv.slice(1);
|
|
899
|
+
if (tail.includes('--help') || tail.includes('-h')) {
|
|
900
|
+
out(HELP_TEXT);
|
|
901
|
+
return 0;
|
|
902
|
+
}
|
|
903
|
+
const unknown = tail.filter((a) => a !== '--force');
|
|
904
|
+
if (unknown.length > 0) {
|
|
905
|
+
for (const u of unknown) {
|
|
906
|
+
err(`yt-builder-mcp: unknown install-skill flag: ${u}`);
|
|
907
|
+
}
|
|
908
|
+
return 2;
|
|
909
|
+
}
|
|
910
|
+
const force = tail.includes('--force');
|
|
854
911
|
try {
|
|
855
|
-
const result = await install();
|
|
856
|
-
if (result.
|
|
912
|
+
const result = await install({ bundledVersion: SERVER_VERSION, force });
|
|
913
|
+
if (result.modifiedSkipped) {
|
|
914
|
+
out(`yt-builder-mcp: skill left untouched at ${result.skillTargetDir} (locally modified; re-run with --force to overwrite).`);
|
|
915
|
+
}
|
|
916
|
+
else if (result.markerAlreadyPresent) {
|
|
857
917
|
out(`yt-builder-mcp: skill refreshed at ${result.skillTargetDir} (marker already in AGENTS.md).`);
|
|
858
918
|
}
|
|
859
919
|
else {
|
|
@@ -891,10 +951,12 @@ export async function runCli(argv, deps) {
|
|
|
891
951
|
let selection;
|
|
892
952
|
if (parsed.all) {
|
|
893
953
|
// Non-interactive: remove from every detected client +
|
|
894
|
-
// the skill, no prompts.
|
|
954
|
+
// the skill, no prompts. `--keep-skill` opts the skill out;
|
|
955
|
+
// `--force` overrides the modified-protection.
|
|
895
956
|
selection = {
|
|
896
957
|
clientIds: detected.map((d) => d.id),
|
|
897
|
-
removeSkill: skillInstalled,
|
|
958
|
+
removeSkill: parsed.keepSkill ? false : skillInstalled,
|
|
959
|
+
force: parsed.force,
|
|
898
960
|
};
|
|
899
961
|
}
|
|
900
962
|
else {
|
|
@@ -907,7 +969,11 @@ export async function runCli(argv, deps) {
|
|
|
907
969
|
// User cancelled — clean exit (SIGINT convention).
|
|
908
970
|
return 130;
|
|
909
971
|
}
|
|
910
|
-
selection =
|
|
972
|
+
selection = {
|
|
973
|
+
clientIds: picked.clientIds,
|
|
974
|
+
removeSkill: parsed.keepSkill ? false : picked.removeSkill,
|
|
975
|
+
force: parsed.force,
|
|
976
|
+
};
|
|
911
977
|
}
|
|
912
978
|
if (selection.clientIds.length === 0 && !selection.removeSkill) {
|
|
913
979
|
out('Nothing to uninstall — no targets selected.');
|
|
@@ -941,6 +1007,9 @@ export async function runCli(argv, deps) {
|
|
|
941
1007
|
bits.push(`AGENTS.md marker (${s.agentsFile})`);
|
|
942
1008
|
out(` ✓ Skill: removed ${bits.join(' + ')}`);
|
|
943
1009
|
}
|
|
1010
|
+
else if (s.skillModifiedKept) {
|
|
1011
|
+
out(' • Skill: kept — locally modified (use --force to remove).');
|
|
1012
|
+
}
|
|
944
1013
|
else {
|
|
945
1014
|
out(' • Skill: nothing to remove');
|
|
946
1015
|
}
|