@wootsup/yt-builder-mcp 1.0.0 → 1.0.1

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 (319) hide show
  1. package/manifest.json +1 -1
  2. package/package.json +1 -1
  3. package/skills/{yootheme-builder → yt-builder-mcp}/SKILL.md +1 -1
  4. package/dist/auth.d.ts +0 -39
  5. package/dist/auth.d.ts.map +0 -1
  6. package/dist/auth.js +0 -93
  7. package/dist/auth.js.map +0 -1
  8. package/dist/client.d.ts +0 -84
  9. package/dist/client.d.ts.map +0 -1
  10. package/dist/client.js +0 -151
  11. package/dist/client.js.map +0 -1
  12. package/dist/clients/claude-code.d.ts +0 -18
  13. package/dist/clients/claude-code.d.ts.map +0 -1
  14. package/dist/clients/claude-code.js +0 -53
  15. package/dist/clients/claude-code.js.map +0 -1
  16. package/dist/clients/claude-desktop.d.ts +0 -19
  17. package/dist/clients/claude-desktop.d.ts.map +0 -1
  18. package/dist/clients/claude-desktop.js +0 -56
  19. package/dist/clients/claude-desktop.js.map +0 -1
  20. package/dist/clients/cline.d.ts +0 -26
  21. package/dist/clients/cline.d.ts.map +0 -1
  22. package/dist/clients/cline.js +0 -80
  23. package/dist/clients/cline.js.map +0 -1
  24. package/dist/clients/codex-cli.d.ts +0 -42
  25. package/dist/clients/codex-cli.d.ts.map +0 -1
  26. package/dist/clients/codex-cli.js +0 -194
  27. package/dist/clients/codex-cli.js.map +0 -1
  28. package/dist/clients/continue.d.ts +0 -13
  29. package/dist/clients/continue.d.ts.map +0 -1
  30. package/dist/clients/continue.js +0 -52
  31. package/dist/clients/continue.js.map +0 -1
  32. package/dist/clients/cursor.d.ts +0 -12
  33. package/dist/clients/cursor.d.ts.map +0 -1
  34. package/dist/clients/cursor.js +0 -38
  35. package/dist/clients/cursor.js.map +0 -1
  36. package/dist/clients/gemini-cli.d.ts +0 -18
  37. package/dist/clients/gemini-cli.d.ts.map +0 -1
  38. package/dist/clients/gemini-cli.js +0 -44
  39. package/dist/clients/gemini-cli.js.map +0 -1
  40. package/dist/clients/home.d.ts +0 -14
  41. package/dist/clients/home.d.ts.map +0 -1
  42. package/dist/clients/home.js +0 -20
  43. package/dist/clients/home.js.map +0 -1
  44. package/dist/clients/index.d.ts +0 -52
  45. package/dist/clients/index.d.ts.map +0 -1
  46. package/dist/clients/index.js +0 -72
  47. package/dist/clients/index.js.map +0 -1
  48. package/dist/clients/roo-code.d.ts +0 -23
  49. package/dist/clients/roo-code.d.ts.map +0 -1
  50. package/dist/clients/roo-code.js +0 -69
  51. package/dist/clients/roo-code.js.map +0 -1
  52. package/dist/clients/zed.d.ts +0 -12
  53. package/dist/clients/zed.d.ts.map +0 -1
  54. package/dist/clients/zed.js +0 -41
  55. package/dist/clients/zed.js.map +0 -1
  56. package/dist/errors/hints.d.ts +0 -51
  57. package/dist/errors/hints.d.ts.map +0 -1
  58. package/dist/errors/hints.js +0 -95
  59. package/dist/errors/hints.js.map +0 -1
  60. package/dist/errors/mask.d.ts +0 -35
  61. package/dist/errors/mask.d.ts.map +0 -1
  62. package/dist/errors/mask.js +0 -49
  63. package/dist/errors/mask.js.map +0 -1
  64. package/dist/errors/sanitize.d.ts +0 -31
  65. package/dist/errors/sanitize.d.ts.map +0 -1
  66. package/dist/errors/sanitize.js +0 -90
  67. package/dist/errors/sanitize.js.map +0 -1
  68. package/dist/errors.d.ts +0 -42
  69. package/dist/errors.d.ts.map +0 -1
  70. package/dist/errors.js +0 -61
  71. package/dist/errors.js.map +0 -1
  72. package/dist/gateway/advanced-tool/discovery.d.ts +0 -19
  73. package/dist/gateway/advanced-tool/discovery.d.ts.map +0 -1
  74. package/dist/gateway/advanced-tool/discovery.js +0 -53
  75. package/dist/gateway/advanced-tool/discovery.js.map +0 -1
  76. package/dist/gateway/advanced-tool/domains.d.ts +0 -47
  77. package/dist/gateway/advanced-tool/domains.d.ts.map +0 -1
  78. package/dist/gateway/advanced-tool/domains.js +0 -94
  79. package/dist/gateway/advanced-tool/domains.js.map +0 -1
  80. package/dist/gateway/advanced-tool/execute.d.ts +0 -29
  81. package/dist/gateway/advanced-tool/execute.d.ts.map +0 -1
  82. package/dist/gateway/advanced-tool/execute.js +0 -54
  83. package/dist/gateway/advanced-tool/execute.js.map +0 -1
  84. package/dist/gateway/advanced-tool/index.d.ts +0 -36
  85. package/dist/gateway/advanced-tool/index.d.ts.map +0 -1
  86. package/dist/gateway/advanced-tool/index.js +0 -39
  87. package/dist/gateway/advanced-tool/index.js.map +0 -1
  88. package/dist/gateway/advanced-tool/register.d.ts +0 -18
  89. package/dist/gateway/advanced-tool/register.d.ts.map +0 -1
  90. package/dist/gateway/advanced-tool/register.js +0 -69
  91. package/dist/gateway/advanced-tool/register.js.map +0 -1
  92. package/dist/gateway/advanced-tool.d.ts +0 -13
  93. package/dist/gateway/advanced-tool.d.ts.map +0 -1
  94. package/dist/gateway/advanced-tool.js +0 -13
  95. package/dist/gateway/advanced-tool.js.map +0 -1
  96. package/dist/gateway/capturing-server.d.ts +0 -117
  97. package/dist/gateway/capturing-server.d.ts.map +0 -1
  98. package/dist/gateway/capturing-server.js +0 -103
  99. package/dist/gateway/capturing-server.js.map +0 -1
  100. package/dist/gateway/essentials.d.ts +0 -49
  101. package/dist/gateway/essentials.d.ts.map +0 -1
  102. package/dist/gateway/essentials.js +0 -79
  103. package/dist/gateway/essentials.js.map +0 -1
  104. package/dist/gateway/test-support.d.ts +0 -41
  105. package/dist/gateway/test-support.d.ts.map +0 -1
  106. package/dist/gateway/test-support.js +0 -60
  107. package/dist/gateway/test-support.js.map +0 -1
  108. package/dist/index.d.ts +0 -25
  109. package/dist/index.d.ts.map +0 -1
  110. package/dist/index.js +0 -77
  111. package/dist/index.js.map +0 -1
  112. package/dist/install-skill.d.ts +0 -35
  113. package/dist/install-skill.d.ts.map +0 -1
  114. package/dist/install-skill.js +0 -107
  115. package/dist/install-skill.js.map +0 -1
  116. package/dist/platform/index.d.ts +0 -49
  117. package/dist/platform/index.d.ts.map +0 -1
  118. package/dist/platform/index.js +0 -38
  119. package/dist/platform/index.js.map +0 -1
  120. package/dist/server.d.ts +0 -50
  121. package/dist/server.d.ts.map +0 -1
  122. package/dist/server.js +0 -153
  123. package/dist/server.js.map +0 -1
  124. package/dist/setup-cli.d.ts +0 -100
  125. package/dist/setup-cli.d.ts.map +0 -1
  126. package/dist/setup-cli.js +0 -355
  127. package/dist/setup-cli.js.map +0 -1
  128. package/dist/setup-prompts.d.ts +0 -41
  129. package/dist/setup-prompts.d.ts.map +0 -1
  130. package/dist/setup-prompts.js +0 -142
  131. package/dist/setup-prompts.js.map +0 -1
  132. package/dist/setup-token.d.ts +0 -38
  133. package/dist/setup-token.d.ts.map +0 -1
  134. package/dist/setup-token.js +0 -106
  135. package/dist/setup-token.js.map +0 -1
  136. package/dist/setup-wizard-defaults.d.ts +0 -43
  137. package/dist/setup-wizard-defaults.d.ts.map +0 -1
  138. package/dist/setup-wizard-defaults.js +0 -160
  139. package/dist/setup-wizard-defaults.js.map +0 -1
  140. package/dist/setup-wizard-handshake.d.ts +0 -25
  141. package/dist/setup-wizard-handshake.d.ts.map +0 -1
  142. package/dist/setup-wizard-handshake.js +0 -103
  143. package/dist/setup-wizard-handshake.js.map +0 -1
  144. package/dist/setup-wizard-types.d.ts +0 -148
  145. package/dist/setup-wizard-types.d.ts.map +0 -1
  146. package/dist/setup-wizard-types.js +0 -11
  147. package/dist/setup-wizard-types.js.map +0 -1
  148. package/dist/setup-wizard.d.ts +0 -33
  149. package/dist/setup-wizard.d.ts.map +0 -1
  150. package/dist/setup-wizard.js +0 -166
  151. package/dist/setup-wizard.js.map +0 -1
  152. package/dist/setup.d.ts +0 -17
  153. package/dist/setup.d.ts.map +0 -1
  154. package/dist/setup.js +0 -33
  155. package/dist/setup.js.map +0 -1
  156. package/dist/skill-loader.d.ts +0 -51
  157. package/dist/skill-loader.d.ts.map +0 -1
  158. package/dist/skill-loader.js +0 -78
  159. package/dist/skill-loader.js.map +0 -1
  160. package/dist/tools/elements/builders.d.ts +0 -24
  161. package/dist/tools/elements/builders.d.ts.map +0 -1
  162. package/dist/tools/elements/builders.js +0 -177
  163. package/dist/tools/elements/builders.js.map +0 -1
  164. package/dist/tools/elements/handlers-write.d.ts +0 -49
  165. package/dist/tools/elements/handlers-write.d.ts.map +0 -1
  166. package/dist/tools/elements/handlers-write.js +0 -148
  167. package/dist/tools/elements/handlers-write.js.map +0 -1
  168. package/dist/tools/elements/handlers.d.ts +0 -61
  169. package/dist/tools/elements/handlers.d.ts.map +0 -1
  170. package/dist/tools/elements/handlers.js +0 -170
  171. package/dist/tools/elements/handlers.js.map +0 -1
  172. package/dist/tools/elements/index.d.ts +0 -28
  173. package/dist/tools/elements/index.d.ts.map +0 -1
  174. package/dist/tools/elements/index.js +0 -27
  175. package/dist/tools/elements/index.js.map +0 -1
  176. package/dist/tools/elements.d.ts +0 -13
  177. package/dist/tools/elements.d.ts.map +0 -1
  178. package/dist/tools/elements.js +0 -13
  179. package/dist/tools/elements.js.map +0 -1
  180. package/dist/tools/elicitation.d.ts +0 -87
  181. package/dist/tools/elicitation.d.ts.map +0 -1
  182. package/dist/tools/elicitation.js +0 -100
  183. package/dist/tools/elicitation.js.map +0 -1
  184. package/dist/tools/format/elements-format.d.ts +0 -40
  185. package/dist/tools/format/elements-format.d.ts.map +0 -1
  186. package/dist/tools/format/elements-format.js +0 -194
  187. package/dist/tools/format/elements-format.js.map +0 -1
  188. package/dist/tools/format/health-format.d.ts +0 -73
  189. package/dist/tools/format/health-format.d.ts.map +0 -1
  190. package/dist/tools/format/health-format.js +0 -178
  191. package/dist/tools/format/health-format.js.map +0 -1
  192. package/dist/tools/format/inspection-format.d.ts +0 -58
  193. package/dist/tools/format/inspection-format.d.ts.map +0 -1
  194. package/dist/tools/format/inspection-format.js +0 -164
  195. package/dist/tools/format/inspection-format.js.map +0 -1
  196. package/dist/tools/format/pages-format.d.ts +0 -42
  197. package/dist/tools/format/pages-format.d.ts.map +0 -1
  198. package/dist/tools/format/pages-format.js +0 -113
  199. package/dist/tools/format/pages-format.js.map +0 -1
  200. package/dist/tools/format/sources-format.d.ts +0 -25
  201. package/dist/tools/format/sources-format.d.ts.map +0 -1
  202. package/dist/tools/format/sources-format.js +0 -208
  203. package/dist/tools/format/sources-format.js.map +0 -1
  204. package/dist/tools/health.d.ts +0 -22
  205. package/dist/tools/health.d.ts.map +0 -1
  206. package/dist/tools/health.js +0 -147
  207. package/dist/tools/health.js.map +0 -1
  208. package/dist/tools/index.d.ts +0 -23
  209. package/dist/tools/index.d.ts.map +0 -1
  210. package/dist/tools/index.js +0 -25
  211. package/dist/tools/index.js.map +0 -1
  212. package/dist/tools/inspection.d.ts +0 -14
  213. package/dist/tools/inspection.d.ts.map +0 -1
  214. package/dist/tools/inspection.js +0 -125
  215. package/dist/tools/inspection.js.map +0 -1
  216. package/dist/tools/layout-flatten.d.ts +0 -75
  217. package/dist/tools/layout-flatten.d.ts.map +0 -1
  218. package/dist/tools/layout-flatten.js +0 -107
  219. package/dist/tools/layout-flatten.js.map +0 -1
  220. package/dist/tools/multi-items/builders.d.ts +0 -23
  221. package/dist/tools/multi-items/builders.d.ts.map +0 -1
  222. package/dist/tools/multi-items/builders.js +0 -56
  223. package/dist/tools/multi-items/builders.js.map +0 -1
  224. package/dist/tools/multi-items/clean-implode-handler.d.ts +0 -28
  225. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +0 -1
  226. package/dist/tools/multi-items/clean-implode-handler.js +0 -40
  227. package/dist/tools/multi-items/clean-implode-handler.js.map +0 -1
  228. package/dist/tools/multi-items/index.d.ts +0 -18
  229. package/dist/tools/multi-items/index.d.ts.map +0 -1
  230. package/dist/tools/multi-items/index.js +0 -18
  231. package/dist/tools/multi-items/index.js.map +0 -1
  232. package/dist/tools/multi-items/inspect-handler.d.ts +0 -41
  233. package/dist/tools/multi-items/inspect-handler.d.ts.map +0 -1
  234. package/dist/tools/multi-items/inspect-handler.js +0 -50
  235. package/dist/tools/multi-items/inspect-handler.js.map +0 -1
  236. package/dist/tools/multi-items/item-container-map.d.ts +0 -41
  237. package/dist/tools/multi-items/item-container-map.d.ts.map +0 -1
  238. package/dist/tools/multi-items/item-container-map.js +0 -73
  239. package/dist/tools/multi-items/item-container-map.js.map +0 -1
  240. package/dist/tools/pages/builders.d.ts +0 -14
  241. package/dist/tools/pages/builders.d.ts.map +0 -1
  242. package/dist/tools/pages/builders.js +0 -115
  243. package/dist/tools/pages/builders.js.map +0 -1
  244. package/dist/tools/pages/handlers-read.d.ts +0 -33
  245. package/dist/tools/pages/handlers-read.d.ts.map +0 -1
  246. package/dist/tools/pages/handlers-read.js +0 -161
  247. package/dist/tools/pages/handlers-read.js.map +0 -1
  248. package/dist/tools/pages/handlers-write.d.ts +0 -21
  249. package/dist/tools/pages/handlers-write.d.ts.map +0 -1
  250. package/dist/tools/pages/handlers-write.js +0 -52
  251. package/dist/tools/pages/handlers-write.js.map +0 -1
  252. package/dist/tools/pages/index.d.ts +0 -17
  253. package/dist/tools/pages/index.d.ts.map +0 -1
  254. package/dist/tools/pages/index.js +0 -17
  255. package/dist/tools/pages/index.js.map +0 -1
  256. package/dist/tools/pages/schemas.d.ts +0 -30
  257. package/dist/tools/pages/schemas.d.ts.map +0 -1
  258. package/dist/tools/pages/schemas.js +0 -30
  259. package/dist/tools/pages/schemas.js.map +0 -1
  260. package/dist/tools/pages.d.ts +0 -13
  261. package/dist/tools/pages.d.ts.map +0 -1
  262. package/dist/tools/pages.js +0 -13
  263. package/dist/tools/pages.js.map +0 -1
  264. package/dist/tools/progress-phases.d.ts +0 -46
  265. package/dist/tools/progress-phases.d.ts.map +0 -1
  266. package/dist/tools/progress-phases.js +0 -48
  267. package/dist/tools/progress-phases.js.map +0 -1
  268. package/dist/tools/shared-schemas.d.ts +0 -15
  269. package/dist/tools/shared-schemas.d.ts.map +0 -1
  270. package/dist/tools/shared-schemas.js +0 -30
  271. package/dist/tools/shared-schemas.js.map +0 -1
  272. package/dist/tools/sources/builders.d.ts +0 -13
  273. package/dist/tools/sources/builders.d.ts.map +0 -1
  274. package/dist/tools/sources/builders.js +0 -103
  275. package/dist/tools/sources/builders.js.map +0 -1
  276. package/dist/tools/sources/handlers-bind.d.ts +0 -28
  277. package/dist/tools/sources/handlers-bind.d.ts.map +0 -1
  278. package/dist/tools/sources/handlers-bind.js +0 -129
  279. package/dist/tools/sources/handlers-bind.js.map +0 -1
  280. package/dist/tools/sources/handlers.d.ts +0 -45
  281. package/dist/tools/sources/handlers.d.ts.map +0 -1
  282. package/dist/tools/sources/handlers.js +0 -91
  283. package/dist/tools/sources/handlers.js.map +0 -1
  284. package/dist/tools/sources/index.d.ts +0 -19
  285. package/dist/tools/sources/index.d.ts.map +0 -1
  286. package/dist/tools/sources/index.js +0 -18
  287. package/dist/tools/sources/index.js.map +0 -1
  288. package/dist/tools/sources.d.ts +0 -14
  289. package/dist/tools/sources.d.ts.map +0 -1
  290. package/dist/tools/sources.js +0 -14
  291. package/dist/tools/sources.js.map +0 -1
  292. package/dist/tools/sparse-fields.d.ts +0 -80
  293. package/dist/tools/sparse-fields.d.ts.map +0 -1
  294. package/dist/tools/sparse-fields.js +0 -144
  295. package/dist/tools/sparse-fields.js.map +0 -1
  296. package/dist/tools/tool-builder/annotations.d.ts +0 -55
  297. package/dist/tools/tool-builder/annotations.d.ts.map +0 -1
  298. package/dist/tools/tool-builder/annotations.js +0 -86
  299. package/dist/tools/tool-builder/annotations.js.map +0 -1
  300. package/dist/tools/tool-builder/define.d.ts +0 -31
  301. package/dist/tools/tool-builder/define.d.ts.map +0 -1
  302. package/dist/tools/tool-builder/define.js +0 -31
  303. package/dist/tools/tool-builder/define.js.map +0 -1
  304. package/dist/tools/tool-builder/index.d.ts +0 -28
  305. package/dist/tools/tool-builder/index.d.ts.map +0 -1
  306. package/dist/tools/tool-builder/index.js +0 -27
  307. package/dist/tools/tool-builder/index.js.map +0 -1
  308. package/dist/tools/tool-builder/results.d.ts +0 -59
  309. package/dist/tools/tool-builder/results.d.ts.map +0 -1
  310. package/dist/tools/tool-builder/results.js +0 -125
  311. package/dist/tools/tool-builder/results.js.map +0 -1
  312. package/dist/tools/tool-builder/types.d.ts +0 -82
  313. package/dist/tools/tool-builder/types.d.ts.map +0 -1
  314. package/dist/tools/tool-builder/types.js +0 -9
  315. package/dist/tools/tool-builder/types.js.map +0 -1
  316. package/dist/tools/tool-builder.d.ts +0 -16
  317. package/dist/tools/tool-builder.d.ts.map +0 -1
  318. package/dist/tools/tool-builder.js +0 -16
  319. package/dist/tools/tool-builder.js.map +0 -1
@@ -1,58 +0,0 @@
1
- /**
2
- * Inspection format-sidecar — pure transforms for `element_types_list` (table)
3
- * and `element_type_get_schema` (detail). Wave G.2.9 (Design §3.2 rows 11 / 12).
4
- *
5
- * These functions are stateless. The handlers themselves are tested separately
6
- * in `tests/tools/inspection.test.ts` (shape pins on the REST URL).
7
- *
8
- * @license MIT
9
- */
10
- import type { DetailGroup, TableColumn } from '@getimo/mcp-toolkit';
11
- /** Full columns for `yootheme_builder_element_types_list`. */
12
- export declare const TYPES_TABLE_COLUMNS: readonly TableColumn[];
13
- /** Compact columns kick in at 21+ rows — drop the boolean. */
14
- export declare const TYPES_COMPACT_COLUMNS: readonly TableColumn[];
15
- export interface TypeRow {
16
- name: string;
17
- label: string;
18
- origin: string;
19
- has_children_support: boolean;
20
- }
21
- /**
22
- * Maps an `/element-types` row to the table shape.
23
- *
24
- * - `has_children_support` honours an explicit boolean (the canonical
25
- * column key on the MCP-TS side). The PHP REST envelope surfaces both
26
- * `has_children` (its canonical key) AND `has_children_support` (this
27
- * alias) for every row — accept either to ride out a deploy skew where
28
- * the wp-plugin and npm-package versions are temporarily out of step.
29
- * Maria-Audit Stream C2 F-03 v2 (2026-05-22).
30
- * - Falls back to presence of a `children` field on the type definition.
31
- * - Missing fields default to empty.
32
- */
33
- export declare function mapTypeRow(input: Record<string, unknown>): TypeRow;
34
- /**
35
- * The REST plugin exposes element types in one of three shapes:
36
- *
37
- * 1. F-03 v2 (current — Maria-Audit Stream C2 2026-05-22): wrapper object
38
- * `{items: [{name, label, origin, has_children, has_children_support,
39
- * …}], total, element_types: [<string>, …]}`. This is the richest
40
- * shape and the only one carrying label/origin/has_children — prefer
41
- * it always.
42
- * 2. Legacy F-03 v1: wrapper object `{element_types: [<string>, …]}`
43
- * with name-only entries (older WP-plugin versions). Used as the
44
- * back-compat fallback when `items` is absent.
45
- * 3. Flat array of `{name, …}` objects — never seen on the live
46
- * yt-builder-mcp REST but kept for paranoia.
47
- */
48
- export declare function flattenTypesPayload(payload: unknown): Record<string, unknown>[];
49
- export declare function buildTypeSchemaDetail(payload: {
50
- name: string;
51
- label?: string;
52
- origin?: string;
53
- fields?: unknown;
54
- }): {
55
- groups: DetailGroup[];
56
- title?: string;
57
- };
58
- //# sourceMappingURL=inspection-format.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspection-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/inspection-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIpE,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAKrD,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAIvD,CAAC;AAYF,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAkBlE;AAUD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAkB/E;AAkCD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAyB5C"}
@@ -1,164 +0,0 @@
1
- /**
2
- * Inspection format-sidecar — pure transforms for `element_types_list` (table)
3
- * and `element_type_get_schema` (detail). Wave G.2.9 (Design §3.2 rows 11 / 12).
4
- *
5
- * These functions are stateless. The handlers themselves are tested separately
6
- * in `tests/tools/inspection.test.ts` (shape pins on the REST URL).
7
- *
8
- * @license MIT
9
- */
10
- // ─── element_types_list columns (Design §3.2 row 11) ─────────────────
11
- /** Full columns for `yootheme_builder_element_types_list`. */
12
- export const TYPES_TABLE_COLUMNS = [
13
- { key: 'name', label: 'NAME', width: 24, llmOnly: true },
14
- { key: 'label', label: 'LABEL', width: 28 },
15
- { key: 'origin', label: 'ORIGIN', width: 14 },
16
- { key: 'has_children_support', label: 'CHILDREN', width: 10 },
17
- ];
18
- /** Compact columns kick in at 21+ rows — drop the boolean. */
19
- export const TYPES_COMPACT_COLUMNS = [
20
- { key: 'name', label: 'NAME', width: 24, llmOnly: true },
21
- { key: 'label', label: 'LABEL', width: 28 },
22
- { key: 'origin', label: 'ORIGIN', width: 14 },
23
- ];
24
- // ─── Row mapper ──────────────────────────────────────────────────────
25
- function asString(v) {
26
- return typeof v === 'string' ? v : '';
27
- }
28
- function asBool(v) {
29
- return v === true;
30
- }
31
- /**
32
- * Maps an `/element-types` row to the table shape.
33
- *
34
- * - `has_children_support` honours an explicit boolean (the canonical
35
- * column key on the MCP-TS side). The PHP REST envelope surfaces both
36
- * `has_children` (its canonical key) AND `has_children_support` (this
37
- * alias) for every row — accept either to ride out a deploy skew where
38
- * the wp-plugin and npm-package versions are temporarily out of step.
39
- * Maria-Audit Stream C2 F-03 v2 (2026-05-22).
40
- * - Falls back to presence of a `children` field on the type definition.
41
- * - Missing fields default to empty.
42
- */
43
- export function mapTypeRow(input) {
44
- let explicitChildren;
45
- if (typeof input.has_children_support === 'boolean') {
46
- explicitChildren = input.has_children_support;
47
- }
48
- else if (typeof input.has_children === 'boolean') {
49
- // F-03 v2: PHP wire-shape uses `has_children`; older wp-plugins
50
- // may surface only this key. MCP-TS keeps `has_children_support`
51
- // as the canonical column-key but accepts the PHP-side spelling.
52
- explicitChildren = input.has_children;
53
- }
54
- return {
55
- name: asString(input.name),
56
- label: asString(input.label),
57
- origin: asString(input.origin),
58
- has_children_support: explicitChildren ?? hasChildrenField(input.children),
59
- };
60
- }
61
- function hasChildrenField(v) {
62
- if (Array.isArray(v))
63
- return v.length > 0;
64
- if (v !== null && typeof v === 'object') {
65
- return Object.keys(v).length > 0;
66
- }
67
- return asBool(v);
68
- }
69
- /**
70
- * The REST plugin exposes element types in one of three shapes:
71
- *
72
- * 1. F-03 v2 (current — Maria-Audit Stream C2 2026-05-22): wrapper object
73
- * `{items: [{name, label, origin, has_children, has_children_support,
74
- * …}], total, element_types: [<string>, …]}`. This is the richest
75
- * shape and the only one carrying label/origin/has_children — prefer
76
- * it always.
77
- * 2. Legacy F-03 v1: wrapper object `{element_types: [<string>, …]}`
78
- * with name-only entries (older WP-plugin versions). Used as the
79
- * back-compat fallback when `items` is absent.
80
- * 3. Flat array of `{name, …}` objects — never seen on the live
81
- * yt-builder-mcp REST but kept for paranoia.
82
- */
83
- export function flattenTypesPayload(payload) {
84
- if (Array.isArray(payload)) {
85
- return payload.map(normalizeTypeEntry).filter((x) => x !== null);
86
- }
87
- if (payload !== null && typeof payload === 'object') {
88
- const obj = payload;
89
- // F-03 v2 preferred shape: `items[]` carries the full row.
90
- // Reading from `element_types` (plain string list) drops every
91
- // label/origin/has_children value before mapTypeRow ever sees
92
- // them, which is the root-cause of the audit-finding.
93
- if (Array.isArray(obj.items)) {
94
- return obj.items.map(normalizeTypeEntry).filter((x) => x !== null);
95
- }
96
- if (Array.isArray(obj.element_types)) {
97
- return obj.element_types.map(normalizeTypeEntry).filter((x) => x !== null);
98
- }
99
- }
100
- return [];
101
- }
102
- function normalizeTypeEntry(entry) {
103
- if (typeof entry === 'string')
104
- return { name: entry };
105
- if (entry !== null && typeof entry === 'object')
106
- return entry;
107
- return null;
108
- }
109
- // ─── Detail builder (Design §3.2 row 12) ─────────────────────────────
110
- function summarizeFieldKeys(fields) {
111
- if (fields === null || typeof fields !== 'object')
112
- return '—';
113
- // `fields` is a list of {name,…} descriptors (canonical REST shape);
114
- // a plain record is also tolerated for back-compat.
115
- const keys = Array.isArray(fields)
116
- ? fields.map((f) => {
117
- if (f !== null && typeof f === 'object') {
118
- const n = f.name;
119
- if (typeof n === 'string')
120
- return n;
121
- }
122
- return '?';
123
- })
124
- : Object.keys(fields);
125
- if (keys.length === 0)
126
- return '—';
127
- if (keys.length <= 8)
128
- return keys.join(', ');
129
- return `${keys.slice(0, 8).join(', ')}, …(+${String(keys.length - 8)} more)`;
130
- }
131
- function countFields(fields) {
132
- if (fields === null || typeof fields !== 'object')
133
- return 0;
134
- if (Array.isArray(fields))
135
- return fields.length;
136
- return Object.keys(fields).length;
137
- }
138
- export function buildTypeSchemaDetail(payload) {
139
- return {
140
- title: `Element type: ${payload.name}`,
141
- groups: [
142
- {
143
- label: 'Identity',
144
- entries: [
145
- { key: 'name', label: 'Name', value: payload.name, format: 'code', copyable: true },
146
- ...(typeof payload.label === 'string' && payload.label.length > 0
147
- ? [{ key: 'label', label: 'Label', value: payload.label }]
148
- : []),
149
- ...(typeof payload.origin === 'string' && payload.origin.length > 0
150
- ? [{ key: 'origin', label: 'Origin', value: payload.origin, format: 'badge' }]
151
- : []),
152
- ],
153
- },
154
- {
155
- label: 'Fields (summary)',
156
- entries: [
157
- { key: 'count', label: 'Count', value: countFields(payload.fields), format: 'text' },
158
- { key: 'keys', label: 'Keys', value: summarizeFieldKeys(payload.fields) },
159
- ],
160
- },
161
- ],
162
- };
163
- }
164
- //# sourceMappingURL=inspection-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspection-format.js","sourceRoot":"","sources":["../../../src/tools/format/inspection-format.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Pages format-sidecar — pure transforms for `pages_list`, `page_get_schema`
3
- * and `get_etag`. Wave G.2.1 (Design §3.2 rows 3 / 5 / 6).
4
- *
5
- * These functions are stateless and free of REST-client concerns so the
6
- * handlers stay tiny and so the shape is asserted in unit tests
7
- * (`tests/tools/format/pages-format.test.ts`) and shape-pin tests
8
- * (`tests/wave-shape-pin.test.ts`).
9
- *
10
- * @license MIT
11
- */
12
- import type { DetailGroup, TableColumn } from '@getimo/mcp-toolkit';
13
- /** Full columns for `pages_list`. */
14
- export declare const PAGES_TABLE_COLUMNS: readonly TableColumn[];
15
- /** Compact columns kick in at 21+ rows; drops `modified_at` + `type`. */
16
- export declare const PAGES_COMPACT_COLUMNS: readonly TableColumn[];
17
- export declare const SCHEMA_TABLE_COLUMNS: readonly TableColumn[];
18
- /**
19
- * Compact columns for `page_get_schema`. Real-world templates routinely
20
- * exceed 21 nodes (a typical home-page has 30–150 elements; landing pages
21
- * reach 300+), so the handler ALWAYS uses these compact columns via the
22
- * `detailOverride: 'compact'` argument to `tableResult` (toolkit's
23
- * `resolveDetailLevel` short-circuits when given a direct level).
24
- */
25
- export declare const SCHEMA_COMPACT_COLUMNS: readonly TableColumn[];
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. */
30
- export declare function mapPageRow(input: Record<string, unknown>): Record<string, unknown>;
31
- /** Maps a `/pages/{id}/schema` node to the table row shape. */
32
- export declare function mapSchemaNodeRow(input: Record<string, unknown>): Record<string, unknown>;
33
- /** Builds schema rows from the array returned by the REST `nodes` field. */
34
- export declare function buildSchemaRows(nodes: ReadonlyArray<Record<string, unknown>>): Record<string, unknown>[];
35
- /** Build the `detailResult` body for `get_etag`. Two groups: identity + freshness. */
36
- export declare function buildEtagDetail(payload: {
37
- etag: string;
38
- generated_at?: string;
39
- }): {
40
- groups: DetailGroup[];
41
- };
42
- //# sourceMappingURL=pages-format.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,113 +0,0 @@
1
- /**
2
- * Pages format-sidecar — pure transforms for `pages_list`, `page_get_schema`
3
- * and `get_etag`. Wave G.2.1 (Design §3.2 rows 3 / 5 / 6).
4
- *
5
- * These functions are stateless and free of REST-client concerns so the
6
- * handlers stay tiny and so the shape is asserted in unit tests
7
- * (`tests/tools/format/pages-format.test.ts`) and shape-pin tests
8
- * (`tests/wave-shape-pin.test.ts`).
9
- *
10
- * @license MIT
11
- */
12
- // ─── Pages list columns (Design §3.2 row 3) ──────────────────────────
13
- /** Full columns for `pages_list`. */
14
- export const PAGES_TABLE_COLUMNS = [
15
- { key: 'id', label: 'ID', width: 36, llmOnly: true },
16
- { key: 'label', label: 'NAME', width: 28 },
17
- { key: 'type', label: 'TYPE', width: 12 },
18
- { key: 'elements_count', label: '#EL', width: 8, align: 'right' },
19
- { key: 'modified_at', label: 'MODIFIED', width: 20 },
20
- ];
21
- /** Compact columns kick in at 21+ rows; drops `modified_at` + `type`. */
22
- export const PAGES_COMPACT_COLUMNS = [
23
- { key: 'id', label: 'ID', width: 36, llmOnly: true },
24
- { key: 'label', label: 'NAME', width: 28 },
25
- { key: 'elements_count', label: '#EL', width: 8, align: 'right' },
26
- ];
27
- // ─── Schema columns (Design §3.2 row 5 — always-compact override) ────
28
- export const SCHEMA_TABLE_COLUMNS = [
29
- { key: 'path', label: 'PATH', width: 32, llmOnly: true },
30
- { key: 'element_type', label: 'TYPE', width: 16 },
31
- { key: 'label', label: 'LABEL', width: 28 },
32
- { key: 'has_binding', label: 'BIND', width: 8 },
33
- ];
34
- /**
35
- * Compact columns for `page_get_schema`. Real-world templates routinely
36
- * exceed 21 nodes (a typical home-page has 30–150 elements; landing pages
37
- * reach 300+), so the handler ALWAYS uses these compact columns via the
38
- * `detailOverride: 'compact'` argument to `tableResult` (toolkit's
39
- * `resolveDetailLevel` short-circuits when given a direct level).
40
- */
41
- export const SCHEMA_COMPACT_COLUMNS = [
42
- { key: 'path', label: 'PATH', width: 32, llmOnly: true },
43
- { key: 'element_type', label: 'TYPE', width: 16 },
44
- { key: 'label', label: 'LABEL', width: 28 },
45
- ];
46
- // ─── Row mappers ─────────────────────────────────────────────────────
47
- function asString(v) {
48
- return typeof v === 'string' ? v : '';
49
- }
50
- function asInt(v) {
51
- return typeof v === 'number' && Number.isFinite(v) ? Math.trunc(v) : 0;
52
- }
53
- function asBool(v) {
54
- return v === true;
55
- }
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. */
60
- export function mapPageRow(input) {
61
- return {
62
- id: asString(input.id),
63
- label: asString(input.name ?? input.label),
64
- type: asString(input.type),
65
- elements_count: asInt(input.elements_count),
66
- modified_at: asString(input.modified_at),
67
- };
68
- }
69
- /** Maps a `/pages/{id}/schema` node to the table row shape. */
70
- export function mapSchemaNodeRow(input) {
71
- return {
72
- path: asString(input.path),
73
- element_type: asString(input.element_type),
74
- label: asString(input.label),
75
- has_binding: asBool(input.has_binding),
76
- };
77
- }
78
- /** Builds schema rows from the array returned by the REST `nodes` field. */
79
- export function buildSchemaRows(nodes) {
80
- return nodes.map(mapSchemaNodeRow);
81
- }
82
- // ─── Detail builders ─────────────────────────────────────────────────
83
- /** Build the `detailResult` body for `get_etag`. Two groups: identity + freshness. */
84
- export function buildEtagDetail(payload) {
85
- return {
86
- groups: [
87
- {
88
- label: 'Identity',
89
- entries: [
90
- {
91
- key: 'etag',
92
- label: 'ETag',
93
- value: payload.etag,
94
- format: 'code',
95
- copyable: true,
96
- },
97
- ],
98
- },
99
- {
100
- label: 'Freshness',
101
- entries: [
102
- {
103
- key: 'generated_at',
104
- label: 'Generated',
105
- value: payload.generated_at ?? null,
106
- format: 'date',
107
- },
108
- ],
109
- },
110
- ],
111
- };
112
- }
113
- //# sourceMappingURL=pages-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pages-format.js","sourceRoot":"","sources":["../../../src/tools/format/pages-format.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Sources format-sidecar — pure transforms for `sources_list` (table) and
3
- * `element_get_binding` (detail). Wave G.2.7 (Design §3.2 rows 16 / 17).
4
- *
5
- * @license MIT
6
- */
7
- import type { DetailGroup, TableColumn } from '@getimo/mcp-toolkit';
8
- export declare const SOURCES_TABLE_COLUMNS: readonly TableColumn[];
9
- export interface SourceRow {
10
- name: string;
11
- label: string;
12
- origin: string;
13
- kind: string;
14
- }
15
- export declare function mapSourceRow(input: Record<string, unknown>): SourceRow;
16
- export declare function flattenSourcesPayload(payload: unknown): Record<string, unknown>[];
17
- export declare function buildBindingDetail(payload: {
18
- template_id: string;
19
- element_path: string;
20
- binding: Record<string, unknown>;
21
- }): {
22
- groups: DetailGroup[];
23
- title?: string;
24
- };
25
- //# sourceMappingURL=sources-format.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sources-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/sources-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIpE,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAKvD,CAAC;AAQF,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAYtE;AAWD,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,OAAO,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAqB3B;AAsED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAgG5C"}
@@ -1,208 +0,0 @@
1
- /**
2
- * Sources format-sidecar — pure transforms for `sources_list` (table) and
3
- * `element_get_binding` (detail). Wave G.2.7 (Design §3.2 rows 16 / 17).
4
- *
5
- * @license MIT
6
- */
7
- // ─── sources_list columns (Design §3.2 row 16) ───────────────────────
8
- export const SOURCES_TABLE_COLUMNS = [
9
- { key: 'name', label: 'NAME', width: 36, llmOnly: true },
10
- { key: 'label', label: 'LABEL', width: 28 },
11
- { key: 'origin', label: 'ORIGIN', width: 12 },
12
- { key: 'kind', label: 'KIND', width: 10 },
13
- ];
14
- // ─── Row mapper ──────────────────────────────────────────────────────
15
- function asString(v) {
16
- return typeof v === 'string' ? v : '';
17
- }
18
- export function mapSourceRow(input) {
19
- return {
20
- name: asString(input.name),
21
- label: asString(input.label),
22
- origin: asString(input.origin),
23
- // F-04 Kleinkram (Audit v2): BE returns `type` (GraphQL type name
24
- // from the YT source-provider), not `kind`. Fall back so the
25
- // column populates without needing a BE rename.
26
- kind: asString(input.kind !== undefined && input.kind !== '' ? input.kind : input.type),
27
- };
28
- }
29
- /**
30
- * The REST plugin exposes sources EITHER as a grouped object
31
- * `{apimapper:[…], wordpress:[…], essentials:[…]}` OR (post-refactor)
32
- * as a flat array of `{name, label, origin, kind}`. This helper
33
- * normalises both into a flat array — flattening adds `origin` from the
34
- * group key when absent.
35
- */
36
- const KNOWN_ORIGINS = ['apimapper', 'wordpress', 'essentials'];
37
- export function flattenSourcesPayload(payload) {
38
- if (Array.isArray(payload)) {
39
- return payload.filter((x) => x !== null && typeof x === 'object');
40
- }
41
- if (payload !== null && typeof payload === 'object') {
42
- const out = [];
43
- const obj = payload;
44
- for (const origin of KNOWN_ORIGINS) {
45
- const group = obj[origin];
46
- if (Array.isArray(group)) {
47
- for (const item of group) {
48
- if (item !== null && typeof item === 'object') {
49
- const rec = item;
50
- out.push({ origin, ...rec });
51
- }
52
- }
53
- }
54
- }
55
- return out;
56
- }
57
- return [];
58
- }
59
- // ─── Detail builder (Design §3.2 row 17) ─────────────────────────────
60
- /** Render a primitive binding-value into a DetailEntry-safe scalar. */
61
- function scalarValue(v) {
62
- if (v === null || typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {
63
- return v;
64
- }
65
- // Objects / arrays (nested filters, directive args) — JSON-flatten so
66
- // the LLM still sees the structure without an [object Object].
67
- try {
68
- return JSON.stringify(v);
69
- }
70
- catch {
71
- return String(v);
72
- }
73
- }
74
- /**
75
- * Normalise the field-mappings carried on the binding response into a
76
- * `prop → source_field` dict.
77
- *
78
- * F-01-Mapping (Audit v4): the REST plugin surfaces field-mappings in
79
- * TWO shapes — `field_mappings` (dict, back-compat) and
80
- * `field_mappings_structured` (list of `{element_prop, source_field}`,
81
- * the BindingSerializer SSoT output). The structured list is preferred
82
- * because it preserves insertion order and field-level `filters`.
83
- */
84
- function extractFieldMappings(binding) {
85
- const structured = binding.field_mappings_structured;
86
- if (Array.isArray(structured)) {
87
- const out = [];
88
- for (const entry of structured) {
89
- if (entry !== null && typeof entry === 'object') {
90
- const rec = entry;
91
- const prop = rec.element_prop;
92
- const field = rec.source_field;
93
- if (typeof prop === 'string' && prop !== '') {
94
- out.push({
95
- prop,
96
- field: typeof field === 'string' ? field : String(field ?? ''),
97
- });
98
- }
99
- }
100
- }
101
- return out;
102
- }
103
- const dict = binding.field_mappings;
104
- if (dict !== null && typeof dict === 'object') {
105
- return Object.entries(dict).map(([prop, field]) => ({
106
- prop,
107
- field: typeof field === 'string' ? field : String(field ?? ''),
108
- }));
109
- }
110
- return [];
111
- }
112
- /** Pull `query_arguments` off the binding as a flat record. */
113
- function extractQueryArguments(binding) {
114
- const args = binding.query_arguments;
115
- if (args !== null && typeof args === 'object' && !Array.isArray(args)) {
116
- return args;
117
- }
118
- return {};
119
- }
120
- export function buildBindingDetail(payload) {
121
- const b = payload.binding;
122
- const sourceName = typeof b.source_name === 'string' ? b.source_name : null;
123
- const queryField = typeof b.query_field === 'string' ? b.query_field : null;
124
- const fieldMappings = extractFieldMappings(b);
125
- const queryArgs = extractQueryArguments(b);
126
- const argEntries = Object.entries(queryArgs);
127
- const bindingEntries = [
128
- {
129
- key: 'source_name',
130
- label: 'Source',
131
- value: sourceName,
132
- format: 'badge',
133
- },
134
- ];
135
- if (queryField !== null) {
136
- bindingEntries.push({
137
- key: 'query_field',
138
- label: 'Query field',
139
- value: queryField,
140
- format: 'code',
141
- });
142
- }
143
- bindingEntries.push({
144
- key: 'mapping_count',
145
- label: 'Field mappings',
146
- value: fieldMappings.length,
147
- format: 'text',
148
- }, {
149
- key: 'arg_count',
150
- label: 'Query arguments',
151
- value: argEntries.length,
152
- format: 'text',
153
- });
154
- const groups = [
155
- {
156
- label: 'Element',
157
- entries: [
158
- {
159
- key: 'template_id',
160
- label: 'Template',
161
- value: payload.template_id,
162
- format: 'badge',
163
- },
164
- {
165
- key: 'element_path',
166
- label: 'Path',
167
- value: payload.element_path,
168
- format: 'code',
169
- copyable: true,
170
- },
171
- ],
172
- },
173
- {
174
- label: 'Binding',
175
- entries: bindingEntries,
176
- },
177
- ];
178
- // Field-mapping group — one entry per element-prop → source-field
179
- // pair so the LLM sees exactly WHICH source field feeds WHICH prop.
180
- if (fieldMappings.length > 0) {
181
- groups.push({
182
- label: 'Field mappings',
183
- entries: fieldMappings.map((m, i) => ({
184
- key: `mapping_${String(i)}`,
185
- label: m.prop,
186
- value: m.field,
187
- format: 'code',
188
- })),
189
- });
190
- }
191
- // Query-arguments group — the GraphQL `query.field.arguments`.
192
- if (argEntries.length > 0) {
193
- groups.push({
194
- label: 'Query arguments',
195
- entries: argEntries.map(([key, value], i) => ({
196
- key: `arg_${String(i)}`,
197
- label: key,
198
- value: scalarValue(value),
199
- format: 'text',
200
- })),
201
- });
202
- }
203
- return {
204
- title: `Binding for ${payload.element_path}`,
205
- groups,
206
- };
207
- }
208
- //# sourceMappingURL=sources-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sources-format.js","sourceRoot":"","sources":["../../../src/tools/format/sources-format.ts"],"names":[],"mappings":"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"}