@customer-agent/sdk 0.6.0-test.67b72921d3c0 → 0.6.1

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.
@@ -1,4 +1,4 @@
1
- import{r as e,t}from"./interviewTypes-Ch2NsXKB.js";import{h as n,i as r,u as i}from"./routes-Dh46ka4-.js";import{r as a}from"../runtime.es.js";import{t as o}from"./react-CKmEJ8Ba.js";import{n as s}from"./client-duvjg9sB.js";import{t as c}from"./createLucideIcon-B1BLVEeA.js";import{t as l}from"./conversationRegistry-Y5Ouo35n.js";import{t as u}from"./x-CcuT5rCV.js";import{t as d}from"./jsx-runtime-S2ZBQkZm.js";import{t as f}from"./classNames-3q0x02_x.js";import{B as p,C as m,D as h,F as ee,G as g,H as _,I as v,J as y,K as b,L as x,M as S,N as C,P as w,Q as T,R as E,S as te,T as ne,U as re,V as D,W as ie,X as O,Y as k,Z as A,_ as ae,a as oe,b as se,c as ce,f as le,g as ue,h as de,i as fe,l as pe,m as me,o as he,p as ge,q as _e,s as ve,t as ye,u as be,v as xe,w as j,x as Se,y as Ce,z as M}from"./useSmooth-CYGvfMVe.js";import{C as we,S as N,a as Te,o as Ee,r as De,w as P,x as Oe,y as ke}from"./dist-dzGCY2H5.js";import{t as Ae}from"./dist-gFPJclVl.js";var je=c(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),Me=c(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),Ne=c(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),Pe=c(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),Fe=c(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Ie=c(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),Le=c(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Re=c(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),ze=c(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),Be=c(`smile`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`,key:`1y1vjs`}],[`line`,{x1:`9`,x2:`9.01`,y1:`9`,y2:`9`,key:`yxxnd0`}],[`line`,{x1:`15`,x2:`15.01`,y1:`9`,y2:`9`,key:`1p4y9e`}]]),F=a(o(),1),Ve=F.createContext(!0);function He(){throw Error(`A function wrapped in useEffectEvent can't be called during rendering.`)}var Ue=`use`in F.default?()=>{try{return F.use(Ve)}catch{return!1}}:()=>!1;function We(e){let t=F.useRef(He);return F.useInsertionEffect(()=>{t.current=e},[e]),(...e)=>{Ue()&&He();let n=t.current;return n(...e)}}var I=(e,t)=>{let n=w(),r=We(t),{scope:i,event:a}=x(e);(0,F.useEffect)(()=>n.on({scope:i,event:a},r),[n,i,a,r])},Ge=e=>{let t=w(),n=(0,F.useRef)(!1),r=n.current?null:e(t);return C(()=>n.current?e(t):r),()=>(n.current=!0,e(t))},Ke=Object.freeze({});function qe({getItemState:e,children:t}){return Je(t(Ge(e)))}var Je=e=>{let t=typeof e==`object`&&e&&`type`in e?e:null,n=t?.type,r=t?.key;return(0,F.useMemo)(()=>t,[n,r,typeof t?.props==`object`&&t.props!=null&&Object.entries(t.props).length===0?Ke:t?.props])??e},Ye=re(e=>{if(e.key===void 0)throw Error(`tapClientResource: Element has no key`);return b(D(e))});function L(e,t){let n=g(()=>e().map(e=>Ye(e)),t),r=y(()=>Object.keys(n),[n]),i=y(()=>n.reduce((e,t,n)=>(e[t.key]=n,e),{}),[n]);return{state:y(()=>n.map(e=>e.state),[n]),get:e=>{if(`index`in e){if(e.index<0||e.index>=r.length)throw Error(`tapClientLookup: Index ${e.index} out of bounds (length: ${r.length})`);return n[e.index].methods}let t=i[e.key];if(t===void 0)throw Error(`tapClientLookup: Key "${e.key}" not found`);return n[t].methods}}}var Xe=T(e=>({getState:()=>e})),Ze=T(e=>{let[t]=O(()=>({suggestions:(e??[]).map(e=>typeof e==`string`?{title:e,label:``,prompt:e}:{title:e.title,label:e.label,prompt:e.prompt})})),n=L(()=>t.suggestions.map((e,t)=>A(t,Xe(e))),[t.suggestions]);return{getState:()=>t,suggestion:({index:e})=>n.get({index:e})}}),R=d(),Qe=Object.freeze({type:`complete`}),$e=T(({parts:e,getMessagePart:t})=>{let[n,r]=O(!0),i=y(()=>e[e.length-1]?.status??Qe,[e]),a=y(()=>({parts:e,collapsed:n,status:i}),[e,n,i]);return{getState:()=>a,setCollapsed:r,part:t}}),et=1,tt=T(()=>{let[e]=O(()=>({version:et+1})),t=y(()=>new h,[]);return{getState:()=>e,getModelContext:()=>t.getModelContext(),subscribe:e=>t.subscribe(e),register:e=>t.registerModelContextProvider(e)}}),nt=T(({toolkit:e,mcpApp:t})=>{let n=g(()=>t?[A(`mcpApp`,t)]:[],[t])[0],[r,i]=O(()=>({tools:{}})),a=y(()=>({tools:r.tools,mcpApp:n}),[r,n]),o=ee(),s=_e((e,t)=>(i(n=>({tools:{...n.tools,[e]:[...n.tools[e]??[],t]}})),()=>{i(n=>({tools:{...n.tools,[e]:n.tools[e]?.filter(e=>e!==t)??[]}}))}),[]);return k(()=>{if(!e)return;let t=[];for(let[n,r]of Object.entries(e))r.render&&t.push(s(n,r.render));let n=Object.entries(e).reduce((e,[t,n])=>{let{render:r,...i}=n;return e[t]=i,e},{});return t.push(o.current.modelContext().register({getModelContext:()=>({tools:n})})),()=>{t.forEach(e=>e())}},[e,s,o]),{getState:()=>a,setToolUI:s}});E(nt,(e,t)=>{!e.modelContext&&t.modelContext.source===null&&(e.modelContext=tt())});var rt=T(()=>{let[e,t]=O(()=>({renderers:{},fallbacks:[]}));return{getState:()=>e,setDataUI:_e((e,n)=>(t(t=>({...t,renderers:{...t.renderers,[e]:[...t.renderers[e]??[],n]}})),()=>{t(t=>({...t,renderers:{...t.renderers,[e]:t.renderers[e]?.filter(e=>e!==n)??[]}}))}),[]),setFallbackDataUI:_e(e=>(t(t=>({...t,fallbacks:[...t.fallbacks,e]})),()=>{t(t=>({...t,fallbacks:t.fallbacks.filter(t=>t!==e)}))}),[])}}),it=({index:e,children:t})=>(0,R.jsx)(p,{value:w({attachment:M({source:`composer`,query:{type:`index`,index:e},get:t=>t.composer().attachment({index:e})})}),children:t}),z=e=>{let[,t]=O(e.getState);return k(()=>(t(e.getState()),e.subscribe(()=>{t(e.getState())})),[e]),e.getState()},at=T(({runtime:e})=>{let t=z(e);return{getState:()=>t,remove:e.remove,__internal_getRuntime:()=>e}}),ot=T(({runtime:e})=>{let t=z(e);return{getState:()=>t,addToolResult:t=>e.addToolResult(t),resumeToolCall:t=>e.resumeToolCall(t),__internal_getRuntime:()=>e}}),st=T(({runtime:e,index:t})=>b(at({runtime:y(()=>e.getAttachmentByIndex(t),[e,t])}))),ct=T(({threadIdRef:e,messageIdRef:t,runtime:n})=>{let r=z(n),i=v();k(()=>{let r=[];for(let a of[`send`,`attachmentAdd`]){let o=n.unstable_on(a,()=>{i(`composer.${a}`,{threadId:e.current,...t&&{messageId:t.current}})});r.push(o)}return r.push(n.unstable_on(`attachmentAddError`,n=>{i(`composer.attachmentAddError`,{threadId:e.current,...t&&{messageId:t.current},...n.attachmentId&&{attachmentId:n.attachmentId},reason:n.reason,message:n.message})})),()=>{for(let e of r)e()}},[n,i,e,t]);let a=L(()=>r.attachments.map((e,t)=>A(e.id,st({runtime:n,index:t}))),[r.attachments,n]),o=y(()=>({text:r.text,role:r.role,attachments:a.state,runConfig:r.runConfig,isEditing:r.isEditing,canCancel:r.canCancel,canSend:r.canSend,attachmentAccept:r.attachmentAccept,isEmpty:r.isEmpty,type:r.type??`thread`,dictation:r.dictation,quote:r.quote,queue:[]}),[r,a.state]);return{getState:()=>o,setText:n.setText,setRole:n.setRole,setRunConfig:n.setRunConfig,addAttachment:n.addAttachment,reset:n.reset,clearAttachments:n.clearAttachments,send:n.send,cancel:n.cancel,beginEdit:n.beginEdit??(()=>{throw Error(`beginEdit is not supported in this runtime`)}),startDictation:n.startDictation,stopDictation:n.stopDictation,setQuote:n.setQuote,attachment:e=>`id`in e?a.get({key:e.id}):a.get(e),queueItem:()=>{throw Error(`Queue is not supported in this runtime`)},__internal_getRuntime:()=>n}}),lt=T(({runtime:e,index:t})=>b(at({runtime:y(()=>e.getAttachmentByIndex(t),[e,t])}))),ut=T(({runtime:e,index:t})=>b(ot({runtime:y(()=>e.getMessagePartByIndex(t),[e,t])}))),dt=T(({runtime:e,threadIdRef:t})=>{let n=z(e),[r,i]=O(!1),[a,o]=O(!1),s=y(()=>({get current(){return e.getState().id}}),[e]),c=_(ct({runtime:e.composer,threadIdRef:t,messageIdRef:s})),l=L(()=>n.content.map((t,n)=>A(`toolCallId`in t&&t.toolCallId!=null?`toolCallId-${t.toolCallId}`:`index-${n}`,ut({runtime:e,index:n}))),[n.content,e]),u=L(()=>(n.attachments??[]).map((t,n)=>A(t.id,lt({runtime:e,index:n}))),[n.attachments,e]),d=y(()=>({...n,parts:l.state,composer:c.state,isCopied:r,isHovering:a}),[n,l.state,c.state,r,a]);return{getState:()=>d,composer:()=>c.methods,reload:t=>e.reload(t),speak:()=>e.speak(),stopSpeaking:()=>e.stopSpeaking(),submitFeedback:t=>e.submitFeedback(t),switchToBranch:t=>e.switchToBranch(t),getCopyText:()=>e.unstable_getCopyText(),part:e=>`index`in e?l.get({index:e.index}):l.get({key:`toolCallId-${e.toolCallId}`}),attachment:e=>`id`in e?u.get({key:e.id}):u.get(e),setIsCopied:i,setIsHovering:o,__internal_getRuntime:()=>e}}),ft=T(({runtime:e,id:t,threadIdRef:n})=>b(dt({runtime:y(()=>e.getMessageById(t),[e,t]),threadIdRef:n}))),pt=T(({runtime:e})=>{let t=z(e),n=v();k(()=>{let t=[];for(let r of[`runStart`,`runEnd`,`initialize`,`modelContextUpdate`]){let i=e.unstable_on(r,()=>{let t=e.getState()?.threadId||`unknown`;n(`thread.${r}`,{threadId:t})});t.push(i)}return()=>{for(let e of t)e()}},[e,n]);let r=y(()=>({get current(){return e.getState().threadId}}),[e]),i=_(ct({runtime:e.composer,threadIdRef:r})),a=L(()=>t.messages.map(t=>A(t.id,ft({runtime:e,id:t.id,threadIdRef:r}))),[t.messages,e,r]),o=y(()=>({isEmpty:a.state.length===0&&!t.isLoading,isDisabled:t.isDisabled,isLoading:t.isLoading,isRunning:t.isRunning,capabilities:t.capabilities,state:t.state,suggestions:t.suggestions,extras:t.extras,speech:t.speech,voice:t.voice,composer:i.state,messages:a.state}),[t,a,i.state]);return{getState:()=>o,composer:()=>i.methods,append:e.append,startRun:e.startRun,resumeRun:e.resumeRun,cancelRun:e.cancelRun,getModelContext:e.getModelContext,export:e.export,import:e.import,reset:e.reset,stopSpeaking:e.stopSpeaking,connectVoice:e.connectVoice,disconnectVoice:e.disconnectVoice,getVoiceVolume:e.getVoiceVolume,subscribeVoiceVolume:e.subscribeVoiceVolume,muteVoice:e.muteVoice,unmuteVoice:e.unmuteVoice,message:e=>`id`in e?a.get({key:e.id}):a.get(e),__internal_getRuntime:()=>e}}),mt=T(({runtime:e})=>{let t=z(e),n=v();return k(()=>{let t=[];for(let r of[`switchedTo`,`switchedAway`]){let i=e.unstable_on(r,()=>{n(`threadListItem.${r}`,{threadId:e.getState().id})});t.push(i)}return()=>{for(let e of t)e()}},[e,n]),{getState:()=>t,switchTo:e.switchTo,rename:e.rename,archive:e.archive,unarchive:e.unarchive,delete:e.delete,generateTitle:e.generateTitle,initialize:e.initialize,detach:e.detach,__internal_getRuntime:()=>e}}),ht=T(({runtime:e,id:t})=>b(mt({runtime:y(()=>e.getItemById(t),[e,t])}))),gt=T(({runtime:e,__internal_assistantRuntime:t})=>{let n=z(e),r=_(pt({runtime:e.main})),i=L(()=>Object.keys(n.threadItems).map(t=>A(t,ht({runtime:e,id:t}))),[n.threadItems,e]),a=y(()=>({mainThreadId:n.mainThreadId,newThreadId:n.newThreadId??null,isLoading:n.isLoading,isLoadingMore:n.isLoadingMore,hasMore:n.hasMore,threadIds:n.threadIds,archivedThreadIds:n.archivedThreadIds,threadItems:i.state,main:r.state}),[n,i.state,r.state]);return{getState:()=>a,thread:()=>r.methods,item:e=>{if(e===`main`)return i.get({key:a.mainThreadId});if(`id`in e)return i.get({key:e.id});let{index:t,archived:n=!1}=e,r=n?a.archivedThreadIds[t]:a.threadIds[t];return i.get({key:r})},switchToThread:async t=>{await e.switchToThread(t)},switchToNewThread:async()=>{await e.switchToNewThread()},getLoadThreadsPromise:()=>e.getLoadThreadsPromise(),reload:()=>e.reload(),loadMore:()=>e.loadMore(),__internal_getAssistantRuntime:()=>t}}),_t=T(e=>{let t=ee();return k(()=>e.registerModelContextProvider(t.current.modelContext()),[e,t]),b(gt({runtime:e.threads,__internal_assistantRuntime:e}))}),vt=(e,t)=>{e.thread??=M({source:`threads`,query:{type:`main`},get:e=>e.threads().thread(`main`)}),e.threadListItem??=M({source:`threads`,query:{type:`main`},get:e=>e.threads().item(`main`)}),e.composer??=M({source:`thread`,query:{},get:e=>e.threads().thread(`main`).composer()}),!e.modelContext&&t.modelContext.source===null&&(e.modelContext=tt()),!e.suggestions&&t.suggestions.source===null&&(e.suggestions=Ze())},yt=({index:e,children:t})=>(0,R.jsx)(p,{value:w({message:M({source:`thread`,query:{type:`index`,index:e},get:t=>t.thread().message({index:e})}),composer:M({source:`message`,query:{},get:t=>t.thread().message({index:e}).composer()})}),children:t}),bt=({index:e,children:t})=>(0,R.jsx)(p,{value:w({part:M({source:`message`,query:{type:`index`,index:e},get:t=>t.message().part({index:e})})}),children:t}),xt=T(({text:e,isRunning:t})=>{let n=y(()=>({type:`text`,text:e,status:t?{type:`running`}:{type:`complete`}}),[e,t]);return{getState:()=>n,addToolResult:()=>{throw Error(`Not supported`)},resumeToolCall:()=>{throw Error(`Not supported`)}}}),St=({text:e,isRunning:t=!1,children:n})=>(0,R.jsx)(p,{value:w({part:xt({text:e,isRunning:t})}),children:n}),Ct=({startIndex:e,endIndex:t,children:n})=>{let r=C(e=>e.message.parts).slice(e,t+1),i=w();return(0,R.jsx)(p,{value:w({chainOfThought:$e({parts:r,getMessagePart:({index:t})=>{if(t<0||t>=r.length)throw Error(`ChainOfThought part index ${t} is out of bounds (0..${r.length-1})`);return i.message().part({index:e+t})}})}),children:n})},wt=class extends de{runtime;endEditCallback;get canCancel(){return!0}get canSend(){return!this.isEmpty}getAttachmentAdapter(){return this.runtime.adapters?.attachments}getDictationAdapter(){return this.runtime.adapters?.dictation}_previousText;_previousAttachments;_nonTextPassthrough;_parentId;_sourceId;constructor(e,t,{parentId:n,message:r}){super(),this.runtime=e,this.endEditCallback=t,this._parentId=n,this._sourceId=r.id,this._previousText=j(r),this.setText(this._previousText),this.setRole(r.role),r.role===`user`?(this._previousAttachments=[...r.attachments??[],...ae(r.content)],this._nonTextPassthrough=[]):(this._previousAttachments=r.attachments??[],this._nonTextPassthrough=r.content.filter(e=>e.type!==`text`)),this.setAttachments(this._previousAttachments),this.setRunConfig({...e.composer.runConfig})}get parentId(){return this._parentId}get sourceId(){return this._sourceId}async handleSend(e,t){let n=j(e),r=!ue(e.attachments??[],this._previousAttachments);if(n!==this._previousText||r||t?.startRun){let n=this._nonTextPassthrough.length>0?[...e.content,...this._nonTextPassthrough]:e.content;this.runtime.append({...e,content:n,parentId:this._parentId,sourceId:this._sourceId,startRun:t?.startRun})}this.handleCancel()}handleCancel(){this.endEditCallback(),this._notifySubscribers()}},Tt=class{_contextProvider;_subscriptions=new Set;_isInitialized=!1;repository=new Ce;_voiceMessages=[];_voiceGeneration=0;_cachedMergedMessages=null;_cachedVoiceGeneration=-1;_cachedMergedBase=null;_markVoiceMessagesDirty(){this._voiceGeneration++,this._cachedMergedMessages=null}_getBaseMessages(){return this.repository.getMessages()}get messages(){if(this._voiceMessages.length===0)return this._getBaseMessages();let e=this._getBaseMessages();return(this._cachedVoiceGeneration!==this._voiceGeneration||this._cachedMergedBase!==e)&&(this._cachedMergedMessages=[...e,...this._voiceMessages],this._cachedVoiceGeneration=this._voiceGeneration,this._cachedMergedBase=e),this._cachedMergedMessages}get state(){let e;for(let t of this.messages)t.role===`assistant`&&(e=t);return e?.metadata.unstable_state??null}composer=new me(this);constructor(e){this._contextProvider=e}getModelContext(){return this._contextProvider.getModelContext()}_editComposers=new Map;getEditComposer(e){return this._editComposers.get(e)}beginEdit(e){if(this._editComposers.has(e))throw Error(`Edit already in progress`);this._editComposers.set(e,new wt(this,()=>this._editComposers.delete(e),this.repository.getMessage(e))),this._notifySubscribers()}getMessageById(e){try{return this.repository.getMessage(e)}catch{let t=this.repository.getMessages(),n=this._voiceMessages.findIndex(t=>t.id===e);return n===-1?void 0:{parentId:n>0?this._voiceMessages[n-1].id:t.at(-1)?.id??null,message:this._voiceMessages[n],index:t.length+n}}}getBranches(e){return this._voiceMessages.some(t=>t.id===e)?[]:this.repository.getBranches(e)}switchToBranch(e){this.repository.switchToBranch(e),this._notifySubscribers()}_notifySubscribers(){for(let e of this._subscriptions)e()}_notifyEventSubscribers(e,t){let n=this._eventSubscribers.get(e);if(n)for(let e of n)e(t)}subscribe(e){return this._subscriptions.add(e),()=>this._subscriptions.delete(e)}submitFeedback({messageId:e,type:t}){let n=this.adapters?.feedback;if(!n)throw Error(`Feedback adapter not configured`);let{message:r,parentId:i}=this.repository.getMessage(e);if(n.submit({message:r,type:t}),r.role===`assistant`){let e={...r,metadata:{...r.metadata,submittedFeedback:{type:t}}};this.repository.addOrUpdateMessage(i,e)}this._notifySubscribers()}_stopSpeaking;speech;speak(e){let t=this.adapters?.speech;if(!t)throw Error(`Speech adapter not configured`);let{message:n}=this.repository.getMessage(e);this._stopSpeaking?.();let r=t.speak(j(n)),i=r.subscribe(()=>{r.status.type===`ended`?(this._stopSpeaking=void 0,this.speech=void 0):this.speech={messageId:e,status:r.status},this._notifySubscribers()});this.speech={messageId:e,status:r.status},this._notifySubscribers(),this._stopSpeaking=()=>{r.cancel(),i(),this.speech=void 0,this._stopSpeaking=void 0}}stopSpeaking(){if(!this._stopSpeaking)throw Error(`No message is being spoken`);this._stopSpeaking(),this._notifySubscribers()}_voiceSession;_voiceUnsubs=[];voice;_voiceVolume=0;_voiceVolumeSubscribers=new Set;getVoiceVolume=()=>this._voiceVolume;subscribeVoiceVolume=e=>(this._voiceVolumeSubscribers.add(e),()=>this._voiceVolumeSubscribers.delete(e));connectVoice(){let e=this.adapters?.voice;if(!e)throw Error(`Voice adapter not configured`);this.disconnectVoice();let t=e.connect({});this._voiceSession=t;let n=[],r=`listening`;this.voice={status:t.status,isMuted:t.isMuted,mode:r},this._voiceVolume=0,this._notifySubscribers(),n.push(t.onStatusChange(e=>{e.type===`ended`?(this._finishVoiceAssistantMessage(),this._voiceSession=void 0,this.voice=void 0):this.voice={status:e,isMuted:t.isMuted,mode:r},this._notifySubscribers()})),n.push(t.onModeChange(e=>{r=e,this.voice&&(this.voice={...this.voice,mode:e},this._notifySubscribers())})),n.push(t.onVolumeChange(e=>{this._voiceVolume=e;for(let e of this._voiceVolumeSubscribers)e()})),n.push(t.onTranscript(e=>{this._handleVoiceTranscript(e)})),this._voiceUnsubs=n}_currentAssistantMsg=null;_handleVoiceTranscript(e){if(this.ensureInitialized(),e.role===`user`)this._finishVoiceAssistantMessage(),this._currentAssistantMsg=null,e.isFinal&&(this._voiceMessages.push({id:m(),role:`user`,content:[{type:`text`,text:e.text}],metadata:{custom:{}},createdAt:new Date,status:{type:`complete`,reason:`unknown`},attachments:[]}),this._markVoiceMessagesDirty(),this._notifySubscribers());else{if(!this._currentAssistantMsg)this._currentAssistantMsg={id:m(),role:`assistant`,content:[{type:`text`,text:e.text}],metadata:{unstable_state:this.state,unstable_annotations:[],unstable_data:[],steps:[],custom:{}},status:{type:`running`},createdAt:new Date},this._voiceMessages.push(this._currentAssistantMsg);else{let t=this._voiceMessages.indexOf(this._currentAssistantMsg);if(t===-1)return;let n={...this._currentAssistantMsg,content:[{type:`text`,text:e.text}],...e.isFinal?{status:{type:`complete`,reason:`stop`}}:{}};this._voiceMessages[t]=n,this._currentAssistantMsg=n}e.isFinal&&(this._currentAssistantMsg=null),this._markVoiceMessagesDirty(),this._notifySubscribers()}}_finishVoiceAssistantMessage(){let e=this._voiceMessages.at(-1);if(e?.role===`assistant`&&e.status.type===`running`){let t=this._voiceMessages.length-1;this._voiceMessages[t]={...e,status:{type:`complete`,reason:`stop`}},this._markVoiceMessagesDirty(),this._notifySubscribers()}}disconnectVoice(){this._finishVoiceAssistantMessage(),this._currentAssistantMsg=null;for(let e of this._voiceUnsubs)e();this._voiceUnsubs=[],this._voiceSession?.disconnect(),this._voiceSession=void 0,this.voice=void 0,this._voiceVolume=0;for(let e of this._voiceVolumeSubscribers)e();this._voiceMessages=[],this._markVoiceMessagesDirty(),this._notifySubscribers()}muteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.mute(),this.voice={...this.voice,isMuted:!0},this._notifySubscribers()}unmuteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.unmute(),this.voice={...this.voice,isMuted:!1},this._notifySubscribers()}ensureInitialized(){this._isInitialized||(this._isInitialized=!0,this._notifyEventSubscribers(`initialize`,{}))}export(){return this.repository.export()}import(e){this.ensureInitialized(),this.repository.clear(),this.repository.import(e),this._notifySubscribers()}reset(e){this.import(xe.fromArray(e??[]))}_eventSubscribers=new Map;unstable_on(e,t){let n=t;if(e===`modelContextUpdate`)return this._contextProvider.subscribe?.(()=>n({}))??(()=>{});let r=this._eventSubscribers.get(e);return r||(r=new Set,this._eventSubscribers.set(e,r)),r.add(n),()=>{this._eventSubscribers.get(e)?.delete(n)}}},Et=T(e=>b(_t(e)));E(Et,(e,t)=>{vt(e,t),!e.tools&&t.tools.source===null&&(e.tools=nt({})),!e.dataRenderers&&t.dataRenderers.source===null&&(e.dataRenderers=rt())});var B=Object.freeze([]),V=`DEFAULT_THREAD_ID`,Dt=Object.freeze([V]),Ot=Object.freeze({id:V,remoteId:void 0,externalId:void 0,status:`regular`}),kt=Promise.resolve(),At=Object.freeze({[V]:Ot}),jt=class{threadFactory;_mainThreadId=V;_threads=Dt;_archivedThreads=B;_threadData=At;adapter={};get isLoading(){return this.adapter.isLoading??!1}get newThreadId(){}get threadIds(){return this._threads}get archivedThreadIds(){return this._archivedThreads}get threadItems(){return this._threadData}getLoadThreadsPromise(){return kt}_mainThread;get mainThreadId(){return this._mainThreadId}constructor(e={},t){this.threadFactory=t,this.__internal_setAdapter(e,!0)}getMainThreadRuntimeCore(){return this._mainThread}getThreadRuntimeCore(){throw Error(`Method not implemented.`)}getItemById(e){return this._threadData[e]}__internal_setAdapter(e,t=!1){let n=this.adapter;this.adapter=e;let r=e.threadId??V,i=e.threads??B,a=e.archivedThreads??B,o=n.threadId??V,s=n.threads??B,c=n.archivedThreads??B;!t&&o===r&&s===i&&c===a||((s!==i||c!==a||o!==r)&&(this._threadData={...At,...Object.fromEntries(e.threads?.map(e=>[e.id,{...e,remoteId:e.remoteId,externalId:e.externalId,status:`regular`}])??[]),...Object.fromEntries(e.archivedThreads?.map(e=>[e.id,{...e,remoteId:e.remoteId,externalId:e.externalId,status:`archived`}])??[])}),s!==i&&(this._threads=this.adapter.threads?.map(e=>e.id)??B),c!==a&&(this._archivedThreads=this.adapter.archivedThreads?.map(e=>e.id)??B),(t||o!==r)&&(this._mainThreadId=r,this._mainThread=this.threadFactory()),this._threadData[this._mainThreadId]||(this._threadData={...this._threadData,[this._mainThreadId]:{id:this._mainThreadId,remoteId:void 0,externalId:void 0,status:`regular`}}),this._notifySubscribers())}async switchToThread(e){if(this._mainThreadId===e)return;let t=this.adapter.onSwitchToThread;if(!t)throw Error(`External store adapter does not support switching to thread`);await t(e)}async switchToNewThread(){let e=this.adapter.onSwitchToNewThread;if(!e)throw Error(`External store adapter does not support switching to new thread`);await e()}async rename(e,t){let n=this.adapter.onRename;if(!n)throw Error(`External store adapter does not support renaming`);await n(e,t)}async detach(){}async archive(e){let t=this.adapter.onArchive;if(!t)throw Error(`External store adapter does not support archiving`);await t(e)}async unarchive(e){let t=this.adapter.onUnarchive;if(!t)throw Error(`External store adapter does not support unarchiving`);await t(e)}async delete(e){let t=this.adapter.onDelete;if(!t)throw Error(`External store adapter does not support deleting`);await t(e)}initialize(e){return Promise.resolve({remoteId:e,externalId:void 0})}generateTitle(){throw Error(`Method not implemented.`)}_subscriptions=new Set;subscribe(e){return this._subscriptions.add(e),()=>this._subscriptions.delete(e)}_notifySubscribers(){for(let e of this._subscriptions)e()}},Mt=class{cache=new WeakMap;convertMessages(e,t){return e.map((e,n)=>{let r=t(this.cache.get(e),e,n);return this.cache.set(e,r),r})}},Nt=Object.freeze([]),Pt=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(e[r]!==t[r])return!1;return!0},Ft=(e,t)=>e&&t[t.length-1]?.role!==`assistant`,It=class extends Tt{_assistantOptimisticId=null;_capabilities={switchToBranch:!1,switchBranchDuringRun:!1,edit:!1,reload:!1,cancel:!1,unstable_copy:!1,speech:!1,dictation:!1,voice:!1,attachments:!1,feedback:!1,queue:!1};get capabilities(){return this._capabilities}_messages;isDisabled;isSendDisabled;get isLoading(){return this._store.isLoading??!1}get isRunning(){return this._store.isRunning}_getBaseMessages(){return this._messages}get state(){return this._store.state??super.state}get adapters(){return this._store.adapters}suggestions=[];extras=void 0;_converter=new Mt;_store;beginEdit(e){if(!this._store.onEdit)throw Error(`Runtime does not support editing.`);super.beginEdit(e)}constructor(e,t){super(e),this.__internal_setAdapter(t)}__internal_setAdapter(e){if(this._store===e)return;let t=e.isRunning??!1;this.isDisabled=e.isDisabled??!1,this.isSendDisabled=e.isSendDisabled??!1;let n=this._store;this._store=e,this.extras!==e.extras&&(this.extras=e.extras);let r=e.suggestions??Nt;Pt(this.suggestions,r)||(this.suggestions=r);let i={switchToBranch:this._store.setMessages!==void 0,switchBranchDuringRun:!1,edit:this._store.onEdit!==void 0,reload:this._store.onReload!==void 0,cancel:this._store.onCancel!==void 0,speech:this._store.adapters?.speech!==void 0,dictation:this._store.adapters?.dictation!==void 0,voice:this._store.adapters?.voice!==void 0,unstable_copy:this._store.unstable_capabilities?.copy!==!1,attachments:!!this._store.adapters?.attachments,feedback:!!this._store.adapters?.feedback,queue:!1};Pt(this._capabilities,i)||(this._capabilities=i);let a;if(e.messageRepository){if(n&&n.isRunning===e.isRunning&&n.messageRepository===e.messageRepository){this._notifySubscribers();return}this.repository.clear(),this._assistantOptimisticId=null,this.repository.import(e.messageRepository),a=this.repository.getMessages()}else if(e.messages){if(n){if(n.convertMessage!==e.convertMessage)this._converter=new Mt;else if(n.isRunning===e.isRunning&&n.messages===e.messages){this._notifySubscribers();return}}a=e.convertMessage?this._converter.convertMessages(e.messages,(n,r,i)=>{if(!e.convertMessage)return r;let a=Se(i===(e.messages?.length??0)-1,t,!1,!1,void 0);if(n&&(n.role!==`assistant`||!te(n.status)||n.status===a))return n;let o=se(e.convertMessage(r,i),i.toString(),a);return le(o,r),o}):e.messages;for(let e=0;e<a.length;e++){let t=a[e],n=a[e-1];this.repository.addOrUpdateMessage(n?.id??null,t)}}else throw Error(`ExternalStoreAdapter must provide either 'messages' or 'messageRepository'`);a.length>0&&this.ensureInitialized(),(n?.isRunning??!1)!==(e.isRunning??!1)&&(e.isRunning?this._notifyEventSubscribers(`runStart`,{}):this._notifyEventSubscribers(`runEnd`,{})),this._assistantOptimisticId&&=(this.repository.deleteMessage(this._assistantOptimisticId),null),Ft(t,a)&&(this._assistantOptimisticId=this.repository.appendOptimisticMessage(a.at(-1)?.id??null,{role:`assistant`,content:[]})),this.repository.resetHead(this._assistantOptimisticId??a.at(-1)?.id??null),this._messages=this.repository.getMessages(),this._notifySubscribers()}switchToBranch(e){if(!this._store.setMessages)throw Error(`Runtime does not support switching branches.`);this._store.isRunning||(this.repository.switchToBranch(e),this.updateMessages(this.repository.getMessages()))}async append(e){if(e.parentId!==(this.messages.at(-1)?.id??null)){if(!this._store.onEdit)throw Error(`Runtime does not support editing messages.`);await this._store.onEdit(e)}else await this._store.onNew(e)}async startRun(e){if(!this._store.onReload)throw Error(`Runtime does not support reloading messages.`);await this._store.onReload(e.parentId,e)}async resumeRun(e){if(!this._store.onResume)throw Error(`Runtime does not support resuming runs.`);await this._store.onResume(e)}exportExternalState(){if(!this._store.onExportExternalState)throw Error(`Runtime does not support exporting external states.`);return this._store.onExportExternalState()}importExternalState(e){if(!this._store.onLoadExternalState)throw Error(`Runtime does not support importing external states.`);this._store.onLoadExternalState(e)}cancelRun(){if(!this._store.onCancel)throw Error(`Runtime does not support cancelling runs.`);this._store.onCancel(),this._assistantOptimisticId&&=(this.repository.deleteMessage(this._assistantOptimisticId),null);let e=this.repository.getMessages(),t=e[e.length-1];t?.role===`user`&&t.id===e.at(-1)?.id?(this.repository.deleteMessage(t.id),this.composer.text.trim()||this.composer.setText(j(t)),e=this.repository.getMessages()):this._notifySubscribers(),setTimeout(()=>{this.updateMessages(e)},0)}addToolResult(e){if(!this._store.onAddToolResult&&!this._store.onAddToolResult)throw Error(`Runtime does not support tool results.`);this._store.onAddToolResult?.(e)}resumeToolCall(e){if(!this._store.onResumeToolCall)throw Error(`Runtime does not support resuming tool calls.`);this._store.onResumeToolCall(e)}reset(e){let t=new Ce;t.import(xe.fromArray(e??[])),this.updateMessages(t.getMessages())}import(e){this._assistantOptimisticId=null,super.import(e),this._store.onImport&&this._store.onImport(this.repository.getMessages())}updateMessages=e=>{this._store.convertMessage===void 0?this._store.setMessages?.(e):this._store.setMessages?.(e.flatMap(ge))}},Lt=e=>e.adapters?.threadList??{},Rt=class extends ne{threads;constructor(e){super(),this.threads=new jt(Lt(e),()=>new It(this._contextProvider,e))}setAdapter(e){this.threads.__internal_setAdapter(Lt(e)),this.threads.getMainThreadRuntimeCore().__internal_setAdapter(e)}},zt=e=>{let[t]=(0,F.useState)(()=>new Rt(e));(0,F.useEffect)(()=>{t.setAdapter(e)});let{modelContext:n}=pe()??{};return(0,F.useEffect)(()=>{if(n)return t.registerModelContextProvider(n)},[n,t]),(0,F.useMemo)(()=>new be(t),[t])},Bt=e=>e._core?.RenderComponent,Vt=(0,F.memo)(({runtime:e,aui:t=null,children:n})=>{let r=w({threads:Et(e)},{parent:t}),i=Bt(e);return(0,R.jsxs)(p,{value:r,children:[i&&(0,R.jsx)(i,{}),n]})}),Ht=(e,t)=>e.Message===t.Message&&e.EditComposer===t.EditComposer&&e.UserEditComposer===t.UserEditComposer&&e.AssistantEditComposer===t.AssistantEditComposer&&e.SystemEditComposer===t.SystemEditComposer&&e.UserMessage===t.UserMessage&&e.AssistantMessage===t.AssistantMessage&&e.SystemMessage===t.SystemMessage,Ut=()=>null,Wt=(e,t,n)=>{switch(t){case`user`:return n?e.UserEditComposer??e.EditComposer??e.UserMessage??e.Message:e.UserMessage??e.Message;case`assistant`:return n?e.AssistantEditComposer??e.EditComposer??e.AssistantMessage??e.Message:e.AssistantMessage??e.Message;case`system`:return n?e.SystemEditComposer??e.EditComposer??e.SystemMessage??e.Message:e.SystemMessage??e.Message??Ut;default:throw Error(`Unknown message role: ${t}`)}},Gt=({components:e})=>(0,R.jsx)(Wt(e,C(e=>e.message.role),C(e=>e.message.composer.isEditing)),{}),Kt=(0,F.memo)(({index:e,components:t})=>(0,R.jsx)(yt,{index:e,children:(0,R.jsx)(Gt,{components:t})}),(e,t)=>e.index===t.index&&Ht(e.components,t.components));Kt.displayName=`ThreadPrimitive.MessageByIndex`;var qt=({children:e})=>{let t=C(e=>e.thread.messages.length);return(0,F.useMemo)(()=>t===0?null:Array.from({length:t},(t,n)=>(0,R.jsx)(yt,{index:n,children:(0,R.jsx)(qe,{getItemState:e=>e.thread().message({index:n}).getState(),children:t=>e({get message(){return t()}})})},n)),[t,e])},Jt=({components:e,children:t})=>e?(0,R.jsx)(qt,{children:()=>(0,R.jsx)(Gt,{components:e})}):(0,R.jsx)(qt,{children:t});Jt.displayName=`ThreadPrimitive.Messages`;var Yt=(0,F.memo)(Jt,(e,t)=>e.children||t.children?e.children===t.children:Ht(e.components,t.components)),Xt=e=>{let t=e.message.metadata;if(!(!t||typeof t!=`object`))return t.custom?.quote},Zt=`ui://`,Qt=e=>!!e?.startsWith(Zt),$t=e=>Symbol.iterator in e,en=e=>`entries`in e,tn=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},nn=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function rn(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:$t(e)&&$t(t)?en(e)&&en(t)?tn(e,t):nn(e,t):tn({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function an(e){let t=F.useRef(void 0);return n=>{let r=e(n);return rn(t.current,r)?t.current:t.current=r}}var on=e=>{let t=-1;return{startGroup:e=>{t===-1&&(t=e)},endGroup:(n,r)=>{t!==-1&&(r.push({type:e,startIndex:t,endIndex:n}),t=-1)},finalize:(n,r)=>{t!==-1&&r.push({type:e,startIndex:t,endIndex:n})}}},sn=(e,t)=>{let n=[];if(t){let t=on(`chainOfThoughtGroup`);for(let r=0;r<e.length;r++){let i=e[r];i===`tool-call`||i===`reasoning`?t.startGroup(r):(t.endGroup(r-1,n),n.push({type:`single`,index:r}))}t.finalize(e.length-1,n)}else{let t=on(`toolGroup`),r=on(`reasoningGroup`);for(let i=0;i<e.length;i++){let a=e[i];a===`tool-call`?(r.endGroup(i-1,n),t.startGroup(i)):a===`reasoning`?(t.endGroup(i-1,n),r.startGroup(i)):(t.endGroup(i-1,n),r.endGroup(i-1,n),n.push({type:`single`,index:i}))}t.finalize(e.length-1,n),r.finalize(e.length-1,n)}return n},cn=e=>{let t=C(an(e=>e.message.parts.map(e=>e.type)));return(0,F.useMemo)(()=>t.length===0?[]:sn(t,e),[t,e])},ln=({Fallback:e,...t})=>{let n=C(n=>{let r=n.tools.tools[t.toolName]??e;return Array.isArray(r)?r[0]??e:r});return n?(0,R.jsx)(n,{...t}):null},un=(e,t,n)=>e.renderers[t]?.[0]||(e.fallbacks[0]??n),dn=({Fallback:e,...t})=>{let n=C(n=>un(n.dataRenderers,t.name,e));return n?(0,R.jsx)(n,{...t}):null},H={Text:()=>null,Reasoning:()=>null,Source:()=>null,Image:()=>null,File:()=>null,Unstable_Audio:()=>null,ToolGroup:({children:e})=>e,ReasoningGroup:({children:e})=>e},fn=({components:{Text:e=H.Text,Reasoning:t=H.Reasoning,Image:n=H.Image,Source:r=H.Source,File:i=H.File,Unstable_Audio:a=H.Unstable_Audio,tools:o={},data:s}={}})=>{let c=w(),l=C(e=>e.part),u=l.type;if(u===`tool-call`){let e=c.part().addToolResult,t=c.part().resumeToolCall;if(`Override`in o)return(0,R.jsx)(o.Override,{...l,addResult:e,resume:t});let n=o.by_name?.[l.toolName]??o.Fallback;return(0,R.jsx)(ln,{...l,Fallback:n,addResult:e,resume:t})}if(l.status?.type===`requires-action`)throw Error(`Encountered unexpected requires-action status`);switch(u){case`text`:return(0,R.jsx)(e,{...l});case`reasoning`:return(0,R.jsx)(t,{...l});case`source`:return(0,R.jsx)(r,{...l});case`image`:return(0,R.jsx)(n,{...l});case`file`:return(0,R.jsx)(i,{...l});case`audio`:return(0,R.jsx)(a,{...l});case`data`:{let e=s?.by_name?.[l.name]??s?.Fallback;return(0,R.jsx)(dn,{...l,Fallback:e})}default:return console.warn(`Unknown message part type: ${u}`),null}},U=(0,F.memo)(({index:e,components:t})=>(0,R.jsx)(bt,{index:e,children:(0,R.jsx)(fn,{components:t})}),(e,t)=>e.index===t.index&&e.components?.Text===t.components?.Text&&e.components?.Reasoning===t.components?.Reasoning&&e.components?.Source===t.components?.Source&&e.components?.Image===t.components?.Image&&e.components?.File===t.components?.File&&e.components?.Unstable_Audio===t.components?.Unstable_Audio&&e.components?.tools===t.components?.tools&&e.components?.data===t.components?.data&&e.components?.ToolGroup===t.components?.ToolGroup&&e.components?.ReasoningGroup===t.components?.ReasoningGroup);U.displayName=`MessagePrimitive.PartByIndex`;var pn=({status:e,component:t})=>(0,R.jsx)(St,{text:``,isRunning:e.type===`running`,children:(0,R.jsx)(t,{type:`text`,text:``,status:e})}),mn=Object.freeze({type:`complete`}),hn=Object.freeze({type:`running`}),gn=(0,F.memo)(({components:e})=>{let t=C(e=>e.message.status??mn);return e?.Empty?(0,R.jsx)(e.Empty,{status:t}):t.type===`running`?(0,R.jsx)(pn,{status:t,component:e?.Text??H.Text}):null},(e,t)=>e.components?.Empty===t.components?.Empty&&e.components?.Text===t.components?.Text),_n=(0,F.memo)(({components:e,enabled:t})=>C(e=>{if(!t||e.message.parts.length===0)return!1;let n=e.message.parts[e.message.parts.length-1];return n?.type!==`text`&&n?.type!==`reasoning`})?(0,R.jsx)(gn,{components:e}):null,(e,t)=>e.enabled===t.enabled&&e.components?.Empty===t.components?.Empty&&e.components?.Text===t.components?.Text),vn=(0,F.memo)(({Quote:e})=>{let t=C(Xt);return t?(0,R.jsx)(e,{text:t.text,messageId:t.messageId}):null});function yn(e,t){let n=e.tools[t.toolName];return(Array.isArray(n)?n[0]??null:n??null)||(Qt(t.mcp?.app?.resourceUri)&&e.mcpApp?e.mcpApp.render:null)}var bn=()=>{let e=w(),t=C(e=>e.part),n=C(e=>e.part.type===`tool-call`?yn(e.tools,e.part):null);return!n||t.type!==`tool-call`?null:(0,R.jsx)(n,{...t,addResult:e.part().addToolResult,resume:e.part().resumeToolCall})},xn=()=>{let e=C(e=>e.part),t=C(e=>e.part.type===`data`?un(e.dataRenderers,e.part.name,void 0)??null:null);return!t||e.type!==`data`?null:(0,R.jsx)(t,{...e})},Sn=()=>{let e=C(e=>e.part.type);return e===`tool-call`?(0,R.jsx)(bn,{}):e===`data`?(0,R.jsx)(xn,{}):null},Cn=Object.freeze({type:`text`,text:``,status:hn}),wn=({index:e,children:t})=>{let n=w(),r=C(e=>e.dataRenderers);return(0,R.jsx)(bt,{index:e,children:(0,R.jsx)(qe,{getItemState:t=>t.message().part({index:e}).getState(),children:i=>t({get part(){let t=i();if(t.type===`tool-call`){let r=yn(n.tools().getState(),t)!==null,i=n.message().part({index:e});return{...t,toolUI:r?(0,R.jsx)(bn,{}):null,addResult:i.addToolResult,resume:i.resumeToolCall}}if(t.type===`data`){let e=un(r,t.name,void 0)!==void 0;return{...t,dataRendererUI:e?(0,R.jsx)(xn,{}):null}}return t}})})})},Tn=({children:e})=>{let t=C(e=>e.message.parts.length),n=C(e=>(e.message.status?.type??`complete`)===`running`);return t===0?t===0&&n?(0,R.jsx)(St,{text:``,isRunning:!0,children:e({part:Cn})}):null:(0,R.jsx)(R.Fragment,{children:Array.from({length:t},(t,n)=>(0,R.jsx)(wn,{index:n,children:t=>e(t)??(0,R.jsx)(Sn,{})},n))})},En=({components:e,unstable_showEmptyOnNonTextEnd:t=!0,children:n})=>n?(0,R.jsx)(Tn,{children:n}):(0,R.jsx)(Dn,{components:e,unstable_showEmptyOnNonTextEnd:t});En.displayName=`MessagePrimitive.Parts`;var Dn=({components:e,unstable_showEmptyOnNonTextEnd:t})=>{let n=C(e=>e.message.parts.length),r=cn(!!e?.ChainOfThought),i=(0,F.useMemo)(()=>n===0?(0,R.jsx)(gn,{components:e}):r.map(t=>{if(t.type===`single`)return(0,R.jsx)(U,{index:t.index,components:e},t.index);if(t.type===`chainOfThoughtGroup`){let n=e?.ChainOfThought;return n?(0,R.jsx)(Ct,{startIndex:t.startIndex,endIndex:t.endIndex,children:(0,R.jsx)(n,{})},`chainOfThought-${t.startIndex}`):null}else if(t.type===`toolGroup`)return(0,R.jsx)(e?.ToolGroup??H.ToolGroup,{startIndex:t.startIndex,endIndex:t.endIndex,children:Array.from({length:t.endIndex-t.startIndex+1},(n,r)=>(0,R.jsx)(U,{index:t.startIndex+r,components:e},r))},`tool-${t.startIndex}`);else return(0,R.jsx)(e?.ReasoningGroup??H.ReasoningGroup,{startIndex:t.startIndex,endIndex:t.endIndex,children:Array.from({length:t.endIndex-t.startIndex+1},(n,r)=>(0,R.jsx)(U,{index:t.startIndex+r,components:e},r))},`reasoning-${t.startIndex}`)}),[r,e,n]);return(0,R.jsxs)(R.Fragment,{children:[e?.Quote&&(0,R.jsx)(vn,{Quote:e.Quote}),i,(0,R.jsx)(_n,{components:e,enabled:t})]})},On=(e,t)=>{switch(t.type){case`image`:return e?.Image??e?.Attachment;case`document`:return e?.Document??e?.Attachment;case`file`:return e?.File??e?.Attachment;default:return e?.Attachment}},kn=({components:e})=>{let t=C(e=>e.attachment);if(!t)return null;let n=On(e,t);return n?(0,R.jsx)(n,{}):null},An=(0,F.memo)(({index:e,components:t})=>(0,R.jsx)(it,{index:e,children:(0,R.jsx)(kn,{components:t})}),(e,t)=>e.index===t.index&&e.components?.Image===t.components?.Image&&e.components?.Document===t.components?.Document&&e.components?.File===t.components?.File&&e.components?.Attachment===t.components?.Attachment);An.displayName=`ComposerPrimitive.AttachmentByIndex`;var jn=({children:e})=>{let t=C(e=>e.composer.attachments.length);return(0,F.useMemo)(()=>Array.from({length:t},(t,n)=>(0,R.jsx)(it,{index:n,children:(0,R.jsx)(qe,{getItemState:e=>e.composer().attachment({index:n}).getState(),children:t=>e({get attachment(){return t()}})})},n)),[t,e])},Mn=({components:e,children:t})=>e?(0,R.jsx)(jn,{children:({attachment:t})=>{let n=On(e,t);return n?(0,R.jsx)(n,{}):null}}):(0,R.jsx)(jn,{children:t});Mn.displayName=`ComposerPrimitive.Attachments`;var Nn=()=>{let e=w(),t=C(e=>!e.composer.canSend||e.thread.isRunning&&!e.thread.capabilities.queue);return{send:(0,F.useCallback)(t=>{e.composer().send(t)},[e]),disabled:t}},Pn=()=>{let e=w(),t=C(e=>!e.composer.isEditing);return{addAttachment:(0,F.useCallback)(t=>e.composer().addAttachment(t),[e]),disabled:t}},Fn=e=>{let t=new Map,n=()=>{let n=0;for(let e of t.values())n+=e;e(n)};return{register:()=>{let e=Symbol();return t.set(e,0),{setHeight:r=>{t.get(e)!==r&&(t.set(e,r),n())},unregister:()=>{t.delete(e),n()}}}}},In=(e={})=>{let t=new Set,n=Fn(e=>{a.setState({height:{...a.getState().height,viewport:e}})}),r=Fn(e=>{a.setState({height:{...a.getState().height,inset:e}})}),i=(e,t)=>(a.setState({element:{...a.getState().element,[e]:t}}),()=>{a.getState().element[e]===t&&a.setState({element:{...a.getState().element,[e]:null}})}),a=S(()=>({isAtBottom:!0,scrollToBottom:({behavior:e=`auto`}={})=>{for(let n of t)n({behavior:e})},onScrollToBottom:e=>(t.add(e),()=>{t.delete(e)}),turnAnchor:e.turnAnchor??`bottom`,topAnchorMessageClamp:{tallerThan:e.topAnchorMessageClamp?.tallerThan??`10em`,visibleHeight:e.topAnchorMessageClamp?.visibleHeight??`6em`},height:{viewport:0,inset:0},element:{viewport:null,anchor:null,target:null},targetConfig:null,topAnchorTurn:null,registerViewport:n.register,registerContentInset:r.register,registerViewportElement:e=>i(`viewport`,e),registerAnchorElement:e=>i(`anchor`,e),registerAnchorTargetElement:(e,t)=>(a.setState({element:{...a.getState().element,target:e},targetConfig:e&&t?t:null}),()=>{a.getState().element.target===e&&a.setState({element:{...a.getState().element,target:null},targetConfig:null})}),setTopAnchorTurn:e=>{a.setState({topAnchorTurn:e})}}));return a};function Ln(e,t){function n(n){let r=(0,F.useContext)(e);if(!n?.optional&&!r)throw Error(`This component must be used within ${t}.`);return r}return n}var Rn=(0,F.createContext)(null),{useThreadViewport:W,useThreadViewportStore:G}=ce(Ln(Rn,`ThreadPrimitive.Viewport`),`useThreadViewport`),zn=e=>{let t=G({optional:!0}),[n]=(0,F.useState)(()=>In(e));return(0,F.useEffect)(()=>t?.getState().onScrollToBottom(()=>{n.getState().scrollToBottom()}),[t,n]),(0,F.useEffect)(()=>{if(t)return n.subscribe(e=>{t.getState().isAtBottom!==e.isAtBottom&&ve(t).setState({isAtBottom:e.isAtBottom})})},[n,t]),n},Bn=({children:e,options:t={}})=>{let n=zn(t),[r]=(0,F.useState)(()=>({useThreadViewport:n}));return(0,R.jsx)(Rn.Provider,{value:r,children:e})},Vn=()=>((0,F.useEffect)(()=>{},[w()]),null),Hn=(0,F.memo)(({children:e,aui:t,runtime:n})=>(0,R.jsxs)(Vt,{runtime:n,aui:t??null,children:[(0,R.jsx)(Vn,{}),(0,R.jsx)(Bn,{children:e})]})),Un=e=>{let t=e;t.__isBound||=(t.__internal_bindMethods?.(),!0)};function Wn(e,t=Gn){Un(e);let n=(0,F.useSyncExternalStore)(e.subscribe,()=>t(e.getState()),()=>t(e.getState()));return(0,F.useDebugValue)(n),n}var Gn=e=>e;function Kn(e){function t(t){let n=!1,r;typeof t==`function`?r=t:t&&(n=!!t.optional,r=t.selector);let i=e({optional:n});return i?Wn(i,r):null}return t}function qn(e){let t=w(),n=C(()=>t.composer.source?t.composer().__internal_getRuntime?.()??null:null);if(!n&&!e?.optional)throw Error(`ComposerRuntime is not available`);return n}function Jn(e){let t=w(),n=C(()=>t.thread.source?t.thread().__internal_getRuntime?.()??null:null);if(!n&&!e?.optional)throw Error(`ThreadRuntime is not available`);return n}var K=Kn(e=>Jn(e)?.composer??null);s();var Yn=Symbol.for(`react.lazy`),q=F.use;function Xn(e){return typeof e==`object`&&!!e&&`then`in e}function Zn(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Yn&&`_payload`in e&&Xn(e._payload)}function Qn(e){let t=$n(e),n=F.forwardRef((e,n)=>{let{children:r,...i}=e;Zn(r)&&typeof q==`function`&&(r=q(r._payload));let a=F.Children.toArray(r),o=a.find(tr);if(o){let e=o.props.children,r=a.map(t=>t===o?F.Children.count(e)>1?F.Children.only(null):F.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:F.isValidElement(e)?F.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function $n(e){let t=F.forwardRef((e,t)=>{let{children:n,...r}=e;if(Zn(n)&&typeof q==`function`&&(n=q(n._payload)),F.isValidElement(n)){let e=rr(n),i=nr(r,n.props);return n.type!==F.Fragment&&(i.ref=t?we(t,e):e),F.cloneElement(n,i)}return F.Children.count(n)>1?F.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var er=Symbol(`radix.slottable`);function tr(e){return F.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===er}function nr(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function rr(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var ir=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=Qn(`Primitive.${t}`),r=F.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,R.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),ar=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`];function or(e){let t=(0,F.forwardRef)(({render:t,asChild:n,children:r,...i},a)=>{let o=e;if(t&&(0,F.isValidElement)(t)){let e=r===void 0?t.props.children:r;return(0,R.jsx)(o,{...i,asChild:!0,ref:a,children:(0,F.cloneElement)(t,void 0,e)})}return(0,R.jsx)(o,{...i,asChild:n,ref:a,children:r})});return t.displayName=typeof e==`string`?e:e.displayName??e.name??`Component`,t}function sr(e){let t=ir[e],n=or(t);return n.displayName=`Primitive.${e}`,n}var J=ar.reduce((e,t)=>(e[t]=sr(t),e),{}),cr=(e,t,n=[])=>{let r=(0,F.forwardRef)((e,r)=>{let i={},a={};Object.keys(e).forEach(t=>{n.includes(t)?i[t]=e[t]:a[t]=e[t]});let o=t(i)??void 0;return(0,R.jsx)(J.button,{...a,type:`button`,ref:r,disabled:a.disabled||!o,onClick:N(a.onClick,o)})});return r.displayName=e,r},lr=(0,F.forwardRef)((e,t)=>(0,R.jsx)(J.div,{...e,ref:t}));lr.displayName=`AttachmentPrimitive.Root`;var ur=()=>(0,R.jsx)(R.Fragment,{children:C(e=>e.attachment.name)});ur.displayName=`AttachmentPrimitive.Name`;var dr=cr(`AttachmentPrimitive.Remove`,()=>{let e=w();return(0,F.useCallback)(()=>{e.attachment().remove()},[e])}),fr=()=>{let{disabled:e,send:t}=Nn(),n=(0,F.useCallback)(()=>t(),[t]);return e?null:n};cr(`ComposerPrimitive.Send`,fr);var pr=(0,F.forwardRef)(({onSubmit:e,...t},n)=>{let r=fr(),i=e=>{e.preventDefault(),r&&r()};return(0,R.jsx)(J.form,{...t,ref:n,onSubmit:N(e,i)})});pr.displayName=`ComposerPrimitive.Root`;function mr(){return mr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},mr.apply(null,arguments)}function hr(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var gr=F.useLayoutEffect,_r=function(e){var t=F.useRef(e);return gr(function(){t.current=e}),t},vr=function(e,t){if(typeof e==`function`){e(t);return}e.current=t},yr=function(e,t){var n=F.useRef();return F.useCallback(function(r){e.current=r,n.current&&vr(n.current,null),n.current=t,t&&vr(t,r)},[t])},br={"min-height":`0`,"max-height":`none`,height:`0`,visibility:`hidden`,overflow:`hidden`,position:`absolute`,"z-index":`-1000`,top:`0`,right:`0`,display:`block`},xr=function(e){Object.keys(br).forEach(function(t){e.style.setProperty(t,br[t],`important`)})},Y=null,Sr=function(e,t){var n=e.scrollHeight;return t.sizingStyle.boxSizing===`border-box`?n+t.borderSize:n-t.paddingSize};function Cr(e,t,n,r){n===void 0&&(n=1),r===void 0&&(r=1/0),Y||(Y=document.createElement(`textarea`),Y.setAttribute(`tabindex`,`-1`),Y.setAttribute(`aria-hidden`,`true`),xr(Y)),Y.parentNode===null&&document.body.appendChild(Y);var i=e.paddingSize,a=e.borderSize,o=e.sizingStyle,s=o.boxSizing;Object.keys(o).forEach(function(e){var t=e;Y.style[t]=o[t]}),xr(Y),Y.value=t;var c=Sr(Y,e);Y.value=t,c=Sr(Y,e),Y.value=`x`;var l=Y.scrollHeight-i,u=l*n;s===`border-box`&&(u=u+i+a),c=Math.max(u,c);var d=l*r;return s===`border-box`&&(d=d+i+a),c=Math.min(d,c),[c,l]}var wr=function(){},Tr=function(e,t){return e.reduce(function(e,n){return e[n]=t[n],e},{})},Er=[`borderBottomWidth`,`borderLeftWidth`,`borderRightWidth`,`borderTopWidth`,`boxSizing`,`fontFamily`,`fontSize`,`fontStyle`,`fontWeight`,`letterSpacing`,`lineHeight`,`paddingBottom`,`paddingLeft`,`paddingRight`,`paddingTop`,`tabSize`,`textIndent`,`textRendering`,`textTransform`,`width`,`wordBreak`,`wordSpacing`,`scrollbarGutter`],Dr=!!document.documentElement.currentStyle,Or=function(e){var t=window.getComputedStyle(e);if(t===null)return null;var n=Tr(Er,t),r=n.boxSizing;return r===``?null:(Dr&&r===`border-box`&&(n.width=parseFloat(n.width)+parseFloat(n.borderRightWidth)+parseFloat(n.borderLeftWidth)+parseFloat(n.paddingRight)+parseFloat(n.paddingLeft)+`px`),{sizingStyle:n,paddingSize:parseFloat(n.paddingBottom)+parseFloat(n.paddingTop),borderSize:parseFloat(n.borderBottomWidth)+parseFloat(n.borderTopWidth)})};function kr(e,t,n){var r=_r(n);F.useLayoutEffect(function(){var n=function(e){return r.current(e)};if(e)return e.addEventListener(t,n),function(){return e.removeEventListener(t,n)}},[])}var Ar=function(e,t){kr(document.body,`reset`,function(n){e.current.form===n.target&&t(n)})},jr=function(e){kr(window,`resize`,e)},Mr=function(e){kr(document.fonts,`loadingdone`,e)},Nr=[`cacheMeasurements`,`maxRows`,`minRows`,`onChange`,`onHeightChange`],Pr=F.forwardRef(function(e,t){var n=e.cacheMeasurements,r=e.maxRows,i=e.minRows,a=e.onChange,o=a===void 0?wr:a,s=e.onHeightChange,c=s===void 0?wr:s,l=hr(e,Nr),u=l.value!==void 0,d=F.useRef(null),f=yr(d,t),p=F.useRef(0),m=F.useRef(),h=function(){var e=d.current,t=n&&m.current?m.current:Or(e);if(t){m.current=t;var a=Cr(t,e.value||e.placeholder||`x`,i,r),o=a[0],s=a[1];p.current!==o&&(p.current=o,e.style.setProperty(`height`,o+`px`,`important`),c(o,{rowHeight:s}))}};return F.useLayoutEffect(h),Ar(d,function(){if(!u){var e=d.current.value;requestAnimationFrame(function(){var t=d.current;t&&e!==t.value&&h()})}}),jr(h),Mr(h),F.createElement(`textarea`,mr({},l,{onChange:function(e){u||h(),o(e)},ref:f}))}),Fr=e=>{let t=Ae(e),n=W(e=>e.onScrollToBottom);(0,F.useEffect)(()=>n(t),[n,t])},Ir=(0,F.createContext)(null),Lr=(0,F.createContext)(null),Rr=()=>(0,F.useContext)(Ir),zr=()=>()=>{},Br=()=>null,Vr=()=>{let e=Rr();return(0,F.useSyncExternalStore)(e?e.subscribeAria:zr,e?e.getActiveAria:Br,e?e.getActiveAria:Br)};function Hr(){let e=(0,F.useRef)(new Set);return{notify:(0,F.useCallback)(()=>{for(let t of e.current)t()},[]),subscribe:(0,F.useCallback)(t=>(e.current.add(t),()=>{e.current.delete(t)}),[])}}var Ur=({children:e})=>{let t=(0,F.useRef)(new Map),n=(0,F.useRef)(new Set),{notify:r,subscribe:i}=Hr(),a=(0,F.useCallback)(e=>{let{char:i}=e;if(t.current.has(i))return()=>{};let a=new Map(t.current);a.set(i,e),t.current=a,r();for(let t of n.current)t.added(e);return()=>{let e=new Map(t.current);e.delete(i),t.current=e,r();for(let e of n.current)e.removed(i)}},[r]),o=(0,F.useCallback)(()=>t.current,[]),s=(0,F.useCallback)(e=>(n.current.add(e),()=>{n.current.delete(e)}),[]),c=(0,F.useRef)(null),l=(0,F.useRef)(null),{notify:u,subscribe:d}=Hr(),f=(0,F.useCallback)((e,t)=>{if(t===null){if(l.current!==e)return;c.current=null,l.current=null,u();return}let n=c.current;l.current===e&&n!==null&&n.popoverId===t.popoverId&&n.highlightedItemId===t.highlightedItemId||(c.current=t,l.current=e,u())},[u]),p=(0,F.useCallback)(()=>c.current,[]),m=(0,F.useMemo)(()=>({register:a,getTriggers:o,subscribe:i,subscribeLifecycle:s,getActiveAria:p,subscribeAria:d}),[a,o,i,s,p,d]),h=(0,F.useMemo)(()=>({setActiveAria:f}),[f]);return(0,R.jsx)(Ir.Provider,{value:m,children:(0,R.jsx)(Lr.Provider,{value:h,children:e})})},Wr=({children:e})=>he()?(0,R.jsx)(Ur,{children:e}):(0,R.jsx)(oe,{children:(0,R.jsx)(Ur,{children:e})});Wr.displayName=`ComposerPrimitive.TriggerPopoverRoot`;var Gr=(0,F.forwardRef)(({autoFocus:e=!1,asChild:t,render:n,disabled:r,onChange:i,onKeyDown:a,onPaste:o,onSelect:s,submitOnEnter:c,submitMode:l,cancelOnEscape:u=!0,unstable_focusOnRunStart:d=!0,unstable_focusOnScrollToBottom:f=!0,unstable_focusOnThreadSwitched:p=!0,addAttachmentOnPaste:m=!0,...h},ee)=>{let g=w(),_=he(),v=Vr(),y=l??(c===!1?`none`:`enter`),b=C(e=>e.composer.isEditing?e.composer.text:``),x=C(e=>e.thread.isDisabled||e.composer.dictation?.inputDisabled)||r,S=(0,F.useRef)(null),T=P(ee,S),E=(0,F.useRef)(!1);Oe(e=>{if(!S.current?.contains(e.target))return;if(_){for(let t of _.getPlugins())if(t.handleKeyDown(e))return}if(!u)return;let t=g.composer();t.getState().canCancel&&(t.cancel(),e.preventDefault())});let te=e=>{if(!x&&!e.nativeEvent.isComposing){if(_){for(let t of _.getPlugins())if(t.handleKeyDown(e))return}if(e.key===`Enter`){let t=g.thread().getState(),n=t.capabilities.queue;if(e.shiftKey&&(e.ctrlKey||e.metaKey)&&n&&y!==`none`&&g.composer().getState().canSend){e.preventDefault(),g.composer().send({steer:!0});return}if(e.shiftKey||t.isRunning&&!n)return;let r=!1;y===`ctrlEnter`?r=e.ctrlKey||e.metaKey:y===`enter`&&(r=!0),r&&(e.preventDefault(),S.current?.closest(`form`)?.requestSubmit())}}},ne=async e=>{if(!m)return;let t=g.thread().getState().capabilities,n=Array.from(e.clipboardData?.files||[]);if(t.attachments&&n.length>0)try{e.preventDefault(),await Promise.all(n.map(e=>g.composer().addAttachment(e)))}catch(e){console.error(`Error adding attachment:`,e)}},re=e&&!x,D=(0,F.useCallback)(()=>{let e=S.current;!e||!re||(e.focus({preventScroll:!0}),e.setSelectionRange(e.value.length,e.value.length))},[re]);(0,F.useEffect)(()=>D(),[D]),Fr(()=>{g.composer().getState().type===`thread`&&f&&D()}),(0,F.useEffect)(()=>{if(!(g.composer().getState().type!==`thread`||!d))return g.on(`thread.runStart`,D)},[d,D,g]),(0,F.useEffect)(()=>{if(!(g.composer().getState().type!==`thread`||!p))return g.on(`threadListItem.switchedTo`,D)},[p,D,g]);let O=v?{"aria-controls":v.popoverId,"aria-expanded":!0,"aria-haspopup":`listbox`,"aria-activedescendant":v.highlightedItemId}:{},k={name:`input`,value:b,...h,...O,ref:T,disabled:x,onChange:N(i,e=>{if(!g.composer().getState().isEditing)return;let t=e.nativeEvent.isComposing===!0;E.current&&!t&&(E.current=!1);let n=t||E.current;if(ie(()=>{g.composer().setText(e.target.value)}),n)return;let r=e.target.selectionStart??e.target.value.length;if(_)for(let e of _.getPlugins())e.setCursorPosition(r)}),onKeyDown:N(a,te),onCompositionStart:N(h.onCompositionStart,()=>{E.current=!0}),onCompositionEnd:N(h.onCompositionEnd,e=>{if(E.current=!1,!g.composer().getState().isEditing)return;let t=e.target;ie(()=>{g.composer().setText(t.value)});let n=t.selectionStart??t.value.length;if(_)for(let e of _.getPlugins())e.setCursorPosition(n)}),onSelect:N(s,e=>{if(E.current)return;let t=e.target,n=t.selectionStart??t.value.length;if(_)for(let e of _.getPlugins())e.setCursorPosition(n)}),onPaste:N(o,ne)};if(n&&(0,F.isValidElement)(n)){let e=h.children===void 0?n.props.children:h.children;return(0,R.jsx)(ke,{...k,children:(0,F.cloneElement)(n,void 0,e)})}return(0,R.jsx)(t?ke:Pr,{...k})});Gr.displayName=`ComposerPrimitive.Input`;var Kr=cr(`ComposerPrimitive.AddAttachment`,({multiple:e=!0}={})=>{let{disabled:t,addAttachment:n}=Pn(),r=w(),i=(0,F.useCallback)(()=>{let t=document.createElement(`input`);t.type=`file`,t.multiple=e,t.hidden=!0;let i=r.composer().getState().attachmentAccept;i!==`*`&&(t.accept=i),document.body.appendChild(t),t.onchange=e=>{let r=e.target.files;if(r){for(let e of r)n(e);document.body.removeChild(t)}},t.oncancel=()=>{(!t.files||t.files.length===0)&&document.body.removeChild(t)},t.click()},[r,e,n]);return t?null:i},[`multiple`]),qr=(0,F.forwardRef)(({smooth:e=!0,component:t=`span`,...n},r)=>{let{text:i,status:a}=ye(fe(),e);return(0,R.jsx)(t,{"data-status":a.type,...n,ref:r,children:i})});qr.displayName=`MessagePartPrimitive.Text`;var Jr=()=>C(e=>{if(e.part.type!==`image`)throw Error(`MessagePartImage can only be used inside image message parts.`);return e.part}),Yr=(0,F.forwardRef)((e,t)=>{let{image:n}=Jr();return(0,R.jsx)(J.img,{src:n,...e,ref:t})});Yr.displayName=`MessagePartPrimitive.Image`;var Xr=({children:e})=>C(e=>e.part.status.type===`running`)?e:null;Xr.displayName=`MessagePartPrimitive.InProgress`;var X=e=>{let t=(0,F.useRef)(void 0);return(0,F.useCallback)(n=>{t.current&&=(t.current(),void 0),n&&(t.current=e(n))},[e])},Zr=(e,t)=>{let n=e.trim().match(/^(\d+(?:\.\d+)?|\.\d+)(em|px|rem)$/);if(!n)return 1/0;let r=Number(n[1]),i=n[2];return i===`px`?r:i===`em`?r*(parseFloat(getComputedStyle(t).fontSize)||16):i===`rem`?r*(parseFloat(getComputedStyle(document.documentElement).fontSize)||16):1/0},Qr=e=>e.dataset.messageId,$r=()=>{let e=document.createElement(`div`);return e.dataset.auiTopAnchorReserve=``,e.style.height=`0px`,e.style.flexShrink=`0`,e.style.pointerEvents=`none`,e.setAttribute(`aria-hidden`,`true`),e},ei=(e,t)=>{let n=`${t}px`;return e.style.height===n?!1:(e.style.height=n,!0)},ti=e=>{let t=window.devicePixelRatio||1;return Math.round(e*t)/t},ni=()=>{let e=w(),t=C(()=>e.message());return X((0,F.useCallback)(e=>{let n=()=>{t.setIsHovering(!0)},r=()=>{t.setIsHovering(!1)};return e.addEventListener(`mouseenter`,n),e.addEventListener(`mouseleave`,r),e.matches(`:hover`)&&queueMicrotask(()=>t.setIsHovering(!0)),()=>{e.removeEventListener(`mouseenter`,n),e.removeEventListener(`mouseleave`,r),t.setIsHovering(!1)}},[t]))},ri=()=>{let e=W(e=>e.topAnchorTurn?.anchorId);return C(t=>t.message.role===`user`&&t.message.index>0&&t.message.index===t.thread.messages.length-2&&t.thread.messages.at(-1)?.role===`assistant`&&(t.message.id===e||t.thread.isRunning))},ii=()=>{let e=W(e=>e.topAnchorTurn?.targetId);return C(t=>t.message.isLast&&t.message.role===`assistant`&&t.message.index>=1&&t.thread.messages.at(t.message.index-1)?.role===`user`&&(t.message.id===e||t.thread.isRunning))},ai=(e,t)=>X((0,F.useCallback)(n=>{if(e)return t.getState().registerAnchorElement(n)},[e,t])),oi=({active:e,threadViewportStore:t})=>X((0,F.useCallback)(n=>{if(!e)return;let r=t.getState(),i=r.topAnchorMessageClamp;return r.registerAnchorTargetElement(n,{tallerThan:Zr(i.tallerThan,n),visibleHeight:Zr(i.visibleHeight,n)})},[e,t])),si=({forwardedRef:e,...t})=>{let n=P(e,ni()),r=C(e=>e.message.id);return(0,R.jsx)(J.div,{...t,ref:n,"data-message-id":r})},ci=({forwardedRef:e,threadViewportStore:t,...n})=>{let r=ni(),i=ri(),a=ii(),o=P(e,r,ai(i,t),oi({active:a,threadViewportStore:t})),s=C(e=>e.message.id);return(0,R.jsx)(J.div,{...n,ref:o,"data-message-id":s,"data-aui-top-anchor-user":i?``:void 0,"data-aui-top-anchor-target":a?``:void 0})},li=(0,F.forwardRef)((e,t)=>{let n=G();return n.getState().turnAnchor===`top`?(0,R.jsx)(ci,{...e,forwardedRef:t,threadViewportStore:n}):(0,R.jsx)(si,{...e,forwardedRef:t})});li.displayName=`MessagePrimitive.Root`;var ui={...H,Text:()=>(0,R.jsxs)(`p`,{style:{whiteSpace:`pre-line`},children:[(0,R.jsx)(qr,{}),(0,R.jsx)(Xr,{children:(0,R.jsx)(`span`,{style:{fontFamily:`revert`},children:` ●`})})]}),Image:()=>(0,R.jsx)(Yr,{})},di=e=>{if(`children`in e)return(0,R.jsx)(En,{children:e.children});let{components:t,...n}=e;return(0,R.jsx)(En,{components:t?{Text:t.Text??ui.Text,Image:t.Image??ui.Image,Reasoning:t.Reasoning??H.Reasoning,Source:t.Source??H.Source,File:t.File??H.File,Unstable_Audio:t.Unstable_Audio??H.Unstable_Audio,...`ChainOfThought`in t?{ChainOfThought:t.ChainOfThought}:{tools:t.tools,data:t.data,ToolGroup:t.ToolGroup??H.ToolGroup,ReasoningGroup:t.ReasoningGroup??H.ReasoningGroup},Empty:t.Empty,Quote:t.Quote}:ui,...n})};di.displayName=`MessagePrimitive.Parts`;var fi=(0,F.forwardRef)((e,t)=>(0,R.jsx)(J.div,{...e,ref:t}));fi.displayName=`ThreadPrimitive.Root`;var pi=e=>{let t=Ae(e);return X((0,F.useCallback)(e=>{let n=new ResizeObserver(()=>{t()}),r=new MutationObserver(e=>{e.some(e=>e.type!==`attributes`||e.attributeName!==`style`)&&t()});return n.observe(e),r.observe(e,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),()=>{n.disconnect(),r.disconnect()}},[t]))},mi=({autoScroll:e,scrollToBottomOnRunStart:t=!0,scrollToBottomOnInitialize:n=!0,scrollToBottomOnThreadSwitch:r=!0})=>{let i=(0,F.useRef)(null),a=G();e===void 0&&(e=a.getState().turnAnchor!==`top`);let o=(0,F.useRef)(0),s=(0,F.useRef)(null),c=(0,F.useCallback)(e=>{let t=i.current;t&&(s.current=e,t.scrollTo({top:t.scrollHeight,behavior:e}))},[]),l=(0,F.useCallback)(()=>{let e=a.getState();return e.turnAnchor===`top`&&e.element.viewport===i.current&&e.element.anchor!==null},[a]),u=()=>{let e=i.current;if(!e)return;let t=a.getState().isAtBottom,n=Math.abs(e.scrollHeight-e.scrollTop-e.clientHeight)<1||e.scrollHeight<=e.clientHeight;!n&&o.current<e.scrollTop||(n&&(s.current=null),(n||s.current===null)&&n!==t&&ve(a).setState({isAtBottom:n})),o.current=e.scrollTop},d=pi(()=>{let t=s.current;t&&l()?s.current=null:t?c(t):e&&a.getState().isAtBottom&&c(`instant`),u()}),f=X(e=>(e.addEventListener(`scroll`,u),()=>{e.removeEventListener(`scroll`,u)}));return Fr(({behavior:e})=>{c(e)}),I(`thread.runStart`,()=>{t&&a.getState().turnAnchor!==`top`&&(s.current=`auto`,requestAnimationFrame(()=>{c(`auto`)}))}),I(`thread.initialize`,()=>{n&&(s.current=`instant`,requestAnimationFrame(()=>{c(`instant`)}))}),I(`threadListItem.switchedTo`,()=>{r&&(s.current=`instant`,requestAnimationFrame(()=>{c(`instant`)}))}),P(d,f,i)},hi=(e,t)=>X((0,F.useCallback)(n=>{if(!e)return;let r=e(),i=()=>{let e=t?t(n):n.offsetHeight;r.setHeight(e)},a=new ResizeObserver(i);return a.observe(n),i(),()=>{a.disconnect(),r.unregister()}},[e,t])),gi=e=>{let t=0,n=e;for(;n;)t+=n.offsetTop,n=n.offsetParent;return t},_i=(e,t)=>{let n=0,r=e;for(;r&&r!==t;)n+=r.offsetTop,r=r.offsetParent;return r===t?n:gi(e)-gi(t)},vi=({viewport:e,anchor:t,tallerThan:n,visibleHeight:r})=>{let i=_i(t,e),a=t.offsetHeight;return i+Math.max(0,a-(a<=n?a:r))},yi=({scrollHeight:e,...t})=>{let{viewport:n}=t,r=vi(t)+n.clientHeight;return Math.max(0,r-e)},bi=({viewport:e,reserve:t,...n})=>yi({viewport:e,...n,scrollHeight:e.scrollHeight-t.offsetHeight}),xi=e=>{let t=new ResizeObserver(e),n=new MutationObserver(e),r=null,i=null,a=null,o=()=>{t.disconnect(),n.disconnect(),r=null,i=null,a=null};return{target:(e,s,c)=>{r===e&&i===s&&a===c||(o(),t.observe(e),t.observe(s),t.observe(c),n.observe(c,{childList:!0,subtree:!0,characterData:!0}),r=e,i=s,a=c)},disconnect:o}},Si=e=>{let t=null;return{schedule:()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,e()}))},cancel:()=>{t!==null&&(cancelAnimationFrame(t),t=null)}}},Ci=e=>{let t=null,n;function r(){let r=e.getState(),{viewport:o,anchor:s,target:c}=r.element,l=r.targetConfig;if(r.turnAnchor!==`top`||!o||!s||!c||!l){a.disconnect(),t&&(ei(t,0),t.remove());return}if(t??=$r(),(t.parentElement!==c.parentElement||t.previousElementSibling!==c)&&c.after(t),a.target(o,s,c),ei(t,bi({viewport:o,anchor:s,reserve:t,...l}))){i.schedule();return}let u=Qr(s);if(u!==void 0&&n===u)return;let d=ti(vi({viewport:o,anchor:s,...l}));Math.abs(o.scrollTop-d)>1&&o.scrollTo({top:d,behavior:`smooth`}),u!==void 0&&(n=u)}let i=Si(r),a=xi(i.schedule);i.schedule();let o=e.subscribe(i.schedule);return()=>{i.cancel(),o(),a.disconnect(),t?.remove()}},wi=e=>{let t=G();(0,F.useLayoutEffect)(()=>{if(e)return Ci(t)},[e,t])},Ti=({isRunning:e,messages:t})=>{if(!e)return null;let n=t.at(-1),r=t.at(-2);return r?.role!==`user`||n?.role!==`assistant`?null:{anchorId:r.id,targetId:n.id}},Ei=e=>Ti(e)?.anchorId,Di=e=>Ti(e)?.targetId,Oi=()=>hi(W(e=>e.registerViewport),(0,F.useCallback)(e=>e.clientHeight,[])),ki=()=>X(W(e=>e.registerViewportElement)),Ai=e=>{let t=G(),n=C(t=>{if(e)return Ei(t.thread)}),r=C(t=>{if(e)return Di(t.thread)}),i=(0,F.useMemo)(()=>!n||!r?null:{anchorId:n,targetId:r},[n,r]);(0,F.useLayoutEffect)(()=>{if(!i)return;let e=t.getState(),n=e.topAnchorTurn;n?.anchorId===i.anchorId&&n.targetId===i.targetId||e.setTopAnchorTurn(i)},[i,t]);let a=(0,F.useCallback)(()=>{t.getState().setTopAnchorTurn(null)},[t]);I(`thread.initialize`,a),I(`threadListItem.switchedTo`,a)},ji=(0,F.forwardRef)(({autoScroll:e,scrollToBottomOnRunStart:t,scrollToBottomOnInitialize:n,scrollToBottomOnThreadSwitch:r,children:i,...a},o)=>{let s=mi({autoScroll:e,scrollToBottomOnRunStart:t,scrollToBottomOnInitialize:n,scrollToBottomOnThreadSwitch:r}),c=Oi(),l=ki(),u=G().getState().turnAnchor===`top`;Ai(u),wi(u);let d=P(o,s,c,l);return(0,R.jsx)(J.div,{...a,ref:d,children:i})});ji.displayName=`ThreadPrimitive.ViewportScrollable`;var Mi=(0,F.forwardRef)(({turnAnchor:e,topAnchorMessageClamp:t,...n},r)=>(0,R.jsx)(Bn,{options:{turnAnchor:e,topAnchorMessageClamp:t},children:(0,R.jsx)(ji,{...n,ref:r})}));Mi.displayName=`ThreadPrimitive.Viewport`;function Ni(e){let t=n(e);return t?`customer_agent:interview_session:${encodeURIComponent(t)}`:null}function Pi(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.entryId==`string`&&typeof t.priority==`number`&&typeof t.sessionId==`string`&&typeof t.title==`string`?r(t.entryId)&&t.entryId===`interview/session/${t.sessionId}`:!1}function Fi(e){let t=Ni(e);if(!t)return null;try{let e=window.localStorage.getItem(t);if(!e)return null;let n=JSON.parse(e);return Pi(n)?n:null}catch{return null}}function Ii(e,t){let n=Ni(e);if(n)try{window.localStorage.setItem(n,JSON.stringify(t))}catch{}}function Li(e){let t=Ni(e);if(t)try{window.localStorage.removeItem(t)}catch{}}var Z=Object.freeze({ACTIVE:`active`,ERROR:`error`,IDLE:`idle`,LOADING:`loading`,SENDING:`sending`,TERMINAL:`terminal`});function Ri(e){return typeof crypto<`u`&&`randomUUID`in crypto?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${Math.random().toString(36).slice(2)}`}function zi(e){return e.anonymous_id??e.user?.id}function Bi(e){return typeof e==`string`&&e.trim()?e.trim():null}function Vi(e){return Bi(e.user?.id)}function Hi(e){return Bi(e.brand?.name)??`Customer Agent`}function Ui(e){return{...e.context,...e.user,userId:e.user?.id,visitorId:zi(e)}}function Wi(e){return{content:e.content,createdAt:new Date(e.createdAt),id:e.id,role:e.role,status:e.role===`assistant`?{reason:`stop`,type:`complete`}:void 0}}function Gi({client:n,options:r}){let a=new Set,o=new Map,s={messages:[],phase:Z.IDLE};function c(){for(let e of a)e(s)}function u(t,n=s.completion){t.status!==e.ACTIVE&&Li(r),s={completion:n,messages:t.messages.map(Wi),phase:t.status===e.ACTIVE?Z.ACTIVE:Z.TERMINAL,sessionId:t.sessionId,status:t.status},c()}return{async chooseInvitation(e,t){await n.chooseInvitation(e,{choice:t})},async discoverInvitation(){if(!Vi(r))return null;let e=await n.checkEligibility({appId:r.app_id,locale:r.locale,pageContext:r.context??{},userContext:Ui(r),visitorId:zi(r)});if(!e.eligible||e.status&&e.status!==t.AVAILABLE||!e.campaignId||!e.showRequestId||!e.invitation)return null;let i=e.invitation,a=await n.createInvitation({appId:r.app_id,campaignId:e.campaignId,context:r.context??{},showRequestId:e.showRequestId,userContext:Ui(r),variantKey:e.variantKey,visitorId:zi(r)}),s={id:`interview/invite/${e.campaignId}`,kind:`interview`,priority:20,prompt:{anchor:`dock`,body:i.body,campaignId:e.campaignId,closeLabel:`No`,invitationId:a.invitationId,kind:`interview-invite`,laterLabel:i.laterCta,startLabel:i.startCta},status:l.INVITABLE,title:i.title};return o.set(a.invitationId,{priority:s.priority??20,title:s.title}),s},getState(){return s},hydrateSession(e){u(e)},async loadReward(e){let t=await n.getReward(e);return s={...s,reward:t},c(),t},async sendMessage(t){if(!s.sessionId)throw Error(`Cannot send an interview message before the session starts.`);let i=s.sessionId,a=Ri(`interview-message`),o=new Date;s={...s,messages:[...s.messages,{content:t,createdAt:o,id:a,role:`user`}],phase:Z.SENDING},c();let l=await n.sendMessage(i,{clientMessageId:a,content:t,locale:r.locale});s={...s,completion:l.completion,messages:[...s.messages,{content:l.assistantMessage,createdAt:new Date,id:Ri(`interview-assistant`),role:`assistant`,status:{reason:`stop`,type:`complete`}}],phase:l.sessionStatus===e.ACTIVE?Z.ACTIVE:Z.TERMINAL,status:l.sessionStatus},c(),l.sessionStatus!==e.ACTIVE&&Li(r),l.sessionStatus!==e.ACTIVE&&u(await n.getSession(i),l.completion)},async startInvitation(t){s={...s,phase:Z.LOADING};let a=await n.startInvitation(t,i(r)),c=`interview/session/${a.sessionId}`,l=o.get(t);return u(a),a.status===e.ACTIVE&&Ii(r,{entryId:c,priority:l?.priority??20,sessionId:a.sessionId,title:Hi(r)}),{entryId:c,sessionId:a.sessionId}},async restoreCachedSession(){let t=Fi(r);if(!t)return null;s={...s,phase:Z.LOADING},c();try{let i=await n.getSession(t.sessionId);return i.status===e.ACTIVE?(u(i),{id:t.entryId,kind:`interview`,priority:t.priority,status:l.ACTIVE,title:t.title}):(Li(r),s={messages:[],phase:Z.IDLE},c(),null)}catch{return Li(r),s={messages:[],phase:Z.IDLE},c(),null}},subscribe(e){return a.add(e),()=>{a.delete(e)}}}}function Ki(e){return typeof e==`string`&&e.trim()?e.trim():null}function qi(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}}function Ji(e,t,n,r){try{return new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,timeZone:n,timeZoneName:r}).formatToParts(e).find(e=>e.type===`timeZoneName`)?.value??null}catch{return null}}function Yi(e){let t=-e.getTimezoneOffset(),n=t>=0?`+`:`-`,r=Math.abs(t);return`GMT${n}${String(Math.floor(r/60)).padStart(2,`0`)}${String(r%60).padStart(2,`0`)}`}function Xi(e,t){if(!e||e===`UTC`)return e===`UTC`?`GMT+0000`:Yi(t);let n=/^GMT([+-])(\d{1,2})(?::?(\d{2}))?$/.exec(e);return n?`GMT${n[1]}${n[2].padStart(2,`0`)}${(n[3]??`00`).padStart(2,`0`)}`:Yi(t)}function Zi(e,t,n){return`${new Intl.DateTimeFormat(t,{day:`2-digit`,hour:`2-digit`,hour12:!0,minute:`2-digit`,month:`long`,timeZone:n,year:`numeric`}).format(e)} ${n} time ${Ji(e,t,n,`short`)??n} (${Xi(Ji(e,t,n,`longOffset`),e)})`}function Qi(e,t,n){return new Intl.DateTimeFormat(t,{hour:`2-digit`,hour12:!0,minute:`2-digit`,timeZone:n}).format(e)}function $i(e,t,n){return new Intl.DateTimeFormat(t,{day:`numeric`,month:`long`,timeZone:n,year:`numeric`}).format(e)}function ea(e,t,n){return new Intl.DateTimeFormat(t,{day:`2-digit`,month:`2-digit`,timeZone:n,year:`numeric`}).format(e)}function ta(e){return Ki(e?.user?.email)??Ki(e?.user?.name)??`You`}function na({conversationName:e,exportedAt:t,exportSourceName:n=e,locale:r,messages:i,startedAt:a,userSpeaker:o=`You`}){let s=i.map(e=>({...e,text:e.text.trim()})).filter(e=>e.text),c=qi(),l=a??s[0]?.createdAt??t,u=new Set(s.map(e=>ea(e.createdAt,r,c))).size>1,d=[`Conversation with ${e}`,`Started on ${Zi(l,r,c)}`,``,`---`,``],f=null;for(let t of s){let n=ea(t.createdAt,r,c),i=t.speaker??(t.role===`user`?o:e);u&&n!==f&&(d.push($i(t.createdAt,r,c)),d.push(``),f=n),d.push(`${Qi(t.createdAt,r,c)} | ${i}: ${t.text}`),d.push(``)}return d.push(`---`),d.push(`Exported from ${n} on ${Zi(t,r,c)}`),d.join(`
1
+ import{r as e,t}from"./interviewTypes-Ch2NsXKB.js";import{h as n,i as r,u as i}from"./routes-aV4LZuEj.js";import{r as a}from"../runtime.es.js";import{t as o}from"./react-CKmEJ8Ba.js";import{n as s}from"./client-duvjg9sB.js";import{t as c}from"./createLucideIcon-B1BLVEeA.js";import{t as l}from"./conversationRegistry-Y5Ouo35n.js";import{t as u}from"./x-CcuT5rCV.js";import{t as d}from"./jsx-runtime-S2ZBQkZm.js";import{t as f}from"./classNames-3q0x02_x.js";import{B as p,C as m,D as h,F as ee,G as g,H as _,I as v,J as y,K as b,L as x,M as S,N as C,P as w,Q as T,R as E,S as te,T as ne,U as re,V as D,W as ie,X as O,Y as k,Z as A,_ as ae,a as oe,b as se,c as ce,f as le,g as ue,h as de,i as fe,l as pe,m as me,o as he,p as ge,q as _e,s as ve,t as ye,u as be,v as xe,w as j,x as Se,y as Ce,z as M}from"./useSmooth-CYGvfMVe.js";import{C as we,S as N,a as Te,o as Ee,r as De,w as P,x as Oe,y as ke}from"./dist-dzGCY2H5.js";import{t as Ae}from"./dist-gFPJclVl.js";var je=c(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),Me=c(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),Ne=c(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),Pe=c(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),Fe=c(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Ie=c(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),Le=c(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Re=c(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),ze=c(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),Be=c(`smile`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`,key:`1y1vjs`}],[`line`,{x1:`9`,x2:`9.01`,y1:`9`,y2:`9`,key:`yxxnd0`}],[`line`,{x1:`15`,x2:`15.01`,y1:`9`,y2:`9`,key:`1p4y9e`}]]),F=a(o(),1),Ve=F.createContext(!0);function He(){throw Error(`A function wrapped in useEffectEvent can't be called during rendering.`)}var Ue=`use`in F.default?()=>{try{return F.use(Ve)}catch{return!1}}:()=>!1;function We(e){let t=F.useRef(He);return F.useInsertionEffect(()=>{t.current=e},[e]),(...e)=>{Ue()&&He();let n=t.current;return n(...e)}}var I=(e,t)=>{let n=w(),r=We(t),{scope:i,event:a}=x(e);(0,F.useEffect)(()=>n.on({scope:i,event:a},r),[n,i,a,r])},Ge=e=>{let t=w(),n=(0,F.useRef)(!1),r=n.current?null:e(t);return C(()=>n.current?e(t):r),()=>(n.current=!0,e(t))},Ke=Object.freeze({});function qe({getItemState:e,children:t}){return Je(t(Ge(e)))}var Je=e=>{let t=typeof e==`object`&&e&&`type`in e?e:null,n=t?.type,r=t?.key;return(0,F.useMemo)(()=>t,[n,r,typeof t?.props==`object`&&t.props!=null&&Object.entries(t.props).length===0?Ke:t?.props])??e},Ye=re(e=>{if(e.key===void 0)throw Error(`tapClientResource: Element has no key`);return b(D(e))});function L(e,t){let n=g(()=>e().map(e=>Ye(e)),t),r=y(()=>Object.keys(n),[n]),i=y(()=>n.reduce((e,t,n)=>(e[t.key]=n,e),{}),[n]);return{state:y(()=>n.map(e=>e.state),[n]),get:e=>{if(`index`in e){if(e.index<0||e.index>=r.length)throw Error(`tapClientLookup: Index ${e.index} out of bounds (length: ${r.length})`);return n[e.index].methods}let t=i[e.key];if(t===void 0)throw Error(`tapClientLookup: Key "${e.key}" not found`);return n[t].methods}}}var Xe=T(e=>({getState:()=>e})),Ze=T(e=>{let[t]=O(()=>({suggestions:(e??[]).map(e=>typeof e==`string`?{title:e,label:``,prompt:e}:{title:e.title,label:e.label,prompt:e.prompt})})),n=L(()=>t.suggestions.map((e,t)=>A(t,Xe(e))),[t.suggestions]);return{getState:()=>t,suggestion:({index:e})=>n.get({index:e})}}),R=d(),Qe=Object.freeze({type:`complete`}),$e=T(({parts:e,getMessagePart:t})=>{let[n,r]=O(!0),i=y(()=>e[e.length-1]?.status??Qe,[e]),a=y(()=>({parts:e,collapsed:n,status:i}),[e,n,i]);return{getState:()=>a,setCollapsed:r,part:t}}),et=1,tt=T(()=>{let[e]=O(()=>({version:et+1})),t=y(()=>new h,[]);return{getState:()=>e,getModelContext:()=>t.getModelContext(),subscribe:e=>t.subscribe(e),register:e=>t.registerModelContextProvider(e)}}),nt=T(({toolkit:e,mcpApp:t})=>{let n=g(()=>t?[A(`mcpApp`,t)]:[],[t])[0],[r,i]=O(()=>({tools:{}})),a=y(()=>({tools:r.tools,mcpApp:n}),[r,n]),o=ee(),s=_e((e,t)=>(i(n=>({tools:{...n.tools,[e]:[...n.tools[e]??[],t]}})),()=>{i(n=>({tools:{...n.tools,[e]:n.tools[e]?.filter(e=>e!==t)??[]}}))}),[]);return k(()=>{if(!e)return;let t=[];for(let[n,r]of Object.entries(e))r.render&&t.push(s(n,r.render));let n=Object.entries(e).reduce((e,[t,n])=>{let{render:r,...i}=n;return e[t]=i,e},{});return t.push(o.current.modelContext().register({getModelContext:()=>({tools:n})})),()=>{t.forEach(e=>e())}},[e,s,o]),{getState:()=>a,setToolUI:s}});E(nt,(e,t)=>{!e.modelContext&&t.modelContext.source===null&&(e.modelContext=tt())});var rt=T(()=>{let[e,t]=O(()=>({renderers:{},fallbacks:[]}));return{getState:()=>e,setDataUI:_e((e,n)=>(t(t=>({...t,renderers:{...t.renderers,[e]:[...t.renderers[e]??[],n]}})),()=>{t(t=>({...t,renderers:{...t.renderers,[e]:t.renderers[e]?.filter(e=>e!==n)??[]}}))}),[]),setFallbackDataUI:_e(e=>(t(t=>({...t,fallbacks:[...t.fallbacks,e]})),()=>{t(t=>({...t,fallbacks:t.fallbacks.filter(t=>t!==e)}))}),[])}}),it=({index:e,children:t})=>(0,R.jsx)(p,{value:w({attachment:M({source:`composer`,query:{type:`index`,index:e},get:t=>t.composer().attachment({index:e})})}),children:t}),z=e=>{let[,t]=O(e.getState);return k(()=>(t(e.getState()),e.subscribe(()=>{t(e.getState())})),[e]),e.getState()},at=T(({runtime:e})=>{let t=z(e);return{getState:()=>t,remove:e.remove,__internal_getRuntime:()=>e}}),ot=T(({runtime:e})=>{let t=z(e);return{getState:()=>t,addToolResult:t=>e.addToolResult(t),resumeToolCall:t=>e.resumeToolCall(t),__internal_getRuntime:()=>e}}),st=T(({runtime:e,index:t})=>b(at({runtime:y(()=>e.getAttachmentByIndex(t),[e,t])}))),ct=T(({threadIdRef:e,messageIdRef:t,runtime:n})=>{let r=z(n),i=v();k(()=>{let r=[];for(let a of[`send`,`attachmentAdd`]){let o=n.unstable_on(a,()=>{i(`composer.${a}`,{threadId:e.current,...t&&{messageId:t.current}})});r.push(o)}return r.push(n.unstable_on(`attachmentAddError`,n=>{i(`composer.attachmentAddError`,{threadId:e.current,...t&&{messageId:t.current},...n.attachmentId&&{attachmentId:n.attachmentId},reason:n.reason,message:n.message})})),()=>{for(let e of r)e()}},[n,i,e,t]);let a=L(()=>r.attachments.map((e,t)=>A(e.id,st({runtime:n,index:t}))),[r.attachments,n]),o=y(()=>({text:r.text,role:r.role,attachments:a.state,runConfig:r.runConfig,isEditing:r.isEditing,canCancel:r.canCancel,canSend:r.canSend,attachmentAccept:r.attachmentAccept,isEmpty:r.isEmpty,type:r.type??`thread`,dictation:r.dictation,quote:r.quote,queue:[]}),[r,a.state]);return{getState:()=>o,setText:n.setText,setRole:n.setRole,setRunConfig:n.setRunConfig,addAttachment:n.addAttachment,reset:n.reset,clearAttachments:n.clearAttachments,send:n.send,cancel:n.cancel,beginEdit:n.beginEdit??(()=>{throw Error(`beginEdit is not supported in this runtime`)}),startDictation:n.startDictation,stopDictation:n.stopDictation,setQuote:n.setQuote,attachment:e=>`id`in e?a.get({key:e.id}):a.get(e),queueItem:()=>{throw Error(`Queue is not supported in this runtime`)},__internal_getRuntime:()=>n}}),lt=T(({runtime:e,index:t})=>b(at({runtime:y(()=>e.getAttachmentByIndex(t),[e,t])}))),ut=T(({runtime:e,index:t})=>b(ot({runtime:y(()=>e.getMessagePartByIndex(t),[e,t])}))),dt=T(({runtime:e,threadIdRef:t})=>{let n=z(e),[r,i]=O(!1),[a,o]=O(!1),s=y(()=>({get current(){return e.getState().id}}),[e]),c=_(ct({runtime:e.composer,threadIdRef:t,messageIdRef:s})),l=L(()=>n.content.map((t,n)=>A(`toolCallId`in t&&t.toolCallId!=null?`toolCallId-${t.toolCallId}`:`index-${n}`,ut({runtime:e,index:n}))),[n.content,e]),u=L(()=>(n.attachments??[]).map((t,n)=>A(t.id,lt({runtime:e,index:n}))),[n.attachments,e]),d=y(()=>({...n,parts:l.state,composer:c.state,isCopied:r,isHovering:a}),[n,l.state,c.state,r,a]);return{getState:()=>d,composer:()=>c.methods,reload:t=>e.reload(t),speak:()=>e.speak(),stopSpeaking:()=>e.stopSpeaking(),submitFeedback:t=>e.submitFeedback(t),switchToBranch:t=>e.switchToBranch(t),getCopyText:()=>e.unstable_getCopyText(),part:e=>`index`in e?l.get({index:e.index}):l.get({key:`toolCallId-${e.toolCallId}`}),attachment:e=>`id`in e?u.get({key:e.id}):u.get(e),setIsCopied:i,setIsHovering:o,__internal_getRuntime:()=>e}}),ft=T(({runtime:e,id:t,threadIdRef:n})=>b(dt({runtime:y(()=>e.getMessageById(t),[e,t]),threadIdRef:n}))),pt=T(({runtime:e})=>{let t=z(e),n=v();k(()=>{let t=[];for(let r of[`runStart`,`runEnd`,`initialize`,`modelContextUpdate`]){let i=e.unstable_on(r,()=>{let t=e.getState()?.threadId||`unknown`;n(`thread.${r}`,{threadId:t})});t.push(i)}return()=>{for(let e of t)e()}},[e,n]);let r=y(()=>({get current(){return e.getState().threadId}}),[e]),i=_(ct({runtime:e.composer,threadIdRef:r})),a=L(()=>t.messages.map(t=>A(t.id,ft({runtime:e,id:t.id,threadIdRef:r}))),[t.messages,e,r]),o=y(()=>({isEmpty:a.state.length===0&&!t.isLoading,isDisabled:t.isDisabled,isLoading:t.isLoading,isRunning:t.isRunning,capabilities:t.capabilities,state:t.state,suggestions:t.suggestions,extras:t.extras,speech:t.speech,voice:t.voice,composer:i.state,messages:a.state}),[t,a,i.state]);return{getState:()=>o,composer:()=>i.methods,append:e.append,startRun:e.startRun,resumeRun:e.resumeRun,cancelRun:e.cancelRun,getModelContext:e.getModelContext,export:e.export,import:e.import,reset:e.reset,stopSpeaking:e.stopSpeaking,connectVoice:e.connectVoice,disconnectVoice:e.disconnectVoice,getVoiceVolume:e.getVoiceVolume,subscribeVoiceVolume:e.subscribeVoiceVolume,muteVoice:e.muteVoice,unmuteVoice:e.unmuteVoice,message:e=>`id`in e?a.get({key:e.id}):a.get(e),__internal_getRuntime:()=>e}}),mt=T(({runtime:e})=>{let t=z(e),n=v();return k(()=>{let t=[];for(let r of[`switchedTo`,`switchedAway`]){let i=e.unstable_on(r,()=>{n(`threadListItem.${r}`,{threadId:e.getState().id})});t.push(i)}return()=>{for(let e of t)e()}},[e,n]),{getState:()=>t,switchTo:e.switchTo,rename:e.rename,archive:e.archive,unarchive:e.unarchive,delete:e.delete,generateTitle:e.generateTitle,initialize:e.initialize,detach:e.detach,__internal_getRuntime:()=>e}}),ht=T(({runtime:e,id:t})=>b(mt({runtime:y(()=>e.getItemById(t),[e,t])}))),gt=T(({runtime:e,__internal_assistantRuntime:t})=>{let n=z(e),r=_(pt({runtime:e.main})),i=L(()=>Object.keys(n.threadItems).map(t=>A(t,ht({runtime:e,id:t}))),[n.threadItems,e]),a=y(()=>({mainThreadId:n.mainThreadId,newThreadId:n.newThreadId??null,isLoading:n.isLoading,isLoadingMore:n.isLoadingMore,hasMore:n.hasMore,threadIds:n.threadIds,archivedThreadIds:n.archivedThreadIds,threadItems:i.state,main:r.state}),[n,i.state,r.state]);return{getState:()=>a,thread:()=>r.methods,item:e=>{if(e===`main`)return i.get({key:a.mainThreadId});if(`id`in e)return i.get({key:e.id});let{index:t,archived:n=!1}=e,r=n?a.archivedThreadIds[t]:a.threadIds[t];return i.get({key:r})},switchToThread:async t=>{await e.switchToThread(t)},switchToNewThread:async()=>{await e.switchToNewThread()},getLoadThreadsPromise:()=>e.getLoadThreadsPromise(),reload:()=>e.reload(),loadMore:()=>e.loadMore(),__internal_getAssistantRuntime:()=>t}}),_t=T(e=>{let t=ee();return k(()=>e.registerModelContextProvider(t.current.modelContext()),[e,t]),b(gt({runtime:e.threads,__internal_assistantRuntime:e}))}),vt=(e,t)=>{e.thread??=M({source:`threads`,query:{type:`main`},get:e=>e.threads().thread(`main`)}),e.threadListItem??=M({source:`threads`,query:{type:`main`},get:e=>e.threads().item(`main`)}),e.composer??=M({source:`thread`,query:{},get:e=>e.threads().thread(`main`).composer()}),!e.modelContext&&t.modelContext.source===null&&(e.modelContext=tt()),!e.suggestions&&t.suggestions.source===null&&(e.suggestions=Ze())},yt=({index:e,children:t})=>(0,R.jsx)(p,{value:w({message:M({source:`thread`,query:{type:`index`,index:e},get:t=>t.thread().message({index:e})}),composer:M({source:`message`,query:{},get:t=>t.thread().message({index:e}).composer()})}),children:t}),bt=({index:e,children:t})=>(0,R.jsx)(p,{value:w({part:M({source:`message`,query:{type:`index`,index:e},get:t=>t.message().part({index:e})})}),children:t}),xt=T(({text:e,isRunning:t})=>{let n=y(()=>({type:`text`,text:e,status:t?{type:`running`}:{type:`complete`}}),[e,t]);return{getState:()=>n,addToolResult:()=>{throw Error(`Not supported`)},resumeToolCall:()=>{throw Error(`Not supported`)}}}),St=({text:e,isRunning:t=!1,children:n})=>(0,R.jsx)(p,{value:w({part:xt({text:e,isRunning:t})}),children:n}),Ct=({startIndex:e,endIndex:t,children:n})=>{let r=C(e=>e.message.parts).slice(e,t+1),i=w();return(0,R.jsx)(p,{value:w({chainOfThought:$e({parts:r,getMessagePart:({index:t})=>{if(t<0||t>=r.length)throw Error(`ChainOfThought part index ${t} is out of bounds (0..${r.length-1})`);return i.message().part({index:e+t})}})}),children:n})},wt=class extends de{runtime;endEditCallback;get canCancel(){return!0}get canSend(){return!this.isEmpty}getAttachmentAdapter(){return this.runtime.adapters?.attachments}getDictationAdapter(){return this.runtime.adapters?.dictation}_previousText;_previousAttachments;_nonTextPassthrough;_parentId;_sourceId;constructor(e,t,{parentId:n,message:r}){super(),this.runtime=e,this.endEditCallback=t,this._parentId=n,this._sourceId=r.id,this._previousText=j(r),this.setText(this._previousText),this.setRole(r.role),r.role===`user`?(this._previousAttachments=[...r.attachments??[],...ae(r.content)],this._nonTextPassthrough=[]):(this._previousAttachments=r.attachments??[],this._nonTextPassthrough=r.content.filter(e=>e.type!==`text`)),this.setAttachments(this._previousAttachments),this.setRunConfig({...e.composer.runConfig})}get parentId(){return this._parentId}get sourceId(){return this._sourceId}async handleSend(e,t){let n=j(e),r=!ue(e.attachments??[],this._previousAttachments);if(n!==this._previousText||r||t?.startRun){let n=this._nonTextPassthrough.length>0?[...e.content,...this._nonTextPassthrough]:e.content;this.runtime.append({...e,content:n,parentId:this._parentId,sourceId:this._sourceId,startRun:t?.startRun})}this.handleCancel()}handleCancel(){this.endEditCallback(),this._notifySubscribers()}},Tt=class{_contextProvider;_subscriptions=new Set;_isInitialized=!1;repository=new Ce;_voiceMessages=[];_voiceGeneration=0;_cachedMergedMessages=null;_cachedVoiceGeneration=-1;_cachedMergedBase=null;_markVoiceMessagesDirty(){this._voiceGeneration++,this._cachedMergedMessages=null}_getBaseMessages(){return this.repository.getMessages()}get messages(){if(this._voiceMessages.length===0)return this._getBaseMessages();let e=this._getBaseMessages();return(this._cachedVoiceGeneration!==this._voiceGeneration||this._cachedMergedBase!==e)&&(this._cachedMergedMessages=[...e,...this._voiceMessages],this._cachedVoiceGeneration=this._voiceGeneration,this._cachedMergedBase=e),this._cachedMergedMessages}get state(){let e;for(let t of this.messages)t.role===`assistant`&&(e=t);return e?.metadata.unstable_state??null}composer=new me(this);constructor(e){this._contextProvider=e}getModelContext(){return this._contextProvider.getModelContext()}_editComposers=new Map;getEditComposer(e){return this._editComposers.get(e)}beginEdit(e){if(this._editComposers.has(e))throw Error(`Edit already in progress`);this._editComposers.set(e,new wt(this,()=>this._editComposers.delete(e),this.repository.getMessage(e))),this._notifySubscribers()}getMessageById(e){try{return this.repository.getMessage(e)}catch{let t=this.repository.getMessages(),n=this._voiceMessages.findIndex(t=>t.id===e);return n===-1?void 0:{parentId:n>0?this._voiceMessages[n-1].id:t.at(-1)?.id??null,message:this._voiceMessages[n],index:t.length+n}}}getBranches(e){return this._voiceMessages.some(t=>t.id===e)?[]:this.repository.getBranches(e)}switchToBranch(e){this.repository.switchToBranch(e),this._notifySubscribers()}_notifySubscribers(){for(let e of this._subscriptions)e()}_notifyEventSubscribers(e,t){let n=this._eventSubscribers.get(e);if(n)for(let e of n)e(t)}subscribe(e){return this._subscriptions.add(e),()=>this._subscriptions.delete(e)}submitFeedback({messageId:e,type:t}){let n=this.adapters?.feedback;if(!n)throw Error(`Feedback adapter not configured`);let{message:r,parentId:i}=this.repository.getMessage(e);if(n.submit({message:r,type:t}),r.role===`assistant`){let e={...r,metadata:{...r.metadata,submittedFeedback:{type:t}}};this.repository.addOrUpdateMessage(i,e)}this._notifySubscribers()}_stopSpeaking;speech;speak(e){let t=this.adapters?.speech;if(!t)throw Error(`Speech adapter not configured`);let{message:n}=this.repository.getMessage(e);this._stopSpeaking?.();let r=t.speak(j(n)),i=r.subscribe(()=>{r.status.type===`ended`?(this._stopSpeaking=void 0,this.speech=void 0):this.speech={messageId:e,status:r.status},this._notifySubscribers()});this.speech={messageId:e,status:r.status},this._notifySubscribers(),this._stopSpeaking=()=>{r.cancel(),i(),this.speech=void 0,this._stopSpeaking=void 0}}stopSpeaking(){if(!this._stopSpeaking)throw Error(`No message is being spoken`);this._stopSpeaking(),this._notifySubscribers()}_voiceSession;_voiceUnsubs=[];voice;_voiceVolume=0;_voiceVolumeSubscribers=new Set;getVoiceVolume=()=>this._voiceVolume;subscribeVoiceVolume=e=>(this._voiceVolumeSubscribers.add(e),()=>this._voiceVolumeSubscribers.delete(e));connectVoice(){let e=this.adapters?.voice;if(!e)throw Error(`Voice adapter not configured`);this.disconnectVoice();let t=e.connect({});this._voiceSession=t;let n=[],r=`listening`;this.voice={status:t.status,isMuted:t.isMuted,mode:r},this._voiceVolume=0,this._notifySubscribers(),n.push(t.onStatusChange(e=>{e.type===`ended`?(this._finishVoiceAssistantMessage(),this._voiceSession=void 0,this.voice=void 0):this.voice={status:e,isMuted:t.isMuted,mode:r},this._notifySubscribers()})),n.push(t.onModeChange(e=>{r=e,this.voice&&(this.voice={...this.voice,mode:e},this._notifySubscribers())})),n.push(t.onVolumeChange(e=>{this._voiceVolume=e;for(let e of this._voiceVolumeSubscribers)e()})),n.push(t.onTranscript(e=>{this._handleVoiceTranscript(e)})),this._voiceUnsubs=n}_currentAssistantMsg=null;_handleVoiceTranscript(e){if(this.ensureInitialized(),e.role===`user`)this._finishVoiceAssistantMessage(),this._currentAssistantMsg=null,e.isFinal&&(this._voiceMessages.push({id:m(),role:`user`,content:[{type:`text`,text:e.text}],metadata:{custom:{}},createdAt:new Date,status:{type:`complete`,reason:`unknown`},attachments:[]}),this._markVoiceMessagesDirty(),this._notifySubscribers());else{if(!this._currentAssistantMsg)this._currentAssistantMsg={id:m(),role:`assistant`,content:[{type:`text`,text:e.text}],metadata:{unstable_state:this.state,unstable_annotations:[],unstable_data:[],steps:[],custom:{}},status:{type:`running`},createdAt:new Date},this._voiceMessages.push(this._currentAssistantMsg);else{let t=this._voiceMessages.indexOf(this._currentAssistantMsg);if(t===-1)return;let n={...this._currentAssistantMsg,content:[{type:`text`,text:e.text}],...e.isFinal?{status:{type:`complete`,reason:`stop`}}:{}};this._voiceMessages[t]=n,this._currentAssistantMsg=n}e.isFinal&&(this._currentAssistantMsg=null),this._markVoiceMessagesDirty(),this._notifySubscribers()}}_finishVoiceAssistantMessage(){let e=this._voiceMessages.at(-1);if(e?.role===`assistant`&&e.status.type===`running`){let t=this._voiceMessages.length-1;this._voiceMessages[t]={...e,status:{type:`complete`,reason:`stop`}},this._markVoiceMessagesDirty(),this._notifySubscribers()}}disconnectVoice(){this._finishVoiceAssistantMessage(),this._currentAssistantMsg=null;for(let e of this._voiceUnsubs)e();this._voiceUnsubs=[],this._voiceSession?.disconnect(),this._voiceSession=void 0,this.voice=void 0,this._voiceVolume=0;for(let e of this._voiceVolumeSubscribers)e();this._voiceMessages=[],this._markVoiceMessagesDirty(),this._notifySubscribers()}muteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.mute(),this.voice={...this.voice,isMuted:!0},this._notifySubscribers()}unmuteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.unmute(),this.voice={...this.voice,isMuted:!1},this._notifySubscribers()}ensureInitialized(){this._isInitialized||(this._isInitialized=!0,this._notifyEventSubscribers(`initialize`,{}))}export(){return this.repository.export()}import(e){this.ensureInitialized(),this.repository.clear(),this.repository.import(e),this._notifySubscribers()}reset(e){this.import(xe.fromArray(e??[]))}_eventSubscribers=new Map;unstable_on(e,t){let n=t;if(e===`modelContextUpdate`)return this._contextProvider.subscribe?.(()=>n({}))??(()=>{});let r=this._eventSubscribers.get(e);return r||(r=new Set,this._eventSubscribers.set(e,r)),r.add(n),()=>{this._eventSubscribers.get(e)?.delete(n)}}},Et=T(e=>b(_t(e)));E(Et,(e,t)=>{vt(e,t),!e.tools&&t.tools.source===null&&(e.tools=nt({})),!e.dataRenderers&&t.dataRenderers.source===null&&(e.dataRenderers=rt())});var B=Object.freeze([]),V=`DEFAULT_THREAD_ID`,Dt=Object.freeze([V]),Ot=Object.freeze({id:V,remoteId:void 0,externalId:void 0,status:`regular`}),kt=Promise.resolve(),At=Object.freeze({[V]:Ot}),jt=class{threadFactory;_mainThreadId=V;_threads=Dt;_archivedThreads=B;_threadData=At;adapter={};get isLoading(){return this.adapter.isLoading??!1}get newThreadId(){}get threadIds(){return this._threads}get archivedThreadIds(){return this._archivedThreads}get threadItems(){return this._threadData}getLoadThreadsPromise(){return kt}_mainThread;get mainThreadId(){return this._mainThreadId}constructor(e={},t){this.threadFactory=t,this.__internal_setAdapter(e,!0)}getMainThreadRuntimeCore(){return this._mainThread}getThreadRuntimeCore(){throw Error(`Method not implemented.`)}getItemById(e){return this._threadData[e]}__internal_setAdapter(e,t=!1){let n=this.adapter;this.adapter=e;let r=e.threadId??V,i=e.threads??B,a=e.archivedThreads??B,o=n.threadId??V,s=n.threads??B,c=n.archivedThreads??B;!t&&o===r&&s===i&&c===a||((s!==i||c!==a||o!==r)&&(this._threadData={...At,...Object.fromEntries(e.threads?.map(e=>[e.id,{...e,remoteId:e.remoteId,externalId:e.externalId,status:`regular`}])??[]),...Object.fromEntries(e.archivedThreads?.map(e=>[e.id,{...e,remoteId:e.remoteId,externalId:e.externalId,status:`archived`}])??[])}),s!==i&&(this._threads=this.adapter.threads?.map(e=>e.id)??B),c!==a&&(this._archivedThreads=this.adapter.archivedThreads?.map(e=>e.id)??B),(t||o!==r)&&(this._mainThreadId=r,this._mainThread=this.threadFactory()),this._threadData[this._mainThreadId]||(this._threadData={...this._threadData,[this._mainThreadId]:{id:this._mainThreadId,remoteId:void 0,externalId:void 0,status:`regular`}}),this._notifySubscribers())}async switchToThread(e){if(this._mainThreadId===e)return;let t=this.adapter.onSwitchToThread;if(!t)throw Error(`External store adapter does not support switching to thread`);await t(e)}async switchToNewThread(){let e=this.adapter.onSwitchToNewThread;if(!e)throw Error(`External store adapter does not support switching to new thread`);await e()}async rename(e,t){let n=this.adapter.onRename;if(!n)throw Error(`External store adapter does not support renaming`);await n(e,t)}async detach(){}async archive(e){let t=this.adapter.onArchive;if(!t)throw Error(`External store adapter does not support archiving`);await t(e)}async unarchive(e){let t=this.adapter.onUnarchive;if(!t)throw Error(`External store adapter does not support unarchiving`);await t(e)}async delete(e){let t=this.adapter.onDelete;if(!t)throw Error(`External store adapter does not support deleting`);await t(e)}initialize(e){return Promise.resolve({remoteId:e,externalId:void 0})}generateTitle(){throw Error(`Method not implemented.`)}_subscriptions=new Set;subscribe(e){return this._subscriptions.add(e),()=>this._subscriptions.delete(e)}_notifySubscribers(){for(let e of this._subscriptions)e()}},Mt=class{cache=new WeakMap;convertMessages(e,t){return e.map((e,n)=>{let r=t(this.cache.get(e),e,n);return this.cache.set(e,r),r})}},Nt=Object.freeze([]),Pt=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(e[r]!==t[r])return!1;return!0},Ft=(e,t)=>e&&t[t.length-1]?.role!==`assistant`,It=class extends Tt{_assistantOptimisticId=null;_capabilities={switchToBranch:!1,switchBranchDuringRun:!1,edit:!1,reload:!1,cancel:!1,unstable_copy:!1,speech:!1,dictation:!1,voice:!1,attachments:!1,feedback:!1,queue:!1};get capabilities(){return this._capabilities}_messages;isDisabled;isSendDisabled;get isLoading(){return this._store.isLoading??!1}get isRunning(){return this._store.isRunning}_getBaseMessages(){return this._messages}get state(){return this._store.state??super.state}get adapters(){return this._store.adapters}suggestions=[];extras=void 0;_converter=new Mt;_store;beginEdit(e){if(!this._store.onEdit)throw Error(`Runtime does not support editing.`);super.beginEdit(e)}constructor(e,t){super(e),this.__internal_setAdapter(t)}__internal_setAdapter(e){if(this._store===e)return;let t=e.isRunning??!1;this.isDisabled=e.isDisabled??!1,this.isSendDisabled=e.isSendDisabled??!1;let n=this._store;this._store=e,this.extras!==e.extras&&(this.extras=e.extras);let r=e.suggestions??Nt;Pt(this.suggestions,r)||(this.suggestions=r);let i={switchToBranch:this._store.setMessages!==void 0,switchBranchDuringRun:!1,edit:this._store.onEdit!==void 0,reload:this._store.onReload!==void 0,cancel:this._store.onCancel!==void 0,speech:this._store.adapters?.speech!==void 0,dictation:this._store.adapters?.dictation!==void 0,voice:this._store.adapters?.voice!==void 0,unstable_copy:this._store.unstable_capabilities?.copy!==!1,attachments:!!this._store.adapters?.attachments,feedback:!!this._store.adapters?.feedback,queue:!1};Pt(this._capabilities,i)||(this._capabilities=i);let a;if(e.messageRepository){if(n&&n.isRunning===e.isRunning&&n.messageRepository===e.messageRepository){this._notifySubscribers();return}this.repository.clear(),this._assistantOptimisticId=null,this.repository.import(e.messageRepository),a=this.repository.getMessages()}else if(e.messages){if(n){if(n.convertMessage!==e.convertMessage)this._converter=new Mt;else if(n.isRunning===e.isRunning&&n.messages===e.messages){this._notifySubscribers();return}}a=e.convertMessage?this._converter.convertMessages(e.messages,(n,r,i)=>{if(!e.convertMessage)return r;let a=Se(i===(e.messages?.length??0)-1,t,!1,!1,void 0);if(n&&(n.role!==`assistant`||!te(n.status)||n.status===a))return n;let o=se(e.convertMessage(r,i),i.toString(),a);return le(o,r),o}):e.messages;for(let e=0;e<a.length;e++){let t=a[e],n=a[e-1];this.repository.addOrUpdateMessage(n?.id??null,t)}}else throw Error(`ExternalStoreAdapter must provide either 'messages' or 'messageRepository'`);a.length>0&&this.ensureInitialized(),(n?.isRunning??!1)!==(e.isRunning??!1)&&(e.isRunning?this._notifyEventSubscribers(`runStart`,{}):this._notifyEventSubscribers(`runEnd`,{})),this._assistantOptimisticId&&=(this.repository.deleteMessage(this._assistantOptimisticId),null),Ft(t,a)&&(this._assistantOptimisticId=this.repository.appendOptimisticMessage(a.at(-1)?.id??null,{role:`assistant`,content:[]})),this.repository.resetHead(this._assistantOptimisticId??a.at(-1)?.id??null),this._messages=this.repository.getMessages(),this._notifySubscribers()}switchToBranch(e){if(!this._store.setMessages)throw Error(`Runtime does not support switching branches.`);this._store.isRunning||(this.repository.switchToBranch(e),this.updateMessages(this.repository.getMessages()))}async append(e){if(e.parentId!==(this.messages.at(-1)?.id??null)){if(!this._store.onEdit)throw Error(`Runtime does not support editing messages.`);await this._store.onEdit(e)}else await this._store.onNew(e)}async startRun(e){if(!this._store.onReload)throw Error(`Runtime does not support reloading messages.`);await this._store.onReload(e.parentId,e)}async resumeRun(e){if(!this._store.onResume)throw Error(`Runtime does not support resuming runs.`);await this._store.onResume(e)}exportExternalState(){if(!this._store.onExportExternalState)throw Error(`Runtime does not support exporting external states.`);return this._store.onExportExternalState()}importExternalState(e){if(!this._store.onLoadExternalState)throw Error(`Runtime does not support importing external states.`);this._store.onLoadExternalState(e)}cancelRun(){if(!this._store.onCancel)throw Error(`Runtime does not support cancelling runs.`);this._store.onCancel(),this._assistantOptimisticId&&=(this.repository.deleteMessage(this._assistantOptimisticId),null);let e=this.repository.getMessages(),t=e[e.length-1];t?.role===`user`&&t.id===e.at(-1)?.id?(this.repository.deleteMessage(t.id),this.composer.text.trim()||this.composer.setText(j(t)),e=this.repository.getMessages()):this._notifySubscribers(),setTimeout(()=>{this.updateMessages(e)},0)}addToolResult(e){if(!this._store.onAddToolResult&&!this._store.onAddToolResult)throw Error(`Runtime does not support tool results.`);this._store.onAddToolResult?.(e)}resumeToolCall(e){if(!this._store.onResumeToolCall)throw Error(`Runtime does not support resuming tool calls.`);this._store.onResumeToolCall(e)}reset(e){let t=new Ce;t.import(xe.fromArray(e??[])),this.updateMessages(t.getMessages())}import(e){this._assistantOptimisticId=null,super.import(e),this._store.onImport&&this._store.onImport(this.repository.getMessages())}updateMessages=e=>{this._store.convertMessage===void 0?this._store.setMessages?.(e):this._store.setMessages?.(e.flatMap(ge))}},Lt=e=>e.adapters?.threadList??{},Rt=class extends ne{threads;constructor(e){super(),this.threads=new jt(Lt(e),()=>new It(this._contextProvider,e))}setAdapter(e){this.threads.__internal_setAdapter(Lt(e)),this.threads.getMainThreadRuntimeCore().__internal_setAdapter(e)}},zt=e=>{let[t]=(0,F.useState)(()=>new Rt(e));(0,F.useEffect)(()=>{t.setAdapter(e)});let{modelContext:n}=pe()??{};return(0,F.useEffect)(()=>{if(n)return t.registerModelContextProvider(n)},[n,t]),(0,F.useMemo)(()=>new be(t),[t])},Bt=e=>e._core?.RenderComponent,Vt=(0,F.memo)(({runtime:e,aui:t=null,children:n})=>{let r=w({threads:Et(e)},{parent:t}),i=Bt(e);return(0,R.jsxs)(p,{value:r,children:[i&&(0,R.jsx)(i,{}),n]})}),Ht=(e,t)=>e.Message===t.Message&&e.EditComposer===t.EditComposer&&e.UserEditComposer===t.UserEditComposer&&e.AssistantEditComposer===t.AssistantEditComposer&&e.SystemEditComposer===t.SystemEditComposer&&e.UserMessage===t.UserMessage&&e.AssistantMessage===t.AssistantMessage&&e.SystemMessage===t.SystemMessage,Ut=()=>null,Wt=(e,t,n)=>{switch(t){case`user`:return n?e.UserEditComposer??e.EditComposer??e.UserMessage??e.Message:e.UserMessage??e.Message;case`assistant`:return n?e.AssistantEditComposer??e.EditComposer??e.AssistantMessage??e.Message:e.AssistantMessage??e.Message;case`system`:return n?e.SystemEditComposer??e.EditComposer??e.SystemMessage??e.Message:e.SystemMessage??e.Message??Ut;default:throw Error(`Unknown message role: ${t}`)}},Gt=({components:e})=>(0,R.jsx)(Wt(e,C(e=>e.message.role),C(e=>e.message.composer.isEditing)),{}),Kt=(0,F.memo)(({index:e,components:t})=>(0,R.jsx)(yt,{index:e,children:(0,R.jsx)(Gt,{components:t})}),(e,t)=>e.index===t.index&&Ht(e.components,t.components));Kt.displayName=`ThreadPrimitive.MessageByIndex`;var qt=({children:e})=>{let t=C(e=>e.thread.messages.length);return(0,F.useMemo)(()=>t===0?null:Array.from({length:t},(t,n)=>(0,R.jsx)(yt,{index:n,children:(0,R.jsx)(qe,{getItemState:e=>e.thread().message({index:n}).getState(),children:t=>e({get message(){return t()}})})},n)),[t,e])},Jt=({components:e,children:t})=>e?(0,R.jsx)(qt,{children:()=>(0,R.jsx)(Gt,{components:e})}):(0,R.jsx)(qt,{children:t});Jt.displayName=`ThreadPrimitive.Messages`;var Yt=(0,F.memo)(Jt,(e,t)=>e.children||t.children?e.children===t.children:Ht(e.components,t.components)),Xt=e=>{let t=e.message.metadata;if(!(!t||typeof t!=`object`))return t.custom?.quote},Zt=`ui://`,Qt=e=>!!e?.startsWith(Zt),$t=e=>Symbol.iterator in e,en=e=>`entries`in e,tn=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},nn=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function rn(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:$t(e)&&$t(t)?en(e)&&en(t)?tn(e,t):nn(e,t):tn({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function an(e){let t=F.useRef(void 0);return n=>{let r=e(n);return rn(t.current,r)?t.current:t.current=r}}var on=e=>{let t=-1;return{startGroup:e=>{t===-1&&(t=e)},endGroup:(n,r)=>{t!==-1&&(r.push({type:e,startIndex:t,endIndex:n}),t=-1)},finalize:(n,r)=>{t!==-1&&r.push({type:e,startIndex:t,endIndex:n})}}},sn=(e,t)=>{let n=[];if(t){let t=on(`chainOfThoughtGroup`);for(let r=0;r<e.length;r++){let i=e[r];i===`tool-call`||i===`reasoning`?t.startGroup(r):(t.endGroup(r-1,n),n.push({type:`single`,index:r}))}t.finalize(e.length-1,n)}else{let t=on(`toolGroup`),r=on(`reasoningGroup`);for(let i=0;i<e.length;i++){let a=e[i];a===`tool-call`?(r.endGroup(i-1,n),t.startGroup(i)):a===`reasoning`?(t.endGroup(i-1,n),r.startGroup(i)):(t.endGroup(i-1,n),r.endGroup(i-1,n),n.push({type:`single`,index:i}))}t.finalize(e.length-1,n),r.finalize(e.length-1,n)}return n},cn=e=>{let t=C(an(e=>e.message.parts.map(e=>e.type)));return(0,F.useMemo)(()=>t.length===0?[]:sn(t,e),[t,e])},ln=({Fallback:e,...t})=>{let n=C(n=>{let r=n.tools.tools[t.toolName]??e;return Array.isArray(r)?r[0]??e:r});return n?(0,R.jsx)(n,{...t}):null},un=(e,t,n)=>e.renderers[t]?.[0]||(e.fallbacks[0]??n),dn=({Fallback:e,...t})=>{let n=C(n=>un(n.dataRenderers,t.name,e));return n?(0,R.jsx)(n,{...t}):null},H={Text:()=>null,Reasoning:()=>null,Source:()=>null,Image:()=>null,File:()=>null,Unstable_Audio:()=>null,ToolGroup:({children:e})=>e,ReasoningGroup:({children:e})=>e},fn=({components:{Text:e=H.Text,Reasoning:t=H.Reasoning,Image:n=H.Image,Source:r=H.Source,File:i=H.File,Unstable_Audio:a=H.Unstable_Audio,tools:o={},data:s}={}})=>{let c=w(),l=C(e=>e.part),u=l.type;if(u===`tool-call`){let e=c.part().addToolResult,t=c.part().resumeToolCall;if(`Override`in o)return(0,R.jsx)(o.Override,{...l,addResult:e,resume:t});let n=o.by_name?.[l.toolName]??o.Fallback;return(0,R.jsx)(ln,{...l,Fallback:n,addResult:e,resume:t})}if(l.status?.type===`requires-action`)throw Error(`Encountered unexpected requires-action status`);switch(u){case`text`:return(0,R.jsx)(e,{...l});case`reasoning`:return(0,R.jsx)(t,{...l});case`source`:return(0,R.jsx)(r,{...l});case`image`:return(0,R.jsx)(n,{...l});case`file`:return(0,R.jsx)(i,{...l});case`audio`:return(0,R.jsx)(a,{...l});case`data`:{let e=s?.by_name?.[l.name]??s?.Fallback;return(0,R.jsx)(dn,{...l,Fallback:e})}default:return console.warn(`Unknown message part type: ${u}`),null}},U=(0,F.memo)(({index:e,components:t})=>(0,R.jsx)(bt,{index:e,children:(0,R.jsx)(fn,{components:t})}),(e,t)=>e.index===t.index&&e.components?.Text===t.components?.Text&&e.components?.Reasoning===t.components?.Reasoning&&e.components?.Source===t.components?.Source&&e.components?.Image===t.components?.Image&&e.components?.File===t.components?.File&&e.components?.Unstable_Audio===t.components?.Unstable_Audio&&e.components?.tools===t.components?.tools&&e.components?.data===t.components?.data&&e.components?.ToolGroup===t.components?.ToolGroup&&e.components?.ReasoningGroup===t.components?.ReasoningGroup);U.displayName=`MessagePrimitive.PartByIndex`;var pn=({status:e,component:t})=>(0,R.jsx)(St,{text:``,isRunning:e.type===`running`,children:(0,R.jsx)(t,{type:`text`,text:``,status:e})}),mn=Object.freeze({type:`complete`}),hn=Object.freeze({type:`running`}),gn=(0,F.memo)(({components:e})=>{let t=C(e=>e.message.status??mn);return e?.Empty?(0,R.jsx)(e.Empty,{status:t}):t.type===`running`?(0,R.jsx)(pn,{status:t,component:e?.Text??H.Text}):null},(e,t)=>e.components?.Empty===t.components?.Empty&&e.components?.Text===t.components?.Text),_n=(0,F.memo)(({components:e,enabled:t})=>C(e=>{if(!t||e.message.parts.length===0)return!1;let n=e.message.parts[e.message.parts.length-1];return n?.type!==`text`&&n?.type!==`reasoning`})?(0,R.jsx)(gn,{components:e}):null,(e,t)=>e.enabled===t.enabled&&e.components?.Empty===t.components?.Empty&&e.components?.Text===t.components?.Text),vn=(0,F.memo)(({Quote:e})=>{let t=C(Xt);return t?(0,R.jsx)(e,{text:t.text,messageId:t.messageId}):null});function yn(e,t){let n=e.tools[t.toolName];return(Array.isArray(n)?n[0]??null:n??null)||(Qt(t.mcp?.app?.resourceUri)&&e.mcpApp?e.mcpApp.render:null)}var bn=()=>{let e=w(),t=C(e=>e.part),n=C(e=>e.part.type===`tool-call`?yn(e.tools,e.part):null);return!n||t.type!==`tool-call`?null:(0,R.jsx)(n,{...t,addResult:e.part().addToolResult,resume:e.part().resumeToolCall})},xn=()=>{let e=C(e=>e.part),t=C(e=>e.part.type===`data`?un(e.dataRenderers,e.part.name,void 0)??null:null);return!t||e.type!==`data`?null:(0,R.jsx)(t,{...e})},Sn=()=>{let e=C(e=>e.part.type);return e===`tool-call`?(0,R.jsx)(bn,{}):e===`data`?(0,R.jsx)(xn,{}):null},Cn=Object.freeze({type:`text`,text:``,status:hn}),wn=({index:e,children:t})=>{let n=w(),r=C(e=>e.dataRenderers);return(0,R.jsx)(bt,{index:e,children:(0,R.jsx)(qe,{getItemState:t=>t.message().part({index:e}).getState(),children:i=>t({get part(){let t=i();if(t.type===`tool-call`){let r=yn(n.tools().getState(),t)!==null,i=n.message().part({index:e});return{...t,toolUI:r?(0,R.jsx)(bn,{}):null,addResult:i.addToolResult,resume:i.resumeToolCall}}if(t.type===`data`){let e=un(r,t.name,void 0)!==void 0;return{...t,dataRendererUI:e?(0,R.jsx)(xn,{}):null}}return t}})})})},Tn=({children:e})=>{let t=C(e=>e.message.parts.length),n=C(e=>(e.message.status?.type??`complete`)===`running`);return t===0?t===0&&n?(0,R.jsx)(St,{text:``,isRunning:!0,children:e({part:Cn})}):null:(0,R.jsx)(R.Fragment,{children:Array.from({length:t},(t,n)=>(0,R.jsx)(wn,{index:n,children:t=>e(t)??(0,R.jsx)(Sn,{})},n))})},En=({components:e,unstable_showEmptyOnNonTextEnd:t=!0,children:n})=>n?(0,R.jsx)(Tn,{children:n}):(0,R.jsx)(Dn,{components:e,unstable_showEmptyOnNonTextEnd:t});En.displayName=`MessagePrimitive.Parts`;var Dn=({components:e,unstable_showEmptyOnNonTextEnd:t})=>{let n=C(e=>e.message.parts.length),r=cn(!!e?.ChainOfThought),i=(0,F.useMemo)(()=>n===0?(0,R.jsx)(gn,{components:e}):r.map(t=>{if(t.type===`single`)return(0,R.jsx)(U,{index:t.index,components:e},t.index);if(t.type===`chainOfThoughtGroup`){let n=e?.ChainOfThought;return n?(0,R.jsx)(Ct,{startIndex:t.startIndex,endIndex:t.endIndex,children:(0,R.jsx)(n,{})},`chainOfThought-${t.startIndex}`):null}else if(t.type===`toolGroup`)return(0,R.jsx)(e?.ToolGroup??H.ToolGroup,{startIndex:t.startIndex,endIndex:t.endIndex,children:Array.from({length:t.endIndex-t.startIndex+1},(n,r)=>(0,R.jsx)(U,{index:t.startIndex+r,components:e},r))},`tool-${t.startIndex}`);else return(0,R.jsx)(e?.ReasoningGroup??H.ReasoningGroup,{startIndex:t.startIndex,endIndex:t.endIndex,children:Array.from({length:t.endIndex-t.startIndex+1},(n,r)=>(0,R.jsx)(U,{index:t.startIndex+r,components:e},r))},`reasoning-${t.startIndex}`)}),[r,e,n]);return(0,R.jsxs)(R.Fragment,{children:[e?.Quote&&(0,R.jsx)(vn,{Quote:e.Quote}),i,(0,R.jsx)(_n,{components:e,enabled:t})]})},On=(e,t)=>{switch(t.type){case`image`:return e?.Image??e?.Attachment;case`document`:return e?.Document??e?.Attachment;case`file`:return e?.File??e?.Attachment;default:return e?.Attachment}},kn=({components:e})=>{let t=C(e=>e.attachment);if(!t)return null;let n=On(e,t);return n?(0,R.jsx)(n,{}):null},An=(0,F.memo)(({index:e,components:t})=>(0,R.jsx)(it,{index:e,children:(0,R.jsx)(kn,{components:t})}),(e,t)=>e.index===t.index&&e.components?.Image===t.components?.Image&&e.components?.Document===t.components?.Document&&e.components?.File===t.components?.File&&e.components?.Attachment===t.components?.Attachment);An.displayName=`ComposerPrimitive.AttachmentByIndex`;var jn=({children:e})=>{let t=C(e=>e.composer.attachments.length);return(0,F.useMemo)(()=>Array.from({length:t},(t,n)=>(0,R.jsx)(it,{index:n,children:(0,R.jsx)(qe,{getItemState:e=>e.composer().attachment({index:n}).getState(),children:t=>e({get attachment(){return t()}})})},n)),[t,e])},Mn=({components:e,children:t})=>e?(0,R.jsx)(jn,{children:({attachment:t})=>{let n=On(e,t);return n?(0,R.jsx)(n,{}):null}}):(0,R.jsx)(jn,{children:t});Mn.displayName=`ComposerPrimitive.Attachments`;var Nn=()=>{let e=w(),t=C(e=>!e.composer.canSend||e.thread.isRunning&&!e.thread.capabilities.queue);return{send:(0,F.useCallback)(t=>{e.composer().send(t)},[e]),disabled:t}},Pn=()=>{let e=w(),t=C(e=>!e.composer.isEditing);return{addAttachment:(0,F.useCallback)(t=>e.composer().addAttachment(t),[e]),disabled:t}},Fn=e=>{let t=new Map,n=()=>{let n=0;for(let e of t.values())n+=e;e(n)};return{register:()=>{let e=Symbol();return t.set(e,0),{setHeight:r=>{t.get(e)!==r&&(t.set(e,r),n())},unregister:()=>{t.delete(e),n()}}}}},In=(e={})=>{let t=new Set,n=Fn(e=>{a.setState({height:{...a.getState().height,viewport:e}})}),r=Fn(e=>{a.setState({height:{...a.getState().height,inset:e}})}),i=(e,t)=>(a.setState({element:{...a.getState().element,[e]:t}}),()=>{a.getState().element[e]===t&&a.setState({element:{...a.getState().element,[e]:null}})}),a=S(()=>({isAtBottom:!0,scrollToBottom:({behavior:e=`auto`}={})=>{for(let n of t)n({behavior:e})},onScrollToBottom:e=>(t.add(e),()=>{t.delete(e)}),turnAnchor:e.turnAnchor??`bottom`,topAnchorMessageClamp:{tallerThan:e.topAnchorMessageClamp?.tallerThan??`10em`,visibleHeight:e.topAnchorMessageClamp?.visibleHeight??`6em`},height:{viewport:0,inset:0},element:{viewport:null,anchor:null,target:null},targetConfig:null,topAnchorTurn:null,registerViewport:n.register,registerContentInset:r.register,registerViewportElement:e=>i(`viewport`,e),registerAnchorElement:e=>i(`anchor`,e),registerAnchorTargetElement:(e,t)=>(a.setState({element:{...a.getState().element,target:e},targetConfig:e&&t?t:null}),()=>{a.getState().element.target===e&&a.setState({element:{...a.getState().element,target:null},targetConfig:null})}),setTopAnchorTurn:e=>{a.setState({topAnchorTurn:e})}}));return a};function Ln(e,t){function n(n){let r=(0,F.useContext)(e);if(!n?.optional&&!r)throw Error(`This component must be used within ${t}.`);return r}return n}var Rn=(0,F.createContext)(null),{useThreadViewport:W,useThreadViewportStore:G}=ce(Ln(Rn,`ThreadPrimitive.Viewport`),`useThreadViewport`),zn=e=>{let t=G({optional:!0}),[n]=(0,F.useState)(()=>In(e));return(0,F.useEffect)(()=>t?.getState().onScrollToBottom(()=>{n.getState().scrollToBottom()}),[t,n]),(0,F.useEffect)(()=>{if(t)return n.subscribe(e=>{t.getState().isAtBottom!==e.isAtBottom&&ve(t).setState({isAtBottom:e.isAtBottom})})},[n,t]),n},Bn=({children:e,options:t={}})=>{let n=zn(t),[r]=(0,F.useState)(()=>({useThreadViewport:n}));return(0,R.jsx)(Rn.Provider,{value:r,children:e})},Vn=()=>((0,F.useEffect)(()=>{},[w()]),null),Hn=(0,F.memo)(({children:e,aui:t,runtime:n})=>(0,R.jsxs)(Vt,{runtime:n,aui:t??null,children:[(0,R.jsx)(Vn,{}),(0,R.jsx)(Bn,{children:e})]})),Un=e=>{let t=e;t.__isBound||=(t.__internal_bindMethods?.(),!0)};function Wn(e,t=Gn){Un(e);let n=(0,F.useSyncExternalStore)(e.subscribe,()=>t(e.getState()),()=>t(e.getState()));return(0,F.useDebugValue)(n),n}var Gn=e=>e;function Kn(e){function t(t){let n=!1,r;typeof t==`function`?r=t:t&&(n=!!t.optional,r=t.selector);let i=e({optional:n});return i?Wn(i,r):null}return t}function qn(e){let t=w(),n=C(()=>t.composer.source?t.composer().__internal_getRuntime?.()??null:null);if(!n&&!e?.optional)throw Error(`ComposerRuntime is not available`);return n}function Jn(e){let t=w(),n=C(()=>t.thread.source?t.thread().__internal_getRuntime?.()??null:null);if(!n&&!e?.optional)throw Error(`ThreadRuntime is not available`);return n}var K=Kn(e=>Jn(e)?.composer??null);s();var Yn=Symbol.for(`react.lazy`),q=F.use;function Xn(e){return typeof e==`object`&&!!e&&`then`in e}function Zn(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Yn&&`_payload`in e&&Xn(e._payload)}function Qn(e){let t=$n(e),n=F.forwardRef((e,n)=>{let{children:r,...i}=e;Zn(r)&&typeof q==`function`&&(r=q(r._payload));let a=F.Children.toArray(r),o=a.find(tr);if(o){let e=o.props.children,r=a.map(t=>t===o?F.Children.count(e)>1?F.Children.only(null):F.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:F.isValidElement(e)?F.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function $n(e){let t=F.forwardRef((e,t)=>{let{children:n,...r}=e;if(Zn(n)&&typeof q==`function`&&(n=q(n._payload)),F.isValidElement(n)){let e=rr(n),i=nr(r,n.props);return n.type!==F.Fragment&&(i.ref=t?we(t,e):e),F.cloneElement(n,i)}return F.Children.count(n)>1?F.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var er=Symbol(`radix.slottable`);function tr(e){return F.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===er}function nr(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function rr(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var ir=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=Qn(`Primitive.${t}`),r=F.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,R.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),ar=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`];function or(e){let t=(0,F.forwardRef)(({render:t,asChild:n,children:r,...i},a)=>{let o=e;if(t&&(0,F.isValidElement)(t)){let e=r===void 0?t.props.children:r;return(0,R.jsx)(o,{...i,asChild:!0,ref:a,children:(0,F.cloneElement)(t,void 0,e)})}return(0,R.jsx)(o,{...i,asChild:n,ref:a,children:r})});return t.displayName=typeof e==`string`?e:e.displayName??e.name??`Component`,t}function sr(e){let t=ir[e],n=or(t);return n.displayName=`Primitive.${e}`,n}var J=ar.reduce((e,t)=>(e[t]=sr(t),e),{}),cr=(e,t,n=[])=>{let r=(0,F.forwardRef)((e,r)=>{let i={},a={};Object.keys(e).forEach(t=>{n.includes(t)?i[t]=e[t]:a[t]=e[t]});let o=t(i)??void 0;return(0,R.jsx)(J.button,{...a,type:`button`,ref:r,disabled:a.disabled||!o,onClick:N(a.onClick,o)})});return r.displayName=e,r},lr=(0,F.forwardRef)((e,t)=>(0,R.jsx)(J.div,{...e,ref:t}));lr.displayName=`AttachmentPrimitive.Root`;var ur=()=>(0,R.jsx)(R.Fragment,{children:C(e=>e.attachment.name)});ur.displayName=`AttachmentPrimitive.Name`;var dr=cr(`AttachmentPrimitive.Remove`,()=>{let e=w();return(0,F.useCallback)(()=>{e.attachment().remove()},[e])}),fr=()=>{let{disabled:e,send:t}=Nn(),n=(0,F.useCallback)(()=>t(),[t]);return e?null:n};cr(`ComposerPrimitive.Send`,fr);var pr=(0,F.forwardRef)(({onSubmit:e,...t},n)=>{let r=fr(),i=e=>{e.preventDefault(),r&&r()};return(0,R.jsx)(J.form,{...t,ref:n,onSubmit:N(e,i)})});pr.displayName=`ComposerPrimitive.Root`;function mr(){return mr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},mr.apply(null,arguments)}function hr(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var gr=F.useLayoutEffect,_r=function(e){var t=F.useRef(e);return gr(function(){t.current=e}),t},vr=function(e,t){if(typeof e==`function`){e(t);return}e.current=t},yr=function(e,t){var n=F.useRef();return F.useCallback(function(r){e.current=r,n.current&&vr(n.current,null),n.current=t,t&&vr(t,r)},[t])},br={"min-height":`0`,"max-height":`none`,height:`0`,visibility:`hidden`,overflow:`hidden`,position:`absolute`,"z-index":`-1000`,top:`0`,right:`0`,display:`block`},xr=function(e){Object.keys(br).forEach(function(t){e.style.setProperty(t,br[t],`important`)})},Y=null,Sr=function(e,t){var n=e.scrollHeight;return t.sizingStyle.boxSizing===`border-box`?n+t.borderSize:n-t.paddingSize};function Cr(e,t,n,r){n===void 0&&(n=1),r===void 0&&(r=1/0),Y||(Y=document.createElement(`textarea`),Y.setAttribute(`tabindex`,`-1`),Y.setAttribute(`aria-hidden`,`true`),xr(Y)),Y.parentNode===null&&document.body.appendChild(Y);var i=e.paddingSize,a=e.borderSize,o=e.sizingStyle,s=o.boxSizing;Object.keys(o).forEach(function(e){var t=e;Y.style[t]=o[t]}),xr(Y),Y.value=t;var c=Sr(Y,e);Y.value=t,c=Sr(Y,e),Y.value=`x`;var l=Y.scrollHeight-i,u=l*n;s===`border-box`&&(u=u+i+a),c=Math.max(u,c);var d=l*r;return s===`border-box`&&(d=d+i+a),c=Math.min(d,c),[c,l]}var wr=function(){},Tr=function(e,t){return e.reduce(function(e,n){return e[n]=t[n],e},{})},Er=[`borderBottomWidth`,`borderLeftWidth`,`borderRightWidth`,`borderTopWidth`,`boxSizing`,`fontFamily`,`fontSize`,`fontStyle`,`fontWeight`,`letterSpacing`,`lineHeight`,`paddingBottom`,`paddingLeft`,`paddingRight`,`paddingTop`,`tabSize`,`textIndent`,`textRendering`,`textTransform`,`width`,`wordBreak`,`wordSpacing`,`scrollbarGutter`],Dr=!!document.documentElement.currentStyle,Or=function(e){var t=window.getComputedStyle(e);if(t===null)return null;var n=Tr(Er,t),r=n.boxSizing;return r===``?null:(Dr&&r===`border-box`&&(n.width=parseFloat(n.width)+parseFloat(n.borderRightWidth)+parseFloat(n.borderLeftWidth)+parseFloat(n.paddingRight)+parseFloat(n.paddingLeft)+`px`),{sizingStyle:n,paddingSize:parseFloat(n.paddingBottom)+parseFloat(n.paddingTop),borderSize:parseFloat(n.borderBottomWidth)+parseFloat(n.borderTopWidth)})};function kr(e,t,n){var r=_r(n);F.useLayoutEffect(function(){var n=function(e){return r.current(e)};if(e)return e.addEventListener(t,n),function(){return e.removeEventListener(t,n)}},[])}var Ar=function(e,t){kr(document.body,`reset`,function(n){e.current.form===n.target&&t(n)})},jr=function(e){kr(window,`resize`,e)},Mr=function(e){kr(document.fonts,`loadingdone`,e)},Nr=[`cacheMeasurements`,`maxRows`,`minRows`,`onChange`,`onHeightChange`],Pr=F.forwardRef(function(e,t){var n=e.cacheMeasurements,r=e.maxRows,i=e.minRows,a=e.onChange,o=a===void 0?wr:a,s=e.onHeightChange,c=s===void 0?wr:s,l=hr(e,Nr),u=l.value!==void 0,d=F.useRef(null),f=yr(d,t),p=F.useRef(0),m=F.useRef(),h=function(){var e=d.current,t=n&&m.current?m.current:Or(e);if(t){m.current=t;var a=Cr(t,e.value||e.placeholder||`x`,i,r),o=a[0],s=a[1];p.current!==o&&(p.current=o,e.style.setProperty(`height`,o+`px`,`important`),c(o,{rowHeight:s}))}};return F.useLayoutEffect(h),Ar(d,function(){if(!u){var e=d.current.value;requestAnimationFrame(function(){var t=d.current;t&&e!==t.value&&h()})}}),jr(h),Mr(h),F.createElement(`textarea`,mr({},l,{onChange:function(e){u||h(),o(e)},ref:f}))}),Fr=e=>{let t=Ae(e),n=W(e=>e.onScrollToBottom);(0,F.useEffect)(()=>n(t),[n,t])},Ir=(0,F.createContext)(null),Lr=(0,F.createContext)(null),Rr=()=>(0,F.useContext)(Ir),zr=()=>()=>{},Br=()=>null,Vr=()=>{let e=Rr();return(0,F.useSyncExternalStore)(e?e.subscribeAria:zr,e?e.getActiveAria:Br,e?e.getActiveAria:Br)};function Hr(){let e=(0,F.useRef)(new Set);return{notify:(0,F.useCallback)(()=>{for(let t of e.current)t()},[]),subscribe:(0,F.useCallback)(t=>(e.current.add(t),()=>{e.current.delete(t)}),[])}}var Ur=({children:e})=>{let t=(0,F.useRef)(new Map),n=(0,F.useRef)(new Set),{notify:r,subscribe:i}=Hr(),a=(0,F.useCallback)(e=>{let{char:i}=e;if(t.current.has(i))return()=>{};let a=new Map(t.current);a.set(i,e),t.current=a,r();for(let t of n.current)t.added(e);return()=>{let e=new Map(t.current);e.delete(i),t.current=e,r();for(let e of n.current)e.removed(i)}},[r]),o=(0,F.useCallback)(()=>t.current,[]),s=(0,F.useCallback)(e=>(n.current.add(e),()=>{n.current.delete(e)}),[]),c=(0,F.useRef)(null),l=(0,F.useRef)(null),{notify:u,subscribe:d}=Hr(),f=(0,F.useCallback)((e,t)=>{if(t===null){if(l.current!==e)return;c.current=null,l.current=null,u();return}let n=c.current;l.current===e&&n!==null&&n.popoverId===t.popoverId&&n.highlightedItemId===t.highlightedItemId||(c.current=t,l.current=e,u())},[u]),p=(0,F.useCallback)(()=>c.current,[]),m=(0,F.useMemo)(()=>({register:a,getTriggers:o,subscribe:i,subscribeLifecycle:s,getActiveAria:p,subscribeAria:d}),[a,o,i,s,p,d]),h=(0,F.useMemo)(()=>({setActiveAria:f}),[f]);return(0,R.jsx)(Ir.Provider,{value:m,children:(0,R.jsx)(Lr.Provider,{value:h,children:e})})},Wr=({children:e})=>he()?(0,R.jsx)(Ur,{children:e}):(0,R.jsx)(oe,{children:(0,R.jsx)(Ur,{children:e})});Wr.displayName=`ComposerPrimitive.TriggerPopoverRoot`;var Gr=(0,F.forwardRef)(({autoFocus:e=!1,asChild:t,render:n,disabled:r,onChange:i,onKeyDown:a,onPaste:o,onSelect:s,submitOnEnter:c,submitMode:l,cancelOnEscape:u=!0,unstable_focusOnRunStart:d=!0,unstable_focusOnScrollToBottom:f=!0,unstable_focusOnThreadSwitched:p=!0,addAttachmentOnPaste:m=!0,...h},ee)=>{let g=w(),_=he(),v=Vr(),y=l??(c===!1?`none`:`enter`),b=C(e=>e.composer.isEditing?e.composer.text:``),x=C(e=>e.thread.isDisabled||e.composer.dictation?.inputDisabled)||r,S=(0,F.useRef)(null),T=P(ee,S),E=(0,F.useRef)(!1);Oe(e=>{if(!S.current?.contains(e.target))return;if(_){for(let t of _.getPlugins())if(t.handleKeyDown(e))return}if(!u)return;let t=g.composer();t.getState().canCancel&&(t.cancel(),e.preventDefault())});let te=e=>{if(!x&&!e.nativeEvent.isComposing){if(_){for(let t of _.getPlugins())if(t.handleKeyDown(e))return}if(e.key===`Enter`){let t=g.thread().getState(),n=t.capabilities.queue;if(e.shiftKey&&(e.ctrlKey||e.metaKey)&&n&&y!==`none`&&g.composer().getState().canSend){e.preventDefault(),g.composer().send({steer:!0});return}if(e.shiftKey||t.isRunning&&!n)return;let r=!1;y===`ctrlEnter`?r=e.ctrlKey||e.metaKey:y===`enter`&&(r=!0),r&&(e.preventDefault(),S.current?.closest(`form`)?.requestSubmit())}}},ne=async e=>{if(!m)return;let t=g.thread().getState().capabilities,n=Array.from(e.clipboardData?.files||[]);if(t.attachments&&n.length>0)try{e.preventDefault(),await Promise.all(n.map(e=>g.composer().addAttachment(e)))}catch(e){console.error(`Error adding attachment:`,e)}},re=e&&!x,D=(0,F.useCallback)(()=>{let e=S.current;!e||!re||(e.focus({preventScroll:!0}),e.setSelectionRange(e.value.length,e.value.length))},[re]);(0,F.useEffect)(()=>D(),[D]),Fr(()=>{g.composer().getState().type===`thread`&&f&&D()}),(0,F.useEffect)(()=>{if(!(g.composer().getState().type!==`thread`||!d))return g.on(`thread.runStart`,D)},[d,D,g]),(0,F.useEffect)(()=>{if(!(g.composer().getState().type!==`thread`||!p))return g.on(`threadListItem.switchedTo`,D)},[p,D,g]);let O=v?{"aria-controls":v.popoverId,"aria-expanded":!0,"aria-haspopup":`listbox`,"aria-activedescendant":v.highlightedItemId}:{},k={name:`input`,value:b,...h,...O,ref:T,disabled:x,onChange:N(i,e=>{if(!g.composer().getState().isEditing)return;let t=e.nativeEvent.isComposing===!0;E.current&&!t&&(E.current=!1);let n=t||E.current;if(ie(()=>{g.composer().setText(e.target.value)}),n)return;let r=e.target.selectionStart??e.target.value.length;if(_)for(let e of _.getPlugins())e.setCursorPosition(r)}),onKeyDown:N(a,te),onCompositionStart:N(h.onCompositionStart,()=>{E.current=!0}),onCompositionEnd:N(h.onCompositionEnd,e=>{if(E.current=!1,!g.composer().getState().isEditing)return;let t=e.target;ie(()=>{g.composer().setText(t.value)});let n=t.selectionStart??t.value.length;if(_)for(let e of _.getPlugins())e.setCursorPosition(n)}),onSelect:N(s,e=>{if(E.current)return;let t=e.target,n=t.selectionStart??t.value.length;if(_)for(let e of _.getPlugins())e.setCursorPosition(n)}),onPaste:N(o,ne)};if(n&&(0,F.isValidElement)(n)){let e=h.children===void 0?n.props.children:h.children;return(0,R.jsx)(ke,{...k,children:(0,F.cloneElement)(n,void 0,e)})}return(0,R.jsx)(t?ke:Pr,{...k})});Gr.displayName=`ComposerPrimitive.Input`;var Kr=cr(`ComposerPrimitive.AddAttachment`,({multiple:e=!0}={})=>{let{disabled:t,addAttachment:n}=Pn(),r=w(),i=(0,F.useCallback)(()=>{let t=document.createElement(`input`);t.type=`file`,t.multiple=e,t.hidden=!0;let i=r.composer().getState().attachmentAccept;i!==`*`&&(t.accept=i),document.body.appendChild(t),t.onchange=e=>{let r=e.target.files;if(r){for(let e of r)n(e);document.body.removeChild(t)}},t.oncancel=()=>{(!t.files||t.files.length===0)&&document.body.removeChild(t)},t.click()},[r,e,n]);return t?null:i},[`multiple`]),qr=(0,F.forwardRef)(({smooth:e=!0,component:t=`span`,...n},r)=>{let{text:i,status:a}=ye(fe(),e);return(0,R.jsx)(t,{"data-status":a.type,...n,ref:r,children:i})});qr.displayName=`MessagePartPrimitive.Text`;var Jr=()=>C(e=>{if(e.part.type!==`image`)throw Error(`MessagePartImage can only be used inside image message parts.`);return e.part}),Yr=(0,F.forwardRef)((e,t)=>{let{image:n}=Jr();return(0,R.jsx)(J.img,{src:n,...e,ref:t})});Yr.displayName=`MessagePartPrimitive.Image`;var Xr=({children:e})=>C(e=>e.part.status.type===`running`)?e:null;Xr.displayName=`MessagePartPrimitive.InProgress`;var X=e=>{let t=(0,F.useRef)(void 0);return(0,F.useCallback)(n=>{t.current&&=(t.current(),void 0),n&&(t.current=e(n))},[e])},Zr=(e,t)=>{let n=e.trim().match(/^(\d+(?:\.\d+)?|\.\d+)(em|px|rem)$/);if(!n)return 1/0;let r=Number(n[1]),i=n[2];return i===`px`?r:i===`em`?r*(parseFloat(getComputedStyle(t).fontSize)||16):i===`rem`?r*(parseFloat(getComputedStyle(document.documentElement).fontSize)||16):1/0},Qr=e=>e.dataset.messageId,$r=()=>{let e=document.createElement(`div`);return e.dataset.auiTopAnchorReserve=``,e.style.height=`0px`,e.style.flexShrink=`0`,e.style.pointerEvents=`none`,e.setAttribute(`aria-hidden`,`true`),e},ei=(e,t)=>{let n=`${t}px`;return e.style.height===n?!1:(e.style.height=n,!0)},ti=e=>{let t=window.devicePixelRatio||1;return Math.round(e*t)/t},ni=()=>{let e=w(),t=C(()=>e.message());return X((0,F.useCallback)(e=>{let n=()=>{t.setIsHovering(!0)},r=()=>{t.setIsHovering(!1)};return e.addEventListener(`mouseenter`,n),e.addEventListener(`mouseleave`,r),e.matches(`:hover`)&&queueMicrotask(()=>t.setIsHovering(!0)),()=>{e.removeEventListener(`mouseenter`,n),e.removeEventListener(`mouseleave`,r),t.setIsHovering(!1)}},[t]))},ri=()=>{let e=W(e=>e.topAnchorTurn?.anchorId);return C(t=>t.message.role===`user`&&t.message.index>0&&t.message.index===t.thread.messages.length-2&&t.thread.messages.at(-1)?.role===`assistant`&&(t.message.id===e||t.thread.isRunning))},ii=()=>{let e=W(e=>e.topAnchorTurn?.targetId);return C(t=>t.message.isLast&&t.message.role===`assistant`&&t.message.index>=1&&t.thread.messages.at(t.message.index-1)?.role===`user`&&(t.message.id===e||t.thread.isRunning))},ai=(e,t)=>X((0,F.useCallback)(n=>{if(e)return t.getState().registerAnchorElement(n)},[e,t])),oi=({active:e,threadViewportStore:t})=>X((0,F.useCallback)(n=>{if(!e)return;let r=t.getState(),i=r.topAnchorMessageClamp;return r.registerAnchorTargetElement(n,{tallerThan:Zr(i.tallerThan,n),visibleHeight:Zr(i.visibleHeight,n)})},[e,t])),si=({forwardedRef:e,...t})=>{let n=P(e,ni()),r=C(e=>e.message.id);return(0,R.jsx)(J.div,{...t,ref:n,"data-message-id":r})},ci=({forwardedRef:e,threadViewportStore:t,...n})=>{let r=ni(),i=ri(),a=ii(),o=P(e,r,ai(i,t),oi({active:a,threadViewportStore:t})),s=C(e=>e.message.id);return(0,R.jsx)(J.div,{...n,ref:o,"data-message-id":s,"data-aui-top-anchor-user":i?``:void 0,"data-aui-top-anchor-target":a?``:void 0})},li=(0,F.forwardRef)((e,t)=>{let n=G();return n.getState().turnAnchor===`top`?(0,R.jsx)(ci,{...e,forwardedRef:t,threadViewportStore:n}):(0,R.jsx)(si,{...e,forwardedRef:t})});li.displayName=`MessagePrimitive.Root`;var ui={...H,Text:()=>(0,R.jsxs)(`p`,{style:{whiteSpace:`pre-line`},children:[(0,R.jsx)(qr,{}),(0,R.jsx)(Xr,{children:(0,R.jsx)(`span`,{style:{fontFamily:`revert`},children:` ●`})})]}),Image:()=>(0,R.jsx)(Yr,{})},di=e=>{if(`children`in e)return(0,R.jsx)(En,{children:e.children});let{components:t,...n}=e;return(0,R.jsx)(En,{components:t?{Text:t.Text??ui.Text,Image:t.Image??ui.Image,Reasoning:t.Reasoning??H.Reasoning,Source:t.Source??H.Source,File:t.File??H.File,Unstable_Audio:t.Unstable_Audio??H.Unstable_Audio,...`ChainOfThought`in t?{ChainOfThought:t.ChainOfThought}:{tools:t.tools,data:t.data,ToolGroup:t.ToolGroup??H.ToolGroup,ReasoningGroup:t.ReasoningGroup??H.ReasoningGroup},Empty:t.Empty,Quote:t.Quote}:ui,...n})};di.displayName=`MessagePrimitive.Parts`;var fi=(0,F.forwardRef)((e,t)=>(0,R.jsx)(J.div,{...e,ref:t}));fi.displayName=`ThreadPrimitive.Root`;var pi=e=>{let t=Ae(e);return X((0,F.useCallback)(e=>{let n=new ResizeObserver(()=>{t()}),r=new MutationObserver(e=>{e.some(e=>e.type!==`attributes`||e.attributeName!==`style`)&&t()});return n.observe(e),r.observe(e,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),()=>{n.disconnect(),r.disconnect()}},[t]))},mi=({autoScroll:e,scrollToBottomOnRunStart:t=!0,scrollToBottomOnInitialize:n=!0,scrollToBottomOnThreadSwitch:r=!0})=>{let i=(0,F.useRef)(null),a=G();e===void 0&&(e=a.getState().turnAnchor!==`top`);let o=(0,F.useRef)(0),s=(0,F.useRef)(null),c=(0,F.useCallback)(e=>{let t=i.current;t&&(s.current=e,t.scrollTo({top:t.scrollHeight,behavior:e}))},[]),l=(0,F.useCallback)(()=>{let e=a.getState();return e.turnAnchor===`top`&&e.element.viewport===i.current&&e.element.anchor!==null},[a]),u=()=>{let e=i.current;if(!e)return;let t=a.getState().isAtBottom,n=Math.abs(e.scrollHeight-e.scrollTop-e.clientHeight)<1||e.scrollHeight<=e.clientHeight;!n&&o.current<e.scrollTop||(n&&(s.current=null),(n||s.current===null)&&n!==t&&ve(a).setState({isAtBottom:n})),o.current=e.scrollTop},d=pi(()=>{let t=s.current;t&&l()?s.current=null:t?c(t):e&&a.getState().isAtBottom&&c(`instant`),u()}),f=X(e=>(e.addEventListener(`scroll`,u),()=>{e.removeEventListener(`scroll`,u)}));return Fr(({behavior:e})=>{c(e)}),I(`thread.runStart`,()=>{t&&a.getState().turnAnchor!==`top`&&(s.current=`auto`,requestAnimationFrame(()=>{c(`auto`)}))}),I(`thread.initialize`,()=>{n&&(s.current=`instant`,requestAnimationFrame(()=>{c(`instant`)}))}),I(`threadListItem.switchedTo`,()=>{r&&(s.current=`instant`,requestAnimationFrame(()=>{c(`instant`)}))}),P(d,f,i)},hi=(e,t)=>X((0,F.useCallback)(n=>{if(!e)return;let r=e(),i=()=>{let e=t?t(n):n.offsetHeight;r.setHeight(e)},a=new ResizeObserver(i);return a.observe(n),i(),()=>{a.disconnect(),r.unregister()}},[e,t])),gi=e=>{let t=0,n=e;for(;n;)t+=n.offsetTop,n=n.offsetParent;return t},_i=(e,t)=>{let n=0,r=e;for(;r&&r!==t;)n+=r.offsetTop,r=r.offsetParent;return r===t?n:gi(e)-gi(t)},vi=({viewport:e,anchor:t,tallerThan:n,visibleHeight:r})=>{let i=_i(t,e),a=t.offsetHeight;return i+Math.max(0,a-(a<=n?a:r))},yi=({scrollHeight:e,...t})=>{let{viewport:n}=t,r=vi(t)+n.clientHeight;return Math.max(0,r-e)},bi=({viewport:e,reserve:t,...n})=>yi({viewport:e,...n,scrollHeight:e.scrollHeight-t.offsetHeight}),xi=e=>{let t=new ResizeObserver(e),n=new MutationObserver(e),r=null,i=null,a=null,o=()=>{t.disconnect(),n.disconnect(),r=null,i=null,a=null};return{target:(e,s,c)=>{r===e&&i===s&&a===c||(o(),t.observe(e),t.observe(s),t.observe(c),n.observe(c,{childList:!0,subtree:!0,characterData:!0}),r=e,i=s,a=c)},disconnect:o}},Si=e=>{let t=null;return{schedule:()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,e()}))},cancel:()=>{t!==null&&(cancelAnimationFrame(t),t=null)}}},Ci=e=>{let t=null,n;function r(){let r=e.getState(),{viewport:o,anchor:s,target:c}=r.element,l=r.targetConfig;if(r.turnAnchor!==`top`||!o||!s||!c||!l){a.disconnect(),t&&(ei(t,0),t.remove());return}if(t??=$r(),(t.parentElement!==c.parentElement||t.previousElementSibling!==c)&&c.after(t),a.target(o,s,c),ei(t,bi({viewport:o,anchor:s,reserve:t,...l}))){i.schedule();return}let u=Qr(s);if(u!==void 0&&n===u)return;let d=ti(vi({viewport:o,anchor:s,...l}));Math.abs(o.scrollTop-d)>1&&o.scrollTo({top:d,behavior:`smooth`}),u!==void 0&&(n=u)}let i=Si(r),a=xi(i.schedule);i.schedule();let o=e.subscribe(i.schedule);return()=>{i.cancel(),o(),a.disconnect(),t?.remove()}},wi=e=>{let t=G();(0,F.useLayoutEffect)(()=>{if(e)return Ci(t)},[e,t])},Ti=({isRunning:e,messages:t})=>{if(!e)return null;let n=t.at(-1),r=t.at(-2);return r?.role!==`user`||n?.role!==`assistant`?null:{anchorId:r.id,targetId:n.id}},Ei=e=>Ti(e)?.anchorId,Di=e=>Ti(e)?.targetId,Oi=()=>hi(W(e=>e.registerViewport),(0,F.useCallback)(e=>e.clientHeight,[])),ki=()=>X(W(e=>e.registerViewportElement)),Ai=e=>{let t=G(),n=C(t=>{if(e)return Ei(t.thread)}),r=C(t=>{if(e)return Di(t.thread)}),i=(0,F.useMemo)(()=>!n||!r?null:{anchorId:n,targetId:r},[n,r]);(0,F.useLayoutEffect)(()=>{if(!i)return;let e=t.getState(),n=e.topAnchorTurn;n?.anchorId===i.anchorId&&n.targetId===i.targetId||e.setTopAnchorTurn(i)},[i,t]);let a=(0,F.useCallback)(()=>{t.getState().setTopAnchorTurn(null)},[t]);I(`thread.initialize`,a),I(`threadListItem.switchedTo`,a)},ji=(0,F.forwardRef)(({autoScroll:e,scrollToBottomOnRunStart:t,scrollToBottomOnInitialize:n,scrollToBottomOnThreadSwitch:r,children:i,...a},o)=>{let s=mi({autoScroll:e,scrollToBottomOnRunStart:t,scrollToBottomOnInitialize:n,scrollToBottomOnThreadSwitch:r}),c=Oi(),l=ki(),u=G().getState().turnAnchor===`top`;Ai(u),wi(u);let d=P(o,s,c,l);return(0,R.jsx)(J.div,{...a,ref:d,children:i})});ji.displayName=`ThreadPrimitive.ViewportScrollable`;var Mi=(0,F.forwardRef)(({turnAnchor:e,topAnchorMessageClamp:t,...n},r)=>(0,R.jsx)(Bn,{options:{turnAnchor:e,topAnchorMessageClamp:t},children:(0,R.jsx)(ji,{...n,ref:r})}));Mi.displayName=`ThreadPrimitive.Viewport`;function Ni(e){let t=n(e);return t?`customer_agent:interview_session:${encodeURIComponent(t)}`:null}function Pi(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.entryId==`string`&&typeof t.priority==`number`&&typeof t.sessionId==`string`&&typeof t.title==`string`?r(t.entryId)&&t.entryId===`interview/session/${t.sessionId}`:!1}function Fi(e){let t=Ni(e);if(!t)return null;try{let e=window.localStorage.getItem(t);if(!e)return null;let n=JSON.parse(e);return Pi(n)?n:null}catch{return null}}function Ii(e,t){let n=Ni(e);if(n)try{window.localStorage.setItem(n,JSON.stringify(t))}catch{}}function Li(e){let t=Ni(e);if(t)try{window.localStorage.removeItem(t)}catch{}}var Z=Object.freeze({ACTIVE:`active`,ERROR:`error`,IDLE:`idle`,LOADING:`loading`,SENDING:`sending`,TERMINAL:`terminal`});function Ri(e){return typeof crypto<`u`&&`randomUUID`in crypto?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${Math.random().toString(36).slice(2)}`}function zi(e){return e.anonymous_id??e.user?.id}function Bi(e){return typeof e==`string`&&e.trim()?e.trim():null}function Vi(e){return Bi(e.user?.id)}function Hi(e){return Bi(e.brand?.name)??`Customer Agent`}function Ui(e){return{...e.context,...e.user,userId:e.user?.id,visitorId:zi(e)}}function Wi(e){return{content:e.content,createdAt:new Date(e.createdAt),id:e.id,role:e.role,status:e.role===`assistant`?{reason:`stop`,type:`complete`}:void 0}}function Gi({client:n,options:r}){let a=new Set,o=new Map,s={messages:[],phase:Z.IDLE};function c(){for(let e of a)e(s)}function u(t,n=s.completion){t.status!==e.ACTIVE&&Li(r),s={completion:n,messages:t.messages.map(Wi),phase:t.status===e.ACTIVE?Z.ACTIVE:Z.TERMINAL,sessionId:t.sessionId,status:t.status},c()}return{async chooseInvitation(e,t){await n.chooseInvitation(e,{choice:t})},async discoverInvitation(){if(!Vi(r))return null;let e=await n.checkEligibility({appId:r.app_id,locale:r.locale,pageContext:r.context??{},userContext:Ui(r),visitorId:zi(r)});if(!e.eligible||e.status&&e.status!==t.AVAILABLE||!e.campaignId||!e.showRequestId||!e.invitation)return null;let i=e.invitation,a=await n.createInvitation({appId:r.app_id,campaignId:e.campaignId,context:r.context??{},showRequestId:e.showRequestId,userContext:Ui(r),variantKey:e.variantKey,visitorId:zi(r)}),s={id:`interview/invite/${e.campaignId}`,kind:`interview`,priority:20,prompt:{anchor:`dock`,body:i.body,campaignId:e.campaignId,closeLabel:`No`,invitationId:a.invitationId,kind:`interview-invite`,laterLabel:i.laterCta,startLabel:i.startCta},status:l.INVITABLE,title:i.title};return o.set(a.invitationId,{priority:s.priority??20,title:s.title}),s},getState(){return s},hydrateSession(e){u(e)},async loadReward(e){let t=await n.getReward(e);return s={...s,reward:t},c(),t},async sendMessage(t){if(!s.sessionId)throw Error(`Cannot send an interview message before the session starts.`);let i=s.sessionId,a=Ri(`interview-message`),o=new Date;s={...s,messages:[...s.messages,{content:t,createdAt:o,id:a,role:`user`}],phase:Z.SENDING},c();let l=await n.sendMessage(i,{clientMessageId:a,content:t,locale:r.locale});s={...s,completion:l.completion,messages:[...s.messages,{content:l.assistantMessage,createdAt:new Date,id:Ri(`interview-assistant`),role:`assistant`,status:{reason:`stop`,type:`complete`}}],phase:l.sessionStatus===e.ACTIVE?Z.ACTIVE:Z.TERMINAL,status:l.sessionStatus},c(),l.sessionStatus!==e.ACTIVE&&Li(r),l.sessionStatus!==e.ACTIVE&&u(await n.getSession(i),l.completion)},async startInvitation(t){s={...s,phase:Z.LOADING};let a=await n.startInvitation(t,i(r)),c=`interview/session/${a.sessionId}`,l=o.get(t);return u(a),a.status===e.ACTIVE&&Ii(r,{entryId:c,priority:l?.priority??20,sessionId:a.sessionId,title:Hi(r)}),{entryId:c,sessionId:a.sessionId}},async restoreCachedSession(){let t=Fi(r);if(!t)return null;s={...s,phase:Z.LOADING},c();try{let i=await n.getSession(t.sessionId);return i.status===e.ACTIVE?(u(i),{id:t.entryId,kind:`interview`,priority:t.priority,status:l.ACTIVE,title:t.title}):(Li(r),s={messages:[],phase:Z.IDLE},c(),null)}catch{return Li(r),s={messages:[],phase:Z.IDLE},c(),null}},subscribe(e){return a.add(e),()=>{a.delete(e)}}}}function Ki(e){return typeof e==`string`&&e.trim()?e.trim():null}function qi(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}}function Ji(e,t,n,r){try{return new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,timeZone:n,timeZoneName:r}).formatToParts(e).find(e=>e.type===`timeZoneName`)?.value??null}catch{return null}}function Yi(e){let t=-e.getTimezoneOffset(),n=t>=0?`+`:`-`,r=Math.abs(t);return`GMT${n}${String(Math.floor(r/60)).padStart(2,`0`)}${String(r%60).padStart(2,`0`)}`}function Xi(e,t){if(!e||e===`UTC`)return e===`UTC`?`GMT+0000`:Yi(t);let n=/^GMT([+-])(\d{1,2})(?::?(\d{2}))?$/.exec(e);return n?`GMT${n[1]}${n[2].padStart(2,`0`)}${(n[3]??`00`).padStart(2,`0`)}`:Yi(t)}function Zi(e,t,n){return`${new Intl.DateTimeFormat(t,{day:`2-digit`,hour:`2-digit`,hour12:!0,minute:`2-digit`,month:`long`,timeZone:n,year:`numeric`}).format(e)} ${n} time ${Ji(e,t,n,`short`)??n} (${Xi(Ji(e,t,n,`longOffset`),e)})`}function Qi(e,t,n){return new Intl.DateTimeFormat(t,{hour:`2-digit`,hour12:!0,minute:`2-digit`,timeZone:n}).format(e)}function $i(e,t,n){return new Intl.DateTimeFormat(t,{day:`numeric`,month:`long`,timeZone:n,year:`numeric`}).format(e)}function ea(e,t,n){return new Intl.DateTimeFormat(t,{day:`2-digit`,month:`2-digit`,timeZone:n,year:`numeric`}).format(e)}function ta(e){return Ki(e?.user?.email)??Ki(e?.user?.name)??`You`}function na({conversationName:e,exportedAt:t,exportSourceName:n=e,locale:r,messages:i,startedAt:a,userSpeaker:o=`You`}){let s=i.map(e=>({...e,text:e.text.trim()})).filter(e=>e.text),c=qi(),l=a??s[0]?.createdAt??t,u=new Set(s.map(e=>ea(e.createdAt,r,c))).size>1,d=[`Conversation with ${e}`,`Started on ${Zi(l,r,c)}`,``,`---`,``],f=null;for(let t of s){let n=ea(t.createdAt,r,c),i=t.speaker??(t.role===`user`?o:e);u&&n!==f&&(d.push($i(t.createdAt,r,c)),d.push(``),f=n),d.push(`${Qi(t.createdAt,r,c)} | ${i}: ${t.text}`),d.push(``)}return d.push(`---`),d.push(`Exported from ${n} on ${Zi(t,r,c)}`),d.join(`
2
2
  `)}var ra=``+new URL(`../assets/emoji/en-emojibase-data.json`,import.meta.url).href,Q=Object.freeze({ERROR:`error`,IDLE:`idle`,LOADING:`loading`,READY:`ready`}),ia=null,aa=`https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json`;function oa(e,t){try{let n=new URL(e,t);return n.protocol===`file:`?aa:n.toString()}catch{return aa}}function sa(e,t){return e||t}function ca({bundledDataSourceUrl:e,isDev:t,moduleUrl:n,pageUrl:r,sdkFormat:i}){if(e)return oa(e,r);let a=sa(n,r);return oa(t?`../../node_modules/emoji-picker-element-data/en/emojibase/data.json`:i===`iife`?`assets/emoji/en-emojibase-data.json`:`../assets/emoji/en-emojibase-data.json`,a)}async function la(){return{dataSource:ca({bundledDataSourceUrl:ra,isDev:!1,moduleUrl:import.meta.url,pageUrl:window.location.href,sdkFormat:`es`}),locale:`en`}}function ua(){return ia??=Promise.all([import(`./emoji-picker-element-H87_ifwm.js`),la()]).then(([{Picker:e},t])=>({Picker:e,pickerOptions:t})).catch(e=>{throw ia=null,e}),ia}function da(e){if(!e)return;let t=e.value.length;e.focus(),e.setSelectionRange(t,t)}function fa({composerRuntime:e,inputRef:t,shouldSuppressComposerFocus:n=!1}){let r=(0,F.useRef)(e),i=(0,F.useRef)(t),a=(0,F.useRef)(n),[o,s]=(0,F.useState)(!1),[c,l]=(0,F.useState)(Q.IDLE),[u,d]=(0,F.useState)(null);return r.current=e,i.current=t,a.current=n,(0,F.useEffect)(()=>{ua().catch(e=>{console.error(`CustomerAgent emoji picker failed to preload.`,e)})},[]),(0,F.useEffect)(()=>{if(!o||!u)return;let e=!1,t=null,n=null;return l(Q.LOADING),u.replaceChildren(),ua().then(({Picker:o,pickerOptions:c})=>{if(e)return;t=new o(c);let d=document.createElement(`style`);t.className=`light`,t.style.width=`100%`,t.style.height=`304px`,t.style.setProperty(`--background`,`var(--bg-elevated)`),t.style.setProperty(`--border-color`,`transparent`),t.style.setProperty(`--border-radius`,`var(--radius-14)`),t.style.setProperty(`--border-size`,`0`),t.style.setProperty(`--button-hover-background`,`var(--gray-3)`),t.style.setProperty(`--button-active-background`,`var(--gray-5)`),t.style.setProperty(`--category-emoji-padding`,`0.35rem`),t.style.setProperty(`--category-emoji-size`,`1.15rem`),t.style.setProperty(`--category-font-color`,`var(--text-tertiary)`),t.style.setProperty(`--category-font-size`,`0.72rem`),t.style.setProperty(`--emoji-padding`,`0.34rem`),t.style.setProperty(`--emoji-size`,`1.28rem`),t.style.setProperty(`--indicator-color`,`var(--customer-agent-primary)`),t.style.setProperty(`--indicator-height`,`3px`),t.style.setProperty(`--input-border-color`,`var(--gray-5)`),t.style.setProperty(`--input-border-radius`,`var(--radius-md)`),t.style.setProperty(`--input-font-size`,`0.92rem`),t.style.setProperty(`--input-font-color`,`var(--text-primary)`),t.style.setProperty(`--input-line-height`,`1.35`),t.style.setProperty(`--input-padding`,`0.55rem 0.7rem`),t.style.setProperty(`--input-placeholder-color`,`var(--text-tertiary)`),t.style.setProperty(`--num-columns`,`8`),t.style.setProperty(`--outline-color`,`var(--customer-agent-primary)`),t.style.setProperty(`--outline-size`,`2px`),d.textContent=`
3
3
  :host {
4
4
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
@@ -0,0 +1 @@
1
+ var e=`0.6.1`;function t(){typeof window>`u`||(window.__customerAgentVersion=e)}var n=Object.freeze({BUG_REPORTED:`support.bug_reported`,CONVERSATION_CREATED:`conversation.created`,ERROR:`error`,FEEDBACK_SUBMITTED:`support.feedback_submitted`,HANDOFF_REQUESTED:`support.handoff_requested`,INTERVIEW_INVITATION_CLOSED:`interview.invitation_closed`,INTERVIEW_INVITATION_LATER:`interview.invitation_later`,INTERVIEW_INVITATION_SHOWN:`interview.invitation_shown`,INTERVIEW_AVAILABLE:`interview.available`,INTERVIEW_REWARD_UPDATED:`interview.reward_updated`,INTERVIEW_STATE_CHANGED:`interview.state_changed`,INTERVIEW_SESSION_COMPLETED:`interview.session_completed`,INTERVIEW_SESSION_STARTED:`interview.session_started`,MESSAGE_COMPLETED:`message.completed`,MESSAGE_FAILED:`message.failed`,MESSAGE_RETRY:`message.retry`,MESSAGE_SEND_FAILED:`message.send_failed`,MESSAGE_SENT:`message.sent`,MESSAGE_STARTED:`message.started`,SUPPORT_STATE_CHANGED:`support.state_changed`,TRANSCRIPT_DOWNLOADED:`transcript.downloaded`,WIDGET_CLOSED:`widget.closed`,WIDGET_COLLAPSED:`widget.collapsed`,WIDGET_EXPANDED:`widget.expanded`,WIDGET_OPENED:`widget.opened`,WIDGET_READY:`widget.ready`});export{t as n,n as t};
@@ -1 +1 @@
1
- import{n as e}from"./constants-Do-S47mc.js";var t=Symbol.for(`@customer-agent/sdk.controller`),n=`__customerAgentRuntime`;e();function r(){let e=globalThis;return e[t]??={loaderState:`idle`,pendingTasks:[],runtime:null,runtimePromise:null},e[t]}function i(e){let t=e.CustomerAgent??e.default;if(typeof t!=`function`)throw Error(`CustomerAgent widget runtime module did not export CustomerAgent.`);return Object.assign(t,{[n]:!0})}function a(){let e=r();if(!e.runtime)return;let t=e.pendingTasks.splice(0);for(let n of t)n(e.runtime)}async function o(){let e=r();return e.loaderState===`ready`&&e.runtime?e.runtime:e.loaderState===`loading`&&e.runtimePromise?await e.runtimePromise:(e.loaderState=`loading`,e.runtimePromise=import(`../runtime.es.js`).then(t=>(e.runtime=i(t),e.loaderState=`ready`,a(),e.runtime)).catch(t=>{throw e.loaderState=`failed`,e.runtimePromise=null,console.error(`CustomerAgent widget runtime failed to load.`,t),t}),await e.runtimePromise)}function s(e){let t=r();if(t.runtime){e(t.runtime);return}t.pendingTasks.push(e),o().catch(()=>{})}function c(e,t){s(n=>{let r=n[e];typeof r==`function`&&r(...t)})}function l(e){return s(t=>{t(`boot`,e)}),A}async function u(){return await(await o()).ensureInvitation()}async function d(e){return await(await o()).startInvitation(e)}async function f(){return await(await o()).startInterview()}async function p(e,t){await(await o()).chooseInvitation(e,t)}async function m(e){await(await o()).sendInterviewMessage(e)}async function h(e){return await(await o()).loadInterviewReward(e)}function g(e){c(`update`,[e])}function _(e){c(`show`,[e])}function v(){c(`hide`,[])}function y(e){c(`toggle`,[e])}function b(e){c(`openEntry`,[e])}function x(){c(`shutdown`,[])}function S(e){c(`identify`,[e])}function C(e,t){c(`setContext`,[e,t])}async function w(){return await(await o()).getSession()}function T(){return r().runtime?.getSupportState()??null}function E(){return r().runtime?.getInterviewState()??null}function D(){return r().runtime?.getInterviewSession()??null}function O(){return r().runtime?.getState()??null}function k(e,t){let n=!0,r=()=>{};return s(i=>{n&&(r=i.on(e,t))}),()=>{n=!1,r()}}var A={chooseInvitation:p,async ensureInvitation(){let e=await u();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getInterviewState(){let e=E();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getInterviewSession(){return D()},async getSession(){let e=await w();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getState(){let e=O();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getSupportState(){let e=T();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},hide:v,identify:S,on:k,openEntry:b,loadInterviewReward:h,sendInterviewMessage:m,setContext:C,show:_,shutdown:x,async startInterview(){let e=await f();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},async startInvitation(e){let t=await d(e);if(!t)throw Error(`CustomerAgent widget is not initialized.`);return t},toggle:y,update:g};function j(e,...t){switch(e){case`boot`:return l(t[0]);case`chooseInvitation`:return p(t[0],t[1]);case`ensureInvitation`:return u();case`getSession`:return w();case`getState`:return O();case`getSupportState`:return T();case`getInterviewState`:return E();case`getInterviewSession`:return D();case`hide`:return v();case`identify`:return S(t[0]);case`on`:return k(t[0],t[1]);case`openEntry`:return b(t[0]);case`loadInterviewReward`:return h(t[0]);case`sendInterviewMessage`:return m(t[0]);case`setContext`:return C(t[0],t[1]);case`show`:return _(t[0]);case`shutdown`:return x();case`startInvitation`:return d(t[0]);case`startInterview`:return f();case`toggle`:return y(t[0]);case`update`:return g(t[0]);default:throw Error(`CustomerAgent received an unknown command: ${String(e)}.`)}}var M=Object.assign(j,{boot:l,chooseInvitation:p,ensureInvitation:u,getInterviewState:E,getInterviewSession:D,getSession:w,getState:O,getSupportState:T,hide:v,identify:S,on:k,openEntry:b,loadInterviewReward:h,sendInterviewMessage:m,setContext:C,show:_,shutdown:x,startInterview:f,startInvitation:d,toggle:y,update:g});export{g as S,_,D as a,d as b,O as c,S as d,h as f,C as g,m as h,u as i,T as l,b as m,l as n,E as o,k as p,p as r,w as s,M as t,v as u,x as v,y as x,f as y};
1
+ import{n as e}from"./constants-BHZTZVRN.js";var t=Symbol.for(`@customer-agent/sdk.controller`),n=`__customerAgentRuntime`;e();function r(){let e=globalThis;return e[t]??={loaderState:`idle`,pendingTasks:[],runtime:null,runtimePromise:null},e[t]}function i(e){let t=e.CustomerAgent??e.default;if(typeof t!=`function`)throw Error(`CustomerAgent widget runtime module did not export CustomerAgent.`);return Object.assign(t,{[n]:!0})}function a(){let e=r();if(!e.runtime)return;let t=e.pendingTasks.splice(0);for(let n of t)n(e.runtime)}async function o(){let e=r();return e.loaderState===`ready`&&e.runtime?e.runtime:e.loaderState===`loading`&&e.runtimePromise?await e.runtimePromise:(e.loaderState=`loading`,e.runtimePromise=import(`../runtime.es.js`).then(t=>(e.runtime=i(t),e.loaderState=`ready`,a(),e.runtime)).catch(t=>{throw e.loaderState=`failed`,e.runtimePromise=null,console.error(`CustomerAgent widget runtime failed to load.`,t),t}),await e.runtimePromise)}function s(e){let t=r();if(t.runtime){e(t.runtime);return}t.pendingTasks.push(e),o().catch(()=>{})}function c(e,t){s(n=>{let r=n[e];typeof r==`function`&&r(...t)})}function l(e){return s(t=>{t(`boot`,e)}),A}async function u(){return await(await o()).ensureInvitation()}async function d(e){return await(await o()).startInvitation(e)}async function f(){return await(await o()).startInterview()}async function p(e,t){await(await o()).chooseInvitation(e,t)}async function m(e){await(await o()).sendInterviewMessage(e)}async function h(e){return await(await o()).loadInterviewReward(e)}function g(e){c(`update`,[e])}function _(e){c(`show`,[e])}function v(){c(`hide`,[])}function y(e){c(`toggle`,[e])}function b(e){c(`openEntry`,[e])}function x(){c(`shutdown`,[])}function S(e){c(`identify`,[e])}function C(e,t){c(`setContext`,[e,t])}async function w(){return await(await o()).getSession()}function T(){return r().runtime?.getSupportState()??null}function E(){return r().runtime?.getInterviewState()??null}function D(){return r().runtime?.getInterviewSession()??null}function O(){return r().runtime?.getState()??null}function k(e,t){let n=!0,r=()=>{};return s(i=>{n&&(r=i.on(e,t))}),()=>{n=!1,r()}}var A={chooseInvitation:p,async ensureInvitation(){let e=await u();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getInterviewState(){let e=E();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getInterviewSession(){return D()},async getSession(){let e=await w();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getState(){let e=O();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},getSupportState(){let e=T();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},hide:v,identify:S,on:k,openEntry:b,loadInterviewReward:h,sendInterviewMessage:m,setContext:C,show:_,shutdown:x,async startInterview(){let e=await f();if(!e)throw Error(`CustomerAgent widget is not initialized.`);return e},async startInvitation(e){let t=await d(e);if(!t)throw Error(`CustomerAgent widget is not initialized.`);return t},toggle:y,update:g};function j(e,...t){switch(e){case`boot`:return l(t[0]);case`chooseInvitation`:return p(t[0],t[1]);case`ensureInvitation`:return u();case`getSession`:return w();case`getState`:return O();case`getSupportState`:return T();case`getInterviewState`:return E();case`getInterviewSession`:return D();case`hide`:return v();case`identify`:return S(t[0]);case`on`:return k(t[0],t[1]);case`openEntry`:return b(t[0]);case`loadInterviewReward`:return h(t[0]);case`sendInterviewMessage`:return m(t[0]);case`setContext`:return C(t[0],t[1]);case`show`:return _(t[0]);case`shutdown`:return x();case`startInvitation`:return d(t[0]);case`startInterview`:return f();case`toggle`:return y(t[0]);case`update`:return g(t[0]);default:throw Error(`CustomerAgent received an unknown command: ${String(e)}.`)}}var M=Object.assign(j,{boot:l,chooseInvitation:p,ensureInvitation:u,getInterviewState:E,getInterviewSession:D,getSession:w,getState:O,getSupportState:T,hide:v,identify:S,on:k,openEntry:b,loadInterviewReward:h,sendInterviewMessage:m,setContext:C,show:_,shutdown:x,startInterview:f,startInvitation:d,toggle:y,update:g});export{g as S,_,D as a,d as b,O as c,S as d,h as f,C as g,m as h,u as i,T as l,b as m,l as n,E as o,k as p,p as r,w as s,M as t,v as u,x as v,y as x,f as y};
@@ -0,0 +1 @@
1
+ var e=class extends Error{code;requestId;status;constructor(e,t){super(e),this.name=`CustomerAgentApiError`,this.code=t.code,this.requestId=t.requestId??null,this.status=t.status}};function t(e){return e.replace(/\/+$/g,``)}function n(e){return!!e&&typeof e==`object`&&e.ok===!1&&typeof e.error?.message==`string`}function r(e){return!!e&&typeof e==`object`&&e.ok===!0}async function i(t){let n=await t.text();if(!n)return null;try{return JSON.parse(n)}catch{throw new e(`The server returned an unreadable response.`,{code:`INVALID_RESPONSE`,requestId:t.headers.get(`X-Request-Id`),status:t.status})}}function a(a){let o=t(a);async function s(t){let a=await i(t);if(n(a))throw new e(a.error.message,{code:a.error.code,requestId:a.meta?.requestId??t.headers.get(`X-Request-Id`),status:t.status});if(!t.ok)throw new e(`The server could not complete the request.`,{code:`HTTP_ERROR`,requestId:t.headers.get(`X-Request-Id`),status:t.status});if(!r(a))throw new e(`The server returned an unexpected response.`,{code:`INVALID_RESPONSE`,requestId:t.headers.get(`X-Request-Id`),status:t.status});return{data:a.data,response:t}}async function c(e,t={}){let n=new Headers;return t.method!==`GET`&&n.set(`Content-Type`,`application/json`),t.conversationId&&n.set(`X-Customer-Agent-Conversation-Id`,t.conversationId),await s(await fetch(`${o}${e}`,{body:t.body?JSON.stringify(t.body):void 0,credentials:`omit`,headers:n,method:t.method??`GET`,signal:t.signal}))}async function l(e,t,n={}){let r=new Headers;return n.conversationId&&r.set(`X-Customer-Agent-Conversation-Id`,n.conversationId),await s(await fetch(`${o}${e}`,{body:t,credentials:`omit`,headers:r,method:`POST`,signal:n.signal}))}return{request:c,upload:l}}function o(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`ca_${Date.now()}_${Math.random().toString(36).slice(2)}`}function s(){return`https://api.askorainsight.com/api/customer-agent`}function c(e,t){if(!e.app_id)throw Error(`CustomerAgent requires an app_id.`);let{launcher:n,mount:r,...i}=e;return{...i,context:e.context??{},embedded:!!r,launcher:n?{offset:n.offset,placement:n.placement,style:n.style,variables:n.variables}:void 0,widgetId:t}}function l(e){return typeof e==`string`&&e.trim()?e.trim():null}function u(e){let t=l(e.user?.id);return t?JSON.stringify({appId:e.app_id,userId:t}):null}function d(e){let t=u(e);return t?`customer_agent:interview_session:${encodeURIComponent(t)}`:null}function f(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.entryId==`string`&&typeof t.priority==`number`&&typeof t.sessionId==`string`&&typeof t.title==`string`}function p(e){return u(e)}function m(){return{clear(e){let t=d(e);if(t)try{window.localStorage.removeItem(t)}catch{}},read(e){let t=d(e);if(!t)return null;try{let e=window.localStorage.getItem(t);if(!e)return null;let n=JSON.parse(e);return f(n)?n:null}catch{return null}},write(e,t){let n=d(e);if(n)try{window.localStorage.setItem(n,JSON.stringify(t))}catch{}}}}var h=class extends Error{conversationId;constructor(e){super(`The support conversation session is no longer available.`),this.conversationId=e,this.name=`CustomerAgentSessionInvalidatedError`}};function g(e){return typeof e==`string`&&e.trim()?e.trim():null}function _(e){let t=g(e.user?.id),n=g(e.anonymous_id),r=t?`user:${t}`:n?`anonymous:${n}`:`anonymous`;return encodeURIComponent(r)}function v(e){return`customer_agent:conversation_id:${e.app_id}:${_(e)}`}function y(e){return`${e.app_id}::${_(e)}`}function b(e){try{return window.localStorage.getItem(v(e))}catch{return null}}function x(e,t){try{window.localStorage.setItem(v(e),t)}catch{}}function S(e){try{window.localStorage.removeItem(v(e))}catch{}}function C(){try{return window.parent?.location??window.location}catch{return window.location}}function w(){let e=C();return!e?.href||e.href===`about:blank`?{}:{customerOrigin:e.origin,pagePath:`${e.pathname}${e.search}${e.hash}`,pageUrl:e.href}}function T(){return{language:navigator.language,languages:navigator.languages,platform:navigator.platform,screen:{height:window.screen.height,width:window.screen.width},userAgent:navigator.userAgent,viewport:{height:window.innerHeight,width:window.innerWidth}}}function E(e){return Object.fromEntries(Object.entries(e).filter(e=>e[1]!==void 0))}function D(e){return Array.isArray(e)?`[${e.map(e=>D(e)).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${D(t)}`).join(`,`)}}`:JSON.stringify(e)}function O(e){return e.anonymous_id??e.user?.id}function k(e){return E({...e.context,...e.user,userId:e.user?.id,visitorId:O(e)})}function A(e){let t=k(e);return{appId:e.app_id,...E({...w(),deviceInfo:T(),locale:e.locale,userContext:Object.keys(t).length?t:void 0,visitorId:O(e),widgetId:e.widgetId})}}function j(e){return{id:e.id,role:e.role,content:e.content,createdAt:new Date(e.createdAt),metadata:{custom:{assistantAuthor:e.assistantAuthor,attachments:e.attachments??[]}},status:e.role===`assistant`?{type:`complete`,reason:`stop`}:void 0}}function M(e){return e.map(j)}var N=class{apiOrigin=null;client=null;lastContextFingerprint=null;session=null;sessionPromise=null;getClient(){let e=s();return(this.apiOrigin!==e||!this.client)&&(this.apiOrigin=e,this.client=a(e),this.lastContextFingerprint=null,this.session=null,this.sessionPromise=null),this.client}clear(e){this.lastContextFingerprint=null,this.session=null,this.sessionPromise=null,S(e)}hydrateSession(e,t){this.session={cacheKey:y(e),conversationId:t.conversationId,messages:t.messages},this.sessionPromise=null,x(e,t.conversationId)}async ensureSession(e,t={}){let n=y(e);if(this.session?.conversationId&&this.session.cacheKey===n)return this.session;if(this.session?.cacheKey!==n&&(this.lastContextFingerprint=null,this.session=null,this.sessionPromise=null),this.sessionPromise)return await this.sessionPromise;let r=b(e);this.sessionPromise=this.startSession(e,r,t);try{return this.session=await this.sessionPromise,this.session}finally{this.sessionPromise=null}}async sendMessage(t,n,r,i,a={}){let o=this.getHydratedSession(t)??await this.ensureSession(t,a);try{let e=await this.postMessage(t,o.conversationId,n,r,i);return this.session?.conversationId===e.conversationId&&(this.session={...this.session,messages:P(this.session.messages,[e.userMessage,e.assistantMessage])}),e}catch(s){if(s instanceof e&&s.code===`NOT_FOUND`){this.clear(t),a.onSessionInvalidated?.(o.conversationId);let e=await this.ensureSession(t,a),s=await this.postMessage(t,e.conversationId,n,r,i);return this.session={...e,messages:P(e.messages,[s.userMessage,s.assistantMessage])},s}throw s}}async refreshSession(t,n){let r=this.getHydratedSession(t);if(!r)return null;try{let{data:e}=await this.getClient().request(`/conversation`,{conversationId:r.conversationId,method:`GET`,signal:n});return this.session={...r,conversationId:e.conversationId,messages:e.messages},x(t,e.conversationId),this.session}catch(n){if(n instanceof e&&n.code===`NOT_FOUND`){let e=r.conversationId;throw this.clear(t),new h(e)}throw n}}async updateContext(e){let t=this.getHydratedSession(e);if(!t)return null;let n=A(e),r=D(n);if(r===this.lastContextFingerprint)return null;let{data:i}=await this.getClient().request(`/context`,{body:{...n,conversationId:t.conversationId},conversationId:t.conversationId,method:`PATCH`});return this.lastContextFingerprint=r,i}async uploadAttachment(e,t,n={}){let r=this.getHydratedSession(e);if(!r)throw Error(`The support conversation session has not been initialized.`);let i=new FormData;i.set(`appId`,e.app_id),i.set(`conversationId`,r.conversationId),i.set(`file`,t);let{data:a}=await this.getClient().upload(`/attachments`,i,{conversationId:r.conversationId});return{filename:a.filename,id:a.attachmentId,mimeType:a.mimeType,sizeBytes:a.sizeBytes,url:a.url}}async startSession(t,n,r={}){let i=this.getClient(),a=A(t);try{let{data:e}=await i.request(`/session`,{body:E({...a,conversationId:n??void 0}),conversationId:n,method:`POST`}),o=e.conversationId;return x(t,o),this.lastContextFingerprint=D(a),n||r.onConversationCreated?.(o),{cacheKey:y(t),conversationId:o,messages:e.messages}}catch(i){if(n&&i instanceof e&&i.code===`NOT_FOUND`)return S(t),await this.startSession(t,null,r);throw i}}async postMessage(e,t,n,r,i){let a=A(e),{data:o}=await this.getClient().request(`/messages`,{body:{...a,attachments:r.length?r:void 0,conversationId:t,message:n},conversationId:t,method:`POST`,signal:i});return this.lastContextFingerprint=D(a),o}getHydratedSession(e){let t=y(e);return this.session?.conversationId&&this.session.cacheKey===t?this.session:null}};function P(e,t){let n=new Map(e.map(e=>[e.id,e]));for(let e of t)n.set(e.id,e);return[...n.values()]}var F=new N,I={AGENTS_CONVERSATIONS:`agents.conversations`,GLOBAL_ERROR:`global.error`,GLOBAL_LOADING:`global.loading`},L={CHAT:`chat`,INTERVIEW_STARTING:`interview.starting`},R=`interview/session/`,z=`support/session/`;function B(e,t){return e.startsWith(t)&&e.length>t.length}function V(e){return B(e,R)}function H(e){return`${z}${e}`}function U(e){return B(e,z)}function W(e){return U(e)?e.slice(16):null}function G(e){return!e||e.name!==I.AGENTS_CONVERSATIONS?!1:e.child.name===L.CHAT&&V(e.child.entryId)}function K(e){return{child:{entryId:e,name:L.CHAT},name:I.AGENTS_CONVERSATIONS}}export{c as _,G as a,a as b,I as c,M as d,F as f,o as g,u as h,V as i,h as l,p as m,H as n,U as o,m as p,W as r,L as s,K as t,A as u,s as v,e as y};
package/index.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./chunks/constants-Do-S47mc.js";import{S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,x,y as S}from"./chunks/controller-DsoiXsWM.js";import{n as C}from"./chunks/interviewTypes-Ch2NsXKB.js";var w=v;export{e as CUSTOMER_AGENT_EVENTS,v as CustomerAgent,C as INTERVIEW_INVITATION_ACTION,p as boot,g as chooseInvitation,w as default,u as ensureInvitation,r as getInterviewSession,m as getInterviewState,_ as getSession,a as getState,d as getSupportState,y as hide,o as identify,s as loadInterviewReward,h as on,f as openEntry,l as sendInterviewMessage,c as setContext,n as show,b as shutdown,S as startInterview,i as startInvitation,x as toggle,t as update};
1
+ import{t as e}from"./chunks/constants-BHZTZVRN.js";import{S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,x,y as S}from"./chunks/controller-DKF2fXNi.js";import{n as C}from"./chunks/interviewTypes-Ch2NsXKB.js";var w=v;export{e as CUSTOMER_AGENT_EVENTS,v as CustomerAgent,C as INTERVIEW_INVITATION_ACTION,p as boot,g as chooseInvitation,w as default,u as ensureInvitation,r as getInterviewSession,m as getInterviewState,_ as getSession,a as getState,d as getSupportState,y as hide,o as identify,s as loadInterviewReward,h as on,f as openEntry,l as sendInterviewMessage,c as setContext,n as show,b as shutdown,S as startInterview,i as startInvitation,x as toggle,t as update};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customer-agent/sdk",
3
- "version": "0.6.0-test.67b72921d3c0",
3
+ "version": "0.6.1",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "./sdk.js"
package/react.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./chunks/constants-Do-S47mc.js";import{t}from"./chunks/controller-DsoiXsWM.js";import{a as n,n as r,r as i}from"./chunks/launcherAnchorStore-JMTZZGKC.js";import{useCallback as a,useEffect as o,useMemo as s,useRef as c,useSyncExternalStore as l}from"react";var u=[e.WIDGET_READY,e.WIDGET_OPENED,e.WIDGET_CLOSED,e.SUPPORT_STATE_CHANGED,e.INTERVIEW_STATE_CHANGED],d=null,f=null,p=new Set;function m(e,t){return JSON.stringify(e)===JSON.stringify(t)}function h(e,t){return e===t?!0:!e||!t?!1:e.appId===t.appId&&e.isOpen===t.isOpen&&e.isReady===t.isReady&&e.widgetId===t.widgetId&&e.activeEntryId===t.activeEntryId&&m(e.activeTarget,t.activeTarget)&&e.launcher.targetConfigured===t.launcher.targetConfigured&&e.launcher.targetConnected===t.launcher.targetConnected&&m(e.support,t.support)&&m(e.interview,t.interview)}function g(){let e=t.getState();return h(d,e)||(d=e),d}function _(){if(d!==g())for(let e of p)e()}function v(){_(),queueMicrotask(_),typeof window<`u`&&typeof window.requestAnimationFrame==`function`&&window.requestAnimationFrame(_)}function y(){f||=u.map(e=>t.on(e,v))}function b(e){return p.add(e),y(),()=>{p.delete(e),!(p.size>0)&&(f?.forEach(e=>e()),f=null)}}function x(){return null}function S(){return l(b,g,x)}function C(){return l(n,r,i)}function w(){let e=S(),n=C(),r=c(n);r.current=n;let i=a(e=>{let n=t.boot(e);return v(),n},[]),o=a(async(e,n)=>{await t.chooseInvitation(e,n),v()},[]),l=a(async()=>{let e=await t.ensureInvitation();return v(),e},[]),u=a(()=>{t.hide(),v()},[]),d=a(e=>{t.identify(e),v()},[]),f=a((e,n)=>{t.setContext(e,n),v()},[]),p=a(e=>{t.openEntry(e),v()},[]),m=a(async e=>{let n=await t.loadInterviewReward(e);return v(),n},[]),h=a(async e=>{await t.sendInterviewMessage(e),v()},[]),g=a(e=>{t.show(e),v()},[]),_=a(()=>{t.shutdown(),v()},[]),y=a(async e=>{let n=await t.startInvitation(e);return v(),n},[]),b=a(async()=>{let e=await t.startInterview();return v(),e},[]),x=a(e=>{t.toggle(e),v()},[]),w=a(e=>{t.update(e),v()},[]);return s(()=>({CustomerAgent:t,boot:i,chooseInvitation:o,ensureInvitation:l,getInterviewSession:t.getInterviewSession,getInterviewState:t.getInterviewState,getSession:t.getSession,getState:t.getState,getSupportState:t.getSupportState,hide:u,identify:d,isOpen:e?.isOpen??!1,isReady:e?.isReady??!1,launcher:e?.launcher??null,launcherAnchor:n,launcherAnchorRef:r,loadInterviewReward:m,on:t.on,openEntry:p,sendInterviewMessage:h,setContext:f,show:g,shutdown:_,startInterview:b,startInvitation:y,state:e,toggle:x,update:w}),[i,o,l,u,d,n,m,p,h,f,g,_,b,y,e,x,w])}function T(e,n){let r=c(n);o(()=>{r.current=n},[n]),o(()=>t(`on`,e,e=>{r.current(e)}),[e])}export{w as useCustomerAgent,T as useCustomerAgentEvent,S as useCustomerAgentState};
1
+ import{t as e}from"./chunks/constants-BHZTZVRN.js";import{t}from"./chunks/controller-DKF2fXNi.js";import{a as n,n as r,r as i}from"./chunks/launcherAnchorStore-JMTZZGKC.js";import{useCallback as a,useEffect as o,useMemo as s,useRef as c,useSyncExternalStore as l}from"react";var u=[e.WIDGET_READY,e.WIDGET_OPENED,e.WIDGET_CLOSED,e.SUPPORT_STATE_CHANGED,e.INTERVIEW_STATE_CHANGED],d=null,f=null,p=new Set;function m(e,t){return JSON.stringify(e)===JSON.stringify(t)}function h(e,t){return e===t?!0:!e||!t?!1:e.appId===t.appId&&e.isOpen===t.isOpen&&e.isReady===t.isReady&&e.widgetId===t.widgetId&&e.activeEntryId===t.activeEntryId&&m(e.activeTarget,t.activeTarget)&&e.launcher.targetConfigured===t.launcher.targetConfigured&&e.launcher.targetConnected===t.launcher.targetConnected&&m(e.support,t.support)&&m(e.interview,t.interview)}function g(){let e=t.getState();return h(d,e)||(d=e),d}function _(){if(d!==g())for(let e of p)e()}function v(){_(),queueMicrotask(_),typeof window<`u`&&typeof window.requestAnimationFrame==`function`&&window.requestAnimationFrame(_)}function y(){f||=u.map(e=>t.on(e,v))}function b(e){return p.add(e),y(),()=>{p.delete(e),!(p.size>0)&&(f?.forEach(e=>e()),f=null)}}function x(){return null}function S(){return l(b,g,x)}function C(){return l(n,r,i)}function w(){let e=S(),n=C(),r=c(n);r.current=n;let i=a(e=>{let n=t.boot(e);return v(),n},[]),o=a(async(e,n)=>{await t.chooseInvitation(e,n),v()},[]),l=a(async()=>{let e=await t.ensureInvitation();return v(),e},[]),u=a(()=>{t.hide(),v()},[]),d=a(e=>{t.identify(e),v()},[]),f=a((e,n)=>{t.setContext(e,n),v()},[]),p=a(e=>{t.openEntry(e),v()},[]),m=a(async e=>{let n=await t.loadInterviewReward(e);return v(),n},[]),h=a(async e=>{await t.sendInterviewMessage(e),v()},[]),g=a(e=>{t.show(e),v()},[]),_=a(()=>{t.shutdown(),v()},[]),y=a(async e=>{let n=await t.startInvitation(e);return v(),n},[]),b=a(async()=>{let e=await t.startInterview();return v(),e},[]),x=a(e=>{t.toggle(e),v()},[]),w=a(e=>{t.update(e),v()},[]);return s(()=>({CustomerAgent:t,boot:i,chooseInvitation:o,ensureInvitation:l,getInterviewSession:t.getInterviewSession,getInterviewState:t.getInterviewState,getSession:t.getSession,getState:t.getState,getSupportState:t.getSupportState,hide:u,identify:d,isOpen:e?.isOpen??!1,isReady:e?.isReady??!1,launcher:e?.launcher??null,launcherAnchor:n,launcherAnchorRef:r,loadInterviewReward:m,on:t.on,openEntry:p,sendInterviewMessage:h,setContext:f,show:g,shutdown:_,startInterview:b,startInvitation:y,state:e,toggle:x,update:w}),[i,o,l,u,d,n,m,p,h,f,g,_,b,y,e,x,w])}function T(e,n){let r=c(n);o(()=>{r.current=n},[n]),o(()=>t(`on`,e,e=>{r.current(e)}),[e])}export{w as useCustomerAgent,T as useCustomerAgentEvent,S as useCustomerAgentState};
package/runtime.es.js CHANGED
@@ -1 +1 @@
1
- import{n as e,t}from"./chunks/constants-Do-S47mc.js";import{r as n,t as r}from"./chunks/interviewTypes-Ch2NsXKB.js";import{i,t as a}from"./chunks/launcherAnchorStore-JMTZZGKC.js";import{_ as o,b as s,f as c,g as l,m as u,n as d,p as f,u as p,v as m,y as h}from"./chunks/routes-Dh46ka4-.js";import{a as g,c as _,d as v,i as y,l as b,n as x,o as S,r as ee,u as te}from"./chunks/navigationState-LdqG_Osx.js";import{n as ne,r as re}from"./chunks/i18n-Q8u2wtW4.js";var C=Object.create,w=Object.defineProperty,T=Object.getOwnPropertyDescriptor,ie=Object.getOwnPropertyNames,E=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty,O=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),k=(e,t)=>{let n={};for(var r in e)w(n,r,{get:e[r],enumerable:!0});return t||w(n,Symbol.toStringTag,{value:`Module`}),n},ae=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ie(t),a=0,o=i.length,s;a<o;a++)s=i[a],!D.call(e,s)&&s!==n&&w(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=T(t,s))||r.enumerable});return e},A=(e,t,n)=>(n=e==null?{}:C(E(e)),ae(t||!e||!e.__esModule?w(n,`default`,{value:e,enumerable:!0}):n,e));function oe(){let e=s(m());return{async checkEligibility(t,n){let{data:r}=await e.request(`/interviews/eligibility`,{body:t,method:`POST`,signal:n?.signal});return r},async chooseInvitation(t,n){await e.request(`/interviews/invitations/${t}/choice`,{body:n,method:`PATCH`})},async createInvitation(t){let{data:n}=await e.request(`/interviews/invitations`,{body:t,method:`POST`});return n},async getReward(t){let{data:n}=await e.request(`/interviews/sessions/${t}/reward`);return n},async getSession(t,n){let{data:r}=await e.request(`/interviews/sessions/${t}`,{signal:n?.signal});return r},async sendMessage(t,n){let{data:r}=await e.request(`/interviews/sessions/${t}/messages`,{body:n,method:`POST`});return r},async startInvitation(t,n){let{data:r}=await e.request(`/interviews/invitations/${t}/start`,{body:n,method:`POST`});return r}}}function j(e){return typeof e==`string`&&e.trim()?e.trim():null}function M(e){return e.anonymous_id??e.user?.id}function N(e){return{...e.context,...e.user,userId:e.user?.id,visitorId:M(e)}}function P(e){return j(e.brand?.name)??`Customer Agent`}function F(e){return{appId:e.app_id,locale:e.locale,pageContext:e.context??{},userContext:N(e),visitorId:M(e)}}function se(e,t){return{appId:e.app_id,campaignId:t.campaignId,context:e.context??{},showRequestId:t.showRequestId,userContext:N(e),variantKey:t.variantKey,visitorId:M(e)}}function I(e){return e instanceof Error?e.message:`CustomerAgent interview request failed.`}function L(e,t){return JSON.stringify(e)===JSON.stringify(t)}function R(e,t){return e.status===n.ACTIVE?{entryId:`interview/session/${e.sessionId}`,sessionId:e.sessionId,status:r.ACTIVE,title:t}:{sessionId:e.sessionId,sessionStatus:e.status,status:r.TERMINAL}}function ce(e){return{conversationId:`interview/session/${e}`,conversationType:`interview`,entryId:`interview/session/${e}`,interviewSessionId:e}}function z(e){return typeof crypto<`u`&&`randomUUID`in crypto?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${Math.random().toString(36).slice(2)}`}function le({api:e,buildContextPayload:t=p,cache:i,emitAvailable:a,emitConversationCreated:o,emitSessionStarted:s,emitStateChanged:c,getOptions:l}){let d=new Set,f={status:r.IDLE},m=0,h=null,g=null,_=null,v=null,y=null,b=null,x=null;function S(e){L(f,e)||(f=e,c(f))}function ee(e,t){y=t,b=null,x=null;let n={body:t.invitation.body,campaignId:t.campaignId,laterCta:t.invitation.laterCta,startCta:t.invitation.startCta,status:r.AVAILABLE,title:t.invitation.title};S(n),d.has(e)||(d.add(e),a(n))}function te(){y=null,b=null,x=null,S({status:r.IDLE})}function ne(){v?.abort(),v=null,g=null,_=null}async function re(t,n,i){let a=l(),o=await e.checkEligibility(F(a),{signal:i});if(!(n!==m||t!==u(l()))){if(h=t,!o.eligible||o.status&&o.status!==r.AVAILABLE||!o.campaignId||!o.showRequestId||!o.invitation){y=null,b=null,x=null,S({status:r.UNAVAILABLE});return}ee(t,o)}}async function C(){let t=l(),a=u(t);if(!a){m+=1,ne(),h=null,te();return}let o=g!==null&&_!==a;if(o&&ne(),!o&&h===a&&f.status!==r.ERROR)return;if(g&&_===a){await g;return}ne();let s=++m,c=new AbortController;v=c,_=a,g=(async()=>{S({status:r.CHECKING});try{let r=i.read(t);if(r)try{let t=await e.getSession(r.sessionId,{signal:c.signal});if(s!==m||a!==u(l()))return;if(t.status!==n.ACTIVE){x=null,i.clear(l()),await re(a,s,c.signal);return}x=t,S(R(t,r.title)),h=a;return}catch{if(s!==m||a!==u(l()))return;x=null,i.clear(l())}await re(a,s,c.signal)}catch(e){if(s!==m||a!==u(l()))return;x=null,S({error:{message:I(e)},status:r.ERROR})}finally{_===a&&(g=null,_=null),v===c&&(v=null)}})(),await g}return{async chooseInvitation(t,n){await e.chooseInvitation(t,{choice:n})},async ensureInvitation(){let t=u(l());if(!t)throw m+=1,ne(),h=null,te(),Error(`No interview invitation is available.`);if((!y||f.status!==r.AVAILABLE)&&await C(),!y||f.status!==r.AVAILABLE)throw Error(`No interview invitation is available.`);if(b)return b;let n=await e.createInvitation(se(l(),y));return t===u(l())&&(b=n.invitationId),n.invitationId},getState(){return f.status===r.ACTIVE?{...f,title:j(l().brand?.name)??f.title??P(l())}:f},getActiveSession(){return x},async loadReward(t=x?.sessionId){if(!t)throw Error(`Cannot load an interview reward before the session starts.`);return await e.getReward(t)},syncAvailability:C,async startInvitation(r){let a=l(),c=u(a),d=await e.startInvitation(r,t(a));if(!c||c!==u(l()))return{entryId:`interview/session/${d.sessionId}`,session:d,sessionId:d.sessionId};x=d,d.status===n.ACTIVE?i.write(a,{entryId:`interview/session/${d.sessionId}`,priority:20,sessionId:d.sessionId,title:P(a)}):i.clear(a),S(R(d,P(a)));let f=ce(d.sessionId);return o?.(f),s?.(f),{entryId:`interview/session/${d.sessionId}`,session:d,sessionId:d.sessionId}},async sendMessage(t){if(!x||f.status!==r.ACTIVE)throw Error(`Cannot send an interview message before the session starts.`);let a=u(l()),o=x.sessionId,s=await e.sendMessage(o,{clientMessageId:z(`interview-message`),content:t,locale:l().locale});a!==u(l())||f.status!==r.ACTIVE||(x={...x,messages:[...x.messages,{content:t,createdAt:new Date().toISOString(),id:z(`interview-user`),role:`user`},{content:s.assistantMessage,createdAt:new Date().toISOString(),id:z(`interview-assistant`),role:`assistant`}],status:s.sessionStatus},s.sessionStatus!==n.ACTIVE&&i.clear(l()),S(R(x,P(l()))))}}}function ue(e){let t=s(e);return{async startSession(e,n){let{data:r}=await t.request(`/session`,{body:{...e,conversationId:n??void 0},conversationId:n,method:`POST`});return{conversationId:r.conversationId,messages:r.messages}},async updateContext(e,n){let{data:r}=await t.request(`/context`,{body:e,conversationId:n,method:`PATCH`});return r}}}function B(e){return e instanceof Error?e.message:`CustomerAgent support session request failed.`}function de(e){return e instanceof h&&e.code===`NOT_FOUND`}function V(e,t){return JSON.stringify(e)===JSON.stringify(t)}function H(e){return Array.isArray(e)?`[${e.map(e=>H(e)).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${H(t)}`).join(`,`)}}`:JSON.stringify(e)}function fe({api:e,buildContextPayload:t=p,cache:n,emitConversationCreated:r,emitStateChanged:i,getOptions:a,onSessionReady:o}){let s={status:b.IDLE},c=0,l=null,u=null,d=null,f=null,m=null,h=null,g=null,_=null;function y(e){V(s,e)||(s=e,i(s))}async function x(n){let r=t(a());return await e.startSession(r,n)}async function S(n,r,i){if(!e.updateContext)return;let o={...t(n),conversationId:i},s=H({key:r,payload:o});_!==s&&await e.updateContext(o,i).then(()=>{r===v(a())&&(_=s)}).catch(()=>void 0)}return{async ensureSession(){let e=a(),t=v(e);if(s.status===b.READY&&u===t)return l??{conversationId:s.conversationId,messages:[]};if(m&&h===t){let e=await m;if(e)return e}if(d&&f===t)return await d;let i=n.read(e),p=++c;y({status:i?b.REFRESHING:b.STARTING}),f=t,d=(async()=>{try{return await x(i)}catch(t){if(!i||!de(t))throw t;return n.clear(e),await x(null)}})();try{let e=await d;return p!==c||t!==v(a())?e:(l=e,u=t,n.write(a(),e.conversationId),o?.(a(),e),(!i||i!==e.conversationId)&&r(e.conversationId),y({conversationId:e.conversationId,status:b.READY}),e)}catch(r){throw p!==c||t!==v(a())?r:(i&&n.clear(e),y({error:{message:B(r)},status:b.ERROR}),r)}finally{f===t&&(d=null,f=null)}},getState(){return s},getSessionSnapshot(){return u===v(a())?l:null},invalidateSession(){let e=a(),t=v(e);c+=1,n.clear(e),u===t&&(l=null,u=null),f===t&&(d=null,f=null),h===t&&(m=null,h=null),g=null,_=null,y({status:b.IDLE})},async syncCachedSession(){let r=a(),i=v(r);if(s.status===b.READY&&u===i){g=i,await S(r,i,s.conversationId);return}if(g===i&&s.status!==b.ERROR)return;if(m&&h===i){await m;return}if(d&&f===i)return;let p=n.read(r);if(!p){g=i,y({status:b.IDLE});return}let _=++c;h=i,m=(async()=>{y({status:b.REFRESHING});try{let s=await e.startSession(t(r),p);return _!==c||i!==v(a())?null:(l=s,u=i,n.write(a(),s.conversationId),o?.(a(),s),y({conversationId:s.conversationId,status:b.READY}),g=i,await S(a(),i,s.conversationId),s)}catch(e){return _!==c||i!==v(a())?null:(n.clear(a()),de(e)?(u===i&&(l=null,u=null),y({status:b.IDLE}),g=i,null):(y({error:{message:B(e)},status:b.ERROR}),null))}finally{h===i&&(m=null,h=null)}})(),await m}}}function pe(e){let t=new EventTarget;return{emit(...n){let[r,i={}]=n,a={...e(),...i,timestamp:new Date().toISOString(),type:r};t.dispatchEvent(new CustomEvent(r,{detail:a}))},on(e,n){let r=e=>n(e.detail);return t.addEventListener(e,r),()=>t.removeEventListener(e,r)}}}function U(e){let t=e.tagName.toLowerCase();return t===`button`||t===`input`||t===`select`||t===`textarea`||t===`summary`||t===`a`&&e.hasAttribute(`href`)}function me(e,t,n){if(n===void 0){delete e[t];return}e[t]=n}function he(e,t){let n=t.isOpen?`open`:`closed`;e.setAttribute(`aria-expanded`,t.isOpen?`true`:`false`),e.dataset.state=n,e.dataset.customerAgentState=n,me(e.dataset,`customerAgentActiveEntry`,t.activeEntryId),me(e.dataset,`customerAgentActiveKind`,t.activeKind),e.dataset.customerAgentHasInvitation=t.hasInvitation?`true`:`false`,e.dataset.customerAgentHasUnread=t.hasUnread?`true`:`false`,me(e.dataset,`customerAgentViewport`,t.viewport),delete e.dataset.customerAgentLauncher,U(e)||(e.setAttribute(`role`,`button`),e.hasAttribute(`tabindex`)||(e.tabIndex=0))}function ge(){let e=document.createElement(`div`);e.style.cssText=[`position: fixed`,`visibility: hidden`,`height: env(safe-area-inset-bottom)`,`pointer-events: none`].join(`;`),document.body.appendChild(e);let t=Number.parseFloat(getComputedStyle(e).height)||0;return e.remove(),t}function _e(e={}){let t=window.visualViewport,n=window.innerWidth,r=window.innerHeight,i=t?.height??r,a=e.mode!==`auto`&&e.mode!==void 0?!0:n<=640,o=a?e.mode===`bottom-sheet`?`bottom-sheet`:`fullscreen`:`desktop`,s=Math.max(0,t?.offsetTop??0);return{height:r,isMobile:a,keyboardInset:Math.max(0,r-i-s),mode:a?`mobile`:`desktop`,offsetTop:s,presentation:o,safeAreaBottom:ge(),visualHeight:i,width:n}}e();var W=null,G=null,K=null,ve=null,ye=`customer-agent-widget`,be=260,xe=[],Se=new WeakMap,Ce=0;async function we(){return K||(ve??=Promise.all([import(`./chunks/react-CKmEJ8Ba.js`).then(e=>A(e.t(),1)),import(`./chunks/client-duvjg9sB.js`).then(e=>A(e.t(),1)),import(`./chunks/App-B4dn3hns.js`)]).then(([e,t,n])=>(K={createElement:e.createElement,createRoot:t.createRoot,preloadWidgetPanelShell:n.preloadWidgetPanelShell,WidgetApp:n.WidgetApp},K)).catch(e=>{throw ve=null,e}),await ve)}function Te(e){let t=xe.splice(0);for(let n of t)n.active&&(n.unsubscribe=e.on(n.eventName,n.handler))}function Ee(){document.getElementById(ye)?.remove()}function De(e){return typeof e==`string`?document.querySelector(e)??document.body:e??document.body}function Oe(e){let t=Se.get(e);if(t)return t;let n=`element-${++Ce}`;return Se.set(e,n),n}function ke(e){return typeof e==`string`?document.querySelector(e):e??null}function Ae(e){return Object.prototype.toString.call(e)===`[object Object]`}function q(e){return Array.isArray(e)?`[${e.map(e=>q(e)).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${q(t)}`).join(`,`)}}`:JSON.stringify(e)}function je(e){return typeof e==`string`?`selector:${e}`:e?`element:${Oe(e)}`:null}function Me(e){let t=Oe(De(e.mount)),{launcher:n,mount:r,...i}=e;return{fingerprint:q({...i,launcher:n?{...n,target:je(n.target)}:void 0,mount:t}),key:q({appId:e.app_id,mount:t})}}function Ne(e,t){let n={...e};for(let[r,i]of Object.entries(t)){let t=e[r];n[r]=Ae(t)&&Ae(i)?Ne(t,i):i}return n}function J(e){return typeof e==`string`&&e.trim()?e.trim():null}function Pe(e,t){let n=t?.replace(`_`,`-`),r=n?.split(`-`)[0];return(n?e[n]:void 0)??(r?e[r]:void 0)??e.en??Object.values(e)[0]}function Fe(e,t){let n=J(t.branding.name)??J(t.branding.agentName)??J(t.branding.workspaceName),r=J(t.branding.primaryColor)??J(t.branding.primary_color),i=Pe(t.welcomeMessage,e.locale);return{...e,brand:{...e.brand,name:e.brand?.name??n??e.brand?.name},messages:{...i?{welcome_message:i}:{},...e.messages},theme:{...e.theme,primaryColor:e.theme?.primaryColor??r??e.theme?.primaryColor}}}function Ie(e,n=Me(e)){W?.shutdown(),Ee();let r=l(),u=document.createElement(`div`),p=pe(()=>({appId:b.app_id,widgetId:r})),v=De(e.mount),b=o(e,r),C=e.launcher?.target,w=!!b.open_on_init,T=y(b),ie=w,E=null,D=null,O=null,k=null,ae=null,A=null,j=null,M=null,N=re(b.locale,b.messages),P=_e(b.mobile),F=!1,se=0,I=null,L=`idle`,R=null,ce=!1,z=!1,B=!1,de=null,V=fe({api:ue(m()),cache:te(),emitConversationCreated(e){p.emit(t.CONVERSATION_CREATED,{...Ke(e)})},emitStateChanged(e){p.emit(t.SUPPORT_STATE_CHANGED,{support:e}),U(),J()},getOptions(){return b},onSessionReady(e,t){c.hydrateSession(e,t)}}),H=le({api:oe(),cache:f(),emitAvailable(e){p.emit(t.INTERVIEW_AVAILABLE,e)},emitConversationCreated(e){p.emit(t.CONVERSATION_CREATED,e)},emitSessionStarted(e){p.emit(t.INTERVIEW_SESSION_STARTED,e)},emitStateChanged(e){p.emit(t.INTERVIEW_STATE_CHANGED,{interview:e}),U(),J()},getOptions(){return b}});u.id=ye,u.className=`customer-agent-namespace`,u.dataset.customerAgent=`container`,v.appendChild(u);function U(){if(!E)return;let e=g(T.memoryRoute),t=T.requestedTarget?.type===`entry`?e?.split(`/`)[0]:T.requestedTarget?.type??e?.split(`/`)[0]??`support`;he(E,{activeEntryId:e,activeKind:t,hasInvitation:!1,hasUnread:!1,isOpen:w,targetConfigured:C!==void 0,targetConnected:!!E,viewport:P.mode})}function me(){!E||!D||(D.ariaExpanded===null?E.removeAttribute(`aria-expanded`):E.setAttribute(`aria-expanded`,D.ariaExpanded),D.role===null?E.removeAttribute(`role`):E.setAttribute(`role`,D.role),D.state===null?delete E.dataset.state:E.dataset.state=D.state,D.tabIndex===null?E.removeAttribute(`tabindex`):E.setAttribute(`tabindex`,D.tabIndex))}function ge(){ae?.(),ae=null,a(E),me(),E=null,D=null}function ve(){typeof C!=`string`||O!==null||(O=window.requestAnimationFrame(()=>{if(O=null,!(F||typeof C!=`string`)){if(ke(C)===E){U();return}J()}}))}function xe(){if(k?.disconnect(),k=null,typeof C!=`string`||typeof MutationObserver>`u`)return;let e=document.documentElement??document.body;e&&(k=new MutationObserver(ve),k.observe(e,{attributes:!0,childList:!0,subtree:!0}))}function Se(){let e=ke(C);if(e===E){U();return}if(ge(),!e)return;let t=e;E=t,i(t),D={ariaExpanded:t.getAttribute(`aria-expanded`),role:t.getAttribute(`role`),state:t.dataset.state??null,tabIndex:t.getAttribute(`tabindex`)};function n(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}function r(e){n(e),Q(!w)}function a(e){e.key!==`Enter`&&e.key!==` `||(n(e),Q(!w))}t.addEventListener(`click`,r,{capture:!0}),t.addEventListener(`keydown`,a,{capture:!0}),ae=()=>{t.removeEventListener(`click`,r,{capture:!0}),t.removeEventListener(`keydown`,a,{capture:!0})},U()}function Ce(){L===`idle`&&(L=`queued`,queueMicrotask(()=>{F||(L=`emitted`,p.emit(t.WIDGET_READY))}))}function Oe(e){let n=!0;return queueMicrotask(()=>{F||!n||e({appId:b.app_id,timestamp:new Date().toISOString(),type:t.WIDGET_READY,widgetId:r})}),()=>{n=!1}}function Ae(e){let n=e instanceof Error?e.message:`CustomerAgent widget UI failed to load.`;console.error(`CustomerAgent widget UI failed to load.`,e),p.emit(t.ERROR,{message:n})}function q(){return R??=we().then(async e=>{F||(I??=e.createRoot(u),await e.preloadWidgetPanelShell())}).catch(e=>{throw R=null,e}),R}function je(){if(!F){if(!E||ie||w){J();return}if(!K||!I){J();return}I.render(K.createElement(K.WidgetApp,{activeTarget:T.requestedTarget,hasPanel:!1,hasCustomLauncher:!0,eventBus:p,interviewRuntime:{chooseInvitation:H.chooseInvitation,ensureInvitation:H.ensureInvitation,getActiveSession:H.getActiveSession,startInvitation:H.startInvitation},isOpen:!1,launcherTargetElement:E,memoryRoute:T.memoryRoute,onMemoryRouteChange:Ye,onOpenChange:Q,options:b,resolvedLocale:N,runtimeState:{interview:H.getState(),support:V.getState()},supportRuntime:{ensureSession:V.ensureSession,getSessionSnapshot:V.getSessionSnapshot,invalidateSession:V.invalidateSession},isViewportSettling:B,viewport:P,widgetId:r})),Ce()}}function J(){if(!F){if(Se(),E&&!ie&&!w){ce=!1,q().then(je).catch(Ae);return}if(!K||!I){ce=!0,we().then(e=>{F||(I??=e.createRoot(u),ce&&(ce=!1,J()))}).catch(e=>{Ae(e)});return}I.render(K.createElement(K.WidgetApp,{activeTarget:T.requestedTarget,hasPanel:ie,hasCustomLauncher:!!E,eventBus:p,interviewRuntime:{chooseInvitation:H.chooseInvitation,ensureInvitation:H.ensureInvitation,getActiveSession:H.getActiveSession,startInvitation:H.startInvitation},isOpen:w,launcherTargetElement:E,memoryRoute:T.memoryRoute,onMemoryRouteChange:Ye,onOpenChange:Q,options:b,resolvedLocale:N,runtimeState:{interview:H.getState(),support:V.getState()},supportRuntime:{ensureSession:V.ensureSession,getSessionSnapshot:V.getSessionSnapshot,invalidateSession:V.invalidateSession},isViewportSettling:B,viewport:P,widgetId:r})),q().then(Ce).catch(Ae)}}function Pe(){let e=++se;N=re(b.locale,b.messages),ne(b.locale,b.messages).then(t=>{F||e!==se||(N=t,J())}).catch(n=>{if(F||e!==se)return;let r=n instanceof Error?n.message:`CustomerAgent locale messages failed to load.`;console.error(`CustomerAgent locale messages failed to load.`,n),p.emit(t.ERROR,{message:r})})}function Ie(){N=re(b.locale,b.messages),P=_e(b.mobile),X()}function Le(e){S(e)!==S(b)&&(T=y(b))}function Y(){P=_e(b.mobile),X()}function Re(){return w&&!b.embedded&&P.presentation===`fullscreen`}function ze(){let e=window.navigator.platform,t=window.navigator.maxTouchPoints??0;return/iP(ad|hone|od)/.test(e)||e===`MacIntel`&&t>1}function Be(){if(de)return;let e=document.body,t=document.documentElement,n=window.scrollX,r=window.scrollY,i=ze()?`fixed`:`overflow`,a=Math.max(0,window.innerWidth-t.clientWidth),o=Number.parseFloat(window.getComputedStyle(e).paddingRight)||0;de={bodyLeft:e.style.left,bodyOverflow:e.style.overflow,bodyOverscrollBehavior:e.style.overscrollBehavior,bodyPaddingRight:e.style.paddingRight,bodyPosition:e.style.position,bodyRight:e.style.right,bodyTop:e.style.top,bodyWidth:e.style.width,htmlOverflow:t.style.overflow,htmlOverscrollBehavior:t.style.overscrollBehavior,htmlScrollbarGutter:t.style.scrollbarGutter,scrollX:n,scrollY:r,strategy:i},t.style.overflow=`hidden`,t.style.overscrollBehavior=`contain`,e.style.overflow=`hidden`,e.style.overscrollBehavior=`contain`,`scrollbarGutter`in t.style?t.style.scrollbarGutter=`stable`:a>0&&(e.style.paddingRight=`${o+a}px`),i===`fixed`&&(e.style.left=`-${n}px`,e.style.position=`fixed`,e.style.right=`0`,e.style.top=`-${r}px`,e.style.width=`100%`)}function Ve(){let e=de;if(!e)return;de=null;let t=document.body,n=document.documentElement;n.style.overflow=e.htmlOverflow,n.style.overscrollBehavior=e.htmlOverscrollBehavior,n.style.scrollbarGutter=e.htmlScrollbarGutter,t.style.left=e.bodyLeft,t.style.overflow=e.bodyOverflow,t.style.overscrollBehavior=e.bodyOverscrollBehavior,t.style.paddingRight=e.bodyPaddingRight,t.style.position=e.bodyPosition,t.style.right=e.bodyRight,t.style.top=e.bodyTop,t.style.width=e.bodyWidth,e.strategy===`fixed`&&window.scrollTo(e.scrollX,e.scrollY)}function X(){if(Re()){Be();return}Ve()}function He(e){return w&&!b.embedded&&e.presentation===`fullscreen`}function Ue(){j!==null&&(window.clearTimeout(j),j=null),B&&(B=!1,J())}function We(){j!==null&&window.clearTimeout(j),j=window.setTimeout(()=>{j=null,!F&&Ue()},be)}function Z(){A===null&&(A=window.requestAnimationFrame(()=>{if(A=null,F)return;let e=_e(b.mobile),t=He(e);P=e,X(),t?(B=!0,We()):(j!==null&&(window.clearTimeout(j),j=null),B=!1),J()}))}function Ge(){z||(z=!0,queueMicrotask(()=>{z=!1,!F&&(Je(),V.syncCachedSession(),H.syncAvailability())}))}function Ke(e){return{conversationId:e,conversationType:`support`,entryId:d(e),supportConversationId:e}}function qe(){return{activeEntryId:g(T.memoryRoute),activeTarget:T.requestedTarget,appId:b.app_id,isOpen:w,isReady:L===`emitted`,launcher:{targetConfigured:C!==void 0,targetConnected:!!E},support:V.getState(),interview:H.getState(),widgetId:r}}function Je(){let e=m(),n=`${e}::${b.app_id}`;M!==n&&(M=n,s(e).request(`/apps/${b.app_id}/public-config`).then(({data:e})=>{M===n&&(b=Fe(b,e),Pe(),Y(),J())}).catch(e=>{if(e instanceof h&&e.code===`NOT_FOUND`)return;let n=e instanceof Error?e.message:`CustomerAgent public config request failed.`;console.error(`CustomerAgent public config request failed.`,e),p.emit(t.ERROR,{message:n})}))}window.addEventListener(`resize`,Z),window.addEventListener(`orientationchange`,Z),window.visualViewport?.addEventListener(`resize`,Z),window.visualViewport?.addEventListener(`scroll`,Z);function Q(e){if(e?ie=!0:T=x(T),w===e){J();return}w=e,X(),U(),J(),p.emit(w?t.WIDGET_OPENED:t.WIDGET_CLOSED)}function $(e){T=_(b,T,e)}function Ye(e){T=ee(b,T,e),U()}let Xe={async chooseInvitation(e,t){await H.chooseInvitation(e,t)},async ensureInvitation(){return{invitationId:await H.ensureInvitation()}},hide(){Q(!1)},getInterviewState(){return H.getState()},getInterviewSession(){return H.getActiveSession()},async getSession(){return{conversationId:(await V.ensureSession()).conversationId}},getState:qe,getSupportState(){return V.getState()},identify(e){let t=b;b={...b,user:e},Le(t),Ie(),J(),Ge()},on(e,n){let r=p.on(e,n),i;return e===t.WIDGET_READY&&L===`emitted`&&(i=Oe(n)),()=>{i?.(),r()}},openEntry(e){$({entryId:e,type:`entry`}),Q(!0)},async loadInterviewReward(e){return await H.loadReward(e)},async sendInterviewMessage(e){await H.sendMessage(e)},setContext(e,t={}){b={...b,context:t.merge===!1?e:Ne(b.context,e),context_ready:t.ready??b.context_ready},Ie(),J(),Ge()},show(e){$(e),Q(!0)},shutdown(){F=!0,W===Xe&&(W=null,G=null),I?.unmount(),window.removeEventListener(`resize`,Z),window.removeEventListener(`orientationchange`,Z),window.visualViewport?.removeEventListener(`resize`,Z),window.visualViewport?.removeEventListener(`scroll`,Z),A!==null&&(window.cancelAnimationFrame(A),A=null),j!==null&&(window.clearTimeout(j),j=null),Ve(),k?.disconnect(),k=null,O!==null&&(window.cancelAnimationFrame(O),O=null),ge(),u.remove()},async startInvitation(e){let t=await H.startInvitation(e);return $({sessionId:t.sessionId,type:`interview`}),J(),{entryId:t.entryId,sessionId:t.sessionId}},async startInterview(){$({type:`interview`}),Q(!0);try{let e=await H.ensureInvitation(),t=await H.startInvitation(e);return $({sessionId:t.sessionId,type:`interview`}),J(),{entryId:t.entryId,sessionId:t.sessionId}}catch(e){throw $({type:`support`}),J(),e}},toggle(e){e&&$(e),Q(!w)},update(e){let t=b;Object.prototype.hasOwnProperty.call(e,`launcher`)&&(C=e.launcher?.target,xe()),b={...o({...b,...e,context:e.context??b.context},b.widgetId),embedded:b.embedded},Le(t),Pe(),Y(),J(),Ge()}};return W=Xe,G=n,Te(p),xe(),Pe(),X(),J(),Ge(),Xe}function Le(e){if(W&&e.app_id){let t=Me(e);return G?.key===t.key?(G.fingerprint!==t.fingerprint&&(W.update(e),G=t),e.open_on_init&&W.show(),W):Ie(e,t)}return Ie(e)}var Y={boot:Le,async chooseInvitation(e,t){await W?.chooseInvitation(e,t)},async ensureInvitation(){return W?await W.ensureInvitation():null},getInterviewState(){return W?.getInterviewState()??null},getInterviewSession(){return W?.getInterviewSession()??null},async getSession(){return W?await W.getSession():null},getState(){return W?.getState()??null},getSupportState(){return W?.getSupportState()??null},hide(){W?.hide()},identify(e){W?.identify(e)},on(e,t){if(W)return W.on(e,t);let n={active:!0,eventName:e,handler:t};return xe.push(n),()=>{n.active=!1,n.unsubscribe?.()}},setContext(e,t){W?.setContext(e,t)},openEntry(e){W?.openEntry(e)},async loadInterviewReward(e){return W?await W.loadInterviewReward(e):null},async sendInterviewMessage(e){await W?.sendInterviewMessage(e)},show(e){W?.show(e)},shutdown(){W?.shutdown(),W=null,G=null},async startInvitation(e){return W?await W.startInvitation(e):null},async startInterview(){return W?await W.startInterview():null},toggle(e){W?.toggle(e)},update(e){W?.update(e)}};function Re(e,...t){switch(e){case`boot`:return Y.boot(t[0]);case`chooseInvitation`:return Y.chooseInvitation(t[0],t[1]);case`ensureInvitation`:return Y.ensureInvitation();case`getSession`:return Y.getSession();case`getState`:return Y.getState();case`getSupportState`:return Y.getSupportState();case`getInterviewState`:return Y.getInterviewState();case`getInterviewSession`:return Y.getInterviewSession();case`hide`:return Y.hide();case`identify`:return Y.identify(t[0]);case`on`:return Y.on(t[0],t[1]);case`openEntry`:return Y.openEntry(t[0]);case`loadInterviewReward`:return Y.loadInterviewReward(t[0]);case`sendInterviewMessage`:return Y.sendInterviewMessage(t[0]);case`setContext`:return Y.setContext(t[0],t[1]);case`show`:return Y.show(t[0]);case`shutdown`:return Y.shutdown();case`startInvitation`:return Y.startInvitation(t[0]);case`startInterview`:return Y.startInterview();case`toggle`:return Y.toggle(t[0]);case`update`:return Y.update(t[0]);default:throw Error(`CustomerAgent received an unknown command: ${String(e)}.`)}}var ze=Object.assign(Re,Y),Be=Y.chooseInvitation,Ve=Y.ensureInvitation,X=Y.getInterviewState,He=Y.getInterviewSession,Ue=Y.getSession,We=Y.getState,Z=Y.getSupportState,Ge=Y.hide,Ke=Y.identify,qe=Y.on,Je=Y.openEntry,Q=Y.loadInterviewReward,$=Y.sendInterviewMessage,Ye=Y.setContext,Xe=Y.show,Ze=Y.shutdown,Qe=Y.startInvitation,$e=Y.startInterview,et=Y.toggle,tt=Y.update;export{ze as CustomerAgent,Le as boot,Be as chooseInvitation,Ve as ensureInvitation,He as getInterviewSession,X as getInterviewState,Ue as getSession,We as getState,Z as getSupportState,Ge as hide,Ke as identify,Q as loadInterviewReward,k as n,qe as on,Je as openEntry,A as r,$ as sendInterviewMessage,Ye as setContext,Xe as show,Ze as shutdown,$e as startInterview,Qe as startInvitation,O as t,et as toggle,tt as update};
1
+ import{n as e,t}from"./chunks/constants-BHZTZVRN.js";import{r as n,t as r}from"./chunks/interviewTypes-Ch2NsXKB.js";import{i,t as a}from"./chunks/launcherAnchorStore-JMTZZGKC.js";import{_ as o,b as s,f as c,g as l,m as u,n as d,p as f,u as p,v as m,y as h}from"./chunks/routes-aV4LZuEj.js";import{a as g,c as _,d as v,i as y,l as b,n as x,o as S,r as ee,u as te}from"./chunks/navigationState-LdqG_Osx.js";import{n as ne,r as re}from"./chunks/i18n-Q8u2wtW4.js";var C=Object.create,w=Object.defineProperty,T=Object.getOwnPropertyDescriptor,ie=Object.getOwnPropertyNames,E=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty,O=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),k=(e,t)=>{let n={};for(var r in e)w(n,r,{get:e[r],enumerable:!0});return t||w(n,Symbol.toStringTag,{value:`Module`}),n},ae=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ie(t),a=0,o=i.length,s;a<o;a++)s=i[a],!D.call(e,s)&&s!==n&&w(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=T(t,s))||r.enumerable});return e},A=(e,t,n)=>(n=e==null?{}:C(E(e)),ae(t||!e||!e.__esModule?w(n,`default`,{value:e,enumerable:!0}):n,e));function oe(){let e=s(m());return{async checkEligibility(t,n){let{data:r}=await e.request(`/interviews/eligibility`,{body:t,method:`POST`,signal:n?.signal});return r},async chooseInvitation(t,n){await e.request(`/interviews/invitations/${t}/choice`,{body:n,method:`PATCH`})},async createInvitation(t){let{data:n}=await e.request(`/interviews/invitations`,{body:t,method:`POST`});return n},async getReward(t){let{data:n}=await e.request(`/interviews/sessions/${t}/reward`);return n},async getSession(t,n){let{data:r}=await e.request(`/interviews/sessions/${t}`,{signal:n?.signal});return r},async sendMessage(t,n){let{data:r}=await e.request(`/interviews/sessions/${t}/messages`,{body:n,method:`POST`});return r},async startInvitation(t,n){let{data:r}=await e.request(`/interviews/invitations/${t}/start`,{body:n,method:`POST`});return r}}}function j(e){return typeof e==`string`&&e.trim()?e.trim():null}function M(e){return e.anonymous_id??e.user?.id}function N(e){return{...e.context,...e.user,userId:e.user?.id,visitorId:M(e)}}function P(e){return j(e.brand?.name)??`Customer Agent`}function F(e){return{appId:e.app_id,locale:e.locale,pageContext:e.context??{},userContext:N(e),visitorId:M(e)}}function se(e,t){return{appId:e.app_id,campaignId:t.campaignId,context:e.context??{},showRequestId:t.showRequestId,userContext:N(e),variantKey:t.variantKey,visitorId:M(e)}}function I(e){return e instanceof Error?e.message:`CustomerAgent interview request failed.`}function L(e,t){return JSON.stringify(e)===JSON.stringify(t)}function R(e,t){return e.status===n.ACTIVE?{entryId:`interview/session/${e.sessionId}`,sessionId:e.sessionId,status:r.ACTIVE,title:t}:{sessionId:e.sessionId,sessionStatus:e.status,status:r.TERMINAL}}function ce(e){return{conversationId:`interview/session/${e}`,conversationType:`interview`,entryId:`interview/session/${e}`,interviewSessionId:e}}function z(e){return typeof crypto<`u`&&`randomUUID`in crypto?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${Math.random().toString(36).slice(2)}`}function le({api:e,buildContextPayload:t=p,cache:i,emitAvailable:a,emitConversationCreated:o,emitSessionStarted:s,emitStateChanged:c,getOptions:l}){let d=new Set,f={status:r.IDLE},m=0,h=null,g=null,_=null,v=null,y=null,b=null,x=null;function S(e){L(f,e)||(f=e,c(f))}function ee(e,t){y=t,b=null,x=null;let n={body:t.invitation.body,campaignId:t.campaignId,laterCta:t.invitation.laterCta,startCta:t.invitation.startCta,status:r.AVAILABLE,title:t.invitation.title};S(n),d.has(e)||(d.add(e),a(n))}function te(){y=null,b=null,x=null,S({status:r.IDLE})}function ne(){v?.abort(),v=null,g=null,_=null}async function re(t,n,i){let a=l(),o=await e.checkEligibility(F(a),{signal:i});if(!(n!==m||t!==u(l()))){if(h=t,!o.eligible||o.status&&o.status!==r.AVAILABLE||!o.campaignId||!o.showRequestId||!o.invitation){y=null,b=null,x=null,S({status:r.UNAVAILABLE});return}ee(t,o)}}async function C(){let t=l(),a=u(t);if(!a){m+=1,ne(),h=null,te();return}let o=g!==null&&_!==a;if(o&&ne(),!o&&h===a&&f.status!==r.ERROR)return;if(g&&_===a){await g;return}ne();let s=++m,c=new AbortController;v=c,_=a,g=(async()=>{S({status:r.CHECKING});try{let r=i.read(t);if(r)try{let t=await e.getSession(r.sessionId,{signal:c.signal});if(s!==m||a!==u(l()))return;if(t.status!==n.ACTIVE){x=null,i.clear(l()),await re(a,s,c.signal);return}x=t,S(R(t,r.title)),h=a;return}catch{if(s!==m||a!==u(l()))return;x=null,i.clear(l())}await re(a,s,c.signal)}catch(e){if(s!==m||a!==u(l()))return;x=null,S({error:{message:I(e)},status:r.ERROR})}finally{_===a&&(g=null,_=null),v===c&&(v=null)}})(),await g}return{async chooseInvitation(t,n){await e.chooseInvitation(t,{choice:n})},async ensureInvitation(){let t=u(l());if(!t)throw m+=1,ne(),h=null,te(),Error(`No interview invitation is available.`);if((!y||f.status!==r.AVAILABLE)&&await C(),!y||f.status!==r.AVAILABLE)throw Error(`No interview invitation is available.`);if(b)return b;let n=await e.createInvitation(se(l(),y));return t===u(l())&&(b=n.invitationId),n.invitationId},getState(){return f.status===r.ACTIVE?{...f,title:j(l().brand?.name)??f.title??P(l())}:f},getActiveSession(){return x},async loadReward(t=x?.sessionId){if(!t)throw Error(`Cannot load an interview reward before the session starts.`);return await e.getReward(t)},syncAvailability:C,async startInvitation(r){let a=l(),c=u(a),d=await e.startInvitation(r,t(a));if(!c||c!==u(l()))return{entryId:`interview/session/${d.sessionId}`,session:d,sessionId:d.sessionId};x=d,d.status===n.ACTIVE?i.write(a,{entryId:`interview/session/${d.sessionId}`,priority:20,sessionId:d.sessionId,title:P(a)}):i.clear(a),S(R(d,P(a)));let f=ce(d.sessionId);return o?.(f),s?.(f),{entryId:`interview/session/${d.sessionId}`,session:d,sessionId:d.sessionId}},async sendMessage(t){if(!x||f.status!==r.ACTIVE)throw Error(`Cannot send an interview message before the session starts.`);let a=u(l()),o=x.sessionId,s=await e.sendMessage(o,{clientMessageId:z(`interview-message`),content:t,locale:l().locale});a!==u(l())||f.status!==r.ACTIVE||(x={...x,messages:[...x.messages,{content:t,createdAt:new Date().toISOString(),id:z(`interview-user`),role:`user`},{content:s.assistantMessage,createdAt:new Date().toISOString(),id:z(`interview-assistant`),role:`assistant`}],status:s.sessionStatus},s.sessionStatus!==n.ACTIVE&&i.clear(l()),S(R(x,P(l()))))}}}function ue(e){let t=s(e);return{async startSession(e,n){let{data:r}=await t.request(`/session`,{body:{...e,conversationId:n??void 0},conversationId:n,method:`POST`});return{conversationId:r.conversationId,messages:r.messages}},async updateContext(e,n){let{data:r}=await t.request(`/context`,{body:e,conversationId:n,method:`PATCH`});return r}}}function B(e){return e instanceof Error?e.message:`CustomerAgent support session request failed.`}function de(e){return e instanceof h&&e.code===`NOT_FOUND`}function V(e,t){return JSON.stringify(e)===JSON.stringify(t)}function H(e){return Array.isArray(e)?`[${e.map(e=>H(e)).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${H(t)}`).join(`,`)}}`:JSON.stringify(e)}function fe({api:e,buildContextPayload:t=p,cache:n,emitConversationCreated:r,emitStateChanged:i,getOptions:a,onSessionReady:o}){let s={status:b.IDLE},c=0,l=null,u=null,d=null,f=null,m=null,h=null,g=null,_=null;function y(e){V(s,e)||(s=e,i(s))}async function x(n){let r=t(a());return await e.startSession(r,n)}async function S(n,r,i){if(!e.updateContext)return;let o={...t(n),conversationId:i},s=H({key:r,payload:o});_!==s&&await e.updateContext(o,i).then(()=>{r===v(a())&&(_=s)}).catch(()=>void 0)}return{async ensureSession(){let e=a(),t=v(e);if(s.status===b.READY&&u===t)return l??{conversationId:s.conversationId,messages:[]};if(m&&h===t){let e=await m;if(e)return e}if(d&&f===t)return await d;let i=n.read(e),p=++c;y({status:i?b.REFRESHING:b.STARTING}),f=t,d=(async()=>{try{return await x(i)}catch(t){if(!i||!de(t))throw t;return n.clear(e),await x(null)}})();try{let e=await d;return p!==c||t!==v(a())?e:(l=e,u=t,n.write(a(),e.conversationId),o?.(a(),e),(!i||i!==e.conversationId)&&r(e.conversationId),y({conversationId:e.conversationId,status:b.READY}),e)}catch(r){throw p!==c||t!==v(a())?r:(i&&n.clear(e),y({error:{message:B(r)},status:b.ERROR}),r)}finally{f===t&&(d=null,f=null)}},getState(){return s},getSessionSnapshot(){return u===v(a())?l:null},invalidateSession(){let e=a(),t=v(e);c+=1,n.clear(e),u===t&&(l=null,u=null),f===t&&(d=null,f=null),h===t&&(m=null,h=null),g=null,_=null,y({status:b.IDLE})},async syncCachedSession(){let r=a(),i=v(r);if(s.status===b.READY&&u===i){g=i,await S(r,i,s.conversationId);return}if(g===i&&s.status!==b.ERROR)return;if(m&&h===i){await m;return}if(d&&f===i)return;let p=n.read(r);if(!p){g=i,y({status:b.IDLE});return}let _=++c;h=i,m=(async()=>{y({status:b.REFRESHING});try{let s=await e.startSession(t(r),p);return _!==c||i!==v(a())?null:(l=s,u=i,n.write(a(),s.conversationId),o?.(a(),s),y({conversationId:s.conversationId,status:b.READY}),g=i,await S(a(),i,s.conversationId),s)}catch(e){return _!==c||i!==v(a())?null:(n.clear(a()),de(e)?(u===i&&(l=null,u=null),y({status:b.IDLE}),g=i,null):(y({error:{message:B(e)},status:b.ERROR}),null))}finally{h===i&&(m=null,h=null)}})(),await m}}}function pe(e){let t=new EventTarget;return{emit(...n){let[r,i={}]=n,a={...e(),...i,timestamp:new Date().toISOString(),type:r};t.dispatchEvent(new CustomEvent(r,{detail:a}))},on(e,n){let r=e=>n(e.detail);return t.addEventListener(e,r),()=>t.removeEventListener(e,r)}}}function U(e){let t=e.tagName.toLowerCase();return t===`button`||t===`input`||t===`select`||t===`textarea`||t===`summary`||t===`a`&&e.hasAttribute(`href`)}function me(e,t,n){if(n===void 0){delete e[t];return}e[t]=n}function he(e,t){let n=t.isOpen?`open`:`closed`;e.setAttribute(`aria-expanded`,t.isOpen?`true`:`false`),e.dataset.state=n,e.dataset.customerAgentState=n,me(e.dataset,`customerAgentActiveEntry`,t.activeEntryId),me(e.dataset,`customerAgentActiveKind`,t.activeKind),e.dataset.customerAgentHasInvitation=t.hasInvitation?`true`:`false`,e.dataset.customerAgentHasUnread=t.hasUnread?`true`:`false`,me(e.dataset,`customerAgentViewport`,t.viewport),delete e.dataset.customerAgentLauncher,U(e)||(e.setAttribute(`role`,`button`),e.hasAttribute(`tabindex`)||(e.tabIndex=0))}function ge(){let e=document.createElement(`div`);e.style.cssText=[`position: fixed`,`visibility: hidden`,`height: env(safe-area-inset-bottom)`,`pointer-events: none`].join(`;`),document.body.appendChild(e);let t=Number.parseFloat(getComputedStyle(e).height)||0;return e.remove(),t}function _e(e={}){let t=window.visualViewport,n=window.innerWidth,r=window.innerHeight,i=t?.height??r,a=e.mode!==`auto`&&e.mode!==void 0?!0:n<=640,o=a?e.mode===`bottom-sheet`?`bottom-sheet`:`fullscreen`:`desktop`,s=Math.max(0,t?.offsetTop??0);return{height:r,isMobile:a,keyboardInset:Math.max(0,r-i-s),mode:a?`mobile`:`desktop`,offsetTop:s,presentation:o,safeAreaBottom:ge(),visualHeight:i,width:n}}e();var W=null,G=null,K=null,ve=null,ye=`customer-agent-widget`,be=260,xe=[],Se=new WeakMap,Ce=0;async function we(){return K||(ve??=Promise.all([import(`./chunks/react-CKmEJ8Ba.js`).then(e=>A(e.t(),1)),import(`./chunks/client-duvjg9sB.js`).then(e=>A(e.t(),1)),import(`./chunks/App-CJcyacL6.js`)]).then(([e,t,n])=>(K={createElement:e.createElement,createRoot:t.createRoot,preloadWidgetPanelShell:n.preloadWidgetPanelShell,WidgetApp:n.WidgetApp},K)).catch(e=>{throw ve=null,e}),await ve)}function Te(e){let t=xe.splice(0);for(let n of t)n.active&&(n.unsubscribe=e.on(n.eventName,n.handler))}function Ee(){document.getElementById(ye)?.remove()}function De(e){return typeof e==`string`?document.querySelector(e)??document.body:e??document.body}function Oe(e){let t=Se.get(e);if(t)return t;let n=`element-${++Ce}`;return Se.set(e,n),n}function ke(e){return typeof e==`string`?document.querySelector(e):e??null}function Ae(e){return Object.prototype.toString.call(e)===`[object Object]`}function q(e){return Array.isArray(e)?`[${e.map(e=>q(e)).join(`,`)}]`:e&&typeof e==`object`?`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${q(t)}`).join(`,`)}}`:JSON.stringify(e)}function je(e){return typeof e==`string`?`selector:${e}`:e?`element:${Oe(e)}`:null}function Me(e){let t=Oe(De(e.mount)),{launcher:n,mount:r,...i}=e;return{fingerprint:q({...i,launcher:n?{...n,target:je(n.target)}:void 0,mount:t}),key:q({appId:e.app_id,mount:t})}}function Ne(e,t){let n={...e};for(let[r,i]of Object.entries(t)){let t=e[r];n[r]=Ae(t)&&Ae(i)?Ne(t,i):i}return n}function J(e){return typeof e==`string`&&e.trim()?e.trim():null}function Pe(e,t){let n=t?.replace(`_`,`-`),r=n?.split(`-`)[0];return(n?e[n]:void 0)??(r?e[r]:void 0)??e.en??Object.values(e)[0]}function Fe(e,t){let n=J(t.branding.name)??J(t.branding.agentName)??J(t.branding.workspaceName),r=J(t.branding.primaryColor)??J(t.branding.primary_color),i=Pe(t.welcomeMessage,e.locale);return{...e,brand:{...e.brand,name:e.brand?.name??n??e.brand?.name},messages:{...i?{welcome_message:i}:{},...e.messages},theme:{...e.theme,primaryColor:e.theme?.primaryColor??r??e.theme?.primaryColor}}}function Ie(e,n=Me(e)){W?.shutdown(),Ee();let r=l(),u=document.createElement(`div`),p=pe(()=>({appId:b.app_id,widgetId:r})),v=De(e.mount),b=o(e,r),C=e.launcher?.target,w=!!b.open_on_init,T=y(b),ie=w,E=null,D=null,O=null,k=null,ae=null,A=null,j=null,M=null,N=re(b.locale,b.messages),P=_e(b.mobile),F=!1,se=0,I=null,L=`idle`,R=null,ce=!1,z=!1,B=!1,de=null,V=fe({api:ue(m()),cache:te(),emitConversationCreated(e){p.emit(t.CONVERSATION_CREATED,{...Ke(e)})},emitStateChanged(e){p.emit(t.SUPPORT_STATE_CHANGED,{support:e}),U(),J()},getOptions(){return b},onSessionReady(e,t){c.hydrateSession(e,t)}}),H=le({api:oe(),cache:f(),emitAvailable(e){p.emit(t.INTERVIEW_AVAILABLE,e)},emitConversationCreated(e){p.emit(t.CONVERSATION_CREATED,e)},emitSessionStarted(e){p.emit(t.INTERVIEW_SESSION_STARTED,e)},emitStateChanged(e){p.emit(t.INTERVIEW_STATE_CHANGED,{interview:e}),U(),J()},getOptions(){return b}});u.id=ye,u.className=`customer-agent-namespace`,u.dataset.customerAgent=`container`,v.appendChild(u);function U(){if(!E)return;let e=g(T.memoryRoute),t=T.requestedTarget?.type===`entry`?e?.split(`/`)[0]:T.requestedTarget?.type??e?.split(`/`)[0]??`support`;he(E,{activeEntryId:e,activeKind:t,hasInvitation:!1,hasUnread:!1,isOpen:w,targetConfigured:C!==void 0,targetConnected:!!E,viewport:P.mode})}function me(){!E||!D||(D.ariaExpanded===null?E.removeAttribute(`aria-expanded`):E.setAttribute(`aria-expanded`,D.ariaExpanded),D.role===null?E.removeAttribute(`role`):E.setAttribute(`role`,D.role),D.state===null?delete E.dataset.state:E.dataset.state=D.state,D.tabIndex===null?E.removeAttribute(`tabindex`):E.setAttribute(`tabindex`,D.tabIndex))}function ge(){ae?.(),ae=null,a(E),me(),E=null,D=null}function ve(){typeof C!=`string`||O!==null||(O=window.requestAnimationFrame(()=>{if(O=null,!(F||typeof C!=`string`)){if(ke(C)===E){U();return}J()}}))}function xe(){if(k?.disconnect(),k=null,typeof C!=`string`||typeof MutationObserver>`u`)return;let e=document.documentElement??document.body;e&&(k=new MutationObserver(ve),k.observe(e,{attributes:!0,childList:!0,subtree:!0}))}function Se(){let e=ke(C);if(e===E){U();return}if(ge(),!e)return;let t=e;E=t,i(t),D={ariaExpanded:t.getAttribute(`aria-expanded`),role:t.getAttribute(`role`),state:t.dataset.state??null,tabIndex:t.getAttribute(`tabindex`)};function n(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}function r(e){n(e),Q(!w)}function a(e){e.key!==`Enter`&&e.key!==` `||(n(e),Q(!w))}t.addEventListener(`click`,r,{capture:!0}),t.addEventListener(`keydown`,a,{capture:!0}),ae=()=>{t.removeEventListener(`click`,r,{capture:!0}),t.removeEventListener(`keydown`,a,{capture:!0})},U()}function Ce(){L===`idle`&&(L=`queued`,queueMicrotask(()=>{F||(L=`emitted`,p.emit(t.WIDGET_READY))}))}function Oe(e){let n=!0;return queueMicrotask(()=>{F||!n||e({appId:b.app_id,timestamp:new Date().toISOString(),type:t.WIDGET_READY,widgetId:r})}),()=>{n=!1}}function Ae(e){let n=e instanceof Error?e.message:`CustomerAgent widget UI failed to load.`;console.error(`CustomerAgent widget UI failed to load.`,e),p.emit(t.ERROR,{message:n})}function q(){return R??=we().then(async e=>{F||(I??=e.createRoot(u),await e.preloadWidgetPanelShell())}).catch(e=>{throw R=null,e}),R}function je(){if(!F){if(!E||ie||w){J();return}if(!K||!I){J();return}I.render(K.createElement(K.WidgetApp,{activeTarget:T.requestedTarget,hasPanel:!1,hasCustomLauncher:!0,eventBus:p,interviewRuntime:{chooseInvitation:H.chooseInvitation,ensureInvitation:H.ensureInvitation,getActiveSession:H.getActiveSession,startInvitation:H.startInvitation},isOpen:!1,launcherTargetElement:E,memoryRoute:T.memoryRoute,onMemoryRouteChange:Ye,onOpenChange:Q,options:b,resolvedLocale:N,runtimeState:{interview:H.getState(),support:V.getState()},supportRuntime:{ensureSession:V.ensureSession,getSessionSnapshot:V.getSessionSnapshot,invalidateSession:V.invalidateSession},isViewportSettling:B,viewport:P,widgetId:r})),Ce()}}function J(){if(!F){if(Se(),E&&!ie&&!w){ce=!1,q().then(je).catch(Ae);return}if(!K||!I){ce=!0,we().then(e=>{F||(I??=e.createRoot(u),ce&&(ce=!1,J()))}).catch(e=>{Ae(e)});return}I.render(K.createElement(K.WidgetApp,{activeTarget:T.requestedTarget,hasPanel:ie,hasCustomLauncher:!!E,eventBus:p,interviewRuntime:{chooseInvitation:H.chooseInvitation,ensureInvitation:H.ensureInvitation,getActiveSession:H.getActiveSession,startInvitation:H.startInvitation},isOpen:w,launcherTargetElement:E,memoryRoute:T.memoryRoute,onMemoryRouteChange:Ye,onOpenChange:Q,options:b,resolvedLocale:N,runtimeState:{interview:H.getState(),support:V.getState()},supportRuntime:{ensureSession:V.ensureSession,getSessionSnapshot:V.getSessionSnapshot,invalidateSession:V.invalidateSession},isViewportSettling:B,viewport:P,widgetId:r})),q().then(Ce).catch(Ae)}}function Pe(){let e=++se;N=re(b.locale,b.messages),ne(b.locale,b.messages).then(t=>{F||e!==se||(N=t,J())}).catch(n=>{if(F||e!==se)return;let r=n instanceof Error?n.message:`CustomerAgent locale messages failed to load.`;console.error(`CustomerAgent locale messages failed to load.`,n),p.emit(t.ERROR,{message:r})})}function Ie(){N=re(b.locale,b.messages),P=_e(b.mobile),X()}function Le(e){S(e)!==S(b)&&(T=y(b))}function Y(){P=_e(b.mobile),X()}function Re(){return w&&!b.embedded&&P.presentation===`fullscreen`}function ze(){let e=window.navigator.platform,t=window.navigator.maxTouchPoints??0;return/iP(ad|hone|od)/.test(e)||e===`MacIntel`&&t>1}function Be(){if(de)return;let e=document.body,t=document.documentElement,n=window.scrollX,r=window.scrollY,i=ze()?`fixed`:`overflow`,a=Math.max(0,window.innerWidth-t.clientWidth),o=Number.parseFloat(window.getComputedStyle(e).paddingRight)||0;de={bodyLeft:e.style.left,bodyOverflow:e.style.overflow,bodyOverscrollBehavior:e.style.overscrollBehavior,bodyPaddingRight:e.style.paddingRight,bodyPosition:e.style.position,bodyRight:e.style.right,bodyTop:e.style.top,bodyWidth:e.style.width,htmlOverflow:t.style.overflow,htmlOverscrollBehavior:t.style.overscrollBehavior,htmlScrollbarGutter:t.style.scrollbarGutter,scrollX:n,scrollY:r,strategy:i},t.style.overflow=`hidden`,t.style.overscrollBehavior=`contain`,e.style.overflow=`hidden`,e.style.overscrollBehavior=`contain`,`scrollbarGutter`in t.style?t.style.scrollbarGutter=`stable`:a>0&&(e.style.paddingRight=`${o+a}px`),i===`fixed`&&(e.style.left=`-${n}px`,e.style.position=`fixed`,e.style.right=`0`,e.style.top=`-${r}px`,e.style.width=`100%`)}function Ve(){let e=de;if(!e)return;de=null;let t=document.body,n=document.documentElement;n.style.overflow=e.htmlOverflow,n.style.overscrollBehavior=e.htmlOverscrollBehavior,n.style.scrollbarGutter=e.htmlScrollbarGutter,t.style.left=e.bodyLeft,t.style.overflow=e.bodyOverflow,t.style.overscrollBehavior=e.bodyOverscrollBehavior,t.style.paddingRight=e.bodyPaddingRight,t.style.position=e.bodyPosition,t.style.right=e.bodyRight,t.style.top=e.bodyTop,t.style.width=e.bodyWidth,e.strategy===`fixed`&&window.scrollTo(e.scrollX,e.scrollY)}function X(){if(Re()){Be();return}Ve()}function He(e){return w&&!b.embedded&&e.presentation===`fullscreen`}function Ue(){j!==null&&(window.clearTimeout(j),j=null),B&&(B=!1,J())}function We(){j!==null&&window.clearTimeout(j),j=window.setTimeout(()=>{j=null,!F&&Ue()},be)}function Z(){A===null&&(A=window.requestAnimationFrame(()=>{if(A=null,F)return;let e=_e(b.mobile),t=He(e);P=e,X(),t?(B=!0,We()):(j!==null&&(window.clearTimeout(j),j=null),B=!1),J()}))}function Ge(){z||(z=!0,queueMicrotask(()=>{z=!1,!F&&(Je(),V.syncCachedSession(),H.syncAvailability())}))}function Ke(e){return{conversationId:e,conversationType:`support`,entryId:d(e),supportConversationId:e}}function qe(){return{activeEntryId:g(T.memoryRoute),activeTarget:T.requestedTarget,appId:b.app_id,isOpen:w,isReady:L===`emitted`,launcher:{targetConfigured:C!==void 0,targetConnected:!!E},support:V.getState(),interview:H.getState(),widgetId:r}}function Je(){let e=m(),n=`${e}::${b.app_id}`;M!==n&&(M=n,s(e).request(`/apps/${b.app_id}/public-config`).then(({data:e})=>{M===n&&(b=Fe(b,e),Pe(),Y(),J())}).catch(e=>{if(e instanceof h&&e.code===`NOT_FOUND`)return;let n=e instanceof Error?e.message:`CustomerAgent public config request failed.`;console.error(`CustomerAgent public config request failed.`,e),p.emit(t.ERROR,{message:n})}))}window.addEventListener(`resize`,Z),window.addEventListener(`orientationchange`,Z),window.visualViewport?.addEventListener(`resize`,Z),window.visualViewport?.addEventListener(`scroll`,Z);function Q(e){if(e?ie=!0:T=x(T),w===e){J();return}w=e,X(),U(),J(),p.emit(w?t.WIDGET_OPENED:t.WIDGET_CLOSED)}function $(e){T=_(b,T,e)}function Ye(e){T=ee(b,T,e),U()}let Xe={async chooseInvitation(e,t){await H.chooseInvitation(e,t)},async ensureInvitation(){return{invitationId:await H.ensureInvitation()}},hide(){Q(!1)},getInterviewState(){return H.getState()},getInterviewSession(){return H.getActiveSession()},async getSession(){return{conversationId:(await V.ensureSession()).conversationId}},getState:qe,getSupportState(){return V.getState()},identify(e){let t=b;b={...b,user:e},Le(t),Ie(),J(),Ge()},on(e,n){let r=p.on(e,n),i;return e===t.WIDGET_READY&&L===`emitted`&&(i=Oe(n)),()=>{i?.(),r()}},openEntry(e){$({entryId:e,type:`entry`}),Q(!0)},async loadInterviewReward(e){return await H.loadReward(e)},async sendInterviewMessage(e){await H.sendMessage(e)},setContext(e,t={}){b={...b,context:t.merge===!1?e:Ne(b.context,e),context_ready:t.ready??b.context_ready},Ie(),J(),Ge()},show(e){$(e),Q(!0)},shutdown(){F=!0,W===Xe&&(W=null,G=null),I?.unmount(),window.removeEventListener(`resize`,Z),window.removeEventListener(`orientationchange`,Z),window.visualViewport?.removeEventListener(`resize`,Z),window.visualViewport?.removeEventListener(`scroll`,Z),A!==null&&(window.cancelAnimationFrame(A),A=null),j!==null&&(window.clearTimeout(j),j=null),Ve(),k?.disconnect(),k=null,O!==null&&(window.cancelAnimationFrame(O),O=null),ge(),u.remove()},async startInvitation(e){let t=await H.startInvitation(e);return $({sessionId:t.sessionId,type:`interview`}),J(),{entryId:t.entryId,sessionId:t.sessionId}},async startInterview(){$({type:`interview`}),Q(!0);try{let e=await H.ensureInvitation(),t=await H.startInvitation(e);return $({sessionId:t.sessionId,type:`interview`}),J(),{entryId:t.entryId,sessionId:t.sessionId}}catch(e){throw $({type:`support`}),J(),e}},toggle(e){e&&$(e),Q(!w)},update(e){let t=b;Object.prototype.hasOwnProperty.call(e,`launcher`)&&(C=e.launcher?.target,xe()),b={...o({...b,...e,context:e.context??b.context},b.widgetId),embedded:b.embedded},Le(t),Pe(),Y(),J(),Ge()}};return W=Xe,G=n,Te(p),xe(),Pe(),X(),J(),Ge(),Xe}function Le(e){if(W&&e.app_id){let t=Me(e);return G?.key===t.key?(G.fingerprint!==t.fingerprint&&(W.update(e),G=t),e.open_on_init&&W.show(),W):Ie(e,t)}return Ie(e)}var Y={boot:Le,async chooseInvitation(e,t){await W?.chooseInvitation(e,t)},async ensureInvitation(){return W?await W.ensureInvitation():null},getInterviewState(){return W?.getInterviewState()??null},getInterviewSession(){return W?.getInterviewSession()??null},async getSession(){return W?await W.getSession():null},getState(){return W?.getState()??null},getSupportState(){return W?.getSupportState()??null},hide(){W?.hide()},identify(e){W?.identify(e)},on(e,t){if(W)return W.on(e,t);let n={active:!0,eventName:e,handler:t};return xe.push(n),()=>{n.active=!1,n.unsubscribe?.()}},setContext(e,t){W?.setContext(e,t)},openEntry(e){W?.openEntry(e)},async loadInterviewReward(e){return W?await W.loadInterviewReward(e):null},async sendInterviewMessage(e){await W?.sendInterviewMessage(e)},show(e){W?.show(e)},shutdown(){W?.shutdown(),W=null,G=null},async startInvitation(e){return W?await W.startInvitation(e):null},async startInterview(){return W?await W.startInterview():null},toggle(e){W?.toggle(e)},update(e){W?.update(e)}};function Re(e,...t){switch(e){case`boot`:return Y.boot(t[0]);case`chooseInvitation`:return Y.chooseInvitation(t[0],t[1]);case`ensureInvitation`:return Y.ensureInvitation();case`getSession`:return Y.getSession();case`getState`:return Y.getState();case`getSupportState`:return Y.getSupportState();case`getInterviewState`:return Y.getInterviewState();case`getInterviewSession`:return Y.getInterviewSession();case`hide`:return Y.hide();case`identify`:return Y.identify(t[0]);case`on`:return Y.on(t[0],t[1]);case`openEntry`:return Y.openEntry(t[0]);case`loadInterviewReward`:return Y.loadInterviewReward(t[0]);case`sendInterviewMessage`:return Y.sendInterviewMessage(t[0]);case`setContext`:return Y.setContext(t[0],t[1]);case`show`:return Y.show(t[0]);case`shutdown`:return Y.shutdown();case`startInvitation`:return Y.startInvitation(t[0]);case`startInterview`:return Y.startInterview();case`toggle`:return Y.toggle(t[0]);case`update`:return Y.update(t[0]);default:throw Error(`CustomerAgent received an unknown command: ${String(e)}.`)}}var ze=Object.assign(Re,Y),Be=Y.chooseInvitation,Ve=Y.ensureInvitation,X=Y.getInterviewState,He=Y.getInterviewSession,Ue=Y.getSession,We=Y.getState,Z=Y.getSupportState,Ge=Y.hide,Ke=Y.identify,qe=Y.on,Je=Y.openEntry,Q=Y.loadInterviewReward,$=Y.sendInterviewMessage,Ye=Y.setContext,Xe=Y.show,Ze=Y.shutdown,Qe=Y.startInvitation,$e=Y.startInterview,et=Y.toggle,tt=Y.update;export{ze as CustomerAgent,Le as boot,Be as chooseInvitation,Ve as ensureInvitation,He as getInterviewSession,X as getInterviewState,Ue as getSession,We as getState,Z as getSupportState,Ge as hide,Ke as identify,Q as loadInterviewReward,k as n,qe as on,Je as openEntry,A as r,$ as sendInterviewMessage,Ye as setContext,Xe as show,Ze as shutdown,$e as startInterview,Qe as startInvitation,O as t,et as toggle,tt as update};