@1interface/shared-core 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -52,6 +52,11 @@ export declare interface AppResponse<T> {
52
52
  message?: string;
53
53
  }
54
54
 
55
+ export declare interface AppSettingConfig {
56
+ web?: PlatformScreens;
57
+ mobile?: PlatformScreens;
58
+ }
59
+
55
60
  export declare const AUTH_HEADERS: {
56
61
  readonly ACCESS_TOKEN: "x-access-token";
57
62
  readonly REFRESH_TOKEN: "x-refresh-token";
@@ -117,6 +122,8 @@ export declare interface BrandingTheme {
117
122
  surface?: SurfaceColors;
118
123
  text?: TextColors;
119
124
  status?: StatusColors;
125
+ orbVideo?: OrbVideoConfig;
126
+ appSetting?: AppSettingConfig;
120
127
  }
121
128
 
122
129
  export declare interface BrandingThemes {
@@ -126,10 +133,23 @@ export declare interface BrandingThemes {
126
133
 
127
134
  export declare function brandingToThemeStyles(branding: BrandingConfig | null, theme: BrandingTheme | null, resolvedTheme?: ResolvedTheme): ChatThemeStyles;
128
135
 
136
+ export declare interface BrandLogo {
137
+ url?: string;
138
+ width?: number;
139
+ height?: number;
140
+ alignment?: LogoAlignment;
141
+ }
142
+
129
143
  export declare const BRIDGE_TOAST_EVENT_NAME = "bridge-toast";
130
144
 
131
145
  export declare type BridgeToastDetail = ToastOptions;
132
146
 
147
+ export declare function buildFontFaceCss(t: ResolvedTypography): string;
148
+
149
+ export declare function buildFontStack(t: ResolvedTypography, role: FontRole, scripts: Script[]): string;
150
+
151
+ export declare function buildFullFontStack(t: ResolvedTypography, role: FontRole): string;
152
+
133
153
  declare type CallbackFn = (payload?: unknown) => void;
134
154
 
135
155
  export declare const capitalizeFirst: (text: string) => string;
@@ -193,6 +213,7 @@ export declare interface ChatThemeStyles {
193
213
  sideMenuText: string;
194
214
  sideMenuIcon: string;
195
215
  sideMenuProfile: string;
216
+ screenMaskingColor: string;
196
217
  statusPrimary: StatusThemeVariant;
197
218
  statusSecondary: StatusThemeVariant;
198
219
  statusSuccess: StatusThemeVariant;
@@ -203,8 +224,10 @@ export declare interface ChatThemeStyles {
203
224
  switchCheckedColor: string;
204
225
  switchUncheckedColor: string;
205
226
  fontFamily: string;
227
+ fontFamilyHeading: string;
206
228
  fontFamilyMono: string;
207
229
  fontSize: number;
230
+ typography: ResolvedTypography;
208
231
  borderRadius: number;
209
232
  cornerRadiusMode: CornerRadiusMode;
210
233
  chatInputPlaceholder: string;
@@ -216,6 +239,8 @@ export declare function clearPreviousTenant(storage: SyncKeyValueStorage): void;
216
239
 
217
240
  export declare const clearSession: ActionCreatorWithoutPayload<"auth/clearSession">;
218
241
 
242
+ declare type CodepointRange = readonly [number, number];
243
+
219
244
  export declare const CORNER_RADIUS_MODES: {
220
245
  readonly PILL: "pill";
221
246
  readonly ROUNDED: "rounded";
@@ -236,6 +261,8 @@ export declare const defaultLightThemeStyles: ChatThemeStyles;
236
261
 
237
262
  export declare function detectOrgSwitch(activeOrgId: string, storage: SyncKeyValueStorage): OrgSwitchReason;
238
263
 
264
+ export declare function detectScripts(text: string | null | undefined): Script[];
265
+
239
266
  export declare function detectTextDirection(text: string | null | undefined, fallback?: TextDirection): DirectionResult;
240
267
 
241
268
  export declare const DEVICE_TOKEN_HEADER = "x-device-token";
@@ -278,6 +305,34 @@ export declare const FEATURE_FLAGS: {
278
305
 
279
306
  export declare type FeatureFlag = (typeof FEATURE_FLAGS)[keyof typeof FEATURE_FLAGS];
280
307
 
308
+ export declare const FONT_ROLES: {
309
+ readonly DEFAULT: "default";
310
+ readonly HEADING: "heading";
311
+ readonly MONO: "mono";
312
+ };
313
+
314
+ export declare const FONT_WEIGHT_SLOTS: {
315
+ readonly REGULAR: "regular";
316
+ readonly MEDIUM: "medium";
317
+ readonly SEMIBOLD: "semibold";
318
+ readonly BOLD: "bold";
319
+ };
320
+
321
+ export declare type FontFamilySource = {
322
+ variable?: string;
323
+ } & Partial<Record<FontWeightSlot, string>>;
324
+
325
+ declare interface FontLogger {
326
+ warn: (input: {
327
+ message: string;
328
+ [key: string]: unknown;
329
+ }) => void;
330
+ }
331
+
332
+ export declare type FontRole = (typeof FONT_ROLES)[keyof typeof FONT_ROLES];
333
+
334
+ export declare type FontWeightSlot = (typeof FONT_WEIGHT_SLOTS)[keyof typeof FONT_WEIGHT_SLOTS];
335
+
281
336
  export declare interface ForgotPasswordRequest {
282
337
  email: string;
283
338
  }
@@ -296,6 +351,8 @@ export declare const formatTimestamp: (timestamp: string, now?: Date) => string;
296
351
 
297
352
  export declare const generateUniqueId: () => string;
298
353
 
354
+ export declare const GENERIC_STACKS: Record<FontRole, string>;
355
+
299
356
  export declare const getApiUrl: (path: string) => string;
300
357
 
301
358
  export declare const getAppearanceModeStorageKey: (userId?: string | null) => string;
@@ -399,6 +456,8 @@ export declare const isTokenExpired: (expiresAt: number | null) => boolean;
399
456
 
400
457
  export declare const joinOrgMountBase: (host: string, orgId?: string | null) => string;
401
458
 
459
+ export declare const LANG_DEFAULT_SCRIPT: Record<string, Script>;
460
+
402
461
  export declare const LOG_LEVELS: {
403
462
  readonly DEBUG: "DEBUG";
404
463
  readonly INFO: "INFO";
@@ -434,6 +493,20 @@ export declare type LogInput = LogAttrs & {
434
493
 
435
494
  export declare type LogLevel = (typeof LOG_LEVELS)[keyof typeof LOG_LEVELS];
436
495
 
496
+ export declare const LOGO_ALIGNMENTS: {
497
+ readonly TOP_LEADING: "topLeading";
498
+ readonly TOP: "top";
499
+ readonly TOP_TRAILING: "topTrailing";
500
+ readonly LEADING: "leading";
501
+ readonly CENTER: "center";
502
+ readonly TRAILING: "trailing";
503
+ readonly BOTTOM_LEADING: "bottomLeading";
504
+ readonly BOTTOM: "bottom";
505
+ readonly BOTTOM_TRAILING: "bottomTrailing";
506
+ };
507
+
508
+ export declare type LogoAlignment = (typeof LOGO_ALIGNMENTS)[keyof typeof LOGO_ALIGNMENTS];
509
+
437
510
  export declare const logout: ActionCreatorWithoutPayload<"auth/clearSession">;
438
511
 
439
512
  export declare interface LogoutRequest {
@@ -516,6 +589,8 @@ export declare interface NetworkState {
516
589
  isInternetReachable: boolean | null;
517
590
  }
518
591
 
592
+ export declare function normalizeTypography(cfg: TypographyConfig | undefined, fallback: TypographyRoles): ResolvedTypography;
593
+
519
594
  export declare const ORB_POSITIONS: {
520
595
  readonly FOREGROUND: "foreground";
521
596
  readonly BACKGROUND: "background";
@@ -523,6 +598,16 @@ export declare const ORB_POSITIONS: {
523
598
 
524
599
  export declare type OrbPosition = (typeof ORB_POSITIONS)[keyof typeof ORB_POSITIONS];
525
600
 
601
+ export declare interface OrbVideoConfig {
602
+ background?: string;
603
+ video?: {
604
+ url?: string;
605
+ width?: number;
606
+ height?: number;
607
+ posterUrl?: string;
608
+ };
609
+ }
610
+
526
611
  export declare const ORG_MOUNT_SUFFIX = "chat";
527
612
 
528
613
  export declare interface Organization {
@@ -551,12 +636,20 @@ export declare type PaymentInitPayload = StripePaymentInit | MoyasarPaymentInit
551
636
 
552
637
  export declare type PaymentProviderType = "stripe" | "moyasar" | "chargebee";
553
638
 
639
+ export declare interface PlatformScreens {
640
+ splash?: ScreenConfig;
641
+ landing?: ScreenConfig;
642
+ login?: ScreenConfig;
643
+ }
644
+
554
645
  export declare const PROFILE_LIMITS: {
555
646
  readonly NAME_MAX_LENGTH: 64;
556
647
  readonly PHONE_MIN_LENGTH: 8;
557
648
  readonly PHONE_MAX_LENGTH: 16;
558
649
  };
559
650
 
651
+ export declare function quoteFamily(name: string): string;
652
+
560
653
  export declare const readAccessToken: () => string | null;
561
654
 
562
655
  export declare const readDeviceToken: () => string | null;
@@ -593,8 +686,42 @@ export declare function resolveDirectionFromLang(tag?: string): TextDirection |
593
686
 
594
687
  export declare type ResolvedTheme = Exclude<AppearanceMode, typeof APPEARANCE_MODES.SYSTEM>;
595
688
 
689
+ export declare interface ResolvedTypography {
690
+ locales: Record<string, TypographyRoles>;
691
+ families: Record<string, FontFamilySource>;
692
+ scriptIndex: Record<Script, string[]>;
693
+ }
694
+
695
+ export declare function resolveFontFamily(t: ResolvedTypography, role: FontRole, ctx?: {
696
+ language?: string | null;
697
+ script?: Script;
698
+ }): string;
699
+
596
700
  export declare const sanitizeExpiryDate: (value: string) => string;
597
701
 
702
+ export declare interface ScreenConfig {
703
+ background?: string;
704
+ logo?: BrandLogo;
705
+ image?: BrandLogo;
706
+ }
707
+
708
+ export declare type Script = (typeof SCRIPTS)[keyof typeof SCRIPTS];
709
+
710
+ export declare const SCRIPT_RANGES: Record<Script, readonly CodepointRange[]>;
711
+
712
+ export declare const SCRIPTS: {
713
+ readonly LATIN: "Latn";
714
+ readonly ARABIC: "Arab";
715
+ readonly HEBREW: "Hebr";
716
+ readonly CYRILLIC: "Cyrl";
717
+ readonly GREEK: "Grek";
718
+ readonly DEVANAGARI: "Deva";
719
+ readonly THAI: "Thai";
720
+ readonly HAN: "Hani";
721
+ readonly HIRAGANA_KATAKANA: "Kana";
722
+ readonly HANGUL: "Kore";
723
+ };
724
+
598
725
  export declare interface SessionCreateRequest {
599
726
  email: string;
600
727
  password: string;
@@ -804,6 +931,7 @@ export declare interface SurfaceColors {
804
931
  userMessage?: UserMessageColors;
805
932
  sideMenu?: SideMenuColors;
806
933
  settings?: SettingsColors;
934
+ screenMasking?: string;
807
935
  }
808
936
 
809
937
  export declare interface SyncKeyValueStorage {
@@ -867,10 +995,14 @@ export declare type TransientClassifier = (err: unknown) => boolean;
867
995
  export declare const truncateWordLimit: (text: string, wordLimit: number) => string;
868
996
 
869
997
  export declare interface TypographyConfig {
998
+ locales?: Record<string, TypographyRoles>;
999
+ families?: Record<string, FontFamilySource>;
870
1000
  fontFamily?: string;
871
1001
  fontFamilyMono?: string;
872
1002
  }
873
1003
 
1004
+ export declare type TypographyRoles = Partial<Record<FontRole, string>>;
1005
+
874
1006
  export declare const updateUser: ActionCreatorWithNonInferrablePayload<"auth/updateUser">;
875
1007
 
876
1008
  export declare function useBranding(): BrandingContextValue;
@@ -879,6 +1011,8 @@ export declare function useMessageDirection(msgId: string, text: string | null |
879
1011
 
880
1012
  export declare function useMessageDirections(messages: Message[]): TextDirection[];
881
1013
 
1014
+ export declare function useMessageFontStack(text: string, language?: string | null): string;
1015
+
882
1016
  export declare const useNetworkState: () => NetworkState;
883
1017
 
884
1018
  export declare const USER_TYPES: {
@@ -913,6 +1047,8 @@ export declare const useStorage: () => Storage_2;
913
1047
 
914
1048
  export declare const validateExpiryDate: (value: string) => boolean;
915
1049
 
1050
+ export declare function warnUnknownFamilies(t: ResolvedTypography, logger: FontLogger): void;
1051
+
916
1052
  export declare interface WidgetSurfaceColors {
917
1053
  background?: string;
918
1054
  border?: {
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./textDirection-Dmwjhp8G.cjs"),t=require("@reduxjs/toolkit"),r=require("react"),s=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),s=Number(t[2]);if(r<1||r>12)return!1;const o=new Date,n=o.getFullYear()%100,i=o.getMonth()+1;return!(s<n||s===n&&r<i||r>12)},o=e=>{if(!e)return"";if(!s(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),s=new Date,o=s.getFullYear()%100,n=s.getMonth()+1;if(r<o||r===o&&e<n||e>12)return""}}return e},n={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let i=null,a=null;const u=[];function c(e){if(i=e,u.length>0){const t=u.splice(0,u.length);for(const r of t)e.emit(r)}}function l(e){a=e}function d(e,t){const r=a?function(e){try{return e()??{}}catch{return{}}}(a):{},{message:s,...o}=t,n={...r,...o,level:e,message:s,timestamp:(new Date).toISOString()};i?i.emit(n):(u.length>=200&&u.shift(),u.push(n))}const p={debug(e){d(n.DEBUG,e)},info(e){d(n.INFO,e)},warn(e){d(n.WARN,e)},error(e){d(n.ERROR,e)},flush:()=>i?.flush?.()},g={[n.DEBUG]:0,[n.INFO]:1,[n.WARN]:2,[n.ERROR]:3};function E(e={}){const t=g[e.minLevel??n.DEBUG];return{emit(e){g[e.level]<t||(e.level===n.ERROR?console.error:e.level===n.WARN?console.warn:e.level===n.DEBUG?console.debug:console.info)(e)}}}const m={[n.DEBUG]:5,[n.INFO]:9,[n.WARN]:13,[n.ERROR]:17};function T(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function F(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=T(s));return t}let S=!1,x=null,f=!0;function h(e){f=e}function _(e){S||(S=!0,l(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),c(function(e){const t=[E({minLevel:e.consoleMinLevel??(e.isDev?n.DEBUG:n.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,s=null;const o=[];function n(){s||(s=async function(){const[t,s,n,i]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),a=i.resourceFromAttributes(e.resourceAttrs),u=new n.OTLPLogExporter({url:e.endpoint}),c=new s.LoggerProvider({resource:a,processors:[new s.BatchLogRecordProcessor(u)]});t.logs.setGlobalLoggerProvider(c);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:s,...o}=e;l.emit({severityNumber:m[t],severityText:t,body:JSON.stringify(e),attributes:F(o),timestamp:new Date(s)})},async flush(){await c.forceFlush()}},o.length>0){const e=o.splice(0,o.length);for(const t of e)r.emit(t)}}().catch(()=>{o.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(n(),o.length>=200&&o.shift(),o.push(e)))},async flush(){(s||r)&&(n(),await s,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,s=e.maxQueueSize??2048,o=e.wrapBatch??(e=>e),n=[];let i=null;function a(){return null!==i&&(clearTimeout(i),i=null),0===n.length||0===(t=n.splice(0,n.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){n.length>=s&&n.shift(),n.push(e),n.length>=t?a():null===i&&(i=setTimeout(()=>{i=null,a()},r))},async flush(){await a()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){f&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&x?.())}const O=Object.freeze(Object.defineProperty({__proto__:null,initLogger:_,registerPlatformFlushAttacher:function(e){x=e},resetInitLoggerStateForTests:function(){S=!1,x=null,f=!0},setNetworkLoggingEnabled:h},Symbol.toStringTag,{value:"Module"}));let A,I="",y={},R=null,N=()=>null,C=()=>null,D=()=>null,M=!1;const v=()=>R,B=()=>D(),k=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${I}/api${t}`},b="chat",w={CONVERSATIONS:()=>k("/conversations"),CONVERSATION_STREAM:e=>k(`/conversations/${e}`),CONVERSATION_START:e=>k(`/conversations/${e}/start`),CONVERSATION_TRANSCRIBE:e=>k(`/conversations/${e}/transcribe`),WEBRTC_OFFER:e=>k(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>k(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return k("/transcribe")},get BRANDING(){return k("/branding")},get CONFIG(){return k("/config")},get PROFILE(){return k("/profile")},get AUTH_ME(){return k("/auth/me")},get CHANGE_PASSWORD(){return k("/auth/change-password")},get ORGANIZATIONS_EXISTS(){return k("/organizations/exists")},get DEBUG(){return k("/debug")},get TOOL_SERVERS(){return k("/tool-servers")},TOOL_SERVER_AUTH_START:e=>k(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>k(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return k("/tool-servers/auth/exchange")},get LOG(){return k("/log")}},P={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},L={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},U={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"};let G=!0;const H=3,K=500,$=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(p.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))},W="bridge-toast";function V(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(W,{detail:e}))}const j=W,X={ADMIN:"admin",AUTHENTICATED_USER:"authenticated_user",GUEST_USER:"guest_user"},z=e=>!!e&&Date.now()>=e-P.TOKEN_CLOCK_SKEW_MS,Y=e=>!e||Date.now()>=e-P.TOKEN_REFRESH_THRESHOLD_MS;function J(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),s=atob(r),o=JSON.parse(s);return o&&"object"==typeof o&&!Array.isArray(o)?o:null}catch{return null}}function q(e){const t=J(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}class Z{static instance;events={};constructor(){}static getInstance(){return Z.instance||(Z.instance=new Z),Z.instance}on(e,t,r){const s="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(s),()=>{this.off(e,s)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){p.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const Q=Z.getInstance(),ee={LIGHT:"light",DARK:"dark",SYSTEM:"system"},te=[ee.LIGHT,ee.DARK,ee.SYSTEM],re={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},se={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:re.PILL,chatInputPlaceholder:"Type anything..."},oe={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:re.PILL,chatInputPlaceholder:"Type anything..."};function ne(e){return e===ee.LIGHT?oe:se}const ie=se;function ae(e,t){const r=e.replace("#","");let s;s=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const o=Math.max(0,Math.min(100,t));return`#${s}${Math.round(o/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function ue(e,t){if(!e)return t.fontFamily;switch(e){case"Inter":return"'Inter', sans-serif";case"System":return"system-ui, -apple-system, sans-serif";default:return"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif"}}function ce(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function le(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function de(e){switch(e){case"pill":return re.PILL;case"none":return re.SHARP;default:return 0===parseInt(e??"",10)?re.SHARP:re.ROUNDED}}const pe=r.createContext(void 0),ge=r.createContext(null);let Ee=null;const me=()=>Ee,Te=r.createContext(null),Fe={isConnected:!0,isInternetReachable:!0},Se=t.createSlice({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:s,refreshToken:o,expiresIn:n}=t.payload;void 0!==r&&(e.user=r),void 0!==s&&(e.accessToken=s),void 0!==o&&(e.refreshToken=o),void 0!==n?e.tokenExpiresAt=null===n?null:1e3*n:s&&(e.tokenExpiresAt=Date.now()+P.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:xe,updateUser:fe,clearSession:he,sessionExpired:_e,setSelectedOrgId:Oe}=Se.actions,Ae=xe,Ie=he,ye=t.createListenerMiddleware();ye.startListening({matcher:t.isAnyOf(xe,fe,he,_e),effect:async(e,t)=>{const r=me();if(!r)return;const{auth:s}=t.getState(),o=[];o.push(s.accessToken?r.setItem(L.ACCESS_TOKEN,s.accessToken):r.removeItem(L.ACCESS_TOKEN)),o.push(s.refreshToken?r.setItem(L.REFRESH_TOKEN,s.refreshToken):r.removeItem(L.REFRESH_TOKEN)),o.push(null!=s.tokenExpiresAt?r.setItem(L.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(L.TOKEN_EXPIRES_AT)),o.push(s.user?r.setItem(L.USER,JSON.stringify(s.user)):r.removeItem(L.USER)),(he.match(e)||_e.match(e))&&o.push(r.removeItem(L.LOCATION_CACHE),r.removeItem(L.DEBUG_MODE),r.removeItem(L.APPEARANCE_MODE_KEY),r.removeItem(L.LOCATION_ENABLED),r.removeItem(L.STT_AUTO_SEND),r.removeItem(L.STT_IMPLEMENTATION),r.removeItem(L.SEND_DIAGNOSTICS),r.removeItem(L.ACTIVE_CONVERSATION_ID)),await Promise.all(o)}});const Re=Se.reducer,Ne={lastResponseTime:null},Ce=t.createSlice({name:"indicator",initialState:Ne,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(t.isAnyOf(he,_e),()=>Ne)}}),{setLastResponseTime:De,clearLastResponseTime:Me}=Ce.actions,ve=Ce.reducer;exports.DIRECTION_VECTORS=e.DIRECTION_VECTORS,exports.TEXT_DIRECTION=e.TEXT_DIRECTION,exports.detectTextDirection=e.detectTextDirection,exports.resolveDirectionFromLang=e.resolveDirectionFromLang,exports.useMessageDirection=e.useMessageDirection,exports.useMessageDirections=e.useMessageDirections,exports.API_ENDPOINTS=w,exports.APPEARANCE_MODES=ee,exports.APPEARANCE_MODE_VALUES=te,exports.AUTH_HEADERS=U,exports.AUTH_PATHS={LOGIN:"/auth/login",SIGNUP:"/auth/signup",GUEST:"/auth/guest",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},exports.BRIDGE_TOAST_EVENT_NAME=j,exports.BrandingContext=pe,exports.CORNER_RADIUS_MODES=re,exports.DEVICE_TOKEN_HEADER="x-device-token",exports.EventEmitter=Z,exports.FEATURE_FLAGS={SSO:"sso"},exports.IDP_HINTS={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},exports.INDICATOR_TIMER_ACTIONS={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"},exports.LOG_LEVELS=n,exports.NetworkContext=Te,exports.ORB_POSITIONS={FOREGROUND:"foreground",BACKGROUND:"background"},exports.ORG_MOUNT_SUFFIX=b,exports.PASSWORD_LIMITS={MIN_LENGTH:8,MAX_LENGTH:128},exports.PATTERNS={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},exports.PROFILE_LIMITS={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16},exports.STORAGE_KEYS=L,exports.STT_IMPLEMENTATIONS={ONLINE:"online",DEVICE:"device"},exports.StorageContext=ge,exports.TIMING=P,exports.USER_TYPES=X,exports.brandingToThemeStyles=function(e,t,r=ee.DARK){const s=ne(r);if(!e||!t)return s;const o=t.surface?.chatInput?.border||t.surface?.input?.border,n=t.surface?.userMessage?.border,i=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||s.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||s.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||s.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sidebarBorderColor,widgetBg:t.surface?.widget?.background||s.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||s.settingsGroupBg,inputBorderStyle:o?.style||s.inputBorderStyle,inputBorderColor:o?.color?ae(o.color,o.opacity||100):s.inputBorderColor,inputBorderWidth:o?.width||s.inputBorderWidth,inputBorderOpacity:o?.opacity||100,widgetBorderStyle:i?.style||s.widgetBorderStyle,widgetBorderColor:i?.color?ae(i.color,i.opacity||100):s.widgetBorderColor,widgetBorderWidth:i?.width||s.widgetBorderWidth,widgetBorderOpacity:i?.opacity??s.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||s.placeholderColor,primaryText:t.text?.primary||s.primaryText,secondaryText:t.text?.secondary||s.secondaryText,tertiaryText:t.text?.tertiary||s.tertiaryText,userMsgBg:t.surface?.userMessage?.background||s.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||s.userMsgText,userMsgBorderStyle:n?.style||s.userMsgBorderStyle,userMsgBorderColor:n?.color?ae(n.color,n.opacity||100):s.userMsgBorderColor,userMsgBorderWidth:n?.width||s.userMsgBorderWidth,userMsgBorderOpacity:n?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||s.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||s.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||s.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||s.statusPrimary.solid,background:t.status?.primary?.background||s.statusPrimary.background,text:t.status?.primary?.text||s.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||s.statusSecondary.solid,background:t.status?.secondary?.background||s.statusSecondary.background,text:t.status?.secondary?.text||s.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||s.statusSuccess.solid,background:t.status?.success?.background||s.statusSuccess.background,text:t.status?.success?.text||s.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||s.statusDanger.solid,background:t.status?.danger?.background||s.statusDanger.background,text:t.status?.danger?.text||s.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||s.statusWarning.solid,background:t.status?.warning?.background||s.statusWarning.background,text:t.status?.warning?.text||s.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||s.statusInfo.solid,background:t.status?.info?.background||s.statusInfo.background,text:t.status?.info?.text||s.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||s.statusDiscovery.solid,background:t.status?.discovery?.background||s.statusDiscovery.background,text:t.status?.discovery?.text||s.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||s.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||s.switchUncheckedColor,fontFamily:ue(e.typography?.fontFamily,s),fontFamilyMono:ce(e.typography?.fontFamilyMono,s),fontSize:14,borderRadius:le(e.cornerRadius,s),cornerRadiusMode:de(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}},exports.capitalizeFirst=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",exports.clearLastResponseTime=Me,exports.clearPreviousTenant=function(e){!function(e){try{e.removeItem(L.ACCESS_TOKEN),e.removeItem(L.REFRESH_TOKEN),e.removeItem(L.TOKEN_EXPIRES_AT),e.removeItem(L.USER)}catch{}}(e),function(e){try{e.removeItem(L.ACTIVE_CONVERSATION_ID)}catch{}}(e)},exports.clearSession=he,exports.createTokenRefresher=function(e){const{performRefresh:t,isTransient:r=$,maxAttempts:s=H,backoffBaseMs:o=K}=e;let n=null;return function(){return n||(n=(async()=>{for(let e=0;e<s;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===s-1)break;const n=o*2**e+250*Math.random();await new Promise(e=>setTimeout(e,n))}return null})().finally(()=>{n=null}),n)}},exports.defaultChatThemeStyles=ie,exports.defaultDarkThemeStyles=se,exports.defaultIsTransient=$,exports.defaultLightThemeStyles=oe,exports.detectOrgSwitch=function(e,t){try{const r=t.getItem(L.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=q(t.getItem(L.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}},exports.ensureFreshToken=async()=>Y(B())?await(v()?.())??null:null,exports.eventEmitter=Q,exports.extractTokens=function(e){const t=e.headers.get(U.ACCESS_TOKEN),r=e.headers.get(U.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${U.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${U.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}},exports.formatCVC=e=>e.replace(/\D/g,"").slice(0,4),exports.formatCamelCaseToTitle=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",exports.formatCardNumber=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),exports.formatExpiryDate=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return o(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},exports.formatTimeRemaining=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`},exports.formatTimestamp=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const s=t.getTime()-r.getTime(),o=Math.floor(s/6e4),n=Math.floor(s/36e5),i=Math.floor(s/864e5);return o<1?"Just now":o<60?`${o}m ago`:n<24?`${n}h ago`:i<7?`${i}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},exports.generateUniqueId=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),exports.getApiUrl=k,exports.getAppearanceModeStorageKey=e=>e?`${L.APPEARANCE_MODE_KEY}:${e}`:L.APPEARANCE_MODE_KEY,exports.getArrayOfObjects=function(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e},exports.getBaseUrl=()=>I,exports.getCustomHeaders=()=>y,exports.getDefaultThemeStyles=ne,exports.getErrorMessage=function(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t},exports.getInitials=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},exports.getPaymentId=function(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id},exports.getPaymentProviderHint=()=>A,exports.getSendDiagnostics=()=>G,exports.getStorageRef=me,exports.getTimeUntilExpiry=e=>e?Math.max(0,e-Date.now()):0,exports.getTimeUntilRefresh=e=>e?Math.max(0,e-P.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,exports.getTokenRefreshHandler=v,exports.handleSharedEvent=function(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}},exports.hasWidgets=e=>Array.isArray(e.widget)&&e.widget.length>0,exports.hexToRgba=function(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const s=parseInt(r.slice(0,2),16),o=parseInt(r.slice(2,4),16),n=parseInt(r.slice(4,6),16),i=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${s}, ${o}, ${n}, ${Math.round(i*t*1e3)/1e3})`},exports.hydrateAppBoot=async e=>{const t=await e.getItem(L.SEND_DIAGNOSTICS);G=null===t||"true"===t},exports.hydrateSession=e=>async t=>{const[r,s,o,n]=await Promise.all([e.getItem(L.ACCESS_TOKEN),e.getItem(L.REFRESH_TOKEN),e.getItem(L.TOKEN_EXPIRES_AT),e.getItem(L.USER)]),i=o?parseInt(o,10):null;if((!r||!i||z(i))&&!s)return void(r&&await Promise.all([e.removeItem(L.ACCESS_TOKEN),e.removeItem(L.REFRESH_TOKEN),e.removeItem(L.TOKEN_EXPIRES_AT),e.removeItem(L.USER)]));let a=null;if(n)try{a=JSON.parse(n)}catch(e){p.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(xe({user:a,accessToken:r,refreshToken:s,expiresIn:null!=i?i/1e3:null}))},exports.indicatorReducer=ve,exports.initLogger=_,exports.initializeChatConfig=e=>{I=e.baseUrl,y=e.customHeaders||{},A=e.paymentProvider},exports.isDevMode=()=>M,exports.isGuest=function(e){return e?.type===X.GUEST_USER},exports.isTokenAboutToExpire=Y,exports.isTokenExpired=z,exports.joinOrgMountBase=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${b}`:`${e}/${b}`,exports.logger=p,exports.logout=Ie,exports.parseJwtPayload=J,exports.parseOrgFromJwt=q,exports.readAccessToken=()=>N(),exports.readDeviceToken=()=>C(),exports.readTokenExpiresAt=B,exports.registerEventListener=function(e,t){return Q.on(e,t)},exports.registerLoggerContextProvider=l,exports.registerLoggerSink=c,exports.removeSpecialCharsAndSpaces=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",exports.resetLoggerForTests=async function(){i=null,a=null,u.length=0,(await Promise.resolve().then(()=>O)).resetInitLoggerStateForTests()},exports.sanitizeExpiryDate=o,exports.sessionExpired=_e,exports.sessionListenerMiddleware=ye,exports.sessionReducer=Re,exports.setAccessTokenReader=e=>{N=e},exports.setCredentials=Ae,exports.setDeviceTokenReader=e=>{C=e},exports.setIsDev=e=>{M=e},exports.setLastResponseTime=De,exports.setModuleStorage=function(e){Ee=e},exports.setNetworkLoggingEnabled=h,exports.setSelectedOrgId=Oe,exports.setSession=xe,exports.setTokenExpiresAtReader=e=>{D=e},exports.setTokenRefreshHandler=e=>{R=e},exports.showErrorToast=(e="Please try again")=>V({title:"Error",description:e,variant:"destructive"}),exports.showSuccessToast=(e="Successfully")=>V({title:"Success",description:e,variant:"default"}),exports.showToast=e=>V(e),exports.truncateWordLimit=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},exports.updateUser=fe,exports.useBranding=function(){const e=r.useContext(pe);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e},exports.useNetworkState=()=>{const e=r.useContext(Te),t=r.useCallback(t=>e?e.subscribe(t):()=>{},[e]),s=r.useCallback(()=>e?e.getState():Fe,[e]);return r.useSyncExternalStore(t,s,s)},exports.useStorage=()=>{const e=r.useContext(ge);if(!e)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return e},exports.validateExpiryDate=s,exports.writeOrgToStorage=function(e,t){try{t.setItem(L.SELECTED_ORG_ID,e),t.setItem(L.SELECTED_ORG_NAME,e)}catch{}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./textDirection-Dmwjhp8G.cjs"),t=require("react"),r=require("@reduxjs/toolkit"),s=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),s=Number(t[2]);if(r<1||r>12)return!1;const o=new Date,n=o.getFullYear()%100,a=o.getMonth()+1;return!(s<n||s===n&&r<a||r>12)},o=e=>{if(!e)return"";if(!s(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),s=new Date,o=s.getFullYear()%100,n=s.getMonth()+1;if(r<o||r===o&&e<n||e>12)return""}}return e},n={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let a=null,i=null;const c=[];function u(e){if(a=e,c.length>0){const t=c.splice(0,c.length);for(const r of t)e.emit(r)}}function l(e){i=e}function d(e,t){const r=i?function(e){try{return e()??{}}catch{return{}}}(i):{},{message:s,...o}=t,n={...r,...o,level:e,message:s,timestamp:(new Date).toISOString()};a?a.emit(n):(c.length>=200&&c.shift(),c.push(n))}const p={debug(e){d(n.DEBUG,e)},info(e){d(n.INFO,e)},warn(e){d(n.WARN,e)},error(e){d(n.ERROR,e)},flush:()=>a?.flush?.()},g={[n.DEBUG]:0,[n.INFO]:1,[n.WARN]:2,[n.ERROR]:3};function E(e={}){const t=g[e.minLevel??n.DEBUG];return{emit(e){g[e.level]<t||(e.level===n.ERROR?console.error:e.level===n.WARN?console.warn:e.level===n.DEBUG?console.debug:console.info)(e)}}}const f={[n.DEBUG]:5,[n.INFO]:9,[n.WARN]:13,[n.ERROR]:17};function m(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function T(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=m(s));return t}let S=!1,h=null,F=!0;function x(e){F=e}function A(e){S||(S=!0,l(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),u(function(e){const t=[E({minLevel:e.consoleMinLevel??(e.isDev?n.DEBUG:n.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,s=null;const o=[];function n(){s||(s=async function(){const[t,s,n,a]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),i=a.resourceFromAttributes(e.resourceAttrs),c=new n.OTLPLogExporter({url:e.endpoint}),u=new s.LoggerProvider({resource:i,processors:[new s.BatchLogRecordProcessor(c)]});t.logs.setGlobalLoggerProvider(u);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:s,...o}=e;l.emit({severityNumber:f[t],severityText:t,body:JSON.stringify(e),attributes:T(o),timestamp:new Date(s)})},async flush(){await u.forceFlush()}},o.length>0){const e=o.splice(0,o.length);for(const t of e)r.emit(t)}}().catch(()=>{o.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(n(),o.length>=200&&o.shift(),o.push(e)))},async flush(){(s||r)&&(n(),await s,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,s=e.maxQueueSize??2048,o=e.wrapBatch??(e=>e),n=[];let a=null;function i(){return null!==a&&(clearTimeout(a),a=null),0===n.length||0===(t=n.splice(0,n.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){n.length>=s&&n.shift(),n.push(e),n.length>=t?i():null===a&&(a=setTimeout(()=>{a=null,i()},r))},async flush(){await i()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){F&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&h?.())}const I=Object.freeze(Object.defineProperty({__proto__:null,initLogger:A,registerPlatformFlushAttacher:function(e){h=e},resetInitLoggerStateForTests:function(){S=!1,h=null,F=!0},setNetworkLoggingEnabled:x},Symbol.toStringTag,{value:"Module"}));let y,O="",R={},_=null,N=()=>null,C=()=>null,D=()=>null,M=!1;const L=()=>_,v=()=>D(),w=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${O}/api${t}`},B="chat",b={CONVERSATIONS:()=>w("/conversations"),CONVERSATION_STREAM:e=>w(`/conversations/${e}`),CONVERSATION_START:e=>w(`/conversations/${e}/start`),CONVERSATION_TRANSCRIBE:e=>w(`/conversations/${e}/transcribe`),WEBRTC_OFFER:e=>w(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>w(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return w("/transcribe")},get BRANDING(){return w("/branding")},get CONFIG(){return w("/config")},get PROFILE(){return w("/profile")},get AUTH_ME(){return w("/auth/me")},get CHANGE_PASSWORD(){return w("/auth/change-password")},get ORGANIZATIONS_EXISTS(){return w("/organizations/exists")},get DEBUG(){return w("/debug")},get TOOL_SERVERS(){return w("/tool-servers")},TOOL_SERVER_AUTH_START:e=>w(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>w(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return w("/tool-servers/auth/exchange")},get LOG(){return w("/log")}},k={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},P={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},G={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"};let U=!0;const H=3,K=500,$=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(p.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))},W="bridge-toast";function j(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(W,{detail:e}))}const V=W,Y={ADMIN:"admin",AUTHENTICATED_USER:"authenticated_user",GUEST_USER:"guest_user"},z=e=>!!e&&Date.now()>=e-k.TOKEN_CLOCK_SKEW_MS,X=e=>!e||Date.now()>=e-k.TOKEN_REFRESH_THRESHOLD_MS;function J(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),s=atob(r),o=JSON.parse(s);return o&&"object"==typeof o&&!Array.isArray(o)?o:null}catch{return null}}function q(e){const t=J(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}const Z={LATIN:"Latn",ARABIC:"Arab",HEBREW:"Hebr",CYRILLIC:"Cyrl",GREEK:"Grek",DEVANAGARI:"Deva",THAI:"Thai",HAN:"Hani",HIRAGANA_KATAKANA:"Kana",HANGUL:"Kore"},Q={Latn:[[65,90],[97,122],[170,170],[186,186],[192,214],[216,246],[248,591],[592,687],[7680,7935],[11360,11391],[42786,42887],[42891,42957],[42960,42961],[42963,42963],[42965,42972],[42994,43007],[43824,43866],[43868,43876],[43878,43881],[64256,64262],[65313,65338],[65345,65370]],Arab:[[1568,1599],[1601,1610],[1646,1647],[1649,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1788],[1791,1791],[1872,1919],[2208,2249],[2160,2183],[2185,2190],[64336,64433],[64467,64829],[64848,64911],[64914,64967],[65008,65019],[65136,65140],[65142,65276]],Hebr:[[1488,1514],[1519,1522],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64335]],Cyrl:[[1024,1153],[1162,1327],[7296,7306],[42560,42606],[42623,42653]],Grek:[[880,883],[886,887],[890,893],[895,895],[902,902],[904,906],[908,908],[910,929],[931,993],[1008,1013],[1015,1023],[7936,7957],[7960,7965],[7968,8005],[8008,8013],[8016,8023],[8025,8025],[8027,8027],[8029,8029],[8031,8061],[8064,8116],[8118,8124],[8126,8126],[8130,8132],[8134,8140],[8144,8147],[8150,8155],[8160,8172],[8178,8180],[8182,8188]],Deva:[[2308,2361],[2365,2365],[2384,2384],[2392,2401],[2417,2431]],Thai:[[3585,3632],[3634,3635],[3648,3654]],Hani:[[12293,12293],[13312,19903],[19968,40959],[63744,64109],[64112,64217],[131072,173791],[173824,177977],[177984,178205],[178208,183969],[183984,191456]],Kana:[[12353,12438],[12445,12447],[12449,12538],[12541,12543],[12784,12799],[65382,65391],[65393,65437]],Kore:[[4352,4607],[12593,12686],[43360,43388],[44032,55203],[55216,55238],[55243,55291]]},ee=[Z.LATIN,Z.ARABIC,Z.HEBREW,Z.CYRILLIC,Z.GREEK,Z.DEVANAGARI,Z.THAI,Z.HAN,Z.HIRAGANA_KATAKANA,Z.HANGUL],te=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g;function re(e){for(const t of ee)for(const[r,s]of Q[t])if(e>=r&&e<=s)return t;return null}function se(e){const t=(e??"").replace(te," "),r=new Set,s=[];for(const e of t){const t=re(e.codePointAt(0)??0);t&&!r.has(t)&&(r.add(t),s.push(t))}return s}const oe={DEFAULT:"default",HEADING:"heading",MONO:"mono"},ne={REGULAR:"regular",MEDIUM:"medium",SEMIBOLD:"semibold",BOLD:"bold"},ae={LIGHT:"light",DARK:"dark",SYSTEM:"system"},ie=[ae.LIGHT,ae.DARK,ae.SYSTEM],ce="default",ue={[oe.DEFAULT]:"system-ui, -apple-system, sans-serif",[oe.HEADING]:"system-ui, -apple-system, sans-serif",[oe.MONO]:"ui-monospace, monospace"},le={ar:Z.ARABIC,fa:Z.ARABIC,ur:Z.ARABIC,he:Z.HEBREW,yi:Z.HEBREW,ru:Z.CYRILLIC,bg:Z.CYRILLIC,sr:Z.CYRILLIC,uk:Z.CYRILLIC,mk:Z.CYRILLIC,be:Z.CYRILLIC,kk:Z.CYRILLIC,el:Z.GREEK,hi:Z.DEVANAGARI,mr:Z.DEVANAGARI,ne:Z.DEVANAGARI,th:Z.THAI,zh:Z.HAN,ja:Z.HIRAGANA_KATAKANA,ko:Z.HANGUL},de=new Set(["serif","sans-serif","monospace","cursive","fantasy","math","system-ui","ui-serif","ui-sans-serif","ui-monospace","ui-rounded","-apple-system","blinkmacsystemfont"]),pe=new Set(["SF Pro","SF Pro Display","SF Mono","system-ui","System","monospace","sans-serif"]),ge=new Set(Object.values(Z)),Ee=Object.values(Z);function fe(e){const t=e.split(/[-_]/);for(const e of t.slice(1)){if(1===e.length)break;const t=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase();if(ge.has(t))return t}const r=t[0]?.toLowerCase()??"";if(le[r])return le[r];if("undefined"!=typeof Intl&&"Locale"in Intl)try{const t=new Intl.Locale(e).maximize().script;if(t&&ge.has(t))return t}catch{}return Z.LATIN}function me(e,t){const r={...e?.families??{}},s=e?.locales;let o;if(s)o={...s};else{const r=e?.fontFamily,s=e?.fontFamilyMono;o={[ce]:{[oe.DEFAULT]:r??t.default,[oe.HEADING]:r??t.heading??t.default,[oe.MONO]:s??t.mono}}}const n=o[ce]??{};o[ce]={[oe.DEFAULT]:n.default??t.default,[oe.HEADING]:n.heading??t.heading??t.default,[oe.MONO]:n.mono??t.mono??t.default};const a=function(){const e={};for(const t of Ee)e[t]=[];return e}();for(const e of Object.keys(o))e!==ce&&a[fe(e)].push(e);return{locales:o,families:r,scriptIndex:a}}function Te(e){const t=e.trim();return t?de.has(t.toLowerCase())||t.startsWith('"')&&t.endsWith('"')?t:`"${t}"`:t}function Se(e,t){return e?.[t]}function he(e,t,r){const s=[],o=new Set,n=e=>{e&&(o.has(e)||(o.add(e),s.push(e)))};for(const s of r)for(const r of e.scriptIndex[s])n(Se(e.locales[r],t));n(Se(e.locales[ce],t)??e.locales[ce].default);const a=s.map(Te);return a.length?`${a.join(", ")}, ${ue[t]}`:ue[t]}function Fe(e,t){return he(e,t,Object.keys(e.scriptIndex))}const xe={[ne.REGULAR]:400,[ne.MEDIUM]:500,[ne.SEMIBOLD]:600,[ne.BOLD]:700};function Ae(e){const t=function(e){const t=e.split(/[?#]/)[0].toLowerCase();return t.endsWith(".woff2")?"woff2":t.endsWith(".woff")?"woff":t.endsWith(".ttf")?"truetype":t.endsWith(".otf")?"opentype":void 0}(e);return t?`src: url("${e}") format("${t}");`:`src: url("${e}");`}function Ie(e){const t=[];for(const r of Ee)if(e.has(r))for(const[e,s]of Q[r]){const r=`U+${e.toString(16).toUpperCase()}`;t.push(e===s?r:`${r}-${s.toString(16).toUpperCase()}`)}return t.join(", ")}function ye(e,t,r,s){const o=["@font-face {",` font-family: ${Te(e)};`,` ${Ae(r)}`,` font-weight: ${t};`," font-style: normal;"," font-display: swap;"];return s&&o.push(` unicode-range: ${s};`),o.push("}"),o.join("\n")}const Oe=new WeakSet;function Re(e,t){if(Oe.has(e))return;Oe.add(e);const r=new Set;for(const s of Object.values(e.locales))for(const o of Object.values(s))o&&!r.has(o)&&(r.add(o),e.families[o]||pe.has(o)||t.warn({message:`Typography family "${o}" has no families entry and is not a known system font; falling back to the generic stack.`,font_family:o}))}const _e=t.createContext(void 0);function Ne(){const e=t.useContext(_e);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e}class Ce{static instance;events={};constructor(){}static getInstance(){return Ce.instance||(Ce.instance=new Ce),Ce.instance}on(e,t,r){const s="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(s),()=>{this.off(e,s)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){p.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const De=Ce.getInstance(),Me={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},Le={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",screenMaskingColor:"#000000",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyHeading:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,typography:me(void 0,{default:"SF Pro Display",heading:"SF Pro Display",mono:"SF Mono"}),borderRadius:16,cornerRadiusMode:Me.PILL,chatInputPlaceholder:"Type anything..."},ve={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",screenMaskingColor:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyHeading:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,typography:me(void 0,{default:"SF Pro Display",heading:"SF Pro Display",mono:"SF Mono"}),borderRadius:16,cornerRadiusMode:Me.PILL,chatInputPlaceholder:"Type anything..."};function we(e){return e===ae.LIGHT?ve:Le}const Be=Le;function be(e,t){const r=e.replace("#","");let s;s=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const o=Math.max(0,Math.min(100,t));return`#${s}${Math.round(o/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function ke(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function Pe(e){switch(e){case"pill":return Me.PILL;case"none":return Me.SHARP;default:return 0===parseInt(e??"",10)?Me.SHARP:Me.ROUNDED}}const Ge=t.createContext(null);let Ue=null;const He=()=>Ue,Ke=t.createContext(null),$e={isConnected:!0,isInternetReachable:!0},We=r.createSlice({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:s,refreshToken:o,expiresIn:n}=t.payload;void 0!==r&&(e.user=r),void 0!==s&&(e.accessToken=s),void 0!==o&&(e.refreshToken=o),void 0!==n?e.tokenExpiresAt=null===n?null:1e3*n:s&&(e.tokenExpiresAt=Date.now()+k.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:je,updateUser:Ve,clearSession:Ye,sessionExpired:ze,setSelectedOrgId:Xe}=We.actions,Je=je,qe=Ye,Ze=r.createListenerMiddleware();Ze.startListening({matcher:r.isAnyOf(je,Ve,Ye,ze),effect:async(e,t)=>{const r=He();if(!r)return;const{auth:s}=t.getState(),o=[];o.push(s.accessToken?r.setItem(P.ACCESS_TOKEN,s.accessToken):r.removeItem(P.ACCESS_TOKEN)),o.push(s.refreshToken?r.setItem(P.REFRESH_TOKEN,s.refreshToken):r.removeItem(P.REFRESH_TOKEN)),o.push(null!=s.tokenExpiresAt?r.setItem(P.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(P.TOKEN_EXPIRES_AT)),o.push(s.user?r.setItem(P.USER,JSON.stringify(s.user)):r.removeItem(P.USER)),(Ye.match(e)||ze.match(e))&&o.push(r.removeItem(P.LOCATION_CACHE),r.removeItem(P.DEBUG_MODE),r.removeItem(P.APPEARANCE_MODE_KEY),r.removeItem(P.LOCATION_ENABLED),r.removeItem(P.STT_AUTO_SEND),r.removeItem(P.STT_IMPLEMENTATION),r.removeItem(P.SEND_DIAGNOSTICS),r.removeItem(P.ACTIVE_CONVERSATION_ID)),await Promise.all(o)}});const Qe=We.reducer,et={lastResponseTime:null},tt=r.createSlice({name:"indicator",initialState:et,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(r.isAnyOf(Ye,ze),()=>et)}}),{setLastResponseTime:rt,clearLastResponseTime:st}=tt.actions,ot=tt.reducer;exports.DIRECTION_VECTORS=e.DIRECTION_VECTORS,exports.TEXT_DIRECTION=e.TEXT_DIRECTION,exports.detectTextDirection=e.detectTextDirection,exports.resolveDirectionFromLang=e.resolveDirectionFromLang,exports.useMessageDirection=e.useMessageDirection,exports.useMessageDirections=e.useMessageDirections,exports.API_ENDPOINTS=b,exports.APPEARANCE_MODES=ae,exports.APPEARANCE_MODE_VALUES=ie,exports.AUTH_HEADERS=G,exports.AUTH_PATHS={LOGIN:"/auth/login",SIGNUP:"/auth/signup",GUEST:"/auth/guest",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},exports.BRIDGE_TOAST_EVENT_NAME=V,exports.BrandingContext=_e,exports.CORNER_RADIUS_MODES=Me,exports.DEVICE_TOKEN_HEADER="x-device-token",exports.EventEmitter=Ce,exports.FEATURE_FLAGS={SSO:"sso"},exports.FONT_ROLES=oe,exports.FONT_WEIGHT_SLOTS=ne,exports.GENERIC_STACKS=ue,exports.IDP_HINTS={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},exports.INDICATOR_TIMER_ACTIONS={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"},exports.LANG_DEFAULT_SCRIPT=le,exports.LOGO_ALIGNMENTS={TOP_LEADING:"topLeading",TOP:"top",TOP_TRAILING:"topTrailing",LEADING:"leading",CENTER:"center",TRAILING:"trailing",BOTTOM_LEADING:"bottomLeading",BOTTOM:"bottom",BOTTOM_TRAILING:"bottomTrailing"},exports.LOG_LEVELS=n,exports.NetworkContext=Ke,exports.ORB_POSITIONS={FOREGROUND:"foreground",BACKGROUND:"background"},exports.ORG_MOUNT_SUFFIX=B,exports.PASSWORD_LIMITS={MIN_LENGTH:8,MAX_LENGTH:128},exports.PATTERNS={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},exports.PROFILE_LIMITS={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16},exports.SCRIPTS=Z,exports.SCRIPT_RANGES=Q,exports.STORAGE_KEYS=P,exports.STT_IMPLEMENTATIONS={ONLINE:"online",DEVICE:"device"},exports.StorageContext=Ge,exports.TIMING=k,exports.USER_TYPES=Y,exports.brandingToThemeStyles=function(e,t,r=ae.DARK){const s=we(r);if(!e||!t)return s;const o=me(e.typography,{default:s.typography.locales.default.default,heading:s.typography.locales.default.heading,mono:s.typography.locales.default.mono});Re(o,p);const n=t.surface?.chatInput?.border||t.surface?.input?.border,a=t.surface?.userMessage?.border,i=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||s.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||s.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||s.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sidebarBorderColor,widgetBg:t.surface?.widget?.background||s.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||s.settingsGroupBg,screenMaskingColor:t.surface?.screenMasking||s.screenMaskingColor,inputBorderStyle:n?.style||s.inputBorderStyle,inputBorderColor:n?.color?be(n.color,n.opacity||100):s.inputBorderColor,inputBorderWidth:n?.width||s.inputBorderWidth,inputBorderOpacity:n?.opacity||100,widgetBorderStyle:i?.style||s.widgetBorderStyle,widgetBorderColor:i?.color?be(i.color,i.opacity||100):s.widgetBorderColor,widgetBorderWidth:i?.width||s.widgetBorderWidth,widgetBorderOpacity:i?.opacity??s.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||s.placeholderColor,primaryText:t.text?.primary||s.primaryText,secondaryText:t.text?.secondary||s.secondaryText,tertiaryText:t.text?.tertiary||s.tertiaryText,userMsgBg:t.surface?.userMessage?.background||s.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||s.userMsgText,userMsgBorderStyle:a?.style||s.userMsgBorderStyle,userMsgBorderColor:a?.color?be(a.color,a.opacity||100):s.userMsgBorderColor,userMsgBorderWidth:a?.width||s.userMsgBorderWidth,userMsgBorderOpacity:a?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||s.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||s.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||s.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||s.statusPrimary.solid,background:t.status?.primary?.background||s.statusPrimary.background,text:t.status?.primary?.text||s.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||s.statusSecondary.solid,background:t.status?.secondary?.background||s.statusSecondary.background,text:t.status?.secondary?.text||s.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||s.statusSuccess.solid,background:t.status?.success?.background||s.statusSuccess.background,text:t.status?.success?.text||s.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||s.statusDanger.solid,background:t.status?.danger?.background||s.statusDanger.background,text:t.status?.danger?.text||s.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||s.statusWarning.solid,background:t.status?.warning?.background||s.statusWarning.background,text:t.status?.warning?.text||s.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||s.statusInfo.solid,background:t.status?.info?.background||s.statusInfo.background,text:t.status?.info?.text||s.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||s.statusDiscovery.solid,background:t.status?.discovery?.background||s.statusDiscovery.background,text:t.status?.discovery?.text||s.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||s.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||s.switchUncheckedColor,fontFamily:Fe(o,oe.DEFAULT),fontFamilyHeading:Fe(o,oe.HEADING),fontFamilyMono:Fe(o,oe.MONO),fontSize:14,typography:o,borderRadius:ke(e.cornerRadius,s),cornerRadiusMode:Pe(e.cornerRadius),chatInputPlaceholder:e.startScreen?.inputPlaceholder??s.chatInputPlaceholder}},exports.buildFontFaceCss=function(e){const t=function(e){const t=new Map;for(const r of Ee)for(const s of e.scriptIndex[r])for(const o of Object.values(oe)){const n=e.locales[s]?.[o];n&&(t.has(n)||t.set(n,new Set),t.get(n).add(r))}return t}(e),r=new Set(Object.values(oe).map(t=>e.locales[ce]?.[t]).filter(e=>Boolean(e))),s=[];for(const[o,n]of Object.entries(e.families)){const e=r.has(o)?void 0:t.get(o),a=e?Ie(e):"";if(n.variable)s.push(ye(o,"100 900",n.variable,a));else for(const e of Object.values(ne)){const t=n[e];t&&s.push(ye(o,String(xe[e]),t,a))}}return s.join("\n\n")},exports.buildFontStack=he,exports.buildFullFontStack=Fe,exports.capitalizeFirst=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",exports.clearLastResponseTime=st,exports.clearPreviousTenant=function(e){!function(e){try{e.removeItem(P.ACCESS_TOKEN),e.removeItem(P.REFRESH_TOKEN),e.removeItem(P.TOKEN_EXPIRES_AT),e.removeItem(P.USER)}catch{}}(e),function(e){try{e.removeItem(P.ACTIVE_CONVERSATION_ID)}catch{}}(e)},exports.clearSession=Ye,exports.createTokenRefresher=function(e){const{performRefresh:t,isTransient:r=$,maxAttempts:s=H,backoffBaseMs:o=K}=e;let n=null;return function(){return n||(n=(async()=>{for(let e=0;e<s;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===s-1)break;const n=o*2**e+250*Math.random();await new Promise(e=>setTimeout(e,n))}return null})().finally(()=>{n=null}),n)}},exports.defaultChatThemeStyles=Be,exports.defaultDarkThemeStyles=Le,exports.defaultIsTransient=$,exports.defaultLightThemeStyles=ve,exports.detectOrgSwitch=function(e,t){try{const r=t.getItem(P.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=q(t.getItem(P.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}},exports.detectScripts=se,exports.ensureFreshToken=async()=>X(v())?await(L()?.())??null:null,exports.eventEmitter=De,exports.extractTokens=function(e){const t=e.headers.get(G.ACCESS_TOKEN),r=e.headers.get(G.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${G.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${G.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}},exports.formatCVC=e=>e.replace(/\D/g,"").slice(0,4),exports.formatCamelCaseToTitle=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",exports.formatCardNumber=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),exports.formatExpiryDate=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return o(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},exports.formatTimeRemaining=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`},exports.formatTimestamp=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const s=t.getTime()-r.getTime(),o=Math.floor(s/6e4),n=Math.floor(s/36e5),a=Math.floor(s/864e5);return o<1?"Just now":o<60?`${o}m ago`:n<24?`${n}h ago`:a<7?`${a}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},exports.generateUniqueId=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),exports.getApiUrl=w,exports.getAppearanceModeStorageKey=e=>e?`${P.APPEARANCE_MODE_KEY}:${e}`:P.APPEARANCE_MODE_KEY,exports.getArrayOfObjects=function(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e},exports.getBaseUrl=()=>O,exports.getCustomHeaders=()=>R,exports.getDefaultThemeStyles=we,exports.getErrorMessage=function(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t},exports.getInitials=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},exports.getPaymentId=function(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id},exports.getPaymentProviderHint=()=>y,exports.getSendDiagnostics=()=>U,exports.getStorageRef=He,exports.getTimeUntilExpiry=e=>e?Math.max(0,e-Date.now()):0,exports.getTimeUntilRefresh=e=>e?Math.max(0,e-k.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,exports.getTokenRefreshHandler=L,exports.handleSharedEvent=function(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}},exports.hasWidgets=e=>Array.isArray(e.widget)&&e.widget.length>0,exports.hexToRgba=function(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const s=parseInt(r.slice(0,2),16),o=parseInt(r.slice(2,4),16),n=parseInt(r.slice(4,6),16),a=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${s}, ${o}, ${n}, ${Math.round(a*t*1e3)/1e3})`},exports.hydrateAppBoot=async e=>{const t=await e.getItem(P.SEND_DIAGNOSTICS);U=null===t||"true"===t},exports.hydrateSession=e=>async t=>{const[r,s,o,n]=await Promise.all([e.getItem(P.ACCESS_TOKEN),e.getItem(P.REFRESH_TOKEN),e.getItem(P.TOKEN_EXPIRES_AT),e.getItem(P.USER)]),a=o?parseInt(o,10):null;if((!r||!a||z(a))&&!s)return void(r&&await Promise.all([e.removeItem(P.ACCESS_TOKEN),e.removeItem(P.REFRESH_TOKEN),e.removeItem(P.TOKEN_EXPIRES_AT),e.removeItem(P.USER)]));let i=null;if(n)try{i=JSON.parse(n)}catch(e){p.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(je({user:i,accessToken:r,refreshToken:s,expiresIn:null!=a?a/1e3:null}))},exports.indicatorReducer=ot,exports.initLogger=A,exports.initializeChatConfig=e=>{O=e.baseUrl,R=e.customHeaders||{},y=e.paymentProvider},exports.isDevMode=()=>M,exports.isGuest=function(e){return e?.type===Y.GUEST_USER},exports.isTokenAboutToExpire=X,exports.isTokenExpired=z,exports.joinOrgMountBase=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${B}`:`${e}/${B}`,exports.logger=p,exports.logout=qe,exports.normalizeTypography=me,exports.parseJwtPayload=J,exports.parseOrgFromJwt=q,exports.quoteFamily=Te,exports.readAccessToken=()=>N(),exports.readDeviceToken=()=>C(),exports.readTokenExpiresAt=v,exports.registerEventListener=function(e,t){return De.on(e,t)},exports.registerLoggerContextProvider=l,exports.registerLoggerSink=u,exports.removeSpecialCharsAndSpaces=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",exports.resetLoggerForTests=async function(){a=null,i=null,c.length=0,(await Promise.resolve().then(()=>I)).resetInitLoggerStateForTests()},exports.resolveFontFamily=function(e,t,r={}){const{language:s,script:o}=r;if(s){const r=Se(e.locales[s],t);if(r)return r}const n=o??(s?fe(s):void 0);if(n)for(const r of e.scriptIndex[n]){const s=Se(e.locales[r],t);if(s)return s}return Se(e.locales[ce],t)??e.locales[ce].default??""},exports.sanitizeExpiryDate=o,exports.sessionExpired=ze,exports.sessionListenerMiddleware=Ze,exports.sessionReducer=Qe,exports.setAccessTokenReader=e=>{N=e},exports.setCredentials=Je,exports.setDeviceTokenReader=e=>{C=e},exports.setIsDev=e=>{M=e},exports.setLastResponseTime=rt,exports.setModuleStorage=function(e){Ue=e},exports.setNetworkLoggingEnabled=x,exports.setSelectedOrgId=Xe,exports.setSession=je,exports.setTokenExpiresAtReader=e=>{D=e},exports.setTokenRefreshHandler=e=>{_=e},exports.showErrorToast=(e="Please try again")=>j({title:"Error",description:e,variant:"destructive"}),exports.showSuccessToast=(e="Successfully")=>j({title:"Success",description:e,variant:"default"}),exports.showToast=e=>j(e),exports.truncateWordLimit=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},exports.updateUser=Ve,exports.useBranding=Ne,exports.useMessageFontStack=function(e,r){const{themeStyles:s}=Ne(),o=s.typography,n=t.useMemo(()=>{if(r){const e=r.split(/[-_]/)[0].toLowerCase(),t=le[e];if(t)return[t]}return se(e)},[e,r]);return t.useMemo(()=>he(o,oe.DEFAULT,n),[o,n])},exports.useNetworkState=()=>{const e=t.useContext(Ke),r=t.useCallback(t=>e?e.subscribe(t):()=>{},[e]),s=t.useCallback(()=>e?e.getState():$e,[e]);return t.useSyncExternalStore(r,s,s)},exports.useStorage=()=>{const e=t.useContext(Ge);if(!e)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return e},exports.validateExpiryDate=s,exports.warnUnknownFamilies=Re,exports.writeOrgToStorage=function(e,t){try{t.setItem(P.SELECTED_ORG_ID,e),t.setItem(P.SELECTED_ORG_NAME,e)}catch{}};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{D as e,T as t,d as r,r as s,u as n,a as o}from"./textDirection-CmyE93hC.js";import{createSlice as i,createListenerMiddleware as a,isAnyOf as u}from"@reduxjs/toolkit";import{createContext as c,useContext as l,useCallback as d,useSyncExternalStore as g}from"react";const E=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},p=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),F=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const s=t.getTime()-r.getTime(),n=Math.floor(s/6e4),o=Math.floor(s/36e5),i=Math.floor(s/864e5);return n<1?"Just now":n<60?`${n}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},m=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",f=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",h=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",S=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),T=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),s=Number(t[2]);if(r<1||r>12)return!1;const n=new Date,o=n.getFullYear()%100,i=n.getMonth()+1;return!(s<o||s===o&&r<i||r>12)},_=e=>{if(!e)return"";if(!T(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),s=new Date,n=s.getFullYear()%100,o=s.getMonth()+1;if(r<n||r===n&&e<o||e>12)return""}}return e},y=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return _(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},O=e=>e.replace(/\D/g,"").slice(0,4);function I(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e}const A=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},R=e=>Array.isArray(e.widget)&&e.widget.length>0;function N(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t}const C={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let x=null,M=null;const D=[];function B(e){if(x=e,D.length>0){const t=D.splice(0,D.length);for(const r of t)e.emit(r)}}function v(e){M=e}async function b(){x=null,M=null,D.length=0,(await Promise.resolve().then(()=>X)).resetInitLoggerStateForTests()}function w(e,t){const r=M?function(e){try{return e()??{}}catch{return{}}}(M):{},{message:s,...n}=t,o={...r,...n,level:e,message:s,timestamp:(new Date).toISOString()};x?x.emit(o):(D.length>=200&&D.shift(),D.push(o))}const k={debug(e){w(C.DEBUG,e)},info(e){w(C.INFO,e)},warn(e){w(C.WARN,e)},error(e){w(C.ERROR,e)},flush:()=>x?.flush?.()},P={[C.DEBUG]:0,[C.INFO]:1,[C.WARN]:2,[C.ERROR]:3};function L(e={}){const t=P[e.minLevel??C.DEBUG];return{emit(e){P[e.level]<t||(e.level===C.ERROR?console.error:e.level===C.WARN?console.warn:e.level===C.DEBUG?console.debug:console.info)(e)}}}const U={[C.DEBUG]:5,[C.INFO]:9,[C.WARN]:13,[C.ERROR]:17};function G(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function H(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=G(s));return t}let K=!1,$=null,W=!0;function V(e){W=e}function j(e){K||(K=!0,v(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),B(function(e){const t=[L({minLevel:e.consoleMinLevel??(e.isDev?C.DEBUG:C.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,s=null;const n=[];function o(){s||(s=async function(){const[t,s,o,i]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),a=i.resourceFromAttributes(e.resourceAttrs),u=new o.OTLPLogExporter({url:e.endpoint}),c=new s.LoggerProvider({resource:a,processors:[new s.BatchLogRecordProcessor(u)]});t.logs.setGlobalLoggerProvider(c);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:s,...n}=e;l.emit({severityNumber:U[t],severityText:t,body:JSON.stringify(e),attributes:H(n),timestamp:new Date(s)})},async flush(){await c.forceFlush()}},n.length>0){const e=n.splice(0,n.length);for(const t of e)r.emit(t)}}().catch(()=>{n.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(o(),n.length>=200&&n.shift(),n.push(e)))},async flush(){(s||r)&&(o(),await s,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,s=e.maxQueueSize??2048,n=e.wrapBatch??(e=>e),o=[];let i=null;function a(){return null!==i&&(clearTimeout(i),i=null),0===o.length||0===(t=o.splice(0,o.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){o.length>=s&&o.shift(),o.push(e),o.length>=t?a():null===i&&(i=setTimeout(()=>{i=null,a()},r))},async flush(){await a()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){W&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&$?.())}const X=Object.freeze(Object.defineProperty({__proto__:null,initLogger:j,registerPlatformFlushAttacher:function(e){$=e},resetInitLoggerStateForTests:function(){K=!1,$=null,W=!0},setNetworkLoggingEnabled:V},Symbol.toStringTag,{value:"Module"}));let z,Y="",J={},Z=null,q=()=>null,Q=()=>null,ee=()=>null,te=!1;const re=e=>{Y=e.baseUrl,J=e.customHeaders||{},z=e.paymentProvider},se=()=>Y,ne=()=>z,oe=()=>J,ie=e=>{Z=e},ae=()=>Z,ue=e=>{q=e},ce=()=>q(),le=e=>{Q=e},de=()=>Q(),ge=e=>{ee=e},Ee=()=>ee(),pe=e=>{te=e},Fe=()=>te,me=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${Y}/api${t}`},fe="chat",he=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${fe}`:`${e}/${fe}`,Se={CONVERSATIONS:()=>me("/conversations"),CONVERSATION_STREAM:e=>me(`/conversations/${e}`),CONVERSATION_START:e=>me(`/conversations/${e}/start`),CONVERSATION_TRANSCRIBE:e=>me(`/conversations/${e}/transcribe`),WEBRTC_OFFER:e=>me(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>me(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return me("/transcribe")},get BRANDING(){return me("/branding")},get CONFIG(){return me("/config")},get PROFILE(){return me("/profile")},get AUTH_ME(){return me("/auth/me")},get CHANGE_PASSWORD(){return me("/auth/change-password")},get ORGANIZATIONS_EXISTS(){return me("/organizations/exists")},get DEBUG(){return me("/debug")},get TOOL_SERVERS(){return me("/tool-servers")},TOOL_SERVER_AUTH_START:e=>me(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>me(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return me("/tool-servers/auth/exchange")},get LOG(){return me("/log")}},Te={SSO:"sso"},_e={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},ye={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},Oe={ONLINE:"online",DEVICE:"device"},Ie=e=>e?`${ye.APPEARANCE_MODE_KEY}:${e}`:ye.APPEARANCE_MODE_KEY,Ae={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"},Re="x-device-token",Ne={LOGIN:"/auth/login",SIGNUP:"/auth/signup",GUEST:"/auth/guest",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},Ce={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},xe={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16},Me={MIN_LENGTH:8,MAX_LENGTH:128};let De=!0;const Be=async e=>{const t=await e.getItem(ye.SEND_DIAGNOSTICS);De=null===t||"true"===t},ve=()=>De,be=3,we=500,ke=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(k.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))};function Pe(e){const{performRefresh:t,isTransient:r=ke,maxAttempts:s=be,backoffBaseMs:n=we}=e;let o=null;return function(){return o||(o=(async()=>{for(let e=0;e<s;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===s-1)break;const o=n*2**e+250*Math.random();await new Promise(e=>setTimeout(e,o))}return null})().finally(()=>{o=null}),o)}}const Le="bridge-toast";function Ue(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(Le,{detail:e}))}const Ge=e=>Ue(e),He=(e="Please try again")=>Ue({title:"Error",description:e,variant:"destructive"}),Ke=(e="Successfully")=>Ue({title:"Success",description:e,variant:"default"}),$e=Le,We={ADMIN:"admin",AUTHENTICATED_USER:"authenticated_user",GUEST_USER:"guest_user"},Ve={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"};function je(e){return e?.type===We.GUEST_USER}const Xe=e=>!!e&&Date.now()>=e-_e.TOKEN_CLOCK_SKEW_MS,ze=e=>!e||Date.now()>=e-_e.TOKEN_REFRESH_THRESHOLD_MS,Ye=async()=>ze(Ee())?await(ae()?.())??null:null,Je=e=>e?Math.max(0,e-Date.now()):0,Ze=e=>e?Math.max(0,e-_e.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,qe=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`};function Qe(e){const t=e.headers.get(Ae.ACCESS_TOKEN),r=e.headers.get(Ae.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${Ae.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${Ae.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}}function et(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),s=atob(r),n=JSON.parse(s);return n&&"object"==typeof n&&!Array.isArray(n)?n:null}catch{return null}}function tt(e){const t=et(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}function rt(e,t){try{const r=t.getItem(ye.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=tt(t.getItem(ye.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}}function st(e){!function(e){try{e.removeItem(ye.ACCESS_TOKEN),e.removeItem(ye.REFRESH_TOKEN),e.removeItem(ye.TOKEN_EXPIRES_AT),e.removeItem(ye.USER)}catch{}}(e),function(e){try{e.removeItem(ye.ACTIVE_CONVERSATION_ID)}catch{}}(e)}function nt(e,t){try{t.setItem(ye.SELECTED_ORG_ID,e),t.setItem(ye.SELECTED_ORG_NAME,e)}catch{}}class ot{static instance;events={};constructor(){}static getInstance(){return ot.instance||(ot.instance=new ot),ot.instance}on(e,t,r){const s="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(s),()=>{this.off(e,s)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){k.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const it=ot.getInstance();function at(e,t){return it.on(e,t)}const ut={LIGHT:"light",DARK:"dark",SYSTEM:"system"},ct=[ut.LIGHT,ut.DARK,ut.SYSTEM],lt={FOREGROUND:"foreground",BACKGROUND:"background"},dt={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},gt={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:dt.PILL,chatInputPlaceholder:"Type anything..."},Et={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,borderRadius:16,cornerRadiusMode:dt.PILL,chatInputPlaceholder:"Type anything..."};function pt(e){return e===ut.LIGHT?Et:gt}const Ft=gt;function mt(e,t){const r=e.replace("#","");let s;s=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const n=Math.max(0,Math.min(100,t));return`#${s}${Math.round(n/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function ft(e,t){if(!e)return t.fontFamily;switch(e){case"Inter":return"'Inter', sans-serif";case"System":return"system-ui, -apple-system, sans-serif";default:return"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif"}}function ht(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function St(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function Tt(e){switch(e){case"pill":return dt.PILL;case"none":return dt.SHARP;default:return 0===parseInt(e??"",10)?dt.SHARP:dt.ROUNDED}}function _t(e,t,r=ut.DARK){const s=pt(r);if(!e||!t)return s;const n=t.surface?.chatInput?.border||t.surface?.input?.border,o=t.surface?.userMessage?.border,i=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||s.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||s.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||s.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sidebarBorderColor,widgetBg:t.surface?.widget?.background||s.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||s.settingsGroupBg,inputBorderStyle:n?.style||s.inputBorderStyle,inputBorderColor:n?.color?mt(n.color,n.opacity||100):s.inputBorderColor,inputBorderWidth:n?.width||s.inputBorderWidth,inputBorderOpacity:n?.opacity||100,widgetBorderStyle:i?.style||s.widgetBorderStyle,widgetBorderColor:i?.color?mt(i.color,i.opacity||100):s.widgetBorderColor,widgetBorderWidth:i?.width||s.widgetBorderWidth,widgetBorderOpacity:i?.opacity??s.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||s.placeholderColor,primaryText:t.text?.primary||s.primaryText,secondaryText:t.text?.secondary||s.secondaryText,tertiaryText:t.text?.tertiary||s.tertiaryText,userMsgBg:t.surface?.userMessage?.background||s.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||s.userMsgText,userMsgBorderStyle:o?.style||s.userMsgBorderStyle,userMsgBorderColor:o?.color?mt(o.color,o.opacity||100):s.userMsgBorderColor,userMsgBorderWidth:o?.width||s.userMsgBorderWidth,userMsgBorderOpacity:o?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||s.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||s.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||s.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||s.statusPrimary.solid,background:t.status?.primary?.background||s.statusPrimary.background,text:t.status?.primary?.text||s.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||s.statusSecondary.solid,background:t.status?.secondary?.background||s.statusSecondary.background,text:t.status?.secondary?.text||s.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||s.statusSuccess.solid,background:t.status?.success?.background||s.statusSuccess.background,text:t.status?.success?.text||s.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||s.statusDanger.solid,background:t.status?.danger?.background||s.statusDanger.background,text:t.status?.danger?.text||s.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||s.statusWarning.solid,background:t.status?.warning?.background||s.statusWarning.background,text:t.status?.warning?.text||s.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||s.statusInfo.solid,background:t.status?.info?.background||s.statusInfo.background,text:t.status?.info?.text||s.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||s.statusDiscovery.solid,background:t.status?.discovery?.background||s.statusDiscovery.background,text:t.status?.discovery?.text||s.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||s.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||s.switchUncheckedColor,fontFamily:ft(e.typography?.fontFamily,s),fontFamilyMono:ht(e.typography?.fontFamilyMono,s),fontSize:14,borderRadius:St(e.cornerRadius,s),cornerRadiusMode:Tt(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}}function yt(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const s=parseInt(r.slice(0,2),16),n=parseInt(r.slice(2,4),16),o=parseInt(r.slice(4,6),16),i=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${s}, ${n}, ${o}, ${Math.round(i*t*1e3)/1e3})`}const Ot=c(void 0);function It(){const e=l(Ot);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e}const At=c(null),Rt=()=>{const e=l(At);if(!e)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return e};let Nt=null;function Ct(e){Nt=e}const xt=()=>Nt,Mt=c(null),Dt={isConnected:!0,isInternetReachable:!0},Bt=()=>{const e=l(Mt),t=d(t=>e?e.subscribe(t):()=>{},[e]),r=d(()=>e?e.getState():Dt,[e]);return g(t,r,r)},vt=i({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:s,refreshToken:n,expiresIn:o}=t.payload;void 0!==r&&(e.user=r),void 0!==s&&(e.accessToken=s),void 0!==n&&(e.refreshToken=n),void 0!==o?e.tokenExpiresAt=null===o?null:1e3*o:s&&(e.tokenExpiresAt=Date.now()+_e.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:bt,updateUser:wt,clearSession:kt,sessionExpired:Pt,setSelectedOrgId:Lt}=vt.actions,Ut=bt,Gt=kt,Ht=e=>async t=>{const[r,s,n,o]=await Promise.all([e.getItem(ye.ACCESS_TOKEN),e.getItem(ye.REFRESH_TOKEN),e.getItem(ye.TOKEN_EXPIRES_AT),e.getItem(ye.USER)]),i=n?parseInt(n,10):null;if((!r||!i||Xe(i))&&!s)return void(r&&await Promise.all([e.removeItem(ye.ACCESS_TOKEN),e.removeItem(ye.REFRESH_TOKEN),e.removeItem(ye.TOKEN_EXPIRES_AT),e.removeItem(ye.USER)]));let a=null;if(o)try{a=JSON.parse(o)}catch(e){k.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(bt({user:a,accessToken:r,refreshToken:s,expiresIn:null!=i?i/1e3:null}))},Kt=a();Kt.startListening({matcher:u(bt,wt,kt,Pt),effect:async(e,t)=>{const r=xt();if(!r)return;const{auth:s}=t.getState(),n=[];n.push(s.accessToken?r.setItem(ye.ACCESS_TOKEN,s.accessToken):r.removeItem(ye.ACCESS_TOKEN)),n.push(s.refreshToken?r.setItem(ye.REFRESH_TOKEN,s.refreshToken):r.removeItem(ye.REFRESH_TOKEN)),n.push(null!=s.tokenExpiresAt?r.setItem(ye.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(ye.TOKEN_EXPIRES_AT)),n.push(s.user?r.setItem(ye.USER,JSON.stringify(s.user)):r.removeItem(ye.USER)),(kt.match(e)||Pt.match(e))&&n.push(r.removeItem(ye.LOCATION_CACHE),r.removeItem(ye.DEBUG_MODE),r.removeItem(ye.APPEARANCE_MODE_KEY),r.removeItem(ye.LOCATION_ENABLED),r.removeItem(ye.STT_AUTO_SEND),r.removeItem(ye.STT_IMPLEMENTATION),r.removeItem(ye.SEND_DIAGNOSTICS),r.removeItem(ye.ACTIVE_CONVERSATION_ID)),await Promise.all(n)}});const $t=vt.reducer,Wt={lastResponseTime:null},Vt=i({name:"indicator",initialState:Wt,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(u(kt,Pt),()=>Wt)}}),{setLastResponseTime:jt,clearLastResponseTime:Xt}=Vt.actions,zt=Vt.reducer;function Yt(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}}const Jt={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"};function Zt(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id}export{Se as API_ENDPOINTS,ut as APPEARANCE_MODES,ct as APPEARANCE_MODE_VALUES,Ae as AUTH_HEADERS,Ne as AUTH_PATHS,$e as BRIDGE_TOAST_EVENT_NAME,Ot as BrandingContext,dt as CORNER_RADIUS_MODES,Re as DEVICE_TOKEN_HEADER,e as DIRECTION_VECTORS,ot as EventEmitter,Te as FEATURE_FLAGS,Ve as IDP_HINTS,Jt as INDICATOR_TIMER_ACTIONS,C as LOG_LEVELS,Mt as NetworkContext,lt as ORB_POSITIONS,fe as ORG_MOUNT_SUFFIX,Me as PASSWORD_LIMITS,Ce as PATTERNS,xe as PROFILE_LIMITS,ye as STORAGE_KEYS,Oe as STT_IMPLEMENTATIONS,At as StorageContext,t as TEXT_DIRECTION,_e as TIMING,We as USER_TYPES,_t as brandingToThemeStyles,m as capitalizeFirst,Xt as clearLastResponseTime,st as clearPreviousTenant,kt as clearSession,Pe as createTokenRefresher,Ft as defaultChatThemeStyles,gt as defaultDarkThemeStyles,ke as defaultIsTransient,Et as defaultLightThemeStyles,rt as detectOrgSwitch,r as detectTextDirection,Ye as ensureFreshToken,it as eventEmitter,Qe as extractTokens,O as formatCVC,f as formatCamelCaseToTitle,S as formatCardNumber,y as formatExpiryDate,qe as formatTimeRemaining,F as formatTimestamp,p as generateUniqueId,me as getApiUrl,Ie as getAppearanceModeStorageKey,I as getArrayOfObjects,se as getBaseUrl,oe as getCustomHeaders,pt as getDefaultThemeStyles,N as getErrorMessage,A as getInitials,Zt as getPaymentId,ne as getPaymentProviderHint,ve as getSendDiagnostics,xt as getStorageRef,Je as getTimeUntilExpiry,Ze as getTimeUntilRefresh,ae as getTokenRefreshHandler,Yt as handleSharedEvent,R as hasWidgets,yt as hexToRgba,Be as hydrateAppBoot,Ht as hydrateSession,zt as indicatorReducer,j as initLogger,re as initializeChatConfig,Fe as isDevMode,je as isGuest,ze as isTokenAboutToExpire,Xe as isTokenExpired,he as joinOrgMountBase,k as logger,Gt as logout,et as parseJwtPayload,tt as parseOrgFromJwt,ce as readAccessToken,de as readDeviceToken,Ee as readTokenExpiresAt,at as registerEventListener,v as registerLoggerContextProvider,B as registerLoggerSink,h as removeSpecialCharsAndSpaces,b as resetLoggerForTests,s as resolveDirectionFromLang,_ as sanitizeExpiryDate,Pt as sessionExpired,Kt as sessionListenerMiddleware,$t as sessionReducer,ue as setAccessTokenReader,Ut as setCredentials,le as setDeviceTokenReader,pe as setIsDev,jt as setLastResponseTime,Ct as setModuleStorage,V as setNetworkLoggingEnabled,Lt as setSelectedOrgId,bt as setSession,ge as setTokenExpiresAtReader,ie as setTokenRefreshHandler,He as showErrorToast,Ke as showSuccessToast,Ge as showToast,E as truncateWordLimit,wt as updateUser,It as useBranding,n as useMessageDirection,o as useMessageDirections,Bt as useNetworkState,Rt as useStorage,T as validateExpiryDate,nt as writeOrgToStorage};
1
+ import{D as e,T as t,d as r,r as s,u as n,a as o}from"./textDirection-CmyE93hC.js";import{createContext as a,useContext as i,useMemo as c,useCallback as u,useSyncExternalStore as l}from"react";import{createSlice as d,createListenerMiddleware as g,isAnyOf as f}from"@reduxjs/toolkit";const p=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},E=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),m=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const s=t.getTime()-r.getTime(),n=Math.floor(s/6e4),o=Math.floor(s/36e5),a=Math.floor(s/864e5);return n<1?"Just now":n<60?`${n}m ago`:o<24?`${o}h ago`:a<7?`${a}d ago`:new Intl.DateTimeFormat("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(r)},h=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",F=e=>e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^(.)/,e=>e.toUpperCase()).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim():"",S=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",A=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),T=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),s=Number(t[2]);if(r<1||r>12)return!1;const n=new Date,o=n.getFullYear()%100,a=n.getMonth()+1;return!(s<o||s===o&&r<a||r>12)},I=e=>{if(!e)return"";if(!T(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),s=new Date,n=s.getFullYear()%100,o=s.getMonth()+1;if(r<n||r===n&&e<o||e>12)return""}}return e},y=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return I(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},O=e=>e.replace(/\D/g,"").slice(0,4);function R(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e}const _=(e,t)=>{if(e&&e.trim()){const t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[t.length-1][0]).toUpperCase():e.trim().slice(0,2).toUpperCase()}return t&&t.trim()?t.trim().slice(0,2).toUpperCase():"U"},N=e=>Array.isArray(e.widget)&&e.widget.length>0;function C(e,t="An unexpected error occurred."){if(e&&"object"==typeof e){if("message"in e&&"string"==typeof e.message)return e.message;if("data"in e){const t=e.data;if(t&&"object"==typeof t&&"message"in t&&"string"==typeof t.message)return t.message}}return t}const D={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let M=null,x=null;const B=[];function v(e){if(M=e,B.length>0){const t=B.splice(0,B.length);for(const r of t)e.emit(r)}}function w(e){x=e}async function b(){M=null,x=null,B.length=0,(await Promise.resolve().then(()=>X)).resetInitLoggerStateForTests()}function L(e,t){const r=x?function(e){try{return e()??{}}catch{return{}}}(x):{},{message:s,...n}=t,o={...r,...n,level:e,message:s,timestamp:(new Date).toISOString()};M?M.emit(o):(B.length>=200&&B.shift(),B.push(o))}const k={debug(e){L(D.DEBUG,e)},info(e){L(D.INFO,e)},warn(e){L(D.WARN,e)},error(e){L(D.ERROR,e)},flush:()=>M?.flush?.()},P={[D.DEBUG]:0,[D.INFO]:1,[D.WARN]:2,[D.ERROR]:3};function G(e={}){const t=P[e.minLevel??D.DEBUG];return{emit(e){P[e.level]<t||(e.level===D.ERROR?console.error:e.level===D.WARN?console.warn:e.level===D.DEBUG?console.debug:console.info)(e)}}}const H={[D.DEBUG]:5,[D.INFO]:9,[D.WARN]:13,[D.ERROR]:17};function U(e){if(null===e)return"null";const t=typeof e;if("string"===t||"number"===t||"boolean"===t)return e;if(e instanceof Error)return JSON.stringify({name:e.name,message:e.message,stack:e.stack});try{return JSON.stringify(e)}catch{return String(e)}}function K(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=U(s));return t}let $=!1,W=null,j=!0;function V(e){j=e}function Y(e){$||($=!0,w(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),v(function(e){const t=[G({minLevel:e.consoleMinLevel??(e.isDev?D.DEBUG:D.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,s=null;const n=[];function o(){s||(s=async function(){const[t,s,o,a]=await Promise.all([import("@opentelemetry/api-logs"),import("@opentelemetry/sdk-logs"),import("@opentelemetry/exporter-logs-otlp-http"),import("@opentelemetry/resources")]),i=a.resourceFromAttributes(e.resourceAttrs),c=new o.OTLPLogExporter({url:e.endpoint}),u=new s.LoggerProvider({resource:i,processors:[new s.BatchLogRecordProcessor(c)]});t.logs.setGlobalLoggerProvider(u);const l=t.logs.getLogger(e.resourceAttrs["service.name"]??"app");if(r={emit(e){const{level:t,message:r,timestamp:s,...n}=e;l.emit({severityNumber:H[t],severityText:t,body:JSON.stringify(e),attributes:K(n),timestamp:new Date(s)})},async flush(){await u.forceFlush()}},n.length>0){const e=n.splice(0,n.length);for(const t of e)r.emit(t)}}().catch(()=>{n.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(o(),n.length>=200&&n.shift(),n.push(e)))},async flush(){(s||r)&&(o(),await s,r&&await r.flush())}}}({endpoint:e.otlpEndpoint,resourceAttrs:{"service.name":e.appName,"service.version":e.appVersion,"deployment.environment":e.environment}}):function(e){const t=e.maxBatchSize??50,r=e.scheduledDelayMs??5e3,s=e.maxQueueSize??2048,n=e.wrapBatch??(e=>e),o=[];let a=null;function i(){return null!==a&&(clearTimeout(a),a=null),0===o.length||0===(t=o.splice(0,o.length)).length?Promise.resolve():fetch(e.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){o.length>=s&&o.shift(),o.push(e),o.length>=t?i():null===a&&(a=setTimeout(()=>{a=null,i()},r))},async flush(){await i()}}}({endpoint:e.otlpEndpoint});t.push({emit(e){j&&r.emit(e)},flush:r.flush.bind(r)})}return e.extraSinks?.length&&t.push(...e.extraSinks),1===t.length?t[0]:function(e){return{emit(t){for(const r of e)try{r.emit(t)}catch{}},async flush(){await Promise.all(e.map(e=>e.flush?Promise.resolve(e.flush()).catch(()=>{}):Promise.resolve()))}}}(t)}(e)),!1!==e.flushOnAppHide&&W?.())}const X=Object.freeze(Object.defineProperty({__proto__:null,initLogger:Y,registerPlatformFlushAttacher:function(e){W=e},resetInitLoggerStateForTests:function(){$=!1,W=null,j=!0},setNetworkLoggingEnabled:V},Symbol.toStringTag,{value:"Module"}));let z,J="",Z={},q=null,Q=()=>null,ee=()=>null,te=()=>null,re=!1;const se=e=>{J=e.baseUrl,Z=e.customHeaders||{},z=e.paymentProvider},ne=()=>J,oe=()=>z,ae=()=>Z,ie=e=>{q=e},ce=()=>q,ue=e=>{Q=e},le=()=>Q(),de=e=>{ee=e},ge=()=>ee(),fe=e=>{te=e},pe=()=>te(),Ee=e=>{re=e},me=()=>re,he=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${J}/api${t}`},Fe="chat",Se=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${Fe}`:`${e}/${Fe}`,Ae={CONVERSATIONS:()=>he("/conversations"),CONVERSATION_STREAM:e=>he(`/conversations/${e}`),CONVERSATION_START:e=>he(`/conversations/${e}/start`),CONVERSATION_TRANSCRIBE:e=>he(`/conversations/${e}/transcribe`),WEBRTC_OFFER:e=>he(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>he(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return he("/transcribe")},get BRANDING(){return he("/branding")},get CONFIG(){return he("/config")},get PROFILE(){return he("/profile")},get AUTH_ME(){return he("/auth/me")},get CHANGE_PASSWORD(){return he("/auth/change-password")},get ORGANIZATIONS_EXISTS(){return he("/organizations/exists")},get DEBUG(){return he("/debug")},get TOOL_SERVERS(){return he("/tool-servers")},TOOL_SERVER_AUTH_START:e=>he(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>he(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return he("/tool-servers/auth/exchange")},get LOG(){return he("/log")}},Te={SSO:"sso"},Ie={TOKEN_REFRESH_THRESHOLD_MS:6e5,TOKEN_CLOCK_SKEW_MS:3e4,TOKEN_DEFAULT_EXPIRY_MS:36e5,THINKING_STATE_TIMEOUT_MS:600,MESSAGE_WARNING_TIMEOUT_MS:1e4,TOAST_DURATION_MS:5e3,TOAST_ERROR_DURATION_MS:7e3,INPUT_DEBOUNCE_MS:300,SEARCH_DEBOUNCE_MS:500,CONFIG_TIMEOUT_MS:5e3},ye={ACCESS_TOKEN:"accessToken",REFRESH_TOKEN:"refreshToken",TOKEN_EXPIRES_AT:"tokenExpiresAt",USER:"user",SELECTED_ORG_ID:"selectedOrgId",SELECTED_ORG_NAME:"selectedOrgName",APPEARANCE_MODE_KEY:"1interface_appearance_mode",LOCATION_ENABLED:"1interface_location_enabled",LOCATION_CACHE:"1interface_cached_location",DEBUG_MODE:"1interface_debug_mode",STT_AUTO_SEND:"1interface_stt_auto_send",STT_IMPLEMENTATION:"1interface_stt_implementation",SEND_DIAGNOSTICS:"1interface_send_diagnostics",ACTIVE_CONVERSATION_ID:"1interface_active_conversation_id"},Oe={ONLINE:"online",DEVICE:"device"},Re=e=>e?`${ye.APPEARANCE_MODE_KEY}:${e}`:ye.APPEARANCE_MODE_KEY,_e={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"},Ne="x-device-token",Ce={LOGIN:"/auth/login",SIGNUP:"/auth/signup",GUEST:"/auth/guest",LOGOUT:"/auth/logout",REFRESH:"/auth/refresh",FORGOT_PASSWORD:"/auth/forgot-password",RESET_PASSWORD:"/auth/reset-password",SSO_START:"/auth/sso/start",SSO_EXCHANGE:"/auth/sso/exchange",ORGANIZATIONS:"/organizations"},De={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},Me={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16},xe={MIN_LENGTH:8,MAX_LENGTH:128};let Be=!0;const ve=async e=>{const t=await e.getItem(ye.SEND_DIAGNOSTICS);Be=null===t||"true"===t},we=()=>Be,be=3,Le=500,ke=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(k.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))};function Pe(e){const{performRefresh:t,isTransient:r=ke,maxAttempts:s=be,backoffBaseMs:n=Le}=e;let o=null;return function(){return o||(o=(async()=>{for(let e=0;e<s;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===s-1)break;const o=n*2**e+250*Math.random();await new Promise(e=>setTimeout(e,o))}return null})().finally(()=>{o=null}),o)}}const Ge="bridge-toast";function He(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(Ge,{detail:e}))}const Ue=e=>He(e),Ke=(e="Please try again")=>He({title:"Error",description:e,variant:"destructive"}),$e=(e="Successfully")=>He({title:"Success",description:e,variant:"default"}),We=Ge,je={ADMIN:"admin",AUTHENTICATED_USER:"authenticated_user",GUEST_USER:"guest_user"},Ve={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"};function Ye(e){return e?.type===je.GUEST_USER}const Xe=e=>!!e&&Date.now()>=e-Ie.TOKEN_CLOCK_SKEW_MS,ze=e=>!e||Date.now()>=e-Ie.TOKEN_REFRESH_THRESHOLD_MS,Je=async()=>ze(pe())?await(ce()?.())??null:null,Ze=e=>e?Math.max(0,e-Date.now()):0,qe=e=>e?Math.max(0,e-Ie.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,Qe=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`};function et(e){const t=e.headers.get(_e.ACCESS_TOKEN),r=e.headers.get(_e.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${_e.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${_e.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}}function tt(e){if(!e)return null;const t=e.split(".");if(3!==t.length)return null;try{const e=t[1].replace(/-/g,"+").replace(/_/g,"/"),r=e+"=".repeat((4-e.length%4)%4),s=atob(r),n=JSON.parse(s);return n&&"object"==typeof n&&!Array.isArray(n)?n:null}catch{return null}}function rt(e){const t=tt(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}function st(e,t){try{const r=t.getItem(ye.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=rt(t.getItem(ye.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}}function nt(e){!function(e){try{e.removeItem(ye.ACCESS_TOKEN),e.removeItem(ye.REFRESH_TOKEN),e.removeItem(ye.TOKEN_EXPIRES_AT),e.removeItem(ye.USER)}catch{}}(e),function(e){try{e.removeItem(ye.ACTIVE_CONVERSATION_ID)}catch{}}(e)}function ot(e,t){try{t.setItem(ye.SELECTED_ORG_ID,e),t.setItem(ye.SELECTED_ORG_NAME,e)}catch{}}const at={LATIN:"Latn",ARABIC:"Arab",HEBREW:"Hebr",CYRILLIC:"Cyrl",GREEK:"Grek",DEVANAGARI:"Deva",THAI:"Thai",HAN:"Hani",HIRAGANA_KATAKANA:"Kana",HANGUL:"Kore"},it={Latn:[[65,90],[97,122],[170,170],[186,186],[192,214],[216,246],[248,591],[592,687],[7680,7935],[11360,11391],[42786,42887],[42891,42957],[42960,42961],[42963,42963],[42965,42972],[42994,43007],[43824,43866],[43868,43876],[43878,43881],[64256,64262],[65313,65338],[65345,65370]],Arab:[[1568,1599],[1601,1610],[1646,1647],[1649,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1788],[1791,1791],[1872,1919],[2208,2249],[2160,2183],[2185,2190],[64336,64433],[64467,64829],[64848,64911],[64914,64967],[65008,65019],[65136,65140],[65142,65276]],Hebr:[[1488,1514],[1519,1522],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64335]],Cyrl:[[1024,1153],[1162,1327],[7296,7306],[42560,42606],[42623,42653]],Grek:[[880,883],[886,887],[890,893],[895,895],[902,902],[904,906],[908,908],[910,929],[931,993],[1008,1013],[1015,1023],[7936,7957],[7960,7965],[7968,8005],[8008,8013],[8016,8023],[8025,8025],[8027,8027],[8029,8029],[8031,8061],[8064,8116],[8118,8124],[8126,8126],[8130,8132],[8134,8140],[8144,8147],[8150,8155],[8160,8172],[8178,8180],[8182,8188]],Deva:[[2308,2361],[2365,2365],[2384,2384],[2392,2401],[2417,2431]],Thai:[[3585,3632],[3634,3635],[3648,3654]],Hani:[[12293,12293],[13312,19903],[19968,40959],[63744,64109],[64112,64217],[131072,173791],[173824,177977],[177984,178205],[178208,183969],[183984,191456]],Kana:[[12353,12438],[12445,12447],[12449,12538],[12541,12543],[12784,12799],[65382,65391],[65393,65437]],Kore:[[4352,4607],[12593,12686],[43360,43388],[44032,55203],[55216,55238],[55243,55291]]},ct=[at.LATIN,at.ARABIC,at.HEBREW,at.CYRILLIC,at.GREEK,at.DEVANAGARI,at.THAI,at.HAN,at.HIRAGANA_KATAKANA,at.HANGUL],ut=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g;function lt(e){for(const t of ct)for(const[r,s]of it[t])if(e>=r&&e<=s)return t;return null}function dt(e){const t=(e??"").replace(ut," "),r=new Set,s=[];for(const e of t){const t=lt(e.codePointAt(0)??0);t&&!r.has(t)&&(r.add(t),s.push(t))}return s}const gt={TOP_LEADING:"topLeading",TOP:"top",TOP_TRAILING:"topTrailing",LEADING:"leading",CENTER:"center",TRAILING:"trailing",BOTTOM_LEADING:"bottomLeading",BOTTOM:"bottom",BOTTOM_TRAILING:"bottomTrailing"},ft={DEFAULT:"default",HEADING:"heading",MONO:"mono"},pt={REGULAR:"regular",MEDIUM:"medium",SEMIBOLD:"semibold",BOLD:"bold"},Et={LIGHT:"light",DARK:"dark",SYSTEM:"system"},mt=[Et.LIGHT,Et.DARK,Et.SYSTEM],ht={FOREGROUND:"foreground",BACKGROUND:"background"},Ft="default",St={[ft.DEFAULT]:"system-ui, -apple-system, sans-serif",[ft.HEADING]:"system-ui, -apple-system, sans-serif",[ft.MONO]:"ui-monospace, monospace"},At={ar:at.ARABIC,fa:at.ARABIC,ur:at.ARABIC,he:at.HEBREW,yi:at.HEBREW,ru:at.CYRILLIC,bg:at.CYRILLIC,sr:at.CYRILLIC,uk:at.CYRILLIC,mk:at.CYRILLIC,be:at.CYRILLIC,kk:at.CYRILLIC,el:at.GREEK,hi:at.DEVANAGARI,mr:at.DEVANAGARI,ne:at.DEVANAGARI,th:at.THAI,zh:at.HAN,ja:at.HIRAGANA_KATAKANA,ko:at.HANGUL},Tt=new Set(["serif","sans-serif","monospace","cursive","fantasy","math","system-ui","ui-serif","ui-sans-serif","ui-monospace","ui-rounded","-apple-system","blinkmacsystemfont"]),It=new Set(["SF Pro","SF Pro Display","SF Mono","system-ui","System","monospace","sans-serif"]),yt=new Set(Object.values(at)),Ot=Object.values(at);function Rt(e){const t=e.split(/[-_]/);for(const e of t.slice(1)){if(1===e.length)break;const t=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase();if(yt.has(t))return t}const r=t[0]?.toLowerCase()??"";if(At[r])return At[r];if("undefined"!=typeof Intl&&"Locale"in Intl)try{const t=new Intl.Locale(e).maximize().script;if(t&&yt.has(t))return t}catch{}return at.LATIN}function _t(e,t){const r={...e?.families??{}},s=e?.locales;let n;if(s)n={...s};else{const r=e?.fontFamily,s=e?.fontFamilyMono;n={[Ft]:{[ft.DEFAULT]:r??t.default,[ft.HEADING]:r??t.heading??t.default,[ft.MONO]:s??t.mono}}}const o=n[Ft]??{};n[Ft]={[ft.DEFAULT]:o.default??t.default,[ft.HEADING]:o.heading??t.heading??t.default,[ft.MONO]:o.mono??t.mono??t.default};const a=function(){const e={};for(const t of Ot)e[t]=[];return e}();for(const e of Object.keys(n))e!==Ft&&a[Rt(e)].push(e);return{locales:n,families:r,scriptIndex:a}}function Nt(e){const t=e.trim();return t?Tt.has(t.toLowerCase())||t.startsWith('"')&&t.endsWith('"')?t:`"${t}"`:t}function Ct(e,t){return e?.[t]}function Dt(e,t,r={}){const{language:s,script:n}=r;if(s){const r=Ct(e.locales[s],t);if(r)return r}const o=n??(s?Rt(s):void 0);if(o)for(const r of e.scriptIndex[o]){const s=Ct(e.locales[r],t);if(s)return s}return Ct(e.locales[Ft],t)??e.locales[Ft].default??""}function Mt(e,t,r){const s=[],n=new Set,o=e=>{e&&(n.has(e)||(n.add(e),s.push(e)))};for(const s of r)for(const r of e.scriptIndex[s])o(Ct(e.locales[r],t));o(Ct(e.locales[Ft],t)??e.locales[Ft].default);const a=s.map(Nt);return a.length?`${a.join(", ")}, ${St[t]}`:St[t]}function xt(e,t){return Mt(e,t,Object.keys(e.scriptIndex))}const Bt={[pt.REGULAR]:400,[pt.MEDIUM]:500,[pt.SEMIBOLD]:600,[pt.BOLD]:700};function vt(e){const t=function(e){const t=e.split(/[?#]/)[0].toLowerCase();return t.endsWith(".woff2")?"woff2":t.endsWith(".woff")?"woff":t.endsWith(".ttf")?"truetype":t.endsWith(".otf")?"opentype":void 0}(e);return t?`src: url("${e}") format("${t}");`:`src: url("${e}");`}function wt(e){const t=[];for(const r of Ot)if(e.has(r))for(const[e,s]of it[r]){const r=`U+${e.toString(16).toUpperCase()}`;t.push(e===s?r:`${r}-${s.toString(16).toUpperCase()}`)}return t.join(", ")}function bt(e,t,r,s){const n=["@font-face {",` font-family: ${Nt(e)};`,` ${vt(r)}`,` font-weight: ${t};`," font-style: normal;"," font-display: swap;"];return s&&n.push(` unicode-range: ${s};`),n.push("}"),n.join("\n")}function Lt(e){const t=function(e){const t=new Map;for(const r of Ot)for(const s of e.scriptIndex[r])for(const n of Object.values(ft)){const o=e.locales[s]?.[n];o&&(t.has(o)||t.set(o,new Set),t.get(o).add(r))}return t}(e),r=new Set(Object.values(ft).map(t=>e.locales[Ft]?.[t]).filter(e=>Boolean(e))),s=[];for(const[n,o]of Object.entries(e.families)){const e=r.has(n)?void 0:t.get(n),a=e?wt(e):"";if(o.variable)s.push(bt(n,"100 900",o.variable,a));else for(const e of Object.values(pt)){const t=o[e];t&&s.push(bt(n,String(Bt[e]),t,a))}}return s.join("\n\n")}const kt=new WeakSet;function Pt(e,t){if(kt.has(e))return;kt.add(e);const r=new Set;for(const s of Object.values(e.locales))for(const n of Object.values(s))n&&!r.has(n)&&(r.add(n),e.families[n]||It.has(n)||t.warn({message:`Typography family "${n}" has no families entry and is not a known system font; falling back to the generic stack.`,font_family:n}))}const Gt=a(void 0);function Ht(){const e=i(Gt);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e}function Ut(e,t){const{themeStyles:r}=Ht(),s=r.typography,n=c(()=>{if(t){const e=t.split(/[-_]/)[0].toLowerCase(),r=At[e];if(r)return[r]}return dt(e)},[e,t]);return c(()=>Mt(s,ft.DEFAULT,n),[s,n])}class Kt{static instance;events={};constructor(){}static getInstance(){return Kt.instance||(Kt.instance=new Kt),Kt.instance}on(e,t,r){const s="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(s),()=>{this.off(e,s)}}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(e,t){this.events[e]&&this.events[e].forEach(r=>{try{r(t)}catch(t){k.error({message:`Error in event handler for "${e}"`,api_name:"event-emitter",event:e,error_message:t instanceof Error?t.message:String(t)})}})}clear(e){e?delete this.events[e]:this.events={}}}const $t=Kt.getInstance();function Wt(e,t){return $t.on(e,t)}const jt={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},Vt={bgColor:"linear-gradient(281.8deg, #061522 6.7%, #101F2F 59.64%, #3C3B4F 76.85%, #5D4C63 88.46%, #755770 99.24%)",inputBgColor:"#222D34",sidebarBg:"#0F1419",sidebarBorderColor:"#8F8F8F",widgetBg:"#222D34",settingsGroupBg:"#272626",inputBorderStyle:"solid",inputBorderColor:"#FFFFFF80",inputBorderWidth:"1px",inputBorderOpacity:50,widgetBorderStyle:"solid",widgetBorderColor:"#FFFFFF1A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#8F8F8F",primaryText:"#FFFFFF",secondaryText:"#AFAFAF",tertiaryText:"#8F8F8F",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#FFFFFFFF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#FFFFFF",sideMenuText:"#AFAFAF",sideMenuIcon:"#8F8F8F",sideMenuProfile:"#FFFFFF",screenMaskingColor:"#000000",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#222D34",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyHeading:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,typography:_t(void 0,{default:"SF Pro Display",heading:"SF Pro Display",mono:"SF Mono"}),borderRadius:16,cornerRadiusMode:jt.PILL,chatInputPlaceholder:"Type anything..."},Yt={bgColor:"linear-gradient(281.8deg, #EEF2FF 6.7%, #E2E8FD 59.64%, #E8DFF4 76.85%, #F4DBE6 88.46%, #FFE1D0 99.24%)",inputBgColor:"#F4F4F5",sidebarBg:"#FFFFFF",sidebarBorderColor:"#9B9B9B",widgetBg:"#FFFFFF",settingsGroupBg:"#1A1A1A10",inputBorderStyle:"solid",inputBorderColor:"#0000001A",inputBorderWidth:"1px",inputBorderOpacity:10,widgetBorderStyle:"solid",widgetBorderColor:"#0000001A",widgetBorderWidth:"1px",widgetBorderOpacity:10,placeholderColor:"#9B9B9B",primaryText:"#1A1A1A",secondaryText:"#6B6B6B",tertiaryText:"#9B9B9B",userMsgBg:"#90629F",userMsgText:"#FFFFFF",userMsgBorderStyle:"none",userMsgBorderColor:"#000000FF",userMsgBorderWidth:"1px",userMsgBorderOpacity:100,sideMenuHeadings:"#1A1A1A",sideMenuText:"#6B6B6B",sideMenuIcon:"#9B9B9B",sideMenuProfile:"#1A1A1A",screenMaskingColor:"#FFFFFF",statusPrimary:{solid:"#90629F",background:"#90629F",text:"#FFFFFF"},statusSecondary:{solid:"#5D5D5D",background:"#F3F3F3",text:"#0D0D0D"},statusSuccess:{solid:"#00A240",background:"#D9F4E4",text:"#FFFFFF"},statusDanger:{solid:"#E02E2A",background:"#FFD9D9",text:"#FFFFFF"},statusWarning:{solid:"#E25507",background:"#FFE7D9",text:"#FFFFFF"},statusInfo:{solid:"#0285FF",background:"#E5F3FF",text:"#FFFFFF"},statusDiscovery:{solid:"#924FF7",background:"#EFE5FE",text:"#FFFFFF"},switchCheckedColor:"#90629F",switchUncheckedColor:"#F4F4F5",fontFamily:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyHeading:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",fontFamilyMono:'"SF Mono", ui-monospace, monospace',fontSize:14,typography:_t(void 0,{default:"SF Pro Display",heading:"SF Pro Display",mono:"SF Mono"}),borderRadius:16,cornerRadiusMode:jt.PILL,chatInputPlaceholder:"Type anything..."};function Xt(e){return e===Et.LIGHT?Yt:Vt}const zt=Vt;function Jt(e,t){const r=e.replace("#","");let s;s=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const n=Math.max(0,Math.min(100,t));return`#${s}${Math.round(n/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function Zt(e,t){if(!e)return t.borderRadius;switch(e){case"none":return 0;case"sm":return 8;case"md":return 12;case"pill":return 16;default:const r=parseInt(e,10);return isNaN(r)?t.borderRadius:r}}function qt(e){switch(e){case"pill":return jt.PILL;case"none":return jt.SHARP;default:return 0===parseInt(e??"",10)?jt.SHARP:jt.ROUNDED}}function Qt(e,t,r=Et.DARK){const s=Xt(r);if(!e||!t)return s;const n=_t(e.typography,{default:s.typography.locales.default.default,heading:s.typography.locales.default.heading,mono:s.typography.locales.default.mono});Pt(n,k);const o=t.surface?.chatInput?.border||t.surface?.input?.border,a=t.surface?.userMessage?.border,i=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||s.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||s.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||s.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sidebarBorderColor,widgetBg:t.surface?.widget?.background||s.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||s.settingsGroupBg,screenMaskingColor:t.surface?.screenMasking||s.screenMaskingColor,inputBorderStyle:o?.style||s.inputBorderStyle,inputBorderColor:o?.color?Jt(o.color,o.opacity||100):s.inputBorderColor,inputBorderWidth:o?.width||s.inputBorderWidth,inputBorderOpacity:o?.opacity||100,widgetBorderStyle:i?.style||s.widgetBorderStyle,widgetBorderColor:i?.color?Jt(i.color,i.opacity||100):s.widgetBorderColor,widgetBorderWidth:i?.width||s.widgetBorderWidth,widgetBorderOpacity:i?.opacity??s.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||s.placeholderColor,primaryText:t.text?.primary||s.primaryText,secondaryText:t.text?.secondary||s.secondaryText,tertiaryText:t.text?.tertiary||s.tertiaryText,userMsgBg:t.surface?.userMessage?.background||s.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||s.userMsgText,userMsgBorderStyle:a?.style||s.userMsgBorderStyle,userMsgBorderColor:a?.color?Jt(a.color,a.opacity||100):s.userMsgBorderColor,userMsgBorderWidth:a?.width||s.userMsgBorderWidth,userMsgBorderOpacity:a?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||s.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||s.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||s.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||s.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||s.statusPrimary.solid,background:t.status?.primary?.background||s.statusPrimary.background,text:t.status?.primary?.text||s.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||s.statusSecondary.solid,background:t.status?.secondary?.background||s.statusSecondary.background,text:t.status?.secondary?.text||s.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||s.statusSuccess.solid,background:t.status?.success?.background||s.statusSuccess.background,text:t.status?.success?.text||s.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||s.statusDanger.solid,background:t.status?.danger?.background||s.statusDanger.background,text:t.status?.danger?.text||s.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||s.statusWarning.solid,background:t.status?.warning?.background||s.statusWarning.background,text:t.status?.warning?.text||s.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||s.statusInfo.solid,background:t.status?.info?.background||s.statusInfo.background,text:t.status?.info?.text||s.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||s.statusDiscovery.solid,background:t.status?.discovery?.background||s.statusDiscovery.background,text:t.status?.discovery?.text||s.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||s.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||s.switchUncheckedColor,fontFamily:xt(n,ft.DEFAULT),fontFamilyHeading:xt(n,ft.HEADING),fontFamilyMono:xt(n,ft.MONO),fontSize:14,typography:n,borderRadius:Zt(e.cornerRadius,s),cornerRadiusMode:qt(e.cornerRadius),chatInputPlaceholder:e.startScreen?.inputPlaceholder??s.chatInputPlaceholder}}function er(e,t){let r=e.trim().replace(/^#/,"");if(3!==r.length&&4!==r.length||(r=r.split("").map(e=>e+e).join("")),!/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(r))return e;const s=parseInt(r.slice(0,2),16),n=parseInt(r.slice(2,4),16),o=parseInt(r.slice(4,6),16),a=8===r.length?parseInt(r.slice(6,8),16)/255:1;return`rgba(${s}, ${n}, ${o}, ${Math.round(a*t*1e3)/1e3})`}const tr=a(null),rr=()=>{const e=i(tr);if(!e)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return e};let sr=null;function nr(e){sr=e}const or=()=>sr,ar=a(null),ir={isConnected:!0,isInternetReachable:!0},cr=()=>{const e=i(ar),t=u(t=>e?e.subscribe(t):()=>{},[e]),r=u(()=>e?e.getState():ir,[e]);return l(t,r,r)},ur=d({name:"auth",initialState:{user:null,accessToken:null,refreshToken:null,tokenExpiresAt:null,selectedOrgId:null,isAuthenticated:!1,isLoading:!1},reducers:{setSession:(e,t)=>{const{user:r,accessToken:s,refreshToken:n,expiresIn:o}=t.payload;void 0!==r&&(e.user=r),void 0!==s&&(e.accessToken=s),void 0!==n&&(e.refreshToken=n),void 0!==o?e.tokenExpiresAt=null===o?null:1e3*o:s&&(e.tokenExpiresAt=Date.now()+Ie.TOKEN_DEFAULT_EXPIRY_MS),e.isAuthenticated=Boolean(e.accessToken),e.isLoading=!1},updateUser:(e,t)=>{e.user={...e.user||{},...t.payload}},clearSession:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},sessionExpired:e=>{e.user=null,e.accessToken=null,e.refreshToken=null,e.tokenExpiresAt=null,e.isAuthenticated=!1,e.isLoading=!1},setSelectedOrgId:(e,t)=>{e.selectedOrgId=t.payload??null}}}),{setSession:lr,updateUser:dr,clearSession:gr,sessionExpired:fr,setSelectedOrgId:pr}=ur.actions,Er=lr,mr=gr,hr=e=>async t=>{const[r,s,n,o]=await Promise.all([e.getItem(ye.ACCESS_TOKEN),e.getItem(ye.REFRESH_TOKEN),e.getItem(ye.TOKEN_EXPIRES_AT),e.getItem(ye.USER)]),a=n?parseInt(n,10):null;if((!r||!a||Xe(a))&&!s)return void(r&&await Promise.all([e.removeItem(ye.ACCESS_TOKEN),e.removeItem(ye.REFRESH_TOKEN),e.removeItem(ye.TOKEN_EXPIRES_AT),e.removeItem(ye.USER)]));let i=null;if(o)try{i=JSON.parse(o)}catch(e){k.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(lr({user:i,accessToken:r,refreshToken:s,expiresIn:null!=a?a/1e3:null}))},Fr=g();Fr.startListening({matcher:f(lr,dr,gr,fr),effect:async(e,t)=>{const r=or();if(!r)return;const{auth:s}=t.getState(),n=[];n.push(s.accessToken?r.setItem(ye.ACCESS_TOKEN,s.accessToken):r.removeItem(ye.ACCESS_TOKEN)),n.push(s.refreshToken?r.setItem(ye.REFRESH_TOKEN,s.refreshToken):r.removeItem(ye.REFRESH_TOKEN)),n.push(null!=s.tokenExpiresAt?r.setItem(ye.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(ye.TOKEN_EXPIRES_AT)),n.push(s.user?r.setItem(ye.USER,JSON.stringify(s.user)):r.removeItem(ye.USER)),(gr.match(e)||fr.match(e))&&n.push(r.removeItem(ye.LOCATION_CACHE),r.removeItem(ye.DEBUG_MODE),r.removeItem(ye.APPEARANCE_MODE_KEY),r.removeItem(ye.LOCATION_ENABLED),r.removeItem(ye.STT_AUTO_SEND),r.removeItem(ye.STT_IMPLEMENTATION),r.removeItem(ye.SEND_DIAGNOSTICS),r.removeItem(ye.ACTIVE_CONVERSATION_ID)),await Promise.all(n)}});const Sr=ur.reducer,Ar={lastResponseTime:null},Tr=d({name:"indicator",initialState:Ar,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(f(gr,fr),()=>Ar)}}),{setLastResponseTime:Ir,clearLastResponseTime:yr}=Tr.actions,Or=Tr.reducer;function Rr(e,t){switch(e.kind){case"status_update":return t.setStatusText(e.statusText),t.setIsAgentWorking(!0),void t.onStatusActive?.(e.statusText);case"widget":return void t.pushWidget(e.widget,e.messageId);case"payment":return void t.onPayment(e.payment);case"sign_in":return void t.onSignIn?.(e.signIn);case"error":return void t.onError(e.error);case"text":return void t.appendStreamText(e.text,e.messageId);case"conversation_title":return void t.onConversationTitle?.(e.title);default:return}}const _r={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"};function Nr(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id}export{Ae as API_ENDPOINTS,Et as APPEARANCE_MODES,mt as APPEARANCE_MODE_VALUES,_e as AUTH_HEADERS,Ce as AUTH_PATHS,We as BRIDGE_TOAST_EVENT_NAME,Gt as BrandingContext,jt as CORNER_RADIUS_MODES,Ne as DEVICE_TOKEN_HEADER,e as DIRECTION_VECTORS,Kt as EventEmitter,Te as FEATURE_FLAGS,ft as FONT_ROLES,pt as FONT_WEIGHT_SLOTS,St as GENERIC_STACKS,Ve as IDP_HINTS,_r as INDICATOR_TIMER_ACTIONS,At as LANG_DEFAULT_SCRIPT,gt as LOGO_ALIGNMENTS,D as LOG_LEVELS,ar as NetworkContext,ht as ORB_POSITIONS,Fe as ORG_MOUNT_SUFFIX,xe as PASSWORD_LIMITS,De as PATTERNS,Me as PROFILE_LIMITS,at as SCRIPTS,it as SCRIPT_RANGES,ye as STORAGE_KEYS,Oe as STT_IMPLEMENTATIONS,tr as StorageContext,t as TEXT_DIRECTION,Ie as TIMING,je as USER_TYPES,Qt as brandingToThemeStyles,Lt as buildFontFaceCss,Mt as buildFontStack,xt as buildFullFontStack,h as capitalizeFirst,yr as clearLastResponseTime,nt as clearPreviousTenant,gr as clearSession,Pe as createTokenRefresher,zt as defaultChatThemeStyles,Vt as defaultDarkThemeStyles,ke as defaultIsTransient,Yt as defaultLightThemeStyles,st as detectOrgSwitch,dt as detectScripts,r as detectTextDirection,Je as ensureFreshToken,$t as eventEmitter,et as extractTokens,O as formatCVC,F as formatCamelCaseToTitle,A as formatCardNumber,y as formatExpiryDate,Qe as formatTimeRemaining,m as formatTimestamp,E as generateUniqueId,he as getApiUrl,Re as getAppearanceModeStorageKey,R as getArrayOfObjects,ne as getBaseUrl,ae as getCustomHeaders,Xt as getDefaultThemeStyles,C as getErrorMessage,_ as getInitials,Nr as getPaymentId,oe as getPaymentProviderHint,we as getSendDiagnostics,or as getStorageRef,Ze as getTimeUntilExpiry,qe as getTimeUntilRefresh,ce as getTokenRefreshHandler,Rr as handleSharedEvent,N as hasWidgets,er as hexToRgba,ve as hydrateAppBoot,hr as hydrateSession,Or as indicatorReducer,Y as initLogger,se as initializeChatConfig,me as isDevMode,Ye as isGuest,ze as isTokenAboutToExpire,Xe as isTokenExpired,Se as joinOrgMountBase,k as logger,mr as logout,_t as normalizeTypography,tt as parseJwtPayload,rt as parseOrgFromJwt,Nt as quoteFamily,le as readAccessToken,ge as readDeviceToken,pe as readTokenExpiresAt,Wt as registerEventListener,w as registerLoggerContextProvider,v as registerLoggerSink,S as removeSpecialCharsAndSpaces,b as resetLoggerForTests,s as resolveDirectionFromLang,Dt as resolveFontFamily,I as sanitizeExpiryDate,fr as sessionExpired,Fr as sessionListenerMiddleware,Sr as sessionReducer,ue as setAccessTokenReader,Er as setCredentials,de as setDeviceTokenReader,Ee as setIsDev,Ir as setLastResponseTime,nr as setModuleStorage,V as setNetworkLoggingEnabled,pr as setSelectedOrgId,lr as setSession,fe as setTokenExpiresAtReader,ie as setTokenRefreshHandler,Ke as showErrorToast,$e as showSuccessToast,Ue as showToast,p as truncateWordLimit,dr as updateUser,Ht as useBranding,n as useMessageDirection,o as useMessageDirections,Ut as useMessageFontStack,cr as useNetworkState,rr as useStorage,T as validateExpiryDate,Pt as warnUnknownFamilies,ot as writeOrgToStorage};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1interface/shared-core",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "sideEffects": false,