@wootsup/yt-builder-mcp 0.2.0-alpha.2 → 0.2.0-alpha.4
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 +17 -16
- package/dist/gateway/advanced-tool/domains.d.ts +6 -1
- package/dist/gateway/advanced-tool/domains.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/domains.js +7 -1
- package/dist/gateway/advanced-tool/domains.js.map +1 -1
- package/dist/gateway/essentials.d.ts +1 -1
- package/dist/gateway/essentials.d.ts.map +1 -1
- package/dist/gateway/essentials.js +5 -0
- package/dist/gateway/essentials.js.map +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/tools/format/elements-format.d.ts.map +1 -1
- package/dist/tools/format/elements-format.js +11 -3
- package/dist/tools/format/elements-format.js.map +1 -1
- package/dist/tools/format/pages-format.d.ts +4 -1
- package/dist/tools/format/pages-format.d.ts.map +1 -1
- package/dist/tools/format/pages-format.js +5 -2
- package/dist/tools/format/pages-format.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/multi-items/builders.d.ts +23 -0
- package/dist/tools/multi-items/builders.d.ts.map +1 -0
- package/dist/tools/multi-items/builders.js +56 -0
- package/dist/tools/multi-items/builders.js.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts +28 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.js +35 -0
- package/dist/tools/multi-items/clean-implode-handler.js.map +1 -0
- package/dist/tools/multi-items/index.d.ts +18 -0
- package/dist/tools/multi-items/index.d.ts.map +1 -0
- package/dist/tools/multi-items/index.js +18 -0
- package/dist/tools/multi-items/index.js.map +1 -0
- package/dist/tools/multi-items/inspect-handler.d.ts +41 -0
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/inspect-handler.js +45 -0
- package/dist/tools/multi-items/inspect-handler.js.map +1 -0
- package/dist/tools/multi-items/item-container-map.d.ts +41 -0
- package/dist/tools/multi-items/item-container-map.d.ts.map +1 -0
- package/dist/tools/multi-items/item-container-map.js +73 -0
- package/dist/tools/multi-items/item-container-map.js.map +1 -0
- package/dist/tools/pages/builders.d.ts.map +1 -1
- package/dist/tools/pages/builders.js +14 -8
- package/dist/tools/pages/builders.js.map +1 -1
- package/dist/tools/sources/builders.d.ts.map +1 -1
- package/dist/tools/sources/builders.js +17 -3
- package/dist/tools/sources/builders.js.map +1 -1
- package/dist/tools/sources/handlers-bind.d.ts +2 -0
- package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
- package/dist/tools/sources/handlers-bind.js +9 -3
- package/dist/tools/sources/handlers-bind.js.map +1 -1
- package/manifest.json +18 -16
- package/package.json +1 -1
- package/skills/yootheme-builder/SKILL.md +16 -12
package/README.md
CHANGED
|
@@ -58,39 +58,40 @@ The wizard auto-detects and configures the following clients:
|
|
|
58
58
|
|
|
59
59
|
## Tool surface — gateway model
|
|
60
60
|
|
|
61
|
-
The server registers **
|
|
61
|
+
The server registers **24 tools total**, but only **11 entries appear
|
|
62
62
|
in `tools/list`** (well under Cursor's ~40-tool cap):
|
|
63
63
|
|
|
64
64
|
- **2 direct top-level tools** (always in `tools/list`):
|
|
65
65
|
`yootheme_builder_health`, `yootheme_builder_diagnose` — the
|
|
66
66
|
"the gateway itself might be broken" escape hatch.
|
|
67
|
-
- **
|
|
67
|
+
- **8 essential forwarded tools** (always in `tools/list`): the most-
|
|
68
68
|
used reads and writes — `pages_list`, `get_etag`, `element_list`,
|
|
69
69
|
`element_add`, `element_update_settings`, `sources_list`,
|
|
70
|
-
`element_types_list`.
|
|
70
|
+
`element_types_list`, `inspect_multi_items_binding`.
|
|
71
71
|
- **1 gateway tool** (`yootheme_builder_advanced`): exposes the
|
|
72
|
-
remaining **
|
|
72
|
+
remaining **13 advanced tools** behind a single entry. Call
|
|
73
73
|
`yootheme_builder_advanced({ tool: "<name>" })` for discovery
|
|
74
74
|
(returns the schema) or `({ tool, arguments })` to execute.
|
|
75
|
-
- **
|
|
75
|
+
- **13 advanced tools** dispatched via the gateway (page_get_layout,
|
|
76
76
|
page_get_schema, page_save, page_publish, element_get,
|
|
77
77
|
element_move, element_clone, element_delete,
|
|
78
78
|
element_get_binding, element_bind_source, element_unbind_source,
|
|
79
|
-
element_type_get_schema).
|
|
79
|
+
clean_implode_directives, element_type_get_schema).
|
|
80
80
|
|
|
81
|
-
Total: **
|
|
81
|
+
Total: **23 domain tools + 1 gateway = 24**. Surface: **11 entries
|
|
82
82
|
in tools/list**. See `skills/yootheme-builder/SKILL.md` for the
|
|
83
83
|
full catalog and the 5 canonical workflows.
|
|
84
84
|
|
|
85
|
-
## Tool catalogue —
|
|
85
|
+
## Tool catalogue — 23 domain tools
|
|
86
86
|
|
|
87
|
-
| Domain
|
|
88
|
-
|
|
89
|
-
| Health
|
|
90
|
-
| Pages
|
|
91
|
-
| Elements
|
|
92
|
-
| Sources
|
|
93
|
-
|
|
|
87
|
+
| Domain | Count | Tools |
|
|
88
|
+
|-------------|------:|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
89
|
+
| Health | 2 | `health`, `diagnose` |
|
|
90
|
+
| Pages | 6 | `pages_list`, `page_get_layout`, `page_get_schema`, `get_etag`, `page_save`, `page_publish` |
|
|
91
|
+
| Elements | 7 | `element_list`, `element_get`, `element_add`, `element_update_settings`, `element_move`, `element_clone`, `element_delete` |
|
|
92
|
+
| Sources | 4 | `sources_list`, `element_get_binding`, `element_bind_source`, `element_unbind_source` |
|
|
93
|
+
| Multi-Items | 2 | `inspect_multi_items_binding`, `clean_implode_directives` |
|
|
94
|
+
| Inspection | 2 | `element_types_list`, `element_type_get_schema` |
|
|
94
95
|
|
|
95
96
|
All tool names are prefixed with `yootheme_builder_` at the MCP
|
|
96
97
|
server boundary.
|
|
@@ -118,7 +119,7 @@ client without per-client write logic.
|
|
|
118
119
|
|
|
119
120
|
The skill ships with the 5 canonical workflows (build hero, bind
|
|
120
121
|
source, clone section, diagnose 401, add custom element) plus a
|
|
121
|
-
|
|
122
|
+
23-tool auto-generated catalog appendix.
|
|
122
123
|
|
|
123
124
|
## DXT bundle — Claude Desktop one-click install
|
|
124
125
|
|
|
@@ -20,12 +20,17 @@ import type { AdvancedToolEntry } from '../capturing-server.js';
|
|
|
20
20
|
* from 8→4 (singular forms now route via DOMAIN_PREFIX_MAP, not
|
|
21
21
|
* duplicate entries). Pinned by `tests/gateway/domain-order.test.ts`.
|
|
22
22
|
*/
|
|
23
|
-
export declare const DOMAIN_ORDER: readonly ["pages", "elements", "sources", "inspection"];
|
|
23
|
+
export declare const DOMAIN_ORDER: readonly ["pages", "elements", "sources", "multi-items", "inspection"];
|
|
24
24
|
/**
|
|
25
25
|
* Prefix→domain routing table. Each domain accepts plural
|
|
26
26
|
* (`pages_list`) + singular (`page_save`, `element_add`, `source_…`)
|
|
27
27
|
* stems via `stem.startsWith(prefix + '_')` or full-equality. Anything
|
|
28
28
|
* outside the taxonomy falls through to 'misc'.
|
|
29
|
+
*
|
|
30
|
+
* The `multi-items` domain captures the YT-Pro Multi-Items binding
|
|
31
|
+
* pattern tools (inspect / clean-implode). Stems used:
|
|
32
|
+
* - `inspect_multi_items_binding` → starts with `inspect_multi_items`
|
|
33
|
+
* - `clean_implode_directives` → starts with `clean_implode`
|
|
29
34
|
*/
|
|
30
35
|
export declare const DOMAIN_PREFIX_MAP: Record<(typeof DOMAIN_ORDER)[number], readonly string[]>;
|
|
31
36
|
export declare const TOOL_PREFIX = "yootheme_builder_";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,wEAAyE,CAAC;AAEnG;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAMtF,CAAC;AAEF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAE/C,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAYxE;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAO7D;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAe5D;AAED,yFAAyF;AACzF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -19,17 +19,23 @@
|
|
|
19
19
|
* from 8→4 (singular forms now route via DOMAIN_PREFIX_MAP, not
|
|
20
20
|
* duplicate entries). Pinned by `tests/gateway/domain-order.test.ts`.
|
|
21
21
|
*/
|
|
22
|
-
export const DOMAIN_ORDER = ['pages', 'elements', 'sources', 'inspection'];
|
|
22
|
+
export const DOMAIN_ORDER = ['pages', 'elements', 'sources', 'multi-items', 'inspection'];
|
|
23
23
|
/**
|
|
24
24
|
* Prefix→domain routing table. Each domain accepts plural
|
|
25
25
|
* (`pages_list`) + singular (`page_save`, `element_add`, `source_…`)
|
|
26
26
|
* stems via `stem.startsWith(prefix + '_')` or full-equality. Anything
|
|
27
27
|
* outside the taxonomy falls through to 'misc'.
|
|
28
|
+
*
|
|
29
|
+
* The `multi-items` domain captures the YT-Pro Multi-Items binding
|
|
30
|
+
* pattern tools (inspect / clean-implode). Stems used:
|
|
31
|
+
* - `inspect_multi_items_binding` → starts with `inspect_multi_items`
|
|
32
|
+
* - `clean_implode_directives` → starts with `clean_implode`
|
|
28
33
|
*/
|
|
29
34
|
export const DOMAIN_PREFIX_MAP = {
|
|
30
35
|
pages: ['pages', 'page'],
|
|
31
36
|
elements: ['elements', 'element'],
|
|
32
37
|
sources: ['sources', 'source'],
|
|
38
|
+
'multi-items': ['inspect_multi_items', 'clean_implode'],
|
|
33
39
|
inspection: ['inspection'],
|
|
34
40
|
};
|
|
35
41
|
export const TOOL_PREFIX = 'yootheme_builder_';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../src/gateway/advanced-tool/domains.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* L1 — Tools kept as first-class entries in `tools/list`.
|
|
32
32
|
* Forwarded by the CapturingServer to the real McpServer.
|
|
33
33
|
*/
|
|
34
|
-
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"];
|
|
34
|
+
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"];
|
|
35
35
|
/**
|
|
36
36
|
* L3 — Tools registered DIRECTLY on the real McpServer, BEFORE the
|
|
37
37
|
* 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"essentials.d.ts","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,4SAalB,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"}
|
|
@@ -39,6 +39,11 @@ export const ESSENTIAL_TOOLS = [
|
|
|
39
39
|
'yootheme_builder_element_update_settings',
|
|
40
40
|
'yootheme_builder_sources_list',
|
|
41
41
|
'yootheme_builder_element_types_list',
|
|
42
|
+
// Multi-Items inspector — L1 discovery tool. Surfaces when a
|
|
43
|
+
// binding lives on the wrong (container) level and which `*_item`
|
|
44
|
+
// child should carry it. Frequent first-call when diagnosing
|
|
45
|
+
// Grid/Slider/Switcher rendering issues.
|
|
46
|
+
'yootheme_builder_inspect_multi_items_binding',
|
|
42
47
|
];
|
|
43
48
|
/**
|
|
44
49
|
* 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;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;
|
|
1
|
+
{"version":3,"file":"essentials.js","sourceRoot":"","sources":["../../src/gateway/essentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;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;CACxC,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"}
|
package/dist/install-skill.js
CHANGED
|
@@ -27,7 +27,7 @@ The YOOtheme Builder skill is installed at \`~/.claude/skills/yootheme-builder/\
|
|
|
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 24 MCP tools (23 domain + 1 gateway, 11 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.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elements-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/elements-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"elements-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/elements-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOpE,eAAO,MAAM,sBAAsB,EAAE,SAAS,WAAW,EAKxD,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,EAAE,SAAS,WAAW,EAG1D,CAAC;AAcF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBrF;AAID,UAAU,gBAAgB;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAoBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA4C5C"}
|
|
@@ -5,15 +5,18 @@
|
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
7
7
|
// ─── Element-list columns (Design §3.2 row 9) ────────────────────────
|
|
8
|
+
// F-06: PATH column widened to 64 chars + 'rel_path' shows just the
|
|
9
|
+
// template-layout suffix so every row stays uniquely identifiable in
|
|
10
|
+
// the text table. Full path remains available in structuredContent.
|
|
8
11
|
export const ELEMENTS_TABLE_COLUMNS = [
|
|
9
|
-
{ key: '
|
|
12
|
+
{ key: 'rel_path', label: 'PATH', width: 48, llmOnly: true },
|
|
10
13
|
{ key: 'element_type', label: 'TYPE', width: 16 },
|
|
11
14
|
{ key: 'label', label: 'LABEL', width: 28 },
|
|
12
15
|
{ key: 'has_binding', label: 'BIND', width: 8 },
|
|
13
16
|
];
|
|
14
17
|
/** Compact columns kick in at 21+ rows — keep path + type only. */
|
|
15
18
|
export const ELEMENTS_COMPACT_COLUMNS = [
|
|
16
|
-
{ key: '
|
|
19
|
+
{ key: 'rel_path', label: 'PATH', width: 48, llmOnly: true },
|
|
17
20
|
{ key: 'element_type', label: 'TYPE', width: 16 },
|
|
18
21
|
];
|
|
19
22
|
// ─── Row mapper ──────────────────────────────────────────────────────
|
|
@@ -39,8 +42,13 @@ export function mapElementRow(input) {
|
|
|
39
42
|
? asString(input.label)
|
|
40
43
|
: asString(input.title);
|
|
41
44
|
const explicitBinding = typeof input.has_binding === 'boolean' ? input.has_binding : undefined;
|
|
45
|
+
const path = asString(input.path);
|
|
46
|
+
// F-06: derive relative path by stripping `/templates/<id>/layout` prefix
|
|
47
|
+
// so the LLM table column shows uniquely-identifying suffix.
|
|
48
|
+
const relPath = path.replace(/^\/templates\/[^/]+\/layout/, '') || '/';
|
|
42
49
|
return {
|
|
43
|
-
path
|
|
50
|
+
path,
|
|
51
|
+
rel_path: relPath,
|
|
44
52
|
element_type: asString(input.element_type),
|
|
45
53
|
label,
|
|
46
54
|
has_binding: explicitBinding ?? hasSourceBinding(input.props),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elements-format.js","sourceRoot":"","sources":["../../../src/tools/format/elements-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wEAAwE;
|
|
1
|
+
{"version":3,"file":"elements-format.js","sourceRoot":"","sources":["../../../src/tools/format/elements-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,10 @@ export declare const SCHEMA_TABLE_COLUMNS: readonly TableColumn[];
|
|
|
23
23
|
* `resolveDetailLevel` short-circuits when given a direct level).
|
|
24
24
|
*/
|
|
25
25
|
export declare const SCHEMA_COMPACT_COLUMNS: readonly TableColumn[];
|
|
26
|
-
/** Maps an `/pages` element to the table row shape. Missing fields default to empty.
|
|
26
|
+
/** Maps an `/pages` element to the table row shape. Missing fields default to empty.
|
|
27
|
+
* REST returns `name` (YOOtheme's internal field name); we surface it as `label`
|
|
28
|
+
* for LLM-friendly schemas. The legacy `label` fallback is for forward-compat
|
|
29
|
+
* if the backend ever switches naming. */
|
|
27
30
|
export declare function mapPageRow(input: Record<string, unknown>): Record<string, unknown>;
|
|
28
31
|
/** Maps a `/pages/{id}/schema` node to the table row shape. */
|
|
29
32
|
export declare function mapSchemaNodeRow(input: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/pages-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIpE,qCAAqC;AACrC,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAMrD,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAIvD,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,SAAS,WAAW,EAKtD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,WAAW,EAIxD,CAAC;AAgBF
|
|
1
|
+
{"version":3,"file":"pages-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/pages-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIpE,qCAAqC;AACrC,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAMrD,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAIvD,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,SAAS,WAAW,EAKtD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,WAAW,EAIxD,CAAC;AAgBF;;;2CAG2C;AAC3C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQlF;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOxF;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAC3B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3B;AAID,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CA4B5B"}
|
|
@@ -53,11 +53,14 @@ function asInt(v) {
|
|
|
53
53
|
function asBool(v) {
|
|
54
54
|
return v === true;
|
|
55
55
|
}
|
|
56
|
-
/** Maps an `/pages` element to the table row shape. Missing fields default to empty.
|
|
56
|
+
/** Maps an `/pages` element to the table row shape. Missing fields default to empty.
|
|
57
|
+
* REST returns `name` (YOOtheme's internal field name); we surface it as `label`
|
|
58
|
+
* for LLM-friendly schemas. The legacy `label` fallback is for forward-compat
|
|
59
|
+
* if the backend ever switches naming. */
|
|
57
60
|
export function mapPageRow(input) {
|
|
58
61
|
return {
|
|
59
62
|
id: asString(input.id),
|
|
60
|
-
label: asString(input.label),
|
|
63
|
+
label: asString(input.name ?? input.label),
|
|
61
64
|
type: asString(input.type),
|
|
62
65
|
elements_count: asInt(input.elements_count),
|
|
63
66
|
modified_at: asString(input.modified_at),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages-format.js","sourceRoot":"","sources":["../../../src/tools/format/pages-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,wEAAwE;AAExE,qCAAqC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACvD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACpD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1C,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACzC,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;IACjE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;CACvD,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IACzD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACpD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1C,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;CACpE,CAAC;AAEF,wEAAwE;AAExE,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IACxD,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACxD,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACjD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3C,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;CAClD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC1D,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACxD,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACjD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;CAC9C,CAAC;AAEF,wEAAwE;AAExE,SAAS,QAAQ,CAAC,CAAU;IACxB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,KAAK,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,MAAM,CAAC,CAAU;IACtB,OAAO,CAAC,KAAK,IAAI,CAAC;AACtB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"pages-format.js","sourceRoot":"","sources":["../../../src/tools/format/pages-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAMjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACnD;AAED,wBAAgB,aAAa,CACzB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,oBAAyB,GACnC,SAAS,iBAAiB,EAAE,CAU9B;AAED,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { buildElementsTools } from './elements/index.js';
|
|
9
9
|
import { buildHealthTools } from './health.js';
|
|
10
10
|
import { buildInspectionTools } from './inspection.js';
|
|
11
|
+
import { buildMultiItemsTools } from './multi-items/index.js';
|
|
11
12
|
import { buildPagesTools } from './pages.js';
|
|
12
13
|
import { buildSourcesTools } from './sources/index.js';
|
|
13
14
|
export function buildAllTools(client, options = {}) {
|
|
@@ -17,6 +18,7 @@ export function buildAllTools(client, options = {}) {
|
|
|
17
18
|
...buildPagesTools(client),
|
|
18
19
|
...buildElementsTools(client, deps),
|
|
19
20
|
...buildSourcesTools(client, deps),
|
|
21
|
+
...buildMultiItemsTools(client),
|
|
20
22
|
...buildInspectionTools(client),
|
|
21
23
|
];
|
|
22
24
|
}
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAcvD,MAAM,UAAU,aAAa,CACzB,MAAkB,EAClB,UAAgC,EAAE;IAElC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO;QACH,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,eAAe,CAAC,MAAM,CAAC;QAC1B,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;QAClC,GAAG,oBAAoB,CAAC,MAAM,CAAC;KAClC,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAcvD,MAAM,UAAU,aAAa,CACzB,MAAkB,EAClB,UAAgC,EAAE;IAElC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO;QACH,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,eAAe,CAAC,MAAM,CAAC;QAC1B,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;QAClC,GAAG,oBAAoB,CAAC,MAAM,CAAC;QAC/B,GAAG,oBAAoB,CAAC,MAAM,CAAC;KAClC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Items tool builders.
|
|
3
|
+
*
|
|
4
|
+
* Surfaces two tools that operate on the YT-Pro Multi-Items binding
|
|
5
|
+
* pattern (container ↔ `*_item` pairings — see
|
|
6
|
+
* `./item-container-map.ts`):
|
|
7
|
+
*
|
|
8
|
+
* yootheme_builder_inspect_multi_items_binding
|
|
9
|
+
* → Reports the binding level (none/container/item), the matching
|
|
10
|
+
* container/item pair, and whether legacy implode directives are
|
|
11
|
+
* attached. Surfaces a `recommended_fix` when the binding sits on
|
|
12
|
+
* the container level.
|
|
13
|
+
*
|
|
14
|
+
* yootheme_builder_clean_implode_directives
|
|
15
|
+
* → Removes every `props.source.props.*.implode` directive from
|
|
16
|
+
* the addressed element. Returns the audit log + new etag.
|
|
17
|
+
*
|
|
18
|
+
* @license MIT
|
|
19
|
+
*/
|
|
20
|
+
import type { RestClient } from '../../client.js';
|
|
21
|
+
import { type AnyToolDefinition } from '../tool-builder.js';
|
|
22
|
+
export declare function buildMultiItemsTools(client: RestClient): readonly AnyToolDefinition[];
|
|
23
|
+
//# sourceMappingURL=builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAIH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;AAW5B,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,iBAAiB,EAAE,CAmCrF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Items tool builders.
|
|
3
|
+
*
|
|
4
|
+
* Surfaces two tools that operate on the YT-Pro Multi-Items binding
|
|
5
|
+
* pattern (container ↔ `*_item` pairings — see
|
|
6
|
+
* `./item-container-map.ts`):
|
|
7
|
+
*
|
|
8
|
+
* yootheme_builder_inspect_multi_items_binding
|
|
9
|
+
* → Reports the binding level (none/container/item), the matching
|
|
10
|
+
* container/item pair, and whether legacy implode directives are
|
|
11
|
+
* attached. Surfaces a `recommended_fix` when the binding sits on
|
|
12
|
+
* the container level.
|
|
13
|
+
*
|
|
14
|
+
* yootheme_builder_clean_implode_directives
|
|
15
|
+
* → Removes every `props.source.props.*.implode` directive from
|
|
16
|
+
* the addressed element. Returns the audit log + new etag.
|
|
17
|
+
*
|
|
18
|
+
* @license MIT
|
|
19
|
+
*/
|
|
20
|
+
import { ELEMENT_PATH, ETAG, TEMPLATE_ID } from '../shared-schemas.js';
|
|
21
|
+
import { defineTool, mutating, readOnly, } from '../tool-builder.js';
|
|
22
|
+
import { CLEAN_IMPLODE_OUTPUT_SCHEMA, handleCleanImplodeDirectives, } from './clean-implode-handler.js';
|
|
23
|
+
import { INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA, handleInspectMultiItemsBinding, } from './inspect-handler.js';
|
|
24
|
+
export function buildMultiItemsTools(client) {
|
|
25
|
+
const deps = { client };
|
|
26
|
+
return [
|
|
27
|
+
defineTool({
|
|
28
|
+
name: 'yootheme_builder_inspect_multi_items_binding',
|
|
29
|
+
description: 'Reports Multi-Items binding state: container/item pair (grid↔grid_item, ' +
|
|
30
|
+
'slideshow↔slideshow_item, …), current binding level (none|container|item), ' +
|
|
31
|
+
'and a recommended_fix when the binding sits on the container instead of the child.',
|
|
32
|
+
inputSchema: {
|
|
33
|
+
template_id: TEMPLATE_ID,
|
|
34
|
+
element_path: ELEMENT_PATH,
|
|
35
|
+
},
|
|
36
|
+
outputSchema: INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA,
|
|
37
|
+
annotations: readOnly('Inspect Multi-Items Binding'),
|
|
38
|
+
handler: (input) => handleInspectMultiItemsBinding(deps, input),
|
|
39
|
+
}),
|
|
40
|
+
defineTool({
|
|
41
|
+
name: 'yootheme_builder_clean_implode_directives',
|
|
42
|
+
description: 'Strips `props.source.props.*.implode` directives from an element binding. ' +
|
|
43
|
+
'Returns audit log + new ETag. Idempotent (cleaned_count: 0 when nothing to ' +
|
|
44
|
+
'remove). Requires ETag.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
template_id: TEMPLATE_ID,
|
|
47
|
+
element_path: ELEMENT_PATH,
|
|
48
|
+
etag: ETAG,
|
|
49
|
+
},
|
|
50
|
+
outputSchema: CLEAN_IMPLODE_OUTPUT_SCHEMA,
|
|
51
|
+
annotations: mutating('Clean Implode Directives'),
|
|
52
|
+
handler: (input) => handleCleanImplodeDirectives(deps, input),
|
|
53
|
+
}),
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/multi-items/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACH,UAAU,EACV,QAAQ,EACR,QAAQ,GAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,iCAAiC,EACjC,8BAA8B,GAEjC,MAAM,sBAAsB,CAAC;AAE9B,MAAM,UAAU,oBAAoB,CAAC,MAAkB;IACnD,MAAM,IAAI,GAA0B,EAAE,MAAM,EAAE,CAAC;IAE/C,OAAO;QACH,UAAU,CAAC;YACP,IAAI,EAAE,8CAA8C;YACpD,WAAW,EACP,0EAA0E;gBAC1E,6EAA6E;gBAC7E,oFAAoF;YACxF,WAAW,EAAE;gBACT,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,YAAY;aAC7B;YACD,YAAY,EAAE,iCAAiC;YAC/C,WAAW,EAAE,QAAQ,CAAC,6BAA6B,CAAC;YACpD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC;SAClE,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,2CAA2C;YACjD,WAAW,EACP,4EAA4E;gBAC5E,6EAA6E;gBAC7E,yBAAyB;YAC7B,WAAW,EAAE;gBACT,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,IAAI;aACb;YACD,YAAY,EAAE,2BAA2B;YACzC,WAAW,EAAE,QAAQ,CAAC,0BAA0B,CAAC;YACjD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;SAChE,CAAC;KACL,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `clean_implode_directives` handler — strip `props.source.props.*.implode`
|
|
3
|
+
* directives from an element binding via REST round-trip.
|
|
4
|
+
*
|
|
5
|
+
* @license MIT
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { type RestClient } from '../../client.js';
|
|
9
|
+
import { type ToolResult } from '../tool-builder.js';
|
|
10
|
+
export declare const CLEAN_IMPLODE_OUTPUT_SCHEMA: z.ZodObject<{
|
|
11
|
+
template_id: z.ZodString;
|
|
12
|
+
element_path: z.ZodString;
|
|
13
|
+
cleaned_count: z.ZodNumber;
|
|
14
|
+
removed_directives: z.ZodArray<z.ZodObject<{
|
|
15
|
+
prop_name: z.ZodString;
|
|
16
|
+
directive: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
17
|
+
}, z.core.$strip>>;
|
|
18
|
+
new_etag: z.ZodString;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
export interface CleanImplodeHandlerDeps {
|
|
21
|
+
readonly client: RestClient;
|
|
22
|
+
}
|
|
23
|
+
export declare function handleCleanImplodeDirectives({ client }: CleanImplodeHandlerDeps, { template_id, element_path, etag, }: {
|
|
24
|
+
template_id: string;
|
|
25
|
+
element_path: string;
|
|
26
|
+
etag: string;
|
|
27
|
+
}): Promise<ToolResult>;
|
|
28
|
+
//# sourceMappingURL=clean-implode-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean-implode-handler.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/clean-implode-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE9E,eAAO,MAAM,2BAA2B;;;;;;;;;iBAWtC,CAAC;AAEH,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC/B;AAED,wBAAsB,4BAA4B,CAC9C,EAAE,MAAM,EAAE,EAAE,uBAAuB,EACnC,EACI,WAAW,EACX,YAAY,EACZ,IAAI,GACP,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/D,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `clean_implode_directives` handler — strip `props.source.props.*.implode`
|
|
3
|
+
* directives from an element binding via REST round-trip.
|
|
4
|
+
*
|
|
5
|
+
* @license MIT
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { encodeElementPath } from '../../client.js';
|
|
9
|
+
import { errorResult, jsonResult } from '../tool-builder.js';
|
|
10
|
+
export const CLEAN_IMPLODE_OUTPUT_SCHEMA = z.object({
|
|
11
|
+
template_id: z.string(),
|
|
12
|
+
element_path: z.string(),
|
|
13
|
+
cleaned_count: z.number(),
|
|
14
|
+
removed_directives: z.array(z.object({
|
|
15
|
+
prop_name: z.string(),
|
|
16
|
+
directive: z.record(z.string(), z.unknown()),
|
|
17
|
+
})),
|
|
18
|
+
new_etag: z.string(),
|
|
19
|
+
});
|
|
20
|
+
export async function handleCleanImplodeDirectives({ client }, { template_id, element_path, etag, }) {
|
|
21
|
+
const encoded = encodeElementPath(element_path);
|
|
22
|
+
try {
|
|
23
|
+
const data = await client.post(`/pages/${encodeURIComponent(template_id)}/elements/${encoded}/multi-items/clean-implode`, { body: {}, etag });
|
|
24
|
+
return jsonResult(data);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
return errorResult({
|
|
28
|
+
error: e,
|
|
29
|
+
context: { template_id, element_path },
|
|
30
|
+
hint: 'On 412 refresh via yootheme_builder_get_etag and retry. On 404 verify the ' +
|
|
31
|
+
'element_path via yootheme_builder_element_list.',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=clean-implode-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean-implode-handler.js","sourceRoot":"","sources":["../../../src/tools/multi-items/clean-implode-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AAE9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,kBAAkB,EAAE,CAAC,CAAC,KAAK,CACvB,CAAC,CAAC,MAAM,CAAC;QACL,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC/C,CAAC,CACL;IACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAMH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAC9C,EAAE,MAAM,EAA2B,EACnC,EACI,WAAW,EACX,YAAY,EACZ,IAAI,GACsD;IAE9D,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1B,UAAU,kBAAkB,CAAC,WAAW,CAAC,aAAa,OAAO,4BAA4B,EACzF,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CACrB,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;YACtC,IAAI,EACA,4EAA4E;gBAC5E,iDAAiD;SACxD,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Items tool barrel — public entry-point for the YT-Pro
|
|
3
|
+
* Multi-Items binding pattern tools.
|
|
4
|
+
*
|
|
5
|
+
* yootheme_builder_inspect_multi_items_binding
|
|
6
|
+
* → Report the Multi-Items binding state for an element.
|
|
7
|
+
*
|
|
8
|
+
* yootheme_builder_clean_implode_directives
|
|
9
|
+
* → Remove legacy implode directives from an element binding.
|
|
10
|
+
*
|
|
11
|
+
* The canonical container ↔ item map lives in `./item-container-map.ts`
|
|
12
|
+
* (mirror of `WootsUp\BuilderMcp\Elements\ItemContainerMap`).
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
export { buildMultiItemsTools } from './builders.js';
|
|
17
|
+
export { ITEM_CHILDREN_OF_CONTAINER, containerOf, isContainer, isItem, itemOf, } from './item-container-map.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACH,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,GACT,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Items tool barrel — public entry-point for the YT-Pro
|
|
3
|
+
* Multi-Items binding pattern tools.
|
|
4
|
+
*
|
|
5
|
+
* yootheme_builder_inspect_multi_items_binding
|
|
6
|
+
* → Report the Multi-Items binding state for an element.
|
|
7
|
+
*
|
|
8
|
+
* yootheme_builder_clean_implode_directives
|
|
9
|
+
* → Remove legacy implode directives from an element binding.
|
|
10
|
+
*
|
|
11
|
+
* The canonical container ↔ item map lives in `./item-container-map.ts`
|
|
12
|
+
* (mirror of `WootsUp\BuilderMcp\Elements\ItemContainerMap`).
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
export { buildMultiItemsTools } from './builders.js';
|
|
17
|
+
export { ITEM_CHILDREN_OF_CONTAINER, containerOf, isContainer, isItem, itemOf, } from './item-container-map.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/multi-items/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACH,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,GACT,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `inspect_multi_items_binding` handler — surfaces Multi-Items binding
|
|
3
|
+
* state on an element via REST round-trip.
|
|
4
|
+
*
|
|
5
|
+
* Companion of the PHP `MultiItemsInspector` — see
|
|
6
|
+
* src/modules/builder-source-binding/src/MultiItemsInspector.php
|
|
7
|
+
* for the report shape.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import { type RestClient } from '../../client.js';
|
|
13
|
+
import { type ToolResult } from '../tool-builder.js';
|
|
14
|
+
export declare const INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA: z.ZodObject<{
|
|
15
|
+
template_id: z.ZodString;
|
|
16
|
+
report: z.ZodObject<{
|
|
17
|
+
element_path: z.ZodString;
|
|
18
|
+
element_type: z.ZodString;
|
|
19
|
+
is_container: z.ZodBoolean;
|
|
20
|
+
is_item: z.ZodBoolean;
|
|
21
|
+
container_type: z.ZodNullable<z.ZodString>;
|
|
22
|
+
item_type: z.ZodNullable<z.ZodString>;
|
|
23
|
+
current_binding_level: z.ZodEnum<{
|
|
24
|
+
none: "none";
|
|
25
|
+
container: "container";
|
|
26
|
+
item: "item";
|
|
27
|
+
}>;
|
|
28
|
+
has_implode_directives: z.ZodBoolean;
|
|
29
|
+
warning: z.ZodOptional<z.ZodString>;
|
|
30
|
+
recommended_fix: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
etag: z.ZodString;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export interface MultiItemsHandlerDeps {
|
|
35
|
+
readonly client: RestClient;
|
|
36
|
+
}
|
|
37
|
+
export declare function handleInspectMultiItemsBinding({ client }: MultiItemsHandlerDeps, { template_id, element_path }: {
|
|
38
|
+
template_id: string;
|
|
39
|
+
element_path: string;
|
|
40
|
+
}): Promise<ToolResult>;
|
|
41
|
+
//# sourceMappingURL=inspect-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-handler.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/inspect-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE9E,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;iBAe5C,CAAC;AAEH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC/B;AAED,wBAAsB,8BAA8B,CAChD,EAAE,MAAM,EAAE,EAAE,qBAAqB,EACjC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,CAAC,CAgBrB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `inspect_multi_items_binding` handler — surfaces Multi-Items binding
|
|
3
|
+
* state on an element via REST round-trip.
|
|
4
|
+
*
|
|
5
|
+
* Companion of the PHP `MultiItemsInspector` — see
|
|
6
|
+
* src/modules/builder-source-binding/src/MultiItemsInspector.php
|
|
7
|
+
* for the report shape.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import { encodeElementPath } from '../../client.js';
|
|
13
|
+
import { errorResult, jsonResult } from '../tool-builder.js';
|
|
14
|
+
export const INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA = z.object({
|
|
15
|
+
template_id: z.string(),
|
|
16
|
+
report: z.object({
|
|
17
|
+
element_path: z.string(),
|
|
18
|
+
element_type: z.string(),
|
|
19
|
+
is_container: z.boolean(),
|
|
20
|
+
is_item: z.boolean(),
|
|
21
|
+
container_type: z.string().nullable(),
|
|
22
|
+
item_type: z.string().nullable(),
|
|
23
|
+
current_binding_level: z.enum(['none', 'container', 'item']),
|
|
24
|
+
has_implode_directives: z.boolean(),
|
|
25
|
+
warning: z.string().optional(),
|
|
26
|
+
recommended_fix: z.string().optional(),
|
|
27
|
+
}),
|
|
28
|
+
etag: z.string(),
|
|
29
|
+
});
|
|
30
|
+
export async function handleInspectMultiItemsBinding({ client }, { template_id, element_path }) {
|
|
31
|
+
const encoded = encodeElementPath(element_path);
|
|
32
|
+
try {
|
|
33
|
+
const data = await client.get(`/pages/${encodeURIComponent(template_id)}/elements/${encoded}/multi-items/inspect`);
|
|
34
|
+
return jsonResult(data);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
return errorResult({
|
|
38
|
+
error: e,
|
|
39
|
+
context: { template_id, element_path },
|
|
40
|
+
hint: 'Verify element_path via yootheme_builder_element_list. Paths are JSON-Pointer ' +
|
|
41
|
+
'style ("/templates/<id>/layout/children/0").',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=inspect-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-handler.js","sourceRoot":"","sources":["../../../src/tools/multi-items/inspect-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AAE9E,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;QACzB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE;QACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACzC,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAMH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAChD,EAAE,MAAM,EAAyB,EACjC,EAAE,WAAW,EAAE,YAAY,EAAiD;IAE5E,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CACzB,UAAU,kBAAkB,CAAC,WAAW,CAAC,aAAa,OAAO,sBAAsB,CACtF,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;YACtC,IAAI,EACA,gFAAgF;gBAChF,8CAA8C;SACrD,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Items pattern — TypeScript mirror of the PHP
|
|
3
|
+
* `WootsUp\BuilderMcp\Elements\ItemContainerMap` constant.
|
|
4
|
+
*
|
|
5
|
+
* YT-Pro 4.5.33+ implements `SourceTransform::repeatSource` which
|
|
6
|
+
* clones the *source-bearing element* N-times as siblings inside its
|
|
7
|
+
* parent. For "1 container with N children" the binding MUST live on
|
|
8
|
+
* the `*_item` child element, NEVER on the container.
|
|
9
|
+
*
|
|
10
|
+
* The PHP and TS maps MUST stay in lock-step — both files carry a
|
|
11
|
+
* pin-test that fails if the canonical pairings drift.
|
|
12
|
+
*
|
|
13
|
+
* @license MIT
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Live-verified against `themes/yootheme/packages/builder/elements/
|
|
17
|
+
* *_item/` on YT-Pro 4.5.33 (dev server, 2026-05-22). 16 pairs total.
|
|
18
|
+
*
|
|
19
|
+
* NB: There is NO `slider` / `slider_item` pair on YT-Pro 4.5.33 — the
|
|
20
|
+
* YT slider/carousel widgets render via `slideshow`, `overlay-slider`,
|
|
21
|
+
* and `panel-slider`.
|
|
22
|
+
*/
|
|
23
|
+
export declare const ITEM_CHILDREN_OF_CONTAINER: Readonly<Record<string, string>>;
|
|
24
|
+
/**
|
|
25
|
+
* Surface the `*_item` child type for a known container, or null when
|
|
26
|
+
* the input is not a known multi-item container.
|
|
27
|
+
*/
|
|
28
|
+
export declare function itemOf(containerType: string): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Surface the container type for a known `*_item`, or null otherwise.
|
|
31
|
+
*/
|
|
32
|
+
export declare function containerOf(itemType: string): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* `true` when $type is one of the multi-item-capable containers.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isContainer(type: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* `true` when $type is a `*_item` child of a multi-item container.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isItem(type: string): boolean;
|
|
41
|
+
//# sourceMappingURL=item-container-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-container-map.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-items/item-container-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBtE,CAAC;AAEH;;;GAGG;AACH,wBAAgB,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5C"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Items pattern — TypeScript mirror of the PHP
|
|
3
|
+
* `WootsUp\BuilderMcp\Elements\ItemContainerMap` constant.
|
|
4
|
+
*
|
|
5
|
+
* YT-Pro 4.5.33+ implements `SourceTransform::repeatSource` which
|
|
6
|
+
* clones the *source-bearing element* N-times as siblings inside its
|
|
7
|
+
* parent. For "1 container with N children" the binding MUST live on
|
|
8
|
+
* the `*_item` child element, NEVER on the container.
|
|
9
|
+
*
|
|
10
|
+
* The PHP and TS maps MUST stay in lock-step — both files carry a
|
|
11
|
+
* pin-test that fails if the canonical pairings drift.
|
|
12
|
+
*
|
|
13
|
+
* @license MIT
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Live-verified against `themes/yootheme/packages/builder/elements/
|
|
17
|
+
* *_item/` on YT-Pro 4.5.33 (dev server, 2026-05-22). 16 pairs total.
|
|
18
|
+
*
|
|
19
|
+
* NB: There is NO `slider` / `slider_item` pair on YT-Pro 4.5.33 — the
|
|
20
|
+
* YT slider/carousel widgets render via `slideshow`, `overlay-slider`,
|
|
21
|
+
* and `panel-slider`.
|
|
22
|
+
*/
|
|
23
|
+
export const ITEM_CHILDREN_OF_CONTAINER = Object.freeze({
|
|
24
|
+
accordion: 'accordion_item',
|
|
25
|
+
button: 'button_item',
|
|
26
|
+
description_list: 'description_list_item',
|
|
27
|
+
gallery: 'gallery_item',
|
|
28
|
+
grid: 'grid_item',
|
|
29
|
+
list: 'list_item',
|
|
30
|
+
map: 'map_item',
|
|
31
|
+
nav: 'nav_item',
|
|
32
|
+
'overlay-slider': 'overlay-slider_item',
|
|
33
|
+
'panel-slider': 'panel-slider_item',
|
|
34
|
+
popover: 'popover_item',
|
|
35
|
+
slideshow: 'slideshow_item',
|
|
36
|
+
social: 'social_item',
|
|
37
|
+
subnav: 'subnav_item',
|
|
38
|
+
switcher: 'switcher_item',
|
|
39
|
+
table: 'table_item',
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* Surface the `*_item` child type for a known container, or null when
|
|
43
|
+
* the input is not a known multi-item container.
|
|
44
|
+
*/
|
|
45
|
+
export function itemOf(containerType) {
|
|
46
|
+
return Object.prototype.hasOwnProperty.call(ITEM_CHILDREN_OF_CONTAINER, containerType)
|
|
47
|
+
? ITEM_CHILDREN_OF_CONTAINER[containerType]
|
|
48
|
+
: null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Surface the container type for a known `*_item`, or null otherwise.
|
|
52
|
+
*/
|
|
53
|
+
export function containerOf(itemType) {
|
|
54
|
+
for (const [container, item] of Object.entries(ITEM_CHILDREN_OF_CONTAINER)) {
|
|
55
|
+
if (item === itemType) {
|
|
56
|
+
return container;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `true` when $type is one of the multi-item-capable containers.
|
|
63
|
+
*/
|
|
64
|
+
export function isContainer(type) {
|
|
65
|
+
return Object.prototype.hasOwnProperty.call(ITEM_CHILDREN_OF_CONTAINER, type);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `true` when $type is a `*_item` child of a multi-item container.
|
|
69
|
+
*/
|
|
70
|
+
export function isItem(type) {
|
|
71
|
+
return Object.values(ITEM_CHILDREN_OF_CONTAINER).includes(type);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=item-container-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-container-map.js","sourceRoot":"","sources":["../../../src/tools/multi-items/item-container-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqC,MAAM,CAAC,MAAM,CAAC;IACtF,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,aAAa;IACrB,gBAAgB,EAAE,uBAAuB;IACzC,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,mBAAmB;IACnC,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,YAAY;CACtB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,aAAqB;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,EAAE,aAAa,CAAC;QAClF,CAAC,CAAE,0BAA0B,CAAC,aAAa,CAAY;QACvD,CAAC,CAAC,IAAI,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IACxC,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;QACzE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAKH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAKH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;AA6B5B,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,iBAAiB,EAAE,CAmFhF"}
|
|
@@ -15,14 +15,18 @@ import { creating, defineTool, mutating, readOnly, } from '../tool-builder.js';
|
|
|
15
15
|
import { handleGetEtag, handlePageGetLayout, handlePageGetSchema, handlePagesList, } from './handlers-read.js';
|
|
16
16
|
import { handlePagePublish, handlePageSave } from './handlers-write.js';
|
|
17
17
|
import { ETAG_OUTPUT_SCHEMA, PAGES_LIST_OUTPUT_SCHEMA, SCHEMA_OUTPUT_SCHEMA, } from './schemas.js';
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
18
|
+
// F-14: page-level save/publish accept OPTIONAL ETag (no precondition lock
|
|
19
|
+
// at template level — element/binding mutations REQUIRE one via the strict
|
|
20
|
+
// ETAG in shared-schemas.ts). Schema and description now agree: optional
|
|
21
|
+
// here, recommended for safety. When provided, 412 Precondition Failed is
|
|
22
|
+
// raised on stale snapshots; when omitted, the save proceeds unconditionally.
|
|
21
23
|
const ETAG = z
|
|
22
24
|
.string()
|
|
23
25
|
.optional()
|
|
24
|
-
.describe('Optimistic-lock ETag (
|
|
25
|
-
'
|
|
26
|
+
.describe('Optimistic-lock ETag (from yootheme_builder_get_etag). ' +
|
|
27
|
+
'Optional at template level — when provided, enforces precondition ' +
|
|
28
|
+
'and returns 412 on conflict; when omitted, save/publish proceeds ' +
|
|
29
|
+
'unconditionally. For safety in collaborative edits, pass the ETag.');
|
|
26
30
|
export function buildPagesTools(client) {
|
|
27
31
|
return [
|
|
28
32
|
defineTool({
|
|
@@ -73,7 +77,8 @@ export function buildPagesTools(client) {
|
|
|
73
77
|
defineTool({
|
|
74
78
|
name: 'yootheme_builder_page_save',
|
|
75
79
|
description: 'Re-run save-transforms on a template and persist. Useful after a series of ' +
|
|
76
|
-
'low-level writes to trigger the Builder normalization pass.
|
|
80
|
+
'low-level writes to trigger the Builder normalization pass. ETag optional ' +
|
|
81
|
+
'(recommended for safety in collaborative edits).',
|
|
77
82
|
inputSchema: {
|
|
78
83
|
template_id: TEMPLATE_ID,
|
|
79
84
|
etag: ETAG,
|
|
@@ -83,8 +88,9 @@ export function buildPagesTools(client) {
|
|
|
83
88
|
}),
|
|
84
89
|
defineTool({
|
|
85
90
|
name: 'yootheme_builder_page_publish',
|
|
86
|
-
description: 'Publish a template
|
|
87
|
-
'
|
|
91
|
+
description: 'Publish a template — persists state, flushes YOOtheme + WP caches, and ' +
|
|
92
|
+
'snapshots the published-state ETag. Subsequent reads serve the freshly ' +
|
|
93
|
+
'published layout. ETag optional (recommended for safety in collaborative edits).',
|
|
88
94
|
inputSchema: {
|
|
89
95
|
template_id: TEMPLATE_ID,
|
|
90
96
|
etag: ETAG,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACH,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,GAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,GACvB,MAAM,cAAc,CAAC;AAEtB,
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAKH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGH,KAAK,kBAAkB,EAK1B,MAAM,eAAe,CAAC;AAEvB,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACnC,SAAS,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAKH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGH,KAAK,kBAAkB,EAK1B,MAAM,eAAe,CAAC;AAEvB,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACnC,SAAS,iBAAiB,EAAE,CAyG9B"}
|
|
@@ -43,9 +43,9 @@ export function buildSourcesTools(client, deps) {
|
|
|
43
43
|
}),
|
|
44
44
|
defineTool({
|
|
45
45
|
name: 'yootheme_builder_element_bind_source',
|
|
46
|
-
description: '
|
|
47
|
-
'
|
|
48
|
-
'
|
|
46
|
+
description: 'Binds a Builder source to an element (sets `props.source`). Use bindingLevel ' +
|
|
47
|
+
'"item" on Multi-Items containers (grid/slideshow/switcher/…) to bind on the ' +
|
|
48
|
+
'first *_item child instead of the container itself. Requires ETag.',
|
|
49
49
|
inputSchema: {
|
|
50
50
|
template_id: TEMPLATE_ID,
|
|
51
51
|
element_path: ELEMENT_PATH,
|
|
@@ -59,6 +59,20 @@ export function buildSourcesTools(client, deps) {
|
|
|
59
59
|
.optional()
|
|
60
60
|
.describe('Optional explicit "<origin>:<name>" id; skips ambiguity ' +
|
|
61
61
|
'resolution when ≥2 sources share `source_name`.'),
|
|
62
|
+
field_mappings: z
|
|
63
|
+
.record(z.string(), z.string())
|
|
64
|
+
.optional()
|
|
65
|
+
.describe('Optional {prop_name: source_field_name} map written to `source.props`. ' +
|
|
66
|
+
'Pass "__node_item__" (or "__node_item__:<field>") as the value to ' +
|
|
67
|
+
'emit YT-Pro INHERIT bindings ("Node - Item (Source/Items)" picker ' +
|
|
68
|
+
'entry) on child *_item elements.'),
|
|
69
|
+
bindingLevel: z
|
|
70
|
+
.enum(['auto', 'container', 'item'])
|
|
71
|
+
.optional()
|
|
72
|
+
.describe('Multi-Items binding level. "auto" (default): item if target is a *_item, ' +
|
|
73
|
+
'container otherwise. "item": container targets resolve to their first ' +
|
|
74
|
+
'*_item child. "container": binds on the container, response carries a ' +
|
|
75
|
+
'warning because YT-Pro will clone the container N times.'),
|
|
62
76
|
etag: ETAG,
|
|
63
77
|
},
|
|
64
78
|
annotations: mutating('Bind Source'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/sources/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACH,UAAU,EACV,WAAW,EACX,QAAQ,EACR,QAAQ,GAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,qBAAqB,EACrB,0BAA0B,EAE1B,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,GACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,iBAAiB,CAC7B,MAAkB,EAClB,IAAkC;IAElC,MAAM,WAAW,GAAuB;QACpC,MAAM;QACN,WAAW,EAAE,IAAI,EAAE,WAAW;KACjC,CAAC;IAEF,OAAO;QACH,UAAU,CAAC;YACP,IAAI,EAAE,+BAA+B;YACrC,WAAW,EACP,8DAA8D;gBAC9D,4DAA4D;gBAC5D,4DAA4D;YAChE,WAAW,EAAE;gBACT,MAAM,EAAE,MAAM;aACjB;YACD,YAAY,EAAE,0BAA0B;YACxC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC;YACrC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC;SAC5D,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,sCAAsC;YAC5C,WAAW,EACP,8EAA8E;gBAC9E,gEAAgE;YACpE,WAAW,EAAE;gBACT,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,YAAY;aAC7B;YACD,YAAY,EAAE,qBAAqB;YACnC,WAAW,EAAE,QAAQ,CAAC,oBAAoB,CAAC;YAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC;SAClE,CAAC;QAEF,UAAU,CAAC;YACP,IAAI,EAAE,sCAAsC;YAC5C,WAAW,EACP
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/sources/builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ export declare function handleElementBindSource({ client, elicitation }: Sources
|
|
|
16
16
|
source_name: string;
|
|
17
17
|
source_id?: string;
|
|
18
18
|
etag: string;
|
|
19
|
+
bindingLevel?: 'auto' | 'container' | 'item';
|
|
20
|
+
field_mappings?: Record<string, string>;
|
|
19
21
|
}): Promise<ToolResult>;
|
|
20
22
|
export declare function handleElementUnbindSource({ client, elicitation }: SourcesHandlerDeps, input: {
|
|
21
23
|
template_id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-bind.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/handlers-bind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,OAAO,EAIH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAwBxD,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;
|
|
1
|
+
{"version":3,"file":"handlers-bind.d.ts","sourceRoot":"","sources":["../../../src/tools/sources/handlers-bind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,OAAO,EAIH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAwBxD,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,CA6ErB;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"}
|
|
@@ -31,7 +31,7 @@ async function fetchSourceCandidates(client, source_name) {
|
|
|
31
31
|
return flat.map(mapSourceRow).filter((r) => r.name === source_name);
|
|
32
32
|
}
|
|
33
33
|
export async function handleElementBindSource({ client, elicitation }, input) {
|
|
34
|
-
const { template_id, element_path, source_name, source_id, etag } = input;
|
|
34
|
+
const { template_id, element_path, source_name, source_id, etag, bindingLevel, field_mappings } = input;
|
|
35
35
|
const encoded = encodeElementPath(element_path);
|
|
36
36
|
// Wave G.4.3 — ambiguity resolution.
|
|
37
37
|
//
|
|
@@ -49,6 +49,12 @@ export async function handleElementBindSource({ client, elicitation }, input) {
|
|
|
49
49
|
// structured `ambiguityFallbackError` listing every candidate
|
|
50
50
|
// so the agent can retry with `source_id`.
|
|
51
51
|
let resolvedBody = { source_name };
|
|
52
|
+
if (bindingLevel !== undefined) {
|
|
53
|
+
resolvedBody.bindingLevel = bindingLevel;
|
|
54
|
+
}
|
|
55
|
+
if (field_mappings !== undefined) {
|
|
56
|
+
resolvedBody.field_mappings = field_mappings;
|
|
57
|
+
}
|
|
52
58
|
if (source_id === undefined) {
|
|
53
59
|
const candidates = await fetchSourceCandidates(client, source_name);
|
|
54
60
|
if (candidates.length > 1) {
|
|
@@ -69,11 +75,11 @@ export async function handleElementBindSource({ client, elicitation }, input) {
|
|
|
69
75
|
context: { template_id, element_path, source_name },
|
|
70
76
|
});
|
|
71
77
|
}
|
|
72
|
-
resolvedBody = {
|
|
78
|
+
resolvedBody = { ...resolvedBody, source_id: picked };
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
else {
|
|
76
|
-
resolvedBody = {
|
|
82
|
+
resolvedBody = { ...resolvedBody, source_id };
|
|
77
83
|
}
|
|
78
84
|
try {
|
|
79
85
|
const data = await client.put(`/pages/${encodeURIComponent(template_id)}/elements/${encoded}/binding`, { body: resolvedBody, etag });
|
|
@@ -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;AACrE,OAAO,EACH,qBAAqB,EACrB,YAAY,GAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,sBAAsB,GAEzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,YAAY,EACZ,WAAW,EACX,UAAU,GAEb,MAAM,oBAAoB,CAAC;AAG5B,uEAAuE;AAEvE;;;;;;;;;GASG;AACH,KAAK,UAAU,qBAAqB,CAChC,MAAkB,EAClB,WAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAwB,UAAU,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,EAAE,MAAM,EAAE,WAAW,EAAsB,EAC3C,
|
|
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;AACrE,OAAO,EACH,qBAAqB,EACrB,YAAY,GAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,sBAAsB,GAEzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,YAAY,EACZ,WAAW,EACX,UAAU,GAEb,MAAM,oBAAoB,CAAC;AAG5B,uEAAuE;AAEvE;;;;;;;;;GASG;AACH,KAAK,UAAU,qBAAqB,CAChC,MAAkB,EAClB,WAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAwB,UAAU,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,EAAE,MAAM,EAAE,WAAW,EAAsB,EAC3C,KAQC;IAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,GAC3F,KAAK,CAAC;IACV,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEhD,qCAAqC;IACrC,EAAE;IACF,oEAAoE;IACpE,qCAAqC;IACrC,EAAE;IACF,iDAAiD;IACjD,gEAAgE;IAChE,kEAAkE;IAClE,qDAAqD;IACrD,uCAAuC;IACvC,iEAAiE;IACjE,kEAAkE;IAClE,0DAA0D;IAC1D,kEAAkE;IAClE,+CAA+C;IAC/C,IAAI,YAAY,GAKZ,EAAE,WAAW,EAAE,CAAC;IACpB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;IAC7C,CAAC;IACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAC/B,YAAY,CAAC,cAAc,GAAG,cAAc,CAAC;IACjD,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,gBAAgB,GAA2B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpE,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE;gBAC3B,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;aAC3E,CAAC,CAAC,CAAC;YACJ,MAAM,MAAM,GAAG,WAAW;gBACtB,CAAC,CAAC,MAAM,YAAY,CACd,WAAW,EACX,2BAA2B,WAAW,sBAAsB;oBACxD,mBAAmB,YAAY,IAAI,EACvC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpC;gBACH,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,sBAAsB,CAAC;oBAC1B,IAAI,EAAE,kBAAkB;oBACxB,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,gBAAgB;oBAC5B,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE;iBACtD,CAAC,CAAC;YACP,CAAC;YACD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC1D,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CACzB,UAAU,kBAAkB,CAAC,WAAW,CAAC,aAAa,OAAO,UAAU,EACvE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAC/B,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YACxF,IAAI,EACA,+DAA+D;gBAC/D,yBAAyB;SAChC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,uEAAuE;AAEvE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,EAAE,MAAM,EAAE,WAAW,EAAsB,EAC3C,KAAqF;IAErF,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC3D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,YAAY,CAAC;gBAChB,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;aACzC,CAAC,CAAC;QACP,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACrC,WAAW,EACX,2CAA2C,YAAY,gBAAgB;YACnE,IAAI,WAAW,8CAA8C,CACpE,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,YAAY,CAAC;gBAChB,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;aACzC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAC5B,UAAU,kBAAkB,CAAC,WAAW,CAAC,aAAa,OAAO,UAAU,EACvE,EAAE,IAAI,EAAE,CACX,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,WAAW,CAAC;YACf,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;YACtC,IAAI,EAAE,yDAAyD;SAClE,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
|
package/manifest.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"dxt_version": "0.1",
|
|
3
3
|
"name": "@wootsup/yt-builder-mcp",
|
|
4
4
|
"display_name": "YT Builder MCP for YOOtheme Pro (unofficial)",
|
|
5
|
-
"version": "0.2.0-alpha.
|
|
6
|
-
"description": "Drive your page builder programmatically from Claude, Cursor,
|
|
5
|
+
"version": "0.2.0-alpha.4",
|
|
6
|
+
"description": "Drive your page builder programmatically from Claude, Cursor, Codex, Gemini and 5 other MCP-capable AI assistants — read layouts, edit settings, add elements, bind dynamic sources. Built for YOOtheme Pro 4.0+. Independent third-party project, not affiliated with YOOtheme GmbH.",
|
|
7
7
|
"long_description": "YT Builder MCP gives AI assistants a typed, scoped, and idempotent surface for your YOOtheme Pro page builder. Tools cover page discovery, layout inspection, element CRUD, source binding, and diagnostics. Bearer auth, optimistic locking via ETag, scope hierarchy (read < write < admin), and structured-error responses keep the agent safe and the workflow correct on first try. Independent third-party project — YOOtheme® is a registered trademark of YOOtheme GmbH (yootheme.com); YT Builder MCP is built by WootsUp (getimo productions) and is not affiliated with, endorsed by, or sponsored by YOOtheme.",
|
|
8
8
|
"icon": "icon.png",
|
|
9
9
|
"author": {
|
|
@@ -33,31 +33,33 @@
|
|
|
33
33
|
"entry_point": "dist/index.js",
|
|
34
34
|
"mcp_config": {
|
|
35
35
|
"command": "node",
|
|
36
|
-
"args": ["dist/index.js"],
|
|
36
|
+
"args": ["${__dirname}/dist/index.js"],
|
|
37
37
|
"env": {
|
|
38
38
|
"YTB_MCP_WP_URL": "${user_config.YTB_MCP_WP_URL}",
|
|
39
39
|
"YTB_MCP_BEARER_TOKEN": "${user_config.YTB_MCP_BEARER_TOKEN}"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
|
-
"user_config":
|
|
44
|
-
{
|
|
45
|
-
"key": "YTB_MCP_WP_URL",
|
|
46
|
-
"label": "WordPress site URL",
|
|
43
|
+
"user_config": {
|
|
44
|
+
"YTB_MCP_WP_URL": {
|
|
47
45
|
"type": "string",
|
|
48
|
-
"
|
|
49
|
-
"description": "Base URL of the WordPress install (e.g. https://example.com). Without trailing slash.
|
|
46
|
+
"title": "WordPress site URL",
|
|
47
|
+
"description": "Base URL of the WordPress install (e.g. https://example.com). Without trailing slash.",
|
|
48
|
+
"required": true
|
|
50
49
|
},
|
|
51
|
-
{
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
50
|
+
"YTB_MCP_BEARER_TOKEN": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"title": "Bearer token",
|
|
53
|
+
"description": "Bearer token generated in wp-admin → Tools → YT Builder MCP → Generate Key.",
|
|
55
54
|
"required": true,
|
|
56
|
-
"
|
|
55
|
+
"sensitive": true
|
|
57
56
|
}
|
|
58
|
-
|
|
57
|
+
},
|
|
59
58
|
"compatibility": {
|
|
59
|
+
"claude_desktop": ">=0.10.0",
|
|
60
60
|
"platforms": ["darwin", "win32", "linux"],
|
|
61
|
-
"
|
|
61
|
+
"runtimes": {
|
|
62
|
+
"node": ">=18.17.0"
|
|
63
|
+
}
|
|
62
64
|
}
|
|
63
65
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wootsup/yt-builder-mcp",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "YT Builder MCP — drive your page builder from Claude, Cursor, Codex, Gemini and 5 other MCP-capable AI assistants. Built for YOOtheme Pro 4.0+. Independent third-party project, not affiliated with YOOtheme GmbH.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,8 +11,8 @@ description: Drive the YOOtheme Pro page builder programmatically — discover p
|
|
|
11
11
|
> The integration uses YOOtheme Pro's public extension points.
|
|
12
12
|
|
|
13
13
|
This skill helps AI assistants drive the YOOtheme Pro page builder through the
|
|
14
|
-
`@wootsup/yt-builder-mcp` server. The server exposes
|
|
15
|
-
scoped, idempotent tools behind a
|
|
14
|
+
`@wootsup/yt-builder-mcp` server. The server exposes 24 typed,
|
|
15
|
+
scoped, idempotent tools behind a 11-entry Gateway-Hub (so it stays
|
|
16
16
|
inside the 80-tool Cursor cap even when the catalogue grows).
|
|
17
17
|
|
|
18
18
|
## How to use this MCP server
|
|
@@ -44,12 +44,14 @@ The server exposes:
|
|
|
44
44
|
- **2 direct top-level tools** — always callable, always in `tools/list`:
|
|
45
45
|
`yootheme_builder_health` and `yootheme_builder_diagnose`. These are
|
|
46
46
|
the "the gateway itself might be broken" escape hatch.
|
|
47
|
-
- **
|
|
48
|
-
(page list
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
- **8 essential forwarded tools** — common reads + the most-used writes
|
|
48
|
+
(page list, get_etag, element list / add / update, sources_list,
|
|
49
|
+
element_types_list, inspect_multi_items_binding). Always in
|
|
50
|
+
`tools/list` so AI clients see them first-class.
|
|
51
|
+
- **13 advanced captured tools** — everything else (move, clone, delete,
|
|
52
|
+
schema introspection, source binding, clean_implode_directives).
|
|
53
|
+
Reachable through one gateway tool:
|
|
54
|
+
`yootheme_builder_advanced({ tool: "<name>", input: { ... } })`.
|
|
53
55
|
- **1 gateway tool** — `yootheme_builder_advanced`.
|
|
54
56
|
|
|
55
57
|
If the AI client reports "tool not found", you are almost certainly
|
|
@@ -553,13 +555,14 @@ fabricate tool calls.
|
|
|
553
555
|
|
|
554
556
|
<!-- TOOL-CATALOG:BEGIN -->
|
|
555
557
|
|
|
556
|
-
**
|
|
558
|
+
**23 tools** — 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.
|
|
557
559
|
|
|
558
560
|
| Tool | Kind | Input keys | Description |
|
|
559
561
|
| --- | --- | --- | --- |
|
|
562
|
+
| `yootheme_builder_clean_implode_directives` | idempotent+openWorld | `element_path`, `etag`, `template_id` | Strips `props.source.props.*.implode` directives from an element binding. Returns audit log + new ETag. Idempotent (cleaned_count: 0 when nothing to remove). Requires ETag. |
|
|
560
563
|
| `yootheme_builder_diagnose` | read+openWorld | _(none)_ | Run a full diagnostic: hit /health (no auth), then attempt an authenticated call (/etag) to confirm the Bearer key is valid. Use when health passes but tools return 401/403. |
|
|
561
564
|
| `yootheme_builder_element_add` | openWorld | `children`, `element_type`, `etag`, `parent_path`, `props`, `template_id` | Add a new element to a template. Provide `parent_path` (or "" for root), `element_type` (e.g. "headline", "text", "grid"), and optional `props` / `children`. Returns the new element's JSON-Pointer path. Requires ETag. |
|
|
562
|
-
| `yootheme_builder_element_bind_source` | idempotent+openWorld | `element_path`, `etag`, `source_id`, `source_name`, `template_id` |
|
|
565
|
+
| `yootheme_builder_element_bind_source` | idempotent+openWorld | `bindingLevel`, `element_path`, `etag`, `field_mappings`, `source_id`, `source_name`, `template_id` | Binds a Builder source to an element (sets `props.source`). Use bindingLevel "item" on Multi-Items containers (grid/slideshow/switcher/…) to bind on the first *_item child instead of the container itself. Requires ETag. |
|
|
563
566
|
| `yootheme_builder_element_clone` | openWorld | `element_path`, `etag`, `template_id` | Clone an element as a sibling (same parent, immediately after the source). Returns the new element's path. Requires ETag. |
|
|
564
567
|
| `yootheme_builder_element_delete` | destructive+openWorld | `confirm`, `element_path`, `etag`, `template_id` | PERMANENTLY delete an element and all its children. Cannot be undone. Always ask the user to confirm first, then call again with `confirm: true`. Requires ETag. |
|
|
565
568
|
| `yootheme_builder_element_get` | read+openWorld | `element_path`, `template_id` | Get the full element object at a specific JSON-Pointer path, including props and children. Use yootheme_builder_element_list to discover paths. |
|
|
@@ -572,10 +575,11 @@ fabricate tool calls.
|
|
|
572
575
|
| `yootheme_builder_element_update_settings` | idempotent+openWorld | `element_path`, `etag`, `props`, `template_id` | Replace the `props` on an element. Use this for any setting change — title, margins, classes, sources, etc. Requires ETag. Existing props NOT in the request are removed. |
|
|
573
576
|
| `yootheme_builder_get_etag` | read+openWorld | _(none)_ | Get the current top-level state ETag. Pass this back via the `etag` parameter on any write tool to prevent overwriting concurrent edits. |
|
|
574
577
|
| `yootheme_builder_health` | read+openWorld | _(none)_ | Check that the YT Builder MCP plugin is installed and reachable. Returns plugin version, YOOtheme Pro version (if loaded), and the list of available REST endpoints. Unauthenticated probe — call this first when troubleshooting connectivity. |
|
|
578
|
+
| `yootheme_builder_inspect_multi_items_binding` | read+openWorld | `element_path`, `template_id` | Reports Multi-Items binding state: container/item pair (grid↔grid_item, slideshow↔slideshow_item, …), current binding level (none\|container\|item), and a recommended_fix when the binding sits on the container instead of the child. |
|
|
575
579
|
| `yootheme_builder_page_get_layout` | read+openWorld | `fields`, `flat`, `template_id` | Get full layout tree for one template. Default nested `{layout, etag}`. Set `flat:true` for depth-first array `{elements:[...], etag}`; combine with `fields[]` to project per-element. |
|
|
576
580
|
| `yootheme_builder_page_get_schema` | read+openWorld | `template_id` | Get the flat schema for a template — a list of nodes with their JSON-Pointer paths and element types. Best entry-point for navigation: lighter than page_get_layout, sufficient to locate elements before editing. |
|
|
577
|
-
| `yootheme_builder_page_publish` | openWorld | `etag`, `template_id` | Publish a template
|
|
578
|
-
| `yootheme_builder_page_save` | idempotent+openWorld | `etag`, `template_id` | Re-run save-transforms on a template and persist. Useful after a series of low-level writes to trigger the Builder normalization pass.
|
|
581
|
+
| `yootheme_builder_page_publish` | openWorld | `etag`, `template_id` | Publish a template — persists state, flushes YOOtheme + WP caches, and snapshots the published-state ETag. Subsequent reads serve the freshly published layout. ETag optional (recommended for safety in collaborative edits). |
|
|
582
|
+
| `yootheme_builder_page_save` | idempotent+openWorld | `etag`, `template_id` | Re-run save-transforms on a template and persist. Useful after a series of low-level writes to trigger the Builder normalization pass. ETag optional (recommended for safety in collaborative edits). |
|
|
579
583
|
| `yootheme_builder_pages_list` | read+openWorld | `fields` | List all YOOtheme templates ("pages") on the site. Returns id, label and usage metadata for each. Use this first to discover template IDs. Pass `fields:["id","label"]` to project per-item to a smaller shape. |
|
|
580
584
|
| `yootheme_builder_sources_list` | read+openWorld | `fields` | List Builder sources grouped by origin (apimapper/wordpress/essentials). Returns name+label per source — pick one for `element_bind_source`. Pass `fields[]` to narrow each row. |
|
|
581
585
|
|