@1interface/shared-core 0.2.0 → 0.2.2
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 +32 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -233,6 +233,23 @@ export declare const defaultLightThemeStyles: ChatThemeStyles;
|
|
|
233
233
|
|
|
234
234
|
export declare function detectOrgSwitch(activeOrgId: string, storage: SyncKeyValueStorage): OrgSwitchReason;
|
|
235
235
|
|
|
236
|
+
export declare function detectTextDirection(text: string, fallback?: TextDirection): DirectionResult;
|
|
237
|
+
|
|
238
|
+
export declare const DEVICE_TOKEN_HEADER = "x-device-token";
|
|
239
|
+
|
|
240
|
+
export declare const DIRECTION_VECTORS: DirectionVector[];
|
|
241
|
+
|
|
242
|
+
export declare interface DirectionResult {
|
|
243
|
+
dir: TextDirection;
|
|
244
|
+
confident: boolean;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export declare interface DirectionVector {
|
|
248
|
+
text: string;
|
|
249
|
+
lang?: string;
|
|
250
|
+
expected: TextDirection;
|
|
251
|
+
}
|
|
252
|
+
|
|
236
253
|
export declare const ensureFreshToken: () => Promise<TokenRefreshResult | null>;
|
|
237
254
|
|
|
238
255
|
export declare class EventEmitter {
|
|
@@ -532,6 +549,8 @@ export declare const PROFILE_LIMITS: {
|
|
|
532
549
|
|
|
533
550
|
export declare const readAccessToken: () => string | null;
|
|
534
551
|
|
|
552
|
+
export declare const readDeviceToken: () => string | null;
|
|
553
|
+
|
|
535
554
|
export declare const readTokenExpiresAt: () => number | null;
|
|
536
555
|
|
|
537
556
|
export declare interface RefreshApiResult {
|
|
@@ -560,6 +579,8 @@ export declare interface ResetPasswordRequest {
|
|
|
560
579
|
new_password: string;
|
|
561
580
|
}
|
|
562
581
|
|
|
582
|
+
export declare function resolveDirectionFromLang(tag?: string): TextDirection | null;
|
|
583
|
+
|
|
563
584
|
export declare type ResolvedTheme = Exclude<AppearanceMode, typeof APPEARANCE_MODES.SYSTEM>;
|
|
564
585
|
|
|
565
586
|
export declare const sanitizeExpiryDate: (value: string) => string;
|
|
@@ -598,6 +619,8 @@ export declare const setAccessTokenReader: (fn: () => string | null) => void;
|
|
|
598
619
|
|
|
599
620
|
export declare const setCredentials: ActionCreatorWithNonInferrablePayload<"auth/setSession">;
|
|
600
621
|
|
|
622
|
+
export declare const setDeviceTokenReader: (fn: () => string | null) => void;
|
|
623
|
+
|
|
601
624
|
export declare const setIsDev: (value: boolean) => void;
|
|
602
625
|
|
|
603
626
|
export declare const setLastResponseTime: ActionCreatorWithOptionalPayload<number, "indicator/setLastResponseTime">;
|
|
@@ -778,12 +801,19 @@ export declare interface SyncKeyValueStorage {
|
|
|
778
801
|
removeItem(key: string): void;
|
|
779
802
|
}
|
|
780
803
|
|
|
804
|
+
export declare const TEXT_DIRECTION: {
|
|
805
|
+
readonly LTR: "ltr";
|
|
806
|
+
readonly RTL: "rtl";
|
|
807
|
+
};
|
|
808
|
+
|
|
781
809
|
export declare interface TextColors {
|
|
782
810
|
primary?: string;
|
|
783
811
|
secondary?: string;
|
|
784
812
|
tertiary?: string;
|
|
785
813
|
}
|
|
786
814
|
|
|
815
|
+
export declare type TextDirection = (typeof TEXT_DIRECTION)[keyof typeof TEXT_DIRECTION];
|
|
816
|
+
|
|
787
817
|
export declare const TIMING: {
|
|
788
818
|
readonly TOKEN_REFRESH_THRESHOLD_MS: number;
|
|
789
819
|
readonly TOKEN_CLOCK_SKEW_MS: number;
|
|
@@ -834,6 +864,8 @@ export declare const updateUser: ActionCreatorWithNonInferrablePayload<"auth/upd
|
|
|
834
864
|
|
|
835
865
|
export declare function useBranding(): BrandingContextValue;
|
|
836
866
|
|
|
867
|
+
export declare function useMessageDirection(msgId: string, text: string, lang?: string): TextDirection;
|
|
868
|
+
|
|
837
869
|
export declare const useNetworkState: () => NetworkState;
|
|
838
870
|
|
|
839
871
|
export declare interface UserMessageColors {
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@reduxjs/toolkit"),t=require("react"),r=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)},s=e=>{if(!e)return"";if(!r(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},o={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let n=null,a=null;const i=[];function u(e){if(n=e,i.length>0){const t=i.splice(0,i.length);for(const r of t)e.emit(r)}}function c(e){a=e}function l(e,t){const r=a?function(e){try{return e()??{}}catch{return{}}}(a):{},{message:s,...o}=t,u={...r,...o,level:e,message:s,timestamp:(new Date).toISOString()};n?n.emit(u):(i.length>=200&&i.shift(),i.push(u))}const d={debug(e){l(o.DEBUG,e)},info(e){l(o.INFO,e)},warn(e){l(o.WARN,e)},error(e){l(o.ERROR,e)},flush:()=>n?.flush?.()},p={[o.DEBUG]:0,[o.INFO]:1,[o.WARN]:2,[o.ERROR]:3};function g(e={}){const t=p[e.minLevel??o.DEBUG];return{emit(e){p[e.level]<t||(e.level===o.ERROR?console.error:e.level===o.WARN?console.warn:e.level===o.DEBUG?console.debug:console.info)(e)}}}const E={[o.DEBUG]:5,[o.INFO]:9,[o.WARN]:13,[o.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 F(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=m(s));return t}let f=!1,x=null,S=!0;function h(e){S=e}function T(e){f||(f=!0,c(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=[g({minLevel:e.consoleMinLevel??(e.isDev?o.DEBUG:o.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),u=new n.OTLPLogExporter({url:e.endpoint}),c=new s.LoggerProvider({resource:i,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:E[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 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){S&&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 y=Object.freeze(Object.defineProperty({__proto__:null,initLogger:T,registerPlatformFlushAttacher:function(e){x=e},resetInitLoggerStateForTests:function(){f=!1,x=null,S=!0},setNetworkLoggingEnabled:h},Symbol.toStringTag,{value:"Module"}));let O,A="",_={},I=null,R=()=>null,C=()=>null,N=!1;const M=()=>I,D=()=>C(),B=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${A}/api${t}`},v="chat",k={CONVERSATIONS:()=>B("/conversations"),CONVERSATION_STREAM:e=>B(`/conversations/${e}`),CONVERSATION_START:e=>B(`/conversations/${e}/start`),WEBRTC_OFFER:e=>B(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>B(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return B("/transcribe")},get BRANDING(){return B("/branding")},get CONFIG(){return B("/config")},get PROFILE(){return B("/profile")},get AUTH_ME(){return B("/auth/me")},get ORGANIZATIONS_EXISTS(){return B("/organizations/exists")},get DEBUG(){return B("/debug")},get TOOL_SERVERS(){return B("/tool-servers")},TOOL_SERVER_AUTH_START:e=>B(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>B(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return B("/tool-servers/auth/exchange")},get LOG(){return B("/log")}},b={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},w={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"},P={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"};let L=!0;const U=3,G=500,H=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(d.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))},K="bridge-toast";function $(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(K,{detail:e}))}const W=K,V=e=>!!e&&Date.now()>=e-b.TOKEN_CLOCK_SKEW_MS,j=e=>!e||Date.now()>=e-b.TOKEN_REFRESH_THRESHOLD_MS;function z(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 X(e){const t=z(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}class Y{static instance;events={};constructor(){}static getInstance(){return Y.instance||(Y.instance=new Y),Y.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){d.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 J=Y.getInstance(),q={LIGHT:"light",DARK:"dark",SYSTEM:"system"},Z=[q.LIGHT,q.DARK,q.SYSTEM],Q={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},ee={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:Q.PILL,chatInputPlaceholder:"Type anything..."},te={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:Q.PILL,chatInputPlaceholder:"Type anything..."};function re(e){return e===q.LIGHT?te:ee}const se=ee;function oe(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 ne(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 ae(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function ie(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 ue(e){switch(e){case"pill":return Q.PILL;case"none":return Q.SHARP;default:return 0===parseInt(e??"",10)?Q.SHARP:Q.ROUNDED}}const ce=t.createContext(void 0),le=t.createContext(null);let de=null;const pe=()=>de,ge=t.createContext(null),Ee={isConnected:!0,isInternetReachable:!0},me=e.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()+b.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:Fe,updateUser:fe,clearSession:xe,sessionExpired:Se,setSelectedOrgId:he}=me.actions,Te=Fe,ye=xe,Oe=e.createListenerMiddleware();Oe.startListening({matcher:e.isAnyOf(Fe,fe,xe,Se),effect:async(e,t)=>{const r=pe();if(!r)return;const{auth:s}=t.getState(),o=[];o.push(s.accessToken?r.setItem(w.ACCESS_TOKEN,s.accessToken):r.removeItem(w.ACCESS_TOKEN)),o.push(s.refreshToken?r.setItem(w.REFRESH_TOKEN,s.refreshToken):r.removeItem(w.REFRESH_TOKEN)),o.push(null!=s.tokenExpiresAt?r.setItem(w.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(w.TOKEN_EXPIRES_AT)),o.push(s.user?r.setItem(w.USER,JSON.stringify(s.user)):r.removeItem(w.USER)),(xe.match(e)||Se.match(e))&&o.push(r.removeItem(w.LOCATION_CACHE),r.removeItem(w.DEBUG_MODE),r.removeItem(w.APPEARANCE_MODE_KEY),r.removeItem(w.LOCATION_ENABLED),r.removeItem(w.STT_AUTO_SEND),r.removeItem(w.STT_IMPLEMENTATION),r.removeItem(w.SEND_DIAGNOSTICS),r.removeItem(w.ACTIVE_CONVERSATION_ID)),await Promise.all(o)}});const Ae=me.reducer,_e={lastResponseTime:null},Ie=e.createSlice({name:"indicator",initialState:_e,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:t=>{t.addMatcher(e.isAnyOf(xe,Se),()=>_e)}}),{setLastResponseTime:Re,clearLastResponseTime:Ce}=Ie.actions,Ne=Ie.reducer;exports.API_ENDPOINTS=k,exports.APPEARANCE_MODES=q,exports.APPEARANCE_MODE_VALUES=Z,exports.AUTH_HEADERS=P,exports.AUTH_PATHS={LOGIN:"/auth/login",SIGNUP:"/auth/signup",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=W,exports.BrandingContext=ce,exports.CORNER_RADIUS_MODES=Q,exports.EventEmitter=Y,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=o,exports.NetworkContext=ge,exports.ORB_POSITIONS={FOREGROUND:"foreground",BACKGROUND:"background"},exports.ORG_MOUNT_SUFFIX=v,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=w,exports.STT_IMPLEMENTATIONS={ONLINE:"online",DEVICE:"device"},exports.StorageContext=le,exports.TIMING=b,exports.brandingToThemeStyles=function(e,t,r=q.DARK){const s=re(r);if(!e||!t)return s;const o=t.surface?.chatInput?.border||t.surface?.input?.border,n=t.surface?.userMessage?.border,a=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?oe(o.color,o.opacity||100):s.inputBorderColor,inputBorderWidth:o?.width||s.inputBorderWidth,inputBorderOpacity:o?.opacity||100,widgetBorderStyle:a?.style||s.widgetBorderStyle,widgetBorderColor:a?.color?oe(a.color,a.opacity||100):s.widgetBorderColor,widgetBorderWidth:a?.width||s.widgetBorderWidth,widgetBorderOpacity:a?.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?oe(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:ne(e.typography?.fontFamily,s),fontFamilyMono:ae(e.typography?.fontFamilyMono,s),fontSize:14,borderRadius:ie(e.cornerRadius,s),cornerRadiusMode:ue(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}},exports.capitalizeFirst=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",exports.clearAuthTokens=function(e){try{e.removeItem(w.ACCESS_TOKEN),e.removeItem(w.REFRESH_TOKEN),e.removeItem(w.TOKEN_EXPIRES_AT),e.removeItem(w.USER)}catch{}},exports.clearLastResponseTime=Ce,exports.clearSession=xe,exports.createTokenRefresher=function(e){const{performRefresh:t,isTransient:r=H,maxAttempts:s=U,backoffBaseMs:o=G}=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=se,exports.defaultDarkThemeStyles=ee,exports.defaultIsTransient=H,exports.defaultLightThemeStyles=te,exports.detectOrgSwitch=function(e,t){try{const r=t.getItem(w.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=X(t.getItem(w.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}},exports.ensureFreshToken=async()=>j(D())?await(M()?.())??null:null,exports.eventEmitter=J,exports.extractTokens=function(e){const t=e.headers.get(P.ACCESS_TOKEN),r=e.headers.get(P.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${P.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${P.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 s(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=B,exports.getAppearanceModeStorageKey=e=>e?`${w.APPEARANCE_MODE_KEY}:${e}`:w.APPEARANCE_MODE_KEY,exports.getArrayOfObjects=function(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e},exports.getBaseUrl=()=>A,exports.getCustomHeaders=()=>_,exports.getDefaultThemeStyles=re,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=()=>O,exports.getSendDiagnostics=()=>L,exports.getStorageRef=pe,exports.getTimeUntilExpiry=e=>e?Math.max(0,e-Date.now()):0,exports.getTimeUntilRefresh=e=>e?Math.max(0,e-b.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,exports.getTokenRefreshHandler=M,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(w.SEND_DIAGNOSTICS);L=null===t||"true"===t},exports.hydrateSession=e=>async t=>{const[r,s,o,n]=await Promise.all([e.getItem(w.ACCESS_TOKEN),e.getItem(w.REFRESH_TOKEN),e.getItem(w.TOKEN_EXPIRES_AT),e.getItem(w.USER)]),a=o?parseInt(o,10):null;if((!r||!a||V(a))&&!s)return void(r&&await Promise.all([e.removeItem(w.ACCESS_TOKEN),e.removeItem(w.REFRESH_TOKEN),e.removeItem(w.TOKEN_EXPIRES_AT),e.removeItem(w.USER)]));let i=null;if(n)try{i=JSON.parse(n)}catch(e){d.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Fe({user:i,accessToken:r,refreshToken:s,expiresIn:null!=a?a/1e3:null}))},exports.indicatorReducer=Ne,exports.initLogger=T,exports.initializeChatConfig=e=>{A=e.baseUrl,_=e.customHeaders||{},O=e.paymentProvider},exports.isDevMode=()=>N,exports.isTokenAboutToExpire=j,exports.isTokenExpired=V,exports.joinOrgMountBase=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${v}`:`${e}/${v}`,exports.logger=d,exports.logout=ye,exports.parseJwtPayload=z,exports.parseOrgFromJwt=X,exports.readAccessToken=()=>R(),exports.readTokenExpiresAt=D,exports.registerEventListener=function(e,t){return J.on(e,t)},exports.registerLoggerContextProvider=c,exports.registerLoggerSink=u,exports.removeSpecialCharsAndSpaces=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",exports.resetLoggerForTests=async function(){n=null,a=null,i.length=0,(await Promise.resolve().then(()=>y)).resetInitLoggerStateForTests()},exports.sanitizeExpiryDate=s,exports.sessionExpired=Se,exports.sessionListenerMiddleware=Oe,exports.sessionReducer=Ae,exports.setAccessTokenReader=e=>{R=e},exports.setCredentials=Te,exports.setIsDev=e=>{N=e},exports.setLastResponseTime=Re,exports.setModuleStorage=function(e){de=e},exports.setNetworkLoggingEnabled=h,exports.setSelectedOrgId=he,exports.setSession=Fe,exports.setTokenExpiresAtReader=e=>{C=e},exports.setTokenRefreshHandler=e=>{I=e},exports.showErrorToast=(e="Please try again")=>$({title:"Error",description:e,variant:"destructive"}),exports.showSuccessToast=(e="Successfully")=>$({title:"Success",description:e,variant:"default"}),exports.showToast=e=>$(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=t.useContext(ce);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e},exports.useNetworkState=()=>{const e=t.useContext(ge),r=t.useCallback(t=>e?e.subscribe(t):()=>{},[e]),s=t.useCallback(()=>e?e.getState():Ee,[e]);return t.useSyncExternalStore(r,s,s)},exports.useStorage=()=>{const e=t.useContext(le);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=r,exports.writeOrgToStorage=function(e,t){try{t.setItem(w.SELECTED_ORG_ID,e),t.setItem(w.SELECTED_ORG_NAME,e)}catch{}};
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("@reduxjs/toolkit"),r=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)},s=e=>{if(!e)return"";if(!r(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},o={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let n=null,a=null;const i=[];function c(e){if(n=e,i.length>0){const t=i.splice(0,i.length);for(const r of t)e.emit(r)}}function u(e){a=e}function l(e,t){const r=a?function(e){try{return e()??{}}catch{return{}}}(a):{},{message:s,...o}=t,c={...r,...o,level:e,message:s,timestamp:(new Date).toISOString()};n?n.emit(c):(i.length>=200&&i.shift(),i.push(c))}const d={debug(e){l(o.DEBUG,e)},info(e){l(o.INFO,e)},warn(e){l(o.WARN,e)},error(e){l(o.ERROR,e)},flush:()=>n?.flush?.()},p={[o.DEBUG]:0,[o.INFO]:1,[o.WARN]:2,[o.ERROR]:3};function g(e={}){const t=p[e.minLevel??o.DEBUG];return{emit(e){p[e.level]<t||(e.level===o.ERROR?console.error:e.level===o.WARN?console.warn:e.level===o.DEBUG?console.debug:console.info)(e)}}}const E={[o.DEBUG]:5,[o.INFO]:9,[o.WARN]:13,[o.ERROR]:17};function x(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 m(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=x(s));return t}let f=!1,F=null,T=!0;function h(e){T=e}function S(e){f||(f=!0,u(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=[g({minLevel:e.consoleMinLevel??(e.isDev?o.DEBUG:o.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:E[t],severityText:t,body:JSON.stringify(e),attributes:m(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){T&&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&&F?.())}const y=Object.freeze(Object.defineProperty({__proto__:null,initLogger:S,registerPlatformFlushAttacher:function(e){F=e},resetInitLoggerStateForTests:function(){f=!1,F=null,T=!0},setNetworkLoggingEnabled:h},Symbol.toStringTag,{value:"Module"}));let A,O="",_={},R=null,I=()=>null,C=()=>null,N=()=>null,D=!1;const M=()=>R,v=()=>N(),k=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${O}/api${t}`},w="chat",B={CONVERSATIONS:()=>k("/conversations"),CONVERSATION_STREAM:e=>k(`/conversations/${e}`),CONVERSATION_START:e=>k(`/conversations/${e}/start`),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 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")}},b={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"},P={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"};let U=!0;const H=3,G=500,K=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(d.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))},$="bridge-toast";function W(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent($,{detail:e}))}const j=$,V=e=>!!e&&Date.now()>=e-b.TOKEN_CLOCK_SKEW_MS,z=e=>!e||Date.now()>=e-b.TOKEN_REFRESH_THRESHOLD_MS;function X(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 Y(e){const t=X(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}const J={LTR:"ltr",RTL:"rtl"},q=[[1488,1514],[1519,1522],[1568,1610],[1646,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1791],[1808,1839],[1869,1919],[1920,1957],[1969,1969],[1994,2026],[2048,2069],[2112,2136],[2160,2190],[2208,2239],[64285,64335],[64336,64975],[65136,65276],[125184,125251]],Z=[[12352,12543],[19968,40959],[44032,55215]],Q=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g,ee=["arab","hebr","thaa","syrc","adlm","nkoo"],te=["ar","he","fa","ur","ps","sd","ug","yi","dv","ku","ckb","syr","prs"],re=["und","zxx","mul"];function se(e,t){for(const[r,s]of t)if(e>=r&&e<=s)return!0;return!1}function oe(e,t=J.LTR){const r=(e??"").replace(Q," ");let s=0,o=0;for(const e of r){const t=e.codePointAt(0);se(t,q)?s+=1:(e.toLowerCase()!==e.toUpperCase()||se(t,Z))&&(o+=1)}const n=s+o;return 0===n?{dir:t,confident:!1}:{dir:s/n>=.2?J.RTL:J.LTR,confident:n>=12}}function ne(e){if(!e)return null;const t=e.toLowerCase().split(/[-_]/);for(const e of t.slice(1))if(4===e.length)return ee.indexOf(e)>=0?J.RTL:J.LTR;const r=t[0];return!r||re.indexOf(r)>=0?null:te.indexOf(r)>=0?J.RTL:J.LTR}class ae{static instance;events={};constructor(){}static getInstance(){return ae.instance||(ae.instance=new ae),ae.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){d.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 ie=ae.getInstance(),ce={LIGHT:"light",DARK:"dark",SYSTEM:"system"},ue=[ce.LIGHT,ce.DARK,ce.SYSTEM],le={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},de={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:le.PILL,chatInputPlaceholder:"Type anything..."},pe={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:le.PILL,chatInputPlaceholder:"Type anything..."};function ge(e){return e===ce.LIGHT?pe:de}const Ee=de;function xe(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 me(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 fe(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function Fe(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 Te(e){switch(e){case"pill":return le.PILL;case"none":return le.SHARP;default:return 0===parseInt(e??"",10)?le.SHARP:le.ROUNDED}}const he=e.createContext(void 0),Se=e.createContext(null);let ye=null;const Ae=()=>ye,Oe=e.createContext(null),_e={isConnected:!0,isInternetReachable:!0},Re=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()+b.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:Ie,updateUser:Ce,clearSession:Ne,sessionExpired:De,setSelectedOrgId:Me}=Re.actions,ve=Ie,ke=Ne,we=t.createListenerMiddleware();we.startListening({matcher:t.isAnyOf(Ie,Ce,Ne,De),effect:async(e,t)=>{const r=Ae();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)),(Ne.match(e)||De.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 Be=Re.reducer,be={lastResponseTime:null},Le=t.createSlice({name:"indicator",initialState:be,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(t.isAnyOf(Ne,De),()=>be)}}),{setLastResponseTime:Pe,clearLastResponseTime:Ue}=Le.actions,He=Le.reducer;exports.API_ENDPOINTS=B,exports.APPEARANCE_MODES=ce,exports.APPEARANCE_MODE_VALUES=ue,exports.AUTH_HEADERS=P,exports.AUTH_PATHS={LOGIN:"/auth/login",SIGNUP:"/auth/signup",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=he,exports.CORNER_RADIUS_MODES=le,exports.DEVICE_TOKEN_HEADER="x-device-token",exports.DIRECTION_VECTORS=[{text:"مرحبا كيف حالك اليوم يا صديقي",expected:"rtl"},{text:"שלום מה קורה איתך היום חבר",expected:"rtl"},{text:"Hello, how are you doing today?",expected:"ltr"},{text:"Dune: Part Two كان فيلمًا رائعًا",expected:"rtl"},{text:"The word شكرا means thanks in Arabic",expected:"ltr"},{text:"https://example.com/very/long/path/to/a/page انظر",expected:"rtl"},{text:"شرح الكود\n```js\nconst answer = compute(value);\n```",expected:"rtl"},{text:"السعر ١٢٣٤٥ ريال فقط",expected:"rtl"},{text:"🎉🎉🎉",expected:"ltr"},{text:"12345",expected:"ltr"},{text:"",expected:"ltr"},{text:"Hello مرحبا",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku-Latn",expected:"ltr"},{text:"Punjabi in Arabic script",lang:"pa-Arab",expected:"rtl"},{text:"Azerbaijani in Arabic script",lang:"az-Arab",expected:"rtl"},{text:"Latin transliteration only",lang:"ar",expected:"rtl"},{text:"Latin transliteration only",lang:"he",expected:"rtl"},{text:"مرحبا",lang:"en",expected:"ltr"}],exports.EventEmitter=ae,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=o,exports.NetworkContext=Oe,exports.ORB_POSITIONS={FOREGROUND:"foreground",BACKGROUND:"background"},exports.ORG_MOUNT_SUFFIX=w,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=Se,exports.TEXT_DIRECTION=J,exports.TIMING=b,exports.brandingToThemeStyles=function(e,t,r=ce.DARK){const s=ge(r);if(!e||!t)return s;const o=t.surface?.chatInput?.border||t.surface?.input?.border,n=t.surface?.userMessage?.border,a=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?xe(o.color,o.opacity||100):s.inputBorderColor,inputBorderWidth:o?.width||s.inputBorderWidth,inputBorderOpacity:o?.opacity||100,widgetBorderStyle:a?.style||s.widgetBorderStyle,widgetBorderColor:a?.color?xe(a.color,a.opacity||100):s.widgetBorderColor,widgetBorderWidth:a?.width||s.widgetBorderWidth,widgetBorderOpacity:a?.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?xe(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:me(e.typography?.fontFamily,s),fontFamilyMono:fe(e.typography?.fontFamilyMono,s),fontSize:14,borderRadius:Fe(e.cornerRadius,s),cornerRadiusMode:Te(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}},exports.capitalizeFirst=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",exports.clearAuthTokens=function(e){try{e.removeItem(L.ACCESS_TOKEN),e.removeItem(L.REFRESH_TOKEN),e.removeItem(L.TOKEN_EXPIRES_AT),e.removeItem(L.USER)}catch{}},exports.clearLastResponseTime=Ue,exports.clearSession=Ne,exports.createTokenRefresher=function(e){const{performRefresh:t,isTransient:r=K,maxAttempts:s=H,backoffBaseMs:o=G}=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=Ee,exports.defaultDarkThemeStyles=de,exports.defaultIsTransient=K,exports.defaultLightThemeStyles=pe,exports.detectOrgSwitch=function(e,t){try{const r=t.getItem(L.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=Y(t.getItem(L.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}},exports.detectTextDirection=oe,exports.ensureFreshToken=async()=>z(v())?await(M()?.())??null:null,exports.eventEmitter=ie,exports.extractTokens=function(e){const t=e.headers.get(P.ACCESS_TOKEN),r=e.headers.get(P.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${P.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${P.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 s(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=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=()=>O,exports.getCustomHeaders=()=>_,exports.getDefaultThemeStyles=ge,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=()=>U,exports.getStorageRef=Ae,exports.getTimeUntilExpiry=e=>e?Math.max(0,e-Date.now()):0,exports.getTimeUntilRefresh=e=>e?Math.max(0,e-b.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,exports.getTokenRefreshHandler=M,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(L.SEND_DIAGNOSTICS);U=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)]),a=o?parseInt(o,10):null;if((!r||!a||V(a))&&!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 i=null;if(n)try{i=JSON.parse(n)}catch(e){d.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Ie({user:i,accessToken:r,refreshToken:s,expiresIn:null!=a?a/1e3:null}))},exports.indicatorReducer=He,exports.initLogger=S,exports.initializeChatConfig=e=>{O=e.baseUrl,_=e.customHeaders||{},A=e.paymentProvider},exports.isDevMode=()=>D,exports.isTokenAboutToExpire=z,exports.isTokenExpired=V,exports.joinOrgMountBase=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${w}`:`${e}/${w}`,exports.logger=d,exports.logout=ke,exports.parseJwtPayload=X,exports.parseOrgFromJwt=Y,exports.readAccessToken=()=>I(),exports.readDeviceToken=()=>C(),exports.readTokenExpiresAt=v,exports.registerEventListener=function(e,t){return ie.on(e,t)},exports.registerLoggerContextProvider=u,exports.registerLoggerSink=c,exports.removeSpecialCharsAndSpaces=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",exports.resetLoggerForTests=async function(){n=null,a=null,i.length=0,(await Promise.resolve().then(()=>y)).resetInitLoggerStateForTests()},exports.resolveDirectionFromLang=ne,exports.sanitizeExpiryDate=s,exports.sessionExpired=De,exports.sessionListenerMiddleware=we,exports.sessionReducer=Be,exports.setAccessTokenReader=e=>{I=e},exports.setCredentials=ve,exports.setDeviceTokenReader=e=>{C=e},exports.setIsDev=e=>{D=e},exports.setLastResponseTime=Pe,exports.setModuleStorage=function(e){ye=e},exports.setNetworkLoggingEnabled=h,exports.setSelectedOrgId=Me,exports.setSession=Ie,exports.setTokenExpiresAtReader=e=>{N=e},exports.setTokenRefreshHandler=e=>{R=e},exports.showErrorToast=(e="Please try again")=>W({title:"Error",description:e,variant:"destructive"}),exports.showSuccessToast=(e="Successfully")=>W({title:"Success",description:e,variant:"default"}),exports.showToast=e=>W(e),exports.truncateWordLimit=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},exports.updateUser=Ce,exports.useBranding=function(){const t=e.useContext(he);if(!t)throw new Error("useBranding must be used within a BrandingProvider");return t},exports.useMessageDirection=function(t,r,s){const o=e.useRef(null);o.current&&o.current.msgId===t||(o.current={msgId:t,dir:J.LTR,locked:!1});const n=o.current,a=ne(s);if(a)n.dir=a,n.locked=!0;else if(!n.locked){const{dir:e,confident:t}=oe(r);n.dir=e,n.locked=t}return n.dir},exports.useNetworkState=()=>{const t=e.useContext(Oe),r=e.useCallback(e=>t?t.subscribe(e):()=>{},[t]),s=e.useCallback(()=>t?t.getState():_e,[t]);return e.useSyncExternalStore(r,s,s)},exports.useStorage=()=>{const t=e.useContext(Se);if(!t)throw new Error("useStorage must be called inside a <StorageProvider>. Wrap your app's root with <StorageProvider value={browserLocalStorageAdapter}> (or an RN equivalent).");return t},exports.validateExpiryDate=r,exports.writeOrgToStorage=function(e,t){try{t.setItem(L.SELECTED_ORG_ID,e),t.setItem(L.SELECTED_ORG_NAME,e)}catch{}};
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createSlice as e,createListenerMiddleware as t,isAnyOf as r}from"@reduxjs/toolkit";import{createContext as s,useContext as n,useCallback as o,useSyncExternalStore as i}from"react";const a=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},u=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),c=(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)},l=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",d=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():"",g=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",p=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),E=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)},F=e=>{if(!e)return"";if(!E(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},m=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return F(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},f=e=>e.replace(/\D/g,"").slice(0,4);function h(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e}const S=(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"},T=e=>Array.isArray(e.widget)&&e.widget.length>0;function y(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 _={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let O=null,A=null;const I=[];function R(e){if(O=e,I.length>0){const t=I.splice(0,I.length);for(const r of t)e.emit(r)}}function N(e){A=e}async function x(){O=null,A=null,I.length=0,(await Promise.resolve().then(()=>H)).resetInitLoggerStateForTests()}function C(e,t){const r=A?function(e){try{return e()??{}}catch{return{}}}(A):{},{message:s,...n}=t,o={...r,...n,level:e,message:s,timestamp:(new Date).toISOString()};O?O.emit(o):(I.length>=200&&I.shift(),I.push(o))}const M={debug(e){C(_.DEBUG,e)},info(e){C(_.INFO,e)},warn(e){C(_.WARN,e)},error(e){C(_.ERROR,e)},flush:()=>O?.flush?.()},B={[_.DEBUG]:0,[_.INFO]:1,[_.WARN]:2,[_.ERROR]:3};function D(e={}){const t=B[e.minLevel??_.DEBUG];return{emit(e){B[e.level]<t||(e.level===_.ERROR?console.error:e.level===_.WARN?console.warn:e.level===_.DEBUG?console.debug:console.info)(e)}}}const v={[_.DEBUG]:5,[_.INFO]:9,[_.WARN]:13,[_.ERROR]:17};function b(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 w(e){const t={};for(const[r,s]of Object.entries(e))void 0!==s&&(t[r]=b(s));return t}let k=!1,P=null,L=!0;function U(e){L=e}function G(e){k||(k=!0,N(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),R(function(e){const t=[D({minLevel:e.consoleMinLevel??(e.isDev?_.DEBUG:_.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:v[t],severityText:t,body:JSON.stringify(e),attributes:w(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){L&&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&&P?.())}const H=Object.freeze(Object.defineProperty({__proto__:null,initLogger:G,registerPlatformFlushAttacher:function(e){P=e},resetInitLoggerStateForTests:function(){k=!1,P=null,L=!0},setNetworkLoggingEnabled:U},Symbol.toStringTag,{value:"Module"}));let K,$="",W={},j=null,V=()=>null,X=()=>null,z=!1;const Y=e=>{$=e.baseUrl,W=e.customHeaders||{},K=e.paymentProvider},J=()=>$,Z=()=>K,q=()=>W,Q=e=>{j=e},ee=()=>j,te=e=>{V=e},re=()=>V(),se=e=>{X=e},ne=()=>X(),oe=e=>{z=e},ie=()=>z,ae=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${$}/api${t}`},ue="chat",ce=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${ue}`:`${e}/${ue}`,le={CONVERSATIONS:()=>ae("/conversations"),CONVERSATION_STREAM:e=>ae(`/conversations/${e}`),CONVERSATION_START:e=>ae(`/conversations/${e}/start`),WEBRTC_OFFER:e=>ae(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>ae(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return ae("/transcribe")},get BRANDING(){return ae("/branding")},get CONFIG(){return ae("/config")},get PROFILE(){return ae("/profile")},get AUTH_ME(){return ae("/auth/me")},get ORGANIZATIONS_EXISTS(){return ae("/organizations/exists")},get DEBUG(){return ae("/debug")},get TOOL_SERVERS(){return ae("/tool-servers")},TOOL_SERVER_AUTH_START:e=>ae(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>ae(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return ae("/tool-servers/auth/exchange")},get LOG(){return ae("/log")}},de={SSO:"sso"},ge={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},pe={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"},Ee={ONLINE:"online",DEVICE:"device"},Fe=e=>e?`${pe.APPEARANCE_MODE_KEY}:${e}`:pe.APPEARANCE_MODE_KEY,me={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"},fe={LOGIN:"/auth/login",SIGNUP:"/auth/signup",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"},he={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},Se={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16};let Te=!0;const ye=async e=>{const t=await e.getItem(pe.SEND_DIAGNOSTICS);Te=null===t||"true"===t},_e=()=>Te,Oe=3,Ae=500,Ie=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(M.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))};function Re(e){const{performRefresh:t,isTransient:r=Ie,maxAttempts:s=Oe,backoffBaseMs:n=Ae}=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 Ne="bridge-toast";function xe(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(Ne,{detail:e}))}const Ce=e=>xe(e),Me=(e="Please try again")=>xe({title:"Error",description:e,variant:"destructive"}),Be=(e="Successfully")=>xe({title:"Success",description:e,variant:"default"}),De=Ne,ve=e=>!!e&&Date.now()>=e-ge.TOKEN_CLOCK_SKEW_MS,be=e=>!e||Date.now()>=e-ge.TOKEN_REFRESH_THRESHOLD_MS,we=async()=>be(ne())?await(ee()?.())??null:null,ke=e=>e?Math.max(0,e-Date.now()):0,Pe=e=>e?Math.max(0,e-ge.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,Le=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`};function Ue(e){const t=e.headers.get(me.ACCESS_TOKEN),r=e.headers.get(me.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${me.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${me.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}}function Ge(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 He(e){const t=Ge(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}function Ke(e,t){try{const r=t.getItem(pe.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const s=He(t.getItem(pe.ACCESS_TOKEN));return s&&s!==e?"jwt":null}catch{return null}}function $e(e){try{e.removeItem(pe.ACCESS_TOKEN),e.removeItem(pe.REFRESH_TOKEN),e.removeItem(pe.TOKEN_EXPIRES_AT),e.removeItem(pe.USER)}catch{}}function We(e,t){try{t.setItem(pe.SELECTED_ORG_ID,e),t.setItem(pe.SELECTED_ORG_NAME,e)}catch{}}class je{static instance;events={};constructor(){}static getInstance(){return je.instance||(je.instance=new je),je.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){M.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 Ve=je.getInstance();function Xe(e,t){return Ve.on(e,t)}const ze={LIGHT:"light",DARK:"dark",SYSTEM:"system"},Ye=[ze.LIGHT,ze.DARK,ze.SYSTEM],Je={FOREGROUND:"foreground",BACKGROUND:"background"},Ze={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},qe={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:Ze.PILL,chatInputPlaceholder:"Type anything..."},Qe={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:Ze.PILL,chatInputPlaceholder:"Type anything..."};function et(e){return e===ze.LIGHT?Qe:qe}const tt=qe;function rt(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 st(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 nt(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function ot(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 it(e){switch(e){case"pill":return Ze.PILL;case"none":return Ze.SHARP;default:return 0===parseInt(e??"",10)?Ze.SHARP:Ze.ROUNDED}}function at(e,t,r=ze.DARK){const s=et(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?rt(n.color,n.opacity||100):s.inputBorderColor,inputBorderWidth:n?.width||s.inputBorderWidth,inputBorderOpacity:n?.opacity||100,widgetBorderStyle:i?.style||s.widgetBorderStyle,widgetBorderColor:i?.color?rt(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?rt(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:st(e.typography?.fontFamily,s),fontFamilyMono:nt(e.typography?.fontFamilyMono,s),fontSize:14,borderRadius:ot(e.cornerRadius,s),cornerRadiusMode:it(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}}function ut(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 ct=s(void 0);function lt(){const e=n(ct);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e}const dt=s(null),gt=()=>{const e=n(dt);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 pt=null;function Et(e){pt=e}const Ft=()=>pt,mt=s(null),ft={isConnected:!0,isInternetReachable:!0},ht=()=>{const e=n(mt),t=o(t=>e?e.subscribe(t):()=>{},[e]),r=o(()=>e?e.getState():ft,[e]);return i(t,r,r)},St=e({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()+ge.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:Tt,updateUser:yt,clearSession:_t,sessionExpired:Ot,setSelectedOrgId:At}=St.actions,It=Tt,Rt=_t,Nt=e=>async t=>{const[r,s,n,o]=await Promise.all([e.getItem(pe.ACCESS_TOKEN),e.getItem(pe.REFRESH_TOKEN),e.getItem(pe.TOKEN_EXPIRES_AT),e.getItem(pe.USER)]),i=n?parseInt(n,10):null;if((!r||!i||ve(i))&&!s)return void(r&&await Promise.all([e.removeItem(pe.ACCESS_TOKEN),e.removeItem(pe.REFRESH_TOKEN),e.removeItem(pe.TOKEN_EXPIRES_AT),e.removeItem(pe.USER)]));let a=null;if(o)try{a=JSON.parse(o)}catch(e){M.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Tt({user:a,accessToken:r,refreshToken:s,expiresIn:null!=i?i/1e3:null}))},xt=t();xt.startListening({matcher:r(Tt,yt,_t,Ot),effect:async(e,t)=>{const r=Ft();if(!r)return;const{auth:s}=t.getState(),n=[];n.push(s.accessToken?r.setItem(pe.ACCESS_TOKEN,s.accessToken):r.removeItem(pe.ACCESS_TOKEN)),n.push(s.refreshToken?r.setItem(pe.REFRESH_TOKEN,s.refreshToken):r.removeItem(pe.REFRESH_TOKEN)),n.push(null!=s.tokenExpiresAt?r.setItem(pe.TOKEN_EXPIRES_AT,String(s.tokenExpiresAt)):r.removeItem(pe.TOKEN_EXPIRES_AT)),n.push(s.user?r.setItem(pe.USER,JSON.stringify(s.user)):r.removeItem(pe.USER)),(_t.match(e)||Ot.match(e))&&n.push(r.removeItem(pe.LOCATION_CACHE),r.removeItem(pe.DEBUG_MODE),r.removeItem(pe.APPEARANCE_MODE_KEY),r.removeItem(pe.LOCATION_ENABLED),r.removeItem(pe.STT_AUTO_SEND),r.removeItem(pe.STT_IMPLEMENTATION),r.removeItem(pe.SEND_DIAGNOSTICS),r.removeItem(pe.ACTIVE_CONVERSATION_ID)),await Promise.all(n)}});const Ct=St.reducer,Mt={lastResponseTime:null},Bt=e({name:"indicator",initialState:Mt,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(r(_t,Ot),()=>Mt)}}),{setLastResponseTime:Dt,clearLastResponseTime:vt}=Bt.actions,bt=Bt.reducer;function wt(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 kt={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},Pt={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"};function Lt(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id}export{le as API_ENDPOINTS,ze as APPEARANCE_MODES,Ye as APPEARANCE_MODE_VALUES,me as AUTH_HEADERS,fe as AUTH_PATHS,De as BRIDGE_TOAST_EVENT_NAME,ct as BrandingContext,Ze as CORNER_RADIUS_MODES,je as EventEmitter,de as FEATURE_FLAGS,kt as IDP_HINTS,Pt as INDICATOR_TIMER_ACTIONS,_ as LOG_LEVELS,mt as NetworkContext,Je as ORB_POSITIONS,ue as ORG_MOUNT_SUFFIX,he as PATTERNS,Se as PROFILE_LIMITS,pe as STORAGE_KEYS,Ee as STT_IMPLEMENTATIONS,dt as StorageContext,ge as TIMING,at as brandingToThemeStyles,l as capitalizeFirst,$e as clearAuthTokens,vt as clearLastResponseTime,_t as clearSession,Re as createTokenRefresher,tt as defaultChatThemeStyles,qe as defaultDarkThemeStyles,Ie as defaultIsTransient,Qe as defaultLightThemeStyles,Ke as detectOrgSwitch,we as ensureFreshToken,Ve as eventEmitter,Ue as extractTokens,f as formatCVC,d as formatCamelCaseToTitle,p as formatCardNumber,m as formatExpiryDate,Le as formatTimeRemaining,c as formatTimestamp,u as generateUniqueId,ae as getApiUrl,Fe as getAppearanceModeStorageKey,h as getArrayOfObjects,J as getBaseUrl,q as getCustomHeaders,et as getDefaultThemeStyles,y as getErrorMessage,S as getInitials,Lt as getPaymentId,Z as getPaymentProviderHint,_e as getSendDiagnostics,Ft as getStorageRef,ke as getTimeUntilExpiry,Pe as getTimeUntilRefresh,ee as getTokenRefreshHandler,wt as handleSharedEvent,T as hasWidgets,ut as hexToRgba,ye as hydrateAppBoot,Nt as hydrateSession,bt as indicatorReducer,G as initLogger,Y as initializeChatConfig,ie as isDevMode,be as isTokenAboutToExpire,ve as isTokenExpired,ce as joinOrgMountBase,M as logger,Rt as logout,Ge as parseJwtPayload,He as parseOrgFromJwt,re as readAccessToken,ne as readTokenExpiresAt,Xe as registerEventListener,N as registerLoggerContextProvider,R as registerLoggerSink,g as removeSpecialCharsAndSpaces,x as resetLoggerForTests,F as sanitizeExpiryDate,Ot as sessionExpired,xt as sessionListenerMiddleware,Ct as sessionReducer,te as setAccessTokenReader,It as setCredentials,oe as setIsDev,Dt as setLastResponseTime,Et as setModuleStorage,U as setNetworkLoggingEnabled,At as setSelectedOrgId,Tt as setSession,se as setTokenExpiresAtReader,Q as setTokenRefreshHandler,Me as showErrorToast,Be as showSuccessToast,Ce as showToast,a as truncateWordLimit,yt as updateUser,lt as useBranding,ht as useNetworkState,gt as useStorage,E as validateExpiryDate,We as writeOrgToStorage};
|
|
1
|
+
import{useRef as e,createContext as t,useContext as r,useCallback as n,useSyncExternalStore as s}from"react";import{createSlice as o,createListenerMiddleware as i,isAnyOf as a}from"@reduxjs/toolkit";const c=(e,t)=>{if(!e)return"";const r=e.split(" ");return r.length>t?r.slice(0,t).join(" "):e},u=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),l=(e,t=new Date)=>{if(!e)return"";const r=new Date(e);if(isNaN(r.getTime()))return"";const n=t.getTime()-r.getTime(),s=Math.floor(n/6e4),o=Math.floor(n/36e5),i=Math.floor(n/864e5);return s<1?"Just now":s<60?`${s}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)},d=e=>e?e.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):"",g=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():"",p=e=>e?e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"").trim():"",E=e=>e.replace(/\D/g,"").slice(0,16).replace(/(.{4})/g,"$1 ").trim(),f=e=>{const t=e.match(/^(\d{2})\/(\d{2})$/);if(!t)return!1;const r=Number(t[1]),n=Number(t[2]);if(r<1||r>12)return!1;const s=new Date,o=s.getFullYear()%100,i=s.getMonth()+1;return!(n<o||n===o&&r<i||r>12)},F=e=>{if(!e)return"";if(!f(e)){const t=e.match(/^(\d{2})\/(\d{2})$/);if(t){const e=Number(t[1]),r=Number(t[2]),n=new Date,s=n.getFullYear()%100,o=n.getMonth()+1;if(r<s||r===s&&e<o||e>12)return""}}return e},m=e=>{const t=e.replace(/\D/g,"").slice(0,4);if(4===t.length){const e=t.slice(0,2)+"/"+t.slice(2);return F(e)}return t.length>=3?`${t.slice(0,2)}/${t.slice(2)}`:t.length>=1?t:""},h=e=>e.replace(/\D/g,"").slice(0,4);function S(e){return Array.isArray(e)&&Array.isArray(e[0])?e.flat():e}const T=(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"},y=e=>Array.isArray(e.widget)&&e.widget.length>0;function x(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 _={DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR"};let O=null,A=null;const R=[];function I(e){if(O=e,R.length>0){const t=R.splice(0,R.length);for(const r of t)e.emit(r)}}function N(e){A=e}async function C(){O=null,A=null,R.length=0,(await Promise.resolve().then(()=>K)).resetInitLoggerStateForTests()}function M(e,t){const r=A?function(e){try{return e()??{}}catch{return{}}}(A):{},{message:n,...s}=t,o={...r,...s,level:e,message:n,timestamp:(new Date).toISOString()};O?O.emit(o):(R.length>=200&&R.shift(),R.push(o))}const D={debug(e){M(_.DEBUG,e)},info(e){M(_.INFO,e)},warn(e){M(_.WARN,e)},error(e){M(_.ERROR,e)},flush:()=>O?.flush?.()},B={[_.DEBUG]:0,[_.INFO]:1,[_.WARN]:2,[_.ERROR]:3};function v(e={}){const t=B[e.minLevel??_.DEBUG];return{emit(e){B[e.level]<t||(e.level===_.ERROR?console.error:e.level===_.WARN?console.warn:e.level===_.DEBUG?console.debug:console.info)(e)}}}const b={[_.DEBUG]:5,[_.INFO]:9,[_.WARN]:13,[_.ERROR]:17};function w(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,n]of Object.entries(e))void 0!==n&&(t[r]=w(n));return t}let L=!1,P=null,U=!0;function G(e){U=e}function H(e){L||(L=!0,N(function(e){const t={app_name:e.appName,app_version:e.appVersion,environment:e.environment};return()=>({...t,...e.getContext()})}(e)),I(function(e){const t=[v({minLevel:e.consoleMinLevel??(e.isDev?_.DEBUG:_.WARN)})];if(e.otlpEndpoint&&!e.isDev){const r="otel"===(e.logTransport??"otel")?function(e){let t=!1,r=null,n=null;const s=[];function o(){n||(n=async function(){const[t,n,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),c=new o.OTLPLogExporter({url:e.endpoint}),u=new n.LoggerProvider({resource:a,processors:[new n.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:n,...s}=e;l.emit({severityNumber:b[t],severityText:t,body:JSON.stringify(e),attributes:k(s),timestamp:new Date(n)})},async flush(){await u.forceFlush()}},s.length>0){const e=s.splice(0,s.length);for(const t of e)r.emit(t)}}().catch(()=>{s.length=0,r=null,t=!0}))}return{emit(e){t||(r?r.emit(e):(o(),s.length>=200&&s.shift(),s.push(e)))},async flush(){(n||r)&&(o(),await n,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,n=e.maxQueueSize??2048,s=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(s(t)),keepalive:!0}).then(()=>{}).catch(()=>{});var t}return{emit(e){o.length>=n&&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){U&&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&&P?.())}const K=Object.freeze(Object.defineProperty({__proto__:null,initLogger:H,registerPlatformFlushAttacher:function(e){P=e},resetInitLoggerStateForTests:function(){L=!1,P=null,U=!0},setNetworkLoggingEnabled:G},Symbol.toStringTag,{value:"Module"}));let $,W="",j={},z=null,V=()=>null,X=()=>null,Y=()=>null,J=!1;const Z=e=>{W=e.baseUrl,j=e.customHeaders||{},$=e.paymentProvider},q=()=>W,Q=()=>$,ee=()=>j,te=e=>{z=e},re=()=>z,ne=e=>{V=e},se=()=>V(),oe=e=>{X=e},ie=()=>X(),ae=e=>{Y=e},ce=()=>Y(),ue=e=>{J=e},le=()=>J,de=e=>{const t=e.startsWith("/")?e:`/${e}`;return`${W}/api${t}`},ge="chat",pe=(e,t)=>t?`${e}/${encodeURIComponent(t)}/${ge}`:`${e}/${ge}`,Ee={CONVERSATIONS:()=>de("/conversations"),CONVERSATION_STREAM:e=>de(`/conversations/${e}`),CONVERSATION_START:e=>de(`/conversations/${e}/start`),WEBRTC_OFFER:e=>de(`/conversations/${e}/webrtc/offer`),WEBRTC_ICE:e=>de(`/conversations/${e}/webrtc/ice`),get TRANSCRIBE(){return de("/transcribe")},get BRANDING(){return de("/branding")},get CONFIG(){return de("/config")},get PROFILE(){return de("/profile")},get AUTH_ME(){return de("/auth/me")},get ORGANIZATIONS_EXISTS(){return de("/organizations/exists")},get DEBUG(){return de("/debug")},get TOOL_SERVERS(){return de("/tool-servers")},TOOL_SERVER_AUTH_START:e=>de(`/tool-servers/${e}/auth/start`),TOOL_SERVER_AUTH_CONNECTION:e=>de(`/tool-servers/${e}/auth/connection`),get TOOL_SERVERS_SIGN_IN_EXCHANGE(){return de("/tool-servers/auth/exchange")},get LOG(){return de("/log")}},fe={SSO:"sso"},Fe={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},me={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"},he={ONLINE:"online",DEVICE:"device"},Se=e=>e?`${me.APPEARANCE_MODE_KEY}:${e}`:me.APPEARANCE_MODE_KEY,Te={ACCESS_TOKEN:"x-access-token",REFRESH_TOKEN:"x-refresh-token"},ye="x-device-token",xe={LOGIN:"/auth/login",SIGNUP:"/auth/signup",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"},_e={EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,NON_DIGIT:/\D/g,PHONE_E164:/^\+[1-9]\d{1,14}$/},Oe={NAME_MAX_LENGTH:64,PHONE_MIN_LENGTH:8,PHONE_MAX_LENGTH:16};let Ae=!0;const Re=async e=>{const t=await e.getItem(me.SEND_DIAGNOSTICS);Ae=null===t||"true"===t},Ie=()=>Ae,Ne=3,Ce=500,Me=e=>{const t=e?.status;return"FETCH_ERROR"===t||"TIMEOUT_ERROR"===t||("number"==typeof t?t>=500:(D.warn({message:"unknown error shape; treating as transient",api_name:"auth-refresh",error_message:e instanceof Error?e.message:String(e)}),!0))};function De(e){const{performRefresh:t,isTransient:r=Me,maxAttempts:n=Ne,backoffBaseMs:s=Ce}=e;let o=null;return function(){return o||(o=(async()=>{for(let e=0;e<n;e++)try{return await t()}catch(t){if(!r(t))return null;if(e===n-1)break;const o=s*2**e+250*Math.random();await new Promise(e=>setTimeout(e,o))}return null})().finally(()=>{o=null}),o)}}const Be="bridge-toast";function ve(e){"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent(Be,{detail:e}))}const be=e=>ve(e),we=(e="Please try again")=>ve({title:"Error",description:e,variant:"destructive"}),ke=(e="Successfully")=>ve({title:"Success",description:e,variant:"default"}),Le=Be,Pe=e=>!!e&&Date.now()>=e-Fe.TOKEN_CLOCK_SKEW_MS,Ue=e=>!e||Date.now()>=e-Fe.TOKEN_REFRESH_THRESHOLD_MS,Ge=async()=>Ue(ce())?await(re()?.())??null:null,He=e=>e?Math.max(0,e-Date.now()):0,Ke=e=>e?Math.max(0,e-Fe.TOKEN_REFRESH_THRESHOLD_MS-Date.now()):0,$e=e=>{const t=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return t>0?`${t}m ${r}s`:`${r}s`};function We(e){const t=e.headers.get(Te.ACCESS_TOKEN),r=e.headers.get(Te.REFRESH_TOKEN);if(!t)throw new Error(`Missing ${Te.ACCESS_TOKEN} header in response`);if(!r)throw new Error(`Missing ${Te.REFRESH_TOKEN} header in response`);return{accessToken:t,refreshToken:r}}function je(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),n=atob(r),s=JSON.parse(n);return s&&"object"==typeof s&&!Array.isArray(s)?s:null}catch{return null}}function ze(e){const t=je(e),r=t?.org_id;return"string"==typeof r&&r.length>0?r:null}function Ve(e,t){try{const r=t.getItem(me.SELECTED_ORG_ID);if(r&&r!==e)return"storage";const n=ze(t.getItem(me.ACCESS_TOKEN));return n&&n!==e?"jwt":null}catch{return null}}function Xe(e){try{e.removeItem(me.ACCESS_TOKEN),e.removeItem(me.REFRESH_TOKEN),e.removeItem(me.TOKEN_EXPIRES_AT),e.removeItem(me.USER)}catch{}}function Ye(e,t){try{t.setItem(me.SELECTED_ORG_ID,e),t.setItem(me.SELECTED_ORG_NAME,e)}catch{}}const Je={LTR:"ltr",RTL:"rtl"},Ze=[[1488,1514],[1519,1522],[1568,1610],[1646,1747],[1749,1749],[1765,1766],[1774,1775],[1786,1791],[1808,1839],[1869,1919],[1920,1957],[1969,1969],[1994,2026],[2048,2069],[2112,2136],[2160,2190],[2208,2239],[64285,64335],[64336,64975],[65136,65276],[125184,125251]],qe=[[12352,12543],[19968,40959],[44032,55215]],Qe=/```[\s\S]*?```|`[^`]*`|(?:https?:\/\/|www\.)\S+|\S+@[\w.-]+\.\w+|[@#][\w-]+/g,et=["arab","hebr","thaa","syrc","adlm","nkoo"],tt=["ar","he","fa","ur","ps","sd","ug","yi","dv","ku","ckb","syr","prs"],rt=["und","zxx","mul"];function nt(e,t){for(const[r,n]of t)if(e>=r&&e<=n)return!0;return!1}function st(e,t=Je.LTR){const r=(e??"").replace(Qe," ");let n=0,s=0;for(const e of r){const t=e.codePointAt(0);nt(t,Ze)?n+=1:(e.toLowerCase()!==e.toUpperCase()||nt(t,qe))&&(s+=1)}const o=n+s;return 0===o?{dir:t,confident:!1}:{dir:n/o>=.2?Je.RTL:Je.LTR,confident:o>=12}}function ot(e){if(!e)return null;const t=e.toLowerCase().split(/[-_]/);for(const e of t.slice(1))if(4===e.length)return et.indexOf(e)>=0?Je.RTL:Je.LTR;const r=t[0];return!r||rt.indexOf(r)>=0?null:tt.indexOf(r)>=0?Je.RTL:Je.LTR}function it(t,r,n){const s=e(null);s.current&&s.current.msgId===t||(s.current={msgId:t,dir:Je.LTR,locked:!1});const o=s.current,i=ot(n);if(i)o.dir=i,o.locked=!0;else if(!o.locked){const{dir:e,confident:t}=st(r);o.dir=e,o.locked=t}return o.dir}const at=[{text:"مرحبا كيف حالك اليوم يا صديقي",expected:"rtl"},{text:"שלום מה קורה איתך היום חבר",expected:"rtl"},{text:"Hello, how are you doing today?",expected:"ltr"},{text:"Dune: Part Two كان فيلمًا رائعًا",expected:"rtl"},{text:"The word شكرا means thanks in Arabic",expected:"ltr"},{text:"https://example.com/very/long/path/to/a/page انظر",expected:"rtl"},{text:"شرح الكود\n```js\nconst answer = compute(value);\n```",expected:"rtl"},{text:"السعر ١٢٣٤٥ ريال فقط",expected:"rtl"},{text:"🎉🎉🎉",expected:"ltr"},{text:"12345",expected:"ltr"},{text:"",expected:"ltr"},{text:"Hello مرحبا",expected:"rtl"},{text:"Kurdî nivîsîn",lang:"ku-Latn",expected:"ltr"},{text:"Punjabi in Arabic script",lang:"pa-Arab",expected:"rtl"},{text:"Azerbaijani in Arabic script",lang:"az-Arab",expected:"rtl"},{text:"Latin transliteration only",lang:"ar",expected:"rtl"},{text:"Latin transliteration only",lang:"he",expected:"rtl"},{text:"مرحبا",lang:"en",expected:"ltr"}];class ct{static instance;events={};constructor(){}static getInstance(){return ct.instance||(ct.instance=new ct),ct.instance}on(e,t,r){const n="function"==typeof t?t:r;return this.events[e]||(this.events[e]=[]),this.events[e].push(n),()=>{this.off(e,n)}}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){D.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 ut=ct.getInstance();function lt(e,t){return ut.on(e,t)}const dt={LIGHT:"light",DARK:"dark",SYSTEM:"system"},gt=[dt.LIGHT,dt.DARK,dt.SYSTEM],pt={FOREGROUND:"foreground",BACKGROUND:"background"},Et={PILL:"pill",ROUNDED:"rounded",SHARP:"sharp"},ft={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:Et.PILL,chatInputPlaceholder:"Type anything..."},Ft={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:Et.PILL,chatInputPlaceholder:"Type anything..."};function mt(e){return e===dt.LIGHT?Ft:ft}const ht=ft;function St(e,t){const r=e.replace("#","");let n;n=3===r.length?r.split("").map(e=>e+e).join(""):6===r.length?r:"000000";const s=Math.max(0,Math.min(100,t));return`#${n}${Math.round(s/100*255).toString(16).padStart(2,"0")}`.toUpperCase()}function Tt(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 yt(e,t){return e?`"${e}", ui-monospace, monospace`:t.fontFamilyMono}function xt(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 _t(e){switch(e){case"pill":return Et.PILL;case"none":return Et.SHARP;default:return 0===parseInt(e??"",10)?Et.SHARP:Et.ROUNDED}}function Ot(e,t,r=dt.DARK){const n=mt(r);if(!e||!t)return n;const s=t.surface?.chatInput?.border||t.surface?.input?.border,o=t.surface?.userMessage?.border,i=t.surface?.widget?.border;return{bgColor:t.surface?.chat?.background||n.bgColor,inputBgColor:t.surface?.chatInput?.background||t.surface?.input?.background||n.inputBgColor,sidebarBg:t.surface?.sideMenu?.background||n.sidebarBg,sidebarBorderColor:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||n.sidebarBorderColor,widgetBg:t.surface?.widget?.background||n.widgetBg,settingsGroupBg:t.surface?.settings?.groupBackground||n.settingsGroupBg,inputBorderStyle:s?.style||n.inputBorderStyle,inputBorderColor:s?.color?St(s.color,s.opacity||100):n.inputBorderColor,inputBorderWidth:s?.width||n.inputBorderWidth,inputBorderOpacity:s?.opacity||100,widgetBorderStyle:i?.style||n.widgetBorderStyle,widgetBorderColor:i?.color?St(i.color,i.opacity||100):n.widgetBorderColor,widgetBorderWidth:i?.width||n.widgetBorderWidth,widgetBorderOpacity:i?.opacity??n.widgetBorderOpacity,placeholderColor:t.surface?.chatInput?.placeholderColor||t.surface?.input?.placeholderColor||n.placeholderColor,primaryText:t.text?.primary||n.primaryText,secondaryText:t.text?.secondary||n.secondaryText,tertiaryText:t.text?.tertiary||n.tertiaryText,userMsgBg:t.surface?.userMessage?.background||n.userMsgBg,userMsgText:t.surface?.userMessage?.textColor||n.userMsgText,userMsgBorderStyle:o?.style||n.userMsgBorderStyle,userMsgBorderColor:o?.color?St(o.color,o.opacity||100):n.userMsgBorderColor,userMsgBorderWidth:o?.width||n.userMsgBorderWidth,userMsgBorderOpacity:o?.opacity||0,sideMenuHeadings:t.surface?.sideMenu?.headingsColor||t.surface?.sideMenu?.headings||n.sideMenuHeadings,sideMenuText:t.surface?.sideMenu?.textContentColor||t.surface?.sideMenu?.textContent||n.sideMenuText,sideMenuIcon:t.surface?.sideMenu?.iconColor||t.surface?.sideMenu?.icons||n.sideMenuIcon,sideMenuProfile:t.surface?.sideMenu?.profileTextColor||t.surface?.sideMenu?.textProfile||n.sideMenuProfile,statusPrimary:{solid:t.status?.primary?.solid||n.statusPrimary.solid,background:t.status?.primary?.background||n.statusPrimary.background,text:t.status?.primary?.text||n.statusPrimary.text},statusSecondary:{solid:t.status?.secondary?.solid||n.statusSecondary.solid,background:t.status?.secondary?.background||n.statusSecondary.background,text:t.status?.secondary?.text||n.statusSecondary.text},statusSuccess:{solid:t.status?.success?.solid||n.statusSuccess.solid,background:t.status?.success?.background||n.statusSuccess.background,text:t.status?.success?.text||n.statusSuccess.text},statusDanger:{solid:t.status?.danger?.solid||n.statusDanger.solid,background:t.status?.danger?.background||n.statusDanger.background,text:t.status?.danger?.text||n.statusDanger.text},statusWarning:{solid:t.status?.warning?.solid||n.statusWarning.solid,background:t.status?.warning?.background||n.statusWarning.background,text:t.status?.warning?.text||n.statusWarning.text},statusInfo:{solid:t.status?.info?.solid||n.statusInfo.solid,background:t.status?.info?.background||n.statusInfo.background,text:t.status?.info?.text||n.statusInfo.text},statusDiscovery:{solid:t.status?.discovery?.solid||n.statusDiscovery.solid,background:t.status?.discovery?.background||n.statusDiscovery.background,text:t.status?.discovery?.text||n.statusDiscovery.text},switchCheckedColor:t.status?.primary?.solid||n.switchCheckedColor,switchUncheckedColor:t.surface?.chatInput?.background||n.switchUncheckedColor,fontFamily:Tt(e.typography?.fontFamily,n),fontFamilyMono:yt(e.typography?.fontFamilyMono,n),fontSize:14,borderRadius:xt(e.cornerRadius,n),cornerRadiusMode:_t(e.cornerRadius),chatInputPlaceholder:e.startScreen.inputPlaceholder}}function At(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 n=parseInt(r.slice(0,2),16),s=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(${n}, ${s}, ${o}, ${Math.round(i*t*1e3)/1e3})`}const Rt=t(void 0);function It(){const e=r(Rt);if(!e)throw new Error("useBranding must be used within a BrandingProvider");return e}const Nt=t(null),Ct=()=>{const e=r(Nt);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 Mt=null;function Dt(e){Mt=e}const Bt=()=>Mt,vt=t(null),bt={isConnected:!0,isInternetReachable:!0},wt=()=>{const e=r(vt),t=n(t=>e?e.subscribe(t):()=>{},[e]),o=n(()=>e?e.getState():bt,[e]);return s(t,o,o)},kt=o({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:n,refreshToken:s,expiresIn:o}=t.payload;void 0!==r&&(e.user=r),void 0!==n&&(e.accessToken=n),void 0!==s&&(e.refreshToken=s),void 0!==o?e.tokenExpiresAt=null===o?null:1e3*o:n&&(e.tokenExpiresAt=Date.now()+Fe.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:Lt,updateUser:Pt,clearSession:Ut,sessionExpired:Gt,setSelectedOrgId:Ht}=kt.actions,Kt=Lt,$t=Ut,Wt=e=>async t=>{const[r,n,s,o]=await Promise.all([e.getItem(me.ACCESS_TOKEN),e.getItem(me.REFRESH_TOKEN),e.getItem(me.TOKEN_EXPIRES_AT),e.getItem(me.USER)]),i=s?parseInt(s,10):null;if((!r||!i||Pe(i))&&!n)return void(r&&await Promise.all([e.removeItem(me.ACCESS_TOKEN),e.removeItem(me.REFRESH_TOKEN),e.removeItem(me.TOKEN_EXPIRES_AT),e.removeItem(me.USER)]));let a=null;if(o)try{a=JSON.parse(o)}catch(e){D.error({message:"Failed to parse stored user during session hydration",component:"sessionSlice",error_message:e instanceof Error?e.message:String(e)})}t(Lt({user:a,accessToken:r,refreshToken:n,expiresIn:null!=i?i/1e3:null}))},jt=i();jt.startListening({matcher:a(Lt,Pt,Ut,Gt),effect:async(e,t)=>{const r=Bt();if(!r)return;const{auth:n}=t.getState(),s=[];s.push(n.accessToken?r.setItem(me.ACCESS_TOKEN,n.accessToken):r.removeItem(me.ACCESS_TOKEN)),s.push(n.refreshToken?r.setItem(me.REFRESH_TOKEN,n.refreshToken):r.removeItem(me.REFRESH_TOKEN)),s.push(null!=n.tokenExpiresAt?r.setItem(me.TOKEN_EXPIRES_AT,String(n.tokenExpiresAt)):r.removeItem(me.TOKEN_EXPIRES_AT)),s.push(n.user?r.setItem(me.USER,JSON.stringify(n.user)):r.removeItem(me.USER)),(Ut.match(e)||Gt.match(e))&&s.push(r.removeItem(me.LOCATION_CACHE),r.removeItem(me.DEBUG_MODE),r.removeItem(me.APPEARANCE_MODE_KEY),r.removeItem(me.LOCATION_ENABLED),r.removeItem(me.STT_AUTO_SEND),r.removeItem(me.STT_IMPLEMENTATION),r.removeItem(me.SEND_DIAGNOSTICS),r.removeItem(me.ACTIVE_CONVERSATION_ID)),await Promise.all(s)}});const zt=kt.reducer,Vt={lastResponseTime:null},Xt=o({name:"indicator",initialState:Vt,reducers:{setLastResponseTime(e,t){e.lastResponseTime=t.payload},clearLastResponseTime(e){e.lastResponseTime=null}},extraReducers:e=>{e.addMatcher(a(Ut,Gt),()=>Vt)}}),{setLastResponseTime:Yt,clearLastResponseTime:Jt}=Xt.actions,Zt=Xt.reducer;function qt(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 Qt={GOOGLE:"google",APPLE:"apple",MICROSOFT:"microsoft"},er={KEEP:"keep",FINALIZE:"finalize",CANCEL:"cancel"};function tr(e){if(e)return"moyasar"===e.provider?e.config?.given_id:e.payment_id}export{Ee as API_ENDPOINTS,dt as APPEARANCE_MODES,gt as APPEARANCE_MODE_VALUES,Te as AUTH_HEADERS,xe as AUTH_PATHS,Le as BRIDGE_TOAST_EVENT_NAME,Rt as BrandingContext,Et as CORNER_RADIUS_MODES,ye as DEVICE_TOKEN_HEADER,at as DIRECTION_VECTORS,ct as EventEmitter,fe as FEATURE_FLAGS,Qt as IDP_HINTS,er as INDICATOR_TIMER_ACTIONS,_ as LOG_LEVELS,vt as NetworkContext,pt as ORB_POSITIONS,ge as ORG_MOUNT_SUFFIX,_e as PATTERNS,Oe as PROFILE_LIMITS,me as STORAGE_KEYS,he as STT_IMPLEMENTATIONS,Nt as StorageContext,Je as TEXT_DIRECTION,Fe as TIMING,Ot as brandingToThemeStyles,d as capitalizeFirst,Xe as clearAuthTokens,Jt as clearLastResponseTime,Ut as clearSession,De as createTokenRefresher,ht as defaultChatThemeStyles,ft as defaultDarkThemeStyles,Me as defaultIsTransient,Ft as defaultLightThemeStyles,Ve as detectOrgSwitch,st as detectTextDirection,Ge as ensureFreshToken,ut as eventEmitter,We as extractTokens,h as formatCVC,g as formatCamelCaseToTitle,E as formatCardNumber,m as formatExpiryDate,$e as formatTimeRemaining,l as formatTimestamp,u as generateUniqueId,de as getApiUrl,Se as getAppearanceModeStorageKey,S as getArrayOfObjects,q as getBaseUrl,ee as getCustomHeaders,mt as getDefaultThemeStyles,x as getErrorMessage,T as getInitials,tr as getPaymentId,Q as getPaymentProviderHint,Ie as getSendDiagnostics,Bt as getStorageRef,He as getTimeUntilExpiry,Ke as getTimeUntilRefresh,re as getTokenRefreshHandler,qt as handleSharedEvent,y as hasWidgets,At as hexToRgba,Re as hydrateAppBoot,Wt as hydrateSession,Zt as indicatorReducer,H as initLogger,Z as initializeChatConfig,le as isDevMode,Ue as isTokenAboutToExpire,Pe as isTokenExpired,pe as joinOrgMountBase,D as logger,$t as logout,je as parseJwtPayload,ze as parseOrgFromJwt,se as readAccessToken,ie as readDeviceToken,ce as readTokenExpiresAt,lt as registerEventListener,N as registerLoggerContextProvider,I as registerLoggerSink,p as removeSpecialCharsAndSpaces,C as resetLoggerForTests,ot as resolveDirectionFromLang,F as sanitizeExpiryDate,Gt as sessionExpired,jt as sessionListenerMiddleware,zt as sessionReducer,ne as setAccessTokenReader,Kt as setCredentials,oe as setDeviceTokenReader,ue as setIsDev,Yt as setLastResponseTime,Dt as setModuleStorage,G as setNetworkLoggingEnabled,Ht as setSelectedOrgId,Lt as setSession,ae as setTokenExpiresAtReader,te as setTokenRefreshHandler,we as showErrorToast,ke as showSuccessToast,be as showToast,c as truncateWordLimit,Pt as updateUser,It as useBranding,it as useMessageDirection,wt as useNetworkState,Ct as useStorage,f as validateExpiryDate,Ye as writeOrgToStorage};
|