@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 +0,0 @@
1
- {"version":3,"file":"elicitation.d.ts","sourceRoot":"","sources":["../../src/tools/elicitation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAER,wBAAwB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,YAAY,EAAE,wBAAwB,EAAE,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,SAAS,GACtB,wBAAwB,CAe1B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,GAAG,MAAM,CAEvF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,UAAU,CAeb"}
@@ -1,100 +0,0 @@
1
- /**
2
- * Targeted-elicitation support (Wave G.4 — Design §3.4 / §4.18).
3
- *
4
- * Three tool sites use elicitation:
5
- * - element_delete (destructive confirm)
6
- * - element_unbind_source (destructive confirm)
7
- * - element_bind_source (ambiguity resolution: ≥2 sources with the
8
- * same `source_name` → ask the user which one)
9
- *
10
- * Architecture mirrors `~/Projekte/wootsup/packages/apimapper-mcp/src/
11
- * modules/apimapper/elicitation.ts` (the reference Goldstandard impl):
12
- *
13
- * 1. `toElicitationCapability(server)` — typed adapter that bridges the
14
- * SDK's stricter discriminated `ElicitRequestFormParams` to the
15
- * toolkit's looser `ElicitInputParams`. ONE documented cast, justified
16
- * by the toolkit only ever emitting form-mode requests.
17
- * 2. `ElicitationCandidate` + `renderCandidateList` — a candidate is
18
- * `{ id, label }`; the list renders as a readable bullet block for the
19
- * mandatory non-elicitation fallback error.
20
- * 3. `ambiguityFallbackError` — the structured `errorResult` returned
21
- * when elicitation is unavailable (unsupported client) or declined.
22
- * Lists every candidate so the LLM (or operator) has an actionable
23
- * recovery path: "retry with explicit param X set to one of …".
24
- *
25
- * MANDATORY non-elicitation fallback: `elicitChoice` returns `null` on a
26
- * client without elicitation support, on decline, and on cancel. Every
27
- * call site MUST then return a structured `errorResult` listing the
28
- * candidates with a recovery hint — never hang, never guess, never
29
- * silently pick.
30
- *
31
- * @license MIT
32
- */
33
- import { errorResult } from './tool-builder.js';
34
- /**
35
- * Build the `McpServerWithElicitation` capability object the toolkit's
36
- * `elicitChoice` / `elicitConfirmation` consume, from the real `McpServer`.
37
- *
38
- * Why an adapter and not the bare `McpServer`:
39
- * The toolkit's `McpServerWithElicitation.server.elicitInput` is typed
40
- * with the loose `ElicitInputParams` (`mode: "form" | "url"`,
41
- * `requestedSchema?: Record<string, unknown>`). The SDK's
42
- * `Server.elicitInput` is the stricter discriminated
43
- * `ElicitRequestFormParams | ElicitRequestURLParams` with a fully-typed
44
- * `requestedSchema`. A real `McpServer` is therefore NOT structurally
45
- * assignable to `McpServerWithElicitation` — the parameter types are
46
- * contravariantly incompatible.
47
- *
48
- * The toolkit's `elicitChoice` / `elicitConfirmation` ALWAYS call with
49
- * `mode: "form"` and a `requestedSchema` whose properties are plain
50
- * `{ type: "string", enum: [...] }` / `{ type: "boolean" }` shapes —
51
- * i.e. always a valid `ElicitRequestFormParams` at runtime. This adapter
52
- * is the single, documented interop boundary that re-narrows the loose
53
- * toolkit params to the SDK's form-params type.
54
- */
55
- export function toElicitationCapability(realServer) {
56
- return {
57
- server: {
58
- elicitInput: (params) =>
59
- // Cast: the toolkit only ever produces form-mode elicitation
60
- // requests (verified: elicitChoice + elicitConfirmation both pass
61
- // `mode: "form"` with a string/boolean `requestedSchema`). The
62
- // loose `ElicitInputParams` is asserted to the SDK's
63
- // `ElicitRequestFormParams` so the SDK's overloaded
64
- // `elicitInput` accepts it. The runtime payload is exactly a
65
- // valid form request — only the static type is widened on the
66
- // toolkit side.
67
- realServer.server.elicitInput(params),
68
- },
69
- };
70
- }
71
- /**
72
- * Render a candidate list as a readable bullet block for the structured
73
- * fallback error — so a client without elicitation support still gets a
74
- * fully actionable recovery path.
75
- */
76
- export function renderCandidateList(candidates) {
77
- return candidates.map((c) => ` • ${c.id} — ${c.label}`).join('\n');
78
- }
79
- /**
80
- * Build the structured `errorResult` returned when elicitation is
81
- * unavailable (unsupported client) or the user declined / cancelled. The
82
- * error names every candidate and tells the caller exactly which
83
- * parameter to supply on retry.
84
- */
85
- export function ambiguityFallbackError(opts) {
86
- const list = renderCandidateList(opts.candidates);
87
- return errorResult({
88
- // We piggy-back on the local errorResult shape: `error` is the
89
- // human-readable message, `context` echoes inputs + candidate ids,
90
- // `hint` is the recovery instruction with the full candidate list.
91
- error: new Error(`Multiple ${opts.what} match — cannot pick automatically.`),
92
- context: {
93
- ...opts.context,
94
- code: opts.code,
95
- candidates: opts.candidates.map((c) => ({ id: c.id, label: c.label })),
96
- },
97
- hint: `Retry with an explicit \`${opts.paramName}\` set to one of:\n${list}`,
98
- });
99
- }
100
- //# sourceMappingURL=elicitation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../src/tools/elicitation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AASH,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAIjE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,uBAAuB,CACnC,UAAqB;IAErB,OAAO;QACH,MAAM,EAAE;YACJ,WAAW,EAAE,CAAC,MAAyB,EAAE,EAAE;YACvC,6DAA6D;YAC7D,kEAAkE;YAClE,+DAA+D;YAC/D,qDAAqD;YACrD,oDAAoD;YACpD,6DAA6D;YAC7D,8DAA8D;YAC9D,gBAAgB;YAChB,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,MAAiC,CAAC;SACvE;KACJ,CAAC;AACN,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA2C;IAC3E,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAMtC;IACG,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,WAAW,CAAC;QACf,+DAA+D;QAC/D,mEAAmE;QACnE,mEAAmE;QACnE,KAAK,EAAE,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,qCAAqC,CAAC;QAC5E,OAAO,EAAE;YACL,GAAG,IAAI,CAAC,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE;QACD,IAAI,EACA,4BAA4B,IAAI,CAAC,SAAS,sBAAsB,IAAI,EAAE;KAC7E,CAAC,CAAC;AACP,CAAC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Elements format-sidecar — pure transforms for `element_list` (table) and
3
- * `element_get` (detail). Wave G.2.5 (Design §3.2 rows 9 / 10).
4
- *
5
- * @license MIT
6
- */
7
- import type { DetailGroup, TableColumn } from '@getimo/mcp-toolkit';
8
- export declare const ELEMENTS_TABLE_COLUMNS: readonly TableColumn[];
9
- /** Compact columns kick in at 21+ rows — keep path + type only. */
10
- export declare const ELEMENTS_COMPACT_COLUMNS: readonly TableColumn[];
11
- /**
12
- * True iff the node carries a source-binding. Exported so the
13
- * layout-flatten helper (page_get_layout flat-mode) derives
14
- * `has_binding` from the SAME logic element_list uses — one SSoT.
15
- */
16
- export declare function hasSourceBinding(node: unknown): boolean;
17
- /**
18
- * Maps an `/elements` row to the table shape.
19
- *
20
- * - `label` falls back to `title` (REST surface varies — newer builds emit
21
- * `label`, older emit `title` as the human-readable name).
22
- * - `has_binding` honours an explicit boolean from the REST plugin, else
23
- * derives from `props.source` presence.
24
- */
25
- export declare function mapElementRow(input: Record<string, unknown>): Record<string, unknown>;
26
- interface ElementChildLike {
27
- type?: unknown;
28
- }
29
- export declare function buildElementDetail(payload: {
30
- path: string;
31
- element_type: string;
32
- props?: unknown;
33
- children?: ElementChildLike[];
34
- label?: string;
35
- }): {
36
- groups: DetailGroup[];
37
- title?: string;
38
- };
39
- export {};
40
- //# sourceMappingURL=elements-format.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elements-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/elements-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOpE,eAAO,MAAM,sBAAsB,EAAE,SAAS,WAAW,EAKxD,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,EAAE,SAAS,WAAW,EAG1D,CAAC;AAgDF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CA+BvD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBrF;AAID,UAAU,gBAAgB;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAoBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA4C5C"}
@@ -1,194 +0,0 @@
1
- /**
2
- * Elements format-sidecar — pure transforms for `element_list` (table) and
3
- * `element_get` (detail). Wave G.2.5 (Design §3.2 rows 9 / 10).
4
- *
5
- * @license MIT
6
- */
7
- // ─── Element-list columns (Design §3.2 row 9) ────────────────────────
8
- // F-06: PATH column widened to 64 chars + 'rel_path' shows just the
9
- // template-layout suffix so every row stays uniquely identifiable in
10
- // the text table. Full path remains available in structuredContent.
11
- export const ELEMENTS_TABLE_COLUMNS = [
12
- { key: 'rel_path', label: 'PATH', width: 48, llmOnly: true },
13
- { key: 'element_type', label: 'TYPE', width: 16 },
14
- { key: 'label', label: 'LABEL', width: 28 },
15
- { key: 'has_binding', label: 'BIND', width: 8 },
16
- ];
17
- /** Compact columns kick in at 21+ rows — keep path + type only. */
18
- export const ELEMENTS_COMPACT_COLUMNS = [
19
- { key: 'rel_path', label: 'PATH', width: 48, llmOnly: true },
20
- { key: 'element_type', label: 'TYPE', width: 16 },
21
- ];
22
- // ─── Row mapper ──────────────────────────────────────────────────────
23
- function asString(v) {
24
- return typeof v === 'string' ? v : '';
25
- }
26
- /**
27
- * Defensive `has_binding` derivation used when the REST plugin does not
28
- * surface an explicit boolean. Mirrors `BindingSerializer::hasBinding()`
29
- * on the PHP side so all readers agree on the same node.
30
- *
31
- * D1 / T1 (F-01-Rest, 2026-05-22): the heuristic accepts the same four
32
- * carrier slots BindingSerializer accepts on the PHP side:
33
- * 1. props.source — F-13 canonical
34
- * 2. top-level node.source — pre-bind cached YT4 trees
35
- * 3. node.source_extended — YT4 internal cached/expanded form
36
- * 4. legacy plain-string source — pre-F-13 user data
37
- *
38
- * A node is "bound" if any carrier yields either a non-empty `query.name`
39
- * OR at least one `props.<el>.name` field-mapping (inherit-from-parent
40
- * pattern — the field-bindings reference the parent iteration source via
41
- * the `${builder.source}` token without a local query name).
42
- */
43
- function isStructuredBinding(src) {
44
- if (src === null || typeof src !== 'object')
45
- return false;
46
- const obj = src;
47
- const query = obj.query;
48
- if (query !== null && typeof query === 'object') {
49
- const name = query.name;
50
- if (typeof name === 'string' && name.length > 0)
51
- return true;
52
- }
53
- // No query name — bound only if at least one props.<el>.name field-
54
- // mapping is present (inherit-from-parent pattern).
55
- const props = obj.props;
56
- if (props !== null && typeof props === 'object') {
57
- for (const k of Object.keys(props)) {
58
- const v = props[k];
59
- if (v !== null && typeof v === 'object') {
60
- const name = v.name;
61
- if (typeof name === 'string' && name.length > 0)
62
- return true;
63
- }
64
- }
65
- }
66
- return false;
67
- }
68
- /**
69
- * True iff the node carries a source-binding. Exported so the
70
- * layout-flatten helper (page_get_layout flat-mode) derives
71
- * `has_binding` from the SAME logic element_list uses — one SSoT.
72
- */
73
- export function hasSourceBinding(node) {
74
- if (node === null || typeof node !== 'object')
75
- return false;
76
- const obj = node;
77
- // (1) props.source — F-13 canonical.
78
- const props = obj.props;
79
- if (props !== null && typeof props === 'object' && 'source' in props) {
80
- const src = props.source;
81
- if (typeof src === 'string') {
82
- if (src.length > 0)
83
- return true;
84
- }
85
- else if (isStructuredBinding(src)) {
86
- return true;
87
- }
88
- }
89
- // (2) top-level node.source.
90
- if ('source' in obj) {
91
- const src = obj.source;
92
- if (typeof src === 'string') {
93
- if (src.length > 0)
94
- return true;
95
- }
96
- else if (isStructuredBinding(src)) {
97
- return true;
98
- }
99
- }
100
- // (3) node.source_extended — YT4 cached/expanded.
101
- if ('source_extended' in obj && isStructuredBinding(obj.source_extended)) {
102
- return true;
103
- }
104
- return false;
105
- }
106
- /**
107
- * Maps an `/elements` row to the table shape.
108
- *
109
- * - `label` falls back to `title` (REST surface varies — newer builds emit
110
- * `label`, older emit `title` as the human-readable name).
111
- * - `has_binding` honours an explicit boolean from the REST plugin, else
112
- * derives from `props.source` presence.
113
- */
114
- export function mapElementRow(input) {
115
- const label = asString(input.label) !== ''
116
- ? asString(input.label)
117
- : asString(input.title);
118
- const explicitBinding = typeof input.has_binding === 'boolean' ? input.has_binding : undefined;
119
- const path = asString(input.path);
120
- // F-06: derive relative path by stripping `/templates/<id>/layout` prefix
121
- // so the LLM table column shows uniquely-identifying suffix.
122
- const relPath = path.replace(/^\/templates\/[^/]+\/layout/, '') || '/';
123
- return {
124
- path,
125
- rel_path: relPath,
126
- element_type: asString(input.element_type),
127
- label,
128
- has_binding: explicitBinding ?? hasSourceBinding(input),
129
- };
130
- }
131
- function summarizeProps(props) {
132
- if (props === null || typeof props !== 'object')
133
- return '—';
134
- const keys = Object.keys(props);
135
- if (keys.length === 0)
136
- return '—';
137
- if (keys.length <= 6)
138
- return keys.join(', ');
139
- return `${keys.slice(0, 6).join(', ')}, …(+${String(keys.length - 6)} more)`;
140
- }
141
- function listChildTypes(children) {
142
- if (children.length === 0)
143
- return '—';
144
- const seen = new Map();
145
- for (const c of children) {
146
- const t = typeof c.type === 'string' ? c.type : '?';
147
- seen.set(t, (seen.get(t) ?? 0) + 1);
148
- }
149
- return [...seen.entries()].map(([t, n]) => (n > 1 ? `${t}×${String(n)}` : t)).join(', ');
150
- }
151
- export function buildElementDetail(payload) {
152
- const children = Array.isArray(payload.children) ? payload.children : [];
153
- return {
154
- title: `Element ${payload.path}`,
155
- groups: [
156
- {
157
- label: 'Identity',
158
- entries: [
159
- { key: 'path', label: 'Path', value: payload.path, format: 'code', copyable: true },
160
- { key: 'element_type', label: 'Type', value: payload.element_type, format: 'badge' },
161
- ...(typeof payload.label === 'string' && payload.label.length > 0
162
- ? [{ key: 'label', label: 'Label', value: payload.label }]
163
- : []),
164
- ],
165
- },
166
- {
167
- label: 'Props (summary)',
168
- entries: [
169
- { key: 'keys', label: 'Keys', value: summarizeProps(payload.props) },
170
- ],
171
- },
172
- {
173
- label: 'Children',
174
- entries: [
175
- { key: 'count', label: 'Count', value: children.length, format: 'text' },
176
- { key: 'types', label: 'Types', value: listChildTypes(children) },
177
- ],
178
- },
179
- {
180
- label: 'Next steps',
181
- entries: [
182
- {
183
- key: 'next',
184
- label: 'Suggestions',
185
- value: 'Use yootheme_builder_element_update_settings to change props, ' +
186
- 'yootheme_builder_element_clone to duplicate, or ' +
187
- 'yootheme_builder_element_delete to remove (requires confirm).',
188
- },
189
- ],
190
- },
191
- ],
192
- };
193
- }
194
- //# sourceMappingURL=elements-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elements-format.js","sourceRoot":"","sources":["../../../src/tools/format/elements-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wEAAwE;AACxE,oEAAoE;AACpE,qEAAqE;AACrE,oEAAoE;AAEpE,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC1D,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC5D,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACjD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3C,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;CAClD,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC5D,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC5D,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;CACpD,CAAC;AAEF,wEAAwE;AAExE,SAAS,QAAQ,CAAC,CAAU;IACxB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,mBAAmB,CAAC,GAAY;IACrC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAI,KAAiC,CAAC,IAAI,CAAC;QACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACjE,CAAC;IACD,oEAAoE;IACpE,oDAAoD;IACpD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAI,KAAiC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAI,CAA6B,CAAC,IAAI,CAAC;gBACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;YACjE,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC1C,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,qCAAqC;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAK,KAAiC,EAAE,CAAC;QAChG,MAAM,GAAG,GAAI,KAAiC,CAAC,MAAM,CAAC;QACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpC,CAAC;aAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,6BAA6B;IAC7B,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpC,CAAC;aAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,kDAAkD;IAClD,IAAI,iBAAiB,IAAI,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAA8B;IACxD,MAAM,KAAK,GACP,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAE,KAAiC,CAAC,KAAK,CAAC,CAAC;IAE7D,MAAM,eAAe,GACjB,OAAO,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,0EAA0E;IAC1E,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IAEvE,OAAO;QACH,IAAI;QACJ,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;QAC1C,KAAK;QACL,WAAW,EAAE,eAAe,IAAI,gBAAgB,CAAC,KAAK,CAAC;KAC1D,CAAC;AACN,CAAC;AAQD,SAAS,cAAc,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC;AACjF,CAAC;AAED,SAAS,cAAc,CAAC,QAA4B;IAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAMlC;IACG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO;QACH,KAAK,EAAE,WAAW,OAAO,CAAC,IAAI,EAAE;QAChC,MAAM,EAAE;YACJ;gBACI,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE;oBACL,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACnF,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE;oBACpF,GAAG,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;wBAC7D,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAW,CAAC;wBACnE,CAAC,CAAC,EAAE,CAAC;iBACZ;aACJ;YACD;gBACI,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE;oBACL,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;iBACvE;aACJ;YACD;gBACI,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE;oBACL,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;oBACxE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE;iBACpE;aACJ;YACD;gBACI,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE;oBACL;wBACI,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE,aAAa;wBACpB,KAAK,EACD,gEAAgE;4BAChE,kDAAkD;4BAClD,+DAA+D;qBACtE;iBACJ;aACJ;SACJ;KACJ,CAAC;AACN,CAAC"}
@@ -1,73 +0,0 @@
1
- /**
2
- * Health format-sidecar — pure transforms for `yootheme_builder_health` and
3
- * `yootheme_builder_diagnose`. Wave G.2.11 (Design §3.2 rows 1 / 2).
4
- *
5
- * Stateless helpers; the handlers themselves are tested separately in
6
- * `tests/tools/health.test.ts` (probe orchestration + error paths).
7
- *
8
- * @license MIT
9
- */
10
- import type { DetailGroup, StatsResultOptions } from '@getimo/mcp-toolkit';
11
- export interface HealthPayload {
12
- plugin_version: string;
13
- yootheme_version: string | null;
14
- wp_version: string | null;
15
- php_version: string;
16
- storage_type: string;
17
- storage_target: string;
18
- yootheme_loaded: boolean;
19
- available_endpoints: string[];
20
- }
21
- /**
22
- * Build the detail body for `yootheme_builder_health`.
23
- *
24
- * Three groups:
25
- * 1. **Plugin** — plugin_version + yootheme_loaded + yootheme_version
26
- * 2. **Host** — wp_version + php_version + storage info
27
- * 3. **Endpoints** — count + a comma-separated sample (no full enumeration)
28
- *
29
- * Endpoint count rather than a long list keeps the detail card compact
30
- * (real installs expose 16+ endpoints across pages/elements/sources/etc.).
31
- */
32
- export declare function buildHealthDetail(payload: HealthPayload): {
33
- groups: DetailGroup[];
34
- title?: string;
35
- };
36
- /**
37
- * Build the flat stats payload for `yootheme_builder_health` per
38
- * Design-Doc §3.2 row 1 (Round-1 audit I1 fix). Returns the shape
39
- * required by `@getimo/mcp-toolkit`'s `statsResult({ stats: [...] })`:
40
- * a flat metric array (no nested groups) suitable for the stats-display
41
- * Rich-Card variant.
42
- *
43
- * Metrics shipped (per Design-Doc §3.2 row 1 spec):
44
- * plugin_version, yootheme_version, wp_version, php_version,
45
- * storage_type, yootheme_loaded, endpoint_count
46
- *
47
- * `available_endpoints` is condensed to `endpoint_count` here — the
48
- * full enumeration lives in the structuredContent payload for hosts
49
- * that want it.
50
- */
51
- export declare function buildHealthStats(payload: HealthPayload): StatsResultOptions;
52
- export interface DiagnoseChecks {
53
- plugin_reachable: boolean;
54
- plugin_version?: string;
55
- yootheme_loaded?: boolean;
56
- yootheme_version?: string | null;
57
- endpoint_count?: number;
58
- plugin_error?: string;
59
- bearer_valid?: boolean;
60
- bearer_error?: string;
61
- }
62
- /**
63
- * Build the detail body for `yootheme_builder_diagnose`.
64
- *
65
- * Always 2 groups: Plugin probe + Bearer probe. The Bearer group is still
66
- * present when the plugin is unreachable — its entries collapse to N/A so
67
- * the structure stays stable across success / partial-fail / full-fail.
68
- */
69
- export declare function buildDiagnoseDetail(checks: DiagnoseChecks): {
70
- groups: DetailGroup[];
71
- title?: string;
72
- };
73
- //# sourceMappingURL=health-format.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health-format.d.ts","sourceRoot":"","sources":["../../../src/tools/format/health-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI3E,MAAM,WAAW,aAAa;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG;IACvD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CA0DA;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,kBAAkB,CA0C3E;AAID,MAAM,WAAW,cAAc;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG;IACzD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CA6BA"}
@@ -1,178 +0,0 @@
1
- /**
2
- * Health format-sidecar — pure transforms for `yootheme_builder_health` and
3
- * `yootheme_builder_diagnose`. Wave G.2.11 (Design §3.2 rows 1 / 2).
4
- *
5
- * Stateless helpers; the handlers themselves are tested separately in
6
- * `tests/tools/health.test.ts` (probe orchestration + error paths).
7
- *
8
- * @license MIT
9
- */
10
- /**
11
- * Build the detail body for `yootheme_builder_health`.
12
- *
13
- * Three groups:
14
- * 1. **Plugin** — plugin_version + yootheme_loaded + yootheme_version
15
- * 2. **Host** — wp_version + php_version + storage info
16
- * 3. **Endpoints** — count + a comma-separated sample (no full enumeration)
17
- *
18
- * Endpoint count rather than a long list keeps the detail card compact
19
- * (real installs expose 16+ endpoints across pages/elements/sources/etc.).
20
- */
21
- export function buildHealthDetail(payload) {
22
- const endpoints = payload.available_endpoints;
23
- const endpointPreview = summarizeEndpoints(endpoints);
24
- return {
25
- title: 'YT Builder MCP — Health',
26
- groups: [
27
- {
28
- label: 'Plugin',
29
- entries: [
30
- {
31
- key: 'plugin_version',
32
- label: 'Plugin version',
33
- value: payload.plugin_version,
34
- format: 'badge',
35
- },
36
- {
37
- key: 'yootheme_loaded',
38
- label: 'YOOtheme loaded',
39
- value: payload.yootheme_loaded,
40
- format: 'boolean',
41
- },
42
- {
43
- key: 'yootheme_version',
44
- label: 'YOOtheme version',
45
- value: payload.yootheme_version,
46
- },
47
- ],
48
- },
49
- {
50
- label: 'Host',
51
- entries: [
52
- { key: 'wp_version', label: 'WordPress version', value: payload.wp_version },
53
- { key: 'php_version', label: 'PHP version', value: payload.php_version },
54
- {
55
- key: 'storage_type',
56
- label: 'Storage type',
57
- value: payload.storage_type,
58
- format: 'badge',
59
- },
60
- {
61
- key: 'storage_target',
62
- label: 'Storage target',
63
- value: payload.storage_target,
64
- format: 'code',
65
- copyable: true,
66
- },
67
- ],
68
- },
69
- {
70
- label: 'Endpoints',
71
- entries: [
72
- { key: 'count', label: 'Count', value: endpoints.length, format: 'text' },
73
- { key: 'sample', label: 'Sample', value: endpointPreview },
74
- ],
75
- },
76
- ],
77
- };
78
- }
79
- function summarizeEndpoints(endpoints) {
80
- if (endpoints.length === 0)
81
- return '—';
82
- if (endpoints.length <= 6)
83
- return endpoints.join(', ');
84
- return `${endpoints.slice(0, 6).join(', ')}, …(+${String(endpoints.length - 6)} more)`;
85
- }
86
- /**
87
- * Build the flat stats payload for `yootheme_builder_health` per
88
- * Design-Doc §3.2 row 1 (Round-1 audit I1 fix). Returns the shape
89
- * required by `@getimo/mcp-toolkit`'s `statsResult({ stats: [...] })`:
90
- * a flat metric array (no nested groups) suitable for the stats-display
91
- * Rich-Card variant.
92
- *
93
- * Metrics shipped (per Design-Doc §3.2 row 1 spec):
94
- * plugin_version, yootheme_version, wp_version, php_version,
95
- * storage_type, yootheme_loaded, endpoint_count
96
- *
97
- * `available_endpoints` is condensed to `endpoint_count` here — the
98
- * full enumeration lives in the structuredContent payload for hosts
99
- * that want it.
100
- */
101
- export function buildHealthStats(payload) {
102
- return {
103
- title: 'YT Builder MCP — Health',
104
- stats: [
105
- {
106
- key: 'plugin_version',
107
- label: 'Plugin version',
108
- value: payload.plugin_version,
109
- },
110
- {
111
- key: 'yootheme_version',
112
- label: 'YOOtheme version',
113
- value: payload.yootheme_version ?? '—',
114
- },
115
- {
116
- key: 'wp_version',
117
- label: 'WordPress version',
118
- value: payload.wp_version ?? '—',
119
- },
120
- {
121
- key: 'php_version',
122
- label: 'PHP version',
123
- value: payload.php_version,
124
- },
125
- {
126
- key: 'storage_type',
127
- label: 'Storage type',
128
- value: payload.storage_type,
129
- },
130
- {
131
- key: 'yootheme_loaded',
132
- label: 'YOOtheme loaded',
133
- value: payload.yootheme_loaded,
134
- },
135
- {
136
- key: 'endpoint_count',
137
- label: 'Endpoint count',
138
- value: payload.available_endpoints.length,
139
- format: 'number',
140
- },
141
- ],
142
- };
143
- }
144
- /**
145
- * Build the detail body for `yootheme_builder_diagnose`.
146
- *
147
- * Always 2 groups: Plugin probe + Bearer probe. The Bearer group is still
148
- * present when the plugin is unreachable — its entries collapse to N/A so
149
- * the structure stays stable across success / partial-fail / full-fail.
150
- */
151
- export function buildDiagnoseDetail(checks) {
152
- const pluginEntries = [
153
- { key: 'plugin_reachable', label: 'Reachable', value: checks.plugin_reachable, format: 'boolean' },
154
- ];
155
- if (typeof checks.plugin_version === 'string')
156
- pluginEntries.push({ key: 'plugin_version', label: 'Plugin version', value: checks.plugin_version, format: 'badge' });
157
- if (typeof checks.yootheme_loaded === 'boolean')
158
- pluginEntries.push({ key: 'yootheme_loaded', label: 'YOOtheme loaded', value: checks.yootheme_loaded, format: 'boolean' });
159
- if (typeof checks.yootheme_version === 'string')
160
- pluginEntries.push({ key: 'yootheme_version', label: 'YOOtheme version', value: checks.yootheme_version });
161
- if (typeof checks.endpoint_count === 'number')
162
- pluginEntries.push({ key: 'endpoint_count', label: 'Endpoint count', value: checks.endpoint_count, format: 'text' });
163
- if (typeof checks.plugin_error === 'string')
164
- pluginEntries.push({ key: 'plugin_error', label: 'Plugin error', value: checks.plugin_error, format: 'code' });
165
- const bearerEntries = typeof checks.bearer_valid === 'boolean'
166
- ? [{ key: 'bearer_valid', label: 'Bearer valid', value: checks.bearer_valid, format: 'boolean' }]
167
- : [{ key: 'bearer_valid', label: 'Bearer valid', value: null }];
168
- if (typeof checks.bearer_error === 'string')
169
- bearerEntries.push({ key: 'bearer_error', label: 'Bearer error', value: checks.bearer_error, format: 'code' });
170
- return {
171
- title: 'YT Builder MCP — Diagnose',
172
- groups: [
173
- { label: 'Plugin probe', entries: pluginEntries },
174
- { label: 'Bearer probe', entries: bearerEntries },
175
- ],
176
- };
177
- }
178
- //# sourceMappingURL=health-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health-format.js","sourceRoot":"","sources":["../../../src/tools/format/health-format.ts"],"names":[],"mappings":"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"}