@runtypelabs/persona 1.40.0 → 1.40.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.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.global.js +9 -9
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/ui.ts +2 -2
package/dist/index.cjs
CHANGED
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
flex-shrink: 0 !important;
|
|
58
58
|
border-top: none !important;
|
|
59
59
|
padding: 8px 16px 12px 16px !important;
|
|
60
|
-
`}if(!Ae){let Yt="max-height: -moz-available !important; max-height: stretch !important;",An=l?"":"padding-top: 1.25em !important;";B.style.cssText+=Yt+An}};Pt(),es(e,t);let We=[],et=null,kt=()=>{et&&(et(),et=null),t.colorScheme==="auto"&&(et=ai(()=>{es(e,t)}))};kt(),We.push(()=>{et&&(et(),et=null)});let At=fi(vt),ct=null,b,xe=!1,$e=!0,gt=0,tt=0,mt=null,ht=!1,Ht=0,Vt=!1,Xt=125,$n=2e3,On=5,yn=50,rn=new Map,Me={active:!1,manuallyDeactivated:!1,lastUserMessageWasVoice:!1,lastUserMessageId:null},vn=(to=(eo=t.voiceRecognition)==null?void 0:eo.autoResume)!=null?to:!1,bn=l=>{s.emit("voice:state",{active:Me.active,source:l,timestamp:Date.now()})},qt=()=>{p(l=>({...l,voiceState:{active:Me.active,timestamp:Date.now(),manuallyDeactivated:Me.manuallyDeactivated}}))},I=()=>{var P,x;if(((P=t.voiceRecognition)==null?void 0:P.enabled)===!1)return;let l=Is(a.voiceState),d=!!l.active,S=Number((x=l.timestamp)!=null?x:0);Me.manuallyDeactivated=!!l.manuallyDeactivated,d&&Date.now()-S<ga&&setTimeout(()=>{Me.active||(Me.manuallyDeactivated=!1,Fe("restore"))},1e3)},ue=()=>b?xi(b.getMessages()).filter(l=>!l.__skipPersist):[];function Ce(l){if(!(i!=null&&i.save))return;let S={messages:l?xi(l):b?ue():[],metadata:a};try{let P=i.save(S);P instanceof Promise&&P.catch(x=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",x)})}catch(P){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",P)}}let Le=(l=!1)=>{if(!$e)return;let d=Date.now();ht&&d<Ht&&!l||(ht&&d>=Ht&&(ht=!1),!(!l&&!xe)&&(d-tt<Xt||(tt=d,mt&&cancelAnimationFrame(mt),mt=requestAnimationFrame(()=>{ht||!$e||(Vt=!0,Te.scrollTop=Te.scrollHeight,gt=Te.scrollTop,requestAnimationFrame(()=>{Vt=!1}),mt=null)}))))},Pe=null,nt=()=>B.querySelector("#persona-scroll-container")||Te,Oe=(l,d=500)=>{let S=l.scrollTop,P=l.clientHeight,x=l.scrollHeight,K=x-S;if(S+P>=x-2||Math.abs(K)<5)return;Pe!==null&&(cancelAnimationFrame(Pe),Pe=null);let T=performance.now(),q=ve=>1-Math.pow(1-ve,3),X=ve=>{let $=l.scrollHeight;$!==x&&(x=$,K=x-S);let De=ve-T,Ae=Math.min(De/d,1),ge=q(Ae),Je=S+K*ge;l.scrollTop=Je,Ae<1?Pe=requestAnimationFrame(X):(l.scrollTop=l.scrollHeight,Pe=null)};Pe=requestAnimationFrame(X)},F=l=>{let d=new Map;l.forEach(S=>{let P=rn.get(S.id);d.set(S.id,{streaming:S.streaming,role:S.role}),!P&&S.role==="assistant"&&s.emit("assistant:message",S),S.role==="assistant"&&(P!=null&&P.streaming)&&S.streaming===!1&&s.emit("assistant:complete",S)}),rn.clear(),d.forEach((S,P)=>{rn.set(P,S)})},ee=(l,d,S)=>{let P=document.createElement("div");d.forEach(T=>{var De,Ae;let q=null,X=r.find(ge=>!!(T.variant==="reasoning"&&ge.renderReasoning||T.variant==="tool"&&ge.renderToolCall||!T.variant&&ge.renderMessage)),ve=(De=t.layout)==null?void 0:De.messages;if(X)if(T.variant==="reasoning"&&T.reasoning&&X.renderReasoning){if(!_)return;q=X.renderReasoning({message:T,defaultRenderer:()=>Ts(T),config:t})}else if(T.variant==="tool"&&T.toolCall&&X.renderToolCall){if(!Z)return;q=X.renderToolCall({message:T,defaultRenderer:()=>Ms(T,t),config:t})}else X.renderMessage&&(q=X.renderMessage({message:T,defaultRenderer:()=>{let ge=pn(T,S,ve,t.messageActions,ie);return T.role!=="user"&&Es(ge,T,t,b),ge},config:t}));if(!q&&T.role==="assistant"&&!T.variant&&t.enableComponentStreaming!==!1&&is(T)){let Je=as(T);if(Je){let Ye=rs(Je,{config:t,message:T,transform:S});if(Ye){let st=document.createElement("div");if(st.className=["vanilla-message-bubble","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-p-4"].join(" "),st.id=`bubble-${T.id}`,st.setAttribute("data-message-id",T.id),T.content&&T.content.trim()){let Tt=document.createElement("div");Tt.className="tvw-mb-3 tvw-text-sm tvw-leading-relaxed",Tt.innerHTML=S({text:T.content,message:T,streaming:!!T.streaming,raw:T.rawContent}),st.appendChild(Tt)}st.appendChild(Ye),q=st}}}if(!q)if(T.variant==="reasoning"&&T.reasoning){if(!_)return;q=Ts(T)}else if(T.variant==="tool"&&T.toolCall){if(!Z)return;q=Ms(T,t)}else{let ge=(Ae=t.layout)==null?void 0:Ae.messages;ge!=null&&ge.renderUserMessage&&T.role==="user"?q=ge.renderUserMessage({message:T,config:t,streaming:!!T.streaming}):ge!=null&&ge.renderAssistantMessage&&T.role==="assistant"?q=ge.renderAssistantMessage({message:T,config:t,streaming:!!T.streaming}):q=pn(T,S,ge,t.messageActions,ie),T.role!=="user"&&q&&Es(q,T,t,b)}let $=document.createElement("div");$.className="tvw-flex",$.id=`wrapper-${T.id}`,$.setAttribute("data-wrapper-id",T.id),T.role==="user"&&$.classList.add("tvw-justify-end"),$.appendChild(q),P.appendChild($)});let x=d.some(T=>T.role==="assistant"&&T.streaming),K=d[d.length-1],de=(K==null?void 0:K.role)==="assistant"&&!K.streaming;if(xe&&d.some(T=>T.role==="user")&&!x&&!de){let T=In(),q=document.createElement("div");q.className=["tvw-max-w-[85%]","tvw-rounded-2xl","tvw-text-sm","tvw-leading-relaxed","tvw-shadow-sm","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-px-5","tvw-py-3"].join(" "),q.setAttribute("data-typing-indicator","true"),q.appendChild(T);let X=document.createElement("div");X.className="tvw-flex",X.id="wrapper-typing-indicator",X.setAttribute("data-wrapper-id","typing-indicator"),X.appendChild(q),P.appendChild(X)}ci(l,P),requestAnimationFrame(()=>{requestAnimationFrame(()=>{let T=nt();Oe(T)})})},H=()=>{M&&(h?(B.classList.remove("tvw-pointer-events-none","tvw-opacity-0"),N.classList.remove("tvw-scale-95","tvw-opacity-0"),N.classList.add("tvw-scale-100","tvw-opacity-100"),Ne?Ne.element.style.display="none":je&&(je.style.display="none")):(B.classList.add("tvw-pointer-events-none","tvw-opacity-0"),N.classList.remove("tvw-scale-100","tvw-opacity-100"),N.classList.add("tvw-scale-95","tvw-opacity-0"),Ne?Ne.element.style.display="":je&&(je.style.display="")))},C=(l,d="user")=>{if(!M||h===l)return;let S=h;h=l,H(),h&&(Cn(),Le(!0));let P={open:h,source:d,timestamp:Date.now()};h&&!S?s.emit("widget:opened",P):!h&&S&&s.emit("widget:closed",P),s.emit("widget:state",{open:h,launcherEnabled:M,voiceActive:Me.active,streaming:b.isStreaming()})},Y=l=>{j.disabled=l,R&&(R.disabled=l),At.buttons.forEach(d=>{d.disabled=l})},He=()=>{var x,K,de,T,q,X,ve,$,De,Ae,ge,Je,Ye,st;$t.textContent=(K=(x=t.copy)==null?void 0:x.welcomeTitle)!=null?K:"Hello \u{1F44B}",Ot.textContent=(T=(de=t.copy)==null?void 0:de.welcomeSubtitle)!=null?T:"Ask anything about your account or products.",Q.placeholder=(X=(q=t.copy)==null?void 0:q.inputPlaceholder)!=null?X:"How can I help...",(($=(ve=t.sendButton)==null?void 0:ve.useIcon)!=null?$:!1)||(j.textContent=(Ae=(De=t.copy)==null?void 0:De.sendButtonLabel)!=null?Ae:"Send");let d=(Je=(ge=t.theme)==null?void 0:ge.inputFontFamily)!=null?Je:"sans-serif",S=(st=(Ye=t.theme)==null?void 0:Ye.inputFontWeight)!=null?st:"400",P=Tt=>{switch(Tt){case"serif":return'Georgia, "Times New Roman", Times, serif';case"mono":return'"Courier New", Courier, "Lucida Console", Monaco, monospace';case"sans-serif":default:return'-apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif'}};Q.style.fontFamily=P(d),Q.style.fontWeight=S};t.clientToken&&(t={...t,getStoredSessionId:()=>{let l=a.session_id;return typeof l=="string"?l:null},setStoredSessionId:l=>{p(d=>({...d,session_id:l}))}}),b=new cn(t,{onMessagesChanged(l){ee(Ue,l,U),b&&(l.some(x=>x.role==="user")?At.render([],b,Q,l):At.render(t.suggestionChips,b,Q,l,t.suggestionChipsConfig)),Le(!xe),F(l);let d=[...l].reverse().find(P=>P.role==="user"),S=Me.lastUserMessageId;d&&d.id!==S&&(Me.lastUserMessageId=d.id,s.emit("user:message",d)),Me.lastUserMessageWasVoice=!!(d!=null&&d.viaVoice),Ce(l)},onStatusChanged(l){var P;let d=(P=t.statusIndicator)!=null?P:{},S=x=>{var K,de,T,q;return x==="idle"?(K=d.idleText)!=null?K:ut.idle:x==="connecting"?(de=d.connectingText)!=null?de:ut.connecting:x==="connected"?(T=d.connectedText)!=null?T:ut.connected:x==="error"?(q=d.errorText)!=null?q:ut.error:ut[x]};Ct.textContent=S(l)},onStreamingChanged(l){xe=l,Y(l),b&&ee(Ue,b.getMessages(),U),l||Le(!0)}}),c&&c.then(l=>{var d;l&&(l.metadata&&(a=Is(l.metadata),y.syncFromMetadata()),(d=l.messages)!=null&&d.length&&b.hydrateMessages(l.messages))}).catch(l=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to hydrate stored state:",l)});let Ie=l=>{var x;l.preventDefault();let d=Q.value.trim(),S=(x=re==null?void 0:re.hasAttachments())!=null?x:!1;if(!d&&!S)return;let P;S&&(P=[],P.push(...re.getContentParts()),d&&P.push(Gn(d))),Q.value="",Q.style.height="auto",b.sendMessage(d,{contentParts:P}),S&&re.clearAttachments()},ft=l=>{l.key==="Enter"&&!l.shiftKey&&(l.preventDefault(),j.click())},pe=null,Ee=!1,Be=null,ae=null,Se=()=>typeof window=="undefined"?null:window.webkitSpeechRecognition||window.SpeechRecognition||null,Fe=(l="user")=>{var K,de,T,q;if(Ee||b.isStreaming())return;let d=Se();if(!d)return;pe=new d;let P=(de=((K=t.voiceRecognition)!=null?K:{}).pauseDuration)!=null?de:2e3;pe.continuous=!0,pe.interimResults=!0,pe.lang="en-US";let x=Q.value;pe.onresult=X=>{let ve="",$="";for(let Ae=0;Ae<X.results.length;Ae++){let ge=X.results[Ae],Je=ge[0].transcript;ge.isFinal?ve+=Je+" ":$=Je}let De=x+ve+$;Q.value=De,Be&&clearTimeout(Be),(ve||$)&&(Be=window.setTimeout(()=>{let Ae=Q.value.trim();Ae&&pe&&Ee&&(ce(),Q.value="",Q.style.height="auto",b.sendMessage(Ae,{viaVoice:!0}))},P))},pe.onerror=X=>{X.error!=="no-speech"&&ce()},pe.onend=()=>{if(Ee){let X=Q.value.trim();X&&X!==x.trim()&&(Q.value="",Q.style.height="auto",b.sendMessage(X,{viaVoice:!0})),ce()}};try{if(pe.start(),Ee=!0,Me.active=!0,l!=="system"&&(Me.manuallyDeactivated=!1),bn(l),qt(),R){ae={backgroundColor:R.style.backgroundColor,color:R.style.color,borderColor:R.style.borderColor};let X=(T=t.voiceRecognition)!=null?T:{},ve=(q=X.recordingBackgroundColor)!=null?q:"#ef4444",$=X.recordingIconColor,De=X.recordingBorderColor;if(R.classList.add("tvw-voice-recording"),R.style.backgroundColor=ve,$){R.style.color=$;let Ae=R.querySelector("svg");Ae&&Ae.setAttribute("stroke",$)}De&&(R.style.borderColor=De),R.setAttribute("aria-label","Stop voice recognition")}}catch{ce("system")}},ce=(l="user")=>{if(Ee){if(Ee=!1,Be&&(clearTimeout(Be),Be=null),pe){try{pe.stop()}catch{}pe=null}if(Me.active=!1,bn(l),qt(),R){if(R.classList.remove("tvw-voice-recording"),ae){R.style.backgroundColor=ae.backgroundColor,R.style.color=ae.color,R.style.borderColor=ae.borderColor;let d=R.querySelector("svg");d&&d.setAttribute("stroke",ae.color||"currentColor"),ae=null}R.setAttribute("aria-label","Start voice recognition")}}},Qe=(l,d)=>{var Je,Ye,st,Tt,G,ke,Gt;if(!(typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined")))return null;let P=g("div","tvw-send-button-wrapper"),x=g("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer");x.type="button",x.setAttribute("aria-label","Start voice recognition");let K=(Je=l==null?void 0:l.iconName)!=null?Je:"mic",de=(Ye=d==null?void 0:d.size)!=null?Ye:"40px",T=(st=l==null?void 0:l.iconSize)!=null?st:de,q=parseFloat(T)||24,X=(Tt=l==null?void 0:l.backgroundColor)!=null?Tt:d==null?void 0:d.backgroundColor,ve=(G=l==null?void 0:l.iconColor)!=null?G:d==null?void 0:d.textColor;x.style.width=T,x.style.height=T,x.style.minWidth=T,x.style.minHeight=T,x.style.fontSize="18px",x.style.lineHeight="1";let $=ve||"currentColor",De=ne(K,q,$,1.5);De?(x.appendChild(De),x.style.color=$):(x.textContent="\u{1F3A4}",x.style.color=$),X?x.style.backgroundColor=X:x.classList.add("tvw-bg-cw-primary"),ve?x.style.color=ve:!ve&&!(d!=null&&d.textColor)&&x.classList.add("tvw-text-white"),l!=null&&l.borderWidth&&(x.style.borderWidth=l.borderWidth,x.style.borderStyle="solid"),l!=null&&l.borderColor&&(x.style.borderColor=l.borderColor),l!=null&&l.paddingX&&(x.style.paddingLeft=l.paddingX,x.style.paddingRight=l.paddingX),l!=null&&l.paddingY&&(x.style.paddingTop=l.paddingY,x.style.paddingBottom=l.paddingY),P.appendChild(x);let Ae=(ke=l==null?void 0:l.tooltipText)!=null?ke:"Start voice recognition";if(((Gt=l==null?void 0:l.showTooltip)!=null?Gt:!1)&&Ae){let Qt=g("div","tvw-send-button-tooltip");Qt.textContent=Ae,P.appendChild(Qt)}return{micButton:x,micButtonWrapper:P}},wt=()=>{if(Ee){let l=Q.value.trim();Me.manuallyDeactivated=!0,qt(),ce("user"),l&&(Q.value="",Q.style.height="auto",b.sendMessage(l))}else Me.manuallyDeactivated=!1,qt(),Fe("user")};R&&(R.addEventListener("click",wt),We.push(()=>{ce("system"),R&&R.removeEventListener("click",wt)}));let Bt=s.on("assistant:complete",()=>{vn&&(Me.active||Me.manuallyDeactivated||vn==="assistant"&&!Me.lastUserMessageWasVoice||setTimeout(()=>{!Me.active&&!Me.manuallyDeactivated&&Fe("auto")},600))});We.push(Bt);let Hi=s.on("action:resubmit",()=>{setTimeout(()=>{b&&!b.isStreaming()&&b.continueConversation()},100)});We.push(Hi);let an=()=>{C(!h,"user")},Ne=null,je=null;if(M){let l=r.find(d=>d.renderLauncher);if(l!=null&&l.renderLauncher){let d=l.renderLauncher({config:t,defaultRenderer:()=>Hn(t,an).element,onToggle:an});d&&(je=d)}je||(Ne=Hn(t,an))}Ne?e.appendChild(Ne.element):je&&e.appendChild(je),H(),At.render(t.suggestionChips,b,Q,void 0,t.suggestionChipsConfig),He(),Y(b.isStreaming()),Le(!0),I();let Cn=()=>{var S,P,x,K,de,T,q,X;let l=(P=(S=t.launcher)==null?void 0:S.sidebarMode)!=null?P:!1,d=l||((K=(x=t.launcher)==null?void 0:x.fullHeight)!=null?K:!1);if(!M){N.style.height="",N.style.width="";return}if(!l){let ve=(T=(de=t==null?void 0:t.launcher)==null?void 0:de.width)!=null?T:t==null?void 0:t.launcherWidth,$=ve!=null?ve:"min(400px, calc(100vw - 24px))";N.style.width=$,N.style.maxWidth=$}if(!d){let ve=window.innerHeight,$=64,De=(X=(q=t.launcher)==null?void 0:q.heightOffset)!=null?X:0,Ae=Math.max(200,ve-$),ge=Math.min(640,Ae),Je=Math.max(200,ge-De);N.style.height=`${Je}px`}};Cn(),window.addEventListener("resize",Cn),We.push(()=>window.removeEventListener("resize",Cn)),gt=Te.scrollTop;let $s=()=>{let l=Te.scrollTop,d=Te.scrollHeight,S=Te.clientHeight,P=d-l-S,x=Math.abs(l-gt);if(gt=l,!Vt&&!(x<=On)){if(!$e&&P<yn){ht=!1,$e=!0;return}$e&&P>yn&&(ht=!0,Ht=Date.now()+$n,$e=!1)}};Te.addEventListener("scroll",$s,{passive:!0}),We.push(()=>Te.removeEventListener("scroll",$s)),We.push(()=>{mt&&cancelAnimationFrame(mt)});let Os=()=>{D&&(ct&&(D.removeEventListener("click",ct),ct=null),M?(D.style.display="",ct=()=>{h=!1,H()},D.addEventListener("click",ct)):D.style.display="none")};Os(),(()=>{let{clearChatButton:l}=se;l&&l.addEventListener("click",()=>{b.clearMessages();try{localStorage.removeItem(wn),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${wn}`)}catch(S){console.error("[AgentWidget] Failed to clear default localStorage:",S)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==wn)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(S){console.error("[AgentWidget] Failed to clear custom localStorage:",S)}let d=new CustomEvent("persona:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(d),i!=null&&i.clear)try{let S=i.clear();S instanceof Promise&&S.catch(P=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",P)})}catch(S){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",S)}a={},y.syncFromMetadata()})})(),bt.addEventListener("submit",Ie),Q.addEventListener("keydown",ft),We.push(()=>{bt.removeEventListener("submit",Ie),Q.removeEventListener("keydown",ft)}),We.push(()=>{b.cancel()}),Ne?We.push(()=>{Ne==null||Ne.destroy()}):je&&We.push(()=>{je==null||je.remove()});let Rt={update(l){var lo,co,uo,po,go,mo,ho,fo,wo,yo,vo,bo,Co,xo,So,Ao,To,Mo,Eo,ko,Wo,Lo,Po,Ho,Io,Bo,Ro,Fo,$o,Oo,No,jo,Do,_o,qo,Uo,zo,Jo,Yo,Ko,Vo,Xo,Go,Qo,Zo,er,tr,nr,sr,or,rr,ir,ar,lr,cr,dr,ur,pr,gr,mr,hr,fr,wr,yr,vr,br,Cr,xr,Sr,Ar,Tr,Mr,Er,kr,Wr,Lr,Pr,Hr,Ir,Br,Rr,Fr;let d=t.toolCall,S=t.colorScheme;t={...t,...l},Pt(),es(e,t),t.colorScheme!==S&&kt();let P=Bn.getForInstance(t.plugins);if(r.length=0,r.push(...P),M=(co=(lo=t.launcher)==null?void 0:lo.enabled)!=null?co:!0,E=(po=(uo=t.launcher)==null?void 0:uo.autoExpand)!=null?po:!1,_=(mo=(go=t.features)==null?void 0:go.showReasoning)!=null?mo:!0,Z=(fo=(ho=t.features)==null?void 0:ho.showToolCalls)!=null?fo:!0,((wo=t.launcher)==null?void 0:wo.enabled)===!1&&Ne&&(Ne.destroy(),Ne=null),((yo=t.launcher)==null?void 0:yo.enabled)===!1&&je&&(je.remove(),je=null),((vo=t.launcher)==null?void 0:vo.enabled)!==!1&&!Ne&&!je){let k=r.find(me=>me.renderLauncher);if(k!=null&&k.renderLauncher){let me=k.renderLauncher({config:t,defaultRenderer:()=>Hn(t,an).element,onToggle:an});me&&(je=me,e.appendChild(je))}je||(Ne=Hn(t,an),e.appendChild(Ne.element))}Ne&&Ne.update(t),rt&&((bo=t.launcher)==null?void 0:bo.title)!==void 0&&(rt.textContent=t.launcher.title),it&&((Co=t.launcher)==null?void 0:Co.subtitle)!==void 0&&(it.textContent=t.launcher.subtitle);let x=(xo=t.layout)==null?void 0:xo.header;if((x==null?void 0:x.layout)!==z&&Ve){let k=x?dn(t,x,{showClose:M,onClose:()=>C(!1,"user")}):zt({config:t,showClose:M,onClose:()=>C(!1,"user")});Ve.replaceWith(k.header),Ve=k.header,ye=k.iconHolder,rt=k.headerTitle,it=k.headerSubtitle,D=k.closeButton,z=x==null?void 0:x.layout}else if(x&&(ye&&(ye.style.display=x.showIcon===!1?"none":""),rt&&(rt.style.display=x.showTitle===!1?"none":""),it&&(it.style.display=x.showSubtitle===!1?"none":""),D&&(D.style.display=x.showCloseButton===!1?"none":""),se.clearChatButtonWrapper)){let k=x.showClearChat;if(k!==void 0){se.clearChatButtonWrapper.style.display=k?"":"none";let{closeButtonWrapper:me}=se;me&&!me.classList.contains("tvw-absolute")&&(k?me.classList.remove("tvw-ml-auto"):me.classList.add("tvw-ml-auto"))}}let de=((So=t.layout)==null?void 0:So.showHeader)!==!1;Ve&&(Ve.style.display=de?"":"none");let T=((Ao=t.layout)==null?void 0:Ao.showFooter)!==!1;at&&(at.style.display=T?"":"none"),M!==W?M?C(E,"auto"):(h=!0,H()):E!==v&&C(E,"auto"),v=E,W=M,Cn(),Os(),JSON.stringify(l.toolCall)!==JSON.stringify(d)&&b&&ee(Ue,b.getMessages(),U);let $=(To=t.launcher)!=null?To:{},De=(Mo=$.headerIconHidden)!=null?Mo:!1,Ae=(ko=(Eo=t.layout)==null?void 0:Eo.header)==null?void 0:ko.showIcon,ge=De||Ae===!1,Je=$.headerIconName,Ye=(Wo=$.headerIconSize)!=null?Wo:"48px";if(ye){let k=oe.querySelector(".tvw-border-b-cw-divider"),me=k==null?void 0:k.querySelector(".tvw-flex-col");if(ge)ye.style.display="none",k&&me&&!k.contains(me)&&k.insertBefore(me,k.firstChild);else{if(ye.style.display="",ye.style.height=Ye,ye.style.width=Ye,k&&me&&(k.contains(ye)?ye.nextSibling!==me&&(ye.remove(),k.insertBefore(ye,me)):k.insertBefore(ye,me)),Je){let te=parseFloat(Ye)||24,be=ne(Je,te*.6,"#ffffff",2);be?ye.replaceChildren(be):ye.textContent=(Lo=$.agentIconText)!=null?Lo:"\u{1F4AC}"}else if($.iconUrl){let te=ye.querySelector("img");if(te)te.src=$.iconUrl,te.style.height=Ye,te.style.width=Ye;else{let be=document.createElement("img");be.src=$.iconUrl,be.alt="",be.className="tvw-rounded-xl tvw-object-cover",be.style.height=Ye,be.style.width=Ye,ye.replaceChildren(be)}}else{let te=ye.querySelector("svg"),be=ye.querySelector("img");(te||be)&&ye.replaceChildren(),ye.textContent=(Po=$.agentIconText)!=null?Po:"\u{1F4AC}"}let _e=ye.querySelector("img");_e&&(_e.style.height=Ye,_e.style.width=Ye)}}let st=(Io=(Ho=t.layout)==null?void 0:Ho.header)==null?void 0:Io.showTitle,Tt=(Ro=(Bo=t.layout)==null?void 0:Bo.header)==null?void 0:Ro.showSubtitle;if(rt&&(rt.style.display=st===!1?"none":""),it&&(it.style.display=Tt===!1?"none":""),D){(($o=(Fo=t.layout)==null?void 0:Fo.header)==null?void 0:$o.showCloseButton)===!1?D.style.display="none":D.style.display="";let me=(Oo=$.closeButtonSize)!=null?Oo:"32px",_e=(No=$.closeButtonPlacement)!=null?No:"inline";D.style.height=me,D.style.width=me;let{closeButtonWrapper:te}=se,be=_e==="top-right",dt=te==null?void 0:te.classList.contains("tvw-absolute");if(te&&be!==dt)if(te.remove(),be)te.className="tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50",oe.style.position="relative",oe.appendChild(te);else{let le=(Do=(jo=$.clearChat)==null?void 0:jo.placement)!=null?Do:"inline",Ge=(qo=(_o=$.clearChat)==null?void 0:_o.enabled)!=null?qo:!0;te.className=Ge&&le==="inline"?"":"tvw-ml-auto";let xt=oe.querySelector(".tvw-border-b-cw-divider");xt&&xt.appendChild(te)}if($.closeButtonColor?(D.style.color=$.closeButtonColor,D.classList.remove("tvw-text-cw-muted")):(D.style.color="",D.classList.add("tvw-text-cw-muted")),$.closeButtonBackgroundColor?(D.style.backgroundColor=$.closeButtonBackgroundColor,D.classList.remove("hover:tvw-bg-gray-100")):(D.style.backgroundColor="",D.classList.add("hover:tvw-bg-gray-100")),$.closeButtonBorderWidth||$.closeButtonBorderColor){let le=$.closeButtonBorderWidth||"0px",Ge=$.closeButtonBorderColor||"transparent";D.style.border=`${le} solid ${Ge}`,D.classList.remove("tvw-border-none")}else D.style.border="",D.classList.add("tvw-border-none");$.closeButtonBorderRadius?(D.style.borderRadius=$.closeButtonBorderRadius,D.classList.remove("tvw-rounded-full")):(D.style.borderRadius="",D.classList.add("tvw-rounded-full")),$.closeButtonPaddingX?(D.style.paddingLeft=$.closeButtonPaddingX,D.style.paddingRight=$.closeButtonPaddingX):(D.style.paddingLeft="",D.style.paddingRight=""),$.closeButtonPaddingY?(D.style.paddingTop=$.closeButtonPaddingY,D.style.paddingBottom=$.closeButtonPaddingY):(D.style.paddingTop="",D.style.paddingBottom="");let ot=(Uo=$.closeButtonIconName)!=null?Uo:"x",Mt=(zo=$.closeButtonIconText)!=null?zo:"\xD7";D.innerHTML="";let yt=ne(ot,"20px",$.closeButtonColor||"",2);yt?D.appendChild(yt):D.textContent=Mt;let qe=(Jo=$.closeButtonTooltipText)!=null?Jo:"Close chat",Et=(Yo=$.closeButtonShowTooltip)!=null?Yo:!0;if(D.setAttribute("aria-label",qe),te&&(te._cleanupTooltip&&(te._cleanupTooltip(),delete te._cleanupTooltip),Et&&qe)){let le=null,Ge=()=>{if(le||!D)return;le=g("div","tvw-clear-chat-tooltip"),le.textContent=qe;let kn=g("div");kn.className="tvw-clear-chat-tooltip-arrow",le.appendChild(kn);let Zt=D.getBoundingClientRect();le.style.position="fixed",le.style.left=`${Zt.left+Zt.width/2}px`,le.style.top=`${Zt.top-8}px`,le.style.transform="translate(-50%, -100%)",document.body.appendChild(le)},xt=()=>{le&&le.parentNode&&(le.parentNode.removeChild(le),le=null)};te.addEventListener("mouseenter",Ge),te.addEventListener("mouseleave",xt),D.addEventListener("focus",Ge),D.addEventListener("blur",xt),te._cleanupTooltip=()=>{xt(),te&&(te.removeEventListener("mouseenter",Ge),te.removeEventListener("mouseleave",xt)),D&&(D.removeEventListener("focus",Ge),D.removeEventListener("blur",xt))}}}let{clearChatButton:G,clearChatButtonWrapper:ke}=se;if(G){let k=(Ko=$.clearChat)!=null?Ko:{},me=(Vo=k.enabled)!=null?Vo:!0,_e=(Go=(Xo=t.layout)==null?void 0:Xo.header)==null?void 0:Go.showClearChat,te=_e!==void 0?_e:me,be=(Qo=k.placement)!=null?Qo:"inline";if(ke){ke.style.display=te?"":"none";let{closeButtonWrapper:dt}=se;dt&&!dt.classList.contains("tvw-absolute")&&(te?dt.classList.remove("tvw-ml-auto"):dt.classList.add("tvw-ml-auto"));let ot=be==="top-right",Mt=ke.classList.contains("tvw-absolute");if(ot!==Mt&&te){if(ke.remove(),ot)ke.className="tvw-absolute tvw-top-4 tvw-z-50",ke.style.right="48px",oe.style.position="relative",oe.appendChild(ke);else{ke.className="tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper",ke.style.right="";let qe=oe.querySelector(".tvw-border-b-cw-divider"),Et=se.closeButtonWrapper;qe&&Et&&Et.parentElement===qe?qe.insertBefore(ke,Et):qe&&qe.appendChild(ke)}let yt=se.closeButtonWrapper;yt&&!yt.classList.contains("tvw-absolute")&&(ot?yt.classList.add("tvw-ml-auto"):yt.classList.remove("tvw-ml-auto"))}}if(te){let dt=(Zo=k.size)!=null?Zo:"32px";G.style.height=dt,G.style.width=dt;let ot=(er=k.iconName)!=null?er:"refresh-cw",Mt=(tr=k.iconColor)!=null?tr:"";G.innerHTML="";let yt=ne(ot,"20px",Mt||"",2);if(yt&&G.appendChild(yt),Mt?(G.style.color=Mt,G.classList.remove("tvw-text-cw-muted")):(G.style.color="",G.classList.add("tvw-text-cw-muted")),k.backgroundColor?(G.style.backgroundColor=k.backgroundColor,G.classList.remove("hover:tvw-bg-gray-100")):(G.style.backgroundColor="",G.classList.add("hover:tvw-bg-gray-100")),k.borderWidth||k.borderColor){let le=k.borderWidth||"0px",Ge=k.borderColor||"transparent";G.style.border=`${le} solid ${Ge}`,G.classList.remove("tvw-border-none")}else G.style.border="",G.classList.add("tvw-border-none");k.borderRadius?(G.style.borderRadius=k.borderRadius,G.classList.remove("tvw-rounded-full")):(G.style.borderRadius="",G.classList.add("tvw-rounded-full")),k.paddingX?(G.style.paddingLeft=k.paddingX,G.style.paddingRight=k.paddingX):(G.style.paddingLeft="",G.style.paddingRight=""),k.paddingY?(G.style.paddingTop=k.paddingY,G.style.paddingBottom=k.paddingY):(G.style.paddingTop="",G.style.paddingBottom="");let qe=(nr=k.tooltipText)!=null?nr:"Clear chat",Et=(sr=k.showTooltip)!=null?sr:!0;if(G.setAttribute("aria-label",qe),ke&&(ke._cleanupTooltip&&(ke._cleanupTooltip(),delete ke._cleanupTooltip),Et&&qe)){let le=null,Ge=()=>{if(le||!G)return;le=g("div","tvw-clear-chat-tooltip"),le.textContent=qe;let kn=g("div");kn.className="tvw-clear-chat-tooltip-arrow",le.appendChild(kn);let Zt=G.getBoundingClientRect();le.style.position="fixed",le.style.left=`${Zt.left+Zt.width/2}px`,le.style.top=`${Zt.top-8}px`,le.style.transform="translate(-50%, -100%)",document.body.appendChild(le)},xt=()=>{le&&le.parentNode&&(le.parentNode.removeChild(le),le=null)};ke.addEventListener("mouseenter",Ge),ke.addEventListener("mouseleave",xt),G.addEventListener("focus",Ge),G.addEventListener("blur",xt),ke._cleanupTooltip=()=>{xt(),ke&&(ke.removeEventListener("mouseenter",Ge),ke.removeEventListener("mouseleave",xt)),G&&(G.removeEventListener("focus",Ge),G.removeEventListener("blur",xt))}}}}let Gt=t.actionParsers&&t.actionParsers.length?t.actionParsers:[Rn],Qt=t.actionHandlers&&t.actionHandlers.length?t.actionHandlers:[sn.message,sn.messageAndClick];y=Fn({parsers:Gt,handlers:Qt,getSessionMetadata:f,updateSessionMetadata:p,emit:s.emit,documentRef:typeof document!="undefined"?document:null}),U=Si(t,y,L),b.updateConfig(t),ee(Ue,b.getMessages(),U),At.render(t.suggestionChips,b,Q,void 0,t.suggestionChipsConfig),He(),Y(b.isStreaming());let Nn=((or=t.voiceRecognition)==null?void 0:or.enabled)===!0,jn=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined");if(Nn&&jn)if(!R||!ze){let k=Qe(t.voiceRecognition,t.sendButton);k&&(R=k.micButton,ze=k.micButtonWrapper,jt.insertBefore(ze,pt),R.addEventListener("click",wt),R.disabled=b.isStreaming())}else{let k=(rr=t.voiceRecognition)!=null?rr:{},me=(ir=t.sendButton)!=null?ir:{},_e=(ar=k.iconName)!=null?ar:"mic",te=(lr=me.size)!=null?lr:"40px",be=(cr=k.iconSize)!=null?cr:te,dt=parseFloat(be)||24;R.style.width=be,R.style.height=be,R.style.minWidth=be,R.style.minHeight=be;let ot=(ur=(dr=k.iconColor)!=null?dr:me.textColor)!=null?ur:"currentColor";R.innerHTML="";let Mt=ne(_e,dt,ot,2);Mt?R.appendChild(Mt):R.textContent="\u{1F3A4}";let yt=(pr=k.backgroundColor)!=null?pr:me.backgroundColor;yt?(R.style.backgroundColor=yt,R.classList.remove("tvw-bg-cw-primary")):(R.style.backgroundColor="",R.classList.add("tvw-bg-cw-primary")),ot?(R.style.color=ot,R.classList.remove("tvw-text-white")):!ot&&!me.textColor&&(R.style.color="",R.classList.add("tvw-text-white")),k.borderWidth?(R.style.borderWidth=k.borderWidth,R.style.borderStyle="solid"):(R.style.borderWidth="",R.style.borderStyle=""),k.borderColor?R.style.borderColor=k.borderColor:R.style.borderColor="",k.paddingX?(R.style.paddingLeft=k.paddingX,R.style.paddingRight=k.paddingX):(R.style.paddingLeft="",R.style.paddingRight=""),k.paddingY?(R.style.paddingTop=k.paddingY,R.style.paddingBottom=k.paddingY):(R.style.paddingTop="",R.style.paddingBottom="");let qe=ze==null?void 0:ze.querySelector(".tvw-send-button-tooltip"),Et=(gr=k.tooltipText)!=null?gr:"Start voice recognition";if(((mr=k.showTooltip)!=null?mr:!1)&&Et)if(qe)qe.textContent=Et,qe.style.display="";else{let Ge=document.createElement("div");Ge.className="tvw-send-button-tooltip",Ge.textContent=Et,ze==null||ze.insertBefore(Ge,R)}else qe&&(qe.style.display="none");ze.style.display="",R.disabled=b.isStreaming()}else R&&ze&&(ze.style.display="none",Ee&&ce());if(((hr=t.attachments)==null?void 0:hr.enabled)===!0)if(!Ze||!he){let k=(fr=t.attachments)!=null?fr:{},_e=(yr=((wr=t.sendButton)!=null?wr:{}).size)!=null?yr:"40px";V||(V=g("div","tvw-attachment-previews tvw-flex tvw-flex-wrap tvw-gap-2 tvw-mb-2"),V.style.display="none",bt.insertBefore(V,Q)),fe||(fe=document.createElement("input"),fe.type="file",fe.accept=((vr=k.allowedTypes)!=null?vr:Kt).join(","),fe.multiple=((br=k.maxFiles)!=null?br:4)>1,fe.style.display="none",fe.setAttribute("aria-label","Attach files"),bt.insertBefore(fe,Q)),Ze=g("div","tvw-send-button-wrapper"),he=g("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer tvw-attachment-button"),he.type="button",he.setAttribute("aria-label",(Cr=k.buttonTooltipText)!=null?Cr:"Attach file");let te=(xr=k.buttonIconName)!=null?xr:"paperclip",be=_e,dt=parseFloat(be)||40,ot=Math.round(dt*.6);he.style.width=be,he.style.height=be,he.style.minWidth=be,he.style.minHeight=be,he.style.fontSize="18px",he.style.lineHeight="1",he.style.backgroundColor="transparent",he.style.color="var(--cw-primary, #111827)",he.style.border="none",he.style.borderRadius="6px",he.style.transition="background-color 0.15s ease",he.addEventListener("mouseenter",()=>{he.style.backgroundColor="rgba(0, 0, 0, 0.05)"}),he.addEventListener("mouseleave",()=>{he.style.backgroundColor="transparent"});let Mt=ne(te,ot,"currentColor",1.5);Mt?he.appendChild(Mt):he.textContent="\u{1F4CE}",he.addEventListener("click",Et=>{Et.preventDefault(),fe==null||fe.click()}),Ze.appendChild(he);let yt=(Sr=k.buttonTooltipText)!=null?Sr:"Attach file",qe=g("div","tvw-send-button-tooltip");qe.textContent=yt,Ze.appendChild(qe),Nt.append(Ze),!re&&fe&&V&&(re=tn.fromConfig(k),re.setPreviewsContainer(V),fe.addEventListener("change",async()=>{re&&(fe!=null&&fe.files)&&(await re.handleFileSelect(fe.files),fe.value="")}))}else{Ze.style.display="";let k=(Ar=t.attachments)!=null?Ar:{};fe&&(fe.accept=((Tr=k.allowedTypes)!=null?Tr:Kt).join(","),fe.multiple=((Mr=k.maxFiles)!=null?Mr:4)>1),re&&re.updateConfig({allowedTypes:k.allowedTypes,maxFileSize:k.maxFileSize,maxFiles:k.maxFiles})}else Ze&&(Ze.style.display="none"),re&&re.clearAttachments();let Ke=(Er=t.sendButton)!=null?Er:{},Dn=(kr=Ke.useIcon)!=null?kr:!1,xn=(Wr=Ke.iconText)!=null?Wr:"\u2191",Sn=Ke.iconName,Yt=(Lr=Ke.tooltipText)!=null?Lr:"Send message",An=(Pr=Ke.showTooltip)!=null?Pr:!1,Tn=(Hr=Ke.size)!=null?Hr:"40px",_n=Ke.backgroundColor,Dt=Ke.textColor;if(Dn){if(j.style.width=Tn,j.style.height=Tn,j.style.minWidth=Tn,j.style.minHeight=Tn,j.style.fontSize="18px",j.style.lineHeight="1",j.innerHTML="",Sn){let k=parseFloat(Tn)||24,me=Dt&&typeof Dt=="string"&&Dt.trim()?Dt.trim():"currentColor",_e=ne(Sn,k,me,2);_e?(j.appendChild(_e),j.style.color=me):(j.textContent=xn,Dt?j.style.color=Dt:j.classList.add("tvw-text-white"))}else j.textContent=xn,Dt?j.style.color=Dt:j.classList.add("tvw-text-white");j.className="tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer",_n?(j.style.backgroundColor=_n,j.classList.remove("tvw-bg-cw-primary")):j.classList.add("tvw-bg-cw-primary")}else j.textContent=(Br=(Ir=t.copy)==null?void 0:Ir.sendButtonLabel)!=null?Br:"Send",j.style.width="",j.style.height="",j.style.minWidth="",j.style.minHeight="",j.style.fontSize="",j.style.lineHeight="",j.className="tvw-rounded-button tvw-bg-cw-accent tvw-px-4 tvw-py-2 tvw-text-sm tvw-font-semibold tvw-text-white disabled:tvw-opacity-50 tvw-cursor-pointer",_n?(j.style.backgroundColor=_n,j.classList.remove("tvw-bg-cw-accent")):j.classList.add("tvw-bg-cw-accent"),Dt?j.style.color=Dt:j.classList.add("tvw-text-white");Ke.borderWidth?(j.style.borderWidth=Ke.borderWidth,j.style.borderStyle="solid"):(j.style.borderWidth="",j.style.borderStyle=""),Ke.borderColor?j.style.borderColor=Ke.borderColor:j.style.borderColor="",Ke.paddingX?(j.style.paddingLeft=Ke.paddingX,j.style.paddingRight=Ke.paddingX):(j.style.paddingLeft="",j.style.paddingRight=""),Ke.paddingY?(j.style.paddingTop=Ke.paddingY,j.style.paddingBottom=Ke.paddingY):(j.style.paddingTop="",j.style.paddingBottom="");let Mn=pt==null?void 0:pt.querySelector(".tvw-send-button-tooltip");if(An&&Yt)if(Mn)Mn.textContent=Yt,Mn.style.display="";else{let k=document.createElement("div");k.className="tvw-send-button-tooltip",k.textContent=Yt,pt==null||pt.insertBefore(k,j)}else Mn&&(Mn.style.display="none");let En=(Rr=t.statusIndicator)!=null?Rr:{},Ii=(Fr=En.visible)!=null?Fr:!0;if(Ct.style.display=Ii?"":"none",b){let k=b.getStatus(),me=_e=>{var te,be,dt,ot;return _e==="idle"?(te=En.idleText)!=null?te:ut.idle:_e==="connecting"?(be=En.connectingText)!=null?be:ut.connecting:_e==="connected"?(dt=En.connectedText)!=null?dt:ut.connected:_e==="error"?(ot=En.errorText)!=null?ot:ut.error:ut[_e]};Ct.textContent=me(k)}},open(){M&&C(!0,"api")},close(){M&&C(!1,"api")},toggle(){M&&C(!h,"api")},clearChat(){b.clearMessages();try{localStorage.removeItem(wn),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${wn}`)}catch(d){console.error("[AgentWidget] Failed to clear default localStorage:",d)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==wn)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(d){console.error("[AgentWidget] Failed to clear custom localStorage:",d)}let l=new CustomEvent("persona:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(l),i!=null&&i.clear)try{let d=i.clear();d instanceof Promise&&d.catch(S=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",S)})}catch(d){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",d)}a={},y.syncFromMetadata()},setMessage(l){return!Q||b.isStreaming()?!1:(!h&&M&&C(!0,"system"),Q.value=l,Q.dispatchEvent(new Event("input",{bubbles:!0})),!0)},submitMessage(l){if(b.isStreaming())return!1;let d=(l==null?void 0:l.trim())||Q.value.trim();return d?(!h&&M&&C(!0,"system"),Q.value="",Q.style.height="auto",b.sendMessage(d),!0):!1},startVoiceRecognition(){return Ee||b.isStreaming()||!Se()?!1:(!h&&M&&C(!0,"system"),Me.manuallyDeactivated=!1,qt(),Fe("user"),!0)},stopVoiceRecognition(){return Ee?(Me.manuallyDeactivated=!0,qt(),ce("user"),!0):!1},injectMessage(l){return!h&&M&&C(!0,"system"),b.injectMessage(l)},injectAssistantMessage(l){!h&&M&&C(!0,"system");let d=b.injectAssistantMessage(l);return O&&(O=!1,A&&(clearTimeout(A),A=null),setTimeout(()=>{b&&!b.isStreaming()&&b.continueConversation()},100)),d},injectUserMessage(l){return!h&&M&&C(!0,"system"),b.injectUserMessage(l)},injectSystemMessage(l){return!h&&M&&C(!0,"system"),b.injectSystemMessage(l)},injectTestMessage(l){!h&&M&&C(!0,"system"),b.injectTestEvent(l)},getMessages(){return b.getMessages()},getStatus(){return b.getStatus()},getPersistentMetadata(){return{...a}},updatePersistentMetadata(l){p(l)},on(l,d){return s.on(l,d)},off(l,d){s.off(l,d)},isOpen(){return M&&h},isVoiceActive(){return Me.active},getState(){return{open:M&&h,launcherEnabled:M,voiceActive:Me.active,streaming:b.isStreaming()}},showCSATFeedback(l){!h&&M&&C(!0,"system");let d=Ue.querySelector(".tvw-feedback-container");d&&d.remove();let S=ls({onSubmit:async(P,x)=>{var K;b.isClientTokenMode()&&await b.submitCSATFeedback(P,x),(K=l==null?void 0:l.onSubmit)==null||K.call(l,P,x)},onDismiss:l==null?void 0:l.onDismiss,...l});Ue.appendChild(S),S.scrollIntoView({behavior:"smooth",block:"end"})},showNPSFeedback(l){!h&&M&&C(!0,"system");let d=Ue.querySelector(".tvw-feedback-container");d&&d.remove();let S=cs({onSubmit:async(P,x)=>{var K;b.isClientTokenMode()&&await b.submitNPSFeedback(P,x),(K=l==null?void 0:l.onSubmit)==null||K.call(l,P,x)},onDismiss:l==null?void 0:l.onDismiss,...l});Ue.appendChild(S),S.scrollIntoView({behavior:"smooth",block:"end"})},async submitCSATFeedback(l,d){return b.submitCSATFeedback(l,d)},async submitNPSFeedback(l,d){return b.submitNPSFeedback(l,d)},destroy(){We.forEach(l=>l()),B.remove(),Ne==null||Ne.destroy(),je==null||je.remove(),ct&&D.removeEventListener("click",ct)}};if((((no=o==null?void 0:o.debugTools)!=null?no:!1)||!!t.debug)&&typeof window!="undefined"){let l=window.AgentWidgetBrowser,d={controller:Rt,getMessages:Rt.getMessages,getStatus:Rt.getStatus,getMetadata:Rt.getPersistentMetadata,updateMetadata:Rt.updatePersistentMetadata,clearHistory:()=>Rt.clearChat(),setVoiceActive:S=>S?Rt.startVoiceRecognition():Rt.stopVoiceRecognition()};window.AgentWidgetBrowser=d,We.push(()=>{window.AgentWidgetBrowser===d&&(window.AgentWidgetBrowser=l)})}let Wt=ma(t.persistState);if(Wt&&M){let l=ha(Wt.storage),d=`${Wt.keyPrefix}widget-open`,S=`${Wt.keyPrefix}widget-voice`,P=`${Wt.keyPrefix}widget-voice-mode`;if(l){let x=((so=Wt.persist)==null?void 0:so.openState)&&l.getItem(d)==="true",K=((oo=Wt.persist)==null?void 0:oo.voiceState)&&l.getItem(S)==="true",de=((ro=Wt.persist)==null?void 0:ro.voiceState)&&l.getItem(P)==="true";if(x&&setTimeout(()=>{Rt.open(),setTimeout(()=>{var T;if(K||de)Rt.startVoiceRecognition();else if((T=Wt.persist)!=null&&T.focusInput){let q=e.querySelector("textarea");q&&q.focus()}},100)},0),(io=Wt.persist)!=null&&io.openState&&(s.on("widget:opened",()=>{l.setItem(d,"true")}),s.on("widget:closed",()=>{l.setItem(d,"false")})),(ao=Wt.persist)!=null&&ao.voiceState&&(s.on("voice:state",T=>{l.setItem(S,T.active?"true":"false")}),s.on("user:message",T=>{l.setItem(P,T.viaVoice?"true":"false")})),Wt.clearOnChatClear){let T=()=>{l.removeItem(d),l.removeItem(S),l.removeItem(P)},q=()=>T();window.addEventListener("vanilla-agent:clear-chat",q),We.push(()=>{window.removeEventListener("vanilla-agent:clear-chat",q)})}}}return Rt};var Bs={},fa=e=>{if(typeof window=="undefined"||typeof document=="undefined")throw new Error("Chat widget can only be mounted in a browser environment");if(typeof e=="string"){let n=document.querySelector(e);if(!n)throw new Error(`Chat widget target "${e}" was not found`);return n}return e},wa=()=>{try{if(typeof Bs!="undefined"&&Bs.url)return new URL("../widget.css",Bs.url).href}catch{}return null},Ai=e=>{let n=wa(),o=()=>{if(!(e instanceof ShadowRoot)||e.querySelector("link[data-persona]"))return;let t=document.head.querySelector("link[data-persona]");if(!t)return;let r=t.cloneNode(!0);e.insertBefore(r,e.firstChild)};if(e instanceof ShadowRoot)if(n){let t=document.createElement("link");t.rel="stylesheet",t.href=n,t.setAttribute("data-persona","true"),e.insertBefore(t,e.firstChild)}else o();else if(!document.head.querySelector("link[data-persona]")&&n){let r=document.createElement("link");r.rel="stylesheet",r.href=n,r.setAttribute("data-persona","true"),document.head.appendChild(r)}},Rs=e=>{var u,f,p,m;let n=fa(e.target),o=document.createElement("div");o.className="persona-host";let t=(p=(f=(u=e.config)==null?void 0:u.launcher)==null?void 0:f.enabled)!=null?p:!0;t||(o.style.height="100%"),n.appendChild(o);let r=e.useShadowDom===!0,s,i;if(r){let w=o.attachShadow({mode:"open"});i=w,s=document.createElement("div"),s.id="persona-root",t||(s.style.height="100%",s.style.display="flex",s.style.flexDirection="column",s.style.flex="1",s.style.minHeight="0"),w.appendChild(s),Ai(w)}else i=o,s=document.createElement("div"),s.id="persona-root",t||(s.style.height="100%",s.style.display="flex",s.style.flexDirection="column",s.style.flex="1",s.style.minHeight="0"),o.appendChild(s),Ai(o);let a=ds(s,e.config,{debugTools:e.debugTools});(m=e.onReady)==null||m.call(e);let c={...a,host:o,destroy(){a.destroy(),o.remove(),e.windowKey&&typeof window!="undefined"&&delete window[e.windowKey]}};return e.windowKey&&typeof window!="undefined"&&(window[e.windowKey]=c),c};var Ti={name:"@runtypelabs/persona",version:"1.40.0",description:"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.",type:"module",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./widget.css":{import:"./widget.css",default:"./dist/widget.css"}},files:["dist","widget.css","src"],scripts:{build:"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","build:styles":`node -e "const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');"`,"build:client":'tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader ".css=text"',"build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting",lint:"eslint . --ext .ts",typecheck:"tsc --noEmit",test:"vitest","test:ui":"vitest --ui","test:run":"vitest run"},dependencies:{idiomorph:"^0.7.4",lucide:"^0.552.0",marked:"^12.0.2","partial-json":"^0.1.7",zod:"^3.22.4"},devDependencies:{"@types/node":"^20.12.7","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","@vitest/ui":"^4.0.9",eslint:"^8.57.0","eslint-config-prettier":"^9.1.0",postcss:"^8.4.38",rimraf:"^5.0.5",tailwindcss:"^3.4.10",tsup:"^8.0.1",typescript:"^5.4.5",vitest:"^4.0.9"},engines:{node:">=18.17.0"},license:"MIT",keywords:["chat","widget","streaming","typescript","persona","agent"],repository:{type:"git",url:"git+https://github.com/runtypelabs/persona.git",directory:"packages/widget"},bugs:{url:"https://github.com/runtypelabs/persona/issues"},homepage:"https://github.com/runtypelabs/persona/tree/main/packages/widget#readme",publishConfig:{access:"public"}};var on=Ti.version;function Jt(e){if(e!==void 0)return typeof e=="string"?e:Array.isArray(e)?`[${e.map(n=>n.toString()).join(", ")}]`:e.toString()}function va(e){if(e)return{getHeaders:Jt(e.getHeaders),onFeedback:Jt(e.onFeedback),onCopy:Jt(e.onCopy),requestMiddleware:Jt(e.requestMiddleware),actionHandlers:Jt(e.actionHandlers),actionParsers:Jt(e.actionParsers),postprocessMessage:Jt(e.postprocessMessage),contextProviders:Jt(e.contextProviders),streamParser:Jt(e.streamParser)}}var Mi=`({ text, message }: any) => {
|
|
60
|
+
`}if(!Ae){let Yt="max-height: -moz-available !important; max-height: stretch !important;",An=l?"":"padding-top: 1.25em !important;";B.style.cssText+=Yt+An}};Pt(),es(e,t);let We=[],et=null,kt=()=>{et&&(et(),et=null),t.colorScheme==="auto"&&(et=ai(()=>{es(e,t)}))};kt(),We.push(()=>{et&&(et(),et=null)});let At=fi(vt),ct=null,b,xe=!1,$e=!0,gt=0,tt=0,mt=null,ht=!1,Ht=0,Vt=!1,Xt=125,$n=2e3,On=5,yn=50,rn=new Map,Me={active:!1,manuallyDeactivated:!1,lastUserMessageWasVoice:!1,lastUserMessageId:null},vn=(to=(eo=t.voiceRecognition)==null?void 0:eo.autoResume)!=null?to:!1,bn=l=>{s.emit("voice:state",{active:Me.active,source:l,timestamp:Date.now()})},qt=()=>{p(l=>({...l,voiceState:{active:Me.active,timestamp:Date.now(),manuallyDeactivated:Me.manuallyDeactivated}}))},I=()=>{var P,x;if(((P=t.voiceRecognition)==null?void 0:P.enabled)===!1)return;let l=Is(a.voiceState),d=!!l.active,S=Number((x=l.timestamp)!=null?x:0);Me.manuallyDeactivated=!!l.manuallyDeactivated,d&&Date.now()-S<ga&&setTimeout(()=>{Me.active||(Me.manuallyDeactivated=!1,Fe("restore"))},1e3)},ue=()=>b?xi(b.getMessages()).filter(l=>!l.__skipPersist):[];function Ce(l){if(!(i!=null&&i.save))return;let S={messages:l?xi(l):b?ue():[],metadata:a};try{let P=i.save(S);P instanceof Promise&&P.catch(x=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",x)})}catch(P){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",P)}}let Le=(l=!1)=>{if(!$e)return;let d=Date.now();ht&&d<Ht&&!l||(ht&&d>=Ht&&(ht=!1),!(!l&&!xe)&&(d-tt<Xt||(tt=d,mt&&cancelAnimationFrame(mt),mt=requestAnimationFrame(()=>{ht||!$e||(Vt=!0,Te.scrollTop=Te.scrollHeight,gt=Te.scrollTop,requestAnimationFrame(()=>{Vt=!1}),mt=null)}))))},Pe=null,nt=()=>B.querySelector("#persona-scroll-container")||Te,Oe=(l,d=500)=>{let S=l.scrollTop,P=l.clientHeight,x=l.scrollHeight,K=x-S;if(S+P>=x-2||Math.abs(K)<5)return;Pe!==null&&(cancelAnimationFrame(Pe),Pe=null);let T=performance.now(),q=ve=>1-Math.pow(1-ve,3),X=ve=>{let $=l.scrollHeight;$!==x&&(x=$,K=x-S);let De=ve-T,Ae=Math.min(De/d,1),ge=q(Ae),Je=S+K*ge;l.scrollTop=Je,Ae<1?Pe=requestAnimationFrame(X):(l.scrollTop=l.scrollHeight,Pe=null)};Pe=requestAnimationFrame(X)},F=l=>{let d=new Map;l.forEach(S=>{let P=rn.get(S.id);d.set(S.id,{streaming:S.streaming,role:S.role}),!P&&S.role==="assistant"&&s.emit("assistant:message",S),S.role==="assistant"&&(P!=null&&P.streaming)&&S.streaming===!1&&s.emit("assistant:complete",S)}),rn.clear(),d.forEach((S,P)=>{rn.set(P,S)})},ee=(l,d,S)=>{let P=document.createElement("div");d.forEach(T=>{var De,Ae;let q=null,X=r.find(ge=>!!(T.variant==="reasoning"&&ge.renderReasoning||T.variant==="tool"&&ge.renderToolCall||!T.variant&&ge.renderMessage)),ve=(De=t.layout)==null?void 0:De.messages;if(X)if(T.variant==="reasoning"&&T.reasoning&&X.renderReasoning){if(!_)return;q=X.renderReasoning({message:T,defaultRenderer:()=>Ts(T),config:t})}else if(T.variant==="tool"&&T.toolCall&&X.renderToolCall){if(!Z)return;q=X.renderToolCall({message:T,defaultRenderer:()=>Ms(T,t),config:t})}else X.renderMessage&&(q=X.renderMessage({message:T,defaultRenderer:()=>{let ge=pn(T,S,ve,t.messageActions,ie);return T.role!=="user"&&Es(ge,T,t,b),ge},config:t}));if(!q&&T.role==="assistant"&&!T.variant&&t.enableComponentStreaming!==!1&&is(T)){let Je=as(T);if(Je){let Ye=rs(Je,{config:t,message:T,transform:S});if(Ye){let st=document.createElement("div");if(st.className=["vanilla-message-bubble","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-p-4"].join(" "),st.id=`bubble-${T.id}`,st.setAttribute("data-message-id",T.id),T.content&&T.content.trim()){let Tt=document.createElement("div");Tt.className="tvw-mb-3 tvw-text-sm tvw-leading-relaxed",Tt.innerHTML=S({text:T.content,message:T,streaming:!!T.streaming,raw:T.rawContent}),st.appendChild(Tt)}st.appendChild(Ye),q=st}}}if(!q)if(T.variant==="reasoning"&&T.reasoning){if(!_)return;q=Ts(T)}else if(T.variant==="tool"&&T.toolCall){if(!Z)return;q=Ms(T,t)}else{let ge=(Ae=t.layout)==null?void 0:Ae.messages;ge!=null&&ge.renderUserMessage&&T.role==="user"?q=ge.renderUserMessage({message:T,config:t,streaming:!!T.streaming}):ge!=null&&ge.renderAssistantMessage&&T.role==="assistant"?q=ge.renderAssistantMessage({message:T,config:t,streaming:!!T.streaming}):q=pn(T,S,ge,t.messageActions,ie),T.role!=="user"&&q&&Es(q,T,t,b)}let $=document.createElement("div");$.className="tvw-flex",$.id=`wrapper-${T.id}`,$.setAttribute("data-wrapper-id",T.id),T.role==="user"&&$.classList.add("tvw-justify-end"),$.appendChild(q),P.appendChild($)});let x=d.some(T=>T.role==="assistant"&&T.streaming),K=d[d.length-1],de=(K==null?void 0:K.role)==="assistant"&&!K.streaming;if(xe&&d.some(T=>T.role==="user")&&!x&&!de){let T=In(),q=document.createElement("div");q.className=["tvw-max-w-[85%]","tvw-rounded-2xl","tvw-text-sm","tvw-leading-relaxed","tvw-shadow-sm","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-px-5","tvw-py-3"].join(" "),q.setAttribute("data-typing-indicator","true"),q.appendChild(T);let X=document.createElement("div");X.className="tvw-flex",X.id="wrapper-typing-indicator",X.setAttribute("data-wrapper-id","typing-indicator"),X.appendChild(q),P.appendChild(X)}ci(l,P),requestAnimationFrame(()=>{requestAnimationFrame(()=>{let T=nt();Oe(T)})})},H=()=>{M&&(h?(B.classList.remove("tvw-pointer-events-none","tvw-opacity-0"),N.classList.remove("tvw-scale-95","tvw-opacity-0"),N.classList.add("tvw-scale-100","tvw-opacity-100"),Ne?Ne.element.style.display="none":je&&(je.style.display="none")):(B.classList.add("tvw-pointer-events-none","tvw-opacity-0"),N.classList.remove("tvw-scale-100","tvw-opacity-100"),N.classList.add("tvw-scale-95","tvw-opacity-0"),Ne?Ne.element.style.display="":je&&(je.style.display="")))},C=(l,d="user")=>{if(!M||h===l)return;let S=h;h=l,H(),h&&(Cn(),Le(!0));let P={open:h,source:d,timestamp:Date.now()};h&&!S?s.emit("widget:opened",P):!h&&S&&s.emit("widget:closed",P),s.emit("widget:state",{open:h,launcherEnabled:M,voiceActive:Me.active,streaming:b.isStreaming()})},Y=l=>{j.disabled=l,R&&(R.disabled=l),At.buttons.forEach(d=>{d.disabled=l})},He=()=>{var x,K,de,T,q,X,ve,$,De,Ae,ge,Je,Ye,st;$t.textContent=(K=(x=t.copy)==null?void 0:x.welcomeTitle)!=null?K:"Hello \u{1F44B}",Ot.textContent=(T=(de=t.copy)==null?void 0:de.welcomeSubtitle)!=null?T:"Ask anything about your account or products.",Q.placeholder=(X=(q=t.copy)==null?void 0:q.inputPlaceholder)!=null?X:"How can I help...",(($=(ve=t.sendButton)==null?void 0:ve.useIcon)!=null?$:!1)||(j.textContent=(Ae=(De=t.copy)==null?void 0:De.sendButtonLabel)!=null?Ae:"Send");let d=(Je=(ge=t.theme)==null?void 0:ge.inputFontFamily)!=null?Je:"sans-serif",S=(st=(Ye=t.theme)==null?void 0:Ye.inputFontWeight)!=null?st:"400",P=Tt=>{switch(Tt){case"serif":return'Georgia, "Times New Roman", Times, serif';case"mono":return'"Courier New", Courier, "Lucida Console", Monaco, monospace';case"sans-serif":default:return'-apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif'}};Q.style.fontFamily=P(d),Q.style.fontWeight=S};t.clientToken&&(t={...t,getStoredSessionId:()=>{let l=a.sessionId;return typeof l=="string"?l:null},setStoredSessionId:l=>{p(d=>({...d,sessionId:l}))}}),b=new cn(t,{onMessagesChanged(l){ee(Ue,l,U),b&&(l.some(x=>x.role==="user")?At.render([],b,Q,l):At.render(t.suggestionChips,b,Q,l,t.suggestionChipsConfig)),Le(!xe),F(l);let d=[...l].reverse().find(P=>P.role==="user"),S=Me.lastUserMessageId;d&&d.id!==S&&(Me.lastUserMessageId=d.id,s.emit("user:message",d)),Me.lastUserMessageWasVoice=!!(d!=null&&d.viaVoice),Ce(l)},onStatusChanged(l){var P;let d=(P=t.statusIndicator)!=null?P:{},S=x=>{var K,de,T,q;return x==="idle"?(K=d.idleText)!=null?K:ut.idle:x==="connecting"?(de=d.connectingText)!=null?de:ut.connecting:x==="connected"?(T=d.connectedText)!=null?T:ut.connected:x==="error"?(q=d.errorText)!=null?q:ut.error:ut[x]};Ct.textContent=S(l)},onStreamingChanged(l){xe=l,Y(l),b&&ee(Ue,b.getMessages(),U),l||Le(!0)}}),c&&c.then(l=>{var d;l&&(l.metadata&&(a=Is(l.metadata),y.syncFromMetadata()),(d=l.messages)!=null&&d.length&&b.hydrateMessages(l.messages))}).catch(l=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to hydrate stored state:",l)});let Ie=l=>{var x;l.preventDefault();let d=Q.value.trim(),S=(x=re==null?void 0:re.hasAttachments())!=null?x:!1;if(!d&&!S)return;let P;S&&(P=[],P.push(...re.getContentParts()),d&&P.push(Gn(d))),Q.value="",Q.style.height="auto",b.sendMessage(d,{contentParts:P}),S&&re.clearAttachments()},ft=l=>{l.key==="Enter"&&!l.shiftKey&&(l.preventDefault(),j.click())},pe=null,Ee=!1,Be=null,ae=null,Se=()=>typeof window=="undefined"?null:window.webkitSpeechRecognition||window.SpeechRecognition||null,Fe=(l="user")=>{var K,de,T,q;if(Ee||b.isStreaming())return;let d=Se();if(!d)return;pe=new d;let P=(de=((K=t.voiceRecognition)!=null?K:{}).pauseDuration)!=null?de:2e3;pe.continuous=!0,pe.interimResults=!0,pe.lang="en-US";let x=Q.value;pe.onresult=X=>{let ve="",$="";for(let Ae=0;Ae<X.results.length;Ae++){let ge=X.results[Ae],Je=ge[0].transcript;ge.isFinal?ve+=Je+" ":$=Je}let De=x+ve+$;Q.value=De,Be&&clearTimeout(Be),(ve||$)&&(Be=window.setTimeout(()=>{let Ae=Q.value.trim();Ae&&pe&&Ee&&(ce(),Q.value="",Q.style.height="auto",b.sendMessage(Ae,{viaVoice:!0}))},P))},pe.onerror=X=>{X.error!=="no-speech"&&ce()},pe.onend=()=>{if(Ee){let X=Q.value.trim();X&&X!==x.trim()&&(Q.value="",Q.style.height="auto",b.sendMessage(X,{viaVoice:!0})),ce()}};try{if(pe.start(),Ee=!0,Me.active=!0,l!=="system"&&(Me.manuallyDeactivated=!1),bn(l),qt(),R){ae={backgroundColor:R.style.backgroundColor,color:R.style.color,borderColor:R.style.borderColor};let X=(T=t.voiceRecognition)!=null?T:{},ve=(q=X.recordingBackgroundColor)!=null?q:"#ef4444",$=X.recordingIconColor,De=X.recordingBorderColor;if(R.classList.add("tvw-voice-recording"),R.style.backgroundColor=ve,$){R.style.color=$;let Ae=R.querySelector("svg");Ae&&Ae.setAttribute("stroke",$)}De&&(R.style.borderColor=De),R.setAttribute("aria-label","Stop voice recognition")}}catch{ce("system")}},ce=(l="user")=>{if(Ee){if(Ee=!1,Be&&(clearTimeout(Be),Be=null),pe){try{pe.stop()}catch{}pe=null}if(Me.active=!1,bn(l),qt(),R){if(R.classList.remove("tvw-voice-recording"),ae){R.style.backgroundColor=ae.backgroundColor,R.style.color=ae.color,R.style.borderColor=ae.borderColor;let d=R.querySelector("svg");d&&d.setAttribute("stroke",ae.color||"currentColor"),ae=null}R.setAttribute("aria-label","Start voice recognition")}}},Qe=(l,d)=>{var Je,Ye,st,Tt,G,ke,Gt;if(!(typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined")))return null;let P=g("div","tvw-send-button-wrapper"),x=g("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer");x.type="button",x.setAttribute("aria-label","Start voice recognition");let K=(Je=l==null?void 0:l.iconName)!=null?Je:"mic",de=(Ye=d==null?void 0:d.size)!=null?Ye:"40px",T=(st=l==null?void 0:l.iconSize)!=null?st:de,q=parseFloat(T)||24,X=(Tt=l==null?void 0:l.backgroundColor)!=null?Tt:d==null?void 0:d.backgroundColor,ve=(G=l==null?void 0:l.iconColor)!=null?G:d==null?void 0:d.textColor;x.style.width=T,x.style.height=T,x.style.minWidth=T,x.style.minHeight=T,x.style.fontSize="18px",x.style.lineHeight="1";let $=ve||"currentColor",De=ne(K,q,$,1.5);De?(x.appendChild(De),x.style.color=$):(x.textContent="\u{1F3A4}",x.style.color=$),X?x.style.backgroundColor=X:x.classList.add("tvw-bg-cw-primary"),ve?x.style.color=ve:!ve&&!(d!=null&&d.textColor)&&x.classList.add("tvw-text-white"),l!=null&&l.borderWidth&&(x.style.borderWidth=l.borderWidth,x.style.borderStyle="solid"),l!=null&&l.borderColor&&(x.style.borderColor=l.borderColor),l!=null&&l.paddingX&&(x.style.paddingLeft=l.paddingX,x.style.paddingRight=l.paddingX),l!=null&&l.paddingY&&(x.style.paddingTop=l.paddingY,x.style.paddingBottom=l.paddingY),P.appendChild(x);let Ae=(ke=l==null?void 0:l.tooltipText)!=null?ke:"Start voice recognition";if(((Gt=l==null?void 0:l.showTooltip)!=null?Gt:!1)&&Ae){let Qt=g("div","tvw-send-button-tooltip");Qt.textContent=Ae,P.appendChild(Qt)}return{micButton:x,micButtonWrapper:P}},wt=()=>{if(Ee){let l=Q.value.trim();Me.manuallyDeactivated=!0,qt(),ce("user"),l&&(Q.value="",Q.style.height="auto",b.sendMessage(l))}else Me.manuallyDeactivated=!1,qt(),Fe("user")};R&&(R.addEventListener("click",wt),We.push(()=>{ce("system"),R&&R.removeEventListener("click",wt)}));let Bt=s.on("assistant:complete",()=>{vn&&(Me.active||Me.manuallyDeactivated||vn==="assistant"&&!Me.lastUserMessageWasVoice||setTimeout(()=>{!Me.active&&!Me.manuallyDeactivated&&Fe("auto")},600))});We.push(Bt);let Hi=s.on("action:resubmit",()=>{setTimeout(()=>{b&&!b.isStreaming()&&b.continueConversation()},100)});We.push(Hi);let an=()=>{C(!h,"user")},Ne=null,je=null;if(M){let l=r.find(d=>d.renderLauncher);if(l!=null&&l.renderLauncher){let d=l.renderLauncher({config:t,defaultRenderer:()=>Hn(t,an).element,onToggle:an});d&&(je=d)}je||(Ne=Hn(t,an))}Ne?e.appendChild(Ne.element):je&&e.appendChild(je),H(),At.render(t.suggestionChips,b,Q,void 0,t.suggestionChipsConfig),He(),Y(b.isStreaming()),Le(!0),I();let Cn=()=>{var S,P,x,K,de,T,q,X;let l=(P=(S=t.launcher)==null?void 0:S.sidebarMode)!=null?P:!1,d=l||((K=(x=t.launcher)==null?void 0:x.fullHeight)!=null?K:!1);if(!M){N.style.height="",N.style.width="";return}if(!l){let ve=(T=(de=t==null?void 0:t.launcher)==null?void 0:de.width)!=null?T:t==null?void 0:t.launcherWidth,$=ve!=null?ve:"min(400px, calc(100vw - 24px))";N.style.width=$,N.style.maxWidth=$}if(!d){let ve=window.innerHeight,$=64,De=(X=(q=t.launcher)==null?void 0:q.heightOffset)!=null?X:0,Ae=Math.max(200,ve-$),ge=Math.min(640,Ae),Je=Math.max(200,ge-De);N.style.height=`${Je}px`}};Cn(),window.addEventListener("resize",Cn),We.push(()=>window.removeEventListener("resize",Cn)),gt=Te.scrollTop;let $s=()=>{let l=Te.scrollTop,d=Te.scrollHeight,S=Te.clientHeight,P=d-l-S,x=Math.abs(l-gt);if(gt=l,!Vt&&!(x<=On)){if(!$e&&P<yn){ht=!1,$e=!0;return}$e&&P>yn&&(ht=!0,Ht=Date.now()+$n,$e=!1)}};Te.addEventListener("scroll",$s,{passive:!0}),We.push(()=>Te.removeEventListener("scroll",$s)),We.push(()=>{mt&&cancelAnimationFrame(mt)});let Os=()=>{D&&(ct&&(D.removeEventListener("click",ct),ct=null),M?(D.style.display="",ct=()=>{h=!1,H()},D.addEventListener("click",ct)):D.style.display="none")};Os(),(()=>{let{clearChatButton:l}=se;l&&l.addEventListener("click",()=>{b.clearMessages();try{localStorage.removeItem(wn),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${wn}`)}catch(S){console.error("[AgentWidget] Failed to clear default localStorage:",S)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==wn)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(S){console.error("[AgentWidget] Failed to clear custom localStorage:",S)}let d=new CustomEvent("persona:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(d),i!=null&&i.clear)try{let S=i.clear();S instanceof Promise&&S.catch(P=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",P)})}catch(S){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",S)}a={},y.syncFromMetadata()})})(),bt.addEventListener("submit",Ie),Q.addEventListener("keydown",ft),We.push(()=>{bt.removeEventListener("submit",Ie),Q.removeEventListener("keydown",ft)}),We.push(()=>{b.cancel()}),Ne?We.push(()=>{Ne==null||Ne.destroy()}):je&&We.push(()=>{je==null||je.remove()});let Rt={update(l){var lo,co,uo,po,go,mo,ho,fo,wo,yo,vo,bo,Co,xo,So,Ao,To,Mo,Eo,ko,Wo,Lo,Po,Ho,Io,Bo,Ro,Fo,$o,Oo,No,jo,Do,_o,qo,Uo,zo,Jo,Yo,Ko,Vo,Xo,Go,Qo,Zo,er,tr,nr,sr,or,rr,ir,ar,lr,cr,dr,ur,pr,gr,mr,hr,fr,wr,yr,vr,br,Cr,xr,Sr,Ar,Tr,Mr,Er,kr,Wr,Lr,Pr,Hr,Ir,Br,Rr,Fr;let d=t.toolCall,S=t.colorScheme;t={...t,...l},Pt(),es(e,t),t.colorScheme!==S&&kt();let P=Bn.getForInstance(t.plugins);if(r.length=0,r.push(...P),M=(co=(lo=t.launcher)==null?void 0:lo.enabled)!=null?co:!0,E=(po=(uo=t.launcher)==null?void 0:uo.autoExpand)!=null?po:!1,_=(mo=(go=t.features)==null?void 0:go.showReasoning)!=null?mo:!0,Z=(fo=(ho=t.features)==null?void 0:ho.showToolCalls)!=null?fo:!0,((wo=t.launcher)==null?void 0:wo.enabled)===!1&&Ne&&(Ne.destroy(),Ne=null),((yo=t.launcher)==null?void 0:yo.enabled)===!1&&je&&(je.remove(),je=null),((vo=t.launcher)==null?void 0:vo.enabled)!==!1&&!Ne&&!je){let k=r.find(me=>me.renderLauncher);if(k!=null&&k.renderLauncher){let me=k.renderLauncher({config:t,defaultRenderer:()=>Hn(t,an).element,onToggle:an});me&&(je=me,e.appendChild(je))}je||(Ne=Hn(t,an),e.appendChild(Ne.element))}Ne&&Ne.update(t),rt&&((bo=t.launcher)==null?void 0:bo.title)!==void 0&&(rt.textContent=t.launcher.title),it&&((Co=t.launcher)==null?void 0:Co.subtitle)!==void 0&&(it.textContent=t.launcher.subtitle);let x=(xo=t.layout)==null?void 0:xo.header;if((x==null?void 0:x.layout)!==z&&Ve){let k=x?dn(t,x,{showClose:M,onClose:()=>C(!1,"user")}):zt({config:t,showClose:M,onClose:()=>C(!1,"user")});Ve.replaceWith(k.header),Ve=k.header,ye=k.iconHolder,rt=k.headerTitle,it=k.headerSubtitle,D=k.closeButton,z=x==null?void 0:x.layout}else if(x&&(ye&&(ye.style.display=x.showIcon===!1?"none":""),rt&&(rt.style.display=x.showTitle===!1?"none":""),it&&(it.style.display=x.showSubtitle===!1?"none":""),D&&(D.style.display=x.showCloseButton===!1?"none":""),se.clearChatButtonWrapper)){let k=x.showClearChat;if(k!==void 0){se.clearChatButtonWrapper.style.display=k?"":"none";let{closeButtonWrapper:me}=se;me&&!me.classList.contains("tvw-absolute")&&(k?me.classList.remove("tvw-ml-auto"):me.classList.add("tvw-ml-auto"))}}let de=((So=t.layout)==null?void 0:So.showHeader)!==!1;Ve&&(Ve.style.display=de?"":"none");let T=((Ao=t.layout)==null?void 0:Ao.showFooter)!==!1;at&&(at.style.display=T?"":"none"),M!==W?M?C(E,"auto"):(h=!0,H()):E!==v&&C(E,"auto"),v=E,W=M,Cn(),Os(),JSON.stringify(l.toolCall)!==JSON.stringify(d)&&b&&ee(Ue,b.getMessages(),U);let $=(To=t.launcher)!=null?To:{},De=(Mo=$.headerIconHidden)!=null?Mo:!1,Ae=(ko=(Eo=t.layout)==null?void 0:Eo.header)==null?void 0:ko.showIcon,ge=De||Ae===!1,Je=$.headerIconName,Ye=(Wo=$.headerIconSize)!=null?Wo:"48px";if(ye){let k=oe.querySelector(".tvw-border-b-cw-divider"),me=k==null?void 0:k.querySelector(".tvw-flex-col");if(ge)ye.style.display="none",k&&me&&!k.contains(me)&&k.insertBefore(me,k.firstChild);else{if(ye.style.display="",ye.style.height=Ye,ye.style.width=Ye,k&&me&&(k.contains(ye)?ye.nextSibling!==me&&(ye.remove(),k.insertBefore(ye,me)):k.insertBefore(ye,me)),Je){let te=parseFloat(Ye)||24,be=ne(Je,te*.6,"#ffffff",2);be?ye.replaceChildren(be):ye.textContent=(Lo=$.agentIconText)!=null?Lo:"\u{1F4AC}"}else if($.iconUrl){let te=ye.querySelector("img");if(te)te.src=$.iconUrl,te.style.height=Ye,te.style.width=Ye;else{let be=document.createElement("img");be.src=$.iconUrl,be.alt="",be.className="tvw-rounded-xl tvw-object-cover",be.style.height=Ye,be.style.width=Ye,ye.replaceChildren(be)}}else{let te=ye.querySelector("svg"),be=ye.querySelector("img");(te||be)&&ye.replaceChildren(),ye.textContent=(Po=$.agentIconText)!=null?Po:"\u{1F4AC}"}let _e=ye.querySelector("img");_e&&(_e.style.height=Ye,_e.style.width=Ye)}}let st=(Io=(Ho=t.layout)==null?void 0:Ho.header)==null?void 0:Io.showTitle,Tt=(Ro=(Bo=t.layout)==null?void 0:Bo.header)==null?void 0:Ro.showSubtitle;if(rt&&(rt.style.display=st===!1?"none":""),it&&(it.style.display=Tt===!1?"none":""),D){(($o=(Fo=t.layout)==null?void 0:Fo.header)==null?void 0:$o.showCloseButton)===!1?D.style.display="none":D.style.display="";let me=(Oo=$.closeButtonSize)!=null?Oo:"32px",_e=(No=$.closeButtonPlacement)!=null?No:"inline";D.style.height=me,D.style.width=me;let{closeButtonWrapper:te}=se,be=_e==="top-right",dt=te==null?void 0:te.classList.contains("tvw-absolute");if(te&&be!==dt)if(te.remove(),be)te.className="tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50",oe.style.position="relative",oe.appendChild(te);else{let le=(Do=(jo=$.clearChat)==null?void 0:jo.placement)!=null?Do:"inline",Ge=(qo=(_o=$.clearChat)==null?void 0:_o.enabled)!=null?qo:!0;te.className=Ge&&le==="inline"?"":"tvw-ml-auto";let xt=oe.querySelector(".tvw-border-b-cw-divider");xt&&xt.appendChild(te)}if($.closeButtonColor?(D.style.color=$.closeButtonColor,D.classList.remove("tvw-text-cw-muted")):(D.style.color="",D.classList.add("tvw-text-cw-muted")),$.closeButtonBackgroundColor?(D.style.backgroundColor=$.closeButtonBackgroundColor,D.classList.remove("hover:tvw-bg-gray-100")):(D.style.backgroundColor="",D.classList.add("hover:tvw-bg-gray-100")),$.closeButtonBorderWidth||$.closeButtonBorderColor){let le=$.closeButtonBorderWidth||"0px",Ge=$.closeButtonBorderColor||"transparent";D.style.border=`${le} solid ${Ge}`,D.classList.remove("tvw-border-none")}else D.style.border="",D.classList.add("tvw-border-none");$.closeButtonBorderRadius?(D.style.borderRadius=$.closeButtonBorderRadius,D.classList.remove("tvw-rounded-full")):(D.style.borderRadius="",D.classList.add("tvw-rounded-full")),$.closeButtonPaddingX?(D.style.paddingLeft=$.closeButtonPaddingX,D.style.paddingRight=$.closeButtonPaddingX):(D.style.paddingLeft="",D.style.paddingRight=""),$.closeButtonPaddingY?(D.style.paddingTop=$.closeButtonPaddingY,D.style.paddingBottom=$.closeButtonPaddingY):(D.style.paddingTop="",D.style.paddingBottom="");let ot=(Uo=$.closeButtonIconName)!=null?Uo:"x",Mt=(zo=$.closeButtonIconText)!=null?zo:"\xD7";D.innerHTML="";let yt=ne(ot,"20px",$.closeButtonColor||"",2);yt?D.appendChild(yt):D.textContent=Mt;let qe=(Jo=$.closeButtonTooltipText)!=null?Jo:"Close chat",Et=(Yo=$.closeButtonShowTooltip)!=null?Yo:!0;if(D.setAttribute("aria-label",qe),te&&(te._cleanupTooltip&&(te._cleanupTooltip(),delete te._cleanupTooltip),Et&&qe)){let le=null,Ge=()=>{if(le||!D)return;le=g("div","tvw-clear-chat-tooltip"),le.textContent=qe;let kn=g("div");kn.className="tvw-clear-chat-tooltip-arrow",le.appendChild(kn);let Zt=D.getBoundingClientRect();le.style.position="fixed",le.style.left=`${Zt.left+Zt.width/2}px`,le.style.top=`${Zt.top-8}px`,le.style.transform="translate(-50%, -100%)",document.body.appendChild(le)},xt=()=>{le&&le.parentNode&&(le.parentNode.removeChild(le),le=null)};te.addEventListener("mouseenter",Ge),te.addEventListener("mouseleave",xt),D.addEventListener("focus",Ge),D.addEventListener("blur",xt),te._cleanupTooltip=()=>{xt(),te&&(te.removeEventListener("mouseenter",Ge),te.removeEventListener("mouseleave",xt)),D&&(D.removeEventListener("focus",Ge),D.removeEventListener("blur",xt))}}}let{clearChatButton:G,clearChatButtonWrapper:ke}=se;if(G){let k=(Ko=$.clearChat)!=null?Ko:{},me=(Vo=k.enabled)!=null?Vo:!0,_e=(Go=(Xo=t.layout)==null?void 0:Xo.header)==null?void 0:Go.showClearChat,te=_e!==void 0?_e:me,be=(Qo=k.placement)!=null?Qo:"inline";if(ke){ke.style.display=te?"":"none";let{closeButtonWrapper:dt}=se;dt&&!dt.classList.contains("tvw-absolute")&&(te?dt.classList.remove("tvw-ml-auto"):dt.classList.add("tvw-ml-auto"));let ot=be==="top-right",Mt=ke.classList.contains("tvw-absolute");if(ot!==Mt&&te){if(ke.remove(),ot)ke.className="tvw-absolute tvw-top-4 tvw-z-50",ke.style.right="48px",oe.style.position="relative",oe.appendChild(ke);else{ke.className="tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper",ke.style.right="";let qe=oe.querySelector(".tvw-border-b-cw-divider"),Et=se.closeButtonWrapper;qe&&Et&&Et.parentElement===qe?qe.insertBefore(ke,Et):qe&&qe.appendChild(ke)}let yt=se.closeButtonWrapper;yt&&!yt.classList.contains("tvw-absolute")&&(ot?yt.classList.add("tvw-ml-auto"):yt.classList.remove("tvw-ml-auto"))}}if(te){let dt=(Zo=k.size)!=null?Zo:"32px";G.style.height=dt,G.style.width=dt;let ot=(er=k.iconName)!=null?er:"refresh-cw",Mt=(tr=k.iconColor)!=null?tr:"";G.innerHTML="";let yt=ne(ot,"20px",Mt||"",2);if(yt&&G.appendChild(yt),Mt?(G.style.color=Mt,G.classList.remove("tvw-text-cw-muted")):(G.style.color="",G.classList.add("tvw-text-cw-muted")),k.backgroundColor?(G.style.backgroundColor=k.backgroundColor,G.classList.remove("hover:tvw-bg-gray-100")):(G.style.backgroundColor="",G.classList.add("hover:tvw-bg-gray-100")),k.borderWidth||k.borderColor){let le=k.borderWidth||"0px",Ge=k.borderColor||"transparent";G.style.border=`${le} solid ${Ge}`,G.classList.remove("tvw-border-none")}else G.style.border="",G.classList.add("tvw-border-none");k.borderRadius?(G.style.borderRadius=k.borderRadius,G.classList.remove("tvw-rounded-full")):(G.style.borderRadius="",G.classList.add("tvw-rounded-full")),k.paddingX?(G.style.paddingLeft=k.paddingX,G.style.paddingRight=k.paddingX):(G.style.paddingLeft="",G.style.paddingRight=""),k.paddingY?(G.style.paddingTop=k.paddingY,G.style.paddingBottom=k.paddingY):(G.style.paddingTop="",G.style.paddingBottom="");let qe=(nr=k.tooltipText)!=null?nr:"Clear chat",Et=(sr=k.showTooltip)!=null?sr:!0;if(G.setAttribute("aria-label",qe),ke&&(ke._cleanupTooltip&&(ke._cleanupTooltip(),delete ke._cleanupTooltip),Et&&qe)){let le=null,Ge=()=>{if(le||!G)return;le=g("div","tvw-clear-chat-tooltip"),le.textContent=qe;let kn=g("div");kn.className="tvw-clear-chat-tooltip-arrow",le.appendChild(kn);let Zt=G.getBoundingClientRect();le.style.position="fixed",le.style.left=`${Zt.left+Zt.width/2}px`,le.style.top=`${Zt.top-8}px`,le.style.transform="translate(-50%, -100%)",document.body.appendChild(le)},xt=()=>{le&&le.parentNode&&(le.parentNode.removeChild(le),le=null)};ke.addEventListener("mouseenter",Ge),ke.addEventListener("mouseleave",xt),G.addEventListener("focus",Ge),G.addEventListener("blur",xt),ke._cleanupTooltip=()=>{xt(),ke&&(ke.removeEventListener("mouseenter",Ge),ke.removeEventListener("mouseleave",xt)),G&&(G.removeEventListener("focus",Ge),G.removeEventListener("blur",xt))}}}}let Gt=t.actionParsers&&t.actionParsers.length?t.actionParsers:[Rn],Qt=t.actionHandlers&&t.actionHandlers.length?t.actionHandlers:[sn.message,sn.messageAndClick];y=Fn({parsers:Gt,handlers:Qt,getSessionMetadata:f,updateSessionMetadata:p,emit:s.emit,documentRef:typeof document!="undefined"?document:null}),U=Si(t,y,L),b.updateConfig(t),ee(Ue,b.getMessages(),U),At.render(t.suggestionChips,b,Q,void 0,t.suggestionChipsConfig),He(),Y(b.isStreaming());let Nn=((or=t.voiceRecognition)==null?void 0:or.enabled)===!0,jn=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined");if(Nn&&jn)if(!R||!ze){let k=Qe(t.voiceRecognition,t.sendButton);k&&(R=k.micButton,ze=k.micButtonWrapper,jt.insertBefore(ze,pt),R.addEventListener("click",wt),R.disabled=b.isStreaming())}else{let k=(rr=t.voiceRecognition)!=null?rr:{},me=(ir=t.sendButton)!=null?ir:{},_e=(ar=k.iconName)!=null?ar:"mic",te=(lr=me.size)!=null?lr:"40px",be=(cr=k.iconSize)!=null?cr:te,dt=parseFloat(be)||24;R.style.width=be,R.style.height=be,R.style.minWidth=be,R.style.minHeight=be;let ot=(ur=(dr=k.iconColor)!=null?dr:me.textColor)!=null?ur:"currentColor";R.innerHTML="";let Mt=ne(_e,dt,ot,2);Mt?R.appendChild(Mt):R.textContent="\u{1F3A4}";let yt=(pr=k.backgroundColor)!=null?pr:me.backgroundColor;yt?(R.style.backgroundColor=yt,R.classList.remove("tvw-bg-cw-primary")):(R.style.backgroundColor="",R.classList.add("tvw-bg-cw-primary")),ot?(R.style.color=ot,R.classList.remove("tvw-text-white")):!ot&&!me.textColor&&(R.style.color="",R.classList.add("tvw-text-white")),k.borderWidth?(R.style.borderWidth=k.borderWidth,R.style.borderStyle="solid"):(R.style.borderWidth="",R.style.borderStyle=""),k.borderColor?R.style.borderColor=k.borderColor:R.style.borderColor="",k.paddingX?(R.style.paddingLeft=k.paddingX,R.style.paddingRight=k.paddingX):(R.style.paddingLeft="",R.style.paddingRight=""),k.paddingY?(R.style.paddingTop=k.paddingY,R.style.paddingBottom=k.paddingY):(R.style.paddingTop="",R.style.paddingBottom="");let qe=ze==null?void 0:ze.querySelector(".tvw-send-button-tooltip"),Et=(gr=k.tooltipText)!=null?gr:"Start voice recognition";if(((mr=k.showTooltip)!=null?mr:!1)&&Et)if(qe)qe.textContent=Et,qe.style.display="";else{let Ge=document.createElement("div");Ge.className="tvw-send-button-tooltip",Ge.textContent=Et,ze==null||ze.insertBefore(Ge,R)}else qe&&(qe.style.display="none");ze.style.display="",R.disabled=b.isStreaming()}else R&&ze&&(ze.style.display="none",Ee&&ce());if(((hr=t.attachments)==null?void 0:hr.enabled)===!0)if(!Ze||!he){let k=(fr=t.attachments)!=null?fr:{},_e=(yr=((wr=t.sendButton)!=null?wr:{}).size)!=null?yr:"40px";V||(V=g("div","tvw-attachment-previews tvw-flex tvw-flex-wrap tvw-gap-2 tvw-mb-2"),V.style.display="none",bt.insertBefore(V,Q)),fe||(fe=document.createElement("input"),fe.type="file",fe.accept=((vr=k.allowedTypes)!=null?vr:Kt).join(","),fe.multiple=((br=k.maxFiles)!=null?br:4)>1,fe.style.display="none",fe.setAttribute("aria-label","Attach files"),bt.insertBefore(fe,Q)),Ze=g("div","tvw-send-button-wrapper"),he=g("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer tvw-attachment-button"),he.type="button",he.setAttribute("aria-label",(Cr=k.buttonTooltipText)!=null?Cr:"Attach file");let te=(xr=k.buttonIconName)!=null?xr:"paperclip",be=_e,dt=parseFloat(be)||40,ot=Math.round(dt*.6);he.style.width=be,he.style.height=be,he.style.minWidth=be,he.style.minHeight=be,he.style.fontSize="18px",he.style.lineHeight="1",he.style.backgroundColor="transparent",he.style.color="var(--cw-primary, #111827)",he.style.border="none",he.style.borderRadius="6px",he.style.transition="background-color 0.15s ease",he.addEventListener("mouseenter",()=>{he.style.backgroundColor="rgba(0, 0, 0, 0.05)"}),he.addEventListener("mouseleave",()=>{he.style.backgroundColor="transparent"});let Mt=ne(te,ot,"currentColor",1.5);Mt?he.appendChild(Mt):he.textContent="\u{1F4CE}",he.addEventListener("click",Et=>{Et.preventDefault(),fe==null||fe.click()}),Ze.appendChild(he);let yt=(Sr=k.buttonTooltipText)!=null?Sr:"Attach file",qe=g("div","tvw-send-button-tooltip");qe.textContent=yt,Ze.appendChild(qe),Nt.append(Ze),!re&&fe&&V&&(re=tn.fromConfig(k),re.setPreviewsContainer(V),fe.addEventListener("change",async()=>{re&&(fe!=null&&fe.files)&&(await re.handleFileSelect(fe.files),fe.value="")}))}else{Ze.style.display="";let k=(Ar=t.attachments)!=null?Ar:{};fe&&(fe.accept=((Tr=k.allowedTypes)!=null?Tr:Kt).join(","),fe.multiple=((Mr=k.maxFiles)!=null?Mr:4)>1),re&&re.updateConfig({allowedTypes:k.allowedTypes,maxFileSize:k.maxFileSize,maxFiles:k.maxFiles})}else Ze&&(Ze.style.display="none"),re&&re.clearAttachments();let Ke=(Er=t.sendButton)!=null?Er:{},Dn=(kr=Ke.useIcon)!=null?kr:!1,xn=(Wr=Ke.iconText)!=null?Wr:"\u2191",Sn=Ke.iconName,Yt=(Lr=Ke.tooltipText)!=null?Lr:"Send message",An=(Pr=Ke.showTooltip)!=null?Pr:!1,Tn=(Hr=Ke.size)!=null?Hr:"40px",_n=Ke.backgroundColor,Dt=Ke.textColor;if(Dn){if(j.style.width=Tn,j.style.height=Tn,j.style.minWidth=Tn,j.style.minHeight=Tn,j.style.fontSize="18px",j.style.lineHeight="1",j.innerHTML="",Sn){let k=parseFloat(Tn)||24,me=Dt&&typeof Dt=="string"&&Dt.trim()?Dt.trim():"currentColor",_e=ne(Sn,k,me,2);_e?(j.appendChild(_e),j.style.color=me):(j.textContent=xn,Dt?j.style.color=Dt:j.classList.add("tvw-text-white"))}else j.textContent=xn,Dt?j.style.color=Dt:j.classList.add("tvw-text-white");j.className="tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer",_n?(j.style.backgroundColor=_n,j.classList.remove("tvw-bg-cw-primary")):j.classList.add("tvw-bg-cw-primary")}else j.textContent=(Br=(Ir=t.copy)==null?void 0:Ir.sendButtonLabel)!=null?Br:"Send",j.style.width="",j.style.height="",j.style.minWidth="",j.style.minHeight="",j.style.fontSize="",j.style.lineHeight="",j.className="tvw-rounded-button tvw-bg-cw-accent tvw-px-4 tvw-py-2 tvw-text-sm tvw-font-semibold tvw-text-white disabled:tvw-opacity-50 tvw-cursor-pointer",_n?(j.style.backgroundColor=_n,j.classList.remove("tvw-bg-cw-accent")):j.classList.add("tvw-bg-cw-accent"),Dt?j.style.color=Dt:j.classList.add("tvw-text-white");Ke.borderWidth?(j.style.borderWidth=Ke.borderWidth,j.style.borderStyle="solid"):(j.style.borderWidth="",j.style.borderStyle=""),Ke.borderColor?j.style.borderColor=Ke.borderColor:j.style.borderColor="",Ke.paddingX?(j.style.paddingLeft=Ke.paddingX,j.style.paddingRight=Ke.paddingX):(j.style.paddingLeft="",j.style.paddingRight=""),Ke.paddingY?(j.style.paddingTop=Ke.paddingY,j.style.paddingBottom=Ke.paddingY):(j.style.paddingTop="",j.style.paddingBottom="");let Mn=pt==null?void 0:pt.querySelector(".tvw-send-button-tooltip");if(An&&Yt)if(Mn)Mn.textContent=Yt,Mn.style.display="";else{let k=document.createElement("div");k.className="tvw-send-button-tooltip",k.textContent=Yt,pt==null||pt.insertBefore(k,j)}else Mn&&(Mn.style.display="none");let En=(Rr=t.statusIndicator)!=null?Rr:{},Ii=(Fr=En.visible)!=null?Fr:!0;if(Ct.style.display=Ii?"":"none",b){let k=b.getStatus(),me=_e=>{var te,be,dt,ot;return _e==="idle"?(te=En.idleText)!=null?te:ut.idle:_e==="connecting"?(be=En.connectingText)!=null?be:ut.connecting:_e==="connected"?(dt=En.connectedText)!=null?dt:ut.connected:_e==="error"?(ot=En.errorText)!=null?ot:ut.error:ut[_e]};Ct.textContent=me(k)}},open(){M&&C(!0,"api")},close(){M&&C(!1,"api")},toggle(){M&&C(!h,"api")},clearChat(){b.clearMessages();try{localStorage.removeItem(wn),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${wn}`)}catch(d){console.error("[AgentWidget] Failed to clear default localStorage:",d)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==wn)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(d){console.error("[AgentWidget] Failed to clear custom localStorage:",d)}let l=new CustomEvent("persona:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(l),i!=null&&i.clear)try{let d=i.clear();d instanceof Promise&&d.catch(S=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",S)})}catch(d){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",d)}a={},y.syncFromMetadata()},setMessage(l){return!Q||b.isStreaming()?!1:(!h&&M&&C(!0,"system"),Q.value=l,Q.dispatchEvent(new Event("input",{bubbles:!0})),!0)},submitMessage(l){if(b.isStreaming())return!1;let d=(l==null?void 0:l.trim())||Q.value.trim();return d?(!h&&M&&C(!0,"system"),Q.value="",Q.style.height="auto",b.sendMessage(d),!0):!1},startVoiceRecognition(){return Ee||b.isStreaming()||!Se()?!1:(!h&&M&&C(!0,"system"),Me.manuallyDeactivated=!1,qt(),Fe("user"),!0)},stopVoiceRecognition(){return Ee?(Me.manuallyDeactivated=!0,qt(),ce("user"),!0):!1},injectMessage(l){return!h&&M&&C(!0,"system"),b.injectMessage(l)},injectAssistantMessage(l){!h&&M&&C(!0,"system");let d=b.injectAssistantMessage(l);return O&&(O=!1,A&&(clearTimeout(A),A=null),setTimeout(()=>{b&&!b.isStreaming()&&b.continueConversation()},100)),d},injectUserMessage(l){return!h&&M&&C(!0,"system"),b.injectUserMessage(l)},injectSystemMessage(l){return!h&&M&&C(!0,"system"),b.injectSystemMessage(l)},injectTestMessage(l){!h&&M&&C(!0,"system"),b.injectTestEvent(l)},getMessages(){return b.getMessages()},getStatus(){return b.getStatus()},getPersistentMetadata(){return{...a}},updatePersistentMetadata(l){p(l)},on(l,d){return s.on(l,d)},off(l,d){s.off(l,d)},isOpen(){return M&&h},isVoiceActive(){return Me.active},getState(){return{open:M&&h,launcherEnabled:M,voiceActive:Me.active,streaming:b.isStreaming()}},showCSATFeedback(l){!h&&M&&C(!0,"system");let d=Ue.querySelector(".tvw-feedback-container");d&&d.remove();let S=ls({onSubmit:async(P,x)=>{var K;b.isClientTokenMode()&&await b.submitCSATFeedback(P,x),(K=l==null?void 0:l.onSubmit)==null||K.call(l,P,x)},onDismiss:l==null?void 0:l.onDismiss,...l});Ue.appendChild(S),S.scrollIntoView({behavior:"smooth",block:"end"})},showNPSFeedback(l){!h&&M&&C(!0,"system");let d=Ue.querySelector(".tvw-feedback-container");d&&d.remove();let S=cs({onSubmit:async(P,x)=>{var K;b.isClientTokenMode()&&await b.submitNPSFeedback(P,x),(K=l==null?void 0:l.onSubmit)==null||K.call(l,P,x)},onDismiss:l==null?void 0:l.onDismiss,...l});Ue.appendChild(S),S.scrollIntoView({behavior:"smooth",block:"end"})},async submitCSATFeedback(l,d){return b.submitCSATFeedback(l,d)},async submitNPSFeedback(l,d){return b.submitNPSFeedback(l,d)},destroy(){We.forEach(l=>l()),B.remove(),Ne==null||Ne.destroy(),je==null||je.remove(),ct&&D.removeEventListener("click",ct)}};if((((no=o==null?void 0:o.debugTools)!=null?no:!1)||!!t.debug)&&typeof window!="undefined"){let l=window.AgentWidgetBrowser,d={controller:Rt,getMessages:Rt.getMessages,getStatus:Rt.getStatus,getMetadata:Rt.getPersistentMetadata,updateMetadata:Rt.updatePersistentMetadata,clearHistory:()=>Rt.clearChat(),setVoiceActive:S=>S?Rt.startVoiceRecognition():Rt.stopVoiceRecognition()};window.AgentWidgetBrowser=d,We.push(()=>{window.AgentWidgetBrowser===d&&(window.AgentWidgetBrowser=l)})}let Wt=ma(t.persistState);if(Wt&&M){let l=ha(Wt.storage),d=`${Wt.keyPrefix}widget-open`,S=`${Wt.keyPrefix}widget-voice`,P=`${Wt.keyPrefix}widget-voice-mode`;if(l){let x=((so=Wt.persist)==null?void 0:so.openState)&&l.getItem(d)==="true",K=((oo=Wt.persist)==null?void 0:oo.voiceState)&&l.getItem(S)==="true",de=((ro=Wt.persist)==null?void 0:ro.voiceState)&&l.getItem(P)==="true";if(x&&setTimeout(()=>{Rt.open(),setTimeout(()=>{var T;if(K||de)Rt.startVoiceRecognition();else if((T=Wt.persist)!=null&&T.focusInput){let q=e.querySelector("textarea");q&&q.focus()}},100)},0),(io=Wt.persist)!=null&&io.openState&&(s.on("widget:opened",()=>{l.setItem(d,"true")}),s.on("widget:closed",()=>{l.setItem(d,"false")})),(ao=Wt.persist)!=null&&ao.voiceState&&(s.on("voice:state",T=>{l.setItem(S,T.active?"true":"false")}),s.on("user:message",T=>{l.setItem(P,T.viaVoice?"true":"false")})),Wt.clearOnChatClear){let T=()=>{l.removeItem(d),l.removeItem(S),l.removeItem(P)},q=()=>T();window.addEventListener("vanilla-agent:clear-chat",q),We.push(()=>{window.removeEventListener("vanilla-agent:clear-chat",q)})}}}return Rt};var Bs={},fa=e=>{if(typeof window=="undefined"||typeof document=="undefined")throw new Error("Chat widget can only be mounted in a browser environment");if(typeof e=="string"){let n=document.querySelector(e);if(!n)throw new Error(`Chat widget target "${e}" was not found`);return n}return e},wa=()=>{try{if(typeof Bs!="undefined"&&Bs.url)return new URL("../widget.css",Bs.url).href}catch{}return null},Ai=e=>{let n=wa(),o=()=>{if(!(e instanceof ShadowRoot)||e.querySelector("link[data-persona]"))return;let t=document.head.querySelector("link[data-persona]");if(!t)return;let r=t.cloneNode(!0);e.insertBefore(r,e.firstChild)};if(e instanceof ShadowRoot)if(n){let t=document.createElement("link");t.rel="stylesheet",t.href=n,t.setAttribute("data-persona","true"),e.insertBefore(t,e.firstChild)}else o();else if(!document.head.querySelector("link[data-persona]")&&n){let r=document.createElement("link");r.rel="stylesheet",r.href=n,r.setAttribute("data-persona","true"),document.head.appendChild(r)}},Rs=e=>{var u,f,p,m;let n=fa(e.target),o=document.createElement("div");o.className="persona-host";let t=(p=(f=(u=e.config)==null?void 0:u.launcher)==null?void 0:f.enabled)!=null?p:!0;t||(o.style.height="100%"),n.appendChild(o);let r=e.useShadowDom===!0,s,i;if(r){let w=o.attachShadow({mode:"open"});i=w,s=document.createElement("div"),s.id="persona-root",t||(s.style.height="100%",s.style.display="flex",s.style.flexDirection="column",s.style.flex="1",s.style.minHeight="0"),w.appendChild(s),Ai(w)}else i=o,s=document.createElement("div"),s.id="persona-root",t||(s.style.height="100%",s.style.display="flex",s.style.flexDirection="column",s.style.flex="1",s.style.minHeight="0"),o.appendChild(s),Ai(o);let a=ds(s,e.config,{debugTools:e.debugTools});(m=e.onReady)==null||m.call(e);let c={...a,host:o,destroy(){a.destroy(),o.remove(),e.windowKey&&typeof window!="undefined"&&delete window[e.windowKey]}};return e.windowKey&&typeof window!="undefined"&&(window[e.windowKey]=c),c};var Ti={name:"@runtypelabs/persona",version:"1.40.1",description:"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.",type:"module",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./widget.css":{import:"./widget.css",default:"./dist/widget.css"}},files:["dist","widget.css","src"],scripts:{build:"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","build:styles":`node -e "const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');"`,"build:client":'tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader ".css=text"',"build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting",lint:"eslint . --ext .ts",typecheck:"tsc --noEmit",test:"vitest","test:ui":"vitest --ui","test:run":"vitest run"},dependencies:{idiomorph:"^0.7.4",lucide:"^0.552.0",marked:"^12.0.2","partial-json":"^0.1.7",zod:"^3.22.4"},devDependencies:{"@types/node":"^20.12.7","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","@vitest/ui":"^4.0.9",eslint:"^8.57.0","eslint-config-prettier":"^9.1.0",postcss:"^8.4.38",rimraf:"^5.0.5",tailwindcss:"^3.4.10",tsup:"^8.0.1",typescript:"^5.4.5",vitest:"^4.0.9"},engines:{node:">=18.17.0"},license:"MIT",keywords:["chat","widget","streaming","typescript","persona","agent"],repository:{type:"git",url:"git+https://github.com/runtypelabs/persona.git",directory:"packages/widget"},bugs:{url:"https://github.com/runtypelabs/persona/issues"},homepage:"https://github.com/runtypelabs/persona/tree/main/packages/widget#readme",publishConfig:{access:"public"}};var on=Ti.version;function Jt(e){if(e!==void 0)return typeof e=="string"?e:Array.isArray(e)?`[${e.map(n=>n.toString()).join(", ")}]`:e.toString()}function va(e){if(e)return{getHeaders:Jt(e.getHeaders),onFeedback:Jt(e.onFeedback),onCopy:Jt(e.onCopy),requestMiddleware:Jt(e.requestMiddleware),actionHandlers:Jt(e.actionHandlers),actionParsers:Jt(e.actionParsers),postprocessMessage:Jt(e.postprocessMessage),contextProviders:Jt(e.contextProviders),streamParser:Jt(e.streamParser)}}var Mi=`({ text, message }: any) => {
|
|
61
61
|
const jsonSource = (message as any).rawContent || text || message.content;
|
|
62
62
|
if (!jsonSource || typeof jsonSource !== 'string') return null;
|
|
63
63
|
let cleanJson = jsonSource
|