@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
|
@@ -42,4 +42,116 @@ export declare const TEMPLATE_SUMMARY_OUTPUT_SCHEMA: z.ZodObject<{
|
|
|
42
42
|
}, z.core.$strip>>;
|
|
43
43
|
etag: z.ZodString;
|
|
44
44
|
}, z.core.$strip>;
|
|
45
|
+
/**
|
|
46
|
+
* Input shape for `yootheme_builder_pages_create`.
|
|
47
|
+
*
|
|
48
|
+
* Mirrors the args of `POST /pages` (Phase B).
|
|
49
|
+
*
|
|
50
|
+
* Design pins:
|
|
51
|
+
* - `post_type` is intentionally NOT exposed. Layer 9 defensive guard
|
|
52
|
+
* on the REST side rejects it server-side; surfacing it at the MCP
|
|
53
|
+
* boundary would invite a footgun where an agent tries to set it
|
|
54
|
+
* and fails confusingly.
|
|
55
|
+
* - `status` defaults to `draft` on the server (Q6 design — no public
|
|
56
|
+
* empty page).
|
|
57
|
+
* - `dry_run` triggers validation Layers 1+2+4 without persisting.
|
|
58
|
+
*/
|
|
59
|
+
export declare const PAGES_CREATE_INPUT: {
|
|
60
|
+
title: z.ZodString;
|
|
61
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
62
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
63
|
+
publish: "publish";
|
|
64
|
+
draft: "draft";
|
|
65
|
+
pending: "pending";
|
|
66
|
+
private: "private";
|
|
67
|
+
future: "future";
|
|
68
|
+
}>>;
|
|
69
|
+
layout: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
70
|
+
dry_run: z.ZodOptional<z.ZodBoolean>;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Wire shape for `yootheme_builder_pages_create` on success (non-dry-run).
|
|
74
|
+
*
|
|
75
|
+
* Mirrors the REST 201 response shape.
|
|
76
|
+
*
|
|
77
|
+
* Design pins:
|
|
78
|
+
* - `frontend_url` is nullable: REST returns null for fresh drafts
|
|
79
|
+
* before publish.
|
|
80
|
+
* - `template_id` is a plain string. The "page:{post_id}" prefix is
|
|
81
|
+
* enforced server-side; adding a `.startsWith()` here would buy no
|
|
82
|
+
* MCP-client value while adding Zod complexity.
|
|
83
|
+
* - `warnings` is a lean string array (e.g. "slug_collision_resolved"
|
|
84
|
+
* when WP auto-appends `-2`). The REST surface may expand this to
|
|
85
|
+
* richer objects in v1.3; strings keep the v1.2 surface minimal.
|
|
86
|
+
*/
|
|
87
|
+
export declare const PAGES_CREATE_OUTPUT_SCHEMA: z.ZodObject<{
|
|
88
|
+
page_id: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
article_id: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
title: z.ZodString;
|
|
91
|
+
slug: z.ZodString;
|
|
92
|
+
status: z.ZodString;
|
|
93
|
+
frontend_url: z.ZodNullable<z.ZodString>;
|
|
94
|
+
template_id: z.ZodString;
|
|
95
|
+
etag: z.ZodString;
|
|
96
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
/**
|
|
99
|
+
* Wire shape for `yootheme_builder_pages_create` when `dry_run:true`.
|
|
100
|
+
*
|
|
101
|
+
* Design pin: NO `etag` field. The B6 fix-cycle decision was that
|
|
102
|
+
* surfacing a "live" ETag with a dry-run response invites a stale-
|
|
103
|
+
* If-Match footgun (caller pins the ETag, then non-dry-run mutates,
|
|
104
|
+
* stale ETag rejected with 412). Dry-run is validation-only.
|
|
105
|
+
*
|
|
106
|
+
* `template_id_pattern` is a literal — the actual `template_id` cannot
|
|
107
|
+
* be materialised before WP allocates the post_id.
|
|
108
|
+
*/
|
|
109
|
+
export declare const PAGES_CREATE_DRY_RUN_OUTPUT_SCHEMA: z.ZodObject<{
|
|
110
|
+
dry_run: z.ZodLiteral<true>;
|
|
111
|
+
would_create: z.ZodObject<{
|
|
112
|
+
title: z.ZodString;
|
|
113
|
+
slug: z.ZodString;
|
|
114
|
+
status: z.ZodString;
|
|
115
|
+
template_id_pattern: z.ZodEnum<{
|
|
116
|
+
"page:{post_id}": "page:{post_id}";
|
|
117
|
+
"article:{article_id}": "article:{article_id}";
|
|
118
|
+
}>;
|
|
119
|
+
}, z.core.$strip>;
|
|
120
|
+
validation_report: z.ZodObject<{
|
|
121
|
+
layer_1_structural: z.ZodLiteral<"passed">;
|
|
122
|
+
layer_2_element_types: z.ZodLiteral<"passed">;
|
|
123
|
+
layer_4_renderer: z.ZodLiteral<"passed">;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
}, z.core.$strip>;
|
|
126
|
+
/**
|
|
127
|
+
* Input shape for `yootheme_builder_pages_delete`.
|
|
128
|
+
*
|
|
129
|
+
* Mirrors the args of `DELETE /pages/{post_id}` (Phase B).
|
|
130
|
+
*
|
|
131
|
+
* Design pin: `confirm` is `z.literal(true)`. This is the Zod-side
|
|
132
|
+
* enforcement of the confirm gate — the MCP boundary rejects requests
|
|
133
|
+
* without `confirm:true` before they ever hit the REST layer.
|
|
134
|
+
*
|
|
135
|
+
* `force` defaults to false server-side → wp_delete_post(trash). When
|
|
136
|
+
* true → hard delete (irrecoverable).
|
|
137
|
+
*/
|
|
138
|
+
export declare const PAGES_DELETE_INPUT: {
|
|
139
|
+
post_id: z.ZodNumber;
|
|
140
|
+
confirm: z.ZodLiteral<true>;
|
|
141
|
+
force: z.ZodOptional<z.ZodBoolean>;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Wire shape for `yootheme_builder_pages_delete` on success.
|
|
145
|
+
*
|
|
146
|
+
* `deleted` is `z.literal(true)` — the success-response invariant. A
|
|
147
|
+
* failed delete surfaces as `isError:true` with a structured-error
|
|
148
|
+
* envelope, not as `deleted:false`.
|
|
149
|
+
*/
|
|
150
|
+
export declare const PAGES_DELETE_OUTPUT_SCHEMA: z.ZodObject<{
|
|
151
|
+
deleted: z.ZodLiteral<true>;
|
|
152
|
+
page_id: z.ZodOptional<z.ZodNumber>;
|
|
153
|
+
article_id: z.ZodOptional<z.ZodNumber>;
|
|
154
|
+
force_deleted: z.ZodBoolean;
|
|
155
|
+
etag: z.ZodString;
|
|
156
|
+
}, z.core.$strip>;
|
|
45
157
|
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;iBA8BnC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAiB/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAWH,eAAO,MAAM,8BAA8B;;;;;;;;;;;iBAazC,CAAC"}
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;iBA8BnC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAiB/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAWH,eAAO,MAAM,8BAA8B;;;;;;;;;;;iBAazC,CAAC;AAWH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CA6B9B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAqBlC,CAAC;AAEN;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;iBAe7C,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB;;;;CAiB9B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;;;;;iBAYlC,CAAC"}
|
|
@@ -79,4 +79,154 @@ export const TEMPLATE_SUMMARY_OUTPUT_SCHEMA = z.object({
|
|
|
79
79
|
})),
|
|
80
80
|
etag: z.string(),
|
|
81
81
|
});
|
|
82
|
+
// ─── C1 — pages_create + pages_delete (v1.2) ──────────────────────────
|
|
83
|
+
//
|
|
84
|
+
// MCP tool schemas wrapping the Phase B REST endpoints:
|
|
85
|
+
// POST /pages → yootheme_builder_pages_create
|
|
86
|
+
// DELETE /pages/{post_id} → yootheme_builder_pages_delete
|
|
87
|
+
//
|
|
88
|
+
// These schemas drive (a) input validation at the MCP boundary and (b)
|
|
89
|
+
// the structured-content outputSchema for client introspection.
|
|
90
|
+
/**
|
|
91
|
+
* Input shape for `yootheme_builder_pages_create`.
|
|
92
|
+
*
|
|
93
|
+
* Mirrors the args of `POST /pages` (Phase B).
|
|
94
|
+
*
|
|
95
|
+
* Design pins:
|
|
96
|
+
* - `post_type` is intentionally NOT exposed. Layer 9 defensive guard
|
|
97
|
+
* on the REST side rejects it server-side; surfacing it at the MCP
|
|
98
|
+
* boundary would invite a footgun where an agent tries to set it
|
|
99
|
+
* and fails confusingly.
|
|
100
|
+
* - `status` defaults to `draft` on the server (Q6 design — no public
|
|
101
|
+
* empty page).
|
|
102
|
+
* - `dry_run` triggers validation Layers 1+2+4 without persisting.
|
|
103
|
+
*/
|
|
104
|
+
export const PAGES_CREATE_INPUT = {
|
|
105
|
+
title: z
|
|
106
|
+
.string()
|
|
107
|
+
.min(1)
|
|
108
|
+
.describe('Page title (required, byte-equal stored in post_title).'),
|
|
109
|
+
slug: z
|
|
110
|
+
.string()
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Optional explicit slug; defaults to sanitize_title($title).'),
|
|
113
|
+
status: z
|
|
114
|
+
.enum(['publish', 'draft', 'pending', 'private', 'future'])
|
|
115
|
+
.optional()
|
|
116
|
+
.describe('Initial post status. Default: draft (Q6 design — no public empty page).'),
|
|
117
|
+
layout: z
|
|
118
|
+
.record(z.string(), z.unknown())
|
|
119
|
+
.optional()
|
|
120
|
+
.describe('Optional initial YT layout. Default: {type:"layout",children:[]}.'),
|
|
121
|
+
dry_run: z
|
|
122
|
+
.boolean()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe('When true, runs validation Layers 1+2+4 without persisting.'),
|
|
125
|
+
// post_type intentionally NOT exposed — Layer 9 defensive guard rejects
|
|
126
|
+
// it server-side. Exposing it would invite footgun attempts.
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Wire shape for `yootheme_builder_pages_create` on success (non-dry-run).
|
|
130
|
+
*
|
|
131
|
+
* Mirrors the REST 201 response shape.
|
|
132
|
+
*
|
|
133
|
+
* Design pins:
|
|
134
|
+
* - `frontend_url` is nullable: REST returns null for fresh drafts
|
|
135
|
+
* before publish.
|
|
136
|
+
* - `template_id` is a plain string. The "page:{post_id}" prefix is
|
|
137
|
+
* enforced server-side; adding a `.startsWith()` here would buy no
|
|
138
|
+
* MCP-client value while adding Zod complexity.
|
|
139
|
+
* - `warnings` is a lean string array (e.g. "slug_collision_resolved"
|
|
140
|
+
* when WP auto-appends `-2`). The REST surface may expand this to
|
|
141
|
+
* richer objects in v1.3; strings keep the v1.2 surface minimal.
|
|
142
|
+
*/
|
|
143
|
+
export const PAGES_CREATE_OUTPUT_SCHEMA = z
|
|
144
|
+
.object({
|
|
145
|
+
// E1 cross-platform divergence: WP returns `page_id`, Joomla returns
|
|
146
|
+
// `article_id`. Both are positive ints; at least one is always present.
|
|
147
|
+
page_id: z.number().int().positive().optional(),
|
|
148
|
+
article_id: z.number().int().positive().optional(),
|
|
149
|
+
title: z.string(),
|
|
150
|
+
slug: z.string(),
|
|
151
|
+
status: z.string(),
|
|
152
|
+
frontend_url: z.string().nullable(),
|
|
153
|
+
template_id: z
|
|
154
|
+
.string()
|
|
155
|
+
.describe('Synthetic per-page template id, e.g. "page:3275" (WP) or "article:42" (Joomla).'),
|
|
156
|
+
etag: z.string(),
|
|
157
|
+
warnings: z
|
|
158
|
+
.array(z.string())
|
|
159
|
+
.describe('e.g. "slug_collision_resolved" when slug collision was resolved.'),
|
|
160
|
+
})
|
|
161
|
+
.refine((v) => typeof v.page_id === 'number' || typeof v.article_id === 'number', { message: 'response must contain either page_id (WP) or article_id (Joomla)' });
|
|
162
|
+
/**
|
|
163
|
+
* Wire shape for `yootheme_builder_pages_create` when `dry_run:true`.
|
|
164
|
+
*
|
|
165
|
+
* Design pin: NO `etag` field. The B6 fix-cycle decision was that
|
|
166
|
+
* surfacing a "live" ETag with a dry-run response invites a stale-
|
|
167
|
+
* If-Match footgun (caller pins the ETag, then non-dry-run mutates,
|
|
168
|
+
* stale ETag rejected with 412). Dry-run is validation-only.
|
|
169
|
+
*
|
|
170
|
+
* `template_id_pattern` is a literal — the actual `template_id` cannot
|
|
171
|
+
* be materialised before WP allocates the post_id.
|
|
172
|
+
*/
|
|
173
|
+
export const PAGES_CREATE_DRY_RUN_OUTPUT_SCHEMA = z.object({
|
|
174
|
+
dry_run: z.literal(true),
|
|
175
|
+
would_create: z.object({
|
|
176
|
+
title: z.string(),
|
|
177
|
+
slug: z.string(),
|
|
178
|
+
status: z.string(),
|
|
179
|
+
// E1 cross-platform divergence: WP returns 'page:{post_id}', Joomla returns 'article:{article_id}'.
|
|
180
|
+
template_id_pattern: z.enum(['page:{post_id}', 'article:{article_id}']),
|
|
181
|
+
}),
|
|
182
|
+
validation_report: z.object({
|
|
183
|
+
layer_1_structural: z.literal('passed'),
|
|
184
|
+
layer_2_element_types: z.literal('passed'),
|
|
185
|
+
layer_4_renderer: z.literal('passed'),
|
|
186
|
+
}),
|
|
187
|
+
// No `etag` field — by design (see B6 fix-cycle: stale-If-Match footgun).
|
|
188
|
+
});
|
|
189
|
+
/**
|
|
190
|
+
* Input shape for `yootheme_builder_pages_delete`.
|
|
191
|
+
*
|
|
192
|
+
* Mirrors the args of `DELETE /pages/{post_id}` (Phase B).
|
|
193
|
+
*
|
|
194
|
+
* Design pin: `confirm` is `z.literal(true)`. This is the Zod-side
|
|
195
|
+
* enforcement of the confirm gate — the MCP boundary rejects requests
|
|
196
|
+
* without `confirm:true` before they ever hit the REST layer.
|
|
197
|
+
*
|
|
198
|
+
* `force` defaults to false server-side → wp_delete_post(trash). When
|
|
199
|
+
* true → hard delete (irrecoverable).
|
|
200
|
+
*/
|
|
201
|
+
export const PAGES_DELETE_INPUT = {
|
|
202
|
+
post_id: z
|
|
203
|
+
.number()
|
|
204
|
+
.int()
|
|
205
|
+
.positive()
|
|
206
|
+
.describe('WP page post_id to delete.'),
|
|
207
|
+
confirm: z
|
|
208
|
+
.literal(true)
|
|
209
|
+
.describe('Must be true. Confirm gate prevents accidental deletes.'),
|
|
210
|
+
force: z
|
|
211
|
+
.boolean()
|
|
212
|
+
.optional()
|
|
213
|
+
.describe('If true, hard-deletes (wp_delete_post force=true). Default: trash (recoverable).'),
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* Wire shape for `yootheme_builder_pages_delete` on success.
|
|
217
|
+
*
|
|
218
|
+
* `deleted` is `z.literal(true)` — the success-response invariant. A
|
|
219
|
+
* failed delete surfaces as `isError:true` with a structured-error
|
|
220
|
+
* envelope, not as `deleted:false`.
|
|
221
|
+
*/
|
|
222
|
+
export const PAGES_DELETE_OUTPUT_SCHEMA = z
|
|
223
|
+
.object({
|
|
224
|
+
deleted: z.literal(true),
|
|
225
|
+
// E1 cross-platform divergence: WP returns page_id, Joomla returns article_id.
|
|
226
|
+
page_id: z.number().int().positive().optional(),
|
|
227
|
+
article_id: z.number().int().positive().optional(),
|
|
228
|
+
force_deleted: z.boolean(),
|
|
229
|
+
etag: z.string(),
|
|
230
|
+
})
|
|
231
|
+
.refine((v) => typeof v.page_id === 'number' || typeof v.article_id === 'number', { message: 'response must contain either page_id (WP) or article_id (Joomla)' });
|
|
82
232
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/pages/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-schemas.d.ts","sourceRoot":"","sources":["../../src/tools/shared-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW,aAKnB,CAAC;AASN,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"shared-schemas.d.ts","sourceRoot":"","sources":["../../src/tools/shared-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW,aAKnB,CAAC;AASN,eAAO,MAAM,YAAY,aAoBpB,CAAC;AAEN,eAAO,MAAM,IAAI,aAYZ,CAAC;AAEN,eAAO,MAAM,KAAK,wCAKb,CAAC;AAEN;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,4BAOtB,CAAC"}
|
|
@@ -22,7 +22,15 @@ export const TEMPLATE_ID = z
|
|
|
22
22
|
export const ELEMENT_PATH = z
|
|
23
23
|
.string()
|
|
24
24
|
.min(1)
|
|
25
|
-
.describe(
|
|
25
|
+
.describe(
|
|
26
|
+
// Wave-16 #34 (6.3): lead with the standard JSON-Pointer (RFC-6901)
|
|
27
|
+
// docstring so every element_path param across all tools opens with
|
|
28
|
+
// the canonical form + the enumerate-paths pointer. The F-102
|
|
29
|
+
// disambiguation (element_path vs the element_rel_path projection
|
|
30
|
+
// column) follows and stays load-bearing.
|
|
31
|
+
'JSON-Pointer (RFC-6901) style: /0/children/1. ' +
|
|
32
|
+
'Use yootheme_builder_element_list to enumerate valid paths. ' +
|
|
33
|
+
'Field name is `element_path` (NOT ' +
|
|
26
34
|
'`element_rel_path` — that is the projection column name on ' +
|
|
27
35
|
'`element_list` / `page_get_schema` output, not an input arg). ' +
|
|
28
36
|
'**`rel_path` VALUE from `element_list` is the preferred form** ' +
|
|
@@ -36,7 +44,12 @@ export const ETAG = z
|
|
|
36
44
|
.min(1)
|
|
37
45
|
.describe('Optimistic-lock ETag from yootheme_builder_get_etag. Required to ' +
|
|
38
46
|
'detect concurrent edits — call get_etag first, pass the value here. ' +
|
|
39
|
-
'On 412 Precondition Failed, re-fetch the ETag and retry.'
|
|
47
|
+
'On 412 Precondition Failed, re-fetch the ETag and retry. ' +
|
|
48
|
+
'Note (Wave-8 C2 2026-05-29): every successful write returns a NEW ' +
|
|
49
|
+
'ETag in the response body — use that next-ETag for the following ' +
|
|
50
|
+
'call, do NOT reuse the same value across multiple writes (the server ' +
|
|
51
|
+
'bumps a monotonic revision per persist, so byte-identical state ' +
|
|
52
|
+
'still surfaces as a distinct ETag).');
|
|
40
53
|
export const PROPS = z
|
|
41
54
|
.record(z.string(), z.unknown())
|
|
42
55
|
.describe('Element props object (e.g. `{title: "Hello", margin: "default"}`). ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-schemas.js","sourceRoot":"","sources":["../../src/tools/shared-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CACL,4EAA4E,CAC/E,CAAC;AAEN,oEAAoE;AACpE,qEAAqE;AACrE,qEAAqE;AACrE,+DAA+D;AAC/D,kEAAkE;AAClE,mEAAmE;AACnE,qBAAqB;AACrB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,
|
|
1
|
+
{"version":3,"file":"shared-schemas.js","sourceRoot":"","sources":["../../src/tools/shared-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CACL,4EAA4E,CAC/E,CAAC;AAEN,oEAAoE;AACpE,qEAAqE;AACrE,qEAAqE;AACrE,+DAA+D;AAC/D,kEAAkE;AAClE,mEAAmE;AACnE,qBAAqB;AACrB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ;AACL,oEAAoE;AACpE,oEAAoE;AACpE,8DAA8D;AAC9D,kEAAkE;AAClE,0CAA0C;AAC1C,gDAAgD;IAC5C,8DAA8D;IAC9D,oCAAoC;IACpC,6DAA6D;IAC7D,gEAAgE;IAChE,iEAAiE;IACjE,qEAAqE;IACrE,mEAAmE;IACnE,8DAA8D;IAC9D,iEAAiE;IACjE,yBAAyB,CAChC,CAAC;AAEN,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;KAChB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CACL,mEAAmE;IAC/D,sEAAsE;IACtE,2DAA2D;IAC3D,oEAAoE;IACpE,mEAAmE;IACnE,uEAAuE;IACvE,kEAAkE;IAClE,qCAAqC,CAC5C,CAAC;AAEN,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC;KACjB,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC/B,QAAQ,CACL,qEAAqE;IACjE,0EAA0E,CACjF,CAAC;AAEN;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE;KACnC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;KACd,KAAK,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;KAC7E,QAAQ,EAAE;KACV,QAAQ,CACL,+DAA+D;IAC/D,4DAA4D,CAC/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-bind.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/handlers-bind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"handlers-bind.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/handlers-bind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH,OAAO,EAIH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAgDxD,wBAAsB,uBAAuB,CACzC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,kBAAkB,EAC3C,KAAK,EAAE;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C,GACF,OAAO,CAAC,UAAU,CAAC,CAyGrB;AAID,wBAAsB,yBAAyB,CAC3C,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,kBAAkB,EAC3C,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACtF,OAAO,CAAC,UAAU,CAAC,CAoCrB"}
|
|
@@ -9,10 +9,35 @@
|
|
|
9
9
|
* @license MIT
|
|
10
10
|
*/
|
|
11
11
|
import { elicitChoice, elicitConfirmation } from '@getimo/mcp-toolkit';
|
|
12
|
-
import { encodeElementPath } from '../../client.js';
|
|
12
|
+
import { encodeElementPath, encodeTemplateId } from '../../client.js';
|
|
13
|
+
import { RestError } from '../../errors.js';
|
|
13
14
|
import { flattenSourcesPayload, mapSourceRow, } from '../format/sources-format.js';
|
|
14
15
|
import { ambiguityFallbackError, } from '../elicitation.js';
|
|
15
16
|
import { confirmGuard, errorResult, jsonResult, } from '../tool-builder.js';
|
|
17
|
+
/**
|
|
18
|
+
* Wave-12 F9 — extract validation-hint fields surfaced by the WP REST
|
|
19
|
+
* plugin when `source_name` is rejected (`unknown_source` code). The PHP
|
|
20
|
+
* controller writes `given`, `did_you_mean`, and `all_published_sources`
|
|
21
|
+
* into the WP_Error data; WordPress serialises that under the response
|
|
22
|
+
* body's `data` key. Surface those hints into the tool-result `context`
|
|
23
|
+
* so the agent can correct + retry in one step.
|
|
24
|
+
*/
|
|
25
|
+
function extractUnknownSourceHints(body) {
|
|
26
|
+
if (body === null || typeof body !== 'object')
|
|
27
|
+
return null;
|
|
28
|
+
const root = body;
|
|
29
|
+
if (root.code !== 'yootheme_builder_mcp.source_binding.unknown_source')
|
|
30
|
+
return null;
|
|
31
|
+
const data = root.data;
|
|
32
|
+
if (data === null || typeof data !== 'object')
|
|
33
|
+
return null;
|
|
34
|
+
const d = data;
|
|
35
|
+
return {
|
|
36
|
+
given: typeof d.given === 'string' ? d.given : undefined,
|
|
37
|
+
did_you_mean: d.did_you_mean,
|
|
38
|
+
all_published_sources: d.all_published_sources,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
16
41
|
// ─── element_bind_source (G.4.3 — ambiguity resolution) ─────────────
|
|
17
42
|
/**
|
|
18
43
|
* Look up sources matching `source_name`. Returns at most one row per
|
|
@@ -82,13 +107,40 @@ export async function handleElementBindSource({ client, elicitation }, input) {
|
|
|
82
107
|
resolvedBody = { ...resolvedBody, source_id };
|
|
83
108
|
}
|
|
84
109
|
try {
|
|
85
|
-
const data = await client.put(`/pages/${
|
|
110
|
+
const data = await client.put(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`, { body: resolvedBody, etag });
|
|
86
111
|
return jsonResult(data);
|
|
87
112
|
}
|
|
88
113
|
catch (e) {
|
|
114
|
+
// Wave-12 F9 — surface unknown-source hints directly into the
|
|
115
|
+
// result context so the agent can correct the source_name and
|
|
116
|
+
// retry in one step instead of guessing.
|
|
117
|
+
const baseContext = {
|
|
118
|
+
template_id,
|
|
119
|
+
element_path,
|
|
120
|
+
source_name,
|
|
121
|
+
...(source_id ? { source_id } : {}),
|
|
122
|
+
};
|
|
123
|
+
if (e instanceof RestError) {
|
|
124
|
+
const hints = extractUnknownSourceHints(e.body);
|
|
125
|
+
if (hints !== null) {
|
|
126
|
+
if (hints.did_you_mean !== undefined) {
|
|
127
|
+
baseContext.did_you_mean = hints.did_you_mean;
|
|
128
|
+
}
|
|
129
|
+
if (hints.all_published_sources !== undefined) {
|
|
130
|
+
baseContext.all_published_sources = hints.all_published_sources;
|
|
131
|
+
}
|
|
132
|
+
return errorResult({
|
|
133
|
+
error: e,
|
|
134
|
+
context: baseContext,
|
|
135
|
+
hint: 'source_name does not match any published source. Pick from ' +
|
|
136
|
+
'`all_published_sources` (full list) or `did_you_mean` (closest matches) ' +
|
|
137
|
+
'in the context, or run yootheme_builder_sources_list to refresh.',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
89
141
|
return errorResult({
|
|
90
142
|
error: e,
|
|
91
|
-
context:
|
|
143
|
+
context: baseContext,
|
|
92
144
|
hint: 'Verify source_name via yootheme_builder_sources_list. On 412 ' +
|
|
93
145
|
'refresh ETag and retry.',
|
|
94
146
|
});
|
|
@@ -115,7 +167,7 @@ export async function handleElementUnbindSource({ client, elicitation }, input)
|
|
|
115
167
|
}
|
|
116
168
|
const encoded = encodeElementPath(element_path);
|
|
117
169
|
try {
|
|
118
|
-
const data = await client.delete(`/pages/${
|
|
170
|
+
const data = await client.delete(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`, { etag });
|
|
119
171
|
return jsonResult(data);
|
|
120
172
|
}
|
|
121
173
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-bind.js","sourceRoot":"","sources":["../../../src/tools/sources/handlers-bind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAmB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers-bind.js","sourceRoot":"","sources":["../../../src/tools/sources/handlers-bind.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQvF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAOlE,OAAO,EAGH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,0BAA0B;;;;;;iBAOrC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;iBAKhC,CAAC;AAEH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACnD;AAID,wBAAsB,iBAAiB,CACnC,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAC9B,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC3C,OAAO,CAAC,UAAU,CAAC,CAyCrB;AAID,wBAAsB,uBAAuB,CACzC,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAC9B,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAID,OAAO,EACH,uBAAuB,EACvB,yBAAyB,GAC5B,MAAM,oBAAoB,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { detailResult, tableResult } from '@getimo/mcp-toolkit';
|
|
12
12
|
import { z } from 'zod';
|
|
13
|
-
import { encodeElementPath } from '../../client.js';
|
|
13
|
+
import { encodeElementPath, encodeTemplateId } from '../../client.js';
|
|
14
14
|
import { SOURCES_TABLE_COLUMNS, buildBindingDetail, flattenSourcesPayload, mapSourceRow, remapOriginForPlatform, } from '../format/sources-format.js';
|
|
15
15
|
import { DEFAULT_FIELDS_SOURCES_LIST, projectFields, projectedFieldsEcho, projectionFeedback, } from '../sparse-fields.js';
|
|
16
16
|
import { errorResult, structuredResult, } from '../tool-builder.js';
|
|
@@ -76,7 +76,7 @@ export async function handleSourcesList({ client }, { fields }) {
|
|
|
76
76
|
export async function handleElementGetBinding({ client }, { template_id, element_path }) {
|
|
77
77
|
const encoded = encodeElementPath(element_path);
|
|
78
78
|
try {
|
|
79
|
-
const data = await client.get(`/pages/${
|
|
79
|
+
const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements/${encoded}/binding`);
|
|
80
80
|
const binding = data !== null && typeof data === 'object' ? data : {};
|
|
81
81
|
// F-01-Mapping (Audit v4): trust the BE-computed `has_binding`
|
|
82
82
|
// flag (BindingSerializer SSoT) — it also flips true for an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/sources/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAmB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/sources/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `uninstall-skill` — the inverse of {@link installSkill}.
|
|
3
|
+
*
|
|
4
|
+
* Removes the bundled skill directory from the user's agent-skill folder
|
|
5
|
+
* (`~/.claude/skills/yt-builder-mcp/`, plus the legacy
|
|
6
|
+
* `~/.claude/skills/yootheme-builder/`) and strips the marker block this
|
|
7
|
+
* package appended to `~/AGENTS.md`.
|
|
8
|
+
*
|
|
9
|
+
* Idempotent + non-destructive to the user's own content: only OUR
|
|
10
|
+
* `## YT Builder MCP` marker section is removed from AGENTS.md; every
|
|
11
|
+
* other line the user wrote is preserved verbatim.
|
|
12
|
+
*
|
|
13
|
+
* @license MIT
|
|
14
|
+
*/
|
|
15
|
+
export interface UninstallSkillOptions {
|
|
16
|
+
/** Dir that holds the installed skill folder(s). Default `~/.claude/skills`. */
|
|
17
|
+
readonly targetSkillsDir?: string;
|
|
18
|
+
/** AGENTS.md file the marker block was appended to. Default `~/AGENTS.md`. */
|
|
19
|
+
readonly targetAgentsFile?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface UninstallSkillResult {
|
|
22
|
+
/** True when at least one skill directory was removed. */
|
|
23
|
+
readonly skillRemoved: boolean;
|
|
24
|
+
/** Absolute path of the canonical skill dir that was targeted. */
|
|
25
|
+
readonly skillTargetDir: string;
|
|
26
|
+
/** True when the marker block was stripped from AGENTS.md. */
|
|
27
|
+
readonly markerRemoved: boolean;
|
|
28
|
+
/** Absolute AGENTS.md path that was inspected / mutated. */
|
|
29
|
+
readonly agentsFile: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* True when a skill folder OR an AGENTS.md marker is present — used by
|
|
33
|
+
* the uninstall CLI to decide whether to surface the "remove skill"
|
|
34
|
+
* checkbox at all.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isSkillInstalled(opts?: UninstallSkillOptions): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Strip our `## YT Builder MCP` marker section from an AGENTS.md body.
|
|
39
|
+
*
|
|
40
|
+
* The block installSkill writes is:
|
|
41
|
+
*
|
|
42
|
+
* \n\n## YT Builder MCP\n\n<MARKER_LINE>\n<a few prose lines>\n
|
|
43
|
+
*
|
|
44
|
+
* It is always appended at EOF. We locate the `## YT Builder MCP`
|
|
45
|
+
* heading whose following lines contain {@link MARKER_LINE}, then remove
|
|
46
|
+
* from that heading (collapsing the blank lines that preceded it) up to
|
|
47
|
+
* the next top-level/section heading (`# ` or `## `) or EOF. Returns the
|
|
48
|
+
* cleaned body, or `null` when no marker block was found (no-op).
|
|
49
|
+
*/
|
|
50
|
+
export declare function stripMarkerBlock(body: string): string | null;
|
|
51
|
+
export declare function uninstallSkill(options?: UninstallSkillOptions): Promise<UninstallSkillResult>;
|
|
52
|
+
//# sourceMappingURL=uninstall-skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall-skill.d.ts","sourceRoot":"","sources":["../src/uninstall-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgBH,MAAM,WAAW,qBAAqB;IAClC,gFAAgF;IAChF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAUD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAc1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoD5D;AAED,wBAAsB,cAAc,CAChC,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
|