@upstart.gg/sdk 0.0.135 → 0.0.137

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 (473) hide show
  1. package/dist/shared/ai/schemas.d.ts +11 -2
  2. package/dist/shared/ai/schemas.d.ts.map +1 -1
  3. package/dist/shared/ai/schemas.js +38 -8
  4. package/dist/shared/ai/schemas.js.map +1 -1
  5. package/dist/shared/ai/types.d.ts +93 -81
  6. package/dist/shared/ai/types.d.ts.map +1 -1
  7. package/dist/shared/ajv.js +33 -32
  8. package/dist/shared/ajv.js.map +1 -1
  9. package/dist/shared/attributes.d.ts +86 -86
  10. package/dist/shared/attributes.d.ts.map +1 -1
  11. package/dist/shared/attributes.js +22 -25
  12. package/dist/shared/brick-manifest.d.ts +8 -5
  13. package/dist/shared/brick-manifest.d.ts.map +1 -1
  14. package/dist/shared/brick-manifest.js +3 -18
  15. package/dist/shared/bricks/manifests/_types.d.ts +9 -0
  16. package/dist/shared/bricks/manifests/_types.d.ts.map +1 -0
  17. package/dist/shared/bricks/manifests/_types.js +3 -0
  18. package/dist/shared/bricks/manifests/accordion.manifest.d.ts +4 -8
  19. package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
  20. package/dist/shared/bricks/manifests/accordion.manifest.js +13 -20
  21. package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
  22. package/dist/shared/bricks/manifests/all-manifests.js +44 -43
  23. package/dist/shared/bricks/manifests/all-props.d.ts +1501 -0
  24. package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -0
  25. package/dist/shared/bricks/manifests/all-props.js +243 -0
  26. package/dist/shared/bricks/manifests/all-props.js.map +1 -0
  27. package/dist/shared/bricks/manifests/box.manifest.d.ts +4 -8
  28. package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
  29. package/dist/shared/bricks/manifests/box.manifest.js +16 -20
  30. package/dist/shared/bricks/manifests/button.manifest.d.ts +5 -12
  31. package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
  32. package/dist/shared/bricks/manifests/button.manifest.js +13 -20
  33. package/dist/shared/bricks/manifests/card.manifest.d.ts +10 -9
  34. package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
  35. package/dist/shared/bricks/manifests/card.manifest.js +18 -20
  36. package/dist/shared/bricks/manifests/carousel.manifest.d.ts +4 -8
  37. package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
  38. package/dist/shared/bricks/manifests/carousel.manifest.js +15 -20
  39. package/dist/shared/bricks/manifests/footer.manifest.d.ts +5 -9
  40. package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
  41. package/dist/shared/bricks/manifests/footer.manifest.js +13 -20
  42. package/dist/shared/bricks/manifests/form.manifest.d.ts +5 -9
  43. package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
  44. package/dist/shared/bricks/manifests/form.manifest.js +13 -20
  45. package/dist/shared/bricks/manifests/hero.manifest.d.ts +4 -8
  46. package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
  47. package/dist/shared/bricks/manifests/hero.manifest.js +13 -20
  48. package/dist/shared/bricks/manifests/html.manifest.d.ts +3 -7
  49. package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
  50. package/dist/shared/bricks/manifests/html.manifest.js +8 -20
  51. package/dist/shared/bricks/manifests/icon.manifest.d.ts +3 -7
  52. package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
  53. package/dist/shared/bricks/manifests/icon.manifest.js +13 -20
  54. package/dist/shared/bricks/manifests/image.manifest.d.ts +3 -2
  55. package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
  56. package/dist/shared/bricks/manifests/image.manifest.js +16 -20
  57. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +4 -8
  58. package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
  59. package/dist/shared/bricks/manifests/images-gallery.manifest.js +15 -20
  60. package/dist/shared/bricks/manifests/map.manifest.d.ts +3 -7
  61. package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
  62. package/dist/shared/bricks/manifests/map.manifest.js +11 -20
  63. package/dist/shared/bricks/manifests/navbar.manifest.d.ts +7 -11
  64. package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
  65. package/dist/shared/bricks/manifests/navbar.manifest.js +15 -20
  66. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +3 -7
  67. package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
  68. package/dist/shared/bricks/manifests/sidebar.manifest.js +13 -20
  69. package/dist/shared/bricks/manifests/social-links.manifest.d.ts +4 -8
  70. package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
  71. package/dist/shared/bricks/manifests/social-links.manifest.js +14 -20
  72. package/dist/shared/bricks/manifests/spacer.manifest.d.ts +3 -7
  73. package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
  74. package/dist/shared/bricks/manifests/spacer.manifest.js +8 -20
  75. package/dist/shared/bricks/manifests/table.manifest.d.ts +6 -10
  76. package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
  77. package/dist/shared/bricks/manifests/table.manifest.js +15 -20
  78. package/dist/shared/bricks/manifests/tabs.manifest.d.ts +6 -10
  79. package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
  80. package/dist/shared/bricks/manifests/tabs.manifest.js +15 -20
  81. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +4 -8
  82. package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
  83. package/dist/shared/bricks/manifests/testimonials.manifest.js +18 -20
  84. package/dist/shared/bricks/manifests/text.manifest.d.ts +4 -12
  85. package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
  86. package/dist/shared/bricks/manifests/text.manifest.js +13 -20
  87. package/dist/shared/bricks/manifests/timeline.manifest.d.ts +9 -13
  88. package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
  89. package/dist/shared/bricks/manifests/timeline.manifest.js +15 -20
  90. package/dist/shared/bricks/manifests/video.manifest.d.ts +3 -7
  91. package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
  92. package/dist/shared/bricks/manifests/video.manifest.js +11 -20
  93. package/dist/shared/bricks/props/align.d.ts +0 -3
  94. package/dist/shared/bricks/props/align.d.ts.map +1 -1
  95. package/dist/shared/bricks/props/align.js +4 -11
  96. package/dist/shared/bricks/props/background.d.ts +2 -8
  97. package/dist/shared/bricks/props/background.d.ts.map +1 -1
  98. package/dist/shared/bricks/props/background.js +4 -9
  99. package/dist/shared/bricks/props/border.d.ts +0 -7
  100. package/dist/shared/bricks/props/border.d.ts.map +1 -1
  101. package/dist/shared/bricks/props/border.js +5 -10
  102. package/dist/shared/bricks/props/color-preset.d.ts +316 -6
  103. package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
  104. package/dist/shared/bricks/props/color-preset.js +2 -5
  105. package/dist/shared/bricks/props/color.d.ts +3 -5
  106. package/dist/shared/bricks/props/color.d.ts.map +1 -1
  107. package/dist/shared/bricks/props/color.js +3 -8
  108. package/dist/shared/bricks/props/common.d.ts.map +1 -1
  109. package/dist/shared/bricks/props/common.js +4 -5
  110. package/dist/shared/bricks/props/css-length.d.ts +0 -1
  111. package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
  112. package/dist/shared/bricks/props/css-length.js +1 -4
  113. package/dist/shared/bricks/props/datasource.d.ts +3 -3
  114. package/dist/shared/bricks/props/datasource.d.ts.map +1 -1
  115. package/dist/shared/bricks/props/datasource.js +74 -76
  116. package/dist/shared/bricks/props/datasource.js.map +1 -1
  117. package/dist/shared/bricks/props/date.js +21 -4
  118. package/dist/shared/bricks/props/date.js.map +1 -1
  119. package/dist/shared/bricks/props/direction.d.ts +1 -2
  120. package/dist/shared/bricks/props/direction.d.ts.map +1 -1
  121. package/dist/shared/bricks/props/direction.js +4 -7
  122. package/dist/shared/bricks/props/dynamic.d.ts +5 -67
  123. package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
  124. package/dist/shared/bricks/props/dynamic.js +6 -24
  125. package/dist/shared/bricks/props/effects.d.ts +1 -3
  126. package/dist/shared/bricks/props/effects.d.ts.map +1 -1
  127. package/dist/shared/bricks/props/effects.js +4 -9
  128. package/dist/shared/bricks/props/geolocation.d.ts.map +1 -1
  129. package/dist/shared/bricks/props/geolocation.js +3 -6
  130. package/dist/shared/bricks/props/geolocation.js.map +1 -1
  131. package/dist/shared/bricks/props/helpers.js +5 -6
  132. package/dist/shared/bricks/props/image.d.ts +2 -8
  133. package/dist/shared/bricks/props/image.d.ts.map +1 -1
  134. package/dist/shared/bricks/props/image.js +4 -7
  135. package/dist/shared/bricks/props/string.d.ts +2 -5
  136. package/dist/shared/bricks/props/string.d.ts.map +1 -1
  137. package/dist/shared/bricks/props/string.js +3 -10
  138. package/dist/shared/bricks/props/tags.d.ts +0 -1
  139. package/dist/shared/bricks/props/tags.d.ts.map +1 -1
  140. package/dist/shared/bricks/props/tags.js +3 -6
  141. package/dist/shared/bricks/props/text.d.ts +0 -3
  142. package/dist/shared/bricks/props/text.d.ts.map +1 -1
  143. package/dist/shared/bricks/props/text.js +4 -11
  144. package/dist/shared/bricks/props/types.d.ts +2 -2
  145. package/dist/shared/bricks/props/types.d.ts.map +1 -1
  146. package/dist/shared/bricks.d.ts +64 -152
  147. package/dist/shared/bricks.d.ts.map +1 -1
  148. package/dist/shared/bricks.js +49 -52
  149. package/dist/shared/chunk-2O5HVPID.js +41 -0
  150. package/dist/shared/chunk-2O5HVPID.js.map +1 -0
  151. package/dist/shared/{chunk-F22LDHEO.js → chunk-2U5U3CCJ.js} +3 -18
  152. package/dist/shared/chunk-2U5U3CCJ.js.map +1 -0
  153. package/dist/shared/{chunk-LXAO3JA6.js → chunk-4KY7OZWD.js} +35 -35
  154. package/dist/shared/chunk-4KY7OZWD.js.map +1 -0
  155. package/dist/shared/{chunk-TNMNMYOB.js → chunk-5RCC2STG.js} +2 -13
  156. package/dist/shared/chunk-5RCC2STG.js.map +1 -0
  157. package/dist/shared/{chunk-V3UA3LRK.js → chunk-6AE7UD73.js} +56 -37
  158. package/dist/shared/chunk-6AE7UD73.js.map +1 -0
  159. package/dist/shared/chunk-7U5WPHXB.js +346 -0
  160. package/dist/shared/chunk-7U5WPHXB.js.map +1 -0
  161. package/dist/shared/{chunk-Q4NPPLEU.js → chunk-BHARJBEK.js} +2 -9
  162. package/dist/shared/chunk-BHARJBEK.js.map +1 -0
  163. package/dist/shared/chunk-BZTWZC77.js +530 -0
  164. package/dist/shared/chunk-BZTWZC77.js.map +1 -0
  165. package/dist/shared/{chunk-QSND5IWT.js → chunk-DCM4732T.js} +24 -43
  166. package/dist/shared/chunk-DCM4732T.js.map +1 -0
  167. package/dist/shared/{chunk-W6MRYRGJ.js → chunk-DRQKKPTX.js} +6 -20
  168. package/dist/shared/chunk-DRQKKPTX.js.map +1 -0
  169. package/dist/shared/{chunk-CSF2WQX2.js → chunk-EID5HPF3.js} +15 -12
  170. package/dist/shared/chunk-EID5HPF3.js.map +1 -0
  171. package/dist/shared/chunk-EMF5TCPX.js +389 -0
  172. package/dist/shared/chunk-EMF5TCPX.js.map +1 -0
  173. package/dist/shared/chunk-FD7YYFRI.js +225 -0
  174. package/dist/shared/chunk-FD7YYFRI.js.map +1 -0
  175. package/dist/shared/{chunk-MLZT7MRQ.js → chunk-FHA4DFIM.js} +26 -27
  176. package/dist/shared/chunk-FHA4DFIM.js.map +1 -0
  177. package/dist/shared/{chunk-GRMY35BU.js → chunk-FUUSAMN3.js} +165 -40
  178. package/dist/shared/chunk-FUUSAMN3.js.map +1 -0
  179. package/dist/shared/chunk-GDYCCB3B.js +22 -0
  180. package/dist/shared/chunk-GDYCCB3B.js.map +1 -0
  181. package/dist/shared/chunk-GLV6QIIM.js +41 -0
  182. package/dist/shared/chunk-GLV6QIIM.js.map +1 -0
  183. package/dist/shared/chunk-H6TMBELF.js +374 -0
  184. package/dist/shared/chunk-H6TMBELF.js.map +1 -0
  185. package/dist/shared/{chunk-BMWRR4DI.js → chunk-HUWMIXNN.js} +26 -28
  186. package/dist/shared/chunk-HUWMIXNN.js.map +1 -0
  187. package/dist/shared/chunk-HY7JOP3J.js +150 -0
  188. package/dist/shared/chunk-HY7JOP3J.js.map +1 -0
  189. package/dist/shared/{chunk-TFGGYU6Y.js → chunk-IEMCCHM4.js} +7 -12
  190. package/dist/shared/chunk-IEMCCHM4.js.map +1 -0
  191. package/dist/shared/{chunk-TB3X4LRQ.js → chunk-J45LSQT6.js} +2 -2
  192. package/dist/shared/chunk-J45LSQT6.js.map +1 -0
  193. package/dist/shared/{chunk-WGDUJSSS.js → chunk-JF52BBFD.js} +27 -28
  194. package/dist/shared/chunk-JF52BBFD.js.map +1 -0
  195. package/dist/shared/{chunk-GPCI2N2A.js → chunk-JLDAS3VE.js} +136 -33
  196. package/dist/shared/chunk-JLDAS3VE.js.map +1 -0
  197. package/dist/shared/{chunk-SE6O65HC.js → chunk-JSDKK5QN.js} +10 -23
  198. package/dist/shared/chunk-JSDKK5QN.js.map +1 -0
  199. package/dist/shared/chunk-JW7MQAU4.js +354 -0
  200. package/dist/shared/chunk-JW7MQAU4.js.map +1 -0
  201. package/dist/shared/{chunk-RV7AYVFV.js → chunk-KKWT3OXF.js} +4 -19
  202. package/dist/shared/chunk-KKWT3OXF.js.map +1 -0
  203. package/dist/shared/{chunk-TEO6TJOM.js → chunk-KQH6V22E.js} +36 -35
  204. package/dist/shared/{chunk-TEO6TJOM.js.map → chunk-KQH6V22E.js.map} +1 -1
  205. package/dist/shared/{chunk-3KLRW4I2.js → chunk-LGDDJJHK.js} +212 -156
  206. package/dist/shared/chunk-LGDDJJHK.js.map +1 -0
  207. package/dist/shared/{chunk-QL3T5HJQ.js → chunk-LGGPCCCY.js} +3 -3
  208. package/dist/shared/chunk-LGGPCCCY.js.map +1 -0
  209. package/dist/shared/{chunk-2HO4FHLM.js → chunk-LPAQ47C6.js} +137 -171
  210. package/dist/shared/chunk-LPAQ47C6.js.map +1 -0
  211. package/dist/shared/chunk-MO6CRLQA.js +73 -0
  212. package/dist/shared/chunk-MO6CRLQA.js.map +1 -0
  213. package/dist/shared/{chunk-SHUGHJ7V.js → chunk-MYOLWTB2.js} +29 -32
  214. package/dist/shared/chunk-MYOLWTB2.js.map +1 -0
  215. package/dist/shared/{chunk-Z2NTDFB4.js → chunk-O24RDXZS.js} +34 -34
  216. package/dist/shared/chunk-O24RDXZS.js.map +1 -0
  217. package/dist/shared/{chunk-BPBKHEQ5.js → chunk-OJ6KL7FU.js} +1 -8
  218. package/dist/shared/chunk-OJ6KL7FU.js.map +1 -0
  219. package/dist/shared/{chunk-GCQURRVB.js → chunk-PF75LW33.js} +24 -27
  220. package/dist/shared/chunk-PF75LW33.js.map +1 -0
  221. package/dist/shared/{chunk-EWSPTRDL.js → chunk-QEJGPYTB.js} +132 -48
  222. package/dist/shared/chunk-QEJGPYTB.js.map +1 -0
  223. package/dist/shared/{chunk-P3RH5URN.js → chunk-SK2O7GFC.js} +17 -18
  224. package/dist/shared/chunk-SK2O7GFC.js.map +1 -0
  225. package/dist/shared/{chunk-UQF52PWK.js → chunk-SQXZNGQF.js} +8 -23
  226. package/dist/shared/chunk-SQXZNGQF.js.map +1 -0
  227. package/dist/shared/{chunk-NTLAKMMQ.js → chunk-SRYBJ6NQ.js} +6 -17
  228. package/dist/shared/chunk-SRYBJ6NQ.js.map +1 -0
  229. package/dist/shared/{chunk-O5PLB3YB.js → chunk-T6C3NG2L.js} +68 -59
  230. package/dist/shared/chunk-T6C3NG2L.js.map +1 -0
  231. package/dist/shared/{chunk-U7TVEPKA.js → chunk-TBT2PTGB.js} +41 -33
  232. package/dist/shared/chunk-TBT2PTGB.js.map +1 -0
  233. package/dist/shared/{chunk-CKFRSHR2.js → chunk-U4KZUX37.js} +18 -19
  234. package/dist/shared/chunk-U4KZUX37.js.map +1 -0
  235. package/dist/shared/{chunk-4WI23M7W.js → chunk-VSLRTXLF.js} +11 -4
  236. package/dist/shared/chunk-VSLRTXLF.js.map +1 -0
  237. package/dist/shared/{chunk-BHC2A43S.js → chunk-VTCHJT4O.js} +3 -3
  238. package/dist/shared/{chunk-BHC2A43S.js.map → chunk-VTCHJT4O.js.map} +1 -1
  239. package/dist/shared/{chunk-DRTGM2UJ.js → chunk-W2RFDII5.js} +3 -3
  240. package/dist/shared/chunk-W2RFDII5.js.map +1 -0
  241. package/dist/shared/{chunk-Y74LZNND.js → chunk-WPZV3LYL.js} +4 -10
  242. package/dist/shared/chunk-WPZV3LYL.js.map +1 -0
  243. package/dist/shared/chunk-XFZQGRRL.js +101 -0
  244. package/dist/shared/chunk-XFZQGRRL.js.map +1 -0
  245. package/dist/shared/{chunk-QQQ3FYPG.js → chunk-XK2CERPB.js} +147 -31
  246. package/dist/shared/chunk-XK2CERPB.js.map +1 -0
  247. package/dist/shared/chunk-XNRSL6FL.js +78 -0
  248. package/dist/shared/chunk-XNRSL6FL.js.map +1 -0
  249. package/dist/shared/{chunk-2RK3CPYJ.js → chunk-XXPSM6UA.js} +9 -12
  250. package/dist/shared/chunk-XXPSM6UA.js.map +1 -0
  251. package/dist/shared/{chunk-ZLYIRH2B.js → chunk-ZRBTAC3G.js} +3 -18
  252. package/dist/shared/chunk-ZRBTAC3G.js.map +1 -0
  253. package/dist/shared/{chunk-Z35I5JM5.js → chunk-ZVJNRKT4.js} +18 -20
  254. package/dist/shared/chunk-ZVJNRKT4.js.map +1 -0
  255. package/dist/shared/context.d.ts +402 -22
  256. package/dist/shared/context.d.ts.map +1 -1
  257. package/dist/shared/context.js +93 -0
  258. package/dist/shared/context.js.map +1 -1
  259. package/dist/shared/datarecords/external/airtable/types.d.ts +1 -1
  260. package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
  261. package/dist/shared/datarecords/external/airtable/types.js +2 -1
  262. package/dist/shared/datarecords/types.d.ts +10 -63
  263. package/dist/shared/datarecords/types.d.ts.map +1 -1
  264. package/dist/shared/datarecords/types.js +5 -6
  265. package/dist/shared/datasources/external/instagram/feed/schema.d.ts +1 -1
  266. package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
  267. package/dist/shared/datasources/external/instagram/feed/schema.js +4 -1
  268. package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
  269. package/dist/shared/datasources/external/mastodon/status/schema.d.ts +6 -6
  270. package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
  271. package/dist/shared/datasources/external/mastodon/status/schema.js +6 -19
  272. package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
  273. package/dist/shared/datasources/external/meta/oauth/config.d.ts +2 -2
  274. package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
  275. package/dist/shared/datasources/external/meta/oauth/config.js +4 -1
  276. package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
  277. package/dist/shared/datasources/external/threads/media/fetcher.js +3 -3
  278. package/dist/shared/datasources/external/threads/media/schema.d.ts +1 -1
  279. package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
  280. package/dist/shared/datasources/external/threads/media/schema.js +4 -8
  281. package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
  282. package/dist/shared/datasources/internal/blog/schema.d.ts +1 -1
  283. package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
  284. package/dist/shared/datasources/internal/blog/schema.js +4 -1
  285. package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
  286. package/dist/shared/datasources/types.d.ts +25 -25
  287. package/dist/shared/datasources/types.d.ts.map +1 -1
  288. package/dist/shared/datasources/types.js +3 -16
  289. package/dist/shared/datasources.d.ts +1 -1
  290. package/dist/shared/datasources.d.ts.map +1 -1
  291. package/dist/shared/datasources.js +1 -3
  292. package/dist/shared/datasources.js.map +1 -1
  293. package/dist/shared/images.d.ts +1 -1
  294. package/dist/shared/images.d.ts.map +1 -1
  295. package/dist/shared/images.js +4 -38
  296. package/dist/shared/images.js.map +1 -1
  297. package/dist/shared/page.d.ts +139 -22
  298. package/dist/shared/page.d.ts.map +1 -1
  299. package/dist/shared/page.js +51 -49
  300. package/dist/shared/responsive.js +1 -1
  301. package/dist/shared/site.d.ts +80 -197
  302. package/dist/shared/site.d.ts.map +1 -1
  303. package/dist/shared/site.js +55 -114
  304. package/dist/shared/site.js.map +1 -1
  305. package/dist/shared/sitemap.d.ts +6 -327
  306. package/dist/shared/sitemap.d.ts.map +1 -1
  307. package/dist/shared/sitemap.js +50 -58
  308. package/dist/shared/theme.d.ts +0 -37
  309. package/dist/shared/theme.d.ts.map +1 -1
  310. package/dist/shared/theme.js +4 -21
  311. package/dist/shared/utils/llm.d.ts +1 -10
  312. package/dist/shared/utils/llm.d.ts.map +1 -1
  313. package/dist/shared/utils/llm.js +1 -18
  314. package/dist/shared/utils/schema.d.ts +3 -2
  315. package/dist/shared/utils/schema.d.ts.map +1 -1
  316. package/dist/shared/utils/schema.js +2 -17
  317. package/dist/shared/utils/string-enum.d.ts +9 -3
  318. package/dist/shared/utils/string-enum.d.ts.map +1 -1
  319. package/dist/shared/utils/string-enum.js +1 -1
  320. package/package.json +21 -5
  321. package/src/shared/ai/schemas.ts +41 -10
  322. package/src/shared/ai/types.ts +78 -76
  323. package/src/shared/attributes.ts +56 -46
  324. package/src/shared/brick-manifest.ts +5 -6
  325. package/src/shared/bricks/manifests/_types.ts +9 -0
  326. package/src/shared/bricks/manifests/accordion.manifest.ts +138 -171
  327. package/src/shared/bricks/manifests/all-manifests.ts +1 -0
  328. package/src/shared/bricks/manifests/all-props.ts +165 -0
  329. package/src/shared/bricks/manifests/box.manifest.ts +214 -150
  330. package/src/shared/bricks/manifests/button.manifest.ts +204 -79
  331. package/src/shared/bricks/manifests/card.manifest.ts +229 -43
  332. package/src/shared/bricks/manifests/carousel.manifest.ts +165 -35
  333. package/src/shared/bricks/manifests/footer.manifest.ts +18 -20
  334. package/src/shared/bricks/manifests/form.manifest.ts +136 -22
  335. package/src/shared/bricks/manifests/hero.manifest.ts +121 -38
  336. package/src/shared/bricks/manifests/html.manifest.ts +2 -5
  337. package/src/shared/bricks/manifests/icon.manifest.ts +225 -46
  338. package/src/shared/bricks/manifests/image.manifest.ts +125 -21
  339. package/src/shared/bricks/manifests/images-gallery.manifest.ts +15 -20
  340. package/src/shared/bricks/manifests/map.manifest.ts +12 -15
  341. package/src/shared/bricks/manifests/navbar.manifest.ts +22 -26
  342. package/src/shared/bricks/manifests/sidebar.manifest.ts +11 -14
  343. package/src/shared/bricks/manifests/social-links.manifest.ts +19 -24
  344. package/src/shared/bricks/manifests/spacer.manifest.ts +2 -5
  345. package/src/shared/bricks/manifests/table.manifest.ts +17 -20
  346. package/src/shared/bricks/manifests/tabs.manifest.ts +16 -21
  347. package/src/shared/bricks/manifests/testimonials.manifest.ts +23 -25
  348. package/src/shared/bricks/manifests/text.manifest.ts +47 -29
  349. package/src/shared/bricks/manifests/timeline.manifest.ts +31 -29
  350. package/src/shared/bricks/manifests/video.manifest.ts +11 -15
  351. package/src/shared/bricks/props/align.ts +0 -13
  352. package/src/shared/bricks/props/background.ts +1 -14
  353. package/src/shared/bricks/props/border.ts +2 -13
  354. package/src/shared/bricks/props/color-preset.ts +9 -10
  355. package/src/shared/bricks/props/color.ts +7 -18
  356. package/src/shared/bricks/props/common.ts +6 -7
  357. package/src/shared/bricks/props/css-length.ts +0 -5
  358. package/src/shared/bricks/props/datasource.ts +72 -74
  359. package/src/shared/bricks/props/direction.ts +1 -5
  360. package/src/shared/bricks/props/dynamic.ts +0 -11
  361. package/src/shared/bricks/props/effects.ts +0 -9
  362. package/src/shared/bricks/props/geolocation.ts +3 -3
  363. package/src/shared/bricks/props/helpers.ts +1 -1
  364. package/src/shared/bricks/props/image.ts +4 -16
  365. package/src/shared/bricks/props/string.ts +6 -19
  366. package/src/shared/bricks/props/tags.ts +0 -5
  367. package/src/shared/bricks/props/tests/background.test.ts +1 -15
  368. package/src/shared/bricks/props/tests/image.test.ts +3 -9
  369. package/src/shared/bricks/props/tests/string.test.ts +2 -26
  370. package/src/shared/bricks/props/text.ts +0 -12
  371. package/src/shared/bricks/props/types.ts +4 -3
  372. package/src/shared/bricks.ts +164 -1025
  373. package/src/shared/context.ts +24 -23
  374. package/src/shared/datarecords/external/airtable/types.ts +12 -11
  375. package/src/shared/datarecords/types.ts +22 -44
  376. package/src/shared/datasources/external/instagram/feed/schema.ts +2 -1
  377. package/src/shared/datasources/external/mastodon/status/schema.ts +4 -19
  378. package/src/shared/datasources/external/meta/oauth/config.ts +2 -1
  379. package/src/shared/datasources/external/threads/media/schema.ts +2 -8
  380. package/src/shared/datasources/internal/blog/schema.ts +2 -1
  381. package/src/shared/datasources/types.ts +64 -79
  382. package/src/shared/datasources.ts +2 -4
  383. package/src/shared/images.ts +12 -18
  384. package/src/shared/page.ts +9 -2
  385. package/src/shared/site.ts +3 -3
  386. package/src/shared/sitemap.ts +3 -68
  387. package/src/shared/tests/attributes.test.ts +2 -0
  388. package/src/shared/theme.ts +81 -96
  389. package/src/shared/utils/llm.ts +5 -191
  390. package/src/shared/utils/schema.ts +71 -244
  391. package/src/shared/utils/string-enum.ts +25 -4
  392. package/src/shared/utils/tests/schema.test.ts +112 -314
  393. package/dist/shared/chunk-2HO4FHLM.js.map +0 -1
  394. package/dist/shared/chunk-2RK3CPYJ.js.map +0 -1
  395. package/dist/shared/chunk-3KLRW4I2.js.map +0 -1
  396. package/dist/shared/chunk-4WI23M7W.js.map +0 -1
  397. package/dist/shared/chunk-6E42XWFH.js +0 -103
  398. package/dist/shared/chunk-6E42XWFH.js.map +0 -1
  399. package/dist/shared/chunk-A2QPY54H.js +0 -13
  400. package/dist/shared/chunk-A2QPY54H.js.map +0 -1
  401. package/dist/shared/chunk-BMWRR4DI.js.map +0 -1
  402. package/dist/shared/chunk-BPBKHEQ5.js.map +0 -1
  403. package/dist/shared/chunk-BW6EFRSF.js +0 -794
  404. package/dist/shared/chunk-BW6EFRSF.js.map +0 -1
  405. package/dist/shared/chunk-CKFRSHR2.js.map +0 -1
  406. package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
  407. package/dist/shared/chunk-D4YQ6ABM.js +0 -338
  408. package/dist/shared/chunk-D4YQ6ABM.js.map +0 -1
  409. package/dist/shared/chunk-DRTGM2UJ.js.map +0 -1
  410. package/dist/shared/chunk-EQMU6NIU.js +0 -1222
  411. package/dist/shared/chunk-EQMU6NIU.js.map +0 -1
  412. package/dist/shared/chunk-EWSPTRDL.js.map +0 -1
  413. package/dist/shared/chunk-F22LDHEO.js.map +0 -1
  414. package/dist/shared/chunk-FVU5PXRC.js +0 -244
  415. package/dist/shared/chunk-FVU5PXRC.js.map +0 -1
  416. package/dist/shared/chunk-GCQURRVB.js.map +0 -1
  417. package/dist/shared/chunk-GPCI2N2A.js.map +0 -1
  418. package/dist/shared/chunk-GRMY35BU.js.map +0 -1
  419. package/dist/shared/chunk-JK2FWFJU.js +0 -15
  420. package/dist/shared/chunk-JK2FWFJU.js.map +0 -1
  421. package/dist/shared/chunk-LXAO3JA6.js.map +0 -1
  422. package/dist/shared/chunk-MLZT7MRQ.js.map +0 -1
  423. package/dist/shared/chunk-NT3IW52F.js +0 -260
  424. package/dist/shared/chunk-NT3IW52F.js.map +0 -1
  425. package/dist/shared/chunk-NTLAKMMQ.js.map +0 -1
  426. package/dist/shared/chunk-O5PLB3YB.js.map +0 -1
  427. package/dist/shared/chunk-P3RH5URN.js.map +0 -1
  428. package/dist/shared/chunk-Q4NPPLEU.js.map +0 -1
  429. package/dist/shared/chunk-QL3T5HJQ.js.map +0 -1
  430. package/dist/shared/chunk-QQQ3FYPG.js.map +0 -1
  431. package/dist/shared/chunk-QSND5IWT.js.map +0 -1
  432. package/dist/shared/chunk-RV7AYVFV.js.map +0 -1
  433. package/dist/shared/chunk-SE6O65HC.js.map +0 -1
  434. package/dist/shared/chunk-SHUGHJ7V.js.map +0 -1
  435. package/dist/shared/chunk-TB3X4LRQ.js.map +0 -1
  436. package/dist/shared/chunk-TFGGYU6Y.js.map +0 -1
  437. package/dist/shared/chunk-TNMNMYOB.js.map +0 -1
  438. package/dist/shared/chunk-U7TVEPKA.js.map +0 -1
  439. package/dist/shared/chunk-UQF52PWK.js.map +0 -1
  440. package/dist/shared/chunk-V3UA3LRK.js.map +0 -1
  441. package/dist/shared/chunk-W6MRYRGJ.js.map +0 -1
  442. package/dist/shared/chunk-WGDUJSSS.js.map +0 -1
  443. package/dist/shared/chunk-WKN566LN.js +0 -29
  444. package/dist/shared/chunk-WKN566LN.js.map +0 -1
  445. package/dist/shared/chunk-X6N463D4.js +0 -222
  446. package/dist/shared/chunk-X6N463D4.js.map +0 -1
  447. package/dist/shared/chunk-X75YV73Q.js +0 -178
  448. package/dist/shared/chunk-X75YV73Q.js.map +0 -1
  449. package/dist/shared/chunk-Y74LZNND.js.map +0 -1
  450. package/dist/shared/chunk-Z2NTDFB4.js.map +0 -1
  451. package/dist/shared/chunk-Z35I5JM5.js.map +0 -1
  452. package/dist/shared/chunk-ZLYIRH2B.js.map +0 -1
  453. package/dist/shared/schema-registry.d.ts +0 -5
  454. package/dist/shared/schema-registry.d.ts.map +0 -1
  455. package/dist/shared/schema-registry.js +0 -119
  456. package/dist/shared/schema-registry.js.map +0 -1
  457. package/dist/shared/tests/schema-registry.test.d.ts +0 -2
  458. package/dist/shared/tests/schema-registry.test.d.ts.map +0 -1
  459. package/dist/shared/utils/schema-registry.d.ts +0 -5
  460. package/dist/shared/utils/schema-registry.d.ts.map +0 -1
  461. package/dist/shared/utils/schema-registry.js +0 -29
  462. package/dist/shared/utils/tests/schema-registry.test.d.ts +0 -2
  463. package/dist/shared/utils/tests/schema-registry.test.d.ts.map +0 -1
  464. package/dist/shared/utils/typed-ref.d.ts +0 -43
  465. package/dist/shared/utils/typed-ref.d.ts.map +0 -1
  466. package/dist/shared/utils/typed-ref.js +0 -10
  467. package/dist/shared/utils/typed-ref.js.map +0 -1
  468. package/src/shared/schema-registry.ts +0 -82
  469. package/src/shared/tests/schema-registry.test.ts +0 -14
  470. package/src/shared/utils/schema-registry.ts +0 -82
  471. package/src/shared/utils/tests/schema-registry.test.ts +0 -13
  472. package/src/shared/utils/typed-ref.ts +0 -53
  473. /package/dist/shared/{utils/schema-registry.js.map → bricks/manifests/_types.js.map} +0 -0
@@ -1,61 +1,12 @@
1
1
  import { Type, type Static } from "@sinclair/typebox";
2
2
  import { StringEnum } from "./utils/string-enum";
3
3
  import { pageSchema } from "./page";
4
- import { toLLMSchema } from "./utils/llm";
5
-
6
- export const sitemapPageEntry = Type.Pick(pageSchema, ["id", "label", "path", "attributes"]);
7
- export type SitemapPageEntry = Static<typeof sitemapPageEntry>;
8
-
9
- export const sectionsPlanSchema = Type.Array(
10
- Type.Object(
11
- {
12
- id: Type.String({
13
- title: "Section ID",
14
- examples: ["header-section", "hero-section", "features-section"],
15
- format: "slug",
16
- }),
17
- name: Type.String({ title: "Section name", examples: ["Header", "Hero", "Features"] }),
18
- description: Type.String({
19
- title: "A long description of the section",
20
- description: `You must elaborate a clear and detailled plan that describes:
21
- - The section purpose in the page, in detail.
22
- - The section structure, look & feel, and structural/design organization, in detail
23
- - the types of bricks (e.g. "container", "text", "video", "carousel", etc) that will be used and their purpose, in detail
24
-
25
- IMPORTANT: be very descriptive and precise in your plan. The more details you provide, the better the generated page will be.`,
26
-
27
- examples: [
28
- "This section contains a `hero` and a call-to-action `button`. All of theme aligned horizontally. The section should market a coffee shop.",
29
- "This section should contain a `hero` text and an `image`.",
30
- ],
31
- }),
32
- },
33
- { additionalProperties: false },
34
- ),
35
- {
36
- title: "Sections plan",
37
- description: "A plan for the sections of the page. Used to generate the page content.",
38
- examples: [
39
- [
40
- {
41
- id: "header-section",
42
- name: "Header",
43
- description: "This section only contains a header brick",
44
- },
45
- {
46
- id: "hero-section",
47
- name: "Hero",
48
- description:
49
- "This is the hero section of the page. It should display a marketing message using a hero brick, as well as a button (CTA). The section should center bricks horizontally.",
50
- },
51
- ],
52
- ],
53
- },
54
- );
4
+ import { pageAttributesSchema } from "./attributes";
55
5
 
56
6
  export const sitemapEntry = Type.Composite(
57
7
  [
58
- sitemapPageEntry,
8
+ Type.Pick(pageSchema, ["id", "label"]),
9
+ Type.Pick(pageAttributesSchema, ["path", "tags"]),
59
10
  Type.Object({
60
11
  status: Type.Optional(
61
12
  StringEnum(["draft", "published"], {
@@ -65,30 +16,14 @@ export const sitemapEntry = Type.Composite(
65
16
  "ai:hidden": true,
66
17
  description:
67
18
  "The status of the page. Can be draft or published. [AI instructions: Dont generate this.]",
68
- "ai:instructions": "Upsie: Never generate this optional field.",
69
19
  }),
70
20
  ),
71
21
  }),
72
22
  ],
73
23
  {
74
24
  description: "Pages map. The complete list of site pages & their metadata",
75
- additionalProperties: false,
76
25
  },
77
26
  );
78
27
 
79
28
  export const sitemapSchema = Type.Array(sitemapEntry);
80
29
  export type Sitemap = Static<typeof sitemapSchema>;
81
-
82
- export const sitemapSchemaLLM = toLLMSchema(
83
- Type.Array(
84
- Type.Composite([
85
- sitemapEntry,
86
- Type.Object({
87
- // Sections plan helps agents to the structure and content of the page
88
- sectionsPlan: sectionsPlanSchema,
89
- }),
90
- ]),
91
- ),
92
- );
93
-
94
- export const sitemapSchemaNoPlansLLM = toLLMSchema(sitemapSchema);
@@ -16,6 +16,8 @@ describe("Attributes test suite", () => {
16
16
  title: "Untitled",
17
17
  description: "",
18
18
  keywords: "",
19
+ queries: [],
20
+ tags: [],
19
21
  });
20
22
  });
21
23
  });
@@ -36,7 +36,6 @@ const headingFont = Type.Object(
36
36
  {
37
37
  title: "Headings font",
38
38
  description: "Used for titles and headings",
39
- additionalProperties: false,
40
39
  },
41
40
  );
42
41
 
@@ -54,111 +53,97 @@ const bodyFont = Type.Object(
54
53
  {
55
54
  title: "Body font",
56
55
  description: "Used for paragraphs and body text",
57
- additionalProperties: false,
58
56
  },
59
57
  );
60
58
 
61
- export const themeSchema = Type.Object(
62
- {
63
- id: Type.String({ title: "ID", description: "The unique identifier of the theme" }),
64
- name: Type.String({ title: "Name", description: "The name of the theme" }),
65
- description: Type.String({ title: "Description", description: "The description of the theme" }),
66
- tags: Type.Array(Type.String({ title: "Tag" }), { title: "Tags", description: "The tags of the theme" }),
67
- browserColorScheme: StringEnum(["light", "dark"], {
68
- title: "Browser scheme",
69
- description: "Color of browser-provided UI. Either 'light' or 'dark'",
70
- }),
71
- // Define the theme colors
72
- colors: Type.Object(
73
- {
74
- primary: Type.String({
75
- title: "Primary",
76
- description: "The brand's primary color.",
77
- "ai:instructions": "Use oklch() css notation.",
78
- examples: ["oklch(0.62 0.241 354.308)"],
79
- }),
80
- secondary: Type.String({
81
- title: "Secondary",
82
- description: "The brand's second most used color",
83
- "ai:instructions": "Use oklch() css notation.",
84
- examples: ["oklch(0.65 0.22 185)"],
85
- }),
86
- accent: Type.String({
87
- title: "Accent",
88
- description: "The brand's least used color",
89
- "ai:instructions": "Use oklch() css notation.",
90
- examples: ["oklch(0.82 0.18 85)"],
91
- }),
92
- neutral: Type.String({
93
- title: "Neutral",
94
- description: "The base neutral color",
95
- "ai:instructions": "Use oklch() css notation.",
96
- examples: ["oklch(0.38 0.08 280)"],
97
- }),
98
- base100: Type.String({
99
- title: "Base",
100
- description:
101
- "Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.",
102
- "ai:instructions": "Use oklab() css notation.",
103
- examples: ["oklch(0.99 0.008 92)"],
104
- }),
105
- base200: Type.String({
106
- title: "Base 2",
107
- description:
108
- "Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.",
109
- "ai:instructions": "Use oklab() css notation.",
110
- examples: ["oklch(0.97 0.01 85)"],
111
- }),
112
- base300: Type.String({
113
- title: "Base 3",
114
- description:
115
- "3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.",
116
- "ai:instructions": "Use oklab() css notation.",
117
- examples: ["oklch(0.95 0.02 80)"],
118
- }),
119
- },
120
- {
121
- title: "Theme base colors",
122
- description: "The base colors of the theme. Each theme must declare all these colors",
123
- additionalProperties: false,
124
- },
125
- ),
59
+ export const themeSchema = Type.Object({
60
+ id: Type.String({ title: "ID", description: "The unique identifier of the theme" }),
61
+ name: Type.String({ title: "Name", description: "The name of the theme" }),
62
+ description: Type.String({ title: "Description", description: "The description of the theme" }),
63
+ tags: Type.Array(Type.String({ title: "Tag" }), { title: "Tags", description: "The tags of the theme" }),
64
+ browserColorScheme: StringEnum(["light", "dark"], {
65
+ title: "Browser scheme",
66
+ description: "Color of browser-provided UI. Either 'light' or 'dark'",
67
+ }),
68
+ // Define the theme colors
69
+ colors: Type.Object(
70
+ {
71
+ primary: Type.String({
72
+ title: "Primary",
73
+ description: "The brand's primary color.",
74
+ "ai:instructions": "Use oklch() css notation.",
75
+ examples: ["oklch(0.62 0.241 354.308)"],
76
+ }),
77
+ secondary: Type.String({
78
+ title: "Secondary",
79
+ description: "The brand's second most used color",
80
+ "ai:instructions": "Use oklch() css notation.",
81
+ examples: ["oklch(0.65 0.22 185)"],
82
+ }),
83
+ accent: Type.String({
84
+ title: "Accent",
85
+ description: "The brand's least used color",
86
+ "ai:instructions": "Use oklch() css notation.",
87
+ examples: ["oklch(0.82 0.18 85)"],
88
+ }),
89
+ neutral: Type.String({
90
+ title: "Neutral",
91
+ description: "The base neutral color",
92
+ "ai:instructions": "Use oklch() css notation.",
93
+ examples: ["oklch(0.38 0.08 280)"],
94
+ }),
95
+ base100: Type.String({
96
+ title: "Base",
97
+ description:
98
+ "Base surface color of page, used for blank backgrounds. Should be white or near-white for light color-schemes, and black or near-black for dark color-schemes.",
99
+ "ai:instructions": "Use oklab() css notation.",
100
+ examples: ["oklch(0.99 0.008 92)"],
101
+ }),
102
+ base200: Type.String({
103
+ title: "Base 2",
104
+ description:
105
+ "Should be darker than base 100 but still light for light color-schemes, and lighter but still dark for dark color-schemes.",
106
+ "ai:instructions": "Use oklab() css notation.",
107
+ examples: ["oklch(0.97 0.01 85)"],
108
+ }),
109
+ base300: Type.String({
110
+ title: "Base 3",
111
+ description:
112
+ "3rd base color, should be darker than base 200 for light color-schemes, and lighter than base 200 for dark color-schemes.",
113
+ "ai:instructions": "Use oklab() css notation.",
114
+ examples: ["oklch(0.95 0.02 80)"],
115
+ }),
116
+ },
117
+ {
118
+ title: "Theme base colors",
119
+ description: "The base colors of the theme. Each theme must declare all these colors",
120
+ },
121
+ ),
126
122
 
127
- // Define the theme typography
128
- typography: Type.Object(
129
- {
130
- base: Type.Number({
131
- title: "Base font size",
132
- description: "The base font size in pixels. It is safe to keep it as is.",
133
- "ai:instructions": "A safe value is 16.",
134
- }),
135
- heading: headingFont,
123
+ // Define the theme typography
124
+ typography: Type.Object({
125
+ base: Type.Number({
126
+ title: "Base font size",
127
+ description: "The base font size in pixels. It is safe to keep it as is.",
128
+ "ai:instructions": "A safe value is 16.",
129
+ }),
130
+ heading: headingFont,
131
+ body: bodyFont,
132
+ alternatives: Type.Array(
133
+ Type.Object({
136
134
  body: bodyFont,
137
- alternatives: Type.Array(
138
- Type.Object(
139
- {
140
- body: bodyFont,
141
- heading: headingFont,
142
- },
143
- { additionalProperties: false },
144
- ),
145
- {
146
- title: "Alternative fonts",
147
- description: "Alternative fonts that can be suggested to the user. Takes the same shape",
148
- },
149
- ),
135
+ heading: headingFont,
136
+ }),
137
+ {
138
+ title: "Alternative fonts",
139
+ description: "Alternative fonts that can be suggested to the user. Takes the same shape",
150
140
  },
151
- { additionalProperties: false },
152
141
  ),
153
- },
154
- {
155
- additionalProperties: false,
156
- },
157
- );
142
+ }),
143
+ });
158
144
 
159
145
  export type Theme = Static<typeof themeSchema>;
160
146
  export const themesArray = Type.Array(themeSchema);
161
- export const themesArrayLLM = toLLMSchema(themesArray);
162
147
 
163
148
  export type ThemesArray = Static<typeof themesArray>;
164
149
  export type FontType = Theme["typography"]["body"];
@@ -1,7 +1,4 @@
1
- import type { TObject, TSchema } from "@sinclair/typebox";
2
- import { createAJVInstance } from "../ajv";
3
- import { cloneDeep } from "lodash-es";
4
- import { schemaRegistry } from "./schema-registry";
1
+ import { Kind, type TObject, type TSchema } from "@sinclair/typebox";
5
2
 
6
3
  /**
7
4
  * Clean all properties from custom metadata recursively. Custom metadata are key that:
@@ -10,7 +7,7 @@ import { schemaRegistry } from "./schema-registry";
10
7
  * Also removes properties that have "ai:hidden" set to true
11
8
  */
12
9
  export function toLLMSchema<T extends TSchema = TObject>(schema: T): T {
13
- return cleanSchemaRecursive(inlineSchemaRefs(schema)) as T;
10
+ return cleanSchemaRecursive(schema) as T;
14
11
  }
15
12
 
16
13
  /**
@@ -18,7 +15,9 @@ export function toLLMSchema<T extends TSchema = TObject>(schema: T): T {
18
15
  */
19
16
  function cleanSchemaRecursive(schema: TSchema): TSchema {
20
17
  // Create a new object without custom metadata properties
21
- const cleaned: Record<string, unknown> = {};
18
+ const cleaned: Record<string, unknown> = {
19
+ [Kind]: schema[Kind],
20
+ };
22
21
 
23
22
  for (const [key, value] of Object.entries(schema)) {
24
23
  // Skip metadata properties and ui: properties
@@ -96,188 +95,3 @@ function isSchemaLike(obj: unknown): boolean {
96
95
  ];
97
96
  return schemaKeys.some((key) => key in obj);
98
97
  }
99
-
100
- interface SchemaWithDefs extends TSchema {
101
- $defs?: Record<string, TSchema>;
102
- }
103
-
104
- /**
105
- * Inlines referenced schemas from AJV into the schema's $defs section
106
- * @param schema - The schema containing $ref references
107
- * @param ajv - The AJV instance containing the referenced schemas
108
- * @returns A new schema with references inlined in $defs
109
- */
110
- export function inlineSchemaRefs<T extends TSchema>(schema: T) {
111
- //
112
- const inlinedSchema = cloneDeep(schema) as T & SchemaWithDefs;
113
- // const inlinedSchema = JSON.parse(JSON.stringify(schema)) as T & SchemaWithDefs;
114
- const collectedRefs = new Set<string>();
115
-
116
- // Initialize $defs if it doesn't exist
117
- if (!inlinedSchema.$defs) {
118
- inlinedSchema.$defs = {};
119
- }
120
-
121
- /**
122
- * Recursively traverse the schema to find all $ref references
123
- */
124
- function collectRefs(obj: unknown): void {
125
- if (typeof obj !== "object" || obj === null) return;
126
-
127
- if (Array.isArray(obj)) {
128
- obj.forEach(collectRefs);
129
- return;
130
- }
131
-
132
- for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {
133
- if (key === "$ref" && typeof value === "string") {
134
- // Extract the schema ID from the reference
135
- if (!value.startsWith("#/")) {
136
- collectedRefs.add(value);
137
- }
138
- } else {
139
- collectRefs(value);
140
- }
141
- }
142
- }
143
-
144
- /**
145
- * Convert external $ref to local $defs reference
146
- */
147
- function convertRefsToLocal(obj: unknown, refMap: Map<string, string>): unknown {
148
- if (typeof obj !== "object" || obj === null) return obj;
149
-
150
- if (Array.isArray(obj)) {
151
- return obj.map((item) => convertRefsToLocal(item, refMap));
152
- }
153
-
154
- const result: Record<string, unknown> = {};
155
- for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {
156
- if (key === "$ref" && typeof value === "string") {
157
- const localRef = refMap.get(value);
158
- result[key] = localRef || value;
159
- } else {
160
- result[key] = convertRefsToLocal(value, refMap);
161
- }
162
- }
163
- return result;
164
- }
165
-
166
- // Collect all references in the schema
167
- collectRefs(inlinedSchema);
168
-
169
- // Map to track original ref -> local def reference
170
- const refToLocalMap = new Map<string, string>();
171
-
172
- // Process each collected reference
173
- for (const refId of collectedRefs) {
174
- // Get the schema from the registry
175
- const referencedSchema = schemaRegistry.get(refId);
176
-
177
- if (!referencedSchema) {
178
- // console.error(`Schema with ID "${refId}" not found in schema registry`, { referencedSchema });
179
- // throw new Error(`Schema with ID "${refId}" not found in schema registry`);
180
- continue;
181
- }
182
-
183
- // Create a safe key for $defs (remove special characters, use last part of URI)
184
- const defKey =
185
- refId.replace(/[^a-zA-Z0-9_-]/g, "_").replace(/^_+|_+$/g, "") ||
186
- refId
187
- .split("/")
188
- .pop()
189
- ?.replace(/[^a-zA-Z0-9_-]/g, "_") ||
190
- `ref_${Object.keys(inlinedSchema.$defs!).length}`;
191
-
192
- // Ensure unique key
193
- let uniqueDefKey = defKey;
194
- let counter = 1;
195
- while (inlinedSchema.$defs![uniqueDefKey]) {
196
- uniqueDefKey = `${defKey}_${counter}`;
197
- counter++;
198
- }
199
-
200
- // Add to $defs
201
- const { $id, ...schemaWithoutId } = referencedSchema;
202
- inlinedSchema.$defs![uniqueDefKey] = schemaWithoutId;
203
-
204
- // Map original reference to local reference
205
- refToLocalMap.set(refId, `#/$defs/${uniqueDefKey}`);
206
- }
207
-
208
- // Convert all external references to local $defs references
209
- const finalSchema = convertRefsToLocal(inlinedSchema, refToLocalMap) as T & SchemaWithDefs;
210
-
211
- // Recursively inline references in the newly added $defs schemas
212
- if (finalSchema.$defs) {
213
- // Keep processing until no new references are found
214
- let foundNewRefs = true;
215
- while (foundNewRefs) {
216
- foundNewRefs = false;
217
- const newRefsFound = new Set<string>();
218
-
219
- // Check each $defs schema for new references
220
- for (const [defKey, defSchema] of Object.entries(finalSchema.$defs)) {
221
- const defCollectedRefs = new Set<string>();
222
-
223
- // Collect refs specifically for this schema
224
- function collectDefsRefs(obj: unknown): void {
225
- if (typeof obj !== "object" || obj === null) return;
226
-
227
- if (Array.isArray(obj)) {
228
- obj.forEach(collectDefsRefs);
229
- return;
230
- }
231
-
232
- for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {
233
- if (key === "$ref" && typeof value === "string") {
234
- const refId = value.startsWith("#/") ? value : value;
235
- if (!refId.startsWith("#/")) {
236
- defCollectedRefs.add(refId);
237
- }
238
- } else {
239
- collectDefsRefs(value);
240
- }
241
- }
242
- }
243
-
244
- collectDefsRefs(defSchema);
245
-
246
- // Process any new references found in this $defs schema
247
- for (const refId of defCollectedRefs) {
248
- if (!refToLocalMap.has(refId)) {
249
- newRefsFound.add(refId);
250
- foundNewRefs = true;
251
- }
252
- }
253
- }
254
-
255
- // Add all newly found references to $defs
256
- for (const refId of newRefsFound) {
257
- const referencedSchema = schemaRegistry.get(refId);
258
- if (referencedSchema) {
259
- const newDefKey =
260
- refId.replace(/[^a-zA-Z0-9_-]/g, "_").replace(/^_+|_+$/g, "") ||
261
- `ref_${Object.keys(finalSchema.$defs).length}`;
262
-
263
- let uniqueNewDefKey = newDefKey;
264
- let counter = 1;
265
- while (finalSchema.$defs[uniqueNewDefKey]) {
266
- uniqueNewDefKey = `${newDefKey}_${counter}`;
267
- counter++;
268
- }
269
-
270
- finalSchema.$defs[uniqueNewDefKey] = referencedSchema;
271
- refToLocalMap.set(refId, `#/$defs/${uniqueNewDefKey}`);
272
- }
273
- }
274
- }
275
-
276
- // Finally, update all $defs schemas with converted references
277
- for (const [defKey, defSchema] of Object.entries(finalSchema.$defs)) {
278
- finalSchema.$defs[defKey] = convertRefsToLocal(defSchema, refToLocalMap) as TSchema;
279
- }
280
- }
281
-
282
- return finalSchema as T & { $defs: Record<string, TSchema> };
283
- }