@8wave/ai-elements 0.97.0-beta.1 → 0.97.0-beta.3

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 (50) hide show
  1. package/dist/_chunks/{Document-BUoM2Gd0.js → Document-njJL_3oo.js} +2 -2
  2. package/dist/_chunks/Document-njJL_3oo.js.map +1 -0
  3. package/dist/_chunks/{PkToolShowSources-B5_-IXvz.js → PkToolShowSources-Bg0QAcmF.js} +2 -2
  4. package/dist/_chunks/{PkToolShowSources-B5_-IXvz.js.map → PkToolShowSources-Bg0QAcmF.js.map} +1 -1
  5. package/dist/ai-elements.es.js +15 -10
  6. package/dist/ai-elements.es.js.map +1 -1
  7. package/dist-vue/PkChatbot.js +1 -1
  8. package/dist-vue/PkChatbotMessages.js +1 -1
  9. package/dist-vue/PkChatbotViewChat.js +1 -1
  10. package/dist-vue/PkChatbotViewConversations.js +1 -1
  11. package/dist-vue/PkChatbotViewFiles.js +1 -1
  12. package/dist-vue/PkChatbotViewProfile.js +1 -1
  13. package/dist-vue/_chunks/{Document--p4dmaUY.js → Document-q67u4D3u.js} +2 -2
  14. package/dist-vue/_chunks/{Document--p4dmaUY.js.map → Document-q67u4D3u.js.map} +1 -1
  15. package/dist-vue/_chunks/{PkChatbot-Ckw-h8FO.js → PkChatbot-A1jKttsQ.js} +6 -6
  16. package/dist-vue/_chunks/{PkChatbot-Ckw-h8FO.js.map → PkChatbot-A1jKttsQ.js.map} +1 -1
  17. package/dist-vue/_chunks/{PkChatbotMessages-CS2E757n.js → PkChatbotMessages-Cbn8okze.js} +2 -2
  18. package/dist-vue/_chunks/{PkChatbotMessages-CS2E757n.js.map → PkChatbotMessages-Cbn8okze.js.map} +1 -1
  19. package/dist-vue/_chunks/{PkChatbotViewChat-BWzjnNms.js → PkChatbotViewChat-Cc8bZfAr.js} +4 -4
  20. package/dist-vue/_chunks/{PkChatbotViewChat-BWzjnNms.js.map → PkChatbotViewChat-Cc8bZfAr.js.map} +1 -1
  21. package/dist-vue/_chunks/{PkChatbotViewConversations-GwPi9aMc.js → PkChatbotViewConversations-BsfA4A7O.js} +2 -2
  22. package/dist-vue/_chunks/{PkChatbotViewConversations-GwPi9aMc.js.map → PkChatbotViewConversations-BsfA4A7O.js.map} +1 -1
  23. package/dist-vue/_chunks/{PkChatbotViewFiles-CIY-rAe5.js → PkChatbotViewFiles-C6aouWQh.js} +3 -3
  24. package/dist-vue/_chunks/{PkChatbotViewFiles-CIY-rAe5.js.map → PkChatbotViewFiles-C6aouWQh.js.map} +1 -1
  25. package/dist-vue/_chunks/{PkChatbotViewProfile-UxuzAbbq.js → PkChatbotViewProfile-B_ZAXIrC.js} +2 -2
  26. package/dist-vue/_chunks/{PkChatbotViewProfile-UxuzAbbq.js.map → PkChatbotViewProfile-B_ZAXIrC.js.map} +1 -1
  27. package/dist-vue/_chunks/{PkToolShowSources-BxKpqH6r.js → PkToolShowSources-BF2-VGSg.js} +2 -2
  28. package/dist-vue/_chunks/{PkToolShowSources-BxKpqH6r.js.map → PkToolShowSources-BF2-VGSg.js.map} +1 -1
  29. package/dist-vue/_chunks/{constants-D4_mnkiX.js → constants-DtnBK4PW.js} +2 -2
  30. package/dist-vue/_chunks/{constants-D4_mnkiX.js.map → constants-DtnBK4PW.js.map} +1 -1
  31. package/dist-vue/_chunks/{createChatbotApiClient-CfgsFWzF.js → createChatbotApiClient-BHfNaVk8.js} +3 -2
  32. package/dist-vue/_chunks/createChatbotApiClient-BHfNaVk8.js.map +1 -0
  33. package/dist-vue/_chunks/{useChatbotStore-w7tMG0F8.js → useChatbotStore-bbenzuMe.js} +2 -2
  34. package/dist-vue/_chunks/{useChatbotStore-w7tMG0F8.js.map → useChatbotStore-bbenzuMe.js.map} +1 -1
  35. package/dist-vue/api.js +1 -1
  36. package/dist-vue/apps/web-component/src/composables/useChatbotAgent.d.ts +2 -0
  37. package/dist-vue/composables.js +2 -2
  38. package/dist-vue/index.js +365 -345
  39. package/dist-vue/index.js.map +1 -1
  40. package/dist-vue/locales.js +4 -0
  41. package/dist-vue/packages/components/src/chat/PkAgentSettingsPanel.d.ts +5 -2
  42. package/dist-vue/packages/components/src/chat/constants.d.ts +1 -1
  43. package/dist-vue/packages/composable/src/chatbot/useChatbotStore.d.ts +6 -0
  44. package/dist-vue/packages/models/src/schema/Agent.d.ts +8 -0
  45. package/dist-vue/packages/models/src/schema/ReasoningChat.d.ts +2 -0
  46. package/dist-vue/packages/models/src/schema/SubAgent.d.ts +2 -0
  47. package/dist-vue/packages/models/src/schema/constants.d.ts +2 -0
  48. package/package.json +1 -1
  49. package/dist/_chunks/Document-BUoM2Gd0.js.map +0 -1
  50. package/dist-vue/_chunks/createChatbotApiClient-CfgsFWzF.js.map +0 -1
@@ -174,6 +174,7 @@ var e = {
174
174
  white: "White",
175
175
  black: "Black",
176
176
  smoothStream: "Smooth streaming",
177
+ interactiveLogin: "Show login/registration",
177
178
  floatingButtonPosition: "Button position",
178
179
  right: "Right",
179
180
  left: "Left",
@@ -329,6 +330,7 @@ var e = {
329
330
  useColorsForAgentHeader: "Color the agent header based on the main color.",
330
331
  smoothStream: "Smooths text streaming creating a more natural reading experience.",
331
332
  welcomePopup: "Show a welcome popup with the initial message before the chat is opened.",
333
+ interactiveLogin: "Lets anonymous users sign in from the chat. The external token stays active.",
332
334
  customCss: "CSS injected into the widget shadow DOM. Allows styling the chat interface from the outside.",
333
335
  dismissableNotice: "It will be hidden after the first message.",
334
336
  privacyPolicyNotice: "Displayed at the bottom of the contact form. Supports Markdown.",
@@ -641,6 +643,7 @@ var e = {
641
643
  white: "Bianco",
642
644
  black: "Nero",
643
645
  smoothStream: "Smooth streaming",
646
+ interactiveLogin: "Mostra login/registrazione",
644
647
  floatingButtonPosition: "Posizione bottone",
645
648
  right: "Destra",
646
649
  left: "Sinistra",
@@ -796,6 +799,7 @@ var e = {
796
799
  useColorsForAgentHeader: "Colora l'intestazione dell'agente in base al colore principale.",
797
800
  smoothStream: "Uniforma lo streaming del testo creando un'esperienza di lettura più naturale.",
798
801
  welcomePopup: "Mostra un popup di benvenuto con il messaggio iniziale prima che la chat venga aperta.",
802
+ interactiveLogin: "Permette agli utenti anonimi di accedere dalla chat. L'external token resta sempre attivo.",
799
803
  customCss: "CSS iniettato nello shadow DOM del widget. Permette di personalizzare l'interfaccia della chat dall'esterno.",
800
804
  dismissableNotice: "Verrà nascosto dopo il primo messaggio.",
801
805
  privacyPolicyNotice: "Visibile del modulo di contatto.",
@@ -36,6 +36,7 @@ type __VLS_ModelProps = {
36
36
  'textColor'?: 'auto' | 'white' | 'black';
37
37
  'useColorsForAgentHeader'?: boolean;
38
38
  'welcomePopup'?: boolean;
39
+ 'interactiveLogin'?: boolean;
39
40
  'floatingButtonPosition'?: 'left' | 'right';
40
41
  'maxMessageLength'?: number | undefined;
41
42
  'media'?: Media | undefined;
@@ -86,9 +87,9 @@ type __VLS_ModelProps = {
86
87
  };
87
88
  };
88
89
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
89
- declare var __VLS_583: {};
90
+ declare var __VLS_589: {};
90
91
  type __VLS_Slots = {} & {
91
- default?: (props: typeof __VLS_583) => any;
92
+ default?: (props: typeof __VLS_589) => any;
92
93
  };
93
94
  declare const __VLS_base: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
94
95
  "update:reasoning": (value: {
@@ -179,6 +180,7 @@ declare const __VLS_base: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, Com
179
180
  "update:textColor": (value: "auto" | "white" | "black") => any;
180
181
  "update:useColorsForAgentHeader": (value: boolean) => any;
181
182
  "update:welcomePopup": (value: boolean) => any;
183
+ "update:interactiveLogin": (value: boolean) => any;
182
184
  "update:floatingButtonPosition": (value: "left" | "right") => any;
183
185
  "update:maxMessageLength": (value: number | undefined) => any;
184
186
  "update:media": (value: {
@@ -386,6 +388,7 @@ declare const __VLS_base: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, Com
386
388
  "onUpdate:textColor"?: ((value: "auto" | "white" | "black") => any) | undefined;
387
389
  "onUpdate:useColorsForAgentHeader"?: ((value: boolean) => any) | undefined;
388
390
  "onUpdate:welcomePopup"?: ((value: boolean) => any) | undefined;
391
+ "onUpdate:interactiveLogin"?: ((value: boolean) => any) | undefined;
389
392
  "onUpdate:floatingButtonPosition"?: ((value: "left" | "right") => any) | undefined;
390
393
  "onUpdate:maxMessageLength"?: ((value: number | undefined) => any) | undefined;
391
394
  "onUpdate:media"?: ((value: {
@@ -1,5 +1,5 @@
1
1
  import { LanguageModel } from 'models/src/schema/constants';
2
- export declare const MODELS: readonly [LanguageModel.gpt5Nano, LanguageModel.gpt5Mini, LanguageModel.gpt51Instant, LanguageModel.gpt51Thinking, LanguageModel.gpt52, LanguageModel.gpt52Chat, LanguageModel.gpt54nano, LanguageModel.gpt54mini, LanguageModel.gpt54, LanguageModel.gpt54Pro, LanguageModel.gpt55, LanguageModel.gpt55Pro, LanguageModel.gpt56Luna, LanguageModel.gpt56Terra, LanguageModel.gpt56Sol, LanguageModel.gemini25FlashLite, LanguageModel.gemini25Flash, LanguageModel.gemini25Pro, LanguageModel.gemini3Flash, LanguageModel.gemini3ProPreview, LanguageModel.gemini31ProPreview, LanguageModel.gemini31FlashLite, LanguageModel.gemini35Flash, LanguageModel.claudeHaiku45, LanguageModel.claudeSonnet46, LanguageModel.claudeSonnet5, LanguageModel.claudeOpus46, LanguageModel.claudeOpus47, LanguageModel.claudeOpus48, LanguageModel.claudeFable5, LanguageModel.deepseek32, LanguageModel.deepseek4pro, LanguageModel.deepseek4Flash, LanguageModel.alibabaQwen36Plus, LanguageModel.alibabaQwen37Max, LanguageModel.alibabaQwen37Plus, LanguageModel.xaiGrok43, LanguageModel.zaiGlm52, LanguageModel.zaiGlm52Fast, LanguageModel.metaMuseSpark11];
2
+ export declare const MODELS: readonly [LanguageModel.gpt5Nano, LanguageModel.gpt5Mini, LanguageModel.gpt51Instant, LanguageModel.gpt51Thinking, LanguageModel.gpt52, LanguageModel.gpt52Chat, LanguageModel.gpt54nano, LanguageModel.gpt54mini, LanguageModel.gpt54, LanguageModel.gpt54Pro, LanguageModel.gpt55, LanguageModel.gpt55Pro, LanguageModel.gpt56Luna, LanguageModel.gpt56Terra, LanguageModel.gpt56Sol, LanguageModel.gemini25FlashLite, LanguageModel.gemini25Flash, LanguageModel.gemini25Pro, LanguageModel.gemini3Flash, LanguageModel.gemini3ProPreview, LanguageModel.gemini31ProPreview, LanguageModel.gemini31FlashLite, LanguageModel.gemini35Flash, LanguageModel.gemini35FlashLite, LanguageModel.gemini36Flash, LanguageModel.claudeHaiku45, LanguageModel.claudeSonnet46, LanguageModel.claudeSonnet5, LanguageModel.claudeOpus46, LanguageModel.claudeOpus47, LanguageModel.claudeOpus48, LanguageModel.claudeFable5, LanguageModel.deepseek32, LanguageModel.deepseek4pro, LanguageModel.deepseek4Flash, LanguageModel.alibabaQwen36Plus, LanguageModel.alibabaQwen37Max, LanguageModel.alibabaQwen37Plus, LanguageModel.xaiGrok43, LanguageModel.zaiGlm52, LanguageModel.zaiGlm52Fast, LanguageModel.metaMuseSpark11];
3
3
  export declare const DEFAULT_TEMPERATURE = 0.6;
4
4
  export declare const DEFAULT_PROMPT = "";
5
5
  export declare const DEFAULT_LIMIT = 5;
@@ -21,6 +21,7 @@ export declare function useChatbotStore(agentId: string): Store<`chatbot-${strin
21
21
  mainColor: string;
22
22
  textColor: "auto" | "white" | "black";
23
23
  useColorsForAgentHeader: boolean;
24
+ interactiveLogin: boolean;
24
25
  welcomePopup: boolean;
25
26
  floatingButtonPosition: "left" | "right";
26
27
  widgetUrl: string;
@@ -113,6 +114,7 @@ export declare function useChatbotStore(agentId: string): Store<`chatbot-${strin
113
114
  mainColor: string;
114
115
  textColor: "auto" | "white" | "black";
115
116
  useColorsForAgentHeader: boolean;
117
+ interactiveLogin: boolean;
116
118
  welcomePopup: boolean;
117
119
  floatingButtonPosition: "left" | "right";
118
120
  widgetUrl: string;
@@ -1534,6 +1536,7 @@ export declare function useChatbotStore(agentId: string): Store<`chatbot-${strin
1534
1536
  mainColor: string;
1535
1537
  textColor: "auto" | "white" | "black";
1536
1538
  useColorsForAgentHeader: boolean;
1539
+ interactiveLogin: boolean;
1537
1540
  welcomePopup: boolean;
1538
1541
  floatingButtonPosition: "left" | "right";
1539
1542
  widgetUrl: string;
@@ -1626,6 +1629,7 @@ export declare function useChatbotStore(agentId: string): Store<`chatbot-${strin
1626
1629
  mainColor: string;
1627
1630
  textColor: "auto" | "white" | "black";
1628
1631
  useColorsForAgentHeader: boolean;
1632
+ interactiveLogin: boolean;
1629
1633
  welcomePopup: boolean;
1630
1634
  floatingButtonPosition: "left" | "right";
1631
1635
  widgetUrl: string;
@@ -3047,6 +3051,7 @@ export declare function useChatbotStore(agentId: string): Store<`chatbot-${strin
3047
3051
  mainColor: string;
3048
3052
  textColor: "auto" | "white" | "black";
3049
3053
  useColorsForAgentHeader: boolean;
3054
+ interactiveLogin: boolean;
3050
3055
  welcomePopup: boolean;
3051
3056
  floatingButtonPosition: "left" | "right";
3052
3057
  widgetUrl: string;
@@ -3139,6 +3144,7 @@ export declare function useChatbotStore(agentId: string): Store<`chatbot-${strin
3139
3144
  mainColor: string;
3140
3145
  textColor: "auto" | "white" | "black";
3141
3146
  useColorsForAgentHeader: boolean;
3147
+ interactiveLogin: boolean;
3142
3148
  welcomePopup: boolean;
3143
3149
  floatingButtonPosition: "left" | "right";
3144
3150
  widgetUrl: string;
@@ -608,6 +608,7 @@ export declare const AgentInterfaceSchema: z.ZodObject<{
608
608
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
609
609
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
610
610
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
611
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
611
612
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
612
613
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
613
614
  left: "left";
@@ -828,6 +829,7 @@ export declare const AgentSettingsSchema: z.ZodObject<{
828
829
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
829
830
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
830
831
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
832
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
831
833
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
832
834
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
833
835
  left: "left";
@@ -1132,6 +1134,7 @@ export declare const AgentDtoSchema: z.ZodObject<{
1132
1134
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1133
1135
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1134
1136
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1137
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1135
1138
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1136
1139
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
1137
1140
  left: "left";
@@ -1437,6 +1440,7 @@ export declare const AgentSchema: z.ZodLazy<z.ZodObject<{
1437
1440
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1438
1441
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1439
1442
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1443
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1440
1444
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1441
1445
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
1442
1446
  left: "left";
@@ -1672,6 +1676,7 @@ export declare const AgentPublicSchema: z.ZodObject<{
1672
1676
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1673
1677
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1674
1678
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1679
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1675
1680
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1676
1681
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
1677
1682
  left: "left";
@@ -1888,6 +1893,7 @@ export declare const AgentAccessGrantedSchema: z.ZodObject<{
1888
1893
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1889
1894
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1890
1895
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
1896
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1891
1897
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1892
1898
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
1893
1899
  left: "left";
@@ -2064,6 +2070,7 @@ export declare const AgentAccessDecisionSchema: z.ZodDiscriminatedUnion<[z.ZodOb
2064
2070
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
2065
2071
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
2066
2072
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
2073
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
2067
2074
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
2068
2075
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
2069
2076
  left: "left";
@@ -2245,6 +2252,7 @@ export declare const AgentAccessSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2245
2252
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
2246
2253
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
2247
2254
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
2255
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
2248
2256
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
2249
2257
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
2250
2258
  left: "left";
@@ -216,6 +216,7 @@ export declare const ReasoningChatSchema: z.ZodObject<{
216
216
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
217
217
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
218
218
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
219
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
219
220
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
220
221
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
221
222
  left: "left";
@@ -572,6 +573,7 @@ export declare const ReasoningChatSchema: z.ZodObject<{
572
573
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
573
574
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
574
575
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
576
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
575
577
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
576
578
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
577
579
  left: "left";
@@ -216,6 +216,7 @@ export declare const SubAgentSchema: z.ZodObject<{
216
216
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
217
217
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
218
218
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
219
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
219
220
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
220
221
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
221
222
  left: "left";
@@ -530,6 +531,7 @@ export declare const SubAgentSchema: z.ZodObject<{
530
531
  dismissableNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
531
532
  footerMessage: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
532
533
  privacyPolicyNotice: z.ZodOptional<z.ZodCodec<z.ZodUnknown, z.ZodRecord<z.ZodString, z.ZodString>>>;
534
+ interactiveLogin: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
533
535
  welcomePopup: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
534
536
  floatingButtonPosition: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
535
537
  left: "left";
@@ -25,6 +25,8 @@ export declare enum LanguageModel {
25
25
  gemini31ProPreview = "google/gemini-3.1-pro-preview",
26
26
  gemini31FlashLite = "google/gemini-3.1-flash-lite",
27
27
  gemini35Flash = "google/gemini-3.5-flash",
28
+ gemini35FlashLite = "google/gemini-3.5-flash-lite",
29
+ gemini36Flash = "google/gemini-3.6-flash",
28
30
  claudeHaiku45 = "anthropic/claude-haiku-4.5",
29
31
  claudeSonnet45 = "anthropic/claude-sonnet-4.5",
30
32
  claudeSonnet46 = "anthropic/claude-sonnet-4.6",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@8wave/ai-elements",
3
3
  "private": false,
4
- "version": "0.97.0-beta.1",
4
+ "version": "0.97.0-beta.3",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite --port 8082 --open --host",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Document-BUoM2Gd0.js","names":["core._coercedDate","schemas.ZodDate"],"sources":["../../../../packages/utils/src/markdown.ts","../../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/coerce.js","../../../../packages/models/src/utils.ts","../../../../packages/models/src/schema/constants.ts","../../../../packages/models/src/schema/Media.ts","../../../../packages/models/src/schema/Header.ts","../../../../packages/models/src/schema/Document.ts"],"sourcesContent":["export const stripMarkdown = (text?: string | null) => {\n if (!text) {\n return undefined\n }\n return text\n .replace(/!\\[.*?\\]\\(.*?\\)/g, '') // images\n .replace(/\\[([^\\]]+)\\]\\(.*?\\)/g, '$1') // links\n .replace(/`{1,3}[^`]*`{1,3}/g, '') // inline code / code blocks\n .replace(/#{1,6}\\s/g, '') // headings\n .replace(/(\\*{1,3}|_{1,3})(.*?)\\1/g, '$2') // bold / italic\n .replace(/~~(.*?)~~/g, '$1') // strikethrough\n .replace(/^\\s*[-*+>]\\s+/gm, '') // lists and blockquotes\n .replace(/\\n+/g, ' ') // newlines\n .trim()\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n","import * as z from 'zod'\n\n/**\n * Bidirectional wrapper for decode-time normalizations.\n *\n * Response serialization must never hit a unidirectional transform\n * (z.preprocess/.transform throw ZodEncodeError under zod encode), so\n * normalizing schemas are expressed as codecs: `decode` runs the\n * normalization (output validity is enforced by the output schema at\n * runtime), while `encode` is the identity for already-normalized data.\n */\nexport const decodeOnly = <Input extends z.ZodType, Output extends z.ZodType>(\n input: Input,\n output: Output,\n decode: (value: z.output<Input>) => z.input<Output>,\n) =>\n z.codec(input, output, {\n // Identity: already-normalized data is serialized unchanged. The\n // input schema re-validates at runtime, so the cast is type-only.\n encode: (value) => value as z.output<Input>,\n decode,\n })\n\nconst MAX_SCHEMA_SIZE_BYTES = 50 * 1024 // 50 KB\n\n/** Reusable Zod field for JSON Schema objects with a 50 KB size limit. */\nexport const jsonSchemaField = z\n .record(z.string(), z.unknown())\n .refine((val) => JSON.stringify(val).length <= MAX_SCHEMA_SIZE_BYTES, {\n message: `Schema must not exceed ${MAX_SCHEMA_SIZE_BYTES / 1024} KB`,\n })\n\nexport type QueryStringFilter<T extends string = string> = `filter[${T}]`\nexport type Querystring = {\n 'page[number]'?: number | string\n 'page[size]'?: number | string\n sort?: string[] | string\n [filterKeys: QueryStringFilter]: unknown\n [otherKeys: string]: unknown\n}\n\nexport const makeSortEnum = <const T extends string>(input: T) => {\n return [`${input}`, `-${input}`] as [T, `-${T}`]\n}\n\nexport const makeSortEnums = <const T extends string>(input: readonly T[]) => {\n return input.flatMap((i) => makeSortEnum(i))\n}\n\nexport const zodQs = {\n pagination: (defaultNumber = 1, defaultSize = 10) => {\n return {\n 'page[number]': z\n .number()\n .or(z.string())\n .transform((v) => Number(v))\n .default(defaultNumber),\n 'page[size]': z\n .number()\n .or(z.string())\n .transform((v) => Number(v))\n .default(defaultSize),\n }\n },\n filter: <const T extends string>(input: T) => {\n return { [`filter[${input}]`]: z.string().optional() } as Record<\n `filter[${T}]`,\n z.ZodOptional<z.ZodString | z.ZodArray<z.ZodString>>\n >\n },\n include: <const T extends string>(input: T) => {\n return { [`include[${input}]`]: z.string().optional() } as Record<\n `include[${T}]`,\n z.ZodOptional<z.ZodArray<z.ZodString> | z.ZodString>\n >\n },\n range: <const T extends string>(input: T) => {\n return {\n [`from[${input}]`]: z.string().optional(),\n [`to[${input}]`]: z.string().optional(),\n } as Record<`from[${T}]` | `to[${T}]`, z.ZodOptional<z.ZodString>>\n },\n has: <const T extends string>(input: T) => {\n return { [`has[${input}]`]: z.boolean().optional() } as Record<\n `has[${T}]`,\n z.ZodOptional<z.ZodBoolean>\n >\n },\n fullText: () => {\n return { [`filter[fullText]`]: z.string().optional() }\n },\n ids: () => {\n return { ids: z.union([z.string(), z.array(z.string())]).optional() }\n },\n deleted: () => {\n return { 'filter[isDeleted]': z.boolean().default(false) }\n },\n filters: <const T extends string>(input: readonly T[]) => {\n return input\n .map((i) => zodQs.filter(i))\n .reduce((a, b) => ({ ...a, ...b }))\n },\n sort: <const S extends string>(sort: S[]) => {\n const sortEnums = makeSortEnums(sort) as [S, ...`-${S}`[]]\n return {\n // @ts-expect-error: zod does not support tuple types\n sort: z.enum(sortEnums).optional().default(sortEnums[0]),\n }\n },\n}\n","export enum LanguageModel {\n // OpenAI\n textEmbedding3Small = 'openai/text-embedding-3-small',\n gpt5Nano = 'openai/gpt-5-nano',\n gpt5Mini = 'openai/gpt-5-mini',\n gpt51Thinking = 'openai/gpt-5.1-thinking',\n gpt51Instant = 'openai/gpt-5.1-instant',\n gpt52 = 'openai/gpt-5.2',\n gpt52Chat = 'openai/gpt-5.2-chat',\n gpt54nano = 'openai/gpt-5.4-nano',\n gpt54mini = 'openai/gpt-5.4-mini',\n gpt54 = 'openai/gpt-5.4',\n gpt54Pro = 'openai/gpt-5.4-pro',\n gpt55 = 'openai/gpt-5.5',\n gpt55Pro = 'openai/gpt-5.5-pro',\n gpt56Luna = 'openai/gpt-5.6-luna',\n gpt56Terra = 'openai/gpt-5.6-terra',\n gpt56Sol = 'openai/gpt-5.6-sol',\n // Google Gemini\n geminiEmbedding2 = 'google/gemini-embedding-2',\n gemini25Flash = 'google/gemini-2.5-flash',\n gemini25FlashLite = 'google/gemini-2.5-flash-lite',\n gemini25Pro = 'google/gemini-2.5-pro',\n gemini3Flash = 'google/gemini-3-flash',\n gemini3ProPreview = 'google/gemini-3-pro-preview',\n gemini31FlashLitePreview = 'google/gemini-3.1-flash-lite-preview',\n gemini31ProPreview = 'google/gemini-3.1-pro-preview',\n gemini31FlashLite = 'google/gemini-3.1-flash-lite',\n gemini35Flash = 'google/gemini-3.5-flash',\n // Anthropic Claude\n claudeHaiku45 = 'anthropic/claude-haiku-4.5',\n claudeSonnet45 = 'anthropic/claude-sonnet-4.5',\n claudeSonnet46 = 'anthropic/claude-sonnet-4.6',\n claudeSonnet5 = 'anthropic/claude-sonnet-5',\n claudeOpus46 = 'anthropic/claude-opus-4.6',\n claudeOpus47 = 'anthropic/claude-opus-4.7',\n claudeOpus48 = 'anthropic/claude-opus-4.8',\n claudeFable5 = 'anthropic/claude-fable-5',\n // Deepseek\n deepseek32 = 'deepseek/deepseek-v3.2',\n deepseek32Thinking = 'deepseek/deepseek-v3.2-thinking',\n deepseek4pro = 'deepseek/deepseek-v4-pro',\n deepseek4Flash = 'deepseek/deepseek-v4-flash',\n // Alibaba\n alibabaQwen36Plus = 'alibaba/qwen3.6-plus',\n alibabaQwen37Max = 'alibaba/qwen3.7-max',\n alibabaQwen37Plus = 'alibaba/qwen3.7-plus',\n // xAI\n xaiGrok43 = 'xai/grok-4.3',\n // z.ai\n zaiGlm52 = 'zai/glm-5.2',\n zaiGlm52Fast = 'zai/glm-5.2-fast',\n // Meta\n metaMuseSpark11 = 'meta/muse-spark-1.1',\n}\n\nexport const EMBED_MODEL = LanguageModel.geminiEmbedding2\n\nexport enum LanguageModelBrand {\n openai = 'openai',\n google = 'google',\n anthropic = 'anthropic',\n deepseek = 'deepseek',\n xai = 'xai',\n zai = 'zai',\n meta = 'meta',\n alibaba = 'alibaba',\n}\n\n/**\n * Supported languages for documents and revised answers\n */\nexport enum SupportedLanguage {\n it = 'it',\n en = 'en',\n es = 'es',\n fr = 'fr',\n de = 'de',\n}\n\n/**\n * Language display names (i18n keys)\n */\nexport const LANGUAGE_NAMES: Record<SupportedLanguage, string> = {\n [SupportedLanguage.it]: 'language.italian',\n [SupportedLanguage.en]: 'language.english',\n [SupportedLanguage.es]: 'language.spanish',\n [SupportedLanguage.fr]: 'language.french',\n [SupportedLanguage.de]: 'language.german',\n}\n\n/**\n * Content extraction strategies for URL scraping\n */\nexport enum ExtractionStrategy {\n /** Use Mozilla Readability for content extraction (fast, free, no API calls) */\n READABILITY = 'readability',\n /** Use AI-based extraction (better for complex layouts, requires API calls) */\n AI = 'ai',\n}\n\n/**\n * Browser engine options for URL scraping\n */\nexport enum BrowserEngine {\n /** Use simple HTTP fetch (fast, lightweight, no JavaScript support) */\n FETCH = 'fetch',\n /** Use Puppeteer with headless Chrome (full browser, JavaScript support) */\n PUPPETEER = 'puppeteer',\n /** Delegate browser rendering to an external pdf-image-generator service */\n REMOTE = 'remote',\n}\n","import { z } from 'zod'\n\n// ===== Constants =====\n\nexport const MAX_FILE_SIZE = 100 * 1024 * 1024 // 100MB\n\nexport const MIME_TYPE_REGEX = /^[a-z]+\\/[a-z0-9\\-+.]+$/i\n\nexport const SUPPORTED_IMAGE_TYPES = [\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml',\n] as const\n\nexport const SUPPORTED_DOCUMENT_TYPES = [\n 'application/pdf',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'text/plain',\n 'text/markdown',\n] as const\n\nexport const SUPPORTED_VIDEO_TYPES = [\n 'video/mp4',\n 'video/webm',\n 'video/ogg',\n] as const\n\nexport const SUPPORTED_AUDIO_TYPES = [\n 'audio/mpeg',\n 'audio/wav',\n 'audio/ogg',\n] as const\n\n// ===== Enums =====\n\nexport enum StoragePolicy {\n DEFAULT = 'default',\n COLD = 'cold',\n HOT = 'hot',\n ARCHIVE = 'archive',\n}\n\nexport enum PreviewStatus {\n Pending = 'pending',\n Done = 'done',\n Failed = 'failed',\n}\n\n// ===== Storage Handle Schemas =====\n\nconst AzureBlobStorageHandleSchema = z.object({\n type: z.literal('azure-blob'),\n blobUri: z.url(),\n containerName: z.string().min(1),\n pathRelativeToContainer: z.string().min(1),\n})\n\nconst S3StorageHandleSchema = z.object({\n type: z.literal('s3'),\n bucket: z.string().min(1),\n key: z.string().min(1),\n region: z.string().min(1),\n})\n\nconst StorageHandleSchema = z.discriminatedUnion('type', [\n AzureBlobStorageHandleSchema,\n S3StorageHandleSchema,\n])\n\n// ===== Media Upload Schema =====\n\n/**\n * Media upload information for preparing a file upload\n */\nexport const MediaUploadSchema = z.object({\n /** Media type category (picture, video, audio, etc.) */\n type: z.string().min(1),\n /** Original filename */\n name: z.string().min(1),\n /** MIME type (e.g., 'image/jpeg') */\n mimeType: z.string().regex(MIME_TYPE_REGEX),\n /** File size in bytes (must be positive) */\n bytesCount: z.number().positive(),\n /** File extension with dot (e.g., '.jpg') */\n extension: z\n .string()\n .regex(/^\\.[a-zA-Z0-9]+$/)\n .overwrite((ext) => ext.toLowerCase()),\n /** Optional custom stored filename */\n storedFileName: z.string().optional(),\n /** Additional metadata key-value pairs */\n metadata: z.record(z.string(), z.string()).default({}),\n /** Storage tags for categorization */\n tags: z.record(z.string(), z.string()).default({}),\n})\nexport type MediaUpload = z.infer<typeof MediaUploadSchema>\n\n// ===== Media Source Schema =====\n\n/**\n * Complete media source information including storage details\n */\nexport const MediaSourceSchema = MediaUploadSchema.extend({\n /** Storage backend configuration */\n storageHandle: StorageHandleSchema,\n /** Storage tier/policy */\n storagePolicy: z.enum(StoragePolicy),\n /** Optional signature data for verification */\n signData: z.string().optional(),\n /** Actual stored filename (required) */\n storedFileName: z.string().min(1),\n})\nexport type MediaSource = z.infer<typeof MediaSourceSchema>\n\n// ===== Media Schema =====\n\n/**\n * Complete media object with source and optional variants\n */\nexport const MediaSchema = z.object({\n /** Display name for the media */\n name: z.string().min(1),\n /** Primary media source */\n src: MediaSourceSchema,\n /** Optional additional sources (e.g., different resolutions) */\n srcSet: z.array(MediaSourceSchema).default([]),\n /** Type-specific metadata (dimensions, duration, etc.) */\n rawOptions: z.custom<RawOptions>().optional(),\n})\nexport type Media = z.infer<typeof MediaSchema>\n\n// ===== Upload Handle Schema =====\n\n/**\n * Upload handle containing SAS URI and metadata for client-side upload\n */\nexport const MediaUploadHandleSchema = z.object({\n /** Media source information */\n src: MediaSourceSchema,\n /** Upload credentials and metadata */\n uploadHandle: z.object({\n /** Shared Access Signature URI for upload */\n uploadSasuri: z.url(),\n /** Metadata to attach to the blob */\n metadata: z.record(z.string(), z.string()).default({}),\n /** Tags to attach to the blob */\n tags: z.record(z.string(), z.string()).default({}),\n }),\n})\nexport type MediaUploadHandle = z.infer<typeof MediaUploadHandleSchema>\n\n// ===== Download Handle Schema =====\n\n/**\n * Download handle containing SAS URIs for different access patterns\n */\nexport const MediaDownloadHandleSchema = z.object({\n /** Media source information */\n src: MediaSourceSchema,\n /** Download credentials and URIs */\n downloadHandle: z.object({\n /** SAS URI for file download */\n downloadSasuri: z.url(),\n /** SAS URI for inline viewing */\n viewSasuri: z.url(),\n /** Optional SAS URI for preview thumbnail */\n previewSasuri: z.url().optional(),\n /** Expiration timestamp for the SAS URIs */\n expiresOn: z.string().datetime(),\n /** Storage backend type */\n type: z.string(),\n }),\n})\nexport type MediaDownloadHandle = z.infer<typeof MediaDownloadHandleSchema>\n\n// ===== Media Types =====\n\nexport enum MediaType {\n picture = 'picture',\n video = 'video',\n audio = 'audio',\n office = 'office',\n archive = 'archive',\n binary = 'binary',\n executable = 'executable',\n}\n\n// ===== Raw Options Schemas =====\n\nconst PictureRawOptionsSchema = z.object({\n type: z.literal(MediaType.picture),\n width: z.number().positive(),\n height: z.number().positive(),\n blurhash: z.string().optional(),\n})\n\nconst VideoRawOptionsSchema = z.object({\n type: z.literal(MediaType.video),\n width: z.number().positive(),\n height: z.number().positive(),\n duration: z.number().nonnegative(),\n})\n\nconst AudioRawOptionsSchema = z.object({\n type: z.literal(MediaType.audio),\n duration: z.number().nonnegative(),\n})\n\nconst OfficeRawOptionsSchema = z.object({\n type: z.literal(MediaType.office),\n})\n\nconst ArchiveRawOptionsSchema = z.object({\n type: z.literal(MediaType.archive),\n})\n\nconst BinaryRawOptionsSchema = z.object({\n type: z.literal(MediaType.binary),\n})\n\nconst ExecutableRawOptionsSchema = z.object({\n type: z.literal(MediaType.executable),\n})\n\nexport const RawOptionsSchema = z.discriminatedUnion('type', [\n PictureRawOptionsSchema,\n VideoRawOptionsSchema,\n AudioRawOptionsSchema,\n OfficeRawOptionsSchema,\n ArchiveRawOptionsSchema,\n BinaryRawOptionsSchema,\n ExecutableRawOptionsSchema,\n])\n\n// ===== Raw Options Types =====\n\n// ===== Raw Options Types =====\n\nexport type PictureRawOptions = z.infer<typeof PictureRawOptionsSchema>\nexport type VideoRawOptions = z.infer<typeof VideoRawOptionsSchema>\nexport type AudioRawOptions = z.infer<typeof AudioRawOptionsSchema>\nexport type OfficeRawOptions = z.infer<typeof OfficeRawOptionsSchema>\nexport type ArchiveRawOptions = z.infer<typeof ArchiveRawOptionsSchema>\nexport type BinaryRawOptions = z.infer<typeof BinaryRawOptionsSchema>\nexport type ExecutableRawOptions = z.infer<typeof ExecutableRawOptionsSchema>\n\nexport type RawOptions = z.infer<typeof RawOptionsSchema>\n\n// ===== Uploaded File Type =====\n\nexport type UploadedFile<Source = undefined> = Source extends undefined\n ? {\n name: string\n size: number\n type: string\n url: string\n lastModified?: number\n }\n : {\n name: string\n size: number\n type: string\n url: string\n lastModified?: number\n source: Source\n }\n\n// ===== Helper Functions =====\n\n/**\n * Check if a MIME type is a supported image format\n */\nexport const isSupportedImageType = (mimeType: string): boolean => {\n return mimeType.startsWith('image/')\n}\n\n/**\n * Check if a MIME type supports preview generation\n */\nexport const isSupportedPreviewType = (mimeType: string): boolean => {\n return mimeType.startsWith('image/') || mimeType === 'application/pdf'\n}\n\n/**\n * Determine MediaType from MIME type\n */\nexport const getMediaTypeFromMime = (mimeType: string): MediaType => {\n if (mimeType.startsWith('image/')) return MediaType.picture\n if (mimeType.startsWith('video/')) return MediaType.video\n if (mimeType.startsWith('audio/')) return MediaType.audio\n if (\n mimeType.startsWith('application/pdf') ||\n mimeType.startsWith('application/msword') ||\n mimeType.startsWith('application/vnd.openxmlformats') ||\n mimeType.startsWith('application/vnd.ms-')\n ) {\n return MediaType.office\n }\n if (\n mimeType === 'application/zip' ||\n mimeType === 'application/x-rar-compressed' ||\n mimeType === 'application/x-7z-compressed'\n ) {\n return MediaType.archive\n }\n if (\n mimeType.startsWith('application/x-') &&\n mimeType.includes('executable')\n ) {\n return MediaType.executable\n }\n return MediaType.binary\n}\n\n/**\n * Extract file extension from filename\n */\nexport const getExtensionFromFilename = (filename: string): string => {\n const lastDot = filename.lastIndexOf('.')\n return lastDot === -1 ? '' : filename.slice(lastDot).toLowerCase()\n}\n\n/**\n * Format bytes to human-readable string\n */\nexport const formatBytes = (bytes: number, decimals = 2): string => {\n if (bytes === 0) return '0 Bytes'\n const k = 1024\n const dm = decimals < 0 ? 0 : decimals\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\n}\n\n// ===== Type Guards =====\n\nexport const isPictureOptions = (\n options: RawOptions,\n): options is PictureRawOptions => {\n return options.type === MediaType.picture\n}\n\nexport const isVideoOptions = (\n options: RawOptions,\n): options is VideoRawOptions => {\n return options.type === MediaType.video\n}\n\nexport const isAudioOptions = (\n options: RawOptions,\n): options is AudioRawOptions => {\n return options.type === MediaType.audio\n}\n\nexport const isOfficeOptions = (\n options: RawOptions,\n): options is OfficeRawOptions => {\n return options.type === MediaType.office\n}\n\nexport const isArchiveOptions = (\n options: RawOptions,\n): options is ArchiveRawOptions => {\n return options.type === MediaType.archive\n}\n\nexport const isBinaryOptions = (\n options: RawOptions,\n): options is BinaryRawOptions => {\n return options.type === MediaType.binary\n}\n\nexport const isExecutableOptions = (\n options: RawOptions,\n): options is ExecutableRawOptions => {\n return options.type === MediaType.executable\n}\n","import * as z from 'zod'\nimport { decodeOnly } from '../utils'\n\nexport const HeaderSchema = z.object({\n key: z.string().optional(),\n value: z.string().optional(),\n})\n\nexport const HeadesSchema = decodeOnly(\n z.array(HeaderSchema),\n z.array(z.object({ key: z.string(), value: z.string() })),\n (headers) =>\n headers?.filter(\n (header) => header.key?.trim() && header.value?.trim(),\n ) as Array<{ key: string; value: string }>,\n)\n\nexport type Header = z.infer<typeof HeaderSchema>\nexport type Headers = z.infer<typeof HeadesSchema>\n","import * as z from 'zod'\nimport { zodQs, decodeOnly } from '../utils'\nimport {\n SupportedLanguage,\n ExtractionStrategy,\n BrowserEngine,\n} from './constants'\nimport { MediaSchema } from './Media'\nimport { HeadesSchema } from './Header'\n\n/**\n * Processing status for document indexing and embedding generation\n */\nexport enum IndexStatus {\n Pending = 'pending',\n Processing = 'processing',\n Success = 'success',\n Failed = 'failed',\n}\n\n// ===== Document Source Types =====\n\n/**\n * Conversion options for document processing\n * Used when creating or reprocessing documents\n */\nexport const ConversionOptionsSchema = z.object({\n extractionStrategy: z.enum(ExtractionStrategy).optional(),\n browserEngine: z\n .enum(BrowserEngine)\n .optional()\n .default(BrowserEngine.FETCH),\n headers: HeadesSchema.nullish(),\n aiDescriptionModel: z.string().optional(),\n aiDescriptionPrompt: z.string().max(5000).optional(),\n language: z.string().optional(),\n forceOcr: z.boolean().default(false),\n pages: z\n .string()\n .max(100)\n .regex(/^\\d+(\\s*-\\s*\\d+)?(\\s*,\\s*\\d+(\\s*-\\s*\\d+)?)*$/)\n .optional(),\n})\n\nexport type ConversionOptions = z.infer<typeof ConversionOptionsSchema>\n\n/**\n * Metadata structure for document.metadata column\n * Consolidates all metadata from converters and source info\n */\nexport const DocumentMetadataSchema = z\n .object({\n // === Source Info (URL documents only) ===\n source: z\n .object({\n url: z.string(),\n lastScrapedAt: z.string(),\n })\n .optional(),\n\n // === Media Info (File documents only) ===\n media: MediaSchema.optional(),\n\n // === Common Fields (all document types) ===\n title: z.string().optional(),\n author: z.string().optional(),\n description: z.string().optional(),\n summary: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n\n // === PDF Specific ===\n subject: z.string().optional(),\n creator: z.string().optional(), // Original application\n producer: z.string().optional(), // PDF generator software\n creationDate: z.string().optional(),\n modificationDate: z.string().optional(),\n pageCount: decodeOnly(\n z.union([z.number(), z.array(z.unknown())]),\n z.number(),\n (val) => (Array.isArray(val) ? val.length : val),\n ).optional(),\n encrypted: z.boolean().optional(),\n\n // === DOCX Specific ===\n characterCount: z.number().optional(),\n lineCount: z.number().optional(),\n\n // === URL Specific ===\n siteName: z.string().optional(),\n canonicalUrl: z.url().optional(),\n imageUrl: z.url().optional(),\n favicon: z.url().optional(),\n type: z.string().optional(), // og:type (article, website, etc.)\n locale: z.string().optional(),\n tags: z.array(z.string()).optional(),\n publishedTime: z.string().optional(),\n modifiedTime: z.string().optional(),\n\n // === Metrics (all document types) ===\n wordCount: z.number().optional(),\n paragraphCount: z.number().optional(),\n readingTime: z.number().optional(), // in minutes\n\n // === OCR (PDF documents) ===\n ocrUsed: z.boolean().optional(),\n ocrProvider: z.string().optional(),\n ocrModel: z.string().optional(),\n ocrPages: z.string().optional(),\n ocrCost: z.number().optional(),\n ocrError: z.string().optional(),\n\n // === RAG / Duplicates / Sync Info ===\n chunksCount: z.number().optional(),\n redundantChunksCount: z.number().optional(),\n hasRedundantChunks: z.boolean().optional(),\n qdrantSynced: z.boolean().optional(),\n\n // === Conversion Options (for reprocessing) ===\n conversionOptions: ConversionOptionsSchema.optional(),\n })\n .loose() // Allow additional custom fields\n\nexport type DocumentMetadata = z.infer<typeof DocumentMetadataSchema>\n\n/**\n * Document type enum\n *\n * - 'file': Document created from uploaded file (PDF, DOCX)\n * - 'url': Document created from web scraping\n * - 'revised-answer': Document created from revised AI answer\n * - 'plain-text': Document created from plain text input\n */\nexport enum DocumentType {\n File = 'file',\n Url = 'url',\n RevisedAnswer = 'revised-answer',\n PlainText = 'plain-text',\n}\n\n// ===== Schemas =====\n\n/**\n * Full document schema from database\n * Extended with computed field chunksCount\n */\nconst BaseDocumentSchema = z.object({\n id: z.string(),\n externalId: z.string().nullable(),\n name: z.string(),\n content: z.string(),\n type: z.string(),\n language: z.string(),\n metadata: z.record(z.string(), z.unknown()),\n indexStatus: z.string(),\n processedAt: z.coerce.date().nullable(),\n createdAt: z.coerce.date(),\n createdBy: z.string(),\n updatedAt: z.coerce.date(),\n updatedBy: z.string(),\n deleted: z.boolean(),\n deletedAt: z.coerce.date().nullable(),\n deletedBy: z.string().nullable(),\n organizationId: z.string(),\n priority: z.number().int().min(1).max(5).default(3),\n})\n\nexport const DocumentSchema = BaseDocumentSchema.extend({\n type: z.enum(DocumentType),\n indexStatus: z.enum(IndexStatus),\n metadata: DocumentMetadataSchema,\n // Add computed field for chunks count (populated by service layer)\n chunksCount: z.number().optional(),\n // Computed fields for redundancy tracking\n redundantChunksCount: z.number().optional(),\n hasRedundantChunks: z.boolean().optional(),\n // Qdrant sync status\n qdrantSynced: z.boolean().optional(),\n // Agent IDs associated with this document (populated in single-item reads)\n agentIds: z.array(z.string()).optional(),\n // Folder ID for this document within an agent context (populated in agent-scoped reads)\n folderId: z.string().nullable().optional(),\n // Full folder path string e.g. \"Parent / Child\" (populated in list reads when agentId is set)\n folderPath: z.string().nullable().optional(),\n})\n\n/**\n * Query parameters for listing documents with pagination, sorting, and filters\n */\nexport const DocumentQuerystringSchema = z.object({\n ...zodQs.pagination(),\n ...zodQs.sort(['id', 'updatedAt', 'createdAt', 'name']),\n ...zodQs.filters(['type', 'language', 'agentId', 'indexStatus']),\n ...zodQs.fullText(),\n ...zodQs.ids(),\n 'filter[similarity]': z.string().optional(),\n // UUID = documents in that folder; 'null' = documents at root (no folder); absent = all documents\n 'filter[folderId]': z.string().optional(),\n 'filter[hasRedundantChunks]': z.string().optional(),\n})\n\n/**\n * Document creation schema for POST /documents endpoint\n *\n * Supports three types:\n * - 'file': Requires media object with uploaded file info\n * - 'url': Requires url string for web scraping\n * - 'revised-answer': Requires content (created from revisedAnswer service)\n */\nexport const DocumentCreateDtoSchema = z\n .object({\n type: z.enum(DocumentType).default(DocumentType.File),\n name: z.string().min(1).max(255).optional(),\n language: z.enum(SupportedLanguage).optional(),\n organizationId: z.string(),\n agentIds: z.array(z.string()).min(1, 'At least one agent is required'),\n folderId: z.uuid().nullable().optional(),\n media: MediaSchema.optional(),\n url: z.url().optional(),\n content: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n extractionStrategy: z.enum(ExtractionStrategy).optional(),\n browserEngine: z.enum(BrowserEngine).optional(),\n headers: HeadesSchema.nullish().default([]),\n aiDescriptionModel: z.string().optional(),\n aiDescriptionPrompt: z.string().max(5000).optional(),\n forceOcr: z.boolean().default(false),\n pages: z\n .string()\n .max(100)\n .regex(/^\\d+(\\s*-\\s*\\d+)?(\\s*,\\s*\\d+(\\s*-\\s*\\d+)?)*$/)\n .optional(),\n priority: z.number().int().min(1).max(5).default(3).optional(),\n })\n .superRefine((data, ctx) => {\n if (data.type === DocumentType.File && !data.media) {\n ctx.addIssue({\n code: 'custom',\n params: {\n i18n: 'errors.required',\n },\n path: ['media'],\n })\n return\n }\n if (data.type === DocumentType.Url && !data.url) {\n ctx.addIssue({\n code: 'custom',\n params: {\n i18n: 'errors.required',\n },\n path: ['url'],\n })\n }\n if (\n data.type === DocumentType.PlainText &&\n !(data.name || data.language)\n ) {\n if (!data.name) {\n ctx.addIssue({\n code: 'custom',\n params: {\n i18n: 'errors.required',\n },\n path: ['name'],\n })\n }\n if (!data.language) {\n ctx.addIssue({\n code: 'custom',\n params: {\n i18n: 'errors.required',\n },\n path: ['language'],\n })\n }\n }\n })\n\n/**\n * Document update schema for PUT /documents/:id endpoint\n *\n * All fields are optional, but at least one must be provided\n */\nexport const DocumentUpdateDtoSchema = z.object({\n id: z.string(),\n organizationId: z.string(),\n content: z.string().optional(),\n name: z.string().min(1).max(255).optional(),\n language: z.enum(SupportedLanguage).optional(),\n priority: z.number().int().min(1).max(5).optional(),\n agentIds: z.array(z.string()).min(1).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n// ===== Type Exports =====\n\nexport type Document = z.infer<typeof DocumentSchema>\nexport type DocumentQuerystring = z.infer<typeof DocumentQuerystringSchema>\nexport type DocumentCreateDto = z.infer<typeof DocumentCreateDtoSchema>\nexport type DocumentUpdateDto = z.infer<typeof DocumentUpdateDtoSchema>\n\n// ===== Helper Functions =====\n\nexport const getStatusColor = (status: IndexStatus) => {\n switch (status) {\n case IndexStatus.Success:\n return 'success'\n case IndexStatus.Failed:\n return 'danger'\n case IndexStatus.Processing:\n return 'warning'\n default:\n return 'info'\n }\n}\n\nexport const getStatusIcon = (status: IndexStatus) => {\n switch (status) {\n case IndexStatus.Success:\n return 'ri:check-line'\n case IndexStatus.Failed:\n return 'ri:error-warning-line'\n case IndexStatus.Processing:\n return 'ri:hourglass-line'\n default:\n return 'ri:time-line'\n }\n}\n\nexport const getTypeIcon = (type: DocumentType) => {\n switch (type) {\n case DocumentType.File:\n return 'ri:file-line'\n case DocumentType.Url:\n return 'ri:link'\n case DocumentType.RevisedAnswer:\n return 'ri:feedback-line'\n default:\n return 'ri:input-method-line'\n }\n}\n\nexport const getFileIcon = (extension: string) => {\n const ext = (\n extension.startsWith('.') ? extension.slice(1) : extension\n ).toLowerCase()\n switch (ext) {\n case 'pdf':\n return 'ri:file-pdf-2-line'\n case 'doc':\n case 'docx':\n return 'ri:file-word-line'\n case 'xls':\n case 'xlsx':\n return 'ri:file-excel-line'\n case 'ppt':\n case 'pptx':\n return 'ri:file-ppt-line'\n case 'txt':\n return 'ri:file-text-line'\n case 'mp3':\n case 'wav':\n case 'ogg':\n return 'ri:file-music-line'\n case 'mp4':\n case 'avi':\n case 'mkv':\n return 'ri:file-video-line'\n case 'jpg':\n case 'jpeg':\n case 'png':\n case 'gif':\n case 'bmp':\n case 'svg':\n return 'ri:file-image-line'\n case 'zip':\n case 'rar':\n case '7z':\n return 'ri:file-zip-line'\n default:\n return 'ri:file-line'\n }\n}\n\n/** Whether a MIME type is an image. */\nexport const isImageMime = (mimeType?: string | null): boolean =>\n (mimeType ?? '').startsWith('image/')\n\n/** Whether a file MIME type can be previewed inline in the browser (image or\n * PDF) instead of being forced as a download. Shared by every file-list surface\n * so the preview/download decision stays consistent. */\nexport const isInlineViewable = (mimeType?: string | null): boolean =>\n isImageMime(mimeType) || mimeType === 'application/pdf'\n\n/** File-type identity for list rows and previews: icon, accent color\n * (CSS value driving glyph and tile tint) and a short human kind label. */\nexport interface FileKind {\n icon: string\n accent: string\n label: string\n}\n\n/** File-type identity derived from a MIME type. Accents match the chat\n * attachment cards (PkChatbotFilePreview) so files read the same everywhere. */\nexport const fileKindForMime = (mimeType?: string | null): FileKind => {\n const mime = mimeType ?? ''\n if (isImageMime(mime)) {\n return { icon: 'ri:image-line', accent: '#ec4899', label: 'Image' }\n }\n if (mime === 'application/pdf') {\n return { icon: 'ri:file-pdf-2-line', accent: '#e2483d', label: 'PDF' }\n }\n if (mime === 'application/msword' || mime.includes('wordprocessingml')) {\n return { icon: 'ri:file-word-line', accent: '#2b7de9', label: 'Word' }\n }\n if (mime === 'application/vnd.ms-excel' || mime.includes('spreadsheetml')) {\n return {\n icon: 'ri:file-excel-line',\n accent: '#1f9d57',\n label: 'Spreadsheet',\n }\n }\n if (\n mime === 'application/vnd.ms-powerpoint' ||\n mime.includes('presentationml')\n ) {\n return {\n icon: 'ri:file-ppt-line',\n accent: '#d98324',\n label: 'Presentation',\n }\n }\n if (mime.startsWith('audio/')) {\n return { icon: 'ri:file-music-line', accent: '#8b5cf6', label: 'Audio' }\n }\n if (mime.startsWith('video/')) {\n return { icon: 'ri:file-video-line', accent: '#6366f1', label: 'Video' }\n }\n if (\n mime === 'application/zip' ||\n mime === 'application/x-rar-compressed' ||\n mime === 'application/x-7z-compressed'\n ) {\n return { icon: 'ri:file-zip-line', accent: '#c08a1e', label: 'Archive' }\n }\n if (mime.startsWith('text/')) {\n return { icon: 'ri:file-text-line', accent: '#64748b', label: 'Text' }\n }\n return { icon: 'ri:file-line', accent: '#64748b', label: 'File' }\n}\n\n/** Icon for a file-list row, derived from its MIME type. */\nexport const fileIconForMime = (mimeType?: string | null): string =>\n fileKindForMime(mimeType).icon\n"],"x_google_ignoreList":[1],"mappings":";;AAAA,IAAa,KAAiB,MAAyB;CAC9C,OAGL,OAAO,EACF,QAAQ,oBAAoB,EAAE,CAAC,CAC/B,QAAQ,wBAAwB,IAAI,CAAC,CACrC,QAAQ,sBAAsB,EAAE,CAAC,CACjC,QAAQ,aAAa,EAAE,CAAC,CACxB,QAAQ,4BAA4B,IAAI,CAAC,CACzC,QAAQ,cAAc,IAAI,CAAC,CAC3B,QAAQ,mBAAmB,EAAE,CAAC,CAC9B,QAAQ,QAAQ,GAAG,CAAC,CACpB,KAAK;AACd;;;ACAA,SAAgB,EAAK,GAAQ;CACzB,OAAOA,EAAkBC,GAAiB,CAAM;AACpD;;;ACLA,IAAa,KACT,GACA,GACA,MAEA,EAAQ,GAAO,GAAQ;CAGnB,SAAS,MAAU;CACnB;AACJ,CAAC,GAEC,IAAwB,KAAK,MAGtB,IAAkB,EACnB,EAAS,GAAG,EAAU,CAAC,CAAC,CAC/B,QAAQ,MAAQ,KAAK,UAAU,CAAG,CAAC,CAAC,UAAU,GAAuB,EAClE,SAAS,0BAA0B,IAAwB,KAAK,KACpE,CAAC,GAWQ,KAAwC,MAC1C,CAAC,GAAG,KAAS,IAAI,GAAO,GAGtB,KAAyC,MAC3C,EAAM,SAAS,MAAM,EAAa,CAAC,CAAC,GAGlC,IAAQ;CACjB,aAAa,IAAgB,GAAG,IAAc,QACnC;EACH,gBAAgB,EACJ,CAAC,CACR,GAAG,EAAS,CAAC,CAAC,CACd,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,CAC3B,QAAQ,CAAa;EAC1B,cAAc,EACF,CAAC,CACR,GAAG,EAAS,CAAC,CAAC,CACd,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,CAC3B,QAAQ,CAAW;CAC5B;CAEJ,SAAiC,OACtB,GAAG,UAAU,EAAM,KAAK,EAAS,CAAC,CAAC,SAAS,EAAE;CAKzD,UAAkC,OACvB,GAAG,WAAW,EAAM,KAAK,EAAS,CAAC,CAAC,SAAS,EAAE;CAK1D,QAAgC,OACrB;GACF,QAAQ,EAAM,KAAK,EAAS,CAAC,CAAC,SAAS;GACvC,MAAM,EAAM,KAAK,EAAS,CAAC,CAAC,SAAS;CAC1C;CAEJ,MAA8B,OACnB,GAAG,OAAO,EAAM,KAAK,EAAU,CAAC,CAAC,SAAS,EAAE;CAKvD,iBACW,EAAG,oBAAqB,EAAS,CAAC,CAAC,SAAS,EAAE;CAEzD,YACW,EAAE,KAAK,EAAQ,CAAC,EAAS,GAAG,EAAQ,EAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;CAExE,gBACW,EAAE,qBAAqB,EAAU,CAAC,CAAC,QAAQ,EAAK,EAAE;CAE7D,UAAkC,MACvB,EACF,KAAK,MAAM,EAAM,OAAO,CAAC,CAAC,CAAC,CAC3B,QAAQ,GAAG,OAAO;EAAE,GAAG;EAAG,GAAG;CAAE,EAAE;CAE1C,OAA+B,MAAc;EACzC,IAAM,IAAY,EAAc,CAAI;EACpC,OAAO,EAEH,MAAM,EAAO,CAAS,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAU,EAAE,EAC3D;CACJ;AACJ,GC7GY,IAAL,yBAAA,GAAA;QAEH,EAAA,sBAAA,iCACA,EAAA,WAAA,qBACA,EAAA,WAAA,qBACA,EAAA,gBAAA,2BACA,EAAA,eAAA,0BACA,EAAA,QAAA,kBACA,EAAA,YAAA,uBACA,EAAA,YAAA,uBACA,EAAA,YAAA,uBACA,EAAA,QAAA,kBACA,EAAA,WAAA,sBACA,EAAA,QAAA,kBACA,EAAA,WAAA,sBACA,EAAA,YAAA,uBACA,EAAA,aAAA,wBACA,EAAA,WAAA,sBAEA,EAAA,mBAAA,6BACA,EAAA,gBAAA,2BACA,EAAA,oBAAA,gCACA,EAAA,cAAA,yBACA,EAAA,eAAA,yBACA,EAAA,oBAAA,+BACA,EAAA,2BAAA,wCACA,EAAA,qBAAA,iCACA,EAAA,oBAAA,gCACA,EAAA,gBAAA,2BAEA,EAAA,gBAAA,8BACA,EAAA,iBAAA,+BACA,EAAA,iBAAA,+BACA,EAAA,gBAAA,6BACA,EAAA,eAAA,6BACA,EAAA,eAAA,6BACA,EAAA,eAAA,6BACA,EAAA,eAAA,4BAEA,EAAA,aAAA,0BACA,EAAA,qBAAA,mCACA,EAAA,eAAA,4BACA,EAAA,iBAAA,8BAEA,EAAA,oBAAA,wBACA,EAAA,mBAAA,uBACA,EAAA,oBAAA,wBAEA,EAAA,YAAA,gBAEA,EAAA,WAAA,eACA,EAAA,eAAA,oBAEA,EAAA,kBAAA;AACJ,EAAA,CAAA,CAAA;AAE2B,EAAc;AAgBzC,IAAY,IAAL,yBAAA,GAAA;QACH,EAAA,KAAA,MACA,EAAA,KAAA,MACA,EAAA,KAAA,MACA,EAAA,KAAA,MACA,EAAA,KAAA;AACJ,EAAA,CAAA,CAAA;AAMK,EAAkB,IAClB,EAAkB,IAClB,EAAkB,IAClB,EAAkB,IAClB,EAAkB;AAMvB,IAAY,IAAL,yBAAA,GAAA;QAEH,EAAA,cAAA,eAEA,EAAA,KAAA;AACJ,EAAA,CAAA,CAAA,GAKY,IAAL,yBAAA,GAAA;QAEH,EAAA,QAAA,SAEA,EAAA,YAAA,aAEA,EAAA,SAAA;AACJ,EAAA,CAAA,CAAA,GCzGa,IAAkB,4BAkCnB,IAAL,yBAAA,GAAA;QACH,EAAA,UAAA,WACA,EAAA,OAAA,QACA,EAAA,MAAA,OACA,EAAA,UAAA;AACJ,EAAA,CAAA,CAAA,GAwBM,IAAsB,EAAqB,QAAQ,CAdpB,EAAS;CAC1C,MAAM,EAAU,YAAY;CAC5B,SAAS,EAAM;CACf,eAAe,EAAS,CAAC,CAAC,IAAI,CAAC;CAC/B,yBAAyB,EAAS,CAAC,CAAC,IAAI,CAAC;AAC7C,CAUI,GAR0B,EAAS;CACnC,MAAM,EAAU,IAAI;CACpB,QAAQ,EAAS,CAAC,CAAC,IAAI,CAAC;CACxB,KAAK,EAAS,CAAC,CAAC,IAAI,CAAC;CACrB,QAAQ,EAAS,CAAC,CAAC,IAAI,CAAC;AAC5B,CAII,CACJ,CAAC,GAmCY,IA5BoB,EAAS;CAEtC,MAAM,EAAS,CAAC,CAAC,IAAI,CAAC;CAEtB,MAAM,EAAS,CAAC,CAAC,IAAI,CAAC;CAEtB,UAAU,EAAS,CAAC,CAAC,MAAM,CAAe;CAE1C,YAAY,EAAS,CAAC,CAAC,SAAS;CAEhC,WAAW,EACC,CAAC,CACR,MAAM,kBAAkB,CAAC,CACzB,WAAW,MAAQ,EAAI,YAAY,CAAC;CAEzC,gBAAgB,EAAS,CAAC,CAAC,SAAS;CAEpC,UAAU,EAAS,EAAS,GAAG,EAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAErD,MAAM,EAAS,EAAS,GAAG,EAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrD,CAQiC,CAAA,CAAkB,OAAO;CAEtD,eAAe;CAEf,eAAe,EAAO,CAAa;CAEnC,UAAU,EAAS,CAAC,CAAC,SAAS;CAE9B,gBAAgB,EAAS,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC,GAQY,IAAc,EAAS;CAEhC,MAAM,EAAS,CAAC,CAAC,IAAI,CAAC;CAEtB,KAAK;CAEL,QAAQ,EAAQ,CAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;CAE7C,YAAY,EAAqB,CAAC,CAAC,SAAS;AAChD,CAAC;AAQsC,EAAS;CAE5C,KAAK;CAEL,cAAc,EAAS;EAEnB,cAAc,EAAM;EAEpB,UAAU,EAAS,EAAS,GAAG,EAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;EAErD,MAAM,EAAS,EAAS,GAAG,EAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CACrD,CAAC;AACL,CAAC,GAQwC,EAAS;CAE9C,KAAK;CAEL,gBAAgB,EAAS;EAErB,gBAAgB,EAAM;EAEtB,YAAY,EAAM;EAElB,eAAe,EAAM,CAAC,CAAC,SAAS;EAEhC,WAAW,EAAS,CAAC,CAAC,SAAS;EAE/B,MAAM,EAAS;CACnB,CAAC;AACL,CAAC;AAKD,IAAY,IAAL,yBAAA,GAAA;QACH,EAAA,UAAA,WACA,EAAA,QAAA,SACA,EAAA,QAAA,SACA,EAAA,SAAA,UACA,EAAA,UAAA,WACA,EAAA,SAAA,UACA,EAAA,aAAA;AACJ,EAAA,CAAA,CAAA;AAuCgC,EAAqB,QAAQ;CAnC7B,EAAS;EACrC,MAAM,EAAU,EAAU,OAAO;EACjC,OAAO,EAAS,CAAC,CAAC,SAAS;EAC3B,QAAQ,EAAS,CAAC,CAAC,SAAS;EAC5B,UAAU,EAAS,CAAC,CAAC,SAAS;CAClC,CA+BI;CA7B0B,EAAS;EACnC,MAAM,EAAU,EAAU,KAAK;EAC/B,OAAO,EAAS,CAAC,CAAC,SAAS;EAC3B,QAAQ,EAAS,CAAC,CAAC,SAAS;EAC5B,UAAU,EAAS,CAAC,CAAC,YAAY;CACrC,CAyBI;CAvB0B,EAAS;EACnC,MAAM,EAAU,EAAU,KAAK;EAC/B,UAAU,EAAS,CAAC,CAAC,YAAY;CACrC,CAqBI;CAnB2B,EAAS,EACpC,MAAM,EAAU,EAAU,MAAM,EACpC,CAkBI;CAhB4B,EAAS,EACrC,MAAM,EAAU,EAAU,OAAO,EACrC,CAeI;CAb2B,EAAS,EACpC,MAAM,EAAU,EAAU,MAAM,EACpC,CAYI;CAV+B,EAAS,EACxC,MAAM,EAAU,EAAU,UAAU,EACxC,CASI;AACJ,CAAC;ACrOD,IAAa,IAAe,EACxB,EANwB,EAAS;CACjC,KAAK,EAAS,CAAC,CAAC,SAAS;CACzB,OAAO,EAAS,CAAC,CAAC,SAAS;AAC/B,CAGY,CAAY,GACpB,EAAQ,EAAS;CAAE,KAAK,EAAS;CAAG,OAAO,EAAS;AAAE,CAAC,CAAC,IACvD,MACG,GAAS,QACJ,MAAW,EAAO,KAAK,KAAK,KAAK,EAAO,OAAO,KAAK,CACzD,CACR,GCFY,IAAL,yBAAA,GAAA;QACH,EAAA,UAAA,WACA,EAAA,aAAA,cACA,EAAA,UAAA,WACA,EAAA,SAAA;AACJ,EAAA,CAAA,CAAA,GAQa,IAA0B,EAAS;CAC5C,oBAAoB,EAAO,CAAkB,CAAC,CAAC,SAAS;CACxD,eAAe,EACL,CAAa,CAAC,CACnB,SAAS,CAAC,CACV,QAAQ,EAAc,KAAK;CAChC,SAAS,EAAa,QAAQ;CAC9B,oBAAoB,EAAS,CAAC,CAAC,SAAS;CACxC,qBAAqB,EAAS,CAAC,CAAC,IAAI,GAAI,CAAC,CAAC,SAAS;CACnD,UAAU,EAAS,CAAC,CAAC,SAAS;CAC9B,UAAU,EAAU,CAAC,CAAC,QAAQ,EAAK;CACnC,OAAO,EACK,CAAC,CACR,IAAI,GAAG,CAAC,CACR,MAAM,8CAA8C,CAAC,CACrD,SAAS;AAClB,CAAC,GAQY,IAAyB,EAC1B;CAEJ,QAAQ,EACI;EACJ,KAAK,EAAS;EACd,eAAe,EAAS;CAC5B,CAAC,CAAC,CACD,SAAS;CAGd,OAAO,EAAY,SAAS;CAG5B,OAAO,EAAS,CAAC,CAAC,SAAS;CAC3B,QAAQ,EAAS,CAAC,CAAC,SAAS;CAC5B,aAAa,EAAS,CAAC,CAAC,SAAS;CACjC,SAAS,EAAS,CAAC,CAAC,SAAS;CAC7B,UAAU,EAAQ,EAAS,CAAC,CAAC,CAAC,SAAS;CAGvC,SAAS,EAAS,CAAC,CAAC,SAAS;CAC7B,SAAS,EAAS,CAAC,CAAC,SAAS;CAC7B,UAAU,EAAS,CAAC,CAAC,SAAS;CAC9B,cAAc,EAAS,CAAC,CAAC,SAAS;CAClC,kBAAkB,EAAS,CAAC,CAAC,SAAS;CACtC,WAAW,EACP,EAAQ,CAAC,EAAS,GAAG,EAAQ,EAAU,CAAC,CAAC,CAAC,GAC1C,EAAS,IACR,MAAS,MAAM,QAAQ,CAAG,IAAI,EAAI,SAAS,CAChD,CAAC,CAAC,SAAS;CACX,WAAW,EAAU,CAAC,CAAC,SAAS;CAGhC,gBAAgB,EAAS,CAAC,CAAC,SAAS;CACpC,WAAW,EAAS,CAAC,CAAC,SAAS;CAG/B,UAAU,EAAS,CAAC,CAAC,SAAS;CAC9B,cAAc,EAAM,CAAC,CAAC,SAAS;CAC/B,UAAU,EAAM,CAAC,CAAC,SAAS;CAC3B,SAAS,EAAM,CAAC,CAAC,SAAS;CAC1B,MAAM,EAAS,CAAC,CAAC,SAAS;CAC1B,QAAQ,EAAS,CAAC,CAAC,SAAS;CAC5B,MAAM,EAAQ,EAAS,CAAC,CAAC,CAAC,SAAS;CACnC,eAAe,EAAS,CAAC,CAAC,SAAS;CACnC,cAAc,EAAS,CAAC,CAAC,SAAS;CAGlC,WAAW,EAAS,CAAC,CAAC,SAAS;CAC/B,gBAAgB,EAAS,CAAC,CAAC,SAAS;CACpC,aAAa,EAAS,CAAC,CAAC,SAAS;CAGjC,SAAS,EAAU,CAAC,CAAC,SAAS;CAC9B,aAAa,EAAS,CAAC,CAAC,SAAS;CACjC,UAAU,EAAS,CAAC,CAAC,SAAS;CAC9B,UAAU,EAAS,CAAC,CAAC,SAAS;CAC9B,SAAS,EAAS,CAAC,CAAC,SAAS;CAC7B,UAAU,EAAS,CAAC,CAAC,SAAS;CAG9B,aAAa,EAAS,CAAC,CAAC,SAAS;CACjC,sBAAsB,EAAS,CAAC,CAAC,SAAS;CAC1C,oBAAoB,EAAU,CAAC,CAAC,SAAS;CACzC,cAAc,EAAU,CAAC,CAAC,SAAS;CAGnC,mBAAmB,EAAwB,SAAS;AACxD,CAAC,CAAC,CACD,MAAM,GAYC,IAAL,yBAAA,GAAA;QACH,EAAA,OAAA,QACA,EAAA,MAAA,OACA,EAAA,gBAAA,kBACA,EAAA,YAAA;AACJ,EAAA,CAAA,CAAA;AAQ2B,EAAS;CAChC,IAAI,EAAS;CACb,YAAY,EAAS,CAAC,CAAC,SAAS;CAChC,MAAM,EAAS;CACf,SAAS,EAAS;CAClB,MAAM,EAAS;CACf,UAAU,EAAS;CACnB,UAAU,EAAS,EAAS,GAAG,EAAU,CAAC;CAC1C,aAAa,EAAS;CACtB,aAAa,EAAc,CAAC,CAAC,SAAS;CACtC,WAAW,EAAc;CACzB,WAAW,EAAS;CACpB,WAAW,EAAc;CACzB,WAAW,EAAS;CACpB,SAAS,EAAU;CACnB,WAAW,EAAc,CAAC,CAAC,SAAS;CACpC,WAAW,EAAS,CAAC,CAAC,SAAS;CAC/B,gBAAgB,EAAS;CACzB,UAAU,EAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAE8B,CAAA,CAAmB,OAAO;CACpD,MAAM,EAAO,CAAY;CACzB,aAAa,EAAO,CAAW;CAC/B,UAAU;CAEV,aAAa,EAAS,CAAC,CAAC,SAAS;CAEjC,sBAAsB,EAAS,CAAC,CAAC,SAAS;CAC1C,oBAAoB,EAAU,CAAC,CAAC,SAAS;CAEzC,cAAc,EAAU,CAAC,CAAC,SAAS;CAEnC,UAAU,EAAQ,EAAS,CAAC,CAAC,CAAC,SAAS;CAEvC,UAAU,EAAS,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;CAEzC,YAAY,EAAS,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;AAC/C,CAAC,GAKwC,EAAS;CAC9C,GAAG,EAAM,WAAW;CACpB,GAAG,EAAM,KAAK;EAAC;EAAM;EAAa;EAAa;CAAM,CAAC;CACtD,GAAG,EAAM,QAAQ;EAAC;EAAQ;EAAY;EAAW;CAAa,CAAC;CAC/D,GAAG,EAAM,SAAS;CAClB,GAAG,EAAM,IAAI;CACb,sBAAsB,EAAS,CAAC,CAAC,SAAS;CAE1C,oBAAoB,EAAS,CAAC,CAAC,SAAS;CACxC,8BAA8B,EAAS,CAAC,CAAC,SAAS;AACtD,CAAC,GAUsC,EAC3B;CACJ,MAAM,EAAO,CAAY,CAAC,CAAC,QAAQ,EAAa,IAAI;CACpD,MAAM,EAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;CAC1C,UAAU,EAAO,CAAiB,CAAC,CAAC,SAAS;CAC7C,gBAAgB,EAAS;CACzB,UAAU,EAAQ,EAAS,CAAC,CAAC,CAAC,IAAI,GAAG,gCAAgC;CACrE,UAAU,EAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;CACvC,OAAO,EAAY,SAAS;CAC5B,KAAK,EAAM,CAAC,CAAC,SAAS;CACtB,SAAS,EAAS,CAAC,CAAC,SAAS;CAC7B,UAAU,EAAS,EAAS,GAAG,EAAU,CAAC,CAAC,CAAC,SAAS;CACrD,oBAAoB,EAAO,CAAkB,CAAC,CAAC,SAAS;CACxD,eAAe,EAAO,CAAa,CAAC,CAAC,SAAS;CAC9C,SAAS,EAAa,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;CAC1C,oBAAoB,EAAS,CAAC,CAAC,SAAS;CACxC,qBAAqB,EAAS,CAAC,CAAC,IAAI,GAAI,CAAC,CAAC,SAAS;CACnD,UAAU,EAAU,CAAC,CAAC,QAAQ,EAAK;CACnC,OAAO,EACK,CAAC,CACR,IAAI,GAAG,CAAC,CACR,MAAM,8CAA8C,CAAC,CACrD,SAAS;CACd,UAAU,EAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;AACjE,CAAC,CAAC,CACD,aAAa,GAAM,MAAQ;CACxB,IAAI,EAAK,SAAS,EAAa,QAAQ,CAAC,EAAK,OAAO;EAChD,EAAI,SAAS;GACT,MAAM;GACN,QAAQ,EACJ,MAAM,kBACV;GACA,MAAM,CAAC,OAAO;EAClB,CAAC;EACD;CACJ;CAUA,AATI,EAAK,SAAS,EAAa,OAAO,CAAC,EAAK,OACxC,EAAI,SAAS;EACT,MAAM;EACN,QAAQ,EACJ,MAAM,kBACV;EACA,MAAM,CAAC,KAAK;CAChB,CAAC,GAGD,EAAK,SAAS,EAAa,aAC3B,EAAE,EAAK,QAAQ,EAAK,cAEf,EAAK,QACN,EAAI,SAAS;EACT,MAAM;EACN,QAAQ,EACJ,MAAM,kBACV;EACA,MAAM,CAAC,MAAM;CACjB,CAAC,GAEA,EAAK,YACN,EAAI,SAAS;EACT,MAAM;EACN,QAAQ,EACJ,MAAM,kBACV;EACA,MAAM,CAAC,UAAU;CACrB,CAAC;AAGb,CAAC,GAOkC,EAAS;CAC5C,IAAI,EAAS;CACb,gBAAgB,EAAS;CACzB,SAAS,EAAS,CAAC,CAAC,SAAS;CAC7B,MAAM,EAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;CAC1C,UAAU,EAAO,CAAiB,CAAC,CAAC,SAAS;CAC7C,UAAU,EAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;CAClD,UAAU,EAAQ,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;CAC9C,UAAU,EAAS,EAAS,GAAG,EAAU,CAAC,CAAC,CAAC,SAAS;AACzD,CAAC;AAqCD,IAAa,KAAe,MAAuB;CAC/C,QAAQ,GAAR;EACI,KAAK,EAAa,MACd,OAAO;EACX,KAAK,EAAa,KACd,OAAO;EACX,KAAK,EAAa,eACd,OAAO;EACX,SACI,OAAO;CACf;AACJ,GA6Ca,KAAe,OACvB,KAAY,GAAA,CAAI,WAAW,QAAQ,GAK3B,KAAoB,MAC7B,EAAY,CAAQ,KAAK,MAAa,mBAY7B,KAAmB,MAAuC;CACnE,IAAM,IAAO,KAAY;CA2CzB,OA1CI,EAAY,CAAI,IACT;EAAE,MAAM;EAAiB,QAAQ;EAAW,OAAO;CAAQ,IAElE,MAAS,oBACF;EAAE,MAAM;EAAsB,QAAQ;EAAW,OAAO;CAAM,IAErE,MAAS,wBAAwB,EAAK,SAAS,kBAAkB,IAC1D;EAAE,MAAM;EAAqB,QAAQ;EAAW,OAAO;CAAO,IAErE,MAAS,8BAA8B,EAAK,SAAS,eAAe,IAC7D;EACH,MAAM;EACN,QAAQ;EACR,OAAO;CACX,IAGA,MAAS,mCACT,EAAK,SAAS,gBAAgB,IAEvB;EACH,MAAM;EACN,QAAQ;EACR,OAAO;CACX,IAEA,EAAK,WAAW,QAAQ,IACjB;EAAE,MAAM;EAAsB,QAAQ;EAAW,OAAO;CAAQ,IAEvE,EAAK,WAAW,QAAQ,IACjB;EAAE,MAAM;EAAsB,QAAQ;EAAW,OAAO;CAAQ,IAGvE,MAAS,qBACT,MAAS,kCACT,MAAS,gCAEF;EAAE,MAAM;EAAoB,QAAQ;EAAW,OAAO;CAAU,IAEvE,EAAK,WAAW,OAAO,IAChB;EAAE,MAAM;EAAqB,QAAQ;EAAW,OAAO;CAAO,IAElE;EAAE,MAAM;EAAgB,QAAQ;EAAW,OAAO;CAAO;AACpE,GAGa,KAAmB,MAC5B,EAAgB,CAAQ,CAAC,CAAC"}