@wootsup/yt-builder-mcp 1.2.0 → 1.4.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 +16 -12
- package/dist/catalog/build-catalog.d.ts +63 -0
- package/dist/catalog/build-catalog.d.ts.map +1 -0
- package/dist/catalog/build-catalog.js +166 -0
- package/dist/catalog/build-catalog.js.map +1 -0
- package/dist/cli/doctor-command.d.ts +21 -0
- package/dist/cli/doctor-command.d.ts.map +1 -0
- package/dist/cli/doctor-command.js +111 -0
- package/dist/cli/doctor-command.js.map +1 -0
- package/dist/cli/invocation-decision.d.ts.map +1 -1
- package/dist/cli/invocation-decision.js +2 -0
- package/dist/cli/invocation-decision.js.map +1 -1
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -0
- package/dist/client.js.map +1 -1
- package/dist/diagnostics/ca-trust.d.ts +16 -0
- package/dist/diagnostics/ca-trust.d.ts.map +1 -0
- package/dist/diagnostics/ca-trust.js +54 -0
- package/dist/diagnostics/ca-trust.js.map +1 -0
- package/dist/diagnostics/diagnose-network-error.d.ts +37 -0
- package/dist/diagnostics/diagnose-network-error.d.ts.map +1 -0
- package/dist/diagnostics/diagnose-network-error.js +158 -0
- package/dist/diagnostics/diagnose-network-error.js.map +1 -0
- package/dist/diagnostics/doctor.d.ts +62 -0
- package/dist/diagnostics/doctor.d.ts.map +1 -0
- package/dist/diagnostics/doctor.js +165 -0
- package/dist/diagnostics/doctor.js.map +1 -0
- package/dist/gateway/advanced-read-tool.d.ts +37 -0
- package/dist/gateway/advanced-read-tool.d.ts.map +1 -0
- package/dist/gateway/advanced-read-tool.js +156 -0
- package/dist/gateway/advanced-read-tool.js.map +1 -0
- package/dist/gateway/advanced-tool/domains.d.ts +18 -3
- package/dist/gateway/advanced-tool/domains.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/domains.js +28 -9
- package/dist/gateway/advanced-tool/domains.js.map +1 -1
- package/dist/gateway/advanced-tool/register.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/register.js +43 -11
- package/dist/gateway/advanced-tool/register.js.map +1 -1
- package/dist/gateway/essentials.d.ts +14 -4
- package/dist/gateway/essentials.d.ts.map +1 -1
- package/dist/gateway/essentials.js +46 -5
- package/dist/gateway/essentials.js.map +1 -1
- package/dist/gateway/test-support.d.ts +2 -2
- package/dist/gateway/test-support.js +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -1
- package/dist/install-skill.d.ts +1 -1
- package/dist/install-skill.js +2 -2
- package/dist/net/extra-headers.d.ts +66 -0
- package/dist/net/extra-headers.d.ts.map +1 -0
- package/dist/net/extra-headers.js +164 -0
- package/dist/net/extra-headers.js.map +1 -0
- package/dist/net/internal-host.d.ts +45 -0
- package/dist/net/internal-host.d.ts.map +1 -0
- package/dist/net/internal-host.js +164 -0
- package/dist/net/internal-host.js.map +1 -0
- package/dist/net/proxy-dispatcher.d.ts +40 -0
- package/dist/net/proxy-dispatcher.d.ts.map +1 -0
- package/dist/net/proxy-dispatcher.js +65 -0
- package/dist/net/proxy-dispatcher.js.map +1 -0
- package/dist/proxy/bridge.d.ts +43 -0
- package/dist/proxy/bridge.d.ts.map +1 -0
- package/dist/proxy/bridge.js +155 -0
- package/dist/proxy/bridge.js.map +1 -0
- package/dist/proxy/mode.d.ts +10 -0
- package/dist/proxy/mode.d.ts.map +1 -0
- package/dist/proxy/mode.js +20 -0
- package/dist/proxy/mode.js.map +1 -0
- package/dist/server.d.ts +5 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -3
- package/dist/server.js.map +1 -1
- package/dist/setup-ca-env.d.ts +40 -0
- package/dist/setup-ca-env.d.ts.map +1 -0
- package/dist/setup-ca-env.js +58 -0
- package/dist/setup-ca-env.js.map +1 -0
- package/dist/setup-ca-reprobe.d.ts +38 -0
- package/dist/setup-ca-reprobe.d.ts.map +1 -0
- package/dist/setup-ca-reprobe.js +68 -0
- package/dist/setup-ca-reprobe.js.map +1 -0
- package/dist/setup-cli.d.ts +37 -2
- package/dist/setup-cli.d.ts.map +1 -1
- package/dist/setup-cli.js +178 -4
- package/dist/setup-cli.js.map +1 -1
- package/dist/setup-npx-spec.d.ts +44 -0
- package/dist/setup-npx-spec.d.ts.map +1 -0
- package/dist/setup-npx-spec.js +66 -0
- package/dist/setup-npx-spec.js.map +1 -0
- package/dist/setup-prompts.d.ts +14 -1
- package/dist/setup-prompts.d.ts.map +1 -1
- package/dist/setup-prompts.js +53 -1
- package/dist/setup-prompts.js.map +1 -1
- package/dist/setup-wizard-defaults.d.ts.map +1 -1
- package/dist/setup-wizard-defaults.js +29 -5
- package/dist/setup-wizard-defaults.js.map +1 -1
- package/dist/setup-wizard-handshake.d.ts +4 -4
- package/dist/setup-wizard-handshake.d.ts.map +1 -1
- package/dist/setup-wizard-handshake.js +46 -12
- package/dist/setup-wizard-handshake.js.map +1 -1
- package/dist/setup-wizard-types.d.ts +81 -0
- package/dist/setup-wizard-types.d.ts.map +1 -1
- package/dist/setup-wizard.d.ts +2 -2
- package/dist/setup-wizard.d.ts.map +1 -1
- package/dist/setup-wizard.js +140 -18
- package/dist/setup-wizard.js.map +1 -1
- package/dist/sites/client-pool.d.ts +8 -1
- package/dist/sites/client-pool.d.ts.map +1 -1
- package/dist/sites/client-pool.js +34 -4
- package/dist/sites/client-pool.js.map +1 -1
- package/dist/sites/registry.d.ts +30 -0
- package/dist/sites/registry.d.ts.map +1 -1
- package/dist/sites/registry.js.map +1 -1
- package/dist/sites/store.d.ts +8 -1
- package/dist/sites/store.d.ts.map +1 -1
- package/dist/sites/store.js +17 -2
- package/dist/sites/store.js.map +1 -1
- package/dist/sites/tools/use-site.d.ts.map +1 -1
- package/dist/sites/tools/use-site.js +26 -6
- package/dist/sites/tools/use-site.js.map +1 -1
- package/dist/tools/bind-guidance.d.ts +80 -0
- package/dist/tools/bind-guidance.d.ts.map +1 -0
- package/dist/tools/bind-guidance.js +95 -0
- package/dist/tools/bind-guidance.js.map +1 -0
- package/dist/tools/elements/builders.d.ts.map +1 -1
- package/dist/tools/elements/builders.js +63 -13
- package/dist/tools/elements/builders.js.map +1 -1
- package/dist/tools/elements/handlers-write.d.ts +19 -2
- package/dist/tools/elements/handlers-write.d.ts.map +1 -1
- package/dist/tools/elements/handlers-write.js +179 -10
- package/dist/tools/elements/handlers-write.js.map +1 -1
- package/dist/tools/elements/handlers.d.ts +8 -2
- package/dist/tools/elements/handlers.d.ts.map +1 -1
- package/dist/tools/elements/handlers.js +76 -28
- package/dist/tools/elements/handlers.js.map +1 -1
- package/dist/tools/elements/layout-hierarchy-rules.d.ts +62 -0
- package/dist/tools/elements/layout-hierarchy-rules.d.ts.map +1 -0
- package/dist/tools/elements/layout-hierarchy-rules.js +154 -0
- package/dist/tools/elements/layout-hierarchy-rules.js.map +1 -0
- package/dist/tools/format/elements-format.d.ts +35 -0
- package/dist/tools/format/elements-format.d.ts.map +1 -1
- package/dist/tools/format/elements-format.js +124 -1
- package/dist/tools/format/elements-format.js.map +1 -1
- package/dist/tools/format/health-format.d.ts +3 -0
- package/dist/tools/format/health-format.d.ts.map +1 -1
- package/dist/tools/format/health-format.js +21 -4
- package/dist/tools/format/health-format.js.map +1 -1
- package/dist/tools/format/inspection-format.d.ts +18 -0
- package/dist/tools/format/inspection-format.d.ts.map +1 -1
- package/dist/tools/format/inspection-format.js +22 -1
- package/dist/tools/format/inspection-format.js.map +1 -1
- package/dist/tools/format/pages-format.d.ts.map +1 -1
- package/dist/tools/format/pages-format.js +7 -0
- package/dist/tools/format/pages-format.js.map +1 -1
- package/dist/tools/format/sources-format.d.ts +8 -0
- package/dist/tools/format/sources-format.d.ts.map +1 -1
- package/dist/tools/format/sources-format.js +10 -0
- package/dist/tools/format/sources-format.js.map +1 -1
- package/dist/tools/health.d.ts.map +1 -1
- package/dist/tools/health.js +56 -0
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/inspection.d.ts +24 -0
- package/dist/tools/inspection.d.ts.map +1 -1
- package/dist/tools/inspection.js +140 -41
- package/dist/tools/inspection.js.map +1 -1
- package/dist/tools/layout-flatten.d.ts +11 -8
- package/dist/tools/layout-flatten.d.ts.map +1 -1
- package/dist/tools/layout-flatten.js +17 -6
- package/dist/tools/layout-flatten.js.map +1 -1
- package/dist/tools/multi-items/builders.d.ts.map +1 -1
- package/dist/tools/multi-items/builders.js +11 -2
- package/dist/tools/multi-items/builders.js.map +1 -1
- package/dist/tools/multi-items/inspect-handler.d.ts +13 -0
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
- package/dist/tools/multi-items/inspect-handler.js +147 -3
- package/dist/tools/multi-items/inspect-handler.js.map +1 -1
- package/dist/tools/pages/builders.d.ts.map +1 -1
- package/dist/tools/pages/builders.js +153 -39
- package/dist/tools/pages/builders.js.map +1 -1
- package/dist/tools/pages/handlers-read.d.ts +40 -5
- package/dist/tools/pages/handlers-read.d.ts.map +1 -1
- package/dist/tools/pages/handlers-read.js +404 -76
- package/dist/tools/pages/handlers-read.js.map +1 -1
- package/dist/tools/pages/handlers-write.d.ts +95 -1
- package/dist/tools/pages/handlers-write.d.ts.map +1 -1
- package/dist/tools/pages/handlers-write.js +137 -8
- package/dist/tools/pages/handlers-write.js.map +1 -1
- package/dist/tools/pages/index.d.ts +1 -1
- package/dist/tools/pages/index.d.ts.map +1 -1
- package/dist/tools/pages/index.js +1 -1
- package/dist/tools/pages/index.js.map +1 -1
- package/dist/tools/pages/schemas.d.ts +74 -5
- package/dist/tools/pages/schemas.d.ts.map +1 -1
- package/dist/tools/pages/schemas.js +243 -8
- package/dist/tools/pages/schemas.js.map +1 -1
- package/dist/tools/shared-schemas.d.ts +3 -0
- package/dist/tools/shared-schemas.d.ts.map +1 -1
- package/dist/tools/shared-schemas.js +43 -13
- package/dist/tools/shared-schemas.js.map +1 -1
- package/dist/tools/sources/builders.d.ts.map +1 -1
- package/dist/tools/sources/builders.js +93 -10
- package/dist/tools/sources/builders.js.map +1 -1
- package/dist/tools/sources/handlers-bind.d.ts +13 -1
- package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
- package/dist/tools/sources/handlers-bind.js +163 -1
- package/dist/tools/sources/handlers-bind.js.map +1 -1
- package/dist/tools/sources/handlers.d.ts +12 -1
- package/dist/tools/sources/handlers.d.ts.map +1 -1
- package/dist/tools/sources/handlers.js +103 -16
- package/dist/tools/sources/handlers.js.map +1 -1
- package/dist/tools/sparse-fields.d.ts +73 -0
- package/dist/tools/sparse-fields.d.ts.map +1 -1
- package/dist/tools/sparse-fields.js +136 -0
- package/dist/tools/sparse-fields.js.map +1 -1
- package/dist/tools/sublayout/builders.d.ts +23 -0
- package/dist/tools/sublayout/builders.d.ts.map +1 -0
- package/dist/tools/sublayout/builders.js +54 -0
- package/dist/tools/sublayout/builders.js.map +1 -0
- package/dist/tools/sublayout/index.d.ts +13 -0
- package/dist/tools/sublayout/index.d.ts.map +1 -0
- package/dist/tools/sublayout/index.js +13 -0
- package/dist/tools/sublayout/index.js.map +1 -0
- package/dist/tools/sublayout/inspect-sublayout-handler.d.ts +95 -0
- package/dist/tools/sublayout/inspect-sublayout-handler.d.ts.map +1 -0
- package/dist/tools/sublayout/inspect-sublayout-handler.js +181 -0
- package/dist/tools/sublayout/inspect-sublayout-handler.js.map +1 -0
- package/dist/tools/tool-builder/results.d.ts +31 -0
- package/dist/tools/tool-builder/results.d.ts.map +1 -1
- package/dist/tools/tool-builder/results.js +95 -4
- package/dist/tools/tool-builder/results.js.map +1 -1
- package/dist/update/update-check.d.ts +56 -0
- package/dist/update/update-check.d.ts.map +1 -0
- package/dist/update/update-check.js +155 -0
- package/dist/update/update-check.js.map +1 -0
- package/manifest.json +1 -1
- package/package.json +5 -2
- package/skills/yt-builder-mcp/SKILL.md +148 -82
|
@@ -30,7 +30,38 @@ export const INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA = z.object({
|
|
|
30
30
|
container_type: z.string().nullable(),
|
|
31
31
|
item_type: z.string().nullable(),
|
|
32
32
|
current_binding_level: z.enum(['none', 'container', 'item']),
|
|
33
|
+
// C7 (2026-06-10) — binding level of the container's first `*_item`
|
|
34
|
+
// child. Optional so a pre-C7 backend's report still validates.
|
|
35
|
+
item_child_binding_level: z.enum(['none', 'item']).optional(),
|
|
36
|
+
// C7 — single honest "is anything bound (here or on the item child)"
|
|
37
|
+
// signal. Optional for back-compat with pre-C7 reports.
|
|
38
|
+
is_bound: z.boolean().optional(),
|
|
33
39
|
has_implode_directives: z.boolean(),
|
|
40
|
+
// C7 — bound source name + live-registry existence cross-check.
|
|
41
|
+
// `bound_source_exists` is null when the registry is not wired.
|
|
42
|
+
bound_source_name: z.string().nullable().optional(),
|
|
43
|
+
bound_source_exists: z.boolean().nullable().optional(),
|
|
44
|
+
source_missing_warning: z.string().optional(),
|
|
45
|
+
// F143 — true when a bound map_item/map carries no resolved
|
|
46
|
+
// `location` leaf (the map renders 0 markers). Optional so reports
|
|
47
|
+
// for non-map elements (and pre-F143 backends) still validate.
|
|
48
|
+
map_location_missing: z.boolean().optional(),
|
|
49
|
+
// F174 — number of field mappings on the bound node (0 when unbound /
|
|
50
|
+
// mapping-less). Optional so a pre-F174 backend's report still validates.
|
|
51
|
+
field_mapping_count: z.number().int().nonnegative().optional(),
|
|
52
|
+
// F174 — true when the element IS bound but carries 0 field mappings
|
|
53
|
+
// (the N clones render only the template's static placeholder text).
|
|
54
|
+
// Optional for back-compat with pre-F174 reports.
|
|
55
|
+
zero_field_mappings: z.boolean().optional(),
|
|
56
|
+
// F189 — true when a `…List` source sits on a LEAF renderer (grid_item /
|
|
57
|
+
// any non-container) with non-empty children (the children never paint).
|
|
58
|
+
// Optional so reports for other shapes + pre-F189 backends still validate.
|
|
59
|
+
iterator_is_leaf_renderer: z.boolean().optional(),
|
|
60
|
+
// F39 (2026-06-10) — emitted when a map/map_item is bound without a
|
|
61
|
+
// `location` field mapping (renders 0 markers). Optional so non-map
|
|
62
|
+
// reports still validate. Companion human-readable signal to the
|
|
63
|
+
// structured `map_location_missing` boolean above.
|
|
64
|
+
map_location_warning: z.string().optional(),
|
|
34
65
|
warning: z.string().optional(),
|
|
35
66
|
recommended_fix: z.string().optional(),
|
|
36
67
|
}),
|
|
@@ -46,18 +77,131 @@ export const INSPECT_MULTI_ITEMS_OUTPUT_SCHEMA = z.object({
|
|
|
46
77
|
.optional(),
|
|
47
78
|
});
|
|
48
79
|
/**
|
|
49
|
-
* Classify the report into an advisory/blocking hint.
|
|
50
|
-
*
|
|
51
|
-
*
|
|
80
|
+
* Classify the report into an advisory/blocking hint.
|
|
81
|
+
*
|
|
82
|
+
* C7 (2026-06-10) — the verdict now reflects what is ACTUALLY bound, not
|
|
83
|
+
* just the container-node's own binding level. Three structural bugs the
|
|
84
|
+
* pre-C7 single-axis (`current_binding_level`) classifier produced:
|
|
85
|
+
*
|
|
86
|
+
* 1. A container bound *through* its `*_item` child reported "none" + a
|
|
87
|
+
* reassuring "structurally correct" hint. Now `is_bound` /
|
|
88
|
+
* `item_child_binding_level` make the child binding visible.
|
|
89
|
+
* 2. A fully-unbound element was called "structurally correct". Now a
|
|
90
|
+
* false `is_bound` yields an honest "no source binding present" hint.
|
|
91
|
+
* 3. A binding to a since-deleted source looked fine. Now
|
|
92
|
+
* `bound_source_exists === false` is `blocking` with the missing-
|
|
93
|
+
* source message.
|
|
94
|
+
*
|
|
95
|
+
* Precedence: container-level binding (blocking) → deleted source
|
|
96
|
+
* (blocking) → nothing bound (advisory, honest) → bound + live (advisory,
|
|
97
|
+
* "structurally correct").
|
|
52
98
|
*/
|
|
53
99
|
function buildHint(report) {
|
|
54
100
|
const r = (report ?? {});
|
|
101
|
+
// F143 — a bound map with no resolved `location` leaf renders 0
|
|
102
|
+
// markers. That is a render-breaking bug, not advisory: surface it as
|
|
103
|
+
// `blocking` even though the binding level itself is "item". This is the
|
|
104
|
+
// structured-boolean entry point; the human-readable `map_location_warning`
|
|
105
|
+
// (F39, branch 1b below) is the companion signal a different backend emits.
|
|
106
|
+
if (r.map_location_missing === true) {
|
|
107
|
+
const fix = typeof r.recommended_fix === 'string' && r.recommended_fix !== ''
|
|
108
|
+
? r.recommended_fix
|
|
109
|
+
: 'Map a single `location` field holding a combined "lat,lng" string.';
|
|
110
|
+
return {
|
|
111
|
+
severity: 'blocking',
|
|
112
|
+
message: 'Map is bound but no `location` field is mapped — no markers will ' +
|
|
113
|
+
`render. ${fix}`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// F189 — a `…List` source on a LEAF renderer (grid_item / any non-container)
|
|
117
|
+
// that carries non-empty children: repeatSource clones it per row but the
|
|
118
|
+
// template renders ONLY its own slots, never its nested children → the
|
|
119
|
+
// children are render-dead and the grid shows placeholders. Render-breaking
|
|
120
|
+
// tier → blocking. The PHP inspector ships the human-readable `warning` with
|
|
121
|
+
// both recipes; surface it verbatim. Runs before the zero-mappings / generic
|
|
122
|
+
// branches so the iterator-shape bug is named first.
|
|
123
|
+
if (r.iterator_is_leaf_renderer === true) {
|
|
124
|
+
const msg = typeof r.warning === 'string' && r.warning !== ''
|
|
125
|
+
? r.warning
|
|
126
|
+
: 'This element iterates a list source but is a LEAF renderer ' +
|
|
127
|
+
'(grid_item / *_item) — its nested children are never rendered. ' +
|
|
128
|
+
'Map fields onto the item\'s own slots (title/meta/content/image), ' +
|
|
129
|
+
'or move the List onto a container (column/fragment/row) with #parent leaves.';
|
|
130
|
+
return { severity: 'blocking', message: msg };
|
|
131
|
+
}
|
|
132
|
+
// F174 — a bound element with ZERO field mappings clones the container N
|
|
133
|
+
// times but every clone renders only the template's static placeholder
|
|
134
|
+
// text ("Title" / "Lorem ipsum"), not real data. The binding is
|
|
135
|
+
// structurally item-level so every other signal reports healthy. Same
|
|
136
|
+
// render-breaking tier as map_location_missing → blocking. The PHP
|
|
137
|
+
// inspector ships the human-readable `warning`; surface it verbatim.
|
|
138
|
+
if (r.zero_field_mappings === true) {
|
|
139
|
+
const msg = typeof r.warning === 'string' && r.warning !== ''
|
|
140
|
+
? r.warning
|
|
141
|
+
: 'Bound to a source but with 0 field mappings — the cloned items ' +
|
|
142
|
+
'render the template\'s static placeholder text (Title / Lorem ipsum), ' +
|
|
143
|
+
'not real data. Re-bind with field_mappings AT THIS ITEM ' +
|
|
144
|
+
'(element_bind_source on this same element with non-empty ' +
|
|
145
|
+
'field_mappings). Do NOT bind the individual child leaves instead: ' +
|
|
146
|
+
'on YT5 a "#parent" leaf bind written directly under an iterating ' +
|
|
147
|
+
'item renders placeholder text.';
|
|
148
|
+
return { severity: 'blocking', message: msg };
|
|
149
|
+
}
|
|
150
|
+
// (1) Container-level binding — the original structural bug. Blocking.
|
|
55
151
|
if (r.current_binding_level === 'container') {
|
|
56
152
|
const fix = typeof r.recommended_fix === 'string' && r.recommended_fix !== ''
|
|
57
153
|
? r.recommended_fix
|
|
58
154
|
: 'Move the binding to the first `*_item` child element.';
|
|
59
155
|
return { severity: 'blocking', message: fix };
|
|
60
156
|
}
|
|
157
|
+
// (1b) F39 — a map/map_item bound WITHOUT a `location` field mapping
|
|
158
|
+
// renders zero markers. The PHP inspector only emits map_location_warning
|
|
159
|
+
// for a genuinely-bound map pair, so its mere presence is the signal.
|
|
160
|
+
// Blocking, because the map looks healthy but shows nothing.
|
|
161
|
+
if (typeof r.map_location_warning === 'string' && r.map_location_warning !== '') {
|
|
162
|
+
return { severity: 'blocking', message: r.map_location_warning };
|
|
163
|
+
}
|
|
164
|
+
// (2) C7 bug 3 — bound source no longer exists in the live registry.
|
|
165
|
+
// `bound_source_exists` is only a hard `false` when the registry was
|
|
166
|
+
// wired AND the name was absent; `null`/`undefined` (unknown) never trips
|
|
167
|
+
// this branch.
|
|
168
|
+
if (r.bound_source_exists === false) {
|
|
169
|
+
const msg = typeof r.source_missing_warning === 'string' && r.source_missing_warning !== ''
|
|
170
|
+
? r.source_missing_warning
|
|
171
|
+
: 'The bound source no longer exists in the live source registry — ' +
|
|
172
|
+
'the frontend will render empty. Re-bind to a current source.';
|
|
173
|
+
return { severity: 'blocking', message: msg };
|
|
174
|
+
}
|
|
175
|
+
// (3) C7 bug 2 — nothing is actually bound (neither this node nor, for a
|
|
176
|
+
// container, its item child). `is_bound` is the authoritative signal;
|
|
177
|
+
// when a pre-C7 backend omits it, fall back to current_binding_level.
|
|
178
|
+
const isBound = typeof r.is_bound === 'boolean'
|
|
179
|
+
? r.is_bound
|
|
180
|
+
: r.current_binding_level === 'item';
|
|
181
|
+
if (!isBound) {
|
|
182
|
+
return {
|
|
183
|
+
severity: 'advisory',
|
|
184
|
+
message: 'No source binding present on this element' +
|
|
185
|
+
(r.current_binding_level !== 'item' && r.item_child_binding_level !== 'item'
|
|
186
|
+
? ' or its item child'
|
|
187
|
+
: '') +
|
|
188
|
+
'. Bind a source directly: yootheme_builder_element_bind_source({ ' +
|
|
189
|
+
'template_id, element_path, source_name, field_mappings }) — for a ' +
|
|
190
|
+
'Multi-Items container, bind on the first `*_item` child.',
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// (4) C7 bug 1 — bound through the item child. Surface that explicitly so
|
|
194
|
+
// the agent does not mistake the container's own "none" level for "unbound".
|
|
195
|
+
if (r.item_child_binding_level === 'item') {
|
|
196
|
+
return {
|
|
197
|
+
severity: 'advisory',
|
|
198
|
+
message: 'Binding looks structurally correct — the source is bound at the ' +
|
|
199
|
+
'item level (on the `*_item` child), which is the canonical ' +
|
|
200
|
+
'Multi-Items shape. Verify element_path via ' +
|
|
201
|
+
'yootheme_builder_element_list if the source still renders empty.',
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
// (5) Genuinely item-bound with a live (or unknown) source.
|
|
61
205
|
return {
|
|
62
206
|
severity: 'advisory',
|
|
63
207
|
message: 'Binding looks structurally correct. Verify element_path via ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect-handler.js","sourceRoot":"","sources":["../../../src/tools/multi-items/inspect-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAWnE,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;IAChB,oEAAoE;IACpE,gEAAgE;IAChE,+BAA+B;IAC/B,IAAI,EAAE,CAAC;SACF,MAAM,CAAC;QACJ,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACD,QAAQ,EAAE;CAClB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"inspect-handler.js","sourceRoot":"","sources":["../../../src/tools/multi-items/inspect-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAW7D,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;AA2C5B;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,aAAa,CAMhB;AAyCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,iBAAiB,EAAE,CAwU9E"}
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { z } from 'zod';
|
|
16
16
|
import { withSiteRetry } from '../pool-resolve-helper.js';
|
|
17
|
-
import { SITE_ID_SCHEMA, TEMPLATE_ID } from '../shared-schemas.js';
|
|
18
|
-
import { FIELDS, FLAT } from '../sparse-fields.js';
|
|
19
|
-
import { defineTool, mutating, readOnly, withSiteMeta, } from '../tool-builder.js';
|
|
20
|
-
import { handleGetEtag, handlePageGetLayout, handlePageGetSchema, handlePagesList, handleTemplateSummary, } from './handlers-read.js';
|
|
21
|
-
import { handlePagePublish, handlePagesCreate, handlePagesDelete, handlePageSave, } from './handlers-write.js';
|
|
22
|
-
import { ETAG_OUTPUT_SCHEMA, PAGES_CREATE_INPUT, PAGES_DELETE_INPUT, PAGES_DELETE_OUTPUT_SCHEMA, PAGES_LIST_OUTPUT_SCHEMA, SCHEMA_OUTPUT_SCHEMA, TEMPLATE_SUMMARY_OUTPUT_SCHEMA, } from './schemas.js';
|
|
17
|
+
import { POST_ID, RESOLVE_URL, SITE_ID_SCHEMA, TEMPLATE_ID, TEMPLATE_ID_OPTIONAL, } from '../shared-schemas.js';
|
|
18
|
+
import { FIELDS, FLAT, MAX_CHARS } from '../sparse-fields.js';
|
|
19
|
+
import { creating, defineTool, mutating, readOnly, withSiteMeta, } from '../tool-builder.js';
|
|
20
|
+
import { handleGetEtag, handlePageGetLayout, handlePageGetSchema, handlePagesList, handlePagesResolve, handleTemplateSummary, } from './handlers-read.js';
|
|
21
|
+
import { handlePageDynamize, handlePagePublish, handlePagesCreate, handlePagesDelete, handlePageSave, } from './handlers-write.js';
|
|
22
|
+
import { ETAG_OUTPUT_SCHEMA, PAGE_DYNAMIZE_INPUT, PAGES_CREATE_INPUT, PAGES_DELETE_INPUT, PAGES_DELETE_OUTPUT_SCHEMA, PAGES_LIST_OUTPUT_SCHEMA, PAGES_RESOLVE_INPUT, PAGES_RESOLVE_OUTPUT_SCHEMA, SCHEMA_OUTPUT_SCHEMA, TEMPLATE_SUMMARY_OUTPUT_SCHEMA, } from './schemas.js';
|
|
23
23
|
// F-14: page-level save/publish accept OPTIONAL ETag (no precondition lock
|
|
24
24
|
// at template level — element/binding mutations REQUIRE one via the strict
|
|
25
25
|
// ETAG in shared-schemas.ts). Schema and description now agree: optional
|
|
@@ -77,31 +77,73 @@ export function buildPagesTools(pool) {
|
|
|
77
77
|
return [
|
|
78
78
|
defineTool({
|
|
79
79
|
name: 'yootheme_builder_pages_list',
|
|
80
|
-
description: 'List
|
|
81
|
-
'
|
|
82
|
-
'CALL THIS FIRST to discover
|
|
83
|
-
'
|
|
84
|
-
'
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
80
|
+
description: 'List pages, templates, and layouts in the YOOtheme Pro builder ' +
|
|
81
|
+
'(template_id, label, type, element count, frontend_url, builder_url per row). ' +
|
|
82
|
+
'CALL THIS FIRST to discover template IDs before page_get_layout / element_list / ' +
|
|
83
|
+
'page_get_schema. Paginates: up to `limit` rows (default 50) plus `total` and a ' +
|
|
84
|
+
'`next_cursor` (pass it back as `cursor`) when more remain. Filter with ' +
|
|
85
|
+
'`label_contains`. Slim rows with `fields:["id","label"]`; bound output ' +
|
|
86
|
+
'with `max_chars`. Operates on the default site unless site_id is provided.',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
site_id: SITE_ID_SCHEMA,
|
|
89
|
+
fields: FIELDS,
|
|
90
|
+
limit: z
|
|
91
|
+
.number()
|
|
92
|
+
.int()
|
|
93
|
+
.min(1)
|
|
94
|
+
.max(200)
|
|
95
|
+
.optional()
|
|
96
|
+
.describe('Max rows to return (1-200, default 50). The response carries next_cursor when more remain.'),
|
|
97
|
+
cursor: z
|
|
98
|
+
.string()
|
|
99
|
+
.optional()
|
|
100
|
+
.describe('Opaque cursor from a previous response\'s next_cursor — fetches the next page.'),
|
|
101
|
+
label_contains: z
|
|
102
|
+
.string()
|
|
103
|
+
.optional()
|
|
104
|
+
.describe('Case-insensitive substring filter on the page label / id / type (e.g. "blog").'),
|
|
105
|
+
max_chars: MAX_CHARS,
|
|
106
|
+
},
|
|
90
107
|
outputSchema: PAGES_LIST_OUTPUT_SCHEMA,
|
|
91
108
|
annotations: readOnly('List Pages'),
|
|
92
109
|
handler: async ({ site_id, ...rest }) => withSiteRetry(pool, site_id, async (client, site) => withSiteMeta(await handlePagesList(client, rest), site)),
|
|
93
110
|
}),
|
|
94
111
|
defineTool({
|
|
95
112
|
name: 'yootheme_builder_page_get_layout',
|
|
96
|
-
description: 'Get
|
|
97
|
-
'
|
|
98
|
-
'
|
|
113
|
+
description: 'Get the layout tree for one template — address it by `template_id` ' +
|
|
114
|
+
'(from pages_list), `post_id` (numeric post/article id), or `url` ' +
|
|
115
|
+
'(public page URL, resolved in one call). For dynamize/bind work prefer ' +
|
|
116
|
+
'`mode:"bindings_only"` — the binding skeleton only (no style props). ' +
|
|
117
|
+
'Default `mode:"full"` returns nested `{layout, etag}`. `flat:true` gives ' +
|
|
118
|
+
'a depth-first `{elements:[...], etag}` array (with `fields[]`). A repeated ' +
|
|
119
|
+
'unchanged read auto-skips `[unchanged]`; `force:true` re-fetches. ' +
|
|
120
|
+
'`max_chars` bounds the (full-mode) text output. ' +
|
|
99
121
|
'Operates on the default site unless site_id is provided.',
|
|
100
122
|
inputSchema: {
|
|
101
123
|
site_id: SITE_ID_SCHEMA,
|
|
102
|
-
|
|
124
|
+
// G-A (Track-C URL→layout): three interchangeable addressing modes
|
|
125
|
+
// (exactly one required) so ONE call reaches a layout from a
|
|
126
|
+
// template_id, a bare numeric post/article id, or a pasted URL.
|
|
127
|
+
template_id: TEMPLATE_ID_OPTIONAL,
|
|
128
|
+
post_id: POST_ID,
|
|
129
|
+
url: RESOLVE_URL,
|
|
130
|
+
// F195 (P0): bindings_only returns the trimmed binding skeleton —
|
|
131
|
+
// recommended for dynamize/bind workflows (token-efficient).
|
|
132
|
+
mode: z
|
|
133
|
+
.enum(['full', 'bindings_only'])
|
|
134
|
+
.optional()
|
|
135
|
+
.describe('full (default) = whole nested layout; bindings_only = trimmed ' +
|
|
136
|
+
'binding skeleton (path/type/name/has_binding/source/children, ' +
|
|
137
|
+
'no style props). Prefer bindings_only for dynamize/bind work.'),
|
|
138
|
+
// F195 (P0): bypass the per-process unchanged-read dedup.
|
|
139
|
+
force: z
|
|
140
|
+
.boolean()
|
|
141
|
+
.optional()
|
|
142
|
+
.describe('Re-fetch even if this exact (template, etag) full layout was ' +
|
|
143
|
+
'already read this session (bypasses the [unchanged] dedup).'),
|
|
103
144
|
flat: FLAT,
|
|
104
145
|
fields: FIELDS,
|
|
146
|
+
max_chars: MAX_CHARS,
|
|
105
147
|
},
|
|
106
148
|
// No outputSchema: the response shape is a union (nested OR flat with
|
|
107
149
|
// optional projection) and the JSON-Pointer-keyed nested shape is
|
|
@@ -111,15 +153,42 @@ export function buildPagesTools(pool) {
|
|
|
111
153
|
}),
|
|
112
154
|
defineTool({
|
|
113
155
|
name: 'yootheme_builder_page_get_schema',
|
|
114
|
-
description: 'Get the flat schema for a template —
|
|
115
|
-
'paths and element types.
|
|
116
|
-
'
|
|
156
|
+
description: 'Get the flat schema for a template — nodes with their JSON-Pointer ' +
|
|
157
|
+
'paths and element types. Lighter than page_get_layout, enough to locate ' +
|
|
158
|
+
'elements before editing. Address by `template_id` (pages_list), `post_id`, ' +
|
|
159
|
+
'or `url`. `fields[]` slims each node; `max_chars` bounds output. ' +
|
|
117
160
|
'Operates on the default site unless site_id is provided.',
|
|
118
|
-
inputSchema: {
|
|
161
|
+
inputSchema: {
|
|
162
|
+
site_id: SITE_ID_SCHEMA,
|
|
163
|
+
// G-A (Track-C URL→layout): three interchangeable addressing modes.
|
|
164
|
+
template_id: TEMPLATE_ID_OPTIONAL,
|
|
165
|
+
post_id: POST_ID,
|
|
166
|
+
url: RESOLVE_URL,
|
|
167
|
+
fields: FIELDS,
|
|
168
|
+
max_chars: MAX_CHARS,
|
|
169
|
+
},
|
|
119
170
|
outputSchema: SCHEMA_OUTPUT_SCHEMA,
|
|
120
171
|
annotations: readOnly('Get Page Schema'),
|
|
121
172
|
handler: async ({ site_id, ...rest }) => withSiteRetry(pool, site_id, async (client, site) => withSiteMeta(await handlePageGetSchema(client, rest), site)),
|
|
122
173
|
}),
|
|
174
|
+
// ─── G-A (Track-C URL→layout) — pages_resolve ─────────────────
|
|
175
|
+
// THE core "paste a URL → reach a layout in ≤1 MCP call" tool. An
|
|
176
|
+
// agent handed only a public page URL resolves it to the per-page
|
|
177
|
+
// template_id that every read tool accepts. L1 essential so a cold
|
|
178
|
+
// agent reaches it directly (the whole point of the gap fix).
|
|
179
|
+
defineTool({
|
|
180
|
+
name: 'yootheme_builder_pages_resolve',
|
|
181
|
+
description: 'Resolve a public page/article URL to the template_id that renders it — ' +
|
|
182
|
+
'paste a URL, get a layout-addressable id in one call. Returns ' +
|
|
183
|
+
'{template_id (page:{id}/article:{id}), post_id, type, frontend_url}. ' +
|
|
184
|
+
'404s with a hint for THEME-template URLs (use pages_list instead). ' +
|
|
185
|
+
'page_get_layout / page_get_schema also accept a `url` param directly. ' +
|
|
186
|
+
'Operates on the default site unless site_id is provided.',
|
|
187
|
+
inputSchema: { site_id: SITE_ID_SCHEMA, ...PAGES_RESOLVE_INPUT },
|
|
188
|
+
outputSchema: PAGES_RESOLVE_OUTPUT_SCHEMA,
|
|
189
|
+
annotations: readOnly('Resolve URL to Template'),
|
|
190
|
+
handler: async ({ site_id, ...rest }) => withSiteRetry(pool, site_id, async (client, site) => withSiteMeta(await handlePagesResolve(client, rest), site)),
|
|
191
|
+
}),
|
|
123
192
|
defineTool({
|
|
124
193
|
name: 'yootheme_builder_get_etag',
|
|
125
194
|
description: 'Get the current ETag (state revision) for the YOOtheme builder. ' +
|
|
@@ -140,6 +209,12 @@ export function buildPagesTools(pool) {
|
|
|
140
209
|
'count, max nesting depth, and named landmark sections — computed ' +
|
|
141
210
|
'server-side in one call. Use this to grasp a large template before ' +
|
|
142
211
|
'pulling element_list or page_get_layout. ' +
|
|
212
|
+
// F206 (P3): concrete first-call example. The Desktop client
|
|
213
|
+
// rejected the first guessed call because no example showed the
|
|
214
|
+
// exact arg shape (the whole yt-builder package used none, while
|
|
215
|
+
// apimapper's schema.ts does). Mirrors apimapper's 'Example:'
|
|
216
|
+
// pattern.
|
|
217
|
+
'Example: yootheme_builder_template_summary({ template_id: "default" }). ' +
|
|
143
218
|
'Operates on the default site unless site_id is provided.',
|
|
144
219
|
inputSchema: { site_id: SITE_ID_SCHEMA, template_id: TEMPLATE_ID },
|
|
145
220
|
outputSchema: TEMPLATE_SUMMARY_OUTPUT_SCHEMA,
|
|
@@ -148,14 +223,26 @@ export function buildPagesTools(pool) {
|
|
|
148
223
|
}),
|
|
149
224
|
defineTool({
|
|
150
225
|
name: 'yootheme_builder_page_save',
|
|
151
|
-
description: 'Re-run save-transforms + flush caches.
|
|
152
|
-
'
|
|
153
|
-
'
|
|
226
|
+
description: 'Re-run save-transforms + flush caches. Optionally pass a whole `layout` to ' +
|
|
227
|
+
'REPLACE the template tree ATOMICALLY (F85) — ideal for wholesale dynamization ' +
|
|
228
|
+
'(read layout → swap query → remap fields → write back). A supplied layout is ' +
|
|
229
|
+
'validated + ETag-locked; on rejection nothing is persisted. Omit `layout` to just ' +
|
|
230
|
+
're-run transforms (no-op if byte-identical) — for incremental edits use ' +
|
|
231
|
+
'element_add/update/bind/delete first. New pages: pages_create. Publish: page_publish. ' +
|
|
232
|
+
'ETag optional (412 on conflict; else last-write-wins). ' +
|
|
154
233
|
'Operates on the default site unless site_id is provided.',
|
|
155
234
|
inputSchema: {
|
|
156
235
|
site_id: SITE_ID_SCHEMA,
|
|
157
236
|
template_id: TEMPLATE_ID,
|
|
158
237
|
etag: ETAG,
|
|
238
|
+
// F85: optional whole-layout atomic replacement (ARTICLE/page
|
|
239
|
+
// templates + theme templates). Same shape as pages_create.layout.
|
|
240
|
+
layout: z
|
|
241
|
+
.record(z.string(), z.unknown())
|
|
242
|
+
.optional()
|
|
243
|
+
.describe('Optional whole YT layout-node object (e.g. {type:"layout",children:[...]}) ' +
|
|
244
|
+
'to replace the template tree atomically. Validated + ETag-locked. ' +
|
|
245
|
+
'Omit to just re-run save-transforms.'),
|
|
159
246
|
},
|
|
160
247
|
annotations: mutating('Save Page'),
|
|
161
248
|
handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withRenderContext(withSiteMeta(await handlePageSave(client, rest, extra), site), buildRenderContext({
|
|
@@ -191,11 +278,13 @@ export function buildPagesTools(pool) {
|
|
|
191
278
|
// are L1 essentials (see gateway/essentials.ts).
|
|
192
279
|
defineTool({
|
|
193
280
|
name: 'yootheme_builder_pages_create',
|
|
194
|
-
description: 'Create a
|
|
195
|
-
'Optional: slug
|
|
196
|
-
'
|
|
197
|
-
'
|
|
198
|
-
'
|
|
281
|
+
description: 'Create a page (WordPress) or article (Joomla 5/6) with a YOOtheme per-page ' +
|
|
282
|
+
'layout. Required: title. Optional: slug, status (default draft), published ' +
|
|
283
|
+
'(default false → live on true: WP publish / Joomla state 1), layout (JSON), ' +
|
|
284
|
+
'menu_item (Joomla SEF route), dry_run (preflight, no persist). Returns page_id ' +
|
|
285
|
+
'(WP) / article_id (Joomla), slug, template_id (page:{id} or article:{id}), etag, ' +
|
|
286
|
+
'warnings. Joomla: a published article has NO SEF route until a menu item points ' +
|
|
287
|
+
'at it — pass menu_item, else frontend_url may 404. ' +
|
|
199
288
|
'Operates on the default site unless site_id is provided.',
|
|
200
289
|
inputSchema: { site_id: SITE_ID_SCHEMA, ...PAGES_CREATE_INPUT },
|
|
201
290
|
// No outputSchema: the response shape is a discriminated union
|
|
@@ -210,15 +299,40 @@ export function buildPagesTools(pool) {
|
|
|
210
299
|
locale: localeForSite(site),
|
|
211
300
|
}))),
|
|
212
301
|
}),
|
|
302
|
+
// ─── P-G (Goldstandard wave 3) — page_dynamize ────────────────
|
|
303
|
+
// THE one-call canonical path to dynamize an existing designed
|
|
304
|
+
// section. L1 essential: an agent must reach it directly INSTEAD
|
|
305
|
+
// of hand-editing layout JSON (the recipe is CODE, server-side).
|
|
213
306
|
defineTool({
|
|
214
|
-
name: '
|
|
215
|
-
description: '
|
|
216
|
-
'
|
|
217
|
-
'
|
|
218
|
-
'
|
|
219
|
-
'
|
|
220
|
-
'
|
|
307
|
+
name: 'yootheme_builder_page_dynamize',
|
|
308
|
+
description: 'One-call way to dynamize a designed section: copies the layout ' +
|
|
309
|
+
'byte-identically and swaps only what you map. Use INSTEAD of ' +
|
|
310
|
+
'hand-editing JSON. Give a REFERENCE (section_name from ' +
|
|
311
|
+
'template_summary, or element_path) + list_source_name + a leaf_map ' +
|
|
312
|
+
'(original leaf field-name → flat flow field; #parent + tuned props kept). ' +
|
|
313
|
+
'A section with several source blocks (Played/Next/Later) dynamizes in ONE ' +
|
|
314
|
+
'call via source_map ({match, source_name, leaf_map?}[]). Sub-query panels: ' +
|
|
315
|
+
'key by "<subquery>.<leaf>". Returns page + `summary`. Requires page.title. ' +
|
|
221
316
|
'Operates on the default site unless site_id is provided.',
|
|
317
|
+
inputSchema: { site_id: SITE_ID_SCHEMA, ...PAGE_DYNAMIZE_INPUT },
|
|
318
|
+
// No outputSchema: the response is the create wire-shape (WP
|
|
319
|
+
// page_id / Joomla article_id discriminated union) plus the
|
|
320
|
+
// `summary` object — pages_create uses the same no-outputSchema
|
|
321
|
+
// pattern for its discriminated union.
|
|
322
|
+
annotations: creating('Dynamize Page'),
|
|
323
|
+
handler: async ({ site_id, ...rest }, extra) => withSiteRetry(pool, site_id, async (client, site) => withRenderContext(withSiteMeta(await handlePageDynamize(client, rest, extra), site), buildRenderContext({
|
|
324
|
+
siteUrl: site.url,
|
|
325
|
+
parentTemplateId: null,
|
|
326
|
+
locale: localeForSite(site),
|
|
327
|
+
}))),
|
|
328
|
+
}),
|
|
329
|
+
defineTool({
|
|
330
|
+
name: 'yootheme_builder_pages_delete',
|
|
331
|
+
description: 'Delete a page (WordPress) or article (Joomla 5/6) with its YOOtheme per-page ' +
|
|
332
|
+
'layout. Requires confirm:true (gate against accidental deletion). Default: trash ' +
|
|
333
|
+
'(recoverable). force:true: permanent delete. Refuses non-page/article types with ' +
|
|
334
|
+
'403 (Layer 9 defense). Returns deleted:true, page_id (WP) / article_id (Joomla), ' +
|
|
335
|
+
'force_deleted, bumped etag. Operates on the default site unless site_id is provided.',
|
|
222
336
|
inputSchema: { site_id: SITE_ID_SCHEMA, ...PAGES_DELETE_INPUT },
|
|
223
337
|
outputSchema: PAGES_DELETE_OUTPUT_SCHEMA,
|
|
224
338
|
annotations: mutating('Delete Page'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/tools/pages/builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,16 +9,51 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { type RestClient } from '../../client.js';
|
|
11
11
|
import { type ToolResult } from '../tool-builder.js';
|
|
12
|
-
export declare function handlePagesList(client: RestClient, { fields }: {
|
|
12
|
+
export declare function handlePagesList(client: RestClient, { fields, limit, cursor, label_contains, max_chars, }: {
|
|
13
13
|
fields?: readonly string[];
|
|
14
|
+
limit?: number;
|
|
15
|
+
cursor?: string;
|
|
16
|
+
label_contains?: string;
|
|
17
|
+
max_chars?: number;
|
|
14
18
|
}): Promise<ToolResult>;
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
/** Structured shape returned by GET /pages/resolve on success. */
|
|
20
|
+
export interface ResolvedTemplate {
|
|
21
|
+
readonly template_id: string;
|
|
22
|
+
readonly post_id: number;
|
|
23
|
+
readonly type: string;
|
|
24
|
+
readonly frontend_url: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* G-A (Track-C URL→layout): GET /pages/resolve?url=... → the per-page
|
|
28
|
+
* `template_id` that renders the URL. Returns the structured result on a
|
|
29
|
+
* 200; throws (RestError 404) when the URL renders via a theme template or
|
|
30
|
+
* carries no YT per-page layout — the caller surfaces the steer-to-pages_list
|
|
31
|
+
* hint. Shared by the `pages_resolve` tool AND the `url`-param fast-path in
|
|
32
|
+
* page_get_layout / page_get_schema (one internal REST call → one MCP call
|
|
33
|
+
* yields the layout).
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveUrlToTemplate(client: RestClient, url: string): Promise<ResolvedTemplate>;
|
|
36
|
+
export declare function handlePagesResolve(client: RestClient, { url }: {
|
|
37
|
+
url: string;
|
|
38
|
+
}): Promise<ToolResult>;
|
|
39
|
+
/** Test-only: clear the dedup cache between cases (mirrors the bus reset idiom). */
|
|
40
|
+
export declare function __resetLayoutDedupCacheForTests(): void;
|
|
41
|
+
export declare function handlePageGetLayout(client: RestClient, { template_id, post_id, url, flat, fields, mode, force, max_chars }: {
|
|
42
|
+
template_id?: string;
|
|
43
|
+
post_id?: number;
|
|
44
|
+
url?: string;
|
|
17
45
|
flat?: boolean;
|
|
18
46
|
fields?: readonly string[];
|
|
47
|
+
mode?: 'full' | 'bindings_only';
|
|
48
|
+
force?: boolean;
|
|
49
|
+
max_chars?: number;
|
|
19
50
|
}): Promise<ToolResult>;
|
|
20
|
-
export declare function handlePageGetSchema(client: RestClient, { template_id }: {
|
|
21
|
-
template_id
|
|
51
|
+
export declare function handlePageGetSchema(client: RestClient, { template_id, post_id, url, fields, max_chars }: {
|
|
52
|
+
template_id?: string;
|
|
53
|
+
post_id?: number;
|
|
54
|
+
url?: string;
|
|
55
|
+
fields?: readonly string[];
|
|
56
|
+
max_chars?: number;
|
|
22
57
|
}): Promise<ToolResult>;
|
|
23
58
|
export declare function handleGetEtag(client: RestClient): Promise<ToolResult>;
|
|
24
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-read.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/handlers-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers-read.d.ts","sourceRoot":"","sources":["../../../src/tools/pages/handlers-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAqBpE,OAAO,EAIH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAgC5B,wBAAsB,eAAe,CACjC,MAAM,EAAE,UAAU,EAClB,EACI,MAAM,EACN,KAAK,EACL,MAAM,EACN,cAAc,EACd,SAAS,GACZ,EAAE;IACC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GACF,OAAO,CAAC,UAAU,CAAC,CAmFrB;AAID,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAI3B;AAED,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,UAAU,EAClB,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAsBD,oFAAoF;AACpF,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAoID,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GACF,OAAO,CAAC,UAAU,CAAC,CAmLrB;AAID,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GACF,OAAO,CAAC,UAAU,CAAC,CA4ErB;AAID,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB3E;AAID;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,UAAU,EAClB,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,UAAU,CAAC,CA8CrB"}
|