@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.
Files changed (241) hide show
  1. package/README.md +16 -12
  2. package/dist/catalog/build-catalog.d.ts +63 -0
  3. package/dist/catalog/build-catalog.d.ts.map +1 -0
  4. package/dist/catalog/build-catalog.js +166 -0
  5. package/dist/catalog/build-catalog.js.map +1 -0
  6. package/dist/cli/doctor-command.d.ts +21 -0
  7. package/dist/cli/doctor-command.d.ts.map +1 -0
  8. package/dist/cli/doctor-command.js +111 -0
  9. package/dist/cli/doctor-command.js.map +1 -0
  10. package/dist/cli/invocation-decision.d.ts.map +1 -1
  11. package/dist/cli/invocation-decision.js +2 -0
  12. package/dist/cli/invocation-decision.js.map +1 -1
  13. package/dist/client.d.ts +14 -0
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +9 -0
  16. package/dist/client.js.map +1 -1
  17. package/dist/diagnostics/ca-trust.d.ts +16 -0
  18. package/dist/diagnostics/ca-trust.d.ts.map +1 -0
  19. package/dist/diagnostics/ca-trust.js +54 -0
  20. package/dist/diagnostics/ca-trust.js.map +1 -0
  21. package/dist/diagnostics/diagnose-network-error.d.ts +37 -0
  22. package/dist/diagnostics/diagnose-network-error.d.ts.map +1 -0
  23. package/dist/diagnostics/diagnose-network-error.js +158 -0
  24. package/dist/diagnostics/diagnose-network-error.js.map +1 -0
  25. package/dist/diagnostics/doctor.d.ts +62 -0
  26. package/dist/diagnostics/doctor.d.ts.map +1 -0
  27. package/dist/diagnostics/doctor.js +165 -0
  28. package/dist/diagnostics/doctor.js.map +1 -0
  29. package/dist/gateway/advanced-read-tool.d.ts +37 -0
  30. package/dist/gateway/advanced-read-tool.d.ts.map +1 -0
  31. package/dist/gateway/advanced-read-tool.js +156 -0
  32. package/dist/gateway/advanced-read-tool.js.map +1 -0
  33. package/dist/gateway/advanced-tool/domains.d.ts +18 -3
  34. package/dist/gateway/advanced-tool/domains.d.ts.map +1 -1
  35. package/dist/gateway/advanced-tool/domains.js +28 -9
  36. package/dist/gateway/advanced-tool/domains.js.map +1 -1
  37. package/dist/gateway/advanced-tool/register.d.ts.map +1 -1
  38. package/dist/gateway/advanced-tool/register.js +43 -11
  39. package/dist/gateway/advanced-tool/register.js.map +1 -1
  40. package/dist/gateway/essentials.d.ts +14 -4
  41. package/dist/gateway/essentials.d.ts.map +1 -1
  42. package/dist/gateway/essentials.js +46 -5
  43. package/dist/gateway/essentials.js.map +1 -1
  44. package/dist/gateway/test-support.d.ts +2 -2
  45. package/dist/gateway/test-support.js +2 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +45 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/install-skill.d.ts +1 -1
  50. package/dist/install-skill.js +2 -2
  51. package/dist/net/extra-headers.d.ts +66 -0
  52. package/dist/net/extra-headers.d.ts.map +1 -0
  53. package/dist/net/extra-headers.js +164 -0
  54. package/dist/net/extra-headers.js.map +1 -0
  55. package/dist/net/internal-host.d.ts +45 -0
  56. package/dist/net/internal-host.d.ts.map +1 -0
  57. package/dist/net/internal-host.js +164 -0
  58. package/dist/net/internal-host.js.map +1 -0
  59. package/dist/net/proxy-dispatcher.d.ts +40 -0
  60. package/dist/net/proxy-dispatcher.d.ts.map +1 -0
  61. package/dist/net/proxy-dispatcher.js +65 -0
  62. package/dist/net/proxy-dispatcher.js.map +1 -0
  63. package/dist/proxy/bridge.d.ts +43 -0
  64. package/dist/proxy/bridge.d.ts.map +1 -0
  65. package/dist/proxy/bridge.js +155 -0
  66. package/dist/proxy/bridge.js.map +1 -0
  67. package/dist/proxy/mode.d.ts +10 -0
  68. package/dist/proxy/mode.d.ts.map +1 -0
  69. package/dist/proxy/mode.js +20 -0
  70. package/dist/proxy/mode.js.map +1 -0
  71. package/dist/server.d.ts +5 -3
  72. package/dist/server.d.ts.map +1 -1
  73. package/dist/server.js +13 -3
  74. package/dist/server.js.map +1 -1
  75. package/dist/setup-ca-env.d.ts +40 -0
  76. package/dist/setup-ca-env.d.ts.map +1 -0
  77. package/dist/setup-ca-env.js +58 -0
  78. package/dist/setup-ca-env.js.map +1 -0
  79. package/dist/setup-ca-reprobe.d.ts +38 -0
  80. package/dist/setup-ca-reprobe.d.ts.map +1 -0
  81. package/dist/setup-ca-reprobe.js +68 -0
  82. package/dist/setup-ca-reprobe.js.map +1 -0
  83. package/dist/setup-cli.d.ts +37 -2
  84. package/dist/setup-cli.d.ts.map +1 -1
  85. package/dist/setup-cli.js +178 -4
  86. package/dist/setup-cli.js.map +1 -1
  87. package/dist/setup-npx-spec.d.ts +44 -0
  88. package/dist/setup-npx-spec.d.ts.map +1 -0
  89. package/dist/setup-npx-spec.js +66 -0
  90. package/dist/setup-npx-spec.js.map +1 -0
  91. package/dist/setup-prompts.d.ts +14 -1
  92. package/dist/setup-prompts.d.ts.map +1 -1
  93. package/dist/setup-prompts.js +53 -1
  94. package/dist/setup-prompts.js.map +1 -1
  95. package/dist/setup-wizard-defaults.d.ts.map +1 -1
  96. package/dist/setup-wizard-defaults.js +29 -5
  97. package/dist/setup-wizard-defaults.js.map +1 -1
  98. package/dist/setup-wizard-handshake.d.ts +4 -4
  99. package/dist/setup-wizard-handshake.d.ts.map +1 -1
  100. package/dist/setup-wizard-handshake.js +46 -12
  101. package/dist/setup-wizard-handshake.js.map +1 -1
  102. package/dist/setup-wizard-types.d.ts +81 -0
  103. package/dist/setup-wizard-types.d.ts.map +1 -1
  104. package/dist/setup-wizard.d.ts +2 -2
  105. package/dist/setup-wizard.d.ts.map +1 -1
  106. package/dist/setup-wizard.js +140 -18
  107. package/dist/setup-wizard.js.map +1 -1
  108. package/dist/sites/client-pool.d.ts +8 -1
  109. package/dist/sites/client-pool.d.ts.map +1 -1
  110. package/dist/sites/client-pool.js +34 -4
  111. package/dist/sites/client-pool.js.map +1 -1
  112. package/dist/sites/registry.d.ts +30 -0
  113. package/dist/sites/registry.d.ts.map +1 -1
  114. package/dist/sites/registry.js.map +1 -1
  115. package/dist/sites/store.d.ts +8 -1
  116. package/dist/sites/store.d.ts.map +1 -1
  117. package/dist/sites/store.js +17 -2
  118. package/dist/sites/store.js.map +1 -1
  119. package/dist/sites/tools/use-site.d.ts.map +1 -1
  120. package/dist/sites/tools/use-site.js +26 -6
  121. package/dist/sites/tools/use-site.js.map +1 -1
  122. package/dist/tools/bind-guidance.d.ts +80 -0
  123. package/dist/tools/bind-guidance.d.ts.map +1 -0
  124. package/dist/tools/bind-guidance.js +95 -0
  125. package/dist/tools/bind-guidance.js.map +1 -0
  126. package/dist/tools/elements/builders.d.ts.map +1 -1
  127. package/dist/tools/elements/builders.js +63 -13
  128. package/dist/tools/elements/builders.js.map +1 -1
  129. package/dist/tools/elements/handlers-write.d.ts +19 -2
  130. package/dist/tools/elements/handlers-write.d.ts.map +1 -1
  131. package/dist/tools/elements/handlers-write.js +179 -10
  132. package/dist/tools/elements/handlers-write.js.map +1 -1
  133. package/dist/tools/elements/handlers.d.ts +8 -2
  134. package/dist/tools/elements/handlers.d.ts.map +1 -1
  135. package/dist/tools/elements/handlers.js +76 -28
  136. package/dist/tools/elements/handlers.js.map +1 -1
  137. package/dist/tools/elements/layout-hierarchy-rules.d.ts +62 -0
  138. package/dist/tools/elements/layout-hierarchy-rules.d.ts.map +1 -0
  139. package/dist/tools/elements/layout-hierarchy-rules.js +154 -0
  140. package/dist/tools/elements/layout-hierarchy-rules.js.map +1 -0
  141. package/dist/tools/format/elements-format.d.ts +35 -0
  142. package/dist/tools/format/elements-format.d.ts.map +1 -1
  143. package/dist/tools/format/elements-format.js +124 -1
  144. package/dist/tools/format/elements-format.js.map +1 -1
  145. package/dist/tools/format/health-format.d.ts +3 -0
  146. package/dist/tools/format/health-format.d.ts.map +1 -1
  147. package/dist/tools/format/health-format.js +21 -4
  148. package/dist/tools/format/health-format.js.map +1 -1
  149. package/dist/tools/format/inspection-format.d.ts +18 -0
  150. package/dist/tools/format/inspection-format.d.ts.map +1 -1
  151. package/dist/tools/format/inspection-format.js +22 -1
  152. package/dist/tools/format/inspection-format.js.map +1 -1
  153. package/dist/tools/format/pages-format.d.ts.map +1 -1
  154. package/dist/tools/format/pages-format.js +7 -0
  155. package/dist/tools/format/pages-format.js.map +1 -1
  156. package/dist/tools/format/sources-format.d.ts +8 -0
  157. package/dist/tools/format/sources-format.d.ts.map +1 -1
  158. package/dist/tools/format/sources-format.js +10 -0
  159. package/dist/tools/format/sources-format.js.map +1 -1
  160. package/dist/tools/health.d.ts.map +1 -1
  161. package/dist/tools/health.js +56 -0
  162. package/dist/tools/health.js.map +1 -1
  163. package/dist/tools/index.d.ts.map +1 -1
  164. package/dist/tools/index.js +4 -0
  165. package/dist/tools/index.js.map +1 -1
  166. package/dist/tools/inspection.d.ts +24 -0
  167. package/dist/tools/inspection.d.ts.map +1 -1
  168. package/dist/tools/inspection.js +140 -41
  169. package/dist/tools/inspection.js.map +1 -1
  170. package/dist/tools/layout-flatten.d.ts +11 -8
  171. package/dist/tools/layout-flatten.d.ts.map +1 -1
  172. package/dist/tools/layout-flatten.js +17 -6
  173. package/dist/tools/layout-flatten.js.map +1 -1
  174. package/dist/tools/multi-items/builders.d.ts.map +1 -1
  175. package/dist/tools/multi-items/builders.js +11 -2
  176. package/dist/tools/multi-items/builders.js.map +1 -1
  177. package/dist/tools/multi-items/inspect-handler.d.ts +13 -0
  178. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
  179. package/dist/tools/multi-items/inspect-handler.js +147 -3
  180. package/dist/tools/multi-items/inspect-handler.js.map +1 -1
  181. package/dist/tools/pages/builders.d.ts.map +1 -1
  182. package/dist/tools/pages/builders.js +153 -39
  183. package/dist/tools/pages/builders.js.map +1 -1
  184. package/dist/tools/pages/handlers-read.d.ts +40 -5
  185. package/dist/tools/pages/handlers-read.d.ts.map +1 -1
  186. package/dist/tools/pages/handlers-read.js +404 -76
  187. package/dist/tools/pages/handlers-read.js.map +1 -1
  188. package/dist/tools/pages/handlers-write.d.ts +95 -1
  189. package/dist/tools/pages/handlers-write.d.ts.map +1 -1
  190. package/dist/tools/pages/handlers-write.js +137 -8
  191. package/dist/tools/pages/handlers-write.js.map +1 -1
  192. package/dist/tools/pages/index.d.ts +1 -1
  193. package/dist/tools/pages/index.d.ts.map +1 -1
  194. package/dist/tools/pages/index.js +1 -1
  195. package/dist/tools/pages/index.js.map +1 -1
  196. package/dist/tools/pages/schemas.d.ts +74 -5
  197. package/dist/tools/pages/schemas.d.ts.map +1 -1
  198. package/dist/tools/pages/schemas.js +243 -8
  199. package/dist/tools/pages/schemas.js.map +1 -1
  200. package/dist/tools/shared-schemas.d.ts +3 -0
  201. package/dist/tools/shared-schemas.d.ts.map +1 -1
  202. package/dist/tools/shared-schemas.js +43 -13
  203. package/dist/tools/shared-schemas.js.map +1 -1
  204. package/dist/tools/sources/builders.d.ts.map +1 -1
  205. package/dist/tools/sources/builders.js +93 -10
  206. package/dist/tools/sources/builders.js.map +1 -1
  207. package/dist/tools/sources/handlers-bind.d.ts +13 -1
  208. package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
  209. package/dist/tools/sources/handlers-bind.js +163 -1
  210. package/dist/tools/sources/handlers-bind.js.map +1 -1
  211. package/dist/tools/sources/handlers.d.ts +12 -1
  212. package/dist/tools/sources/handlers.d.ts.map +1 -1
  213. package/dist/tools/sources/handlers.js +103 -16
  214. package/dist/tools/sources/handlers.js.map +1 -1
  215. package/dist/tools/sparse-fields.d.ts +73 -0
  216. package/dist/tools/sparse-fields.d.ts.map +1 -1
  217. package/dist/tools/sparse-fields.js +136 -0
  218. package/dist/tools/sparse-fields.js.map +1 -1
  219. package/dist/tools/sublayout/builders.d.ts +23 -0
  220. package/dist/tools/sublayout/builders.d.ts.map +1 -0
  221. package/dist/tools/sublayout/builders.js +54 -0
  222. package/dist/tools/sublayout/builders.js.map +1 -0
  223. package/dist/tools/sublayout/index.d.ts +13 -0
  224. package/dist/tools/sublayout/index.d.ts.map +1 -0
  225. package/dist/tools/sublayout/index.js +13 -0
  226. package/dist/tools/sublayout/index.js.map +1 -0
  227. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts +95 -0
  228. package/dist/tools/sublayout/inspect-sublayout-handler.d.ts.map +1 -0
  229. package/dist/tools/sublayout/inspect-sublayout-handler.js +181 -0
  230. package/dist/tools/sublayout/inspect-sublayout-handler.js.map +1 -0
  231. package/dist/tools/tool-builder/results.d.ts +31 -0
  232. package/dist/tools/tool-builder/results.d.ts.map +1 -1
  233. package/dist/tools/tool-builder/results.js +95 -4
  234. package/dist/tools/tool-builder/results.js.map +1 -1
  235. package/dist/update/update-check.d.ts +56 -0
  236. package/dist/update/update-check.d.ts.map +1 -0
  237. package/dist/update/update-check.js +155 -0
  238. package/dist/update/update-check.js.map +1 -0
  239. package/manifest.json +1 -1
  240. package/package.json +5 -2
  241. package/skills/yt-builder-mcp/SKILL.md +148 -82
@@ -13,6 +13,7 @@
13
13
  */
14
14
  import { elicitConfirmation } from '@getimo/mcp-toolkit';
15
15
  import { encodeElementPath, encodeTemplateId } from '../../client.js';
16
+ import { BIND_VIA_GATEWAY_EXAMPLE, BIND_VIA_GATEWAY_HINT } from '../bind-guidance.js';
16
17
  import { PHASE_CONFIRM, PHASE_SEND } from '../progress-phases.js';
17
18
  import { confirmGuard, createProgressReporter, errorResult, jsonResult, } from '../tool-builder.js';
18
19
  // ─── Wave-7 (2026-05-29): props validation ──────────────────────────
@@ -113,18 +114,32 @@ function rejectOnPropTypos(props, elementType) {
113
114
  const findings = detectPropTypos(props, elementType);
114
115
  if (findings.length === 0)
115
116
  return null;
117
+ // F14 (2026-06-09): name the CANONICAL prop explicitly + imperatively
118
+ // (`use \`content\` instead of \`title\``) rather than only posing it
119
+ // as a question. A cold agent that hit `element_add headline {title}`
120
+ // got the element rendered empty because YT-Pro silently drops the
121
+ // unknown alias; the error must state the right key so the agent can
122
+ // self-correct in one step without a schema round-trip.
116
123
  const summary = findings
117
- .map((f) => `\`${f.typo}\` did you mean \`${f.suggested}\`?`)
124
+ .map((f) => `use \`${f.suggested}\` instead of \`${f.typo}\``)
118
125
  .join('; ');
126
+ // Lead with the single most-likely fix so the canonical key is the
127
+ // first concrete token the agent reads.
128
+ const primary = findings[0];
129
+ const rename = primary !== undefined
130
+ ? `Rename \`${primary.typo}\` → \`${primary.suggested}\`. `
131
+ : '';
119
132
  return errorResult({
120
133
  error: new Error(`Unknown prop(s) for element type \`${elementType}\`: ${summary}. ` +
134
+ rename +
121
135
  'YT-Pro silently drops unknown props server-side, so the element would render empty. ' +
122
136
  'Call yootheme_builder_element_type_get_schema to see the canonical prop keys.'),
123
137
  context: {
124
138
  element_type: elementType,
125
139
  findings,
126
140
  },
127
- hint: 'Re-try with the suggested canonical key, or fetch the schema first: ' +
141
+ hint: `Re-try with the canonical key (e.g. \`${primary?.suggested ?? 'content'}\`), ` +
142
+ 'or fetch the schema first: ' +
128
143
  `yootheme_builder_element_type_get_schema({ element_type: "${elementType}" }).`,
129
144
  });
130
145
  }
@@ -144,26 +159,150 @@ function validatePropsForReservedKeys(props, elementType) {
144
159
  .map((k) => `\`${k}\``)
145
160
  .join(', ')} are NOT valid props for element type \`${elementType}\`. ` +
146
161
  `Source binding lives as a SIBLING of \`props\` on the element node, ` +
147
- `NOT nested inside props. Use \`yootheme_builder_element_bind_source\` ` +
148
- `to set the source — it writes the binding at the correct nesting level. ` +
149
- `For per-prop leaf bindings (headline.content, etc.) use \`element_bind_source\` ` +
150
- `with the prop name in its \`props\` argument.`),
162
+ `NOT nested inside props. Set the source via the gateway: ` +
163
+ `${BIND_VIA_GATEWAY_EXAMPLE} — it writes the binding at the correct ` +
164
+ `nesting level (the bind tool is advanced, not in tools/list). ` +
165
+ `For per-prop leaf bindings (headline.content, etc.) pass the prop name ` +
166
+ `inside the \`field_mappings\` argument of that same call. ` +
167
+ // F97 (2026-06-10): a FILTERED prop (e.g. a `_condition` that
168
+ // renders a row only when a field is non-empty) is the most
169
+ // common reason an agent reaches for a raw `source` here. The
170
+ // theme-canonical, validated path is the field_mappings OBJECT
171
+ // form on element_bind_source — name it so the agent never has
172
+ // to hand-author a dead `source` blob nor build pre-filtered
173
+ // flows as a workaround.
174
+ `For a FILTERED prop (e.g. a \`_condition\` that shows a row only when a ` +
175
+ `field is set) use the field_mappings OBJECT form: ` +
176
+ `field_mappings: { _condition: { name: "<field>", filters: { condition: "!!" } } } ` +
177
+ `(\`"!!"\` = render only when non-empty, \`"!"\` = only when empty; a bare ` +
178
+ `_condition with no filters operator renders ALWAYS). Date-format leaves use ` +
179
+ `{ name: "<field>", filters: { date: "D, d.m.y" } }.`),
151
180
  context: { element_type: elementType, offending_keys: offending },
152
181
  hint: 'Run yootheme_builder_element_type_get_schema to see the binding contract ' +
153
- '(do_not section lists this anti-pattern). Then call element_bind_source.',
182
+ `(do_not section lists this anti-pattern). Then ${BIND_VIA_GATEWAY_HINT} ` +
183
+ 'For filtered props pass the field_mappings object form ' +
184
+ '({ <prop>: { name, filters } }) on element_bind_source.',
154
185
  });
155
186
  }
187
+ // ─── children-tree guard (F132, Wave 4a) ─────────────────────────────
188
+ //
189
+ // `element_add` accepts a `children` array of arbitrary element objects.
190
+ // Before Wave 4a only the top-level `props` were validated, so a cold agent
191
+ // building a grid+grid_item tree in ONE element_add could smuggle the exact
192
+ // forbidden shapes through the children:
193
+ //
194
+ // children: [{ type:'grid_item', source:{query:…}, props:{title:…} }]
195
+ //
196
+ // `source` is a SIBLING of `props` on YT-Pro element nodes; hand-authoring it
197
+ // (or `source_extended` / `source_node`) never resolves in a stored layout —
198
+ // the render silently produces 0 rows while element_add returns success. The
199
+ // same applies to per-prop typos (`title` on a headline → empty headline).
200
+ //
201
+ // This walks the whole children subtree and applies the SAME two guards that
202
+ // protect top-level props, plus a sibling-`source` rejection per node.
203
+ function elementTypeOfChild(node) {
204
+ const t = node.type;
205
+ if (typeof t === 'string' && t !== '')
206
+ return t;
207
+ const et = node.element_type;
208
+ if (typeof et === 'string' && et !== '')
209
+ return et;
210
+ return '<child>';
211
+ }
212
+ function rejectSourceSiblingOnChild(node, elementType) {
213
+ const offending = [...RESERVED_BINDING_KEYS].filter((k) => k in node);
214
+ if (offending.length === 0)
215
+ return null;
216
+ return errorResult({
217
+ error: new Error(`Hand-authored binding key(s) ${offending
218
+ .map((k) => `\`${k}\``)
219
+ .join(', ')} found on a \`children\` node (element type \`${elementType}\`). ` +
220
+ `A source binding must NOT be hand-authored inside an element_add tree — ` +
221
+ `the stored layout silently renders 0 rows. Add the bare container/child ` +
222
+ `structure first, then bind with \`yootheme_builder_element_bind_source\`, ` +
223
+ `which writes the binding at the correct nesting level.`),
224
+ context: { element_type: elementType, offending_keys: offending },
225
+ hint: 'Remove `source` / `source_extended` / `source_node` from the children tree. ' +
226
+ 'Build the structure, then call yootheme_builder_element_bind_source. See ' +
227
+ 'yootheme_builder_element_type_get_schema (do_not section).',
228
+ });
229
+ }
230
+ /**
231
+ * Recursively validate a `children` array: each node's own `props` is run
232
+ * through the reserved-key + prop-typo guards, the node itself is checked
233
+ * for a hand-authored `source` sibling, and nested `children` recurse.
234
+ * Returns the FIRST rejection found, or null when the whole tree is clean.
235
+ */
236
+ function validateChildrenTree(children) {
237
+ if (!Array.isArray(children))
238
+ return null;
239
+ for (const raw of children) {
240
+ if (raw === null || typeof raw !== 'object')
241
+ continue;
242
+ const node = raw;
243
+ const elementType = elementTypeOfChild(node);
244
+ const sourceRejection = rejectSourceSiblingOnChild(node, elementType);
245
+ if (sourceRejection !== null)
246
+ return sourceRejection;
247
+ const props = node.props !== null && typeof node.props === 'object'
248
+ ? node.props
249
+ : undefined;
250
+ const propsRejection = validatePropsForReservedKeys(props, elementType);
251
+ if (propsRejection !== null)
252
+ return propsRejection;
253
+ const typoRejection = rejectOnPropTypos(props, elementType);
254
+ if (typoRejection !== null)
255
+ return typoRejection;
256
+ const nested = validateChildrenTree(node.children);
257
+ if (nested !== null)
258
+ return nested;
259
+ }
260
+ return null;
261
+ }
156
262
  // ─── element_add ─────────────────────────────────────────────────────
157
263
  export async function handleElementAdd({ client }, input, extra) {
158
- const { template_id, etag, ...body } = input;
264
+ // Union of F165 (type_name element_type alias) and F70 (position →
265
+ // index alias). Both aliases are folded onto their canonical keys and
266
+ // stripped so they never leak into the REST body. The canonical key
267
+ // wins when both are supplied.
268
+ const { template_id, etag, type_name, index, position, ...rest } = input;
269
+ const elementType = typeof rest.element_type === 'string' && rest.element_type !== ''
270
+ ? rest.element_type
271
+ : typeof type_name === 'string'
272
+ ? type_name
273
+ : '';
274
+ if (elementType === '') {
275
+ return errorResult({
276
+ error: new Error('element_type is required.'),
277
+ context: { template_id },
278
+ hint: 'Provide `element_type` (e.g. "grid"; `type_name` is accepted as an ' +
279
+ 'alias). Use yootheme_builder_element_types_list for the catalogue.',
280
+ });
281
+ }
282
+ // F70: index wins over the position alias; absent → body carries no
283
+ // index (server appends), preserving the historical append request.
284
+ const resolvedIndex = index ?? position;
285
+ const body = {
286
+ parent_path: typeof rest.parent_path === 'string' ? rest.parent_path : '',
287
+ element_type: elementType,
288
+ ...(rest.props !== undefined ? { props: rest.props } : {}),
289
+ ...(rest.children !== undefined ? { children: rest.children } : {}),
290
+ ...(resolvedIndex !== undefined ? { index: resolvedIndex } : {}),
291
+ };
159
292
  // Wave-7: guard against hand-authored source/source_extended in props.
160
- const propsRejection = validatePropsForReservedKeys(input.props, input.element_type);
293
+ const propsRejection = validatePropsForReservedKeys(input.props, elementType);
161
294
  if (propsRejection !== null)
162
295
  return propsRejection;
163
296
  // Wave-7: guard against common prop-key typos (title→content etc.).
164
- const typoRejection = rejectOnPropTypos(input.props, input.element_type);
297
+ const typoRejection = rejectOnPropTypos(input.props, elementType);
165
298
  if (typoRejection !== null)
166
299
  return typoRejection;
300
+ // F132 (Wave 4a): the same guards must reach the `children` subtree —
301
+ // otherwise a single element_add can smuggle a forbidden source/typo
302
+ // through a nested child and silently render 0 rows.
303
+ const childrenRejection = validateChildrenTree(input.children);
304
+ if (childrenRejection !== null)
305
+ return childrenRejection;
167
306
  const progress = extra ? createProgressReporter(extra) : null;
168
307
  await progress?.report(0, 2, PHASE_SEND);
169
308
  try {
@@ -180,6 +319,36 @@ export async function handleElementAdd({ client }, input, extra) {
180
319
  });
181
320
  }
182
321
  }
322
+ // ─── scaffold_section (WF2 Option C) ─────────────────────────────────
323
+ /**
324
+ * `scaffold_section` — POST /pages/{template_id}/elements/scaffold-section.
325
+ *
326
+ * Create a VALID `section → row → column` hull (optionally N columns) in ONE
327
+ * atomic call and return the column pointer(s) to drop content into. This is
328
+ * the positive-steering counterpart to the server-side hierarchy guard: it
329
+ * makes the correct structure the cheapest path, so the guard rarely fires.
330
+ * The whole hull lands in a single server-side transaction (one ETag bump).
331
+ */
332
+ export async function handleScaffoldSection({ client }, input, extra) {
333
+ const { template_id, columns, etag } = input;
334
+ const progress = extra ? createProgressReporter(extra) : null;
335
+ await progress?.report(0, 2, PHASE_SEND);
336
+ try {
337
+ const body = columns !== undefined ? { columns } : {};
338
+ const data = await client.post(`/pages/${encodeTemplateId(template_id)}/elements/scaffold-section`, { body, etag });
339
+ await progress?.report(2, 2, PHASE_CONFIRM);
340
+ return jsonResult(data);
341
+ }
342
+ catch (e) {
343
+ return errorResult({
344
+ error: e,
345
+ context: { template_id, columns },
346
+ hint: 'On 412 refresh via yootheme_builder_get_etag and retry. The response ' +
347
+ '`column_paths` are valid parents for yootheme_builder_element_add — ' +
348
+ 'drop your content elements into those columns.',
349
+ });
350
+ }
351
+ }
183
352
  // ─── element_update_settings ─────────────────────────────────────────
184
353
  export async function handleElementUpdateSettings({ client }, input, extra) {
185
354
  const { template_id, element_path, props, merge, etag } = input;
@@ -1 +1 @@
1
- {"version":3,"file":"handlers-write.js","sourceRoot":"","sources":["../../../src/tools/elements/handlers-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers-write.js","sourceRoot":"","sources":["../../../src/tools/elements/handlers-write.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,8 @@ export declare const ELEMENT_LIST_OUTPUT_SCHEMA: z.ZodObject<{
27
27
  parent_path: z.ZodOptional<z.ZodString>;
28
28
  label: z.ZodOptional<z.ZodString>;
29
29
  has_binding: z.ZodOptional<z.ZodBoolean>;
30
+ source: z.ZodOptional<z.ZodUnknown>;
31
+ binding_summary: z.ZodOptional<z.ZodString>;
30
32
  }, z.core.$loose>>;
31
33
  total: z.ZodNumber;
32
34
  template_id: z.ZodString;
@@ -34,6 +36,7 @@ export declare const ELEMENT_LIST_OUTPUT_SCHEMA: z.ZodObject<{
34
36
  projected_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
37
  available_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
38
  unknown_fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
39
+ projection_warning: z.ZodOptional<z.ZodString>;
37
40
  }, z.core.$strip>;
38
41
  export declare const ELEMENT_GET_OUTPUT_SCHEMA: z.ZodObject<{
39
42
  template_id: z.ZodString;
@@ -42,6 +45,8 @@ export declare const ELEMENT_GET_OUTPUT_SCHEMA: z.ZodObject<{
42
45
  label: z.ZodOptional<z.ZodString>;
43
46
  props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
44
47
  children_count: z.ZodNumber;
48
+ source: z.ZodOptional<z.ZodUnknown>;
49
+ binding_summary: z.ZodOptional<z.ZodString>;
45
50
  }, z.core.$strip>;
46
51
  export interface ElementsHandlerDeps {
47
52
  readonly client: RestClient;
@@ -54,17 +59,18 @@ export interface ElementsHandlerDeps {
54
59
  */
55
60
  readonly elicitation?: McpServerWithElicitation;
56
61
  }
57
- export declare function handleElementList({ client }: ElementsHandlerDeps, { template_id, fields, root_path, depth, limit, cursor, }: {
62
+ export declare function handleElementList({ client }: ElementsHandlerDeps, { template_id, fields, root_path, depth, limit, cursor, max_chars, }: {
58
63
  template_id: string;
59
64
  fields?: readonly string[];
60
65
  root_path?: string;
61
66
  depth?: number;
62
67
  limit?: number;
63
68
  cursor?: string;
69
+ max_chars?: number;
64
70
  }): Promise<ToolResult>;
65
71
  export declare function handleElementGet({ client }: ElementsHandlerDeps, { template_id, element_path }: {
66
72
  template_id: string;
67
73
  element_path: string;
68
74
  }): Promise<ToolResult>;
69
- export { handleElementAdd, handleElementClone, handleElementDelete, handleElementMove, handleElementUpdateSettings, } from './handlers-write.js';
75
+ export { handleElementAdd, handleElementClone, handleElementDelete, handleElementMove, handleElementUpdateSettings, handleScaffoldSection, } from './handlers-write.js';
70
76
  //# sourceMappingURL=handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/elements/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEvF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAalE,OAAO,EAGH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;iBA6DrC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;iBAOpC,CAAC;AAIH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACnD;AAsDD,wBAAsB,iBAAiB,CACnC,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAC/B,EACI,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,KAAK,EACL,MAAM,GACT,EAAE;IACC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,GACF,OAAO,CAAC,UAAU,CAAC,CAgIrB;AAID,wBAAsB,gBAAgB,CAClC,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAC/B,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,CAAC,CA8CrB;AAGD,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,GAC9B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/elements/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEvF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAiBlE,OAAO,EAGH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;iBAkFrC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;iBAYpC,CAAC;AAIH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACnD;AAiCD,wBAAsB,iBAAiB,CACnC,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAC/B,EACI,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,KAAK,EACL,MAAM,EACN,SAAS,GACZ,EAAE;IACC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GACF,OAAO,CAAC,UAAU,CAAC,CA2IrB;AAID,wBAAsB,gBAAgB,CAClC,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAC/B,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,CAAC,CAiFrB;AAGD,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -19,8 +19,8 @@ import { detailResult, tableResult } from '@getimo/mcp-toolkit';
19
19
  import { z } from 'zod';
20
20
  import { encodeElementPath, encodeTemplateId } from '../../client.js';
21
21
  import { RestError } from '../../errors.js';
22
- import { ELEMENTS_COMPACT_COLUMNS, ELEMENTS_TABLE_COLUMNS, buildElementDetail, mapElementRow, } from '../format/elements-format.js';
23
- import { DEFAULT_FIELDS_ELEMENT_LIST, projectFields, projectionFeedback, projectedFieldsEcho, } from '../sparse-fields.js';
22
+ import { ELEMENTS_COMPACT_COLUMNS, ELEMENTS_TABLE_COLUMNS, buildElementDetail, extractBinding, mapElementRow, } from '../format/elements-format.js';
23
+ import { DEFAULT_FIELDS_ELEMENT_LIST, applyMaxChars, columnsFromFields, projectFields, projectionFeedback, projectionWarning, projectedFieldsEcho, } from '../sparse-fields.js';
24
24
  import { errorResult, structuredResult, } from '../tool-builder.js';
25
25
  // ─── outputSchemas (Wave G.2 §4) ─────────────────────────────────────
26
26
  export const ELEMENT_LIST_OUTPUT_SCHEMA = z.object({
@@ -59,6 +59,19 @@ export const ELEMENT_LIST_OUTPUT_SCHEMA = z.object({
59
59
  .optional()
60
60
  .describe('True when this element is dynamically bound to a data ' +
61
61
  'source. Use `element_get_binding` for the full mapping.'),
62
+ // F88: surface the binding so leaf field-mappings are readable
63
+ // back without dumping the props tree. Present only on bound rows.
64
+ source: z
65
+ .unknown()
66
+ .optional()
67
+ .describe('Raw binding object when bound (e.g. `{query:{name:"#parent"},' +
68
+ 'props:{content:{name:"field.x"}}}`). Copy back into ' +
69
+ '`element_bind_source`. Present only when `has_binding` is true.'),
70
+ binding_summary: z
71
+ .string()
72
+ .optional()
73
+ .describe('Compact one-line binding: `<query> ← <el>:<field>, …`. ' +
74
+ 'Present only when bound.'),
62
75
  })
63
76
  .passthrough()),
64
77
  total: z.number(),
@@ -72,6 +85,10 @@ export const ELEMENT_LIST_OUTPUT_SCHEMA = z.object({
72
85
  // table columns. See sparse-fields.ts::projectionFeedback.
73
86
  available_fields: z.array(z.string()).optional(),
74
87
  unknown_fields: z.array(z.string()).optional(),
88
+ // F23 (2026-06-10): the LOUD unknown-projection warning also rides in
89
+ // structuredContent — hosts that surface structuredContent (not the
90
+ // text leg) to the model would otherwise never see it.
91
+ projection_warning: z.string().optional(),
75
92
  });
76
93
  export const ELEMENT_GET_OUTPUT_SCHEMA = z.object({
77
94
  template_id: z.string(),
@@ -80,27 +97,13 @@ export const ELEMENT_GET_OUTPUT_SCHEMA = z.object({
80
97
  label: z.string().optional(),
81
98
  props: z.record(z.string(), z.unknown()).optional(),
82
99
  children_count: z.number(),
100
+ // F88 (2026-06-10): when the element is bound, surface the raw binding
101
+ // object + a compact summary so a leaf's field-mappings are readable back
102
+ // (the props tree no longer has to be eyeballed). Present only when bound.
103
+ source: z.unknown().optional(),
104
+ binding_summary: z.string().optional(),
83
105
  });
84
106
  // ─── element_list ────────────────────────────────────────────────────
85
- /**
86
- * N-01 (Audit v4): build slim text-table columns from a caller-supplied
87
- * `fields[]` projection. The default compact text table truncates at
88
- * 2000 chars (~26 of 96 nodes); projecting to a couple of narrow
89
- * columns lets the FULL node list fit in the 8000-char `full` budget.
90
- *
91
- * Width heuristic: paths get a wide column, everything else a modest
92
- * one. Labels are uppercased for the header to match the toolkit style.
93
- */
94
- function columnsFromFields(fields) {
95
- return fields.map((key) => {
96
- const isPath = key === 'path' || key === 'rel_path' || key === 'parent_path';
97
- return {
98
- key,
99
- label: key.replace(/_/g, ' ').toUpperCase(),
100
- width: isPath ? 48 : 16,
101
- };
102
- });
103
- }
104
107
  /**
105
108
  * F-205 (Audit 2026-05-26): shape-validate a cursor token up-front.
106
109
  *
@@ -133,7 +136,7 @@ function isValidCursorShape(cursor) {
133
136
  return false;
134
137
  }
135
138
  }
136
- export async function handleElementList({ client }, { template_id, fields, root_path, depth, limit, cursor, }) {
139
+ export async function handleElementList({ client }, { template_id, fields, root_path, depth, limit, cursor, max_chars, }) {
137
140
  // F-205 (Audit 2026-05-26): validate cursor shape BEFORE the REST
138
141
  // call so an invalid token surfaces a structured 400 instead of
139
142
  // silently returning page 1.
@@ -165,6 +168,17 @@ export async function handleElementList({ client }, { template_id, fields, root_
165
168
  qs.set('limit', String(limit));
166
169
  if (typeof cursor === 'string' && cursor !== '')
167
170
  qs.set('cursor', cursor);
171
+ // F13 (2026-06-09): when the caller projects a nested `props.*`
172
+ // field, ask the REST plugin to attach the full props map per row
173
+ // (ElementOps::listOnTemplate honours `include=props`). The default
174
+ // row carries only `props_summary` (key names), which the row
175
+ // mapper drops — so without this opt-in the nested path would have
176
+ // nothing to project against. Mirrors page_get_layout flat-mode,
177
+ // which always carries props.
178
+ const wantsNestedProps = Array.isArray(fields) &&
179
+ fields.some((f) => f === 'props' || f.startsWith('props.'));
180
+ if (wantsNestedProps)
181
+ qs.set('include', 'props');
168
182
  const query = qs.toString();
169
183
  const data = await client.get(`/pages/${encodeTemplateId(template_id)}/elements${query !== '' ? `?${query}` : ''}`);
170
184
  // Paginated envelope uses `items`; flat shape uses `elements`.
@@ -202,9 +216,9 @@ export async function handleElementList({ client }, { template_id, fields, root_
202
216
  const items = projectFields(mapped, fields, DEFAULT_FIELDS_ELEMENT_LIST);
203
217
  const echo = projectedFieldsEcho(fields, DEFAULT_FIELDS_ELEMENT_LIST);
204
218
  const feedback = projectionFeedback(mapped, fields);
205
- const unknownNote = feedback !== undefined && feedback.unknown_fields.length > 0
206
- ? ` (unknown fields ignored: ${feedback.unknown_fields.join(', ')}; available: ${feedback.available_fields.join(', ')})`
207
- : '';
219
+ // F23 (2026-06-09): the loud text-leg warning is built by the
220
+ // shared helper so every read tool surfaces the identical signal.
221
+ const unknownNote = projectionWarning(feedback);
208
222
  // N-01 (Audit v4): when the caller passes an explicit narrow
209
223
  // `fields[]`, render the text table from the projected (slim)
210
224
  // rows with `full` detail (8000 chars) so the WHOLE node list
@@ -224,7 +238,7 @@ export async function handleElementList({ client }, { template_id, fields, root_
224
238
  header: (count) => `${String(count)} elements in template "${template_id}"${unknownNote}`,
225
239
  footer: 'Use yootheme_builder_element_get <path> for full data.',
226
240
  });
227
- return structuredResult(toolkitResult, {
241
+ return structuredResult(applyMaxChars(toolkitResult, max_chars), {
228
242
  items,
229
243
  total: typeof data.total === 'number' ? data.total : items.length,
230
244
  template_id,
@@ -235,6 +249,7 @@ export async function handleElementList({ client }, { template_id, fields, root_
235
249
  ...(feedback !== undefined ? {
236
250
  available_fields: [...feedback.available_fields],
237
251
  unknown_fields: [...feedback.unknown_fields],
252
+ ...(unknownNote.trim() !== '' ? { projection_warning: unknownNote.trim() } : {}),
238
253
  } : {}),
239
254
  });
240
255
  }
@@ -257,17 +272,47 @@ export async function handleElementGet({ client }, { template_id, element_path }
257
272
  ? data.type
258
273
  : '';
259
274
  const label = typeof data.label === 'string' ? data.label : undefined;
260
- const propsRaw = data.props;
275
+ // Cluster C3 (back-compat defense-in-depth): older deployed plugins
276
+ // serialize an EMPTY props map as a JSON array `[]` (PHP
277
+ // `json_encode([])`). The fixed producer emits `{}`, but a client
278
+ // talking to an un-upgraded host still receives `[]`. The
279
+ // `element_get` outputSchema declares `props` as a `z.record(...)`
280
+ // (object), so emitting the raw `[]` into structuredContent makes
281
+ // the host reject the response with -32602 ("expected record,
282
+ // received array"). Normalize a ZERO-LENGTH array into an empty
283
+ // object. A NON-empty array is genuinely invalid (no plugin emits
284
+ // a populated array for props) — leave it untouched so schema
285
+ // validation surfaces the real error instead of masking it.
286
+ const propsRaw = Array.isArray(data.props) && data.props.length === 0
287
+ ? {}
288
+ : data.props;
261
289
  const props = propsRaw !== null && typeof propsRaw === 'object'
262
290
  ? propsRaw
263
291
  : undefined;
264
292
  const children = Array.isArray(data.children) ? data.children : [];
293
+ // F88: read the top-level binding carriers too. element_get returns
294
+ // the raw node under `element` plus the flattened top-level keys; the
295
+ // leaf #parent binding lives in `props.source`, but a container's
296
+ // binding may live in the top-level `source` / `source_extended`. Pass
297
+ // them through so the binding is surfaced + readable back.
298
+ const rawElement = data.element !== null && typeof data.element === 'object' && !Array.isArray(data.element)
299
+ ? data.element
300
+ : {};
301
+ const topSource = data.source ?? rawElement.source;
302
+ const topSourceExtended = data.source_extended ?? rawElement.source_extended;
303
+ const binding = extractBinding({
304
+ ...(props !== undefined ? { props } : {}),
305
+ ...(topSource !== undefined ? { source: topSource } : {}),
306
+ ...(topSourceExtended !== undefined ? { source_extended: topSourceExtended } : {}),
307
+ });
265
308
  const toolkitResult = detailResult(buildElementDetail({
266
309
  path: element_path,
267
310
  element_type: elementType,
268
311
  label,
269
312
  props,
270
313
  children: children,
314
+ ...(topSource !== undefined ? { source: topSource } : {}),
315
+ ...(topSourceExtended !== undefined ? { source_extended: topSourceExtended } : {}),
271
316
  }));
272
317
  return structuredResult(toolkitResult, {
273
318
  template_id,
@@ -276,6 +321,9 @@ export async function handleElementGet({ client }, { template_id, element_path }
276
321
  ...(label !== undefined ? { label } : {}),
277
322
  ...(props !== undefined ? { props } : {}),
278
323
  children_count: children.length,
324
+ ...(binding !== null
325
+ ? { source: binding.source, binding_summary: binding.binding_summary }
326
+ : {}),
279
327
  });
280
328
  }
281
329
  catch (e) {
@@ -288,5 +336,5 @@ export async function handleElementGet({ client }, { template_id, element_path }
288
336
  }
289
337
  }
290
338
  // Re-export write handlers so callers can import from this barrel.
291
- export { handleElementAdd, handleElementClone, handleElementDelete, handleElementMove, handleElementUpdateSettings, } from './handlers-write.js';
339
+ export { handleElementAdd, handleElementClone, handleElementDelete, handleElementMove, handleElementUpdateSettings, handleScaffoldSection, } from './handlers-write.js';
292
340
  //# sourceMappingURL=handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/elements/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/elements/handlers.ts"],"names":[],"mappings":"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"}