@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.
- package/dist/shared/ai/schemas.d.ts +11 -2
- package/dist/shared/ai/schemas.d.ts.map +1 -1
- package/dist/shared/ai/schemas.js +38 -8
- package/dist/shared/ai/schemas.js.map +1 -1
- package/dist/shared/ai/types.d.ts +93 -81
- package/dist/shared/ai/types.d.ts.map +1 -1
- package/dist/shared/ajv.js +33 -32
- package/dist/shared/ajv.js.map +1 -1
- package/dist/shared/attributes.d.ts +86 -86
- package/dist/shared/attributes.d.ts.map +1 -1
- package/dist/shared/attributes.js +22 -25
- package/dist/shared/brick-manifest.d.ts +8 -5
- package/dist/shared/brick-manifest.d.ts.map +1 -1
- package/dist/shared/brick-manifest.js +3 -18
- package/dist/shared/bricks/manifests/_types.d.ts +9 -0
- package/dist/shared/bricks/manifests/_types.d.ts.map +1 -0
- package/dist/shared/bricks/manifests/_types.js +3 -0
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/accordion.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/accordion.manifest.js +13 -20
- package/dist/shared/bricks/manifests/all-manifests.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/all-manifests.js +44 -43
- package/dist/shared/bricks/manifests/all-props.d.ts +1501 -0
- package/dist/shared/bricks/manifests/all-props.d.ts.map +1 -0
- package/dist/shared/bricks/manifests/all-props.js +243 -0
- package/dist/shared/bricks/manifests/all-props.js.map +1 -0
- package/dist/shared/bricks/manifests/box.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/box.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/box.manifest.js +16 -20
- package/dist/shared/bricks/manifests/button.manifest.d.ts +5 -12
- package/dist/shared/bricks/manifests/button.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/button.manifest.js +13 -20
- package/dist/shared/bricks/manifests/card.manifest.d.ts +10 -9
- package/dist/shared/bricks/manifests/card.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/card.manifest.js +18 -20
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/carousel.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/carousel.manifest.js +15 -20
- package/dist/shared/bricks/manifests/footer.manifest.d.ts +5 -9
- package/dist/shared/bricks/manifests/footer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/footer.manifest.js +13 -20
- package/dist/shared/bricks/manifests/form.manifest.d.ts +5 -9
- package/dist/shared/bricks/manifests/form.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/form.manifest.js +13 -20
- package/dist/shared/bricks/manifests/hero.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/hero.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/hero.manifest.js +13 -20
- package/dist/shared/bricks/manifests/html.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/html.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/html.manifest.js +8 -20
- package/dist/shared/bricks/manifests/icon.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/icon.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/icon.manifest.js +13 -20
- package/dist/shared/bricks/manifests/image.manifest.d.ts +3 -2
- package/dist/shared/bricks/manifests/image.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/image.manifest.js +16 -20
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/images-gallery.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/images-gallery.manifest.js +15 -20
- package/dist/shared/bricks/manifests/map.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/map.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/map.manifest.js +11 -20
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts +7 -11
- package/dist/shared/bricks/manifests/navbar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/navbar.manifest.js +15 -20
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/sidebar.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/sidebar.manifest.js +13 -20
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/social-links.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/social-links.manifest.js +14 -20
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/spacer.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/spacer.manifest.js +8 -20
- package/dist/shared/bricks/manifests/table.manifest.d.ts +6 -10
- package/dist/shared/bricks/manifests/table.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/table.manifest.js +15 -20
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts +6 -10
- package/dist/shared/bricks/manifests/tabs.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/tabs.manifest.js +15 -20
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts +4 -8
- package/dist/shared/bricks/manifests/testimonials.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/testimonials.manifest.js +18 -20
- package/dist/shared/bricks/manifests/text.manifest.d.ts +4 -12
- package/dist/shared/bricks/manifests/text.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/text.manifest.js +13 -20
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts +9 -13
- package/dist/shared/bricks/manifests/timeline.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/timeline.manifest.js +15 -20
- package/dist/shared/bricks/manifests/video.manifest.d.ts +3 -7
- package/dist/shared/bricks/manifests/video.manifest.d.ts.map +1 -1
- package/dist/shared/bricks/manifests/video.manifest.js +11 -20
- package/dist/shared/bricks/props/align.d.ts +0 -3
- package/dist/shared/bricks/props/align.d.ts.map +1 -1
- package/dist/shared/bricks/props/align.js +4 -11
- package/dist/shared/bricks/props/background.d.ts +2 -8
- package/dist/shared/bricks/props/background.d.ts.map +1 -1
- package/dist/shared/bricks/props/background.js +4 -9
- package/dist/shared/bricks/props/border.d.ts +0 -7
- package/dist/shared/bricks/props/border.d.ts.map +1 -1
- package/dist/shared/bricks/props/border.js +5 -10
- package/dist/shared/bricks/props/color-preset.d.ts +316 -6
- package/dist/shared/bricks/props/color-preset.d.ts.map +1 -1
- package/dist/shared/bricks/props/color-preset.js +2 -5
- package/dist/shared/bricks/props/color.d.ts +3 -5
- package/dist/shared/bricks/props/color.d.ts.map +1 -1
- package/dist/shared/bricks/props/color.js +3 -8
- package/dist/shared/bricks/props/common.d.ts.map +1 -1
- package/dist/shared/bricks/props/common.js +4 -5
- package/dist/shared/bricks/props/css-length.d.ts +0 -1
- package/dist/shared/bricks/props/css-length.d.ts.map +1 -1
- package/dist/shared/bricks/props/css-length.js +1 -4
- package/dist/shared/bricks/props/datasource.d.ts +3 -3
- package/dist/shared/bricks/props/datasource.d.ts.map +1 -1
- package/dist/shared/bricks/props/datasource.js +74 -76
- package/dist/shared/bricks/props/datasource.js.map +1 -1
- package/dist/shared/bricks/props/date.js +21 -4
- package/dist/shared/bricks/props/date.js.map +1 -1
- package/dist/shared/bricks/props/direction.d.ts +1 -2
- package/dist/shared/bricks/props/direction.d.ts.map +1 -1
- package/dist/shared/bricks/props/direction.js +4 -7
- package/dist/shared/bricks/props/dynamic.d.ts +5 -67
- package/dist/shared/bricks/props/dynamic.d.ts.map +1 -1
- package/dist/shared/bricks/props/dynamic.js +6 -24
- package/dist/shared/bricks/props/effects.d.ts +1 -3
- package/dist/shared/bricks/props/effects.d.ts.map +1 -1
- package/dist/shared/bricks/props/effects.js +4 -9
- package/dist/shared/bricks/props/geolocation.d.ts.map +1 -1
- package/dist/shared/bricks/props/geolocation.js +3 -6
- package/dist/shared/bricks/props/geolocation.js.map +1 -1
- package/dist/shared/bricks/props/helpers.js +5 -6
- package/dist/shared/bricks/props/image.d.ts +2 -8
- package/dist/shared/bricks/props/image.d.ts.map +1 -1
- package/dist/shared/bricks/props/image.js +4 -7
- package/dist/shared/bricks/props/string.d.ts +2 -5
- package/dist/shared/bricks/props/string.d.ts.map +1 -1
- package/dist/shared/bricks/props/string.js +3 -10
- package/dist/shared/bricks/props/tags.d.ts +0 -1
- package/dist/shared/bricks/props/tags.d.ts.map +1 -1
- package/dist/shared/bricks/props/tags.js +3 -6
- package/dist/shared/bricks/props/text.d.ts +0 -3
- package/dist/shared/bricks/props/text.d.ts.map +1 -1
- package/dist/shared/bricks/props/text.js +4 -11
- package/dist/shared/bricks/props/types.d.ts +2 -2
- package/dist/shared/bricks/props/types.d.ts.map +1 -1
- package/dist/shared/bricks.d.ts +64 -152
- package/dist/shared/bricks.d.ts.map +1 -1
- package/dist/shared/bricks.js +49 -52
- package/dist/shared/chunk-2O5HVPID.js +41 -0
- package/dist/shared/chunk-2O5HVPID.js.map +1 -0
- package/dist/shared/{chunk-F22LDHEO.js → chunk-2U5U3CCJ.js} +3 -18
- package/dist/shared/chunk-2U5U3CCJ.js.map +1 -0
- package/dist/shared/{chunk-LXAO3JA6.js → chunk-4KY7OZWD.js} +35 -35
- package/dist/shared/chunk-4KY7OZWD.js.map +1 -0
- package/dist/shared/{chunk-TNMNMYOB.js → chunk-5RCC2STG.js} +2 -13
- package/dist/shared/chunk-5RCC2STG.js.map +1 -0
- package/dist/shared/{chunk-V3UA3LRK.js → chunk-6AE7UD73.js} +56 -37
- package/dist/shared/chunk-6AE7UD73.js.map +1 -0
- package/dist/shared/chunk-7U5WPHXB.js +346 -0
- package/dist/shared/chunk-7U5WPHXB.js.map +1 -0
- package/dist/shared/{chunk-Q4NPPLEU.js → chunk-BHARJBEK.js} +2 -9
- package/dist/shared/chunk-BHARJBEK.js.map +1 -0
- package/dist/shared/chunk-BZTWZC77.js +530 -0
- package/dist/shared/chunk-BZTWZC77.js.map +1 -0
- package/dist/shared/{chunk-QSND5IWT.js → chunk-DCM4732T.js} +24 -43
- package/dist/shared/chunk-DCM4732T.js.map +1 -0
- package/dist/shared/{chunk-W6MRYRGJ.js → chunk-DRQKKPTX.js} +6 -20
- package/dist/shared/chunk-DRQKKPTX.js.map +1 -0
- package/dist/shared/{chunk-CSF2WQX2.js → chunk-EID5HPF3.js} +15 -12
- package/dist/shared/chunk-EID5HPF3.js.map +1 -0
- package/dist/shared/chunk-EMF5TCPX.js +389 -0
- package/dist/shared/chunk-EMF5TCPX.js.map +1 -0
- package/dist/shared/chunk-FD7YYFRI.js +225 -0
- package/dist/shared/chunk-FD7YYFRI.js.map +1 -0
- package/dist/shared/{chunk-MLZT7MRQ.js → chunk-FHA4DFIM.js} +26 -27
- package/dist/shared/chunk-FHA4DFIM.js.map +1 -0
- package/dist/shared/{chunk-GRMY35BU.js → chunk-FUUSAMN3.js} +165 -40
- package/dist/shared/chunk-FUUSAMN3.js.map +1 -0
- package/dist/shared/chunk-GDYCCB3B.js +22 -0
- package/dist/shared/chunk-GDYCCB3B.js.map +1 -0
- package/dist/shared/chunk-GLV6QIIM.js +41 -0
- package/dist/shared/chunk-GLV6QIIM.js.map +1 -0
- package/dist/shared/chunk-H6TMBELF.js +374 -0
- package/dist/shared/chunk-H6TMBELF.js.map +1 -0
- package/dist/shared/{chunk-BMWRR4DI.js → chunk-HUWMIXNN.js} +26 -28
- package/dist/shared/chunk-HUWMIXNN.js.map +1 -0
- package/dist/shared/chunk-HY7JOP3J.js +150 -0
- package/dist/shared/chunk-HY7JOP3J.js.map +1 -0
- package/dist/shared/{chunk-TFGGYU6Y.js → chunk-IEMCCHM4.js} +7 -12
- package/dist/shared/chunk-IEMCCHM4.js.map +1 -0
- package/dist/shared/{chunk-TB3X4LRQ.js → chunk-J45LSQT6.js} +2 -2
- package/dist/shared/chunk-J45LSQT6.js.map +1 -0
- package/dist/shared/{chunk-WGDUJSSS.js → chunk-JF52BBFD.js} +27 -28
- package/dist/shared/chunk-JF52BBFD.js.map +1 -0
- package/dist/shared/{chunk-GPCI2N2A.js → chunk-JLDAS3VE.js} +136 -33
- package/dist/shared/chunk-JLDAS3VE.js.map +1 -0
- package/dist/shared/{chunk-SE6O65HC.js → chunk-JSDKK5QN.js} +10 -23
- package/dist/shared/chunk-JSDKK5QN.js.map +1 -0
- package/dist/shared/chunk-JW7MQAU4.js +354 -0
- package/dist/shared/chunk-JW7MQAU4.js.map +1 -0
- package/dist/shared/{chunk-RV7AYVFV.js → chunk-KKWT3OXF.js} +4 -19
- package/dist/shared/chunk-KKWT3OXF.js.map +1 -0
- package/dist/shared/{chunk-TEO6TJOM.js → chunk-KQH6V22E.js} +36 -35
- package/dist/shared/{chunk-TEO6TJOM.js.map → chunk-KQH6V22E.js.map} +1 -1
- package/dist/shared/{chunk-3KLRW4I2.js → chunk-LGDDJJHK.js} +212 -156
- package/dist/shared/chunk-LGDDJJHK.js.map +1 -0
- package/dist/shared/{chunk-QL3T5HJQ.js → chunk-LGGPCCCY.js} +3 -3
- package/dist/shared/chunk-LGGPCCCY.js.map +1 -0
- package/dist/shared/{chunk-2HO4FHLM.js → chunk-LPAQ47C6.js} +137 -171
- package/dist/shared/chunk-LPAQ47C6.js.map +1 -0
- package/dist/shared/chunk-MO6CRLQA.js +73 -0
- package/dist/shared/chunk-MO6CRLQA.js.map +1 -0
- package/dist/shared/{chunk-SHUGHJ7V.js → chunk-MYOLWTB2.js} +29 -32
- package/dist/shared/chunk-MYOLWTB2.js.map +1 -0
- package/dist/shared/{chunk-Z2NTDFB4.js → chunk-O24RDXZS.js} +34 -34
- package/dist/shared/chunk-O24RDXZS.js.map +1 -0
- package/dist/shared/{chunk-BPBKHEQ5.js → chunk-OJ6KL7FU.js} +1 -8
- package/dist/shared/chunk-OJ6KL7FU.js.map +1 -0
- package/dist/shared/{chunk-GCQURRVB.js → chunk-PF75LW33.js} +24 -27
- package/dist/shared/chunk-PF75LW33.js.map +1 -0
- package/dist/shared/{chunk-EWSPTRDL.js → chunk-QEJGPYTB.js} +132 -48
- package/dist/shared/chunk-QEJGPYTB.js.map +1 -0
- package/dist/shared/{chunk-P3RH5URN.js → chunk-SK2O7GFC.js} +17 -18
- package/dist/shared/chunk-SK2O7GFC.js.map +1 -0
- package/dist/shared/{chunk-UQF52PWK.js → chunk-SQXZNGQF.js} +8 -23
- package/dist/shared/chunk-SQXZNGQF.js.map +1 -0
- package/dist/shared/{chunk-NTLAKMMQ.js → chunk-SRYBJ6NQ.js} +6 -17
- package/dist/shared/chunk-SRYBJ6NQ.js.map +1 -0
- package/dist/shared/{chunk-O5PLB3YB.js → chunk-T6C3NG2L.js} +68 -59
- package/dist/shared/chunk-T6C3NG2L.js.map +1 -0
- package/dist/shared/{chunk-U7TVEPKA.js → chunk-TBT2PTGB.js} +41 -33
- package/dist/shared/chunk-TBT2PTGB.js.map +1 -0
- package/dist/shared/{chunk-CKFRSHR2.js → chunk-U4KZUX37.js} +18 -19
- package/dist/shared/chunk-U4KZUX37.js.map +1 -0
- package/dist/shared/{chunk-4WI23M7W.js → chunk-VSLRTXLF.js} +11 -4
- package/dist/shared/chunk-VSLRTXLF.js.map +1 -0
- package/dist/shared/{chunk-BHC2A43S.js → chunk-VTCHJT4O.js} +3 -3
- package/dist/shared/{chunk-BHC2A43S.js.map → chunk-VTCHJT4O.js.map} +1 -1
- package/dist/shared/{chunk-DRTGM2UJ.js → chunk-W2RFDII5.js} +3 -3
- package/dist/shared/chunk-W2RFDII5.js.map +1 -0
- package/dist/shared/{chunk-Y74LZNND.js → chunk-WPZV3LYL.js} +4 -10
- package/dist/shared/chunk-WPZV3LYL.js.map +1 -0
- package/dist/shared/chunk-XFZQGRRL.js +101 -0
- package/dist/shared/chunk-XFZQGRRL.js.map +1 -0
- package/dist/shared/{chunk-QQQ3FYPG.js → chunk-XK2CERPB.js} +147 -31
- package/dist/shared/chunk-XK2CERPB.js.map +1 -0
- package/dist/shared/chunk-XNRSL6FL.js +78 -0
- package/dist/shared/chunk-XNRSL6FL.js.map +1 -0
- package/dist/shared/{chunk-2RK3CPYJ.js → chunk-XXPSM6UA.js} +9 -12
- package/dist/shared/chunk-XXPSM6UA.js.map +1 -0
- package/dist/shared/{chunk-ZLYIRH2B.js → chunk-ZRBTAC3G.js} +3 -18
- package/dist/shared/chunk-ZRBTAC3G.js.map +1 -0
- package/dist/shared/{chunk-Z35I5JM5.js → chunk-ZVJNRKT4.js} +18 -20
- package/dist/shared/chunk-ZVJNRKT4.js.map +1 -0
- package/dist/shared/context.d.ts +402 -22
- package/dist/shared/context.d.ts.map +1 -1
- package/dist/shared/context.js +93 -0
- package/dist/shared/context.js.map +1 -1
- package/dist/shared/datarecords/external/airtable/types.d.ts +1 -1
- package/dist/shared/datarecords/external/airtable/types.d.ts.map +1 -1
- package/dist/shared/datarecords/external/airtable/types.js +2 -1
- package/dist/shared/datarecords/types.d.ts +10 -63
- package/dist/shared/datarecords/types.d.ts.map +1 -1
- package/dist/shared/datarecords/types.js +5 -6
- package/dist/shared/datasources/external/instagram/feed/schema.d.ts +1 -1
- package/dist/shared/datasources/external/instagram/feed/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/instagram/feed/schema.js +4 -1
- package/dist/shared/datasources/external/instagram/feed/schema.js.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/schema.d.ts +6 -6
- package/dist/shared/datasources/external/mastodon/status/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/mastodon/status/schema.js +6 -19
- package/dist/shared/datasources/external/mastodon/status/schema.js.map +1 -1
- package/dist/shared/datasources/external/meta/oauth/config.d.ts +2 -2
- package/dist/shared/datasources/external/meta/oauth/config.d.ts.map +1 -1
- package/dist/shared/datasources/external/meta/oauth/config.js +4 -1
- package/dist/shared/datasources/external/meta/oauth/config.js.map +1 -1
- package/dist/shared/datasources/external/threads/media/fetcher.js +3 -3
- package/dist/shared/datasources/external/threads/media/schema.d.ts +1 -1
- package/dist/shared/datasources/external/threads/media/schema.d.ts.map +1 -1
- package/dist/shared/datasources/external/threads/media/schema.js +4 -8
- package/dist/shared/datasources/external/threads/media/schema.js.map +1 -1
- package/dist/shared/datasources/internal/blog/schema.d.ts +1 -1
- package/dist/shared/datasources/internal/blog/schema.d.ts.map +1 -1
- package/dist/shared/datasources/internal/blog/schema.js +4 -1
- package/dist/shared/datasources/internal/blog/schema.js.map +1 -1
- package/dist/shared/datasources/types.d.ts +25 -25
- package/dist/shared/datasources/types.d.ts.map +1 -1
- package/dist/shared/datasources/types.js +3 -16
- package/dist/shared/datasources.d.ts +1 -1
- package/dist/shared/datasources.d.ts.map +1 -1
- package/dist/shared/datasources.js +1 -3
- package/dist/shared/datasources.js.map +1 -1
- package/dist/shared/images.d.ts +1 -1
- package/dist/shared/images.d.ts.map +1 -1
- package/dist/shared/images.js +4 -38
- package/dist/shared/images.js.map +1 -1
- package/dist/shared/page.d.ts +139 -22
- package/dist/shared/page.d.ts.map +1 -1
- package/dist/shared/page.js +51 -49
- package/dist/shared/responsive.js +1 -1
- package/dist/shared/site.d.ts +80 -197
- package/dist/shared/site.d.ts.map +1 -1
- package/dist/shared/site.js +55 -114
- package/dist/shared/site.js.map +1 -1
- package/dist/shared/sitemap.d.ts +6 -327
- package/dist/shared/sitemap.d.ts.map +1 -1
- package/dist/shared/sitemap.js +50 -58
- package/dist/shared/theme.d.ts +0 -37
- package/dist/shared/theme.d.ts.map +1 -1
- package/dist/shared/theme.js +4 -21
- package/dist/shared/utils/llm.d.ts +1 -10
- package/dist/shared/utils/llm.d.ts.map +1 -1
- package/dist/shared/utils/llm.js +1 -18
- package/dist/shared/utils/schema.d.ts +3 -2
- package/dist/shared/utils/schema.d.ts.map +1 -1
- package/dist/shared/utils/schema.js +2 -17
- package/dist/shared/utils/string-enum.d.ts +9 -3
- package/dist/shared/utils/string-enum.d.ts.map +1 -1
- package/dist/shared/utils/string-enum.js +1 -1
- package/package.json +21 -5
- package/src/shared/ai/schemas.ts +41 -10
- package/src/shared/ai/types.ts +78 -76
- package/src/shared/attributes.ts +56 -46
- package/src/shared/brick-manifest.ts +5 -6
- package/src/shared/bricks/manifests/_types.ts +9 -0
- package/src/shared/bricks/manifests/accordion.manifest.ts +138 -171
- package/src/shared/bricks/manifests/all-manifests.ts +1 -0
- package/src/shared/bricks/manifests/all-props.ts +165 -0
- package/src/shared/bricks/manifests/box.manifest.ts +214 -150
- package/src/shared/bricks/manifests/button.manifest.ts +204 -79
- package/src/shared/bricks/manifests/card.manifest.ts +229 -43
- package/src/shared/bricks/manifests/carousel.manifest.ts +165 -35
- package/src/shared/bricks/manifests/footer.manifest.ts +18 -20
- package/src/shared/bricks/manifests/form.manifest.ts +136 -22
- package/src/shared/bricks/manifests/hero.manifest.ts +121 -38
- package/src/shared/bricks/manifests/html.manifest.ts +2 -5
- package/src/shared/bricks/manifests/icon.manifest.ts +225 -46
- package/src/shared/bricks/manifests/image.manifest.ts +125 -21
- package/src/shared/bricks/manifests/images-gallery.manifest.ts +15 -20
- package/src/shared/bricks/manifests/map.manifest.ts +12 -15
- package/src/shared/bricks/manifests/navbar.manifest.ts +22 -26
- package/src/shared/bricks/manifests/sidebar.manifest.ts +11 -14
- package/src/shared/bricks/manifests/social-links.manifest.ts +19 -24
- package/src/shared/bricks/manifests/spacer.manifest.ts +2 -5
- package/src/shared/bricks/manifests/table.manifest.ts +17 -20
- package/src/shared/bricks/manifests/tabs.manifest.ts +16 -21
- package/src/shared/bricks/manifests/testimonials.manifest.ts +23 -25
- package/src/shared/bricks/manifests/text.manifest.ts +47 -29
- package/src/shared/bricks/manifests/timeline.manifest.ts +31 -29
- package/src/shared/bricks/manifests/video.manifest.ts +11 -15
- package/src/shared/bricks/props/align.ts +0 -13
- package/src/shared/bricks/props/background.ts +1 -14
- package/src/shared/bricks/props/border.ts +2 -13
- package/src/shared/bricks/props/color-preset.ts +9 -10
- package/src/shared/bricks/props/color.ts +7 -18
- package/src/shared/bricks/props/common.ts +6 -7
- package/src/shared/bricks/props/css-length.ts +0 -5
- package/src/shared/bricks/props/datasource.ts +72 -74
- package/src/shared/bricks/props/direction.ts +1 -5
- package/src/shared/bricks/props/dynamic.ts +0 -11
- package/src/shared/bricks/props/effects.ts +0 -9
- package/src/shared/bricks/props/geolocation.ts +3 -3
- package/src/shared/bricks/props/helpers.ts +1 -1
- package/src/shared/bricks/props/image.ts +4 -16
- package/src/shared/bricks/props/string.ts +6 -19
- package/src/shared/bricks/props/tags.ts +0 -5
- package/src/shared/bricks/props/tests/background.test.ts +1 -15
- package/src/shared/bricks/props/tests/image.test.ts +3 -9
- package/src/shared/bricks/props/tests/string.test.ts +2 -26
- package/src/shared/bricks/props/text.ts +0 -12
- package/src/shared/bricks/props/types.ts +4 -3
- package/src/shared/bricks.ts +164 -1025
- package/src/shared/context.ts +24 -23
- package/src/shared/datarecords/external/airtable/types.ts +12 -11
- package/src/shared/datarecords/types.ts +22 -44
- package/src/shared/datasources/external/instagram/feed/schema.ts +2 -1
- package/src/shared/datasources/external/mastodon/status/schema.ts +4 -19
- package/src/shared/datasources/external/meta/oauth/config.ts +2 -1
- package/src/shared/datasources/external/threads/media/schema.ts +2 -8
- package/src/shared/datasources/internal/blog/schema.ts +2 -1
- package/src/shared/datasources/types.ts +64 -79
- package/src/shared/datasources.ts +2 -4
- package/src/shared/images.ts +12 -18
- package/src/shared/page.ts +9 -2
- package/src/shared/site.ts +3 -3
- package/src/shared/sitemap.ts +3 -68
- package/src/shared/tests/attributes.test.ts +2 -0
- package/src/shared/theme.ts +81 -96
- package/src/shared/utils/llm.ts +5 -191
- package/src/shared/utils/schema.ts +71 -244
- package/src/shared/utils/string-enum.ts +25 -4
- package/src/shared/utils/tests/schema.test.ts +112 -314
- package/dist/shared/chunk-2HO4FHLM.js.map +0 -1
- package/dist/shared/chunk-2RK3CPYJ.js.map +0 -1
- package/dist/shared/chunk-3KLRW4I2.js.map +0 -1
- package/dist/shared/chunk-4WI23M7W.js.map +0 -1
- package/dist/shared/chunk-6E42XWFH.js +0 -103
- package/dist/shared/chunk-6E42XWFH.js.map +0 -1
- package/dist/shared/chunk-A2QPY54H.js +0 -13
- package/dist/shared/chunk-A2QPY54H.js.map +0 -1
- package/dist/shared/chunk-BMWRR4DI.js.map +0 -1
- package/dist/shared/chunk-BPBKHEQ5.js.map +0 -1
- package/dist/shared/chunk-BW6EFRSF.js +0 -794
- package/dist/shared/chunk-BW6EFRSF.js.map +0 -1
- package/dist/shared/chunk-CKFRSHR2.js.map +0 -1
- package/dist/shared/chunk-CSF2WQX2.js.map +0 -1
- package/dist/shared/chunk-D4YQ6ABM.js +0 -338
- package/dist/shared/chunk-D4YQ6ABM.js.map +0 -1
- package/dist/shared/chunk-DRTGM2UJ.js.map +0 -1
- package/dist/shared/chunk-EQMU6NIU.js +0 -1222
- package/dist/shared/chunk-EQMU6NIU.js.map +0 -1
- package/dist/shared/chunk-EWSPTRDL.js.map +0 -1
- package/dist/shared/chunk-F22LDHEO.js.map +0 -1
- package/dist/shared/chunk-FVU5PXRC.js +0 -244
- package/dist/shared/chunk-FVU5PXRC.js.map +0 -1
- package/dist/shared/chunk-GCQURRVB.js.map +0 -1
- package/dist/shared/chunk-GPCI2N2A.js.map +0 -1
- package/dist/shared/chunk-GRMY35BU.js.map +0 -1
- package/dist/shared/chunk-JK2FWFJU.js +0 -15
- package/dist/shared/chunk-JK2FWFJU.js.map +0 -1
- package/dist/shared/chunk-LXAO3JA6.js.map +0 -1
- package/dist/shared/chunk-MLZT7MRQ.js.map +0 -1
- package/dist/shared/chunk-NT3IW52F.js +0 -260
- package/dist/shared/chunk-NT3IW52F.js.map +0 -1
- package/dist/shared/chunk-NTLAKMMQ.js.map +0 -1
- package/dist/shared/chunk-O5PLB3YB.js.map +0 -1
- package/dist/shared/chunk-P3RH5URN.js.map +0 -1
- package/dist/shared/chunk-Q4NPPLEU.js.map +0 -1
- package/dist/shared/chunk-QL3T5HJQ.js.map +0 -1
- package/dist/shared/chunk-QQQ3FYPG.js.map +0 -1
- package/dist/shared/chunk-QSND5IWT.js.map +0 -1
- package/dist/shared/chunk-RV7AYVFV.js.map +0 -1
- package/dist/shared/chunk-SE6O65HC.js.map +0 -1
- package/dist/shared/chunk-SHUGHJ7V.js.map +0 -1
- package/dist/shared/chunk-TB3X4LRQ.js.map +0 -1
- package/dist/shared/chunk-TFGGYU6Y.js.map +0 -1
- package/dist/shared/chunk-TNMNMYOB.js.map +0 -1
- package/dist/shared/chunk-U7TVEPKA.js.map +0 -1
- package/dist/shared/chunk-UQF52PWK.js.map +0 -1
- package/dist/shared/chunk-V3UA3LRK.js.map +0 -1
- package/dist/shared/chunk-W6MRYRGJ.js.map +0 -1
- package/dist/shared/chunk-WGDUJSSS.js.map +0 -1
- package/dist/shared/chunk-WKN566LN.js +0 -29
- package/dist/shared/chunk-WKN566LN.js.map +0 -1
- package/dist/shared/chunk-X6N463D4.js +0 -222
- package/dist/shared/chunk-X6N463D4.js.map +0 -1
- package/dist/shared/chunk-X75YV73Q.js +0 -178
- package/dist/shared/chunk-X75YV73Q.js.map +0 -1
- package/dist/shared/chunk-Y74LZNND.js.map +0 -1
- package/dist/shared/chunk-Z2NTDFB4.js.map +0 -1
- package/dist/shared/chunk-Z35I5JM5.js.map +0 -1
- package/dist/shared/chunk-ZLYIRH2B.js.map +0 -1
- package/dist/shared/schema-registry.d.ts +0 -5
- package/dist/shared/schema-registry.d.ts.map +0 -1
- package/dist/shared/schema-registry.js +0 -119
- package/dist/shared/schema-registry.js.map +0 -1
- package/dist/shared/tests/schema-registry.test.d.ts +0 -2
- package/dist/shared/tests/schema-registry.test.d.ts.map +0 -1
- package/dist/shared/utils/schema-registry.d.ts +0 -5
- package/dist/shared/utils/schema-registry.d.ts.map +0 -1
- package/dist/shared/utils/schema-registry.js +0 -29
- package/dist/shared/utils/tests/schema-registry.test.d.ts +0 -2
- package/dist/shared/utils/tests/schema-registry.test.d.ts.map +0 -1
- package/dist/shared/utils/typed-ref.d.ts +0 -43
- package/dist/shared/utils/typed-ref.d.ts.map +0 -1
- package/dist/shared/utils/typed-ref.js +0 -10
- package/dist/shared/utils/typed-ref.js.map +0 -1
- package/src/shared/schema-registry.ts +0 -82
- package/src/shared/tests/schema-registry.test.ts +0 -14
- package/src/shared/utils/schema-registry.ts +0 -82
- package/src/shared/utils/tests/schema-registry.test.ts +0 -13
- package/src/shared/utils/typed-ref.ts +0 -53
- /package/dist/shared/{utils/schema-registry.js.map → bricks/manifests/_types.js.map} +0 -0
package/src/shared/sitemap.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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);
|
package/src/shared/theme.ts
CHANGED
|
@@ -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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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"];
|
package/src/shared/utils/llm.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import type
|
|
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(
|
|
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
|
-
}
|