@bestagentkits/render 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (596) hide show
  1. package/CHANGELOG.md +100 -1
  2. package/README.md +157 -32
  3. package/dist/blocks/chart/chart-check-kind-rules.d.ts +10 -0
  4. package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
  5. package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
  6. package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
  7. package/dist/blocks/chart/chart-check.d.ts +15 -0
  8. package/dist/blocks/chart/chart-check.d.ts.map +1 -0
  9. package/dist/blocks/chart/chart-check.js +196 -0
  10. package/dist/blocks/chart/chart-check.js.map +1 -0
  11. package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
  12. package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
  13. package/dist/blocks/chart/chart-encoding-schema.js +39 -0
  14. package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
  15. package/dist/blocks/chart/chart-encodings.d.ts +29 -0
  16. package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
  17. package/dist/blocks/chart/chart-encodings.js +59 -0
  18. package/dist/blocks/chart/chart-encodings.js.map +1 -0
  19. package/dist/blocks/chart/chart-kinds.d.ts +18 -0
  20. package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
  21. package/dist/blocks/chart/chart-kinds.js +60 -0
  22. package/dist/blocks/chart/chart-kinds.js.map +1 -0
  23. package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
  24. package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
  25. package/dist/blocks/chart/chart-model-rows.js +153 -0
  26. package/dist/blocks/chart/chart-model-rows.js.map +1 -0
  27. package/dist/blocks/chart/chart-model.d.ts +17 -0
  28. package/dist/blocks/chart/chart-model.d.ts.map +1 -0
  29. package/dist/blocks/chart/chart-model.js +131 -0
  30. package/dist/blocks/chart/chart-model.js.map +1 -0
  31. package/dist/blocks/chart/chart-styles.d.ts +3 -0
  32. package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
  33. package/dist/blocks/chart/chart-styles.js +76 -0
  34. package/dist/blocks/chart/chart-styles.js.map +1 -0
  35. package/dist/blocks/chart/chart.d.ts +12 -0
  36. package/dist/blocks/chart/chart.d.ts.map +1 -0
  37. package/dist/blocks/chart/chart.js +73 -0
  38. package/dist/blocks/chart/chart.js.map +1 -0
  39. package/dist/blocks/chart/index.d.ts +4 -0
  40. package/dist/blocks/chart/index.d.ts.map +1 -0
  41. package/dist/blocks/chart/index.js +8 -0
  42. package/dist/blocks/chart/index.js.map +1 -0
  43. package/dist/blocks/composition/accordion.d.ts +4 -0
  44. package/dist/blocks/composition/accordion.d.ts.map +1 -0
  45. package/dist/blocks/composition/accordion.js +45 -0
  46. package/dist/blocks/composition/accordion.js.map +1 -0
  47. package/dist/blocks/composition/bento.d.ts +4 -0
  48. package/dist/blocks/composition/bento.d.ts.map +1 -0
  49. package/dist/blocks/composition/bento.js +91 -0
  50. package/dist/blocks/composition/bento.js.map +1 -0
  51. package/dist/blocks/composition/carousel.d.ts +4 -0
  52. package/dist/blocks/composition/carousel.d.ts.map +1 -0
  53. package/dist/blocks/composition/carousel.js +51 -0
  54. package/dist/blocks/composition/carousel.js.map +1 -0
  55. package/dist/blocks/composition/composition-runtime.d.ts +14 -0
  56. package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
  57. package/dist/blocks/composition/composition-runtime.js +136 -0
  58. package/dist/blocks/composition/composition-runtime.js.map +1 -0
  59. package/dist/blocks/composition/composition-styles.d.ts +10 -0
  60. package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
  61. package/dist/blocks/composition/composition-styles.js +80 -0
  62. package/dist/blocks/composition/composition-styles.js.map +1 -0
  63. package/dist/blocks/composition/index.d.ts +4 -0
  64. package/dist/blocks/composition/index.d.ts.map +1 -0
  65. package/dist/blocks/composition/index.js +11 -0
  66. package/dist/blocks/composition/index.js.map +1 -0
  67. package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
  68. package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
  69. package/dist/blocks/composition/nestable-blocks.js +92 -0
  70. package/dist/blocks/composition/nestable-blocks.js.map +1 -0
  71. package/dist/blocks/composition/tabs.d.ts +4 -0
  72. package/dist/blocks/composition/tabs.d.ts.map +1 -0
  73. package/dist/blocks/composition/tabs.js +48 -0
  74. package/dist/blocks/composition/tabs.js.map +1 -0
  75. package/dist/blocks/controls/checkbox.d.ts +12 -0
  76. package/dist/blocks/controls/checkbox.d.ts.map +1 -0
  77. package/dist/blocks/controls/checkbox.js +43 -0
  78. package/dist/blocks/controls/checkbox.js.map +1 -0
  79. package/dist/blocks/controls/choice-options.d.ts +24 -0
  80. package/dist/blocks/controls/choice-options.d.ts.map +1 -0
  81. package/dist/blocks/controls/choice-options.js +117 -0
  82. package/dist/blocks/controls/choice-options.js.map +1 -0
  83. package/dist/blocks/controls/control-shared.d.ts +66 -0
  84. package/dist/blocks/controls/control-shared.d.ts.map +1 -0
  85. package/dist/blocks/controls/control-shared.js +241 -0
  86. package/dist/blocks/controls/control-shared.js.map +1 -0
  87. package/dist/blocks/controls/controls-runtime.d.ts +17 -0
  88. package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
  89. package/dist/blocks/controls/controls-runtime.js +180 -0
  90. package/dist/blocks/controls/controls-runtime.js.map +1 -0
  91. package/dist/blocks/controls/controls-styles.d.ts +14 -0
  92. package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
  93. package/dist/blocks/controls/controls-styles.js +54 -0
  94. package/dist/blocks/controls/controls-styles.js.map +1 -0
  95. package/dist/blocks/controls/date-input.d.ts +6 -0
  96. package/dist/blocks/controls/date-input.d.ts.map +1 -0
  97. package/dist/blocks/controls/date-input.js +58 -0
  98. package/dist/blocks/controls/date-input.js.map +1 -0
  99. package/dist/blocks/controls/field-input.d.ts +10 -0
  100. package/dist/blocks/controls/field-input.d.ts.map +1 -0
  101. package/dist/blocks/controls/field-input.js +20 -0
  102. package/dist/blocks/controls/field-input.js.map +1 -0
  103. package/dist/blocks/controls/filter-bar.d.ts +11 -0
  104. package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
  105. package/dist/blocks/controls/filter-bar.js +115 -0
  106. package/dist/blocks/controls/filter-bar.js.map +1 -0
  107. package/dist/blocks/controls/index.d.ts +4 -0
  108. package/dist/blocks/controls/index.d.ts.map +1 -0
  109. package/dist/blocks/controls/index.js +41 -0
  110. package/dist/blocks/controls/index.js.map +1 -0
  111. package/dist/blocks/controls/number-input.d.ts +4 -0
  112. package/dist/blocks/controls/number-input.d.ts.map +1 -0
  113. package/dist/blocks/controls/number-input.js +62 -0
  114. package/dist/blocks/controls/number-input.js.map +1 -0
  115. package/dist/blocks/controls/radio-group.d.ts +4 -0
  116. package/dist/blocks/controls/radio-group.d.ts.map +1 -0
  117. package/dist/blocks/controls/radio-group.js +56 -0
  118. package/dist/blocks/controls/radio-group.js.map +1 -0
  119. package/dist/blocks/controls/select.d.ts +4 -0
  120. package/dist/blocks/controls/select.d.ts.map +1 -0
  121. package/dist/blocks/controls/select.js +49 -0
  122. package/dist/blocks/controls/select.js.map +1 -0
  123. package/dist/blocks/controls/switch.d.ts +4 -0
  124. package/dist/blocks/controls/switch.d.ts.map +1 -0
  125. package/dist/blocks/controls/switch.js +22 -0
  126. package/dist/blocks/controls/switch.js.map +1 -0
  127. package/dist/blocks/controls/text-input.d.ts +4 -0
  128. package/dist/blocks/controls/text-input.d.ts.map +1 -0
  129. package/dist/blocks/controls/text-input.js +42 -0
  130. package/dist/blocks/controls/text-input.js.map +1 -0
  131. package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
  132. package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
  133. package/dist/blocks/data-table/data-table-cells.js +154 -0
  134. package/dist/blocks/data-table/data-table-cells.js.map +1 -0
  135. package/dist/blocks/data-table/data-table-check.d.ts +10 -0
  136. package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
  137. package/dist/blocks/data-table/data-table-check.js +99 -0
  138. package/dist/blocks/data-table/data-table-check.js.map +1 -0
  139. package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
  140. package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
  141. package/dist/blocks/data-table/data-table-columns.js +155 -0
  142. package/dist/blocks/data-table/data-table-columns.js.map +1 -0
  143. package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
  144. package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
  145. package/dist/blocks/data-table/data-table-runtime.js +106 -0
  146. package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
  147. package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
  148. package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
  149. package/dist/blocks/data-table/data-table-styles.js +74 -0
  150. package/dist/blocks/data-table/data-table-styles.js.map +1 -0
  151. package/dist/blocks/data-table/data-table.d.ts +17 -0
  152. package/dist/blocks/data-table/data-table.d.ts.map +1 -0
  153. package/dist/blocks/data-table/data-table.js +159 -0
  154. package/dist/blocks/data-table/data-table.js.map +1 -0
  155. package/dist/blocks/data-table/index.d.ts +4 -0
  156. package/dist/blocks/data-table/index.d.ts.map +1 -0
  157. package/dist/blocks/data-table/index.js +18 -0
  158. package/dist/blocks/data-table/index.js.map +1 -0
  159. package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
  160. package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
  161. package/dist/blocks/engineering/api-endpoint.js +174 -0
  162. package/dist/blocks/engineering/api-endpoint.js.map +1 -0
  163. package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
  164. package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
  165. package/dist/blocks/engineering/engineering-helpers.js +156 -0
  166. package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
  167. package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
  168. package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
  169. package/dist/blocks/engineering/engineering-styles.js +174 -0
  170. package/dist/blocks/engineering/engineering-styles.js.map +1 -0
  171. package/dist/blocks/engineering/index.d.ts +4 -0
  172. package/dist/blocks/engineering/index.d.ts.map +1 -0
  173. package/dist/blocks/engineering/index.js +30 -0
  174. package/dist/blocks/engineering/index.js.map +1 -0
  175. package/dist/blocks/engineering/kanban.d.ts +11 -0
  176. package/dist/blocks/engineering/kanban.d.ts.map +1 -0
  177. package/dist/blocks/engineering/kanban.js +162 -0
  178. package/dist/blocks/engineering/kanban.js.map +1 -0
  179. package/dist/blocks/engineering/log-viewer.d.ts +14 -0
  180. package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
  181. package/dist/blocks/engineering/log-viewer.js +158 -0
  182. package/dist/blocks/engineering/log-viewer.js.map +1 -0
  183. package/dist/blocks/engineering/roadmap.d.ts +13 -0
  184. package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
  185. package/dist/blocks/engineering/roadmap.js +197 -0
  186. package/dist/blocks/engineering/roadmap.js.map +1 -0
  187. package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
  188. package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
  189. package/dist/blocks/engineering/schema-viewer.js +124 -0
  190. package/dist/blocks/engineering/schema-viewer.js.map +1 -0
  191. package/dist/blocks/engineering/test-results.d.ts +12 -0
  192. package/dist/blocks/engineering/test-results.d.ts.map +1 -0
  193. package/dist/blocks/engineering/test-results.js +180 -0
  194. package/dist/blocks/engineering/test-results.js.map +1 -0
  195. package/dist/blocks/evidence/annotated-image.d.ts +15 -0
  196. package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
  197. package/dist/blocks/evidence/annotated-image.js +99 -0
  198. package/dist/blocks/evidence/annotated-image.js.map +1 -0
  199. package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
  200. package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
  201. package/dist/blocks/evidence/benchmark-comparison.js +262 -0
  202. package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
  203. package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
  204. package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
  205. package/dist/blocks/evidence/benchmark-verdict.js +31 -0
  206. package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
  207. package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
  208. package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
  209. package/dist/blocks/evidence/evidence-helpers.js +87 -0
  210. package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
  211. package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
  212. package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
  213. package/dist/blocks/evidence/evidence-styles.js +88 -0
  214. package/dist/blocks/evidence/evidence-styles.js.map +1 -0
  215. package/dist/blocks/evidence/index.d.ts +4 -0
  216. package/dist/blocks/evidence/index.d.ts.map +1 -0
  217. package/dist/blocks/evidence/index.js +15 -0
  218. package/dist/blocks/evidence/index.js.map +1 -0
  219. package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
  220. package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
  221. package/dist/blocks/evidence/metric-breakdown.js +203 -0
  222. package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
  223. package/dist/blocks/evidence/references.d.ts +13 -0
  224. package/dist/blocks/evidence/references.d.ts.map +1 -0
  225. package/dist/blocks/evidence/references.js +103 -0
  226. package/dist/blocks/evidence/references.js.map +1 -0
  227. package/dist/blocks/index.d.ts +8 -0
  228. package/dist/blocks/index.d.ts.map +1 -0
  229. package/dist/blocks/index.js +24 -0
  230. package/dist/blocks/index.js.map +1 -0
  231. package/dist/blocks/layout/grid-item.d.ts +4 -0
  232. package/dist/blocks/layout/grid-item.d.ts.map +1 -0
  233. package/dist/blocks/layout/grid-item.js +65 -0
  234. package/dist/blocks/layout/grid-item.js.map +1 -0
  235. package/dist/blocks/layout/grid.d.ts +9 -0
  236. package/dist/blocks/layout/grid.d.ts.map +1 -0
  237. package/dist/blocks/layout/grid.js +99 -0
  238. package/dist/blocks/layout/grid.js.map +1 -0
  239. package/dist/blocks/layout/index.d.ts +4 -0
  240. package/dist/blocks/layout/index.d.ts.map +1 -0
  241. package/dist/blocks/layout/index.js +23 -0
  242. package/dist/blocks/layout/index.js.map +1 -0
  243. package/dist/blocks/layout/layout-styles.d.ts +40 -0
  244. package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
  245. package/dist/blocks/layout/layout-styles.js +110 -0
  246. package/dist/blocks/layout/layout-styles.js.map +1 -0
  247. package/dist/blocks/layout/main-aside.d.ts +4 -0
  248. package/dist/blocks/layout/main-aside.d.ts.map +1 -0
  249. package/dist/blocks/layout/main-aside.js +21 -0
  250. package/dist/blocks/layout/main-aside.js.map +1 -0
  251. package/dist/blocks/layout/rail-layout.d.ts +4 -0
  252. package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
  253. package/dist/blocks/layout/rail-layout.js +33 -0
  254. package/dist/blocks/layout/rail-layout.js.map +1 -0
  255. package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
  256. package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
  257. package/dist/blocks/layout/semantic-layout-parts.js +9 -0
  258. package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
  259. package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
  260. package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
  261. package/dist/blocks/layout/sidebar-layout.js +30 -0
  262. package/dist/blocks/layout/sidebar-layout.js.map +1 -0
  263. package/dist/blocks/layout/split.d.ts +4 -0
  264. package/dist/blocks/layout/split.d.ts.map +1 -0
  265. package/dist/blocks/layout/split.js +23 -0
  266. package/dist/blocks/layout/split.js.map +1 -0
  267. package/dist/blocks/layout/stack.d.ts +4 -0
  268. package/dist/blocks/layout/stack.d.ts.map +1 -0
  269. package/dist/blocks/layout/stack.js +36 -0
  270. package/dist/blocks/layout/stack.js.map +1 -0
  271. package/dist/blocks/product/calendar-dates.d.ts +59 -0
  272. package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
  273. package/dist/blocks/product/calendar-dates.js +100 -0
  274. package/dist/blocks/product/calendar-dates.js.map +1 -0
  275. package/dist/blocks/product/calendar.d.ts +12 -0
  276. package/dist/blocks/product/calendar.d.ts.map +1 -0
  277. package/dist/blocks/product/calendar.js +125 -0
  278. package/dist/blocks/product/calendar.js.map +1 -0
  279. package/dist/blocks/product/feature-matrix.d.ts +4 -0
  280. package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
  281. package/dist/blocks/product/feature-matrix.js +72 -0
  282. package/dist/blocks/product/feature-matrix.js.map +1 -0
  283. package/dist/blocks/product/gallery.d.ts +14 -0
  284. package/dist/blocks/product/gallery.d.ts.map +1 -0
  285. package/dist/blocks/product/gallery.js +86 -0
  286. package/dist/blocks/product/gallery.js.map +1 -0
  287. package/dist/blocks/product/index.d.ts +4 -0
  288. package/dist/blocks/product/index.d.ts.map +1 -0
  289. package/dist/blocks/product/index.js +40 -0
  290. package/dist/blocks/product/index.js.map +1 -0
  291. package/dist/blocks/product/logo-cloud.d.ts +4 -0
  292. package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
  293. package/dist/blocks/product/logo-cloud.js +42 -0
  294. package/dist/blocks/product/logo-cloud.js.map +1 -0
  295. package/dist/blocks/product/people.d.ts +4 -0
  296. package/dist/blocks/product/people.d.ts.map +1 -0
  297. package/dist/blocks/product/people.js +53 -0
  298. package/dist/blocks/product/people.js.map +1 -0
  299. package/dist/blocks/product/pricing.d.ts +4 -0
  300. package/dist/blocks/product/pricing.d.ts.map +1 -0
  301. package/dist/blocks/product/pricing.js +86 -0
  302. package/dist/blocks/product/pricing.js.map +1 -0
  303. package/dist/blocks/product/product-helpers.d.ts +22 -0
  304. package/dist/blocks/product/product-helpers.d.ts.map +1 -0
  305. package/dist/blocks/product/product-helpers.js +48 -0
  306. package/dist/blocks/product/product-helpers.js.map +1 -0
  307. package/dist/blocks/product/product-runtime.d.ts +15 -0
  308. package/dist/blocks/product/product-runtime.d.ts.map +1 -0
  309. package/dist/blocks/product/product-runtime.js +97 -0
  310. package/dist/blocks/product/product-runtime.js.map +1 -0
  311. package/dist/blocks/product/product-styles.d.ts +14 -0
  312. package/dist/blocks/product/product-styles.d.ts.map +1 -0
  313. package/dist/blocks/product/product-styles.js +120 -0
  314. package/dist/blocks/product/product-styles.js.map +1 -0
  315. package/dist/blocks/product/testimonial.d.ts +8 -0
  316. package/dist/blocks/product/testimonial.d.ts.map +1 -0
  317. package/dist/blocks/product/testimonial.js +67 -0
  318. package/dist/blocks/product/testimonial.js.map +1 -0
  319. package/dist/cli.d.ts.map +1 -1
  320. package/dist/cli.js +143 -30
  321. package/dist/cli.js.map +1 -1
  322. package/dist/data/data-json-schema.d.ts +9 -0
  323. package/dist/data/data-json-schema.d.ts.map +1 -0
  324. package/dist/data/data-json-schema.js +48 -0
  325. package/dist/data/data-json-schema.js.map +1 -0
  326. package/dist/data/dataset-types.d.ts +47 -0
  327. package/dist/data/dataset-types.d.ts.map +1 -0
  328. package/dist/data/dataset-types.js +49 -0
  329. package/dist/data/dataset-types.js.map +1 -0
  330. package/dist/data/format-value.d.ts +39 -0
  331. package/dist/data/format-value.d.ts.map +1 -0
  332. package/dist/data/format-value.js +214 -0
  333. package/dist/data/format-value.js.map +1 -0
  334. package/dist/data/resolve-block-data.d.ts +24 -0
  335. package/dist/data/resolve-block-data.d.ts.map +1 -0
  336. package/dist/data/resolve-block-data.js +190 -0
  337. package/dist/data/resolve-block-data.js.map +1 -0
  338. package/dist/data/transform-pipeline.d.ts +65 -0
  339. package/dist/data/transform-pipeline.d.ts.map +1 -0
  340. package/dist/data/transform-pipeline.js +234 -0
  341. package/dist/data/transform-pipeline.js.map +1 -0
  342. package/dist/data/validate-datasets.d.ts +22 -0
  343. package/dist/data/validate-datasets.d.ts.map +1 -0
  344. package/dist/data/validate-datasets.js +137 -0
  345. package/dist/data/validate-datasets.js.map +1 -0
  346. package/dist/diagram/adapter-markup-fit.d.ts +44 -0
  347. package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
  348. package/dist/diagram/adapter-markup-fit.js +292 -0
  349. package/dist/diagram/adapter-markup-fit.js.map +1 -0
  350. package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
  351. package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
  352. package/dist/diagram/adapter-stylesheet-filter.js +245 -0
  353. package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
  354. package/dist/diagram/adapter.d.ts +17 -0
  355. package/dist/diagram/adapter.d.ts.map +1 -1
  356. package/dist/diagram/adapter.js +43 -2
  357. package/dist/diagram/adapter.js.map +1 -1
  358. package/dist/index.d.ts +14 -1
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.js +6 -0
  361. package/dist/index.js.map +1 -1
  362. package/dist/ir.d.ts +18 -0
  363. package/dist/ir.d.ts.map +1 -1
  364. package/dist/ir.js.map +1 -1
  365. package/dist/mcp/mcp-http-transport.d.ts +68 -0
  366. package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
  367. package/dist/mcp/mcp-http-transport.js +140 -0
  368. package/dist/mcp/mcp-http-transport.js.map +1 -0
  369. package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
  370. package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
  371. package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
  372. package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
  373. package/dist/mcp/mcp-local-tools.d.ts +20 -0
  374. package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
  375. package/dist/mcp/mcp-local-tools.js +58 -0
  376. package/dist/mcp/mcp-local-tools.js.map +1 -0
  377. package/dist/mcp/mcp-protocol.d.ts +79 -0
  378. package/dist/mcp/mcp-protocol.d.ts.map +1 -0
  379. package/dist/mcp/mcp-protocol.js +83 -0
  380. package/dist/mcp/mcp-protocol.js.map +1 -0
  381. package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
  382. package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
  383. package/dist/mcp/mcp-stdio-transport.js +73 -0
  384. package/dist/mcp/mcp-stdio-transport.js.map +1 -0
  385. package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
  386. package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
  387. package/dist/mcp/mcp-tool-definitions.js +246 -0
  388. package/dist/mcp/mcp-tool-definitions.js.map +1 -0
  389. package/dist/mcp-server.d.ts +6 -33
  390. package/dist/mcp-server.d.ts.map +1 -1
  391. package/dist/mcp-server.js +5 -270
  392. package/dist/mcp-server.js.map +1 -1
  393. package/dist/recipes/index.d.ts +27 -0
  394. package/dist/recipes/index.d.ts.map +1 -0
  395. package/dist/recipes/index.js +30 -0
  396. package/dist/recipes/index.js.map +1 -0
  397. package/dist/recipes/recipes.generated.d.ts +8 -0
  398. package/dist/recipes/recipes.generated.d.ts.map +1 -0
  399. package/dist/recipes/recipes.generated.js +704 -0
  400. package/dist/recipes/recipes.generated.js.map +1 -0
  401. package/dist/registry/actions.d.ts +2 -0
  402. package/dist/registry/actions.d.ts.map +1 -1
  403. package/dist/registry/actions.js +3 -1
  404. package/dist/registry/actions.js.map +1 -1
  405. package/dist/registry/block-module.d.ts +65 -0
  406. package/dist/registry/block-module.d.ts.map +1 -0
  407. package/dist/registry/block-module.js +19 -0
  408. package/dist/registry/block-module.js.map +1 -0
  409. package/dist/registry/catalog-search.d.ts +32 -0
  410. package/dist/registry/catalog-search.d.ts.map +1 -0
  411. package/dist/registry/catalog-search.js +122 -0
  412. package/dist/registry/catalog-search.js.map +1 -0
  413. package/dist/registry/define-helpers.d.ts +89 -0
  414. package/dist/registry/define-helpers.d.ts.map +1 -0
  415. package/dist/registry/define-helpers.js +87 -0
  416. package/dist/registry/define-helpers.js.map +1 -0
  417. package/dist/registry/describe-many.d.ts +58 -0
  418. package/dist/registry/describe-many.d.ts.map +1 -0
  419. package/dist/registry/describe-many.js +156 -0
  420. package/dist/registry/describe-many.js.map +1 -0
  421. package/dist/registry/prop-schema.d.ts +32 -1
  422. package/dist/registry/prop-schema.d.ts.map +1 -1
  423. package/dist/registry/prop-schema.js +108 -2
  424. package/dist/registry/prop-schema.js.map +1 -1
  425. package/dist/registry/registry-builder.d.ts +17 -0
  426. package/dist/registry/registry-builder.d.ts.map +1 -0
  427. package/dist/registry/registry-builder.js +158 -0
  428. package/dist/registry/registry-builder.js.map +1 -0
  429. package/dist/registry/registry.d.ts +32 -5
  430. package/dist/registry/registry.d.ts.map +1 -1
  431. package/dist/registry/registry.js +67 -14
  432. package/dist/registry/registry.js.map +1 -1
  433. package/dist/registry/roster.d.ts +34 -5
  434. package/dist/registry/roster.d.ts.map +1 -1
  435. package/dist/registry/roster.js +184 -224
  436. package/dist/registry/roster.js.map +1 -1
  437. package/dist/render/block-helpers.d.ts +11 -18
  438. package/dist/render/block-helpers.d.ts.map +1 -1
  439. package/dist/render/block-helpers.js +14 -44
  440. package/dist/render/block-helpers.js.map +1 -1
  441. package/dist/render/blocks.d.ts +9 -33
  442. package/dist/render/blocks.d.ts.map +1 -1
  443. package/dist/render/blocks.js +56 -180
  444. package/dist/render/blocks.js.map +1 -1
  445. package/dist/render/chart-figure-encoded.d.ts +11 -0
  446. package/dist/render/chart-figure-encoded.d.ts.map +1 -0
  447. package/dist/render/chart-figure-encoded.js +81 -0
  448. package/dist/render/chart-figure-encoded.js.map +1 -0
  449. package/dist/render/chart-kinds-cartesian.d.ts +14 -0
  450. package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
  451. package/dist/render/chart-kinds-cartesian.js +122 -0
  452. package/dist/render/chart-kinds-cartesian.js.map +1 -0
  453. package/dist/render/chart-kinds-composite.d.ts +16 -0
  454. package/dist/render/chart-kinds-composite.d.ts.map +1 -0
  455. package/dist/render/chart-kinds-composite.js +144 -0
  456. package/dist/render/chart-kinds-composite.js.map +1 -0
  457. package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
  458. package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
  459. package/dist/render/chart-kinds-gauge-treemap.js +101 -0
  460. package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
  461. package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
  462. package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
  463. package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
  464. package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
  465. package/dist/render/chart-overlays.d.ts +18 -0
  466. package/dist/render/chart-overlays.d.ts.map +1 -0
  467. package/dist/render/chart-overlays.js +58 -0
  468. package/dist/render/chart-overlays.js.map +1 -0
  469. package/dist/render/chart-scales.d.ts +83 -0
  470. package/dist/render/chart-scales.d.ts.map +1 -0
  471. package/dist/render/chart-scales.js +166 -0
  472. package/dist/render/chart-scales.js.map +1 -0
  473. package/dist/render/chart-svg-parts.d.ts +50 -0
  474. package/dist/render/chart-svg-parts.d.ts.map +1 -0
  475. package/dist/render/chart-svg-parts.js +125 -0
  476. package/dist/render/chart-svg-parts.js.map +1 -0
  477. package/dist/render/chart-text.d.ts +18 -0
  478. package/dist/render/chart-text.d.ts.map +1 -0
  479. package/dist/render/chart-text.js +69 -0
  480. package/dist/render/chart-text.js.map +1 -0
  481. package/dist/render/chart-treemap-layout.d.ts +17 -0
  482. package/dist/render/chart-treemap-layout.d.ts.map +1 -0
  483. package/dist/render/chart-treemap-layout.js +74 -0
  484. package/dist/render/chart-treemap-layout.js.map +1 -0
  485. package/dist/render/chart-types.d.ts +107 -0
  486. package/dist/render/chart-types.d.ts.map +1 -0
  487. package/dist/render/chart-types.js +11 -0
  488. package/dist/render/chart-types.js.map +1 -0
  489. package/dist/render/charts.d.ts +28 -11
  490. package/dist/render/charts.d.ts.map +1 -1
  491. package/dist/render/charts.js +38 -117
  492. package/dist/render/charts.js.map +1 -1
  493. package/dist/render/derived-variables.d.ts +20 -0
  494. package/dist/render/derived-variables.d.ts.map +1 -1
  495. package/dist/render/derived-variables.js +23 -0
  496. package/dist/render/derived-variables.js.map +1 -1
  497. package/dist/render/document.d.ts +11 -0
  498. package/dist/render/document.d.ts.map +1 -1
  499. package/dist/render/document.js +20 -3
  500. package/dist/render/document.js.map +1 -1
  501. package/dist/render/escape.d.ts +10 -0
  502. package/dist/render/escape.d.ts.map +1 -1
  503. package/dist/render/escape.js +28 -0
  504. package/dist/render/escape.js.map +1 -1
  505. package/dist/render/feature-styles.d.ts.map +1 -1
  506. package/dist/render/feature-styles.js +42 -80
  507. package/dist/render/feature-styles.js.map +1 -1
  508. package/dist/render/outline.d.ts +1 -1
  509. package/dist/render/outline.d.ts.map +1 -1
  510. package/dist/render/outline.js +4 -1
  511. package/dist/render/outline.js.map +1 -1
  512. package/dist/render/recipe-styles.d.ts +26 -0
  513. package/dist/render/recipe-styles.d.ts.map +1 -0
  514. package/dist/render/recipe-styles.js +218 -0
  515. package/dist/render/recipe-styles.js.map +1 -0
  516. package/dist/render/render-context.d.ts +40 -0
  517. package/dist/render/render-context.d.ts.map +1 -0
  518. package/dist/render/render-context.js +16 -0
  519. package/dist/render/render-context.js.map +1 -0
  520. package/dist/render/render.d.ts +7 -0
  521. package/dist/render/render.d.ts.map +1 -1
  522. package/dist/render/render.js +68 -44
  523. package/dist/render/render.js.map +1 -1
  524. package/dist/render/runtime.d.ts +4 -1
  525. package/dist/render/runtime.d.ts.map +1 -1
  526. package/dist/render/runtime.js +91 -118
  527. package/dist/render/runtime.js.map +1 -1
  528. package/dist/render/showcase-blocks.d.ts +5 -0
  529. package/dist/render/showcase-blocks.d.ts.map +1 -1
  530. package/dist/render/showcase-blocks.js +8 -28
  531. package/dist/render/showcase-blocks.js.map +1 -1
  532. package/dist/render/showcase-styles.d.ts.map +1 -1
  533. package/dist/render/showcase-styles.js +15 -31
  534. package/dist/render/showcase-styles.js.map +1 -1
  535. package/dist/render/style-units.d.ts +17 -0
  536. package/dist/render/style-units.d.ts.map +1 -0
  537. package/dist/render/style-units.js +24 -0
  538. package/dist/render/style-units.js.map +1 -0
  539. package/dist/render/styles.d.ts.map +1 -1
  540. package/dist/render/styles.js +8 -5
  541. package/dist/render/styles.js.map +1 -1
  542. package/dist/render/tone.d.ts +14 -0
  543. package/dist/render/tone.d.ts.map +1 -0
  544. package/dist/render/tone.js +40 -0
  545. package/dist/render/tone.js.map +1 -0
  546. package/dist/render/verify.d.ts +3 -0
  547. package/dist/render/verify.d.ts.map +1 -1
  548. package/dist/render/verify.js +15 -2
  549. package/dist/render/verify.js.map +1 -1
  550. package/dist/spec/asset-references.d.ts +35 -0
  551. package/dist/spec/asset-references.d.ts.map +1 -0
  552. package/dist/spec/asset-references.js +93 -0
  553. package/dist/spec/asset-references.js.map +1 -0
  554. package/dist/spec/bounds.d.ts +6 -0
  555. package/dist/spec/bounds.d.ts.map +1 -1
  556. package/dist/spec/bounds.js +7 -0
  557. package/dist/spec/bounds.js.map +1 -1
  558. package/dist/spec/conditions.d.ts +43 -0
  559. package/dist/spec/conditions.d.ts.map +1 -0
  560. package/dist/spec/conditions.js +179 -0
  561. package/dist/spec/conditions.js.map +1 -0
  562. package/dist/spec/network-policy.d.ts +33 -0
  563. package/dist/spec/network-policy.d.ts.map +1 -0
  564. package/dist/spec/network-policy.js +57 -0
  565. package/dist/spec/network-policy.js.map +1 -0
  566. package/dist/spec/normalize.d.ts +7 -2
  567. package/dist/spec/normalize.d.ts.map +1 -1
  568. package/dist/spec/normalize.js +203 -57
  569. package/dist/spec/normalize.js.map +1 -1
  570. package/dist/theme/dialect-presets.d.ts +12 -0
  571. package/dist/theme/dialect-presets.d.ts.map +1 -0
  572. package/dist/theme/dialect-presets.js +214 -0
  573. package/dist/theme/dialect-presets.js.map +1 -0
  574. package/dist/theme/load-theme.d.ts +9 -1
  575. package/dist/theme/load-theme.d.ts.map +1 -1
  576. package/dist/theme/load-theme.js +25 -2
  577. package/dist/theme/load-theme.js.map +1 -1
  578. package/dist/theme/preset-builder.d.ts +36 -0
  579. package/dist/theme/preset-builder.d.ts.map +1 -0
  580. package/dist/theme/preset-builder.js +51 -0
  581. package/dist/theme/preset-builder.js.map +1 -0
  582. package/dist/theme/presets.d.ts +4 -7
  583. package/dist/theme/presets.d.ts.map +1 -1
  584. package/dist/theme/presets.js +7 -40
  585. package/dist/theme/presets.js.map +1 -1
  586. package/dist/theme/recipes.d.ts +38 -0
  587. package/dist/theme/recipes.d.ts.map +1 -0
  588. package/dist/theme/recipes.js +96 -0
  589. package/dist/theme/recipes.js.map +1 -0
  590. package/dist/theme/theme-catalog.d.ts.map +1 -1
  591. package/dist/theme/theme-catalog.js +16 -0
  592. package/dist/theme/theme-catalog.js.map +1 -1
  593. package/dist/version.d.ts +1 -1
  594. package/dist/version.js +1 -1
  595. package/llms.txt +9 -5
  596. package/package.json +6 -2
@@ -0,0 +1,246 @@
1
+ /**
2
+ * The MCP tool contract: one source of truth for every transport.
3
+ *
4
+ * The stdio server and the Streamable HTTP server list tools from here. The
5
+ * read-only tools (`catalog`, `search-catalog`, `describe`, `recipes`,
6
+ * `recipe`, `validate`) are complete and pure, so both transports run the very same function. `render`
7
+ * and `themes` differ only
8
+ * in where their output goes or where presets come from, so this module owns
9
+ * their descriptions, input schemas and result shapes, and each transport
10
+ * supplies the side effect: a local file for stdio, a stored artifact for HTTP.
11
+ *
12
+ * No Node-only import is allowed here; the Worker bundles this module.
13
+ */
14
+ import { recipe, recipes } from '../recipes/index.js';
15
+ import { BLOCK_CATEGORIES } from '../registry/block-module.js';
16
+ import { CATALOG_SEARCH_LIMITS, searchCatalog } from '../registry/catalog-search.js';
17
+ import { DESCRIBE_MANY_LIMIT, describeMany } from '../registry/describe-many.js';
18
+ import { catalog, describe, formatCatalogJson } from '../registry/registry.js';
19
+ import { validate } from '../spec/validate.js';
20
+ import { builtinPresetEntries } from '../theme/presets.js';
21
+ import { failure, ToolArgumentError, text } from './mcp-protocol.js';
22
+ const SPEC_INPUT = {
23
+ description: 'The Page Spec: YAML or JSON text, or the parsed object.',
24
+ anyOf: [{ type: 'string' }, { type: 'object' }],
25
+ };
26
+ const THEME_INPUT = {
27
+ type: 'string',
28
+ description: 'Optional preset name overriding the spec theme.',
29
+ };
30
+ const NO_INPUT = { type: 'object', properties: {}, additionalProperties: false };
31
+ export function requireString(args, key) {
32
+ const value = args[key];
33
+ if (typeof value !== 'string' || value === '') {
34
+ throw new ToolArgumentError(`"${key}" must be a non-empty string`);
35
+ }
36
+ return value;
37
+ }
38
+ /** The optional `theme` argument, normalized: an empty string means "not given". */
39
+ export function optionalTheme(args) {
40
+ const theme = args.theme;
41
+ return typeof theme === 'string' && theme !== '' ? theme : undefined;
42
+ }
43
+ /** An optional string argument: absent or empty means "not given". */
44
+ function optionalString(args, key) {
45
+ const value = args[key];
46
+ if (value === undefined || value === '')
47
+ return undefined;
48
+ if (typeof value !== 'string')
49
+ throw new ToolArgumentError(`"${key}" must be a string`);
50
+ return value;
51
+ }
52
+ export const CATALOG_TOOL = {
53
+ name: 'catalog',
54
+ description: 'List block types (category, tags, one-line summary) and actions. Pass category for one group. Call once per task, then describe only the types you use.',
55
+ inputSchema: {
56
+ type: 'object',
57
+ properties: {
58
+ category: {
59
+ type: 'string',
60
+ enum: [...BLOCK_CATEGORIES],
61
+ description: 'Optional: list only this category.',
62
+ },
63
+ },
64
+ additionalProperties: false,
65
+ },
66
+ run: (args) => {
67
+ const category = optionalString(args, 'category');
68
+ return text(formatCatalogJson(catalog(category === undefined ? {} : { category })));
69
+ },
70
+ };
71
+ export const SEARCH_CATALOG_TOOL = {
72
+ name: 'search-catalog',
73
+ description: 'Find block types by intent words, e.g. "sortable table" or "pricing". Returns up to 8 ranked hits with type, category, summary and score.',
74
+ inputSchema: {
75
+ type: 'object',
76
+ properties: {
77
+ query: {
78
+ type: 'string',
79
+ maxLength: CATALOG_SEARCH_LIMITS.maxQueryLength,
80
+ description: 'A few words describing what the block should do.',
81
+ },
82
+ },
83
+ required: ['query'],
84
+ additionalProperties: false,
85
+ },
86
+ run: (args) => text(searchCatalog(requireString(args, 'query'))),
87
+ };
88
+ /** The `types` argument: a non-empty list of non-empty strings. */
89
+ function requireTypes(args) {
90
+ const value = args.types;
91
+ if (!Array.isArray(value) ||
92
+ value.length === 0 ||
93
+ value.length > DESCRIBE_MANY_LIMIT ||
94
+ !value.every((item) => typeof item === 'string' && item !== '')) {
95
+ throw new ToolArgumentError(`"types" must be a list of 1 to ${DESCRIBE_MANY_LIMIT} non-empty strings`);
96
+ }
97
+ return value;
98
+ }
99
+ export const DESCRIBE_TOOL = {
100
+ name: 'describe',
101
+ description: 'Block contracts: props with defaults and bounds, slots, actions, features, network, accessibility. Pass type, or types (up to 12). compact: true gives one line per prop.',
102
+ inputSchema: {
103
+ type: 'object',
104
+ properties: {
105
+ type: { type: 'string', description: 'Block type from catalog, e.g. "hero".' },
106
+ types: {
107
+ type: 'array',
108
+ items: { type: 'string' },
109
+ minItems: 1,
110
+ maxItems: DESCRIBE_MANY_LIMIT,
111
+ description: 'Several block types; the reply is a list in this order. Use instead of type.',
112
+ },
113
+ compact: {
114
+ type: 'boolean',
115
+ description: 'One line per prop (kind, required, enum); no prose or examples.',
116
+ },
117
+ },
118
+ additionalProperties: false,
119
+ },
120
+ run: (args) => {
121
+ if (args.compact !== undefined && typeof args.compact !== 'boolean') {
122
+ throw new ToolArgumentError('"compact" must be a boolean');
123
+ }
124
+ const compact = args.compact === true;
125
+ if (args.types !== undefined) {
126
+ if (args.type !== undefined) {
127
+ throw new ToolArgumentError('pass either "type" or "types", not both');
128
+ }
129
+ return text(describeMany(requireTypes(args), { compact }));
130
+ }
131
+ const type = requireString(args, 'type');
132
+ // The single-type reply keeps its original shape: one contract object.
133
+ return text(compact ? describeMany([type], { compact: true })[0] : describe(type));
134
+ },
135
+ };
136
+ export const RECIPES_TOOL = {
137
+ name: 'recipes',
138
+ description: 'List page recipes (name, summary, use cases, block types): complete starter specs for common pages such as dashboard or incident-report. Fetch one with recipe.',
139
+ inputSchema: NO_INPUT,
140
+ run: () => text(recipes()),
141
+ };
142
+ export const RECIPE_TOOL = {
143
+ name: 'recipe',
144
+ description: 'Get one page recipe as a valid starter Page Spec in YAML. Replace its placeholder text and sample dataset rows, then validate and render.',
145
+ inputSchema: {
146
+ type: 'object',
147
+ properties: {
148
+ name: { type: 'string', description: 'Recipe name from recipes, e.g. "dashboard".' },
149
+ },
150
+ required: ['name'],
151
+ additionalProperties: false,
152
+ },
153
+ run: (args) => text(recipe(requireString(args, 'name')).spec),
154
+ };
155
+ export const VALIDATE_TOOL = {
156
+ name: 'validate',
157
+ description: 'Check a Page Spec without rendering. Returns ok plus diagnostics, each with a code and the JSON path to fix.',
158
+ inputSchema: {
159
+ type: 'object',
160
+ properties: { spec: SPEC_INPUT },
161
+ required: ['spec'],
162
+ additionalProperties: false,
163
+ },
164
+ run: (args) => {
165
+ const result = validate(args.spec, { source: '<spec>' });
166
+ return result.ok ? text(result) : failure(result);
167
+ },
168
+ };
169
+ /** `render` as the local stdio server runs it: the HTML goes to a file. */
170
+ export const LOCAL_RENDER_DEFINITION = {
171
+ name: 'render',
172
+ description: 'Compile a Page Spec and write the standalone HTML to `out`. Returns a summary (bytes, hash, features, warnings), never the HTML itself.',
173
+ inputSchema: {
174
+ type: 'object',
175
+ properties: {
176
+ spec: SPEC_INPUT,
177
+ out: {
178
+ type: 'string',
179
+ description: 'HTML file to write (.html or .htm). A relative path resolves against the server working directory; an absolute path is used as given.',
180
+ },
181
+ theme: THEME_INPUT,
182
+ },
183
+ required: ['spec', 'out'],
184
+ additionalProperties: false,
185
+ },
186
+ };
187
+ /**
188
+ * `render` as a remote server runs it. A remote server cannot write into the
189
+ * caller's filesystem, so the artifact is stored behind a URL instead and the
190
+ * reply is the same compact summary plus that URL.
191
+ */
192
+ export const REMOTE_RENDER_DEFINITION = {
193
+ name: 'render',
194
+ description: 'Compile a Page Spec and store the HTML behind a URL. Returns a summary (bytes, hash, features, warnings, artifactUrl, expiresAt), never the HTML. Short-lived unless `share` is true.',
195
+ inputSchema: {
196
+ type: 'object',
197
+ properties: {
198
+ spec: SPEC_INPUT,
199
+ theme: THEME_INPUT,
200
+ share: {
201
+ type: 'boolean',
202
+ description: 'Publish the artifact as an expiring share link instead of a short-lived one. Requires the share grant.',
203
+ },
204
+ },
205
+ required: ['spec'],
206
+ additionalProperties: false,
207
+ },
208
+ };
209
+ export const THEMES_DEFINITION = {
210
+ name: 'themes',
211
+ description: 'List theme presets (built-ins plus project or user presets discovered on disk) and any preset file that failed to load.',
212
+ inputSchema: NO_INPUT,
213
+ };
214
+ export function renderSummary(result) {
215
+ return {
216
+ bytes: result.bytes,
217
+ hash: result.hash,
218
+ title: result.ir.meta.title,
219
+ theme: result.theme.name,
220
+ features: result.features,
221
+ nodes: result.ir.nodes.length,
222
+ warnings: result.warnings,
223
+ };
224
+ }
225
+ /** The `themes` reply for a catalog, sorted by name. */
226
+ export function themesResult(themes) {
227
+ const presets = themes.sources
228
+ .map(({ name, origin }) => ({ name, origin }))
229
+ .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
230
+ // A preset file that failed to load is reported, not silently dropped.
231
+ return text({ presets, problems: themes.problems });
232
+ }
233
+ /**
234
+ * `themes` for a server with no project or user presets on disk, such as a
235
+ * remote one: the built-in presets, in the same reply shape as the local tool.
236
+ */
237
+ export const BUILTIN_THEMES_TOOL = {
238
+ name: 'themes',
239
+ description: 'List the built-in theme presets this server renders with.',
240
+ inputSchema: NO_INPUT,
241
+ run: () => themesResult({
242
+ sources: Object.values(builtinPresetEntries()).map(({ name, origin }) => ({ name, origin })),
243
+ problems: [],
244
+ }),
245
+ };
246
+ //# sourceMappingURL=mcp-tool-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tool-definitions.js","sourceRoot":"","sources":["../../src/mcp/mcp-tool-definitions.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,10 @@
1
1
  /**
2
- * `ak-render mcp`: the compiler as a Model Context Protocol server over stdio.
2
+ * Stable entry for the stdio MCP server.
3
3
  *
4
- * The tools mirror the CLI so an agent follows the same loop either way:
5
- * `catalog` → `describe` → `validate` → `render`. `render` writes the HTML to a
6
- * file and returns only a summary, because the point of the compiler is to keep
7
- * presentation bytes out of the model's context.
8
- *
9
- * The transport is newline-delimited JSON-RPC 2.0 on stdin/stdout, implemented
10
- * here without an SDK so the package keeps its single runtime dependency.
11
- * Nothing in this module touches the network.
12
- */
13
- import type { Interface } from 'node:readline';
14
- export interface McpContext {
15
- /** Directory relative `out` paths and theme discovery resolve against. */
16
- cwd: string;
17
- home: string;
18
- }
19
- export interface JsonRpcResponse {
20
- jsonrpc: '2.0';
21
- id: string | number | null;
22
- result?: unknown;
23
- error?: {
24
- code: number;
25
- message: string;
26
- };
27
- }
28
- /**
29
- * Answer one JSON-RPC message. Returns `undefined` for notifications and for
30
- * responses sent to us, which need no reply.
4
+ * The implementation lives in `src/mcp/`: protocol vocabulary, shared tool
5
+ * contracts, JSON-RPC routing, and one module per transport. This file keeps
6
+ * the original import path working for the CLI and for existing callers.
31
7
  */
32
- export declare function handleMcpMessage(message: unknown, context: McpContext): JsonRpcResponse | undefined;
33
- /** Answer one line of the stdio transport, or return `undefined` for no reply. */
34
- export declare function handleMcpLine(line: string, context: McpContext): string | undefined;
35
- /** Serve MCP on stdin/stdout until stdin closes. Logs go to stderr only. */
36
- export declare function serveMcp(context?: McpContext): Interface;
8
+ export type { JsonRpcResponse } from './mcp/mcp-protocol.js';
9
+ export { handleMcpLine, handleMcpMessage, type McpContext, serveMcp, } from './mcp/mcp-stdio-transport.js';
37
10
  //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAiB/C,MAAM,WAAW,UAAU;IACzB,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AASD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAqKD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,UAAU,GAClB,eAAe,GAAG,SAAS,CA8D7B;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CA4BnF;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,OAAO,GAAE,UAAoD,GAAG,SAAS,CAOjG"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,KAAK,UAAU,EACf,QAAQ,GACT,MAAM,8BAA8B,CAAC"}
@@ -1,274 +1,9 @@
1
1
  /**
2
- * `ak-render mcp`: the compiler as a Model Context Protocol server over stdio.
2
+ * Stable entry for the stdio MCP server.
3
3
  *
4
- * The tools mirror the CLI so an agent follows the same loop either way:
5
- * `catalog` → `describe` → `validate` → `render`. `render` writes the HTML to a
6
- * file and returns only a summary, because the point of the compiler is to keep
7
- * presentation bytes out of the model's context.
8
- *
9
- * The transport is newline-delimited JSON-RPC 2.0 on stdin/stdout, implemented
10
- * here without an SDK so the package keeps its single runtime dependency.
11
- * Nothing in this module touches the network.
12
- */
13
- import { mkdirSync, writeFileSync } from 'node:fs';
14
- import { homedir } from 'node:os';
15
- import { dirname, resolve } from 'node:path';
16
- import { createInterface } from 'node:readline';
17
- import { isRenderError } from './errors.js';
18
- import { catalog, describe } from './registry/registry.js';
19
- import { compile } from './render/render.js';
20
- import { validate } from './spec/validate.js';
21
- import { buildThemeCatalog } from './theme/theme-catalog.js';
22
- import { PACKAGE_NAME, VERSION } from './version.js';
23
- /** Protocol revisions this server answers with; the newest is the default. */
24
- const PROTOCOL_VERSIONS = ['2024-11-05', '2025-03-26', '2025-06-18', '2025-11-25'];
25
- const LATEST_PROTOCOL = PROTOCOL_VERSIONS[PROTOCOL_VERSIONS.length - 1];
26
- const INSTRUCTIONS = `AK Render compiles a Page Spec (YAML or JSON) into one self-contained, offline HTML file.
27
- Loop: call catalog once, describe only the block types you plan to use, validate the spec and fix every diagnostic by its JSON path, then render to a file.
28
- Describe meaning, not presentation: the compiler owns layout, colour, typography and motion.`;
29
- const SPEC_INPUT = {
30
- description: 'The Page Spec: YAML or JSON text, or the parsed object.',
31
- anyOf: [{ type: 'string' }, { type: 'object' }],
32
- };
33
- const text = (value) => ({
34
- content: [
35
- { type: 'text', text: typeof value === 'string' ? value : JSON.stringify(value, null, 2) },
36
- ],
37
- });
38
- const failure = (value) => ({ ...text(value), isError: true });
39
- const HTML_FILE = /\.html?$/iu;
40
- function themeCatalogFor(context) {
41
- return buildThemeCatalog({ cwd: context.cwd, home: context.home, discovery: true });
42
- }
43
- function requireString(args, key) {
44
- const value = args[key];
45
- if (typeof value !== 'string' || value === '') {
46
- throw new TypeError(`"${key}" must be a non-empty string`);
47
- }
48
- return value;
49
- }
50
- const TOOLS = [
51
- {
52
- name: 'catalog',
53
- description: 'List every block type and action with a one-line summary. Call once per task, then describe only the types you use.',
54
- inputSchema: { type: 'object', properties: {}, additionalProperties: false },
55
- run: () => text(catalog()),
56
- },
57
- {
58
- name: 'describe',
59
- description: 'Full contract for one block type: props with defaults and bounds, slots, actions, runtime features, network needs and accessibility.',
60
- inputSchema: {
61
- type: 'object',
62
- properties: {
63
- type: { type: 'string', description: 'Block type from catalog, e.g. "hero".' },
64
- },
65
- required: ['type'],
66
- additionalProperties: false,
67
- },
68
- run: (args) => text(describe(requireString(args, 'type'))),
69
- },
70
- {
71
- name: 'validate',
72
- description: 'Check a Page Spec without rendering. Returns ok plus diagnostics, each with a code and the JSON path to fix.',
73
- inputSchema: {
74
- type: 'object',
75
- properties: { spec: SPEC_INPUT },
76
- required: ['spec'],
77
- additionalProperties: false,
78
- },
79
- run: (args) => {
80
- const result = validate(args.spec, { source: '<spec>' });
81
- return result.ok ? text(result) : failure(result);
82
- },
83
- },
84
- {
85
- name: 'render',
86
- description: 'Compile a Page Spec and write the standalone HTML to `out`. Returns a summary (bytes, hash, features, warnings), never the HTML itself.',
87
- inputSchema: {
88
- type: 'object',
89
- properties: {
90
- spec: SPEC_INPUT,
91
- out: {
92
- type: 'string',
93
- description: 'HTML file to write (.html or .htm). A relative path resolves against the server working directory; an absolute path is used as given.',
94
- },
95
- theme: { type: 'string', description: 'Optional preset name overriding the spec theme.' },
96
- },
97
- required: ['spec', 'out'],
98
- additionalProperties: false,
99
- },
100
- run: (args, context) => {
101
- const out = resolve(context.cwd, requireString(args, 'out'));
102
- // The tool only ever writes pages; refusing other extensions keeps a
103
- // misdirected call from replacing a config or source file with HTML.
104
- if (!HTML_FILE.test(out))
105
- throw new TypeError('"out" must end in .html or .htm');
106
- const theme = args.theme;
107
- const result = compile(args.spec, {
108
- source: '<spec>',
109
- themeCatalog: themeCatalogFor(context),
110
- ...(typeof theme === 'string' && theme !== '' ? { theme } : {}),
111
- });
112
- mkdirSync(dirname(out), { recursive: true });
113
- writeFileSync(out, result.html, 'utf8');
114
- return text({
115
- out,
116
- bytes: result.bytes,
117
- hash: result.hash,
118
- title: result.ir.meta.title,
119
- theme: result.theme.name,
120
- features: result.features,
121
- nodes: result.ir.nodes.length,
122
- warnings: result.warnings,
123
- });
124
- },
125
- },
126
- {
127
- name: 'themes',
128
- description: 'List theme presets (built-ins plus project or user presets discovered on disk) and any preset file that failed to load.',
129
- inputSchema: { type: 'object', properties: {}, additionalProperties: false },
130
- run: (_args, context) => {
131
- const themes = themeCatalogFor(context);
132
- const presets = themes.sources
133
- .map(({ name, origin }) => ({ name, origin }))
134
- .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
135
- // A preset file that failed to load is reported, not silently dropped.
136
- return text({ presets, problems: themes.problems });
137
- },
138
- },
139
- ];
140
- function callTool(tool, params, context) {
141
- const args = (params.arguments ?? {});
142
- try {
143
- return tool.run(args, context);
144
- }
145
- catch (error) {
146
- if (isRenderError(error)) {
147
- return failure({
148
- code: error.code,
149
- message: error.message,
150
- path: error.path ?? '$',
151
- ...(error.details?.diagnostics === undefined
152
- ? {}
153
- : { diagnostics: error.details.diagnostics }),
154
- });
155
- }
156
- return failure(error instanceof Error ? error.message : String(error));
157
- }
158
- }
159
- function isRequest(message) {
160
- return (typeof message === 'object' &&
161
- message !== null &&
162
- message.jsonrpc === '2.0' &&
163
- typeof message.method === 'string');
164
- }
165
- /**
166
- * Answer one JSON-RPC message. Returns `undefined` for notifications and for
167
- * responses sent to us, which need no reply.
4
+ * The implementation lives in `src/mcp/`: protocol vocabulary, shared tool
5
+ * contracts, JSON-RPC routing, and one module per transport. This file keeps
6
+ * the original import path working for the CLI and for existing callers.
168
7
  */
169
- export function handleMcpMessage(message, context) {
170
- if (!isRequest(message)) {
171
- const id = message?.id;
172
- const isResponse = typeof message === 'object' &&
173
- message !== null &&
174
- ('result' in message || 'error' in message);
175
- if (isResponse)
176
- return undefined;
177
- return {
178
- jsonrpc: '2.0',
179
- id: typeof id === 'string' || typeof id === 'number' ? id : null,
180
- error: { code: -32600, message: 'invalid request' },
181
- };
182
- }
183
- if (message.id === undefined)
184
- return undefined;
185
- // MCP requires a string or number id; null is reserved for error replies.
186
- if (message.id === null) {
187
- return { jsonrpc: '2.0', id: null, error: { code: -32600, message: 'invalid request' } };
188
- }
189
- const id = message.id;
190
- const params = message.params ?? {};
191
- const reply = (result) => ({ jsonrpc: '2.0', id, result });
192
- switch (message.method) {
193
- case 'initialize': {
194
- const requested = params.protocolVersion;
195
- const protocolVersion = PROTOCOL_VERSIONS.find((version) => version === requested);
196
- return reply({
197
- protocolVersion: protocolVersion ?? LATEST_PROTOCOL,
198
- capabilities: { tools: { listChanged: false } },
199
- serverInfo: { name: PACKAGE_NAME, version: VERSION },
200
- instructions: INSTRUCTIONS,
201
- });
202
- }
203
- case 'ping':
204
- return reply({});
205
- case 'tools/list':
206
- return reply({
207
- tools: TOOLS.map(({ name, description, inputSchema }) => ({
208
- name,
209
- description,
210
- inputSchema,
211
- })),
212
- });
213
- case 'tools/call': {
214
- const tool = TOOLS.find((candidate) => candidate.name === params.name);
215
- if (tool === undefined) {
216
- return {
217
- jsonrpc: '2.0',
218
- id,
219
- error: { code: -32602, message: `unknown tool: ${String(params.name)}` },
220
- };
221
- }
222
- return reply(callTool(tool, params, context));
223
- }
224
- default:
225
- return {
226
- jsonrpc: '2.0',
227
- id,
228
- error: { code: -32601, message: `method not found: ${message.method}` },
229
- };
230
- }
231
- }
232
- /** Answer one line of the stdio transport, or return `undefined` for no reply. */
233
- export function handleMcpLine(line, context) {
234
- if (line.trim() === '')
235
- return undefined;
236
- let message;
237
- try {
238
- message = JSON.parse(line);
239
- }
240
- catch {
241
- return JSON.stringify({
242
- jsonrpc: '2.0',
243
- id: null,
244
- error: { code: -32700, message: 'parse error' },
245
- });
246
- }
247
- // Revision 2025-03-26 allows batches: answer each member, omit the silent ones.
248
- if (Array.isArray(message)) {
249
- if (message.length === 0) {
250
- return JSON.stringify({
251
- jsonrpc: '2.0',
252
- id: null,
253
- error: { code: -32600, message: 'invalid request' },
254
- });
255
- }
256
- const responses = message
257
- .map((member) => handleMcpMessage(member, context))
258
- .filter((response) => response !== undefined);
259
- return responses.length === 0 ? undefined : JSON.stringify(responses);
260
- }
261
- const response = handleMcpMessage(message, context);
262
- return response === undefined ? undefined : JSON.stringify(response);
263
- }
264
- /** Serve MCP on stdin/stdout until stdin closes. Logs go to stderr only. */
265
- export function serveMcp(context = { cwd: process.cwd(), home: homedir() }) {
266
- const lines = createInterface({ input: process.stdin, crlfDelay: Number.POSITIVE_INFINITY });
267
- lines.on('line', (line) => {
268
- const response = handleMcpLine(line, context);
269
- if (response !== undefined)
270
- process.stdout.write(`${response}\n`);
271
- });
272
- return lines;
273
- }
8
+ export { handleMcpLine, handleMcpMessage, serveMcp, } from './mcp/mcp-stdio-transport.js';
274
9
  //# sourceMappingURL=mcp-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,aAAa,EACb,gBAAgB,EAEhB,QAAQ,GACT,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Page recipes: complete starter Page Specs for common page kinds.
3
+ *
4
+ * A recipe is static data. The YAML sources live in `src/recipes/page-recipes`
5
+ * and are embedded by `scripts/generate-recipes-module.mjs`, so reading one
6
+ * never touches the filesystem or the network. Every recipe validates with no
7
+ * errors and no warnings, which a unit test enforces.
8
+ */
9
+ export interface PageRecipe {
10
+ /** Stable kebab-case name, e.g. `dashboard`. */
11
+ name: string;
12
+ /** One line on what the page shows. */
13
+ summary: string;
14
+ /** Situations the recipe fits. */
15
+ useCases: string[];
16
+ /** Every block type the spec uses, nested ones included, sorted. */
17
+ blocks: string[];
18
+ /** The starter Page Spec as YAML text. */
19
+ spec: string;
20
+ }
21
+ /** A recipe listing entry: everything but the spec text. */
22
+ export type PageRecipeSummary = Omit<PageRecipe, 'spec'>;
23
+ /** Every recipe without its spec, sorted by name. */
24
+ export declare function recipes(): PageRecipeSummary[];
25
+ /** The recipe called `name`. An unknown name throws and lists the allowed names. */
26
+ export declare function recipe(name: string): PageRecipe;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recipes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAMzD,qDAAqD;AACrD,wBAAgB,OAAO,IAAI,iBAAiB,EAAE,CAM7C;AAED,oFAAoF;AACpF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAS/C"}