@designcrowd/library.brand-page 5.17.6 → 5.17.7
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/lib/src/{CreatedOnBrandCrowd-de-de-BI2KuOEF.js → CreatedOnBrandCrowd-de-de-BUQFMhZb.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-BYLJCjLJ.js → CreatedOnBrandCrowd-en-us-QS-5r4XI.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-Y_D6cuGE.js → CreatedOnBrandCrowd-es-es-CP2iH-n0.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-CqCBRjYh.js → CreatedOnBrandCrowd-fr-ca-qfD4NmQZ.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-CqCBRjYh.js → CreatedOnBrandCrowd-fr-fr-qfD4NmQZ.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-Bt0YF6DA.js → CreatedOnBrandCrowd-pt-br-CfmaB7zE.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-Bt0YF6DA.js → CreatedOnBrandCrowd-pt-pt-CfmaB7zE.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-CEk8FBEG.js → CreatedOnDcom-de-de-BxSUWfGN.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-DWw4Tm2L.js → CreatedOnDcom-en-us-CSeUdR6v.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-DpG-8o98.js → CreatedOnDcom-es-es-g7rCfAtP.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-CEla7RmR.js → CreatedOnDcom-fr-ca-Bh_BTb-O.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-DRXeVTlV.js → CreatedOnDcom-fr-fr-Clgd_Ujm.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-Bzu_phZc.js → CreatedOnDcom-pt-br-Dlgk0myX.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-DWax8Er7.js → CreatedOnDcom-pt-pt-B14APfrn.js} +1 -1
- package/lib/src/brand-page/models/brand-page-context.model.d.ts +2 -1
- package/lib/src/brand-page/models/brand-page-context.model.js +5 -0
- package/lib/src/brand-page/models/index.d.ts +1 -0
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +62 -2
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +1 -0
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +60 -2
- package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +30 -1
- package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +60 -2
- package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +60 -2
- package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +60 -2
- package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +60 -2
- package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +60 -2
- package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +60 -2
- package/lib/src/brand-page-maker/composables/ai-chat/useAiChat.js +3 -1
- package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.d.ts +1 -1
- package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.js +6 -6
- package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.d.ts +2 -0
- package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +258 -0
- package/lib/src/brand-page-maker/constants/sidebar-constant.d.ts +1 -0
- package/lib/src/brand-page-maker/constants/sidebar-constant.js +8 -0
- package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.d.ts +16 -0
- package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.js +14 -0
- package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +62 -3
- package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +2 -0
- package/lib/src/brand-page-maker/stores/index.d.ts +1 -0
- package/lib/src/brand-page-maker/stores/index.js +1 -0
- package/lib/src/brand-page-maker/stores/snapshot/snapshot-store.d.ts +2 -0
- package/lib/src/brand-page-maker/stores/snapshot/snapshot-store.js +9 -0
- package/lib/src/clients/ai-assistant-client.d.ts +8 -0
- package/lib/src/clients/ai-assistant-client.js +11 -1
- package/lib/src/composables/useSnapshot.js +33 -0
- package/lib/src/css/library.brand-page-brandCrowd.min.css +19 -6
- package/lib/src/css/library.brand-page-brandPage.min.css +19 -6
- package/lib/src/css/library.brand-page-designCom.min.css +19 -6
- package/lib/src/css/library.brand-page-preview.min.css +19 -6
- package/lib/src/index.d.ts +1 -0
- package/lib/src/index.mjs +42 -41
- package/lib/src/{lib-DODSa6QK.js → lib-pOkCQP0J.js} +28820 -26841
- package/lib/src/lib.js +1 -0
- package/lib/src/metadata-builder/ai-metadata-executor.d.ts +1 -1
- package/lib/src/metadata-builder/ai-metadata-executor.js +68 -7
- package/lib/src/metadata-builder/builders/add-page-builder.d.ts +14 -0
- package/lib/src/metadata-builder/builders/add-page-builder.js +66 -0
- package/lib/src/metadata-builder/builders/remove-page-builder.d.ts +13 -0
- package/lib/src/metadata-builder/builders/remove-page-builder.js +50 -0
- package/lib/src/metadata-builder/builders/section-builders/about-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +17 -0
- package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +25 -0
- package/lib/src/metadata-builder/builders/section-builders/base-section-builder.d.ts +40 -0
- package/lib/src/metadata-builder/builders/section-builders/base-section-builder.js +108 -0
- package/lib/src/metadata-builder/builders/section-builders/button-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/button-section-builder.js +16 -0
- package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +27 -0
- package/lib/src/metadata-builder/builders/section-builders/delete-section-builder.d.ts +13 -0
- package/lib/src/metadata-builder/builders/section-builders/delete-section-builder.js +37 -0
- package/lib/src/metadata-builder/builders/section-builders/divider-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/divider-section-builder.js +16 -0
- package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +76 -0
- package/lib/src/metadata-builder/builders/section-builders/image-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/image-section-builder.js +16 -0
- package/lib/src/metadata-builder/builders/section-builders/images-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +158 -0
- package/lib/src/metadata-builder/builders/section-builders/index.d.ts +17 -0
- package/lib/src/metadata-builder/builders/section-builders/index.js +17 -0
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +17 -0
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +16 -0
- package/lib/src/metadata-builder/builders/section-builders/move-section-builder.d.ts +15 -0
- package/lib/src/metadata-builder/builders/section-builders/move-section-builder.js +62 -0
- package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +16 -0
- package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +162 -0
- package/lib/src/metadata-builder/builders/section-builders/social-links-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +50 -0
- package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +133 -0
- package/lib/src/metadata-builder/builders/section-builders/text-section-builder.d.ts +6 -0
- package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +154 -0
- package/lib/src/metadata-builder/builders/section-content-factory.d.ts +3 -0
- package/lib/src/metadata-builder/builders/section-content-factory.js +13 -0
- package/lib/src/metadata-builder/builders/section-field-maps.d.ts +12 -0
- package/lib/src/metadata-builder/builders/section-field-maps.js +180 -0
- package/lib/src/metadata-builder/builders/section-field-utils.d.ts +11 -0
- package/lib/src/metadata-builder/builders/section-field-utils.js +109 -0
- package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +6 -0
- package/lib/src/metadata-builder/helpers/rte.helpers.js +16 -1
- package/lib/src/metadata-builder/metadata-executor.js +71 -1
- package/lib/src/metadata-builder/models.d.ts +54 -0
- package/lib/src/metadata-builder/models.js +58 -0
- package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +51 -3
- package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +110 -13
- package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +285 -0
- package/lib/src/metadata-builder/parsers/section-tool-arguments.js +7 -0
- package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +60 -2
- package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +60 -2
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +60 -2
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +60 -2
- package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +90 -3
- package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +61 -2
- package/lib/src/shared/side-bar/components/SideBar.mixin.js +6 -0
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +60 -2
- package/lib/src/utils/minify-brand-page-metadata.d.ts +22 -0
- package/lib/src/utils/minify-brand-page-metadata.js +344 -0
- package/package.json +1 -1
- package/src/brand-page/models/brand-page-context.model.ts +12 -3
- package/src/brand-page/models/index.ts +1 -0
- package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +80 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +4 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +9 -2
- package/src/brand-page-maker/composables/ai-chat/useAiChat.ts +4 -1
- package/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.ts +6 -6
- package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +363 -0
- package/src/brand-page-maker/constants/sidebar-constant.ts +8 -0
- package/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.ts +19 -0
- package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +3 -1
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +4 -0
- package/src/brand-page-maker/stores/index.ts +1 -0
- package/src/brand-page-maker/stores/snapshot/snapshot-store.ts +12 -0
- package/src/clients/ai-assistant-client.ts +17 -1
- package/src/composables/useSnapshot.ts +47 -0
- package/src/lib.ts +4 -0
- package/src/metadata-builder/ai-metadata-executor.ts +116 -26
- package/src/metadata-builder/builders/add-page-builder.ts +98 -0
- package/src/metadata-builder/builders/remove-page-builder.ts +83 -0
- package/src/metadata-builder/builders/section-builders/about-section-builder.ts +28 -0
- package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +45 -0
- package/src/metadata-builder/builders/section-builders/base-section-builder.ts +160 -0
- package/src/metadata-builder/builders/section-builders/button-section-builder.ts +24 -0
- package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +43 -0
- package/src/metadata-builder/builders/section-builders/delete-section-builder.ts +63 -0
- package/src/metadata-builder/builders/section-builders/divider-section-builder.ts +27 -0
- package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +111 -0
- package/src/metadata-builder/builders/section-builders/image-section-builder.ts +24 -0
- package/src/metadata-builder/builders/section-builders/images-section-builder.ts +223 -0
- package/src/metadata-builder/builders/section-builders/index.ts +21 -0
- package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +29 -0
- package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +27 -0
- package/src/metadata-builder/builders/section-builders/move-section-builder.ts +100 -0
- package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +27 -0
- package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +231 -0
- package/src/metadata-builder/builders/section-builders/social-links-builder.ts +79 -0
- package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +194 -0
- package/src/metadata-builder/builders/section-builders/text-section-builder.ts +234 -0
- package/src/metadata-builder/builders/section-content-factory.ts +20 -0
- package/src/metadata-builder/builders/section-field-maps.ts +235 -0
- package/src/metadata-builder/builders/section-field-utils.ts +157 -0
- package/src/metadata-builder/helpers/rte.helpers.ts +23 -1
- package/src/metadata-builder/metadata-executor.ts +96 -4
- package/src/metadata-builder/models.ts +62 -0
- package/src/metadata-builder/parsers/ai-toolcall-parser.ts +141 -17
- package/src/metadata-builder/parsers/section-tool-arguments.ts +417 -0
- package/src/shared/side-bar/components/SideBar.mixin.ts +10 -0
- package/src/utils/minify-brand-page-metadata.ts +407 -0
|
@@ -10,6 +10,26 @@ import {
|
|
|
10
10
|
} from './models';
|
|
11
11
|
import { UpdateContentTextBuilder } from './builders/update-content-text-builder';
|
|
12
12
|
import { UpdateContentTextStyleBuilder } from './builders/update-content-text-style-builder';
|
|
13
|
+
import {
|
|
14
|
+
BannerSectionBuilder,
|
|
15
|
+
AboutSectionBuilder,
|
|
16
|
+
ContactFormBuilder,
|
|
17
|
+
DividerSectionBuilder,
|
|
18
|
+
TextSectionBuilder,
|
|
19
|
+
TestimonialSectionBuilder,
|
|
20
|
+
ImagesSectionBuilder,
|
|
21
|
+
ShapesSectionBuilder,
|
|
22
|
+
SocialLinksBuilder,
|
|
23
|
+
ImageGalleryBuilder,
|
|
24
|
+
ProfileSectionBuilder,
|
|
25
|
+
MailingListSectionBuilder,
|
|
26
|
+
ImageSectionBuilder,
|
|
27
|
+
ButtonSectionBuilder,
|
|
28
|
+
DeleteSectionBuilder,
|
|
29
|
+
MoveSectionBuilder,
|
|
30
|
+
} from './builders/section-builders';
|
|
31
|
+
import { AddPageBuilder } from './builders/add-page-builder';
|
|
32
|
+
import { RemovePageBuilder } from './builders/remove-page-builder';
|
|
13
33
|
import type { Logger } from './logger';
|
|
14
34
|
|
|
15
35
|
type BuilderConstructor = new (
|
|
@@ -21,6 +41,68 @@ type BuilderConstructor = new (
|
|
|
21
41
|
const getBuilderRegistry = (): Record<BuilderType, BuilderConstructor> => ({
|
|
22
42
|
[BUILDER_TYPES.UPDATE_CONTENT_TEXT]: UpdateContentTextBuilder,
|
|
23
43
|
[BUILDER_TYPES.UPDATE_CONTENT_TEXT_STYLE]: UpdateContentTextStyleBuilder,
|
|
44
|
+
|
|
45
|
+
// Section builders (create)
|
|
46
|
+
[BUILDER_TYPES.CREATE_BANNER_SECTION]: BannerSectionBuilder,
|
|
47
|
+
[BUILDER_TYPES.CREATE_ABOUT_SECTION]: AboutSectionBuilder,
|
|
48
|
+
[BUILDER_TYPES.CREATE_CONTACT_FORM]: ContactFormBuilder,
|
|
49
|
+
[BUILDER_TYPES.CREATE_DIVIDER_SECTION]: DividerSectionBuilder,
|
|
50
|
+
[BUILDER_TYPES.CREATE_TEXT]: TextSectionBuilder,
|
|
51
|
+
[BUILDER_TYPES.CREATE_TESTIMONIAL_SECTION]: TestimonialSectionBuilder,
|
|
52
|
+
[BUILDER_TYPES.CREATE_IMAGES_SECTION]: ImagesSectionBuilder,
|
|
53
|
+
[BUILDER_TYPES.CREATE_SHAPES_SECTION]: ShapesSectionBuilder,
|
|
54
|
+
[BUILDER_TYPES.CREATE_SOCIAL_LINKS]: SocialLinksBuilder,
|
|
55
|
+
[BUILDER_TYPES.CREATE_IMAGE_GALLERY]: ImageGalleryBuilder,
|
|
56
|
+
[BUILDER_TYPES.CREATE_PROFILE]: ProfileSectionBuilder,
|
|
57
|
+
[BUILDER_TYPES.CREATE_MAILING_LIST]: MailingListSectionBuilder,
|
|
58
|
+
[BUILDER_TYPES.CREATE_IMAGE]: ImageSectionBuilder,
|
|
59
|
+
[BUILDER_TYPES.CREATE_GENERAL_LINK]: ButtonSectionBuilder,
|
|
60
|
+
[BUILDER_TYPES.CREATE_WEBSITE]: ButtonSectionBuilder,
|
|
61
|
+
[BUILDER_TYPES.CREATE_EMAIL]: ButtonSectionBuilder,
|
|
62
|
+
[BUILDER_TYPES.CREATE_PHONE]: ButtonSectionBuilder,
|
|
63
|
+
[BUILDER_TYPES.CREATE_FACEBOOK]: ButtonSectionBuilder,
|
|
64
|
+
[BUILDER_TYPES.CREATE_X]: ButtonSectionBuilder,
|
|
65
|
+
[BUILDER_TYPES.CREATE_INSTAGRAM]: ButtonSectionBuilder,
|
|
66
|
+
[BUILDER_TYPES.CREATE_YOUTUBE]: ButtonSectionBuilder,
|
|
67
|
+
[BUILDER_TYPES.CREATE_LINKEDIN]: ButtonSectionBuilder,
|
|
68
|
+
[BUILDER_TYPES.CREATE_PINTEREST]: ButtonSectionBuilder,
|
|
69
|
+
[BUILDER_TYPES.CREATE_TWITCH]: ButtonSectionBuilder,
|
|
70
|
+
[BUILDER_TYPES.CREATE_TIKTOK]: ButtonSectionBuilder,
|
|
71
|
+
|
|
72
|
+
// Section builders (update)
|
|
73
|
+
[BUILDER_TYPES.UPDATE_BANNER_SECTION]: BannerSectionBuilder,
|
|
74
|
+
[BUILDER_TYPES.UPDATE_ABOUT_SECTION]: AboutSectionBuilder,
|
|
75
|
+
[BUILDER_TYPES.UPDATE_CONTACT_FORM]: ContactFormBuilder,
|
|
76
|
+
[BUILDER_TYPES.UPDATE_DIVIDER_SECTION]: DividerSectionBuilder,
|
|
77
|
+
[BUILDER_TYPES.UPDATE_TEXT]: TextSectionBuilder,
|
|
78
|
+
[BUILDER_TYPES.UPDATE_TESTIMONIAL_SECTION]: TestimonialSectionBuilder,
|
|
79
|
+
[BUILDER_TYPES.UPDATE_IMAGES_SECTION]: ImagesSectionBuilder,
|
|
80
|
+
[BUILDER_TYPES.UPDATE_SHAPES_SECTION]: ShapesSectionBuilder,
|
|
81
|
+
[BUILDER_TYPES.UPDATE_SOCIAL_LINKS]: SocialLinksBuilder,
|
|
82
|
+
[BUILDER_TYPES.UPDATE_IMAGE_GALLERY]: ImageGalleryBuilder,
|
|
83
|
+
[BUILDER_TYPES.UPDATE_PROFILE]: ProfileSectionBuilder,
|
|
84
|
+
[BUILDER_TYPES.UPDATE_MAILING_LIST]: MailingListSectionBuilder,
|
|
85
|
+
[BUILDER_TYPES.UPDATE_IMAGE]: ImageSectionBuilder,
|
|
86
|
+
[BUILDER_TYPES.UPDATE_GENERAL_LINK]: ButtonSectionBuilder,
|
|
87
|
+
[BUILDER_TYPES.UPDATE_WEBSITE]: ButtonSectionBuilder,
|
|
88
|
+
[BUILDER_TYPES.UPDATE_EMAIL]: ButtonSectionBuilder,
|
|
89
|
+
[BUILDER_TYPES.UPDATE_PHONE]: ButtonSectionBuilder,
|
|
90
|
+
[BUILDER_TYPES.UPDATE_FACEBOOK]: ButtonSectionBuilder,
|
|
91
|
+
[BUILDER_TYPES.UPDATE_X]: ButtonSectionBuilder,
|
|
92
|
+
[BUILDER_TYPES.UPDATE_INSTAGRAM]: ButtonSectionBuilder,
|
|
93
|
+
[BUILDER_TYPES.UPDATE_YOUTUBE]: ButtonSectionBuilder,
|
|
94
|
+
[BUILDER_TYPES.UPDATE_LINKEDIN]: ButtonSectionBuilder,
|
|
95
|
+
[BUILDER_TYPES.UPDATE_PINTEREST]: ButtonSectionBuilder,
|
|
96
|
+
[BUILDER_TYPES.UPDATE_TWITCH]: ButtonSectionBuilder,
|
|
97
|
+
[BUILDER_TYPES.UPDATE_TIKTOK]: ButtonSectionBuilder,
|
|
98
|
+
|
|
99
|
+
// Section-level operations
|
|
100
|
+
[BUILDER_TYPES.DELETE_SECTION]: DeleteSectionBuilder,
|
|
101
|
+
[BUILDER_TYPES.MOVE_SECTION]: MoveSectionBuilder,
|
|
102
|
+
|
|
103
|
+
// Page-level operations
|
|
104
|
+
[BUILDER_TYPES.ADD_PAGE]: AddPageBuilder,
|
|
105
|
+
[BUILDER_TYPES.REMOVE_PAGE]: RemovePageBuilder,
|
|
24
106
|
});
|
|
25
107
|
|
|
26
108
|
let builderRegistry: Record<BuilderType, BuilderConstructor> | null = null;
|
|
@@ -28,7 +110,7 @@ let builderRegistry: Record<BuilderType, BuilderConstructor> | null = null;
|
|
|
28
110
|
const resolveBuilder = (
|
|
29
111
|
request: MetadataBuilderRequest,
|
|
30
112
|
logger?: Logger,
|
|
31
|
-
): BaseMetadataBuilder => {
|
|
113
|
+
): BaseMetadataBuilder | null => {
|
|
32
114
|
if (!builderRegistry) {
|
|
33
115
|
builderRegistry = getBuilderRegistry();
|
|
34
116
|
}
|
|
@@ -36,9 +118,9 @@ const resolveBuilder = (
|
|
|
36
118
|
const BuilderClass = builderRegistry[request.type];
|
|
37
119
|
|
|
38
120
|
if (!BuilderClass) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
121
|
+
console.error(`No builder registered for request type: "${request.type}"`);
|
|
122
|
+
|
|
123
|
+
return null;
|
|
42
124
|
}
|
|
43
125
|
|
|
44
126
|
return new BuilderClass(request, logger);
|
|
@@ -57,6 +139,16 @@ export class MetadataExecutor {
|
|
|
57
139
|
for (const request of requests) {
|
|
58
140
|
const builder = resolveBuilder(request, logger);
|
|
59
141
|
|
|
142
|
+
if (!builder) {
|
|
143
|
+
results.push({
|
|
144
|
+
request,
|
|
145
|
+
model,
|
|
146
|
+
errors: [`No builder found for request type: "${request.type}"`],
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
|
|
60
152
|
const result = await builder.buildAsync(model);
|
|
61
153
|
|
|
62
154
|
results.push(result);
|
|
@@ -4,6 +4,68 @@ import type { Logger } from './logger';
|
|
|
4
4
|
export const BUILDER_TYPES = {
|
|
5
5
|
UPDATE_CONTENT_TEXT: 'update-content-text',
|
|
6
6
|
UPDATE_CONTENT_TEXT_STYLE: 'update-content-text-style',
|
|
7
|
+
|
|
8
|
+
// Per-section builder types (create)
|
|
9
|
+
CREATE_BANNER_SECTION: 'create-banner-section',
|
|
10
|
+
CREATE_ABOUT_SECTION: 'create-about-section',
|
|
11
|
+
CREATE_CONTACT_FORM: 'create-contact-form',
|
|
12
|
+
CREATE_DIVIDER_SECTION: 'create-divider-section',
|
|
13
|
+
CREATE_TEXT: 'create-text',
|
|
14
|
+
CREATE_TESTIMONIAL_SECTION: 'create-testimonial-section',
|
|
15
|
+
CREATE_IMAGES_SECTION: 'create-images-section',
|
|
16
|
+
CREATE_SHAPES_SECTION: 'create-shapes-section',
|
|
17
|
+
CREATE_SOCIAL_LINKS: 'create-social-links',
|
|
18
|
+
CREATE_IMAGE_GALLERY: 'create-image-gallery',
|
|
19
|
+
CREATE_PROFILE: 'create-profile',
|
|
20
|
+
CREATE_MAILING_LIST: 'create-mailing-list',
|
|
21
|
+
CREATE_IMAGE: 'create-image',
|
|
22
|
+
CREATE_GENERAL_LINK: 'create-general-link',
|
|
23
|
+
CREATE_WEBSITE: 'create-website',
|
|
24
|
+
CREATE_EMAIL: 'create-email',
|
|
25
|
+
CREATE_PHONE: 'create-phone',
|
|
26
|
+
CREATE_FACEBOOK: 'create-facebook',
|
|
27
|
+
CREATE_X: 'create-x',
|
|
28
|
+
CREATE_INSTAGRAM: 'create-instagram',
|
|
29
|
+
CREATE_YOUTUBE: 'create-youtube',
|
|
30
|
+
CREATE_LINKEDIN: 'create-linkedin',
|
|
31
|
+
CREATE_PINTEREST: 'create-pinterest',
|
|
32
|
+
CREATE_TWITCH: 'create-twitch',
|
|
33
|
+
CREATE_TIKTOK: 'create-tiktok',
|
|
34
|
+
|
|
35
|
+
// Per-section builder types (update)
|
|
36
|
+
UPDATE_BANNER_SECTION: 'update-banner-section',
|
|
37
|
+
UPDATE_ABOUT_SECTION: 'update-about-section',
|
|
38
|
+
UPDATE_CONTACT_FORM: 'update-contact-form',
|
|
39
|
+
UPDATE_DIVIDER_SECTION: 'update-divider-section',
|
|
40
|
+
UPDATE_TEXT: 'update-text',
|
|
41
|
+
UPDATE_TESTIMONIAL_SECTION: 'update-testimonial-section',
|
|
42
|
+
UPDATE_IMAGES_SECTION: 'update-images-section',
|
|
43
|
+
UPDATE_SHAPES_SECTION: 'update-shapes-section',
|
|
44
|
+
UPDATE_SOCIAL_LINKS: 'update-social-links',
|
|
45
|
+
UPDATE_IMAGE_GALLERY: 'update-image-gallery',
|
|
46
|
+
UPDATE_PROFILE: 'update-profile',
|
|
47
|
+
UPDATE_MAILING_LIST: 'update-mailing-list',
|
|
48
|
+
UPDATE_IMAGE: 'update-image',
|
|
49
|
+
UPDATE_GENERAL_LINK: 'update-general-link',
|
|
50
|
+
UPDATE_WEBSITE: 'update-website',
|
|
51
|
+
UPDATE_EMAIL: 'update-email',
|
|
52
|
+
UPDATE_PHONE: 'update-phone',
|
|
53
|
+
UPDATE_FACEBOOK: 'update-facebook',
|
|
54
|
+
UPDATE_X: 'update-x',
|
|
55
|
+
UPDATE_INSTAGRAM: 'update-instagram',
|
|
56
|
+
UPDATE_YOUTUBE: 'update-youtube',
|
|
57
|
+
UPDATE_LINKEDIN: 'update-linkedin',
|
|
58
|
+
UPDATE_PINTEREST: 'update-pinterest',
|
|
59
|
+
UPDATE_TWITCH: 'update-twitch',
|
|
60
|
+
UPDATE_TIKTOK: 'update-tiktok',
|
|
61
|
+
|
|
62
|
+
// Section-level operations
|
|
63
|
+
DELETE_SECTION: 'delete-section',
|
|
64
|
+
MOVE_SECTION: 'move-section',
|
|
65
|
+
|
|
66
|
+
// Page-level operations
|
|
67
|
+
ADD_PAGE: 'add-page',
|
|
68
|
+
REMOVE_PAGE: 'remove-page',
|
|
7
69
|
} as const;
|
|
8
70
|
|
|
9
71
|
export type BuilderType = (typeof BUILDER_TYPES)[keyof typeof BUILDER_TYPES];
|
|
@@ -1,19 +1,61 @@
|
|
|
1
1
|
import type { AiAssistantToolCall } from '../../clients/ai-assistant-client';
|
|
2
|
+
import type { SectionType } from './section-tool-arguments';
|
|
2
3
|
|
|
3
|
-
// Tool names
|
|
4
|
+
// Tool names — must match the function names generated by the AI pipeline.
|
|
5
|
+
// Text element tools use camelCase names.
|
|
6
|
+
// Section tools follow the pattern: build_{sectionType}_section
|
|
7
|
+
// where sectionType matches the ContentType value (e.g. 'banner-section', 'profile').
|
|
8
|
+
// The mode ('create' | 'update') is a field in the tool arguments, not the tool name.
|
|
4
9
|
export const AI_ASSISTANT_TOOL_NAMES = {
|
|
10
|
+
// Text element agent tools
|
|
5
11
|
UPDATE_TEXT: 'updateText',
|
|
6
12
|
UPDATE_STYLE: 'updateStyle',
|
|
13
|
+
|
|
14
|
+
// Website builder agent tools — unified build
|
|
15
|
+
BUILD_PROFILE_SECTION: 'build_profile_section',
|
|
16
|
+
BUILD_TEXT_SECTION: 'build_text_section',
|
|
17
|
+
BUILD_IMAGE_SECTION: 'build_image_section',
|
|
18
|
+
BUILD_IMAGE_GALLERY_SECTION: 'build_image-gallery_section',
|
|
19
|
+
BUILD_GENERAL_LINK_SECTION: 'build_general-link_section',
|
|
20
|
+
BUILD_WEBSITE_SECTION: 'build_website_section',
|
|
21
|
+
BUILD_EMAIL_SECTION: 'build_email_section',
|
|
22
|
+
BUILD_PHONE_SECTION: 'build_phone_section',
|
|
23
|
+
BUILD_FACEBOOK_SECTION: 'build_facebook_section',
|
|
24
|
+
BUILD_X_SECTION: 'build_x_section',
|
|
25
|
+
BUILD_INSTAGRAM_SECTION: 'build_instagram_section',
|
|
26
|
+
BUILD_YOUTUBE_SECTION: 'build_youtube_section',
|
|
27
|
+
BUILD_LINKEDIN_SECTION: 'build_linkedin_section',
|
|
28
|
+
BUILD_PINTEREST_SECTION: 'build_pinterest_section',
|
|
29
|
+
BUILD_TWITCH_SECTION: 'build_twitch_section',
|
|
30
|
+
BUILD_TIKTOK_SECTION: 'build_tiktok_section',
|
|
31
|
+
BUILD_SOCIAL_LINKS_SECTION: 'build_social-links_section',
|
|
32
|
+
BUILD_MAILING_LIST_SECTION: 'build_mailing-list_section',
|
|
33
|
+
BUILD_CONTACT_FORM_SECTION: 'build_contact-form_section',
|
|
34
|
+
BUILD_BANNER_SECTION: 'build_banner_section',
|
|
35
|
+
BUILD_ABOUT_SECTION: 'build_about_section',
|
|
36
|
+
BUILD_IMAGES_SECTION: 'build_images_section',
|
|
37
|
+
BUILD_SHAPES_SECTION: 'build_shapes_section',
|
|
38
|
+
BUILD_TESTIMONIAL_SECTION: 'build_testimonial_section',
|
|
39
|
+
BUILD_DIVIDER_SECTION: 'build_divider_section',
|
|
40
|
+
|
|
41
|
+
// Section-level operation tools
|
|
42
|
+
DELETE_SECTION: 'delete_section',
|
|
43
|
+
MOVE_SECTION: 'move_section',
|
|
44
|
+
|
|
45
|
+
// Page-level operation tools
|
|
46
|
+
ADD_PAGE: 'add_page',
|
|
47
|
+
REMOVE_PAGE: 'remove_page',
|
|
7
48
|
} as const;
|
|
8
49
|
|
|
9
50
|
export type AiAssistantToolName =
|
|
10
51
|
(typeof AI_ASSISTANT_TOOL_NAMES)[keyof typeof AI_ASSISTANT_TOOL_NAMES];
|
|
11
52
|
|
|
12
|
-
//
|
|
53
|
+
// Unified parsed tool call — covers both text element and section tool calls.
|
|
54
|
+
// The `function` name is the primary identity and routing mechanism.
|
|
13
55
|
export interface ParsedToolCall {
|
|
14
56
|
toolId: string;
|
|
15
|
-
function:
|
|
16
|
-
arguments:
|
|
57
|
+
function: string;
|
|
58
|
+
arguments: Record<string, unknown>;
|
|
17
59
|
usage_type?: 'free' | 'paid';
|
|
18
60
|
}
|
|
19
61
|
|
|
@@ -39,23 +81,105 @@ export interface UpdateStyleToolArguments extends BaseArguments {
|
|
|
39
81
|
};
|
|
40
82
|
}
|
|
41
83
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
84
|
+
// Maps each section tool name to its SectionType.
|
|
85
|
+
// Mode is now determined from the tool arguments, not the tool name.
|
|
86
|
+
export const SECTION_TOOL_MAP: Record<string, { sectionType: SectionType }> = {
|
|
87
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_PROFILE_SECTION]: { sectionType: 'profile' },
|
|
88
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_TEXT_SECTION]: { sectionType: 'text' },
|
|
89
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_IMAGE_SECTION]: { sectionType: 'image' },
|
|
90
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_IMAGE_GALLERY_SECTION]: {
|
|
91
|
+
sectionType: 'image-gallery',
|
|
92
|
+
},
|
|
93
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_GENERAL_LINK_SECTION]: {
|
|
94
|
+
sectionType: 'general-link',
|
|
95
|
+
},
|
|
96
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_WEBSITE_SECTION]: { sectionType: 'website' },
|
|
97
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_EMAIL_SECTION]: { sectionType: 'email' },
|
|
98
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_PHONE_SECTION]: { sectionType: 'phone' },
|
|
99
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_FACEBOOK_SECTION]: { sectionType: 'facebook' },
|
|
100
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_X_SECTION]: { sectionType: 'x' },
|
|
101
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_INSTAGRAM_SECTION]: {
|
|
102
|
+
sectionType: 'instagram',
|
|
103
|
+
},
|
|
104
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_YOUTUBE_SECTION]: { sectionType: 'youtube' },
|
|
105
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_LINKEDIN_SECTION]: { sectionType: 'linkedin' },
|
|
106
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_PINTEREST_SECTION]: {
|
|
107
|
+
sectionType: 'pinterest',
|
|
108
|
+
},
|
|
109
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_TWITCH_SECTION]: { sectionType: 'twitch' },
|
|
110
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_TIKTOK_SECTION]: { sectionType: 'tiktok' },
|
|
111
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_SOCIAL_LINKS_SECTION]: {
|
|
112
|
+
sectionType: 'social-links',
|
|
113
|
+
},
|
|
114
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_MAILING_LIST_SECTION]: {
|
|
115
|
+
sectionType: 'mailing-list',
|
|
116
|
+
},
|
|
117
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_CONTACT_FORM_SECTION]: {
|
|
118
|
+
sectionType: 'contact-form',
|
|
119
|
+
},
|
|
120
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_BANNER_SECTION]: {
|
|
121
|
+
sectionType: 'banner-section',
|
|
122
|
+
},
|
|
123
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_ABOUT_SECTION]: {
|
|
124
|
+
sectionType: 'about-section',
|
|
125
|
+
},
|
|
126
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_IMAGES_SECTION]: {
|
|
127
|
+
sectionType: 'images-section',
|
|
128
|
+
},
|
|
129
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_SHAPES_SECTION]: {
|
|
130
|
+
sectionType: 'shapes-section',
|
|
131
|
+
},
|
|
132
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_TESTIMONIAL_SECTION]: {
|
|
133
|
+
sectionType: 'testimonial-section',
|
|
134
|
+
},
|
|
135
|
+
[AI_ASSISTANT_TOOL_NAMES.BUILD_DIVIDER_SECTION]: {
|
|
136
|
+
sectionType: 'divider-section',
|
|
137
|
+
},
|
|
49
138
|
};
|
|
50
139
|
|
|
51
|
-
export
|
|
52
|
-
|
|
140
|
+
export interface DeleteSectionArguments {
|
|
141
|
+
content_id: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface MoveSectionArguments {
|
|
145
|
+
content_id: string;
|
|
146
|
+
position: number;
|
|
147
|
+
target_page_id?: string;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export interface AddPageArguments {
|
|
151
|
+
page_id: string;
|
|
152
|
+
page_name: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export interface RemovePageArguments {
|
|
156
|
+
page_id: string;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export const parseToolCalls = (
|
|
160
|
+
toolCalls: AiAssistantToolCall[],
|
|
53
161
|
): ParsedToolCall[] => {
|
|
54
|
-
if (!
|
|
162
|
+
if (!toolCalls || toolCalls.length === 0) {
|
|
55
163
|
return [];
|
|
56
164
|
}
|
|
57
165
|
|
|
58
|
-
return
|
|
59
|
-
|
|
60
|
-
|
|
166
|
+
return toolCalls
|
|
167
|
+
.map((toolCall): ParsedToolCall | null => {
|
|
168
|
+
try {
|
|
169
|
+
return {
|
|
170
|
+
toolId: toolCall.toolId,
|
|
171
|
+
function: toolCall.function,
|
|
172
|
+
arguments: JSON.parse(toolCall.arguments) as Record<string, unknown>,
|
|
173
|
+
usage_type: toolCall.usage_type,
|
|
174
|
+
};
|
|
175
|
+
} catch (error) {
|
|
176
|
+
console.warn(
|
|
177
|
+
`[parseToolCalls] Failed to parse arguments for ${toolCall.function} (${toolCall.toolId}):`,
|
|
178
|
+
error,
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
})
|
|
184
|
+
.filter((tc): tc is ParsedToolCall => tc !== null);
|
|
61
185
|
};
|