@designcrowd/library.brand-page 6.2.3 → 6.2.4

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 (112) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-Cn0M-eZ1.js → CreatedOnBrandCrowd-de-de-ystrO2LW.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DRLMSDZr.js → CreatedOnBrandCrowd-en-us-BU7hNzTZ.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BglTu73U.js → CreatedOnBrandCrowd-es-es-CbuxneQ3.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-Bj6YZ_el.js → CreatedOnBrandCrowd-fr-ca-BuNUGOFr.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-Bj6YZ_el.js → CreatedOnBrandCrowd-fr-fr-BuNUGOFr.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DEoOmQ1F.js → CreatedOnBrandCrowd-pt-br-BehL88mc.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DEoOmQ1F.js → CreatedOnBrandCrowd-pt-pt-BehL88mc.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-BZ7gTt4Z.js → CreatedOnDcom-de-de-CMxjFZt9.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-CD6Km5sH.js → CreatedOnDcom-en-us-2Cf6WBvx.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-CNpZHvEl.js → CreatedOnDcom-es-es-CATNnbTq.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-URS-ydJ1.js → CreatedOnDcom-fr-ca-DQtMfB-a.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-D2AVeA3H.js → CreatedOnDcom-fr-fr-C1_FWOQf.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-C32frnFs.js → CreatedOnDcom-pt-br-C0QOCW0L.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-TDYGjRXS.js → CreatedOnDcom-pt-pt-lHD-p6o4.js} +1 -1
  15. package/lib/src/brand-page/models/brand-page-context.model.d.ts +5 -0
  16. package/lib/src/brand-page/models/brand-page-context.model.js +8 -1
  17. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +21 -0
  18. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +21 -0
  19. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +7 -0
  20. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +21 -0
  21. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +22 -1
  22. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +21 -0
  23. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +21 -0
  24. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +21 -0
  25. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +21 -0
  26. package/lib/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.d.ts +10 -0
  27. package/lib/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.js +11 -0
  28. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +14 -4
  29. package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.d.ts +9 -2
  30. package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.js +20 -0
  31. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +21 -0
  32. package/lib/src/clients/ai-assistant-client.d.ts +1 -0
  33. package/lib/src/clients/ai-assistant-client.js +1 -0
  34. package/lib/src/index.mjs +224 -223
  35. package/lib/src/{lib-Dm9AuOJL.js → lib-CqHUUPUW.js} +21920 -21691
  36. package/lib/src/metadata-builder/builders/global-font-propagation.d.ts +41 -0
  37. package/lib/src/metadata-builder/builders/global-font-propagation.js +146 -0
  38. package/lib/src/metadata-builder/builders/global-styles-builder.js +29 -1
  39. package/lib/src/metadata-builder/builders/header-builder.js +8 -0
  40. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +13 -0
  41. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +49 -0
  42. package/lib/src/metadata-builder/builders/section-builders/index.d.ts +1 -0
  43. package/lib/src/metadata-builder/builders/section-builders/index.js +1 -0
  44. package/lib/src/metadata-builder/builders/section-builders/support-me-builder.d.ts +8 -0
  45. package/lib/src/metadata-builder/builders/section-builders/support-me-builder.js +25 -0
  46. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +5 -2
  47. package/lib/src/metadata-builder/builders/section-field-maps.js +15 -0
  48. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +6 -1
  49. package/lib/src/metadata-builder/builders/section-field-utils.js +48 -12
  50. package/lib/src/metadata-builder/builders/section-rules/support-me.rules.d.ts +2 -0
  51. package/lib/src/metadata-builder/builders/section-rules/support-me.rules.js +17 -0
  52. package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +9 -0
  53. package/lib/src/metadata-builder/helpers/rte.helpers.js +60 -1
  54. package/lib/src/metadata-builder/metadata-executor.js +3 -1
  55. package/lib/src/metadata-builder/models.d.ts +2 -0
  56. package/lib/src/metadata-builder/models.js +2 -0
  57. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +1 -0
  58. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +4 -0
  59. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +14 -2
  60. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +1 -1
  61. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +1 -1
  62. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +21 -0
  63. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +1 -1
  64. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +1 -1
  65. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +1 -1
  66. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +1 -1
  67. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +1 -1
  68. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +21 -0
  69. package/lib/src/shared/page-settings/components/delete-page-modal/DeletePageModal.mixin.d.ts +1 -1
  70. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +21 -0
  71. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +21 -0
  72. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +28 -0
  73. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +21 -0
  74. package/lib/src/shared/style-settings/button-style-preset.d.ts +12 -0
  75. package/lib/src/shared/style-settings/button-style-preset.js +39 -0
  76. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +21 -0
  77. package/lib/src/shared/style-settings/store/style-settings-store.js +6 -32
  78. package/lib/src/utils/minify-brand-page-metadata.d.ts +9 -0
  79. package/lib/src/utils/minify-brand-page-metadata.js +23 -1
  80. package/package.json +1 -12
  81. package/src/brand-page/models/brand-page-context.model.ts +14 -1
  82. package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +1 -1
  83. package/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.test.ts +82 -0
  84. package/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.ts +19 -0
  85. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +18 -4
  86. package/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.ts +30 -0
  87. package/src/clients/ai-assistant-client.ts +1 -0
  88. package/src/metadata-builder/builders/global-font-propagation.test.ts +401 -0
  89. package/src/metadata-builder/builders/global-font-propagation.ts +238 -0
  90. package/src/metadata-builder/builders/global-styles-builder.test.ts +107 -0
  91. package/src/metadata-builder/builders/global-styles-builder.ts +38 -1
  92. package/src/metadata-builder/builders/header-builder.test.ts +45 -0
  93. package/src/metadata-builder/builders/header-builder.ts +20 -0
  94. package/src/metadata-builder/builders/reorder-pages-builder.ts +80 -0
  95. package/src/metadata-builder/builders/section-builders/index.ts +1 -0
  96. package/src/metadata-builder/builders/section-builders/support-me-builder.test.ts +177 -0
  97. package/src/metadata-builder/builders/section-builders/support-me-builder.ts +43 -0
  98. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +5 -2
  99. package/src/metadata-builder/builders/section-field-maps.ts +18 -0
  100. package/src/metadata-builder/builders/section-field-utils.test.ts +83 -0
  101. package/src/metadata-builder/builders/section-field-utils.ts +69 -18
  102. package/src/metadata-builder/builders/section-rules/support-me.rules.ts +39 -0
  103. package/src/metadata-builder/helpers/rte.helpers.ts +82 -1
  104. package/src/metadata-builder/metadata-executor.ts +3 -0
  105. package/src/metadata-builder/models.ts +2 -0
  106. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +4 -0
  107. package/src/metadata-builder/parsers/section-tool-arguments.ts +14 -1
  108. package/src/shared/style-settings/button-style-preset.test.ts +67 -0
  109. package/src/shared/style-settings/button-style-preset.ts +56 -0
  110. package/src/shared/style-settings/store/style-settings-store.ts +9 -38
  111. package/src/utils/minify-brand-page-metadata.test.ts +166 -1
  112. package/src/utils/minify-brand-page-metadata.ts +31 -1
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Dm9AuOJL.js";
2
+ import { _ as t } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, h = {
4
4
  width: "275",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Dm9AuOJL.js";
2
+ import { _ as t } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, h = {
4
4
  width: "251",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Dm9AuOJL.js";
2
+ import { _ as t } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, h = {
4
4
  width: "250",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Dm9AuOJL.js";
2
+ import { _ as t } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Dm9AuOJL.js";
2
+ import { _ as t } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Dm9AuOJL.js";
2
+ import { _ as t } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Dm9AuOJL.js";
2
+ import { _ as t } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Dm9AuOJL.js";
2
+ import { _ as e } from "./lib-CqHUUPUW.js";
3
3
  const M = {}, Z = {
4
4
  width: "242",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Dm9AuOJL.js";
2
+ import { _ as e } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, M = {
4
4
  width: "231",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Dm9AuOJL.js";
2
+ import { _ as e } from "./lib-CqHUUPUW.js";
3
3
  const M = {}, Z = {
4
4
  width: "230",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Dm9AuOJL.js";
2
+ import { _ as e } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Dm9AuOJL.js";
2
+ import { _ as e } from "./lib-CqHUUPUW.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-Dm9AuOJL.js";
2
+ import { _ as M } from "./lib-CqHUUPUW.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-Dm9AuOJL.js";
2
+ import { _ as M } from "./lib-CqHUUPUW.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -34,8 +34,13 @@ export interface AbTestResult {
34
34
  isVariation: boolean;
35
35
  isExcluded: boolean;
36
36
  }
37
+ export declare const AB_TEST_KEYS: {
38
+ BP_3926_FREEMIUM_WATERMARK: string;
39
+ BP_6136_V2_AI_BUILDER: string;
40
+ };
37
41
  export interface AbTest {
38
42
  bp_3926_freemium_watermark?: AbTestResult;
43
+ bp_6136_v2_ai_builder?: AbTestResult;
39
44
  }
40
45
  export declare const MEDIA_SIZES: {
41
46
  readonly size1x: "size1x";
@@ -22,8 +22,11 @@ export const AB_TEST_FLAG = {
22
22
  DCOM_WATERMARK_FLAG: 'dcom-bp-3476-new-watermark', // Replace this with preview flag key
23
23
  BC_WATERMARK_FLAG: 'bc-bp-3476-new-watermark', // Replace this with preview flag key
24
24
  };
25
- const AB_TEST_KEYS = {
25
+ export const AB_TEST_KEYS = {
26
26
  BP_3926_FREEMIUM_WATERMARK: 'bc-bp-3926-freemium-cta-in-website-editor',
27
+ // V1 (control) vs V2 (variation-1) AI website builder, sent by bc-net in the editor
28
+ // payload at load. Key must match `Bp6136V2AiBuilderStrategy.CampaignKey`.
29
+ BP_6136_V2_AI_BUILDER: 'bc-bp-6136-v2-ai-builder',
27
30
  };
28
31
  export const MEDIA_SIZES = {
29
32
  size1x: 'size1x',
@@ -45,5 +48,9 @@ export const getAbTestResults = (abtestKeyValues) => {
45
48
  if (abtestKeyValues[AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK]) {
46
49
  abTests.bp_3926_freemium_watermark = getValueType(AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK, abtestKeyValues[AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK]);
47
50
  }
51
+ // AB Test - V1 vs V2 AI website builder
52
+ if (abtestKeyValues[AB_TEST_KEYS.BP_6136_V2_AI_BUILDER]) {
53
+ abTests.bp_6136_v2_ai_builder = getValueType(AB_TEST_KEYS.BP_6136_V2_AI_BUILDER, abtestKeyValues[AB_TEST_KEYS.BP_6136_V2_AI_BUILDER]);
54
+ }
48
55
  return abTests;
49
56
  };
@@ -292,6 +292,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
292
292
  isVariation: boolean;
293
293
  isExcluded: boolean;
294
294
  } | undefined;
295
+ bp_6136_v2_ai_builder?: {
296
+ key: string;
297
+ value: string;
298
+ isControl: boolean;
299
+ isVariation: boolean;
300
+ isExcluded: boolean;
301
+ } | undefined;
295
302
  };
296
303
  isSubsequentPublish: boolean;
297
304
  isContextualUpgradeModalVisible: boolean;
@@ -367,6 +374,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
367
374
  isVariation: boolean;
368
375
  isExcluded: boolean;
369
376
  } | undefined;
377
+ bp_6136_v2_ai_builder?: {
378
+ key: string;
379
+ value: string;
380
+ isControl: boolean;
381
+ isVariation: boolean;
382
+ isExcluded: boolean;
383
+ } | undefined;
370
384
  };
371
385
  isSubsequentPublish: boolean;
372
386
  isContextualUpgradeModalVisible: boolean;
@@ -442,6 +456,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
442
456
  isVariation: boolean;
443
457
  isExcluded: boolean;
444
458
  } | undefined;
459
+ bp_6136_v2_ai_builder?: {
460
+ key: string;
461
+ value: string;
462
+ isControl: boolean;
463
+ isVariation: boolean;
464
+ isExcluded: boolean;
465
+ } | undefined;
445
466
  };
446
467
  isSubsequentPublish: boolean;
447
468
  isContextualUpgradeModalVisible: boolean;
@@ -706,6 +706,13 @@ declare const _default: import("vue").DefineComponent<{}, {
706
706
  isVariation: boolean;
707
707
  isExcluded: boolean;
708
708
  } | undefined;
709
+ bp_6136_v2_ai_builder?: {
710
+ key: string;
711
+ value: string;
712
+ isControl: boolean;
713
+ isVariation: boolean;
714
+ isExcluded: boolean;
715
+ } | undefined;
709
716
  };
710
717
  isSubsequentPublish: boolean;
711
718
  isContextualUpgradeModalVisible: boolean;
@@ -781,6 +788,13 @@ declare const _default: import("vue").DefineComponent<{}, {
781
788
  isVariation: boolean;
782
789
  isExcluded: boolean;
783
790
  } | undefined;
791
+ bp_6136_v2_ai_builder?: {
792
+ key: string;
793
+ value: string;
794
+ isControl: boolean;
795
+ isVariation: boolean;
796
+ isExcluded: boolean;
797
+ } | undefined;
784
798
  };
785
799
  isSubsequentPublish: boolean;
786
800
  isContextualUpgradeModalVisible: boolean;
@@ -856,6 +870,13 @@ declare const _default: import("vue").DefineComponent<{}, {
856
870
  isVariation: boolean;
857
871
  isExcluded: boolean;
858
872
  } | undefined;
873
+ bp_6136_v2_ai_builder?: {
874
+ key: string;
875
+ value: string;
876
+ isControl: boolean;
877
+ isVariation: boolean;
878
+ isExcluded: boolean;
879
+ } | undefined;
859
880
  };
860
881
  isSubsequentPublish: boolean;
861
882
  isContextualUpgradeModalVisible: boolean;
@@ -41,6 +41,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
41
41
  isVariation: boolean;
42
42
  isExcluded: boolean;
43
43
  } | undefined;
44
+ bp_6136_v2_ai_builder?: {
45
+ key: string;
46
+ value: string;
47
+ isControl: boolean;
48
+ isVariation: boolean;
49
+ isExcluded: boolean;
50
+ } | undefined;
44
51
  };
45
52
  }, {
46
53
  containerClientHeight: number | undefined;
@@ -78,6 +78,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
78
78
  isVariation: boolean;
79
79
  isExcluded: boolean;
80
80
  } | undefined;
81
+ bp_6136_v2_ai_builder?: {
82
+ key: string;
83
+ value: string;
84
+ isControl: boolean;
85
+ isVariation: boolean;
86
+ isExcluded: boolean;
87
+ } | undefined;
81
88
  };
82
89
  isSubsequentPublish: boolean;
83
90
  isContextualUpgradeModalVisible: boolean;
@@ -153,6 +160,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
153
160
  isVariation: boolean;
154
161
  isExcluded: boolean;
155
162
  } | undefined;
163
+ bp_6136_v2_ai_builder?: {
164
+ key: string;
165
+ value: string;
166
+ isControl: boolean;
167
+ isVariation: boolean;
168
+ isExcluded: boolean;
169
+ } | undefined;
156
170
  };
157
171
  isSubsequentPublish: boolean;
158
172
  isContextualUpgradeModalVisible: boolean;
@@ -228,6 +242,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
228
242
  isVariation: boolean;
229
243
  isExcluded: boolean;
230
244
  } | undefined;
245
+ bp_6136_v2_ai_builder?: {
246
+ key: string;
247
+ value: string;
248
+ isControl: boolean;
249
+ isVariation: boolean;
250
+ isExcluded: boolean;
251
+ } | undefined;
231
252
  };
232
253
  isSubsequentPublish: boolean;
233
254
  isContextualUpgradeModalVisible: boolean;
@@ -94,6 +94,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
94
94
  isVariation: boolean;
95
95
  isExcluded: boolean;
96
96
  } | undefined;
97
+ bp_6136_v2_ai_builder?: {
98
+ key: string;
99
+ value: string;
100
+ isControl: boolean;
101
+ isVariation: boolean;
102
+ isExcluded: boolean;
103
+ } | undefined;
97
104
  };
98
105
  isSubsequentPublish: boolean;
99
106
  isContextualUpgradeModalVisible: boolean;
@@ -169,6 +176,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
169
176
  isVariation: boolean;
170
177
  isExcluded: boolean;
171
178
  } | undefined;
179
+ bp_6136_v2_ai_builder?: {
180
+ key: string;
181
+ value: string;
182
+ isControl: boolean;
183
+ isVariation: boolean;
184
+ isExcluded: boolean;
185
+ } | undefined;
172
186
  };
173
187
  isSubsequentPublish: boolean;
174
188
  isContextualUpgradeModalVisible: boolean;
@@ -244,6 +258,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
244
258
  isVariation: boolean;
245
259
  isExcluded: boolean;
246
260
  } | undefined;
261
+ bp_6136_v2_ai_builder?: {
262
+ key: string;
263
+ value: string;
264
+ isControl: boolean;
265
+ isVariation: boolean;
266
+ isExcluded: boolean;
267
+ } | undefined;
247
268
  };
248
269
  isSubsequentPublish: boolean;
249
270
  isContextualUpgradeModalVisible: boolean;
@@ -554,9 +575,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
554
575
  }>> & Readonly<{
555
576
  "onUpdate-settings"?: ((...args: any[]) => any) | undefined;
556
577
  }>, {
557
- brandPageType: string;
558
578
  pageTitle: string;
559
579
  designDraftToken: string;
580
+ brandPageType: string;
560
581
  pageDescription: string;
561
582
  isMaker: boolean;
562
583
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -99,6 +99,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
99
99
  isVariation: boolean;
100
100
  isExcluded: boolean;
101
101
  } | undefined;
102
+ bp_6136_v2_ai_builder?: {
103
+ key: string;
104
+ value: string;
105
+ isControl: boolean;
106
+ isVariation: boolean;
107
+ isExcluded: boolean;
108
+ } | undefined;
102
109
  };
103
110
  isSubsequentPublish: boolean;
104
111
  isContextualUpgradeModalVisible: boolean;
@@ -174,6 +181,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
174
181
  isVariation: boolean;
175
182
  isExcluded: boolean;
176
183
  } | undefined;
184
+ bp_6136_v2_ai_builder?: {
185
+ key: string;
186
+ value: string;
187
+ isControl: boolean;
188
+ isVariation: boolean;
189
+ isExcluded: boolean;
190
+ } | undefined;
177
191
  };
178
192
  isSubsequentPublish: boolean;
179
193
  isContextualUpgradeModalVisible: boolean;
@@ -249,6 +263,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
249
263
  isVariation: boolean;
250
264
  isExcluded: boolean;
251
265
  } | undefined;
266
+ bp_6136_v2_ai_builder?: {
267
+ key: string;
268
+ value: string;
269
+ isControl: boolean;
270
+ isVariation: boolean;
271
+ isExcluded: boolean;
272
+ } | undefined;
252
273
  };
253
274
  isSubsequentPublish: boolean;
254
275
  isContextualUpgradeModalVisible: boolean;
@@ -80,6 +80,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
80
80
  isVariation: boolean;
81
81
  isExcluded: boolean;
82
82
  } | undefined;
83
+ bp_6136_v2_ai_builder?: {
84
+ key: string;
85
+ value: string;
86
+ isControl: boolean;
87
+ isVariation: boolean;
88
+ isExcluded: boolean;
89
+ } | undefined;
83
90
  };
84
91
  isSubsequentPublish: boolean;
85
92
  isContextualUpgradeModalVisible: boolean;
@@ -155,6 +162,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
155
162
  isVariation: boolean;
156
163
  isExcluded: boolean;
157
164
  } | undefined;
165
+ bp_6136_v2_ai_builder?: {
166
+ key: string;
167
+ value: string;
168
+ isControl: boolean;
169
+ isVariation: boolean;
170
+ isExcluded: boolean;
171
+ } | undefined;
158
172
  };
159
173
  isSubsequentPublish: boolean;
160
174
  isContextualUpgradeModalVisible: boolean;
@@ -230,6 +244,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
230
244
  isVariation: boolean;
231
245
  isExcluded: boolean;
232
246
  } | undefined;
247
+ bp_6136_v2_ai_builder?: {
248
+ key: string;
249
+ value: string;
250
+ isControl: boolean;
251
+ isVariation: boolean;
252
+ isExcluded: boolean;
253
+ } | undefined;
233
254
  };
234
255
  isSubsequentPublish: boolean;
235
256
  isContextualUpgradeModalVisible: boolean;
@@ -148,6 +148,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
148
148
  isVariation: boolean;
149
149
  isExcluded: boolean;
150
150
  } | undefined;
151
+ bp_6136_v2_ai_builder?: {
152
+ key: string;
153
+ value: string;
154
+ isControl: boolean;
155
+ isVariation: boolean;
156
+ isExcluded: boolean;
157
+ } | undefined;
151
158
  };
152
159
  isSubsequentPublish: boolean;
153
160
  isContextualUpgradeModalVisible: boolean;
@@ -223,6 +230,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
223
230
  isVariation: boolean;
224
231
  isExcluded: boolean;
225
232
  } | undefined;
233
+ bp_6136_v2_ai_builder?: {
234
+ key: string;
235
+ value: string;
236
+ isControl: boolean;
237
+ isVariation: boolean;
238
+ isExcluded: boolean;
239
+ } | undefined;
226
240
  };
227
241
  isSubsequentPublish: boolean;
228
242
  isContextualUpgradeModalVisible: boolean;
@@ -298,6 +312,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
298
312
  isVariation: boolean;
299
313
  isExcluded: boolean;
300
314
  } | undefined;
315
+ bp_6136_v2_ai_builder?: {
316
+ key: string;
317
+ value: string;
318
+ isControl: boolean;
319
+ isVariation: boolean;
320
+ isExcluded: boolean;
321
+ } | undefined;
301
322
  };
302
323
  isSubsequentPublish: boolean;
303
324
  isContextualUpgradeModalVisible: boolean;
@@ -75,6 +75,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
75
75
  isVariation: boolean;
76
76
  isExcluded: boolean;
77
77
  } | undefined;
78
+ bp_6136_v2_ai_builder?: {
79
+ key: string;
80
+ value: string;
81
+ isControl: boolean;
82
+ isVariation: boolean;
83
+ isExcluded: boolean;
84
+ } | undefined;
78
85
  };
79
86
  isSubsequentPublish: boolean;
80
87
  isContextualUpgradeModalVisible: boolean;
@@ -150,6 +157,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
150
157
  isVariation: boolean;
151
158
  isExcluded: boolean;
152
159
  } | undefined;
160
+ bp_6136_v2_ai_builder?: {
161
+ key: string;
162
+ value: string;
163
+ isControl: boolean;
164
+ isVariation: boolean;
165
+ isExcluded: boolean;
166
+ } | undefined;
153
167
  };
154
168
  isSubsequentPublish: boolean;
155
169
  isContextualUpgradeModalVisible: boolean;
@@ -225,6 +239,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
225
239
  isVariation: boolean;
226
240
  isExcluded: boolean;
227
241
  } | undefined;
242
+ bp_6136_v2_ai_builder?: {
243
+ key: string;
244
+ value: string;
245
+ isControl: boolean;
246
+ isVariation: boolean;
247
+ isExcluded: boolean;
248
+ } | undefined;
228
249
  };
229
250
  isSubsequentPublish: boolean;
230
251
  isContextualUpgradeModalVisible: boolean;
@@ -0,0 +1,10 @@
1
+ import type { AbTestResult } from '../../../brand-page/models/brand-page-context.model';
2
+ import { type AiAssistantAgentType } from '../../../clients/ai-assistant-client';
3
+ /**
4
+ * A/B test: control keeps the V1 AI website builder, variation-1 gets V2.
5
+ *
6
+ * bc-net (WebsiteMakerInteractor) buckets post-purchase users who get the AI tab at
7
+ * editor load and sends the arm in `abTests`. No arm, control and excluded all stay
8
+ * on V1, so a missing value is today's production behaviour.
9
+ */
10
+ export declare const aiBuilderAgentTypeForArm: (arm: AbTestResult | undefined) => AiAssistantAgentType;
@@ -0,0 +1,11 @@
1
+ import { AI_ASSISTANT_AGENT_TYPES, } from '../../../clients/ai-assistant-client';
2
+ /**
3
+ * A/B test: control keeps the V1 AI website builder, variation-1 gets V2.
4
+ *
5
+ * bc-net (WebsiteMakerInteractor) buckets post-purchase users who get the AI tab at
6
+ * editor load and sends the arm in `abTests`. No arm, control and excluded all stay
7
+ * on V1, so a missing value is today's production behaviour.
8
+ */
9
+ export const aiBuilderAgentTypeForArm = (arm) => arm?.isVariation
10
+ ? AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER_V2
11
+ : AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER;
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, watch, nextTick } from 'vue';
2
2
  import { getCurrentLocale } from '../../../composables/useTranslate';
3
- import { getInstance as getAiAssistantClient, AI_ASSISTANT_AGENT_TYPES, } from '../../../clients/ai-assistant-client';
3
+ import { getInstance as getAiAssistantClient, } from '../../../clients/ai-assistant-client';
4
4
  import { FabricRenderClient } from '../../../clients/fabric-render-client';
5
5
  import { parseLogoThemeToCssStyles } from '../../../brand-page/utils/style.util';
6
6
  import { AI_ASSISTANT_TOOL_NAMES } from '../../../metadata-builder/parsers/ai-toolcall-parser';
@@ -19,6 +19,7 @@ import { useHistoryStore } from '../../stores/history/history-store';
19
19
  import { useUndoRedoFlag } from '../useUndoRedoFlag';
20
20
  import { useBrandPageMakerUserStore } from '../../stores/user/user-store';
21
21
  import { useAiMetadataBuilder } from './useAiMetadataBuilder';
22
+ import { aiBuilderAgentTypeForArm } from './ai-builder-experiment';
22
23
  import { pickErrorMessage, pickWsErrorMessage, buildSubmitErrorReport, } from './aiErrorCopy';
23
24
  import raygunUtil from '../../../brand-page/utils/raygun.util';
24
25
  import { useEventTracker, AI_CTA_LOCATIONS } from '../useEventTracker';
@@ -361,13 +362,18 @@ export function useAiWebsiteBuilderChat() {
361
362
  const userPlan = userStore.hasPremiumSubscription
362
363
  ? 'premium'
363
364
  : 'free';
365
+ if (!aiThreadStore.threadId) {
366
+ // The A/B arm bc-net bucketed at editor load decides which builder owns the
367
+ // new thread; the message and tool-result calls below reuse it.
368
+ aiThreadStore.setAgentType(aiBuilderAgentTypeForArm(containerStore.abTests.bp_6136_v2_ai_builder));
369
+ }
364
370
  let buildResponse;
365
371
  if (!aiThreadStore.threadId) {
366
372
  buildResponse = await client.createWebsiteThreadBuildAsync({
367
373
  message,
368
374
  websiteContext,
369
375
  websiteSnapshot: snapshotStore.snapshotBase64 || undefined,
370
- agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
376
+ agentType: aiThreadStore.agentType,
371
377
  userPlan,
372
378
  connectionId,
373
379
  ...buildAttributionFields(),
@@ -378,7 +384,7 @@ export function useAiWebsiteBuilderChat() {
378
384
  message,
379
385
  websiteContext,
380
386
  websiteSnapshot: snapshotStore.snapshotBase64 || undefined,
381
- agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
387
+ agentType: aiThreadStore.agentType,
382
388
  userPlan,
383
389
  connectionId,
384
390
  ...buildAttributionFields(),
@@ -524,9 +530,13 @@ export function useAiWebsiteBuilderChat() {
524
530
  failedResults,
525
531
  retryCount,
526
532
  });
533
+ // Tool submissions must go to the SAME agent that ran the thread
534
+ // (AI QA 2026-07-05 T19: a mismatched agentType routes tool results
535
+ // to a service with no state for the thread and fails the build).
536
+ // The thread store holds this thread's agent (A/B arm: V1 control, V2 variation-1).
527
537
  const submitResult = await client.submitToolResultsBuildAsync(aiThreadStore.threadId, {
528
538
  toolCalls: toolResults,
529
- agentType: AI_ASSISTANT_AGENT_TYPES.WEBSITE_BUILDER,
539
+ agentType: aiThreadStore.agentType,
530
540
  connectionId,
531
541
  retryCount,
532
542
  userPlan,
@@ -1,3 +1,4 @@
1
+ import { type AiAssistantAgentType } from '../../../clients/ai-assistant-client';
1
2
  export declare const useAiWebsiteBuilderThreadStore: import("pinia").StoreDefinition<"aiWebsiteBuilderThread", Pick<{
2
3
  threadId: import("vue").Ref<string | null, string | null>;
3
4
  runId: import("vue").Ref<string | null, string | null>;
@@ -8,9 +9,11 @@ export declare const useAiWebsiteBuilderThreadStore: import("pinia").StoreDefini
8
9
  buildSectionsCompleted: import("vue").Ref<number, number>;
9
10
  promptText: import("vue").Ref<string, string>;
10
11
  stopGeneration: import("vue").Ref<(() => void) | null, (() => void) | null>;
12
+ agentType: import("vue").Ref<AiAssistantAgentType, AiAssistantAgentType>;
13
+ setAgentType: (type: AiAssistantAgentType) => void;
11
14
  resetToken: import("vue").Ref<number, number>;
12
15
  reset: () => void;
13
- }, "threadId" | "runId" | "messages" | "isProcessing" | "buildId" | "isBuildInProgress" | "buildSectionsCompleted" | "promptText" | "stopGeneration" | "resetToken">, Pick<{
16
+ }, "threadId" | "runId" | "messages" | "isProcessing" | "buildId" | "isBuildInProgress" | "buildSectionsCompleted" | "promptText" | "stopGeneration" | "agentType" | "resetToken">, Pick<{
14
17
  threadId: import("vue").Ref<string | null, string | null>;
15
18
  runId: import("vue").Ref<string | null, string | null>;
16
19
  messages: import("vue").Ref<any[], any[]>;
@@ -20,6 +23,8 @@ export declare const useAiWebsiteBuilderThreadStore: import("pinia").StoreDefini
20
23
  buildSectionsCompleted: import("vue").Ref<number, number>;
21
24
  promptText: import("vue").Ref<string, string>;
22
25
  stopGeneration: import("vue").Ref<(() => void) | null, (() => void) | null>;
26
+ agentType: import("vue").Ref<AiAssistantAgentType, AiAssistantAgentType>;
27
+ setAgentType: (type: AiAssistantAgentType) => void;
23
28
  resetToken: import("vue").Ref<number, number>;
24
29
  reset: () => void;
25
30
  }, never>, Pick<{
@@ -32,6 +37,8 @@ export declare const useAiWebsiteBuilderThreadStore: import("pinia").StoreDefini
32
37
  buildSectionsCompleted: import("vue").Ref<number, number>;
33
38
  promptText: import("vue").Ref<string, string>;
34
39
  stopGeneration: import("vue").Ref<(() => void) | null, (() => void) | null>;
40
+ agentType: import("vue").Ref<AiAssistantAgentType, AiAssistantAgentType>;
41
+ setAgentType: (type: AiAssistantAgentType) => void;
35
42
  resetToken: import("vue").Ref<number, number>;
36
43
  reset: () => void;
37
- }, "reset">>;
44
+ }, "reset" | "setAgentType">>;