vanilla-agent 1.7.2 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +7 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -1
- package/dist/index.d.ts +29 -1
- package/dist/index.global.js +46 -46
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/panel.ts +5 -1
- package/src/components/suggestions.ts +48 -3
- package/src/defaults.ts +10 -0
- package/src/types.ts +25 -0
- package/src/ui.ts +81 -20
- package/src/utils/actions.ts +6 -7
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{marked as
|
|
2
|
-
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return s[1]}let a=/"text"\s*:\s*"((?:[^"\\]|\\.)*)/,
|
|
3
|
-
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return
|
|
1
|
+
import{marked as Mo}from"marked";Mo.setOptions({breaks:!0});var Wo=t=>Mo.parse(t),rn=t=>t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),jo=t=>t.replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"),Ao=t=>`%%FORM_PLACEHOLDER_${t}%%`,Vo=(t,n)=>{let r=t;return r=r.replace(/<Directive>([\s\S]*?)<\/Directive>/gi,(e,o)=>{try{let s=JSON.parse(o.trim());if(s&&typeof s=="object"&&s.component==="form"&&s.type){let a=Ao(n.length);return n.push({token:a,type:String(s.type)}),a}}catch{return e}return e}),r=r.replace(/<Form\s+type="([^"]+)"\s*\/>/gi,(e,o)=>{let s=Ao(n.length);return n.push({token:s,type:o}),s}),r},Uo=t=>{let n=[],r=Vo(t,n),e=Wo(r);return n.forEach(({token:o,type:s})=>{let a=new RegExp(o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),b=`<div class="tvw-form-directive" data-tv-form="${jo(s)}"></div>`;e=e.replace(a,b)}),e};import{parse as Eo,STR as Lo,OBJ as ko}from"partial-json";var sn=t=>{if(t===null)return"null";if(t===void 0)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);try{return JSON.stringify(t,null,2)}catch{return String(t)}},Ko=t=>{var a,c;let n=(a=t.completedAt)!=null?a:Date.now(),r=(c=t.startedAt)!=null?c:n,o=(t.durationMs!==void 0?t.durationMs:Math.max(0,n-r))/1e3;return o<.1?"Thought for <0.1 seconds":`Thought for ${o>=10?Math.round(o).toString():o.toFixed(1).replace(/\.0$/,"")} seconds`},Bo=t=>t.status==="complete"?Ko(t):t.status==="pending"?"Waiting":"",Xo=t=>{var o,s,a;let r=(typeof t.duration=="number"?t.duration:typeof t.durationMs=="number"?t.durationMs:Math.max(0,((o=t.completedAt)!=null?o:Date.now())-((a=(s=t.startedAt)!=null?s:t.completedAt)!=null?a:Date.now())))/1e3;return r<.1?"Used tool for <0.1 seconds":`Used tool for ${r>=10?Math.round(r).toString():r.toFixed(1).replace(/\.0$/,"")} seconds`};var Ro=t=>t.status==="complete"?Xo(t):"Using tool...",Yo=()=>{let t=null,n=0,r=e=>{let o=/"text"\s*:\s*"((?:[^"\\]|\\.|")*?)"/,s=e.match(o);if(s&&s[1])try{return s[1].replace(/\\n/g,`
|
|
2
|
+
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return s[1]}let a=/"text"\s*:\s*"((?:[^"\\]|\\.)*)/,c=e.match(a);if(c&&c[1])try{return c[1].replace(/\\n/g,`
|
|
3
|
+
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return c[1]}return null};return{getExtractedText:()=>t,processChunk:async e=>{if(e.length<=n)return t!==null?{text:t,raw:e}:null;let o=e.trim();if(!o.startsWith("{")&&!o.startsWith("["))return null;let s=r(e);return s!==null&&(t=s),n=e.length,t!==null?{text:t,raw:e}:null},close:async()=>{}}},Qt=t=>{try{let n=JSON.parse(t);if(n&&typeof n=="object"&&typeof n.text=="string")return n.text}catch{return null}return null},an=()=>{let t={processChunk:n=>null,getExtractedText:()=>null};return t.__isPlainTextParser=!0,t},ln=()=>{var n;let t=Yo();return{processChunk:async r=>{let e=r.trim();return!e.startsWith("{")&&!e.startsWith("[")?null:t.processChunk(r)},getExtractedText:t.getExtractedText.bind(t),close:(n=t.close)==null?void 0:n.bind(t)}},dn=()=>{let t=null,n=0;return{getExtractedText:()=>t,processChunk:r=>{let e=r.trim();if(!e.startsWith("{")&&!e.startsWith("["))return null;if(r.length<=n)return t!==null?{text:t,raw:r}:null;try{let o=Eo(r,Lo|ko);o&&typeof o=="object"&&typeof o.text=="string"&&(t=o.text)}catch{}return n=r.length,t!==null?{text:t,raw:r}:null},close:()=>{}}},Jo=t=>{let n=null,r=0,o=t||(s=>{if(!s||typeof s!="object")return null;if(s.action)switch(s.action){case"nav_then_click":return s.on_load_text||s.text||null;case"message":case"message_and_click":case"checkout":return s.text||null;default:return s.text||s.display_text||s.message||null}return s.text||s.display_text||s.message||s.content||null});return{getExtractedText:()=>n,processChunk:s=>{let a=s.trim();if(!a.startsWith("{")&&!a.startsWith("["))return null;if(s.length<=r)return n!==null?{text:n,raw:s}:null;try{let c=Eo(s,Lo|ko),b=o(c);b!==null&&(n=b)}catch{}return r=s.length,{text:n||"",raw:s}},close:()=>{}}},cn=()=>{let t=null;return{processChunk:n=>{if(!n.trim().startsWith("<"))return null;let e=n.match(/<text[^>]*>([\s\S]*?)<\/text>/);return e&&e[1]?(t=e[1],{text:t,raw:n}):null},getExtractedText:()=>t}};var Go="https://api.travrse.ai/v1/dispatch";function Zo(t){switch(t){case"json":return dn;case"regex-json":return ln;case"xml":return cn;case"plain":default:return an}}var Ut=class{constructor(n={}){this.config=n;var r,e,o;this.apiUrl=(r=n.apiUrl)!=null?r:Go,this.headers={"Content-Type":"application/json",...n.headers},this.debug=!!n.debug,this.createStreamParser=(e=n.streamParser)!=null?e:Zo(n.parserType),this.contextProviders=(o=n.contextProviders)!=null?o:[],this.requestMiddleware=n.requestMiddleware}async dispatch(n,r){let e=new AbortController;n.signal&&n.signal.addEventListener("abort",()=>e.abort()),r({type:"status",status:"connecting"});let o=await this.buildPayload(n.messages);this.debug&&console.debug("[AgentWidgetClient] dispatch body",o);let s=await fetch(this.apiUrl,{method:"POST",headers:this.headers,body:JSON.stringify(o),signal:e.signal});if(!s.ok||!s.body){let a=new Error(`Chat backend request failed: ${s.status} ${s.statusText}`);throw r({type:"error",error:a}),a}r({type:"status",status:"connected"});try{await this.streamResponse(s.body,r)}finally{r({type:"status",status:"idle"})}}async buildPayload(n){let e={messages:n.slice().sort((o,s)=>{let a=new Date(o.createdAt).getTime(),c=new Date(s.createdAt).getTime();return a-c}).map(o=>({role:o.role,content:o.content,createdAt:o.createdAt})),...this.config.flowId&&{flowId:this.config.flowId}};if(this.contextProviders.length){let o={};await Promise.all(this.contextProviders.map(async s=>{try{let a=await s({messages:n,config:this.config});a&&typeof a=="object"&&Object.assign(o,a)}catch(a){typeof console!="undefined"&&console.warn("[AgentWidget] Context provider failed:",a)}})),Object.keys(o).length&&(e.context=o)}if(this.requestMiddleware)try{let o=await this.requestMiddleware({payload:{...e},config:this.config});if(o&&typeof o=="object")return o}catch(o){typeof console!="undefined"&&console.error("[AgentWidget] Request middleware error:",o)}return e}async streamResponse(n,r){var Ht,J,E,ot,yt,It,rt,oe,L,we,Pt,he,S,Ne,_e,dt,st,R,ct,Te,Ze,O,ie,ut,U,Ke,Vt,bt,Ft,Nt,xt,re,Tt,At,it,Dt,qt,Mt,ft,at,zt,_t,Ot,wt,ht,Oe,Ct,Wt,Et,Lt,De,$e,lt,Qe,kt;let e=n.getReader(),o=new TextDecoder,s="",a=Date.now(),c=0,b=()=>a+c++,z=f=>{let _=f.reasoning?{...f.reasoning,chunks:[...f.reasoning.chunks]}:void 0,X=f.toolCall?{...f.toolCall,chunks:f.toolCall.chunks?[...f.toolCall.chunks]:void 0}:void 0,ce=f.tools?f.tools.map(Ae=>({...Ae,chunks:Ae.chunks?[...Ae.chunks]:void 0})):void 0;return{...f,reasoning:_,toolCall:X,tools:ce}},g=f=>{r({type:"message",message:z(f)})},F=null,H=new Map,B=new Map,y={lastId:null,byStep:new Map},G={lastId:null,byCall:new Map},I=f=>{if(f==null)return null;try{return String(f)}catch{return null}},x=f=>{var _,X,ce,Ae,Le;return I((Le=(Ae=(ce=(X=(_=f.stepId)!=null?_:f.step_id)!=null?X:f.step)!=null?ce:f.parentId)!=null?Ae:f.flowStepId)!=null?Le:f.flow_step_id)},M=f=>{var _,X,ce,Ae,Le,D,v;return I((v=(D=(Le=(Ae=(ce=(X=(_=f.callId)!=null?_:f.call_id)!=null?X:f.requestId)!=null?ce:f.request_id)!=null?Ae:f.toolCallId)!=null?Le:f.tool_call_id)!=null?D:f.stepId)!=null?v:f.step_id)},m=()=>F||(F={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"assistant",sequence:b()},g(F),F),ke=(f,_)=>{y.lastId=_,f&&y.byStep.set(f,_)},ne=(f,_)=>{var Le;let X=(Le=f.reasoningId)!=null?Le:f.id,ce=x(f);if(X){let D=String(X);return ke(ce,D),D}if(ce){let D=y.byStep.get(ce);if(D)return y.lastId=D,D}if(y.lastId&&!_)return y.lastId;if(!_)return null;let Ae=`reason-${b()}`;return ke(ce,Ae),Ae},Fe=f=>{let _=H.get(f);if(_)return _;let X={id:`reason-${f}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"reasoning",sequence:b(),reasoning:{id:f,status:"streaming",chunks:[]}};return H.set(f,X),g(X),X},Be=(f,_)=>{G.lastId=_,f&&G.byCall.set(f,_)},me=(f,_)=>{var Le;let X=(Le=f.toolId)!=null?Le:f.id,ce=M(f);if(X){let D=String(X);return Be(ce,D),D}if(ce){let D=G.byCall.get(ce);if(D)return G.lastId=D,D}if(G.lastId&&!_)return G.lastId;if(!_)return null;let Ae=`tool-${b()}`;return Be(ce,Ae),Ae},Z=f=>{let _=B.get(f);if(_)return _;let X={id:`tool-${f}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"tool",sequence:b(),toolCall:{id:f,status:"pending"}};return B.set(f,X),g(X),X},Se=f=>{if(typeof f=="number"&&Number.isFinite(f))return f;if(typeof f=="string"){let _=Number(f);if(!Number.isNaN(_)&&Number.isFinite(_))return _;let X=Date.parse(f);if(!Number.isNaN(X))return X}return Date.now()},fe=f=>{if(typeof f=="string")return f;if(f==null)return"";try{return JSON.stringify(f)}catch{return String(f)}},K=new Map,Q=new Map;for(;;){let{done:f,value:_}=await e.read();if(f)break;s+=o.decode(_,{stream:!0});let X=s.split(`
|
|
4
4
|
|
|
5
|
-
`);s=(
|
|
6
|
-
`),be="message",ce="";for(let N of O)N.startsWith("event:")?be=N.replace("event:","").trim():N.startsWith("data:")&&(ce+=N.replace("data:","").trim());if(!ce)continue;let h;try{h=JSON.parse(ce)}catch(N){r({type:"error",error:N instanceof Error?N:new Error("Failed to parse chat stream payload")});continue}let Ye=be!=="message"?be:(Z=h.type)!=null?Z:"message";if(Ye==="reason_start"){let N=(M=re(h,!0))!=null?M:`reason-${v()}`,f=Ne(N);f.reasoning=(ot=f.reasoning)!=null?ot:{id:N,status:"streaming",chunks:[]},f.reasoning.startedAt=(qt=f.reasoning.startedAt)!=null?qt:Ae((bt=h.startedAt)!=null?bt:h.timestamp),f.reasoning.completedAt=void 0,f.reasoning.durationMs=void 0,f.streaming=!0,f.reasoning.status="streaming",u(f)}else if(Ye==="reason_chunk"){let N=(se=(rt=re(h,!1))!=null?rt:re(h,!0))!=null?se:`reason-${v()}`,f=Ne(N);f.reasoning=(E=f.reasoning)!=null?E:{id:N,status:"streaming",chunks:[]},f.reasoning.startedAt=(x=f.reasoning.startedAt)!=null?x:Ae((ve=h.startedAt)!=null?ve:h.timestamp);let d=(ut=(ze=(X=h.reasoningText)!=null?X:h.text)!=null?ze:h.delta)!=null?ut:"";if(d&&h.hidden!==!0&&f.reasoning.chunks.push(String(d)),f.reasoning.status=h.done?"complete":"streaming",h.done){f.reasoning.completedAt=Ae((Qe=h.completedAt)!=null?Qe:h.timestamp);let H=(F=f.reasoning.startedAt)!=null?F:Date.now();f.reasoning.durationMs=Math.max(0,((Ct=f.reasoning.completedAt)!=null?Ct:Date.now())-H)}f.streaming=f.reasoning.status!=="complete",u(f)}else if(Ye==="reason_complete"){let N=(gt=(Oe=re(h,!1))!=null?Oe:re(h,!0))!=null?gt:`reason-${v()}`,f=k.get(N);if(f!=null&&f.reasoning){f.reasoning.status="complete",f.reasoning.completedAt=Ae((Fe=h.completedAt)!=null?Fe:h.timestamp);let H=(Ve=f.reasoning.startedAt)!=null?Ve:Date.now();f.reasoning.durationMs=Math.max(0,((D=f.reasoning.completedAt)!=null?D:Date.now())-H),f.streaming=!1,u(f)}let d=y(h);d&&L.byStep.delete(d)}else if(Ye==="tool_start"){let N=(ye=we(h,!0))!=null?ye:`tool-${v()}`,f=ee(N),d=(Et=f.toolCall)!=null?Et:{id:N,status:"pending"};d.name=(J=h.toolName)!=null?J:d.name,d.status="running",h.args!==void 0&&(d.args=h.args),d.startedAt=(Vt=d.startedAt)!=null?Vt:Ae((st=h.startedAt)!=null?st:h.timestamp),d.completedAt=void 0,d.durationMs=void 0,f.toolCall=d,f.streaming=!0,u(f)}else if(Ye==="tool_chunk"){let N=(St=(mt=we(h,!1))!=null?mt:we(h,!0))!=null?St:`tool-${v()}`,f=ee(N),d=(xe=f.toolCall)!=null?xe:{id:N,status:"running"};d.startedAt=(Lt=d.startedAt)!=null?Lt:Ae((Wt=h.startedAt)!=null?Wt:h.timestamp);let H=(Ot=(zt=(it=h.text)!=null?it:h.delta)!=null?zt:h.message)!=null?Ot:"";H&&(d.chunks=(kt=d.chunks)!=null?kt:[],d.chunks.push(String(H))),d.status="running",f.toolCall=d,f.streaming=!0,u(f)}else if(Ye==="tool_complete"){let N=(at=(ft=we(h,!1))!=null?ft:we(h,!0))!=null?at:`tool-${v()}`,f=ee(N),d=(_t=f.toolCall)!=null?_t:{id:N,status:"running"};if(d.status="complete",h.result!==void 0&&(d.result=h.result),typeof h.duration=="number"&&(d.duration=h.duration),d.completedAt=Ae(($t=h.completedAt)!=null?$t:h.timestamp),typeof h.duration=="number")d.durationMs=h.duration;else{let ae=(jt=d.startedAt)!=null?jt:Date.now();d.durationMs=Math.max(0,((wt=d.completedAt)!=null?wt:Date.now())-ae)}f.toolCall=d,f.streaming=!1,u(f);let H=B(h);H&&Q.byCall.delete(H)}else if(Ye==="step_chunk"){let N=h.stepType,f=h.executionType;if(N==="tool"||f==="context")continue;let d=g(),H=(Tt=(_e=(ht=h.text)!=null?ht:h.delta)!=null?_e:h.content)!=null?Tt:"";if(H){let le=((Bt=ne.get(d.id))!=null?Bt:"")+H;d.rawContent=le,Y.has(d.id)||Y.set(d.id,this.createStreamParser());let ue=Y.get(d.id),Re=le.trim().startsWith("{")||le.trim().startsWith("[");if(Re&&ne.set(d.id,le),ue.__isPlainTextParser===!0){d.content+=H,ne.delete(d.id),Y.delete(d.id),d.rawContent=void 0,u(d);continue}let de=ue.processChunk(le);if(de instanceof Promise)de.then(j=>{var me;let ie=typeof j=="string"?j:(me=j==null?void 0:j.text)!=null?me:null;if(ie!==null&&ie.trim()!==""){let Ce=I;Ce&&Ce.id===d.id&&(Ce.content=ie,u(Ce))}else if(!Re&&!le.trim().startsWith("<")){let Ce=I;Ce&&Ce.id===d.id&&(Ce.content+=H,ne.delete(Ce.id),Y.delete(Ce.id),Ce.rawContent=void 0,u(Ce))}}).catch(()=>{d.content+=H,ne.delete(d.id),Y.delete(d.id),d.rawContent=void 0,u(d)});else{let j=typeof de=="string"?de:(Rt=de==null?void 0:de.text)!=null?Rt:null;j!==null&&j.trim()!==""?(d.content=j,u(d)):!Re&&!le.trim().startsWith("<")&&(d.content+=H,ne.delete(d.id),Y.delete(d.id),d.rawContent=void 0,u(d))}}if(h.isComplete){let ae=(De=(Ht=h.result)==null?void 0:Ht.response)!=null?De:d.content;if(ae){let le=ne.get(d.id),ue=le!=null?le:he(ae);d.rawContent=ue;let Re=Y.get(d.id),Me=null;if(Re&&(Me=Re.getExtractedText(),Me===null&&(Me=Gt(ue)),Me===null)){let j=Re.processChunk(ue);j instanceof Promise?j.then(ie=>{var Ce;let me=typeof ie=="string"?ie:(Ce=ie==null?void 0:ie.text)!=null?Ce:null;if(me!==null){let He=I;He&&He.id===d.id&&(He.content=me,He.streaming=!1,u(He))}}):Me=typeof j=="string"?j:($e=j==null?void 0:j.text)!=null?$e:null}Me!==null&&Me.trim()!==""?d.content=Me:ne.has(d.id)||(d.content=he(ae));let de=Y.get(d.id);if(de){let j=(lt=de.close)==null?void 0:lt.call(de);j instanceof Promise&&j.catch(()=>{}),Y.delete(d.id)}ne.delete(d.id),d.streaming=!1,u(d)}}}else if(Ye==="step_complete"){let N=h.stepType,f=h.executionType;if(N==="tool"||f==="context")continue;let d=(et=h.result)==null?void 0:et.response,H=g();if(d!=null){let ae=Y.get(H.id),le=!1;if(ae){let ue=ae.getExtractedText(),Re=ne.get(H.id),Me=Re!=null?Re:he(d);if(H.rawContent=Me,ue!==null&&ue.trim()!=="")H.content=ue,le=!0;else{let de=Gt(Me);if(de!==null)H.content=de,le=!0;else{let j=ae.processChunk(Me);if(j instanceof Promise)j.then(ie=>{var Ce;let me=typeof ie=="string"?ie:(Ce=ie==null?void 0:ie.text)!=null?Ce:null;if(me!==null&&me.trim()!==""){let He=I;He&&He.id===H.id&&(He.content=me,He.streaming=!1,u(He))}else{let He=ae.getExtractedText();if(He===null||He.trim()===""){let i=I;i&&i.id===H.id&&(ne.has(H.id)||(i.content=he(d)),i.streaming=!1,u(i))}}});else{let ie=typeof j=="string"?j:(It=j==null?void 0:j.text)!=null?It:null;if(ie!==null&&ie.trim()!=="")H.content=ie,le=!0;else{let me=ae.getExtractedText();me!==null&&me.trim()!==""&&(H.content=me,le=!0)}}}}}if(!H.rawContent){let ue=ne.get(H.id);H.rawContent=ue!=null?ue:he(d)}if(!le&&!ne.has(H.id)&&(H.content=he(d)),ae){let ue=(vt=ae.close)==null?void 0:vt.call(ae);ue instanceof Promise&&ue.catch(()=>{})}Y.delete(H.id),ne.delete(H.id),H.streaming=!1,u(H)}else Y.delete(H.id),ne.delete(H.id),H.streaming=!1,u(H)}else if(Ye==="flow_complete"){let N=(Xe=h.result)==null?void 0:Xe.response;if(N!=null){let f=g(),d=ne.get(f.id),H=d!=null?d:he(N);f.rawContent=H;let ae=he(N),le=Y.get(f.id);if(le){let ue=Gt(H);if(ue!==null)ae=ue;else{let Re=le.processChunk(H);Re instanceof Promise&&Re.then(de=>{var ie;let j=typeof de=="string"?de:(ie=de==null?void 0:de.text)!=null?ie:null;if(j!==null){let me=I;me&&me.id===f.id&&(me.content=j,me.streaming=!1,u(me))}});let Me=le.getExtractedText();Me!==null&&(ae=Me)}}Y.delete(f.id),ne.delete(f.id),ae!==f.content&&(f.content=ae,u(f)),f.streaming=!1,u(f)}else if(I!==null){let f=I;Y.delete(f.id),ne.delete(f.id),f.streaming=!1,u(f)}r({type:"status",status:"idle"})}else Ye==="error"&&h.error&&r({type:"error",error:h.error instanceof Error?h.error:new Error(String(h.error))})}}}};var Jt=class{constructor(n={},r){this.config=n;this.callbacks=r;this.status="idle";this.streaming=!1;this.abortController=null;this.sequenceCounter=Date.now();this.handleEvent=n=>{var r,e;n.type==="message"?this.upsertMessage(n.message):n.type==="status"?(this.setStatus(n.status),n.status==="connecting"?this.setStreaming(!0):(n.status==="idle"||n.status==="error")&&(this.setStreaming(!1),this.abortController=null)):n.type==="error"&&(this.setStatus("error"),this.setStreaming(!1),this.abortController=null,(e=(r=this.callbacks).onError)==null||e.call(r,n.error))};var e;this.messages=[...(e=n.initialMessages)!=null?e:[]].map(o=>{var s;return{...o,sequence:(s=o.sequence)!=null?s:this.nextSequence()}}),this.messages=this.sortMessages(this.messages),this.client=new Kt(n),this.messages.length&&this.callbacks.onMessagesChanged([...this.messages]),this.callbacks.onStatusChanged(this.status)}updateConfig(n){this.config={...this.config,...n},this.client=new Kt(this.config)}getMessages(){return[...this.messages]}getStatus(){return this.status}isStreaming(){return this.streaming}injectTestEvent(n){this.handleEvent(n)}async sendMessage(n,r){var m,v,P,u,I;let e=n.trim();if(!e)return;(m=this.abortController)==null||m.abort();let o={id:`user-${Date.now()}`,role:"user",content:e,createdAt:new Date().toISOString(),sequence:this.nextSequence(),viaVoice:(r==null?void 0:r.viaVoice)||!1};this.appendMessage(o),this.setStreaming(!0);let s=new AbortController;this.abortController=s;let a=[...this.messages];try{await this.client.dispatch({messages:a,signal:s.signal},this.handleEvent)}catch(k){let q={id:`assistant-${Date.now()}`,role:"assistant",createdAt:new Date().toISOString(),content:"It looks like the proxy isn't returning a real response yet. Here's a sample message so you can continue testing locally.",sequence:this.nextSequence()};this.appendMessage(q),this.setStatus("idle"),this.setStreaming(!1),this.abortController=null,k instanceof Error?(P=(v=this.callbacks).onError)==null||P.call(v,k):(I=(u=this.callbacks).onError)==null||I.call(u,new Error(String(k)))}}cancel(){var n;(n=this.abortController)==null||n.abort(),this.abortController=null,this.setStreaming(!1),this.setStatus("idle")}clearMessages(){var n;(n=this.abortController)==null||n.abort(),this.abortController=null,this.messages=[],this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}hydrateMessages(n){var r;(r=this.abortController)==null||r.abort(),this.abortController=null,this.messages=this.sortMessages(n.map(e=>{var o;return{...e,streaming:!1,sequence:(o=e.sequence)!=null?o:this.nextSequence()}})),this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}setStatus(n){this.status!==n&&(this.status=n,this.callbacks.onStatusChanged(n))}setStreaming(n){this.streaming!==n&&(this.streaming=n,this.callbacks.onStreamingChanged(n))}appendMessage(n){let r=this.ensureSequence(n);this.messages=this.sortMessages([...this.messages,r]),this.callbacks.onMessagesChanged([...this.messages])}upsertMessage(n){let r=this.ensureSequence(n),e=this.messages.findIndex(o=>o.id===r.id);if(e===-1){this.appendMessage(r);return}this.messages=this.messages.map((o,s)=>s===e?{...o,...r}:o),this.messages=this.sortMessages(this.messages),this.callbacks.onMessagesChanged([...this.messages])}ensureSequence(n){return n.sequence!==void 0?{...n}:{...n,sequence:this.nextSequence()}}nextSequence(){return this.sequenceCounter++}sortMessages(n){return[...n].sort((r,e)=>{var v,P;let o=new Date(r.createdAt).getTime(),s=new Date(e.createdAt).getTime();if(!Number.isNaN(o)&&!Number.isNaN(s)&&o!==s)return o-s;let a=(v=r.sequence)!=null?v:0,m=(P=e.sequence)!=null?P:0;return a!==m?a-m:r.id.localeCompare(e.id)})}};var dn=(t,n)=>{var e;let r=(e=n==null?void 0:n.theme)!=null?e:{};Object.entries(r).forEach(([o,s])=>{if(s==null||s==="")return;let a=o.replace(/[A-Z]/g,m=>`-${m.toLowerCase()}`);t.style.setProperty(`--cw-${a}`,String(s))})};import*as Yo from"lucide";var Le=(t,n=24,r="currentColor",e=2)=>{try{let o=t.split("-").map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(""),s=Yo[o];return s?Jo(s,n,r,e):(console.warn(`Lucide icon "${t}" not found (tried "${o}"). Available icons: https://lucide.dev/icons`),null)}catch(o){return console.warn(`Failed to render Lucide icon "${t}":`,o),null}};function Jo(t,n,r,e){if(!t||!Array.isArray(t))return null;let o=document.createElementNS("http://www.w3.org/2000/svg","svg");return o.setAttribute("width",String(n)),o.setAttribute("height",String(n)),o.setAttribute("viewBox","0 0 24 24"),o.setAttribute("fill","none"),o.setAttribute("stroke",r),o.setAttribute("stroke-width",String(e)),o.setAttribute("stroke-linecap","round"),o.setAttribute("stroke-linejoin","round"),o.setAttribute("aria-hidden","true"),t.forEach(s=>{if(Array.isArray(s)&&s.length>=2){let a=s[0],m=s[1];if(m){let v=document.createElementNS("http://www.w3.org/2000/svg",a);Object.entries(m).forEach(([P,u])=>{P!=="stroke"&&v.setAttribute(P,String(u))}),o.appendChild(v)}}}),o}var c=(t,n)=>{let r=document.createElement(t);return n&&(r.className=n),r};var Ue={idle:"Online",connecting:"Connecting\u2026",connected:"Streaming\u2026",error:"Offline"};var Ft={"bottom-right":"tvw-bottom-6 tvw-right-6","bottom-left":"tvw-bottom-6 tvw-left-6","top-right":"tvw-top-6 tvw-right-6","top-left":"tvw-top-6 tvw-left-6"};var cn=(t,n)=>{let r=c("button");r.type="button",r.innerHTML=`
|
|
5
|
+
`);s=(Ht=X.pop())!=null?Ht:"";for(let ce of X){let Ae=ce.split(`
|
|
6
|
+
`),Le="message",D="";for(let $ of Ae)$.startsWith("event:")?Le=$.replace("event:","").trim():$.startsWith("data:")&&(D+=$.replace("data:","").trim());if(!D)continue;let v;try{v=JSON.parse(D)}catch($){r({type:"error",error:$ instanceof Error?$:new Error("Failed to parse chat stream payload")});continue}let je=Le!=="message"?Le:(J=v.type)!=null?J:"message";if(je==="reason_start"){let $=(E=ne(v,!0))!=null?E:`reason-${b()}`,h=Fe($);h.reasoning=(ot=h.reasoning)!=null?ot:{id:$,status:"streaming",chunks:[]},h.reasoning.startedAt=(It=h.reasoning.startedAt)!=null?It:Se((yt=v.startedAt)!=null?yt:v.timestamp),h.reasoning.completedAt=void 0,h.reasoning.durationMs=void 0,h.streaming=!0,h.reasoning.status="streaming",g(h)}else if(je==="reason_chunk"){let $=(oe=(rt=ne(v,!1))!=null?rt:ne(v,!0))!=null?oe:`reason-${b()}`,h=Fe($);h.reasoning=(L=h.reasoning)!=null?L:{id:$,status:"streaming",chunks:[]},h.reasoning.startedAt=(Pt=h.reasoning.startedAt)!=null?Pt:Se((we=v.startedAt)!=null?we:v.timestamp);let d=(Ne=(S=(he=v.reasoningText)!=null?he:v.text)!=null?S:v.delta)!=null?Ne:"";if(d&&v.hidden!==!0&&h.reasoning.chunks.push(String(d)),h.reasoning.status=v.done?"complete":"streaming",v.done){h.reasoning.completedAt=Se((_e=v.completedAt)!=null?_e:v.timestamp);let P=(dt=h.reasoning.startedAt)!=null?dt:Date.now();h.reasoning.durationMs=Math.max(0,((st=h.reasoning.completedAt)!=null?st:Date.now())-P)}h.streaming=h.reasoning.status!=="complete",g(h)}else if(je==="reason_complete"){let $=(ct=(R=ne(v,!1))!=null?R:ne(v,!0))!=null?ct:`reason-${b()}`,h=H.get($);if(h!=null&&h.reasoning){h.reasoning.status="complete",h.reasoning.completedAt=Se((Te=v.completedAt)!=null?Te:v.timestamp);let P=(Ze=h.reasoning.startedAt)!=null?Ze:Date.now();h.reasoning.durationMs=Math.max(0,((O=h.reasoning.completedAt)!=null?O:Date.now())-P),h.streaming=!1,g(h)}let d=x(v);d&&y.byStep.delete(d)}else if(je==="tool_start"){let $=(ie=me(v,!0))!=null?ie:`tool-${b()}`,h=Z($),d=(ut=h.toolCall)!=null?ut:{id:$,status:"pending"};d.name=(U=v.toolName)!=null?U:d.name,d.status="running",v.args!==void 0&&(d.args=v.args),d.startedAt=(Vt=d.startedAt)!=null?Vt:Se((Ke=v.startedAt)!=null?Ke:v.timestamp),d.completedAt=void 0,d.durationMs=void 0,h.toolCall=d,h.streaming=!0,g(h)}else if(je==="tool_chunk"){let $=(Ft=(bt=me(v,!1))!=null?bt:me(v,!0))!=null?Ft:`tool-${b()}`,h=Z($),d=(Nt=h.toolCall)!=null?Nt:{id:$,status:"running"};d.startedAt=(re=d.startedAt)!=null?re:Se((xt=v.startedAt)!=null?xt:v.timestamp);let P=(it=(At=(Tt=v.text)!=null?Tt:v.delta)!=null?At:v.message)!=null?it:"";P&&(d.chunks=(Dt=d.chunks)!=null?Dt:[],d.chunks.push(String(P))),d.status="running",h.toolCall=d,h.streaming=!0,g(h)}else if(je==="tool_complete"){let $=(Mt=(qt=me(v,!1))!=null?qt:me(v,!0))!=null?Mt:`tool-${b()}`,h=Z($),d=(ft=h.toolCall)!=null?ft:{id:$,status:"running"};if(d.status="complete",v.result!==void 0&&(d.result=v.result),typeof v.duration=="number"&&(d.duration=v.duration),d.completedAt=Se((at=v.completedAt)!=null?at:v.timestamp),typeof v.duration=="number")d.durationMs=v.duration;else{let ae=(zt=d.startedAt)!=null?zt:Date.now();d.durationMs=Math.max(0,((_t=d.completedAt)!=null?_t:Date.now())-ae)}h.toolCall=d,h.streaming=!1,g(h);let P=M(v);P&&G.byCall.delete(P)}else if(je==="step_chunk"){let $=v.stepType,h=v.executionType;if($==="tool"||h==="context")continue;let d=m(),P=(ht=(wt=(Ot=v.text)!=null?Ot:v.delta)!=null?wt:v.content)!=null?ht:"";if(P){let le=((Oe=Q.get(d.id))!=null?Oe:"")+P;d.rawContent=le,K.has(d.id)||K.set(d.id,this.createStreamParser());let ue=K.get(d.id),Re=le.trim().startsWith("{")||le.trim().startsWith("[");if(Re&&Q.set(d.id,le),ue.__isPlainTextParser===!0){d.content+=P,Q.delete(d.id),K.delete(d.id),d.rawContent=void 0,g(d);continue}let de=ue.processChunk(le);if(de instanceof Promise)de.then(j=>{var pe;let se=typeof j=="string"?j:(pe=j==null?void 0:j.text)!=null?pe:null;if(se!==null&&se.trim()!==""){let ve=F;ve&&ve.id===d.id&&(ve.content=se,g(ve))}else if(!Re&&!le.trim().startsWith("<")){let ve=F;ve&&ve.id===d.id&&(ve.content+=P,Q.delete(ve.id),K.delete(ve.id),ve.rawContent=void 0,g(ve))}}).catch(()=>{d.content+=P,Q.delete(d.id),K.delete(d.id),d.rawContent=void 0,g(d)});else{let j=typeof de=="string"?de:(Ct=de==null?void 0:de.text)!=null?Ct:null;j!==null&&j.trim()!==""?(d.content=j,g(d)):!Re&&!le.trim().startsWith("<")&&(d.content+=P,Q.delete(d.id),K.delete(d.id),d.rawContent=void 0,g(d))}}if(v.isComplete){let ae=(Et=(Wt=v.result)==null?void 0:Wt.response)!=null?Et:d.content;if(ae){let le=Q.get(d.id),ue=le!=null?le:fe(ae);d.rawContent=ue;let Re=K.get(d.id),Me=null;if(Re&&(Me=Re.getExtractedText(),Me===null&&(Me=Qt(ue)),Me===null)){let j=Re.processChunk(ue);j instanceof Promise?j.then(se=>{var ve;let pe=typeof se=="string"?se:(ve=se==null?void 0:se.text)!=null?ve:null;if(pe!==null){let He=F;He&&He.id===d.id&&(He.content=pe,He.streaming=!1,g(He))}}):Me=typeof j=="string"?j:(Lt=j==null?void 0:j.text)!=null?Lt:null}Me!==null&&Me.trim()!==""?d.content=Me:Q.has(d.id)||(d.content=fe(ae));let de=K.get(d.id);if(de){let j=(De=de.close)==null?void 0:De.call(de);j instanceof Promise&&j.catch(()=>{}),K.delete(d.id)}Q.delete(d.id),d.streaming=!1,g(d)}}}else if(je==="step_complete"){let $=v.stepType,h=v.executionType;if($==="tool"||h==="context")continue;let d=($e=v.result)==null?void 0:$e.response,P=m();if(d!=null){let ae=K.get(P.id),le=!1;if(ae){let ue=ae.getExtractedText(),Re=Q.get(P.id),Me=Re!=null?Re:fe(d);if(P.rawContent=Me,ue!==null&&ue.trim()!=="")P.content=ue,le=!0;else{let de=Qt(Me);if(de!==null)P.content=de,le=!0;else{let j=ae.processChunk(Me);if(j instanceof Promise)j.then(se=>{var ve;let pe=typeof se=="string"?se:(ve=se==null?void 0:se.text)!=null?ve:null;if(pe!==null&&pe.trim()!==""){let He=F;He&&He.id===P.id&&(He.content=pe,He.streaming=!1,g(He))}else{let He=ae.getExtractedText();if(He===null||He.trim()===""){let gt=F;gt&>.id===P.id&&(Q.has(P.id)||(gt.content=fe(d)),gt.streaming=!1,g(gt))}}});else{let se=typeof j=="string"?j:(lt=j==null?void 0:j.text)!=null?lt:null;if(se!==null&&se.trim()!=="")P.content=se,le=!0;else{let pe=ae.getExtractedText();pe!==null&&pe.trim()!==""&&(P.content=pe,le=!0)}}}}}if(!P.rawContent){let ue=Q.get(P.id);P.rawContent=ue!=null?ue:fe(d)}if(!le&&!Q.has(P.id)&&(P.content=fe(d)),ae){let ue=(Qe=ae.close)==null?void 0:Qe.call(ae);ue instanceof Promise&&ue.catch(()=>{})}K.delete(P.id),Q.delete(P.id),P.streaming=!1,g(P)}else K.delete(P.id),Q.delete(P.id),P.streaming=!1,g(P)}else if(je==="flow_complete"){let $=(kt=v.result)==null?void 0:kt.response;if($!=null){let h=m(),d=Q.get(h.id),P=d!=null?d:fe($);h.rawContent=P;let ae=fe($),le=K.get(h.id);if(le){let ue=Qt(P);if(ue!==null)ae=ue;else{let Re=le.processChunk(P);Re instanceof Promise&&Re.then(de=>{var se;let j=typeof de=="string"?de:(se=de==null?void 0:de.text)!=null?se:null;if(j!==null){let pe=F;pe&&pe.id===h.id&&(pe.content=j,pe.streaming=!1,g(pe))}});let Me=le.getExtractedText();Me!==null&&(ae=Me)}}K.delete(h.id),Q.delete(h.id),ae!==h.content&&(h.content=ae,g(h)),h.streaming=!1,g(h)}else if(F!==null){let h=F;K.delete(h.id),Q.delete(h.id),h.streaming=!1,g(h)}r({type:"status",status:"idle"})}else je==="error"&&v.error&&r({type:"error",error:v.error instanceof Error?v.error:new Error(String(v.error))})}}}};var Zt=class{constructor(n={},r){this.config=n;this.callbacks=r;this.status="idle";this.streaming=!1;this.abortController=null;this.sequenceCounter=Date.now();this.handleEvent=n=>{var r,e;n.type==="message"?this.upsertMessage(n.message):n.type==="status"?(this.setStatus(n.status),n.status==="connecting"?this.setStreaming(!0):(n.status==="idle"||n.status==="error")&&(this.setStreaming(!1),this.abortController=null)):n.type==="error"&&(this.setStatus("error"),this.setStreaming(!1),this.abortController=null,(e=(r=this.callbacks).onError)==null||e.call(r,n.error))};var e;this.messages=[...(e=n.initialMessages)!=null?e:[]].map(o=>{var s;return{...o,sequence:(s=o.sequence)!=null?s:this.nextSequence()}}),this.messages=this.sortMessages(this.messages),this.client=new Ut(n),this.messages.length&&this.callbacks.onMessagesChanged([...this.messages]),this.callbacks.onStatusChanged(this.status)}updateConfig(n){this.config={...this.config,...n},this.client=new Ut(this.config)}getMessages(){return[...this.messages]}getStatus(){return this.status}isStreaming(){return this.streaming}injectTestEvent(n){this.handleEvent(n)}async sendMessage(n,r){var c,b,z,g,F;let e=n.trim();if(!e)return;(c=this.abortController)==null||c.abort();let o={id:`user-${Date.now()}`,role:"user",content:e,createdAt:new Date().toISOString(),sequence:this.nextSequence(),viaVoice:(r==null?void 0:r.viaVoice)||!1};this.appendMessage(o),this.setStreaming(!0);let s=new AbortController;this.abortController=s;let a=[...this.messages];try{await this.client.dispatch({messages:a,signal:s.signal},this.handleEvent)}catch(H){let B={id:`assistant-${Date.now()}`,role:"assistant",createdAt:new Date().toISOString(),content:"It looks like the proxy isn't returning a real response yet. Here's a sample message so you can continue testing locally.",sequence:this.nextSequence()};this.appendMessage(B),this.setStatus("idle"),this.setStreaming(!1),this.abortController=null,H instanceof Error?(z=(b=this.callbacks).onError)==null||z.call(b,H):(F=(g=this.callbacks).onError)==null||F.call(g,new Error(String(H)))}}cancel(){var n;(n=this.abortController)==null||n.abort(),this.abortController=null,this.setStreaming(!1),this.setStatus("idle")}clearMessages(){var n;(n=this.abortController)==null||n.abort(),this.abortController=null,this.messages=[],this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}hydrateMessages(n){var r;(r=this.abortController)==null||r.abort(),this.abortController=null,this.messages=this.sortMessages(n.map(e=>{var o;return{...e,streaming:!1,sequence:(o=e.sequence)!=null?o:this.nextSequence()}})),this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}setStatus(n){this.status!==n&&(this.status=n,this.callbacks.onStatusChanged(n))}setStreaming(n){this.streaming!==n&&(this.streaming=n,this.callbacks.onStreamingChanged(n))}appendMessage(n){let r=this.ensureSequence(n);this.messages=this.sortMessages([...this.messages,r]),this.callbacks.onMessagesChanged([...this.messages])}upsertMessage(n){let r=this.ensureSequence(n),e=this.messages.findIndex(o=>o.id===r.id);if(e===-1){this.appendMessage(r);return}this.messages=this.messages.map((o,s)=>s===e?{...o,...r}:o),this.messages=this.sortMessages(this.messages),this.callbacks.onMessagesChanged([...this.messages])}ensureSequence(n){return n.sequence!==void 0?{...n}:{...n,sequence:this.nextSequence()}}nextSequence(){return this.sequenceCounter++}sortMessages(n){return[...n].sort((r,e)=>{var b,z;let o=new Date(r.createdAt).getTime(),s=new Date(e.createdAt).getTime();if(!Number.isNaN(o)&&!Number.isNaN(s)&&o!==s)return o-s;let a=(b=r.sequence)!=null?b:0,c=(z=e.sequence)!=null?z:0;return a!==c?a-c:r.id.localeCompare(e.id)})}};var un=(t,n)=>{var e;let r=(e=n==null?void 0:n.theme)!=null?e:{};Object.entries(r).forEach(([o,s])=>{if(s==null||s==="")return;let a=o.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`);t.style.setProperty(`--cw-${a}`,String(s))})};import*as Qo from"lucide";var Ee=(t,n=24,r="currentColor",e=2)=>{try{let o=t.split("-").map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(""),s=Qo[o];return s?er(s,n,r,e):(console.warn(`Lucide icon "${t}" not found (tried "${o}"). Available icons: https://lucide.dev/icons`),null)}catch(o){return console.warn(`Failed to render Lucide icon "${t}":`,o),null}};function er(t,n,r,e){if(!t||!Array.isArray(t))return null;let o=document.createElementNS("http://www.w3.org/2000/svg","svg");return o.setAttribute("width",String(n)),o.setAttribute("height",String(n)),o.setAttribute("viewBox","0 0 24 24"),o.setAttribute("fill","none"),o.setAttribute("stroke",r),o.setAttribute("stroke-width",String(e)),o.setAttribute("stroke-linecap","round"),o.setAttribute("stroke-linejoin","round"),o.setAttribute("aria-hidden","true"),t.forEach(s=>{if(Array.isArray(s)&&s.length>=2){let a=s[0],c=s[1];if(c){let b=document.createElementNS("http://www.w3.org/2000/svg",a);Object.entries(c).forEach(([z,g])=>{z!=="stroke"&&b.setAttribute(z,String(g))}),o.appendChild(b)}}}),o}var u=(t,n)=>{let r=document.createElement(t);return n&&(r.className=n),r};var Ve={idle:"Online",connecting:"Connecting\u2026",connected:"Streaming\u2026",error:"Offline"};var Rt={"bottom-right":"tvw-bottom-6 tvw-right-6","bottom-left":"tvw-bottom-6 tvw-left-6","top-right":"tvw-top-6 tvw-right-6","top-left":"tvw-top-6 tvw-left-6"};var gn=(t,n)=>{let r=u("button");r.type="button",r.innerHTML=`
|
|
7
7
|
<span class="tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-bg-cw-primary tvw-text-white" data-role="launcher-icon">\u{1F4AC}</span>
|
|
8
8
|
<img data-role="launcher-image" class="tvw-rounded-full tvw-object-cover" alt="" style="display:none" />
|
|
9
9
|
<span class="tvw-flex tvw-flex-col tvw-items-start tvw-text-left">
|
|
@@ -11,6 +11,6 @@ import{marked as Co}from"marked";Co.setOptions({breaks:!0});var So=t=>Co.parse(t
|
|
|
11
11
|
<span class="tvw-text-xs tvw-text-cw-muted" data-role="launcher-subtitle"></span>
|
|
12
12
|
</span>
|
|
13
13
|
<span class="tvw-ml-2 tvw-grid tvw-place-items-center tvw-rounded-full tvw-bg-cw-primary tvw-text-cw-call-to-action" data-role="launcher-call-to-action-icon">\u2197</span>
|
|
14
|
-
`,r.addEventListener("click",n);let e=s=>{var Q,R,y,B,g,ke,re,Ne,Be,we;let a=(Q=s.launcher)!=null?Q:{},m=r.querySelector("[data-role='launcher-title']");m&&(m.textContent=(R=a.title)!=null?R:"Chat Assistant");let v=r.querySelector("[data-role='launcher-subtitle']");v&&(v.textContent=(y=a.subtitle)!=null?y:"Get answers fast");let P=r.querySelector(".tvw-flex-col");P&&(a.textHidden?P.style.display="none":P.style.display="");let u=r.querySelector("[data-role='launcher-icon']");if(u)if(a.agentIconHidden)u.style.display="none";else{let ee=(B=a.agentIconSize)!=null?B:"40px";if(u.style.height=ee,u.style.width=ee,u.innerHTML="",a.agentIconName){let Ae=parseFloat(ee)||24,he=Le(a.agentIconName,Ae*.6,"#ffffff",2);he?(u.appendChild(he),u.style.display=""):(u.textContent=(g=a.agentIconText)!=null?g:"\u{1F4AC}",u.style.display="")}else a.iconUrl?u.style.display="none":(u.textContent=(ke=a.agentIconText)!=null?ke:"\u{1F4AC}",u.style.display="")}let I=r.querySelector("[data-role='launcher-image']");if(I){let ee=(re=a.agentIconSize)!=null?re:"40px";I.style.height=ee,I.style.width=ee,a.iconUrl&&!a.agentIconName&&!a.agentIconHidden?(I.src=a.iconUrl,I.style.display="block"):I.style.display="none"}let k=r.querySelector("[data-role='launcher-call-to-action-icon']");if(k){let ee=(Ne=a.callToActionIconSize)!=null?Ne:"32px";k.style.height=ee,k.style.width=ee,a.callToActionIconBackgroundColor?(k.style.backgroundColor=a.callToActionIconBackgroundColor,k.classList.remove("tvw-bg-cw-primary")):(k.style.backgroundColor="",k.classList.add("tvw-bg-cw-primary"));let Ae=0;if(a.callToActionIconPadding?(k.style.boxSizing="border-box",k.style.padding=a.callToActionIconPadding,Ae=(parseFloat(a.callToActionIconPadding)||0)*2):(k.style.boxSizing="",k.style.padding=""),a.callToActionIconHidden)k.style.display="none";else if(k.style.display="",k.innerHTML="",a.callToActionIconName){let he=parseFloat(ee)||24,Y=Math.max(he-Ae,8),ne=Le(a.callToActionIconName,Y,"currentColor",2);ne?k.appendChild(ne):k.textContent=(Be=a.callToActionIconText)!=null?Be:"\u2197"}else k.textContent=(we=a.callToActionIconText)!=null?we:"\u2197"}let q=a.position&&Ft[a.position]?Ft[a.position]:Ft["bottom-right"],L="tvw-fixed tvw-flex tvw-items-center tvw-gap-3 tvw-rounded-launcher tvw-bg-cw-surface tvw-py-2.5 tvw-pl-3 tvw-pr-3 tvw-shadow-lg tvw-border tvw-border-gray-200 tvw-transition hover:tvw-translate-y-[-2px] tvw-cursor-pointer tvw-z-50";r.className=`${L} ${q}`},o=()=>{r.removeEventListener("click",n),r.remove()};return t&&e(t),{element:r,update:e,destroy:o}};var Lo=t=>{var v,P,u,I,k;if(!((P=(v=t==null?void 0:t.launcher)==null?void 0:v.enabled)!=null?P:!0)){let q=c("div","tvw-relative tvw-w-full tvw-h-full"),L=c("div","tvw-relative tvw-w-full tvw-h-full tvw-min-h-[360px]");return q.appendChild(L),{wrapper:q,panel:L}}let r=(u=t==null?void 0:t.launcher)!=null?u:{},e=r.position&&Ft[r.position]?Ft[r.position]:Ft["bottom-right"],o=c("div",`tvw-fixed ${e} tvw-z-50 tvw-transition`),s=c("div","tvw-relative tvw-min-h-[320px]"),a=(k=(I=t==null?void 0:t.launcher)==null?void 0:I.width)!=null?k:t==null?void 0:t.launcherWidth,m=a!=null?a:"min(400px, calc(100vw - 24px))";return s.style.width=m,s.style.maxWidth=m,o.appendChild(s),{wrapper:o,panel:s}},ko=(t,n=!0)=>{var Wt,Lt,it,zt,Ot,kt,ft,at,_t,$t,jt,wt,ht,_e,Tt,Bt,Rt,Ht,De,$e,lt,et,It,vt,Xe,p,$,G,pe,O,be,ce,h,Ye,N,f,d,H,ae,le,ue,Re,Me,de,j,ie,me,Ce,He,i,l,S,z,T,W,b,U,Se,_,A;let r=c("div","tvw-flex tvw-h-full tvw-w-full tvw-flex-col tvw-bg-cw-surface tvw-text-cw-primary tvw-rounded-2xl tvw-overflow-hidden tvw-shadow-2xl tvw-border tvw-border-cw-border"),e=c("div","tvw-flex tvw-items-center tvw-gap-3 tvw-bg-cw-surface tvw-px-6 tvw-py-5 tvw-border-b-cw-divider"),o=(Wt=t==null?void 0:t.launcher)!=null?Wt:{},s=(Lt=o.headerIconSize)!=null?Lt:"48px",a=(it=o.closeButtonSize)!=null?it:"32px",m=(zt=o.closeButtonPlacement)!=null?zt:"inline",v=(Ot=o.headerIconHidden)!=null?Ot:!1,P=o.headerIconName,u=c("div","tvw-flex tvw-items-center tvw-justify-center tvw-rounded-xl tvw-bg-cw-primary tvw-text-white tvw-text-xl");if(u.style.height=s,u.style.width=s,!v)if(P){let w=parseFloat(s)||24,V=Le(P,w*.6,"#ffffff",2);V?u.replaceChildren(V):u.textContent=(ft=(kt=t==null?void 0:t.launcher)==null?void 0:kt.agentIconText)!=null?ft:"\u{1F4AC}"}else if((at=t==null?void 0:t.launcher)!=null&&at.iconUrl){let w=c("img");w.src=t.launcher.iconUrl,w.alt="",w.className="tvw-rounded-xl tvw-object-cover",w.style.height=s,w.style.width=s,u.replaceChildren(w)}else u.textContent=($t=(_t=t==null?void 0:t.launcher)==null?void 0:_t.agentIconText)!=null?$t:"\u{1F4AC}";let I=c("div","tvw-flex tvw-flex-col"),k=c("span","tvw-text-base tvw-font-semibold");k.textContent=(wt=(jt=t==null?void 0:t.launcher)==null?void 0:jt.title)!=null?wt:"Chat Assistant";let q=c("span","tvw-text-xs tvw-text-cw-muted");q.textContent=(_e=(ht=t==null?void 0:t.launcher)==null?void 0:ht.subtitle)!=null?_e:"Here to help you get answers fast",I.append(k,q),v?e.append(I):e.append(u,I);let L=(Tt=o.clearChat)!=null?Tt:{},Q=(Bt=L.enabled)!=null?Bt:!0,R=null,y=null;if(Q){let w=(Rt=L.size)!=null?Rt:"32px",V=(Ht=L.iconName)!=null?Ht:"refresh-cw",K=(De=L.iconColor)!=null?De:"",Ie=($e=L.backgroundColor)!=null?$e:"",fe=(lt=L.borderWidth)!=null?lt:"",Je=(et=L.borderColor)!=null?et:"",te=(It=L.borderRadius)!=null?It:"",tt=(vt=L.paddingX)!=null?vt:"",yt=(Xe=L.paddingY)!=null?Xe:"",dt=(p=L.tooltipText)!=null?p:"Clear chat",Pt=($=L.showTooltip)!=null?$:!0;y=c("div","tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper"),R=c("button","tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none"),R.style.height=w,R.style.width=w,R.type="button",R.setAttribute("aria-label",dt);let Ut=Le(V,"20px",K||"",2);if(Ut&&R.appendChild(Ut),K&&(R.style.color=K,R.classList.remove("tvw-text-cw-muted")),Ie&&(R.style.backgroundColor=Ie,R.classList.remove("hover:tvw-bg-gray-100")),fe||Je){let Ee=fe||"0px",pt=Je||"transparent";R.style.border=`${Ee} solid ${pt}`,R.classList.remove("tvw-border-none")}if(te&&(R.style.borderRadius=te,R.classList.remove("tvw-rounded-full")),tt?(R.style.paddingLeft=tt,R.style.paddingRight=tt):(R.style.paddingLeft="",R.style.paddingRight=""),yt?(R.style.paddingTop=yt,R.style.paddingBottom=yt):(R.style.paddingTop="",R.style.paddingBottom=""),y.appendChild(R),Pt&&dt&&R&&y){let Ee=null,pt=()=>{if(Ee||!R)return;Ee=c("div","tvw-clear-chat-tooltip"),Ee.textContent=dt;let Nt=c("div");Nt.className="tvw-clear-chat-tooltip-arrow",Ee.appendChild(Nt);let At=R.getBoundingClientRect();Ee.style.position="fixed",Ee.style.left=`${At.left+At.width/2}px`,Ee.style.top=`${At.top-8}px`,Ee.style.transform="translate(-50%, -100%)",document.body.appendChild(Ee)},je=()=>{Ee&&Ee.parentNode&&(Ee.parentNode.removeChild(Ee),Ee=null)};y.addEventListener("mouseenter",pt),y.addEventListener("mouseleave",je),R.addEventListener("focus",pt),R.addEventListener("blur",je),y._cleanupTooltip=()=>{je(),y&&(y.removeEventListener("mouseenter",pt),y.removeEventListener("mouseleave",je)),R&&(R.removeEventListener("focus",pt),R.removeEventListener("blur",je))}}e.appendChild(y)}let B=c("div",m==="top-right"?"tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50":Q?"":"tvw-ml-auto"),g=c("button","tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none");g.style.height=a,g.style.width=a,g.type="button";let ke=(G=o.closeButtonTooltipText)!=null?G:"Close chat",re=(pe=o.closeButtonShowTooltip)!=null?pe:!0;g.setAttribute("aria-label",ke),g.style.display=n?"":"none";let Ne=(O=o.closeButtonIconName)!=null?O:"x",Be=(be=o.closeButtonIconText)!=null?be:"\xD7",we=Le(Ne,"20px",o.closeButtonColor||"",2);if(we?g.appendChild(we):g.textContent=Be,o.closeButtonColor?(g.style.color=o.closeButtonColor,g.classList.remove("tvw-text-cw-muted")):(g.style.color="",g.classList.add("tvw-text-cw-muted")),o.closeButtonBackgroundColor?(g.style.backgroundColor=o.closeButtonBackgroundColor,g.classList.remove("hover:tvw-bg-gray-100")):(g.style.backgroundColor="",g.classList.add("hover:tvw-bg-gray-100")),o.closeButtonBorderWidth||o.closeButtonBorderColor){let w=o.closeButtonBorderWidth||"0px",V=o.closeButtonBorderColor||"transparent";g.style.border=`${w} solid ${V}`,g.classList.remove("tvw-border-none")}else g.style.border="",g.classList.add("tvw-border-none");if(o.closeButtonBorderRadius?(g.style.borderRadius=o.closeButtonBorderRadius,g.classList.remove("tvw-rounded-full")):(g.style.borderRadius="",g.classList.add("tvw-rounded-full")),o.closeButtonPaddingX?(g.style.paddingLeft=o.closeButtonPaddingX,g.style.paddingRight=o.closeButtonPaddingX):(g.style.paddingLeft="",g.style.paddingRight=""),o.closeButtonPaddingY?(g.style.paddingTop=o.closeButtonPaddingY,g.style.paddingBottom=o.closeButtonPaddingY):(g.style.paddingTop="",g.style.paddingBottom=""),B.appendChild(g),re&&ke){let w=null,V=()=>{if(w)return;w=c("div","tvw-clear-chat-tooltip"),w.textContent=ke;let Ie=c("div");Ie.className="tvw-clear-chat-tooltip-arrow",w.appendChild(Ie);let fe=g.getBoundingClientRect();w.style.position="fixed",w.style.left=`${fe.left+fe.width/2}px`,w.style.top=`${fe.top-8}px`,w.style.transform="translate(-50%, -100%)",document.body.appendChild(w)},K=()=>{w&&w.parentNode&&(w.parentNode.removeChild(w),w=null)};B.addEventListener("mouseenter",V),B.addEventListener("mouseleave",K),g.addEventListener("focus",V),g.addEventListener("blur",K),B._cleanupTooltip=()=>{K(),B.removeEventListener("mouseenter",V),B.removeEventListener("mouseleave",K),g.removeEventListener("focus",V),g.removeEventListener("blur",K)}}m==="top-right"?(r.style.position="relative",r.appendChild(B)):e.appendChild(B);let ee=c("div","tvw-flex tvw-flex-1 tvw-min-h-0 tvw-flex-col tvw-gap-6 tvw-overflow-y-auto tvw-bg-cw-container tvw-px-6 tvw-py-6");ee.id="vanilla-agent-scroll-container";let Ae=c("div","tvw-rounded-2xl tvw-bg-cw-surface tvw-p-6 tvw-shadow-sm"),he=c("h2","tvw-text-lg tvw-font-semibold tvw-text-cw-primary");he.textContent=(h=(ce=t==null?void 0:t.copy)==null?void 0:ce.welcomeTitle)!=null?h:"Hello \u{1F44B}";let Y=c("p","tvw-mt-2 tvw-text-sm tvw-text-cw-muted");Y.textContent=(N=(Ye=t==null?void 0:t.copy)==null?void 0:Ye.welcomeSubtitle)!=null?N:"Ask anything about your account or products.",Ae.append(he,Y);let ne=c("div","tvw-flex tvw-flex-col tvw-gap-3");ee.append(Ae,ne);let Dt=c("div","tvw-border-t-cw-divider tvw-bg-cw-surface tvw-px-6 tvw-py-4"),Z=c("div","tvw-mb-3 tvw-flex tvw-flex-wrap tvw-gap-2"),M=((f=t==null?void 0:t.voiceRecognition)==null?void 0:f.enabled)===!0,ot=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),rt=c("form",`tvw-flex tvw-items-end ${M&&ot?"tvw-gap-1":"tvw-gap-3"} tvw-rounded-2xl tvw-border tvw-border-gray-200 tvw-bg-cw-input-background tvw-px-4 tvw-py-3`);rt.style.outline="none";let se=c("textarea");se.placeholder=(H=(d=t==null?void 0:t.copy)==null?void 0:d.inputPlaceholder)!=null?H:"Type your message\u2026",se.className="tvw-min-h-[48px] tvw-flex-1 tvw-resize-none tvw-border-none tvw-bg-transparent tvw-text-sm tvw-text-cw-primary focus:tvw-outline-none focus:tvw-border-none",se.rows=1;let E=(le=(ae=t==null?void 0:t.theme)==null?void 0:ae.inputFontFamily)!=null?le:"sans-serif",ve=(Re=(ue=t==null?void 0:t.theme)==null?void 0:ue.inputFontWeight)!=null?Re:"400",x=w=>{switch(w){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'}};se.style.fontFamily=x(E),se.style.fontWeight=ve,se.style.border="none",se.style.outline="none",se.style.borderWidth="0",se.style.borderStyle="none",se.style.borderColor="transparent",se.addEventListener("focus",()=>{se.style.border="none",se.style.outline="none",se.style.borderWidth="0",se.style.borderStyle="none",se.style.borderColor="transparent",se.style.boxShadow="none"}),se.addEventListener("blur",()=>{se.style.border="none",se.style.outline="none"});let X=(Me=t==null?void 0:t.sendButton)!=null?Me:{},ze=(de=X.useIcon)!=null?de:!1,ut=(j=X.iconText)!=null?j:"\u2191",Qe=X.iconName,F=(ie=X.tooltipText)!=null?ie:"Send message",Ct=(me=X.showTooltip)!=null?me:!1,Oe=(Ce=X.size)!=null?Ce:"40px",gt=X.backgroundColor,Fe=X.textColor,Ve=c("div","tvw-send-button-wrapper"),D=c("button",ze?"tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer":"tvw-rounded-button tvw-bg-cw-accent tvw-px-4 tvw-py-2 tvw-text-sm tvw-font-semibold disabled:tvw-opacity-50 tvw-cursor-pointer");if(D.type="submit",ze){if(D.style.width=Oe,D.style.height=Oe,D.style.minWidth=Oe,D.style.minHeight=Oe,D.style.fontSize="18px",D.style.lineHeight="1",D.innerHTML="",Qe){let w=parseFloat(Oe)||24,V=Fe&&typeof Fe=="string"&&Fe.trim()?Fe.trim():"currentColor",K=Le(Qe,w,V,2);K?(D.appendChild(K),D.style.color=V):(D.textContent=ut,Fe?D.style.color=Fe:D.classList.add("tvw-text-white"))}else D.textContent=ut,Fe?D.style.color=Fe:D.classList.add("tvw-text-white");gt?D.style.backgroundColor=gt:D.classList.add("tvw-bg-cw-primary")}else D.textContent=(i=(He=t==null?void 0:t.copy)==null?void 0:He.sendButtonLabel)!=null?i:"Send",Fe?D.style.color=Fe:D.classList.add("tvw-text-white");if(X.borderWidth&&(D.style.borderWidth=X.borderWidth,D.style.borderStyle="solid"),X.borderColor&&(D.style.borderColor=X.borderColor),X.paddingX?(D.style.paddingLeft=X.paddingX,D.style.paddingRight=X.paddingX):(D.style.paddingLeft="",D.style.paddingRight=""),X.paddingY?(D.style.paddingTop=X.paddingY,D.style.paddingBottom=X.paddingY):(D.style.paddingTop="",D.style.paddingBottom=""),Ct&&F){let w=c("div","tvw-send-button-tooltip");w.textContent=F,Ve.appendChild(w)}Ve.appendChild(D);let ye=(l=t==null?void 0:t.voiceRecognition)!=null?l:{},Et=ye.enabled===!0,J=null,st=null,Vt=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined");if(Et&&Vt){st=c("div","tvw-send-button-wrapper"),J=c("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer"),J.type="button",J.setAttribute("aria-label","Start voice recognition");let w=(S=ye.iconName)!=null?S:"mic",V=(z=ye.iconSize)!=null?z:Oe,K=parseFloat(V)||24,Ie=(T=ye.backgroundColor)!=null?T:gt,fe=(W=ye.iconColor)!=null?W:Fe;J.style.width=V,J.style.height=V,J.style.minWidth=V,J.style.minHeight=V,J.style.fontSize="18px",J.style.lineHeight="1";let Je=fe||"currentColor",te=Le(w,K,Je,1.5);te?(J.appendChild(te),J.style.color=Je):(J.textContent="\u{1F3A4}",J.style.color=Je),Ie?J.style.backgroundColor=Ie:J.classList.add("tvw-bg-cw-primary"),fe?J.style.color=fe:!fe&&!Fe&&J.classList.add("tvw-text-white"),ye.borderWidth&&(J.style.borderWidth=ye.borderWidth,J.style.borderStyle="solid"),ye.borderColor&&(J.style.borderColor=ye.borderColor),ye.paddingX&&(J.style.paddingLeft=ye.paddingX,J.style.paddingRight=ye.paddingX),ye.paddingY&&(J.style.paddingTop=ye.paddingY,J.style.paddingBottom=ye.paddingY),st.appendChild(J);let tt=(b=ye.tooltipText)!=null?b:"Start voice recognition";if(((U=ye.showTooltip)!=null?U:!1)&&tt){let dt=c("div","tvw-send-button-tooltip");dt.textContent=tt,st.appendChild(dt)}}rt.addEventListener("click",w=>{w.target!==D&&w.target!==Ve&&w.target!==J&&w.target!==st&&se.focus()}),rt.append(se),st&&rt.append(st),rt.append(Ve);let mt=c("div","tvw-mt-2 tvw-text-right tvw-text-xs tvw-text-cw-muted"),St=(Se=t==null?void 0:t.statusIndicator)!=null?Se:{},xe=(_=St.visible)!=null?_:!0;return mt.style.display=xe?"":"none",mt.textContent=(A=St.idleText)!=null?A:"Online",Dt.append(Z,rt,mt),r.append(e,ee,Dt),{container:r,body:ee,messagesWrapper:ne,suggestions:Z,textarea:se,sendButton:D,sendButtonWrapper:Ve,micButton:J,micButtonWrapper:st,composerForm:rt,statusText:mt,introTitle:he,introSubtitle:Y,closeButton:g,closeButtonWrapper:B,clearChatButton:R,clearChatButtonWrapper:y,iconHolder:u}};var un=()=>{let t=document.createElement("div");t.className="tvw-flex tvw-items-center tvw-space-x-1 tvw-h-5 tvw-mt-2";let n=document.createElement("div");n.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",n.style.animationDelay="0ms";let r=document.createElement("div");r.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",r.style.animationDelay="250ms";let e=document.createElement("div");e.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",e.style.animationDelay="500ms";let o=document.createElement("span");return o.className="tvw-sr-only",o.textContent="Loading",t.appendChild(n),t.appendChild(r),t.appendChild(e),t.appendChild(o),t},gn=(t,n)=>{let r=["vanilla-message-bubble","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-text-sm","tvw-leading-relaxed","tvw-shadow-sm"];t.role==="user"?r.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-bg-cw-accent","tvw-text-white","tvw-px-5","tvw-py-3"):r.push("vanilla-message-assistant-bubble","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-px-5","tvw-py-3");let e=c("div",r.join(" ")),o=document.createElement("div");if(o.innerHTML=n({text:t.content,message:t,streaming:!!t.streaming,raw:t.rawContent}),e.appendChild(o),t.streaming&&t.role==="assistant"&&(!t.content||!t.content.trim())){let s=un();e.appendChild(s)}return e};var pn=new Set,mn=t=>{let n=t.reasoning,r=c("div",["vanilla-message-bubble","vanilla-reasoning-bubble","tvw-w-full","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-shadow-sm","tvw-overflow-hidden","tvw-px-0","tvw-py-0"].join(" "));if(!n)return r;let e=pn.has(t.id),o=c("button","tvw-flex tvw-w-full tvw-items-center tvw-justify-between tvw-gap-3 tvw-bg-transparent tvw-px-4 tvw-py-3 tvw-text-left tvw-cursor-pointer tvw-border-none");o.type="button",o.setAttribute("aria-expanded",e?"true":"false");let s=c("div","tvw-flex tvw-flex-col tvw-text-left"),a=c("span","tvw-text-xs tvw-text-cw-primary");a.textContent="Thinking...",s.appendChild(a);let m=c("span","tvw-text-xs tvw-text-cw-primary");m.textContent=Eo(n),s.appendChild(m),n.status==="complete"?a.style.display="none":a.style.display="";let v=c("div","tvw-flex tvw-items-center"),u=Le(e?"chevron-up":"chevron-down",16,"currentColor",2);u?v.appendChild(u):v.textContent=e?"Hide":"Show";let I=c("div","tvw-flex tvw-items-center tvw-ml-auto");I.append(v),o.append(s,I);let k=c("div","tvw-border-t tvw-border-gray-200 tvw-bg-gray-50 tvw-px-4 tvw-py-3");k.style.display=e?"":"none";let q=n.chunks.join(""),L=c("div","tvw-whitespace-pre-wrap tvw-text-xs tvw-leading-snug tvw-text-cw-muted");L.textContent=q||(n.status==="complete"?"No additional context was shared.":"Waiting for details\u2026"),k.appendChild(L);let Q=()=>{o.setAttribute("aria-expanded",e?"true":"false"),v.innerHTML="";let B=Le(e?"chevron-up":"chevron-down",16,"currentColor",2);B?v.appendChild(B):v.textContent=e?"Hide":"Show",k.style.display=e?"":"none"},R=()=>{e=!e,e?pn.add(t.id):pn.delete(t.id),Q()};return o.addEventListener("pointerdown",y=>{y.preventDefault(),R()}),o.addEventListener("keydown",y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),R())}),Q(),r.append(o,k),r};var fn=new Set,wn=(t,n)=>{var R;let r=t.toolCall,e=(R=n==null?void 0:n.toolCall)!=null?R:{},o=c("div",["vanilla-message-bubble","vanilla-tool-bubble","tvw-w-full","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-shadow-sm","tvw-overflow-hidden","tvw-px-0","tvw-py-0"].join(" "));if(e.backgroundColor&&(o.style.backgroundColor=e.backgroundColor),e.borderColor&&(o.style.borderColor=e.borderColor),e.borderWidth&&(o.style.borderWidth=e.borderWidth),e.borderRadius&&(o.style.borderRadius=e.borderRadius),!r)return o;let s=fn.has(t.id),a=c("button","tvw-flex tvw-w-full tvw-items-center tvw-justify-between tvw-gap-3 tvw-bg-transparent tvw-px-4 tvw-py-3 tvw-text-left tvw-cursor-pointer tvw-border-none");a.type="button",a.setAttribute("aria-expanded",s?"true":"false"),e.headerBackgroundColor&&(a.style.backgroundColor=e.headerBackgroundColor),e.headerPaddingX&&(a.style.paddingLeft=e.headerPaddingX,a.style.paddingRight=e.headerPaddingX),e.headerPaddingY&&(a.style.paddingTop=e.headerPaddingY,a.style.paddingBottom=e.headerPaddingY);let m=c("div","tvw-flex tvw-flex-col tvw-text-left"),v=c("span","tvw-text-xs tvw-text-cw-primary");e.headerTextColor&&(v.style.color=e.headerTextColor),v.textContent=Wo(r),m.appendChild(v);let P=c("div","tvw-flex tvw-items-center"),u=e.toggleTextColor||e.headerTextColor||"currentColor",I=Le(s?"chevron-up":"chevron-down",16,u,2);I?P.appendChild(I):P.textContent=s?"Hide":"Show";let k=c("div","tvw-flex tvw-items-center tvw-gap-2 tvw-ml-auto");k.append(P),a.append(m,k);let q=c("div","tvw-border-t tvw-border-gray-200 tvw-bg-gray-50 tvw-space-y-3 tvw-px-4 tvw-py-3");if(q.style.display=s?"":"none",e.contentBackgroundColor&&(q.style.backgroundColor=e.contentBackgroundColor),e.contentTextColor&&(q.style.color=e.contentTextColor),e.contentPaddingX&&(q.style.paddingLeft=e.contentPaddingX,q.style.paddingRight=e.contentPaddingX),e.contentPaddingY&&(q.style.paddingTop=e.contentPaddingY,q.style.paddingBottom=e.contentPaddingY),r.name){let y=c("div","tvw-text-xs tvw-text-cw-muted tvw-italic");e.contentTextColor?y.style.color=e.contentTextColor:e.headerTextColor&&(y.style.color=e.headerTextColor),y.textContent=r.name,q.appendChild(y)}if(r.args!==void 0){let y=c("div","tvw-space-y-1"),B=c("div","tvw-text-xs tvw-text-cw-muted");e.labelTextColor&&(B.style.color=e.labelTextColor),B.textContent="Arguments";let g=c("pre","tvw-max-h-48 tvw-overflow-auto tvw-whitespace-pre-wrap tvw-rounded-lg tvw-border tvw-border-gray-100 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-xs tvw-text-cw-primary");g.style.fontSize="0.75rem",g.style.lineHeight="1rem",e.codeBlockBackgroundColor&&(g.style.backgroundColor=e.codeBlockBackgroundColor),e.codeBlockBorderColor&&(g.style.borderColor=e.codeBlockBorderColor),e.codeBlockTextColor&&(g.style.color=e.codeBlockTextColor),g.textContent=on(r.args),y.append(B,g),q.appendChild(y)}if(r.chunks&&r.chunks.length){let y=c("div","tvw-space-y-1"),B=c("div","tvw-text-xs tvw-text-cw-muted");e.labelTextColor&&(B.style.color=e.labelTextColor),B.textContent="Activity";let g=c("pre","tvw-max-h-48 tvw-overflow-auto tvw-whitespace-pre-wrap tvw-rounded-lg tvw-border tvw-border-gray-100 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-xs tvw-text-cw-primary");g.style.fontSize="0.75rem",g.style.lineHeight="1rem",e.codeBlockBackgroundColor&&(g.style.backgroundColor=e.codeBlockBackgroundColor),e.codeBlockBorderColor&&(g.style.borderColor=e.codeBlockBorderColor),e.codeBlockTextColor&&(g.style.color=e.codeBlockTextColor),g.textContent=r.chunks.join(`
|
|
15
|
-
`),y.append(B,g),q.appendChild(y)}if(r.status==="complete"&&r.result!==void 0){let y=c("div","tvw-space-y-1"),B=c("div","tvw-text-xs tvw-text-cw-muted");e.labelTextColor&&(B.style.color=e.labelTextColor),B.textContent="Result";let g=c("pre","tvw-max-h-48 tvw-overflow-auto tvw-whitespace-pre-wrap tvw-rounded-lg tvw-border tvw-border-gray-100 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-xs tvw-text-cw-primary");g.style.fontSize="0.75rem",g.style.lineHeight="1rem",e.codeBlockBackgroundColor&&(g.style.backgroundColor=e.codeBlockBackgroundColor),e.codeBlockBorderColor&&(g.style.borderColor=e.codeBlockBorderColor),e.codeBlockTextColor&&(g.style.color=e.codeBlockTextColor),g.textContent=on(r.result),y.append(B,g),q.appendChild(y)}if(r.status==="complete"&&typeof r.duration=="number"){let y=c("div","tvw-text-xs tvw-text-cw-muted");e.contentTextColor&&(y.style.color=e.contentTextColor),y.textContent=`Duration: ${r.duration}ms`,q.appendChild(y)}let L=()=>{a.setAttribute("aria-expanded",s?"true":"false"),P.innerHTML="";let y=e.toggleTextColor||e.headerTextColor||"currentColor",B=Le(s?"chevron-up":"chevron-down",16,y,2);B?P.appendChild(B):P.textContent=s?"Hide":"Show",q.style.display=s?"":"none"},Q=()=>{s=!s,s?fn.add(t.id):fn.delete(t.id),L()};return a.addEventListener("pointerdown",y=>{y.preventDefault(),Q()}),a.addEventListener("keydown",y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),Q())}),L(),o.append(a,q),o};var Bo=t=>{let n=[];return{buttons:n,render:(e,o,s,a)=>{if(t.innerHTML="",n.length=0,!e||!e.length||(a!=null?a:o?o.getMessages():[]).some(I=>I.role==="user"))return;let P=document.createDocumentFragment(),u=o?o.isStreaming():!1;e.forEach(I=>{let k=c("button","tvw-rounded-button tvw-bg-cw-surface tvw-px-3 tvw-py-1.5 tvw-text-xs tvw-font-medium tvw-text-cw-muted hover:tvw-opacity-90 tvw-cursor-pointer tvw-border tvw-border-gray-200");k.type="button",k.textContent=I,k.disabled=u,k.addEventListener("click",()=>{!o||o.isStreaming()||(s.value="",o.sendMessage(I))}),P.appendChild(k),n.push(k)}),t.appendChild(P)}}};var Ro={init:{title:"Schedule a Demo",description:"Share the basics and we'll follow up with a confirmation.",fields:[{name:"name",label:"Full name",placeholder:"Jane Doe",required:!0},{name:"email",label:"Work email",placeholder:"jane@example.com",type:"email",required:!0},{name:"notes",label:"What would you like to cover?",type:"textarea"}],submitLabel:"Submit details"},followup:{title:"Additional Information",description:"Provide any extra details to tailor the next steps.",fields:[{name:"company",label:"Company",placeholder:"Acme Inc."},{name:"context",label:"Context",type:"textarea",placeholder:"Share more about your use case"}],submitLabel:"Send"}},hn=(t,n,r,e)=>{let o=t.querySelectorAll("[data-tv-form]");o.length&&o.forEach(s=>{var L,Q,R;if(s.dataset.enhanced==="true")return;let a=(L=s.dataset.tvForm)!=null?L:"init";s.dataset.enhanced="true";let m=(Q=Ro[a])!=null?Q:Ro.init;s.classList.add("tvw-form-card","tvw-space-y-4");let v=c("div","tvw-space-y-1"),P=c("h3","tvw-text-base tvw-font-semibold tvw-text-cw-primary");if(P.textContent=m.title,v.appendChild(P),m.description){let y=c("p","tvw-text-sm tvw-text-cw-muted");y.textContent=m.description,v.appendChild(y)}let u=document.createElement("form");u.className="tvw-form-grid tvw-space-y-3",m.fields.forEach(y=>{var Ne,Be;let B=c("label","tvw-form-field tvw-flex tvw-flex-col tvw-gap-1");B.htmlFor=`${n.id}-${a}-${y.name}`;let g=c("span","tvw-text-xs tvw-font-medium tvw-text-cw-muted");g.textContent=y.label,B.appendChild(g);let ke=(Ne=y.type)!=null?Ne:"text",re;ke==="textarea"?(re=document.createElement("textarea"),re.rows=3):(re=document.createElement("input"),re.type=ke),re.className="tvw-rounded-xl tvw-border tvw-border-gray-200 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-sm tvw-text-cw-primary focus:tvw-outline-none focus:tvw-border-cw-primary",re.id=`${n.id}-${a}-${y.name}`,re.name=y.name,re.placeholder=(Be=y.placeholder)!=null?Be:"",y.required&&(re.required=!0),B.appendChild(re),u.appendChild(B)});let I=c("div","tvw-flex tvw-items-center tvw-justify-between tvw-gap-2"),k=c("div","tvw-text-xs tvw-text-cw-muted tvw-min-h-[1.5rem]"),q=c("button","tvw-inline-flex tvw-items-center tvw-rounded-full tvw-bg-cw-primary tvw-px-4 tvw-py-2 tvw-text-sm tvw-font-semibold tvw-text-white disabled:tvw-opacity-60 tvw-cursor-pointer");q.type="submit",q.textContent=(R=m.submitLabel)!=null?R:"Submit",I.appendChild(k),I.appendChild(q),u.appendChild(I),s.replaceChildren(v,u),u.addEventListener("submit",async y=>{var re,Ne;y.preventDefault();let B=(re=r.formEndpoint)!=null?re:"/form",g=new FormData(u),ke={};g.forEach((Be,we)=>{ke[we]=Be}),ke.type=a,q.disabled=!0,k.textContent="Submitting\u2026";try{let Be=await fetch(B,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ke)});if(!Be.ok)throw new Error(`Form submission failed (${Be.status})`);let we=await Be.json();k.textContent=(Ne=we.message)!=null?Ne:"Thanks! We'll be in touch soon.",we.success&&we.nextPrompt&&await e.sendMessage(String(we.nextPrompt))}catch(Be){k.textContent=Be instanceof Error?Be.message:"Something went wrong. Please try again."}finally{q.disabled=!1}})})};var vn=class{constructor(){this.plugins=new Map}register(n){var r;this.plugins.has(n.id)&&console.warn(`Plugin "${n.id}" is already registered. Overwriting.`),this.plugins.set(n.id,n),(r=n.onRegister)==null||r.call(n)}unregister(n){var e;let r=this.plugins.get(n);r&&((e=r.onUnregister)==null||e.call(r),this.plugins.delete(n))}getAll(){return Array.from(this.plugins.values()).sort((n,r)=>{var e,o;return((e=r.priority)!=null?e:0)-((o=n.priority)!=null?o:0)})}getForInstance(n){let r=this.getAll();if(!n||n.length===0)return r;let e=new Set(n.map(s=>s.id));return[...r.filter(s=>!e.has(s.id)),...n].sort((s,a)=>{var m,v;return((m=a.priority)!=null?m:0)-((v=s.priority)!=null?v:0)})}clear(){this.plugins.forEach(n=>{var r;return(r=n.onUnregister)==null?void 0:r.call(n)}),this.plugins.clear()}},Zt=new vn;var ct={apiUrl:"http://localhost:43111/api/chat/dispatch",theme:{primary:"#111827",accent:"#1d4ed8",surface:"#ffffff",muted:"#6b7280",container:"#f8fafc",border:"#f1f5f9",divider:"#f1f5f9",messageBorder:"#f1f5f9",inputBackground:"#ffffff",callToAction:"#000000",callToActionBackground:"#ffffff",sendButtonBackgroundColor:"#111827",sendButtonTextColor:"#ffffff",sendButtonBorderColor:"#60a5fa",closeButtonColor:"#6b7280",closeButtonBackgroundColor:"transparent",closeButtonBorderColor:"",clearChatIconColor:"#6b7280",clearChatBackgroundColor:"transparent",clearChatBorderColor:"transparent",micIconColor:"#111827",micBackgroundColor:"transparent",micBorderColor:"transparent",recordingIconColor:"#ffffff",recordingBackgroundColor:"#ef4444",recordingBorderColor:"transparent",inputFontFamily:"sans-serif",inputFontWeight:"400",radiusSm:"0.75rem",radiusMd:"1rem",radiusLg:"1.5rem",launcherRadius:"9999px",buttonRadius:"9999px"},launcher:{enabled:!0,title:"Chat Assistant",subtitle:"Here to help you get answers fast",agentIconText:"\u{1F4AC}",position:"bottom-right",width:"min(400px, calc(100vw - 24px))",autoExpand:!1,callToActionIconHidden:!1,agentIconSize:"40px",headerIconSize:"40px",closeButtonSize:"32px",callToActionIconName:"arrow-up-right",callToActionIconText:"",callToActionIconSize:"32px",callToActionIconPadding:"5px",callToActionIconColor:"#000000",callToActionIconBackgroundColor:"#ffffff",closeButtonColor:"#6b7280",closeButtonBackgroundColor:"transparent",clearChat:{iconColor:"#6b7280",backgroundColor:"transparent",borderColor:"transparent",enabled:!0,iconName:"refresh-cw",size:"29px",showTooltip:!0,tooltipText:"Clear chat",paddingX:"0px",paddingY:"0px"},headerIconHidden:!1},copy:{welcomeTitle:"Hello \u{1F44B}",welcomeSubtitle:"Ask anything about your account or products.",inputPlaceholder:"How can I help...",sendButtonLabel:"Send"},sendButton:{borderWidth:"0px",paddingX:"12px",paddingY:"10px",backgroundColor:"#111827",textColor:"#ffffff",borderColor:"#60a5fa",useIcon:!0,iconText:"\u2191",size:"40px",showTooltip:!0,tooltipText:"Send message",iconName:"send"},statusIndicator:{visible:!0,idleText:"Online",connectingText:"Connecting\u2026",connectedText:"Streaming\u2026",errorText:"Offline"},voiceRecognition:{enabled:!0,pauseDuration:2e3,iconName:"mic",iconSize:"39px",borderWidth:"0px",paddingX:"9px",paddingY:"14px",iconColor:"#111827",backgroundColor:"transparent",borderColor:"transparent",recordingIconColor:"#ffffff",recordingBackgroundColor:"#ef4444",recordingBorderColor:"transparent",showTooltip:!0,tooltipText:"Start voice recognition"},features:{showReasoning:!0,showToolCalls:!0},suggestionChips:["What can you help me with?","Tell me about your features","How does this work?"],debug:!1};function yn(t){var n,r,e;return t?{...ct,...t,theme:{...ct.theme,...t.theme},launcher:{...ct.launcher,...t.launcher,clearChat:{...(n=ct.launcher)==null?void 0:n.clearChat,...(r=t.launcher)==null?void 0:r.clearChat}},copy:{...ct.copy,...t.copy},sendButton:{...ct.sendButton,...t.sendButton},statusIndicator:{...ct.statusIndicator,...t.statusIndicator},voiceRecognition:{...ct.voiceRecognition,...t.voiceRecognition},features:{...ct.features,...t.features},suggestionChips:(e=t.suggestionChips)!=null?e:ct.suggestionChips}:ct}var Ho=()=>{let t=new Map,n=(o,s)=>(t.has(o)||t.set(o,new Set),t.get(o).add(s),()=>r(o,s)),r=(o,s)=>{var a;(a=t.get(o))==null||a.delete(s)};return{on:n,off:r,emit:(o,s)=>{var a;(a=t.get(o))==null||a.forEach(m=>{try{m(s)}catch(v){typeof console!="undefined"&&console.error("[AgentWidget] Event handler error:",v)}})}}};var Go=t=>{let n=t.match(/```(?:json)?\s*([\s\S]*?)```/i);return n?n[1]:t},Zo=t=>{let n=t.trim(),r=n.indexOf("{");if(r===-1)return null;let e=0;for(let o=r;o<n.length;o+=1){let s=n[o];if(s==="{"&&(e+=1),s==="}"&&(e-=1,e===0))return n.slice(r,o+1)}return null},Qt=({text:t})=>{if(!t||!t.includes("{"))return null;try{let n=Go(t),r=Zo(n);if(!r)return null;let e=JSON.parse(r);if(!e||typeof e!="object"||!e.action)return null;let{action:o,...s}=e;return{type:String(o),payload:s,raw:e}}catch{return null}},xn=t=>typeof t=="string"?t:t==null?"":String(t),Xt={message:t=>t.type!=="message"?void 0:{handled:!0,displayText:xn(t.payload.text)},messageAndClick:(t,n)=>{var o;if(t.type!=="message_and_click")return;let r=t.payload,e=xn(r.element);if(e&&((o=n.document)!=null&&o.querySelector)){let s=n.document.querySelector(e);s?setTimeout(()=>{s.click()},400):typeof console!="undefined"&&console.warn("[AgentWidget] Element not found for selector:",e)}return{handled:!0,displayText:xn(r.text)}}},Io=t=>Array.isArray(t)?t.map(n=>String(n)):[],en=t=>{let n=new Set(Io(t.getMetadata().processedActionMessageIds)),r=()=>{n=new Set(Io(t.getMetadata().processedActionMessageIds))},e=()=>{let s=Array.from(n);t.updateMetadata(a=>({...a,processedActionMessageIds:s}))};return{process:s=>{if(s.streaming||s.message.role!=="assistant"||!s.text||n.has(s.message.id))return null;let a=typeof s.raw=="string"&&s.raw||typeof s.message.rawContent=="string"&&s.message.rawContent||typeof s.text=="string"&&s.text||null;!a&&typeof s.text=="string"&&s.text.trim().startsWith("{")&&typeof console!="undefined"&&console.warn("[AgentWidget] Structured response detected but no raw payload was provided. Ensure your stream parser returns { text, raw }.");let m=a?t.parsers.reduce((P,u)=>P||(u==null?void 0:u({text:a,message:s.message}))||null,null):null;if(!m)return null;n.add(s.message.id),e();let v={action:m,message:s.message};t.emit("action:detected",v);for(let P of t.handlers)if(P)try{let u=P(m,{message:s.message,metadata:t.getMetadata(),updateMetadata:t.updateMetadata,document:t.documentRef});if(!u)continue;if(u.displayText!==void 0&&u.handled)return u.displayText;if(u.handled)return""}catch(u){typeof console!="undefined"&&console.error("[AgentWidget] Action handler error:",u)}return""},syncFromMetadata:r}};var Yt="vanilla-agent-chat-history",Qo=30*1e3,bn=t=>!t||typeof t!="object"?{}:{...t},Po=t=>t.map(n=>({...n,streaming:!1})),No=(t,n)=>r=>{var s,a,m;let e=(s=r.text)!=null?s:"",o=(a=r.message.rawContent)!=null?a:null;if(n){let v=n.process({text:e,raw:o!=null?o:e,message:r.message,streaming:r.streaming});v!==null&&(e=v)}return t!=null&&t.postprocessMessage?t.postprocessMessage({...r,text:e,raw:(m=o!=null?o:r.text)!=null?m:""}):nn(e)},Cn=(t,n,r)=>{var d,H,ae,le,ue,Re,Me,de,j,ie,me,Ce,He;(!t.id||t.id!=="vanilla-agent-root")&&(t.id="vanilla-agent-root");let e=yn(n);dn(t,e);let o=Zt.getForInstance(e.plugins),s=Ho(),a=e.storageAdapter,m={},v=null;if(a!=null&&a.load)try{let i=a.load();if(i&&typeof i.then=="function")v=i;else if(i){let l=i;l.metadata&&(m=bn(l.metadata)),(d=l.messages)!=null&&d.length&&(e={...e,initialMessages:l.messages})}}catch(i){typeof console!="undefined"&&console.error("[AgentWidget] Failed to load stored state:",i)}let P=()=>m,u=i=>{var S;m=(S=i({...m}))!=null?S:{},kt()},I=e.actionParsers&&e.actionParsers.length?e.actionParsers:[Qt],k=e.actionHandlers&&e.actionHandlers.length?e.actionHandlers:[Xt.message,Xt.messageAndClick],q=en({parsers:I,handlers:k,getMetadata:P,updateMetadata:u,emit:s.emit,documentRef:typeof document!="undefined"?document:null});q.syncFromMetadata();let L=(ae=(H=e.launcher)==null?void 0:H.enabled)!=null?ae:!0,Q=(ue=(le=e.launcher)==null?void 0:le.autoExpand)!=null?ue:!1,R=Q,y=L,B=L?Q:!0,g=No(e,q),ke=(Me=(Re=e.features)==null?void 0:Re.showReasoning)!=null?Me:!0,re=(j=(de=e.features)==null?void 0:de.showToolCalls)!=null?j:!0,Ne=(ie=e.statusIndicator)!=null?ie:{},Be=i=>{var l,S,z,T;return i==="idle"?(l=Ne.idleText)!=null?l:Ue.idle:i==="connecting"?(S=Ne.connectingText)!=null?S:Ue.connecting:i==="connected"?(z=Ne.connectedText)!=null?z:Ue.connected:i==="error"?(T=Ne.errorText)!=null?T:Ue.error:Ue[i]},{wrapper:we,panel:ee}=Lo(e),Ae=ko(e,L),{container:he,body:Y,messagesWrapper:ne,suggestions:Dt,textarea:Z,sendButton:M,sendButtonWrapper:ot,composerForm:bt,statusText:qt,introTitle:rt,introSubtitle:se,closeButton:E,iconHolder:ve}=Ae,x=Ae.micButton,X=Ae.micButtonWrapper;ee.appendChild(he),t.appendChild(we);let ze=[],ut=Bo(Dt),Qe=null,F,Ct=!1,Oe=!0,gt=0,Fe=0,Ve=null,D=!1,ye=0,Et=!1,J=125,st=2e3,Vt=5,mt=50,St=new Map,xe={active:!1,manuallyDeactivated:!1,lastUserMessageWasVoice:!1},Wt=(Ce=(me=e.voiceRecognition)==null?void 0:me.autoResume)!=null?Ce:!1,Lt=i=>{s.emit("voice:state",{active:xe.active,source:i,timestamp:Date.now()})},it=()=>{u(i=>({...i,voiceState:{active:xe.active,timestamp:Date.now(),manuallyDeactivated:xe.manuallyDeactivated}}))},zt=()=>{var z,T;if(((z=e.voiceRecognition)==null?void 0:z.enabled)===!1)return;let i=bn(m.voiceState),l=!!i.active,S=Number((T=i.timestamp)!=null?T:0);xe.manuallyDeactivated=!!i.manuallyDeactivated,l&&Date.now()-S<Qo&&setTimeout(()=>{xe.active||(xe.manuallyDeactivated=!1,vt("restore"))},1e3)},Ot=()=>F?Po(F.getMessages()):[];function kt(i){if(!(a!=null&&a.save)||!F)return;let l={messages:i?Po(i):Ot(),metadata:m};try{let S=a.save(l);S instanceof Promise&&S.catch(z=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",z)})}catch(S){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",S)}}let ft=(i=!1)=>{if(!Oe)return;let l=Date.now();D&&l<ye&&!i||(D&&l>=ye&&(D=!1),!(!i&&!Ct)&&(l-Fe<J||(Fe=l,Ve&&cancelAnimationFrame(Ve),Ve=requestAnimationFrame(()=>{D||!Oe||(Et=!0,Y.scrollTop=Y.scrollHeight,gt=Y.scrollTop,requestAnimationFrame(()=>{Et=!1}),Ve=null)}))))},at=null,_t=()=>we.querySelector("#vanilla-agent-scroll-container")||Y,$t=(i,l=500)=>{let S=i.scrollTop,z=i.clientHeight,T=i.scrollHeight,W=T-S;if(S+z>=T-2||Math.abs(W)<5)return;at!==null&&(cancelAnimationFrame(at),at=null);let U=performance.now(),Se=A=>1-Math.pow(1-A,3),_=A=>{let w=i.scrollHeight;w!==T&&(T=w,W=T-S);let V=A-U,K=Math.min(V/l,1),Ie=Se(K),fe=S+W*Ie;i.scrollTop=fe,K<1?at=requestAnimationFrame(_):(i.scrollTop=i.scrollHeight,at=null)};at=requestAnimationFrame(_)},jt=i=>{let l=new Map;i.forEach(S=>{let z=St.get(S.id);l.set(S.id,{streaming:S.streaming,role:S.role}),!z&&S.role==="assistant"&&s.emit("assistant:message",S),S.role==="assistant"&&(z!=null&&z.streaming)&&S.streaming===!1&&s.emit("assistant:complete",S)}),St.clear(),l.forEach((S,z)=>{St.set(z,S)})},wt=(i,l,S)=>{i.innerHTML="";let z=document.createDocumentFragment();l.forEach(W=>{let b=null,U=o.find(_=>!!(W.variant==="reasoning"&&_.renderReasoning||W.variant==="tool"&&_.renderToolCall||!W.variant&&_.renderMessage));if(U)if(W.variant==="reasoning"&&W.reasoning&&U.renderReasoning){if(!ke)return;b=U.renderReasoning({message:W,defaultRenderer:()=>mn(W),config:e})}else if(W.variant==="tool"&&W.toolCall&&U.renderToolCall){if(!re)return;b=U.renderToolCall({message:W,defaultRenderer:()=>wn(W,e),config:e})}else U.renderMessage&&(b=U.renderMessage({message:W,defaultRenderer:()=>{let _=gn(W,S);return W.role!=="user"&&hn(_,W,e,F),_},config:e}));if(!b)if(W.variant==="reasoning"&&W.reasoning){if(!ke)return;b=mn(W)}else if(W.variant==="tool"&&W.toolCall){if(!re)return;b=wn(W,e)}else b=gn(W,S),W.role!=="user"&&hn(b,W,e,F);let Se=document.createElement("div");Se.className="tvw-flex",W.role==="user"&&Se.classList.add("tvw-justify-end"),Se.appendChild(b),z.appendChild(Se)});let T=l.some(W=>W.role==="assistant"&&W.streaming);if(Ct&&l.some(W=>W.role==="user")&&!T){let W=un(),b=document.createElement("div");b.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(" "),b.appendChild(W);let U=document.createElement("div");U.className="tvw-flex",U.appendChild(b),z.appendChild(U)}i.appendChild(z),requestAnimationFrame(()=>{requestAnimationFrame(()=>{let W=_t();$t(W)})})},ht=()=>{L&&(B?(we.classList.remove("tvw-pointer-events-none","tvw-opacity-0"),ee.classList.remove("tvw-scale-95","tvw-opacity-0"),ee.classList.add("tvw-scale-100","tvw-opacity-100"),O&&(O.element.style.display="none")):(we.classList.add("tvw-pointer-events-none","tvw-opacity-0"),ee.classList.remove("tvw-scale-100","tvw-opacity-100"),ee.classList.add("tvw-scale-95","tvw-opacity-0"),O&&(O.element.style.display="")))},_e=i=>{L&&B!==i&&(B=i,ht(),B&&(be(),ft(!0)))},Tt=i=>{Z.disabled=i,M.disabled=i,x&&(x.disabled=i),ut.buttons.forEach(l=>{l.disabled=i})},Bt=()=>{var T,W,b,U,Se,_,A,w,V,K,Ie,fe,Je,te;rt.textContent=(W=(T=e.copy)==null?void 0:T.welcomeTitle)!=null?W:"Hello \u{1F44B}",se.textContent=(U=(b=e.copy)==null?void 0:b.welcomeSubtitle)!=null?U:"Ask anything about your account or products.",Z.placeholder=(_=(Se=e.copy)==null?void 0:Se.inputPlaceholder)!=null?_:"How can I help...",((w=(A=e.sendButton)==null?void 0:A.useIcon)!=null?w:!1)||(M.textContent=(K=(V=e.copy)==null?void 0:V.sendButtonLabel)!=null?K:"Send");let l=(fe=(Ie=e.theme)==null?void 0:Ie.inputFontFamily)!=null?fe:"sans-serif",S=(te=(Je=e.theme)==null?void 0:Je.inputFontWeight)!=null?te:"400",z=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'}};Z.style.fontFamily=z(l),Z.style.fontWeight=S};F=new Jt(e,{onMessagesChanged(i){wt(ne,i,g),F&&(i.some(z=>z.role==="user")?ut.render([],F,Z,i):ut.render(e.suggestionChips,F,Z,i)),ft(!Ct),jt(i);let l=[...i].reverse().find(S=>S.role==="user");xe.lastUserMessageWasVoice=!!(l!=null&&l.viaVoice),kt(i)},onStatusChanged(i){var z;let l=(z=e.statusIndicator)!=null?z:{},S=T=>{var W,b,U,Se;return T==="idle"?(W=l.idleText)!=null?W:Ue.idle:T==="connecting"?(b=l.connectingText)!=null?b:Ue.connecting:T==="connected"?(U=l.connectedText)!=null?U:Ue.connected:T==="error"?(Se=l.errorText)!=null?Se:Ue.error:Ue[T]};qt.textContent=S(i)},onStreamingChanged(i){Ct=i,Tt(i),F&&wt(ne,F.getMessages(),g),i||ft(!0)}}),v&&v.then(i=>{var l;i&&(i.metadata&&(m=bn(i.metadata),q.syncFromMetadata()),(l=i.messages)!=null&&l.length&&F.hydrateMessages(i.messages))}).catch(i=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to hydrate stored state:",i)});let Rt=i=>{i.preventDefault();let l=Z.value.trim();l&&(Z.value="",F.sendMessage(l))},Ht=i=>{i.key==="Enter"&&!i.shiftKey&&(i.preventDefault(),M.click())},De=null,$e=!1,lt=null,et=null,It=()=>typeof window=="undefined"?null:window.webkitSpeechRecognition||window.SpeechRecognition||null,vt=(i="user")=>{var W,b,U,Se;if($e||F.isStreaming())return;let l=It();if(!l)return;De=new l;let z=(b=((W=e.voiceRecognition)!=null?W:{}).pauseDuration)!=null?b:2e3;De.continuous=!0,De.interimResults=!0,De.lang="en-US";let T=Z.value;De.onresult=_=>{let A="",w="";for(let K=0;K<_.results.length;K++){let Ie=_.results[K],fe=Ie[0].transcript;Ie.isFinal?A+=fe+" ":w=fe}let V=T+A+w;Z.value=V,lt&&clearTimeout(lt),(A||w)&&(lt=window.setTimeout(()=>{let K=Z.value.trim();K&&De&&$e&&(Xe(),Z.value="",F.sendMessage(K,{viaVoice:!0}))},z))},De.onerror=_=>{_.error!=="no-speech"&&Xe()},De.onend=()=>{if($e){let _=Z.value.trim();_&&_!==T.trim()&&(Z.value="",F.sendMessage(_,{viaVoice:!0})),Xe()}};try{if(De.start(),$e=!0,xe.active=!0,i!=="system"&&(xe.manuallyDeactivated=!1),Lt(i),it(),x){et={backgroundColor:x.style.backgroundColor,color:x.style.color,borderColor:x.style.borderColor};let _=(U=e.voiceRecognition)!=null?U:{},A=(Se=_.recordingBackgroundColor)!=null?Se:"#ef4444",w=_.recordingIconColor,V=_.recordingBorderColor;if(x.classList.add("tvw-voice-recording"),x.style.backgroundColor=A,w){x.style.color=w;let K=x.querySelector("svg");K&&K.setAttribute("stroke",w)}V&&(x.style.borderColor=V),x.setAttribute("aria-label","Stop voice recognition")}}catch{Xe("system")}},Xe=(i="user")=>{if($e){if($e=!1,lt&&(clearTimeout(lt),lt=null),De){try{De.stop()}catch{}De=null}if(xe.active=!1,Lt(i),it(),x){if(x.classList.remove("tvw-voice-recording"),et){x.style.backgroundColor=et.backgroundColor,x.style.color=et.color,x.style.borderColor=et.borderColor;let l=x.querySelector("svg");l&&l.setAttribute("stroke",et.color||"currentColor"),et=null}x.setAttribute("aria-label","Start voice recognition")}}},p=(i,l)=>{var fe,Je,te,tt,yt,dt,Pt;if(!(typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined")))return null;let z=c("div","tvw-send-button-wrapper"),T=c("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer");T.type="button",T.setAttribute("aria-label","Start voice recognition");let W=(fe=i==null?void 0:i.iconName)!=null?fe:"mic",b=(Je=l==null?void 0:l.size)!=null?Je:"40px",U=(te=i==null?void 0:i.iconSize)!=null?te:b,Se=parseFloat(U)||24,_=(tt=i==null?void 0:i.backgroundColor)!=null?tt:l==null?void 0:l.backgroundColor,A=(yt=i==null?void 0:i.iconColor)!=null?yt:l==null?void 0:l.textColor;T.style.width=U,T.style.height=U,T.style.minWidth=U,T.style.minHeight=U,T.style.fontSize="18px",T.style.lineHeight="1";let w=A||"currentColor",V=Le(W,Se,w,1.5);V?(T.appendChild(V),T.style.color=w):(T.textContent="\u{1F3A4}",T.style.color=w),_?T.style.backgroundColor=_:T.classList.add("tvw-bg-cw-primary"),A?T.style.color=A:!A&&!(l!=null&&l.textColor)&&T.classList.add("tvw-text-white"),i!=null&&i.borderWidth&&(T.style.borderWidth=i.borderWidth,T.style.borderStyle="solid"),i!=null&&i.borderColor&&(T.style.borderColor=i.borderColor),i!=null&&i.paddingX&&(T.style.paddingLeft=i.paddingX,T.style.paddingRight=i.paddingX),i!=null&&i.paddingY&&(T.style.paddingTop=i.paddingY,T.style.paddingBottom=i.paddingY),z.appendChild(T);let K=(dt=i==null?void 0:i.tooltipText)!=null?dt:"Start voice recognition";if(((Pt=i==null?void 0:i.showTooltip)!=null?Pt:!1)&&K){let Ut=c("div","tvw-send-button-tooltip");Ut.textContent=K,z.appendChild(Ut)}return{micButton:T,micButtonWrapper:z}},$=()=>{if($e){let i=Z.value.trim();xe.manuallyDeactivated=!0,it(),Xe("user"),i&&(Z.value="",F.sendMessage(i))}else xe.manuallyDeactivated=!1,it(),vt("user")};x&&(x.addEventListener("click",$),ze.push(()=>{Xe("system"),x&&x.removeEventListener("click",$)}));let G=s.on("assistant:complete",()=>{Wt&&(xe.active||xe.manuallyDeactivated||Wt==="assistant"&&!xe.lastUserMessageWasVoice||setTimeout(()=>{!xe.active&&!xe.manuallyDeactivated&&vt("auto")},600))});ze.push(G);let pe=()=>{_e(!B)},O=L?cn(e,pe):null;O&&t.appendChild(O.element),ht(),ut.render(e.suggestionChips,F,Z),Bt(),Tt(F.isStreaming()),ft(!0),zt();let be=()=>{var b,U;if(!L){ee.style.height="",ee.style.width="";return}let i=(U=(b=e==null?void 0:e.launcher)==null?void 0:b.width)!=null?U:e==null?void 0:e.launcherWidth,l=i!=null?i:"min(400px, calc(100vw - 24px))";ee.style.width=l,ee.style.maxWidth=l;let S=window.innerHeight,T=Math.max(200,S-64),W=Math.min(640,T);ee.style.height=`${W}px`};be(),window.addEventListener("resize",be),ze.push(()=>window.removeEventListener("resize",be)),gt=Y.scrollTop;let ce=()=>{let i=Y.scrollTop,l=Y.scrollHeight,S=Y.clientHeight,z=l-i-S,T=Math.abs(i-gt);if(gt=i,!Et&&!(T<=Vt)){if(!Oe&&z<mt){D=!1,Oe=!0;return}Oe&&z>mt&&(D=!0,ye=Date.now()+st,Oe=!1)}};Y.addEventListener("scroll",ce,{passive:!0}),ze.push(()=>Y.removeEventListener("scroll",ce)),ze.push(()=>{Ve&&cancelAnimationFrame(Ve)});let h=()=>{E&&(Qe&&(E.removeEventListener("click",Qe),Qe=null),L?(E.style.display="",Qe=()=>{B=!1,ht()},E.addEventListener("click",Qe)):E.style.display="none")};h(),(()=>{let{clearChatButton:i}=Ae;i&&i.addEventListener("click",()=>{F.clearMessages();try{localStorage.removeItem(Yt),e.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Yt}`)}catch(S){console.error("[AgentWidget] Failed to clear default localStorage:",S)}if(e.clearChatHistoryStorageKey&&e.clearChatHistoryStorageKey!==Yt)try{localStorage.removeItem(e.clearChatHistoryStorageKey),e.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${e.clearChatHistoryStorageKey}`)}catch(S){console.error("[AgentWidget] Failed to clear custom localStorage:",S)}let l=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(l),a!=null&&a.clear)try{let S=a.clear();S instanceof Promise&&S.catch(z=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",z)})}catch(S){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",S)}m={},q.syncFromMetadata()})})(),bt.addEventListener("submit",Rt),Z.addEventListener("keydown",Ht),ze.push(()=>{bt.removeEventListener("submit",Rt),Z.removeEventListener("keydown",Ht)}),ze.push(()=>{F.cancel()}),O&&ze.push(()=>{O==null||O.destroy()});let N={update(i){var Tn,An,Mn,En,Wn,Ln,kn,Bn,Rn,Hn,In,Pn,Nn,Fn,Dn,qn,zn,On,_n,$n,jn,Un,Vn,Kn,Xn,Yn,Jn,Gn,Zn,Qn,eo,to,no,oo,ro,so,io,ao,lo,co,uo,go,po,mo,fo,wo,ho,vo,yo;let l=e.toolCall;e={...e,...i},dn(t,e);let S=Zt.getForInstance(e.plugins);o.length=0,o.push(...S),L=(An=(Tn=e.launcher)==null?void 0:Tn.enabled)!=null?An:!0,Q=(En=(Mn=e.launcher)==null?void 0:Mn.autoExpand)!=null?En:!1,ke=(Ln=(Wn=e.features)==null?void 0:Wn.showReasoning)!=null?Ln:!0,re=(Bn=(kn=e.features)==null?void 0:kn.showToolCalls)!=null?Bn:!0,((Rn=e.launcher)==null?void 0:Rn.enabled)===!1&&O&&(O.destroy(),O=null),((Hn=e.launcher)==null?void 0:Hn.enabled)!==!1&&!O&&(O=cn(e,pe),t.appendChild(O.element)),O&&O.update(e),L!==y?L?_e(Q):(B=!0,ht()):Q!==R&&_e(Q),R=Q,y=L,be(),h(),JSON.stringify(i.toolCall)!==JSON.stringify(l)&&F&&wt(ne,F.getMessages(),g);let b=(In=e.launcher)!=null?In:{},U=(Pn=b.headerIconHidden)!=null?Pn:!1,Se=b.headerIconName,_=(Nn=b.headerIconSize)!=null?Nn:"48px";if(ve){let C=he.querySelector(".tvw-border-b-cw-divider"),We=C==null?void 0:C.querySelector(".tvw-flex-col");if(U)ve.style.display="none",C&&We&&!C.contains(We)&&C.insertBefore(We,C.firstChild);else{if(ve.style.display="",ve.style.height=_,ve.style.width=_,C&&We&&(C.contains(ve)?ve.nextSibling!==We&&(ve.remove(),C.insertBefore(ve,We)):C.insertBefore(ve,We)),Se){let qe=parseFloat(_)||24,ge=Le(Se,qe*.6,"#ffffff",2);ge?ve.replaceChildren(ge):ve.textContent=(Fn=b.agentIconText)!=null?Fn:"\u{1F4AC}"}else if(b.iconUrl){let qe=ve.querySelector("img");if(qe)qe.src=b.iconUrl,qe.style.height=_,qe.style.width=_;else{let ge=document.createElement("img");ge.src=b.iconUrl,ge.alt="",ge.className="tvw-rounded-xl tvw-object-cover",ge.style.height=_,ge.style.width=_,ve.replaceChildren(ge)}}else{let qe=ve.querySelector("svg"),ge=ve.querySelector("img");(qe||ge)&&ve.replaceChildren(),ve.textContent=(Dn=b.agentIconText)!=null?Dn:"\u{1F4AC}"}let Pe=ve.querySelector("img");Pe&&(Pe.style.height=_,Pe.style.width=_)}}if(E){let C=(qn=b.closeButtonSize)!=null?qn:"32px",We=(zn=b.closeButtonPlacement)!=null?zn:"inline";E.style.height=C,E.style.width=C;let Pe=We==="top-right",qe=E.classList.contains("tvw-absolute");if(Pe!==qe)if(E.remove(),Pe)E.className="tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50 tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none",he.style.position="relative",he.appendChild(E);else{E.className="tvw-ml-auto tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none";let oe=he.querySelector(".tvw-border-b-cw-divider");oe&&oe.appendChild(E)}if(b.closeButtonColor?(E.style.color=b.closeButtonColor,E.classList.remove("tvw-text-cw-muted")):(E.style.color="",E.classList.add("tvw-text-cw-muted")),b.closeButtonBackgroundColor?(E.style.backgroundColor=b.closeButtonBackgroundColor,E.classList.remove("hover:tvw-bg-gray-100")):(E.style.backgroundColor="",E.classList.add("hover:tvw-bg-gray-100")),b.closeButtonBorderWidth||b.closeButtonBorderColor){let oe=b.closeButtonBorderWidth||"0px",xt=b.closeButtonBorderColor||"transparent";E.style.border=`${oe} solid ${xt}`,E.classList.remove("tvw-border-none")}else E.style.border="",E.classList.add("tvw-border-none");b.closeButtonBorderRadius?(E.style.borderRadius=b.closeButtonBorderRadius,E.classList.remove("tvw-rounded-full")):(E.style.borderRadius="",E.classList.add("tvw-rounded-full")),b.closeButtonPaddingX?(E.style.paddingLeft=b.closeButtonPaddingX,E.style.paddingRight=b.closeButtonPaddingX):(E.style.paddingLeft="",E.style.paddingRight=""),b.closeButtonPaddingY?(E.style.paddingTop=b.closeButtonPaddingY,E.style.paddingBottom=b.closeButtonPaddingY):(E.style.paddingTop="",E.style.paddingBottom="");let ge=(On=b.closeButtonIconName)!=null?On:"x",Mt=(_n=b.closeButtonIconText)!=null?_n:"\xD7";E.innerHTML="";let Ge=Le(ge,"20px",b.closeButtonColor||"",2);Ge?E.appendChild(Ge):E.textContent=Mt;let{closeButtonWrapper:Ke}=Ae,Te=($n=b.closeButtonTooltipText)!=null?$n:"Close chat",Ze=(jn=b.closeButtonShowTooltip)!=null?jn:!0;if(E.setAttribute("aria-label",Te),Ke&&(Ke._cleanupTooltip&&(Ke._cleanupTooltip(),delete Ke._cleanupTooltip),Ze&&Te)){let oe=null,xt=()=>{if(oe||!E)return;oe=c("div","tvw-clear-chat-tooltip"),oe.textContent=Te;let xo=c("div");xo.className="tvw-clear-chat-tooltip-arrow",oe.appendChild(xo);let tn=E.getBoundingClientRect();oe.style.position="fixed",oe.style.left=`${tn.left+tn.width/2}px`,oe.style.top=`${tn.top-8}px`,oe.style.transform="translate(-50%, -100%)",document.body.appendChild(oe)},nt=()=>{oe&&oe.parentNode&&(oe.parentNode.removeChild(oe),oe=null)};Ke.addEventListener("mouseenter",xt),Ke.addEventListener("mouseleave",nt),E.addEventListener("focus",xt),E.addEventListener("blur",nt),Ke._cleanupTooltip=()=>{nt(),Ke&&(Ke.removeEventListener("mouseenter",xt),Ke.removeEventListener("mouseleave",nt)),E&&(E.removeEventListener("focus",xt),E.removeEventListener("blur",nt))}}}let{clearChatButton:A,clearChatButtonWrapper:w}=Ae;if(A){let C=(Un=b.clearChat)!=null?Un:{},We=(Vn=C.enabled)!=null?Vn:!0;if(w&&(w.style.display=We?"":"none"),We){let Pe=(Kn=C.size)!=null?Kn:"32px";A.style.height=Pe,A.style.width=Pe;let qe=(Xn=C.iconName)!=null?Xn:"refresh-cw",ge=(Yn=C.iconColor)!=null?Yn:"";A.innerHTML="";let Mt=Le(qe,"20px",ge||"",2);if(Mt&&A.appendChild(Mt),ge?(A.style.color=ge,A.classList.remove("tvw-text-cw-muted")):(A.style.color="",A.classList.add("tvw-text-cw-muted")),C.backgroundColor?(A.style.backgroundColor=C.backgroundColor,A.classList.remove("hover:tvw-bg-gray-100")):(A.style.backgroundColor="",A.classList.add("hover:tvw-bg-gray-100")),C.borderWidth||C.borderColor){let Te=C.borderWidth||"0px",Ze=C.borderColor||"transparent";A.style.border=`${Te} solid ${Ze}`,A.classList.remove("tvw-border-none")}else A.style.border="",A.classList.add("tvw-border-none");C.borderRadius?(A.style.borderRadius=C.borderRadius,A.classList.remove("tvw-rounded-full")):(A.style.borderRadius="",A.classList.add("tvw-rounded-full")),C.paddingX?(A.style.paddingLeft=C.paddingX,A.style.paddingRight=C.paddingX):(A.style.paddingLeft="",A.style.paddingRight=""),C.paddingY?(A.style.paddingTop=C.paddingY,A.style.paddingBottom=C.paddingY):(A.style.paddingTop="",A.style.paddingBottom="");let Ge=(Jn=C.tooltipText)!=null?Jn:"Clear chat",Ke=(Gn=C.showTooltip)!=null?Gn:!0;if(A.setAttribute("aria-label",Ge),w&&(w._cleanupTooltip&&(w._cleanupTooltip(),delete w._cleanupTooltip),Ke&&Ge)){let Te=null,Ze=()=>{if(Te||!A)return;Te=c("div","tvw-clear-chat-tooltip"),Te.textContent=Ge;let xt=c("div");xt.className="tvw-clear-chat-tooltip-arrow",Te.appendChild(xt);let nt=A.getBoundingClientRect();Te.style.position="fixed",Te.style.left=`${nt.left+nt.width/2}px`,Te.style.top=`${nt.top-8}px`,Te.style.transform="translate(-50%, -100%)",document.body.appendChild(Te)},oe=()=>{Te&&Te.parentNode&&(Te.parentNode.removeChild(Te),Te=null)};w.addEventListener("mouseenter",Ze),w.addEventListener("mouseleave",oe),A.addEventListener("focus",Ze),A.addEventListener("blur",oe),w._cleanupTooltip=()=>{oe(),w&&(w.removeEventListener("mouseenter",Ze),w.removeEventListener("mouseleave",oe)),A&&(A.removeEventListener("focus",Ze),A.removeEventListener("blur",oe))}}}}let V=e.actionParsers&&e.actionParsers.length?e.actionParsers:[Qt],K=e.actionHandlers&&e.actionHandlers.length?e.actionHandlers:[Xt.message,Xt.messageAndClick];q=en({parsers:V,handlers:K,getMetadata:P,updateMetadata:u,emit:s.emit,documentRef:typeof document!="undefined"?document:null}),g=No(e,q),F.updateConfig(e),wt(ne,F.getMessages(),g),ut.render(e.suggestionChips,F,Z),Bt(),Tt(F.isStreaming());let Ie=((Zn=e.voiceRecognition)==null?void 0:Zn.enabled)===!0,fe=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),Je=Ie&&fe;if(bt.classList.remove("tvw-gap-1","tvw-gap-3"),bt.classList.add(Je?"tvw-gap-1":"tvw-gap-3"),Ie&&fe)if(!x||!X){let C=p(e.voiceRecognition,e.sendButton);C&&(x=C.micButton,X=C.micButtonWrapper,bt.insertBefore(X,ot),x.addEventListener("click",$),x.disabled=F.isStreaming())}else{let C=(Qn=e.voiceRecognition)!=null?Qn:{},We=(eo=e.sendButton)!=null?eo:{},Pe=(to=C.iconName)!=null?to:"mic",qe=(no=We.size)!=null?no:"40px",ge=(oo=C.iconSize)!=null?oo:qe,Mt=parseFloat(ge)||24;x.style.width=ge,x.style.height=ge,x.style.minWidth=ge,x.style.minHeight=ge;let Ge=(so=(ro=C.iconColor)!=null?ro:We.textColor)!=null?so:"currentColor";x.innerHTML="";let Ke=Le(Pe,Mt,Ge,2);Ke?x.appendChild(Ke):x.textContent="\u{1F3A4}";let Te=(io=C.backgroundColor)!=null?io:We.backgroundColor;Te?(x.style.backgroundColor=Te,x.classList.remove("tvw-bg-cw-primary")):(x.style.backgroundColor="",x.classList.add("tvw-bg-cw-primary")),Ge?(x.style.color=Ge,x.classList.remove("tvw-text-white")):!Ge&&!We.textColor&&(x.style.color="",x.classList.add("tvw-text-white")),C.borderWidth?(x.style.borderWidth=C.borderWidth,x.style.borderStyle="solid"):(x.style.borderWidth="",x.style.borderStyle=""),C.borderColor?x.style.borderColor=C.borderColor:x.style.borderColor="",C.paddingX?(x.style.paddingLeft=C.paddingX,x.style.paddingRight=C.paddingX):(x.style.paddingLeft="",x.style.paddingRight=""),C.paddingY?(x.style.paddingTop=C.paddingY,x.style.paddingBottom=C.paddingY):(x.style.paddingTop="",x.style.paddingBottom="");let Ze=X==null?void 0:X.querySelector(".tvw-send-button-tooltip"),oe=(ao=C.tooltipText)!=null?ao:"Start voice recognition";if(((lo=C.showTooltip)!=null?lo:!1)&&oe)if(Ze)Ze.textContent=oe,Ze.style.display="";else{let nt=document.createElement("div");nt.className="tvw-send-button-tooltip",nt.textContent=oe,X==null||X.insertBefore(nt,x)}else Ze&&(Ze.style.display="none");X.style.display="",x.disabled=F.isStreaming()}else x&&X&&(X.style.display="none",$e&&Xe());let te=(co=e.sendButton)!=null?co:{},tt=(uo=te.useIcon)!=null?uo:!1,yt=(go=te.iconText)!=null?go:"\u2191",dt=te.iconName,Pt=(po=te.tooltipText)!=null?po:"Send message",Ut=(mo=te.showTooltip)!=null?mo:!1,Ee=(fo=te.size)!=null?fo:"40px",pt=te.backgroundColor,je=te.textColor;if(tt){if(M.style.width=Ee,M.style.height=Ee,M.style.minWidth=Ee,M.style.minHeight=Ee,M.style.fontSize="18px",M.style.lineHeight="1",M.innerHTML="",dt){let C=parseFloat(Ee)||24,We=je&&typeof je=="string"&&je.trim()?je.trim():"currentColor",Pe=Le(dt,C,We,2);Pe?(M.appendChild(Pe),M.style.color=We):(M.textContent=yt,je?M.style.color=je:M.classList.add("tvw-text-white"))}else M.textContent=yt,je?M.style.color=je:M.classList.add("tvw-text-white");M.className="tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer",pt?(M.style.backgroundColor=pt,M.classList.remove("tvw-bg-cw-primary")):M.classList.add("tvw-bg-cw-primary")}else M.textContent=(ho=(wo=e.copy)==null?void 0:wo.sendButtonLabel)!=null?ho:"Send",M.style.width="",M.style.height="",M.style.minWidth="",M.style.minHeight="",M.style.fontSize="",M.style.lineHeight="",M.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",pt?(M.style.backgroundColor=pt,M.classList.remove("tvw-bg-cw-accent")):M.classList.add("tvw-bg-cw-accent"),je?M.style.color=je:M.classList.add("tvw-text-white");te.borderWidth?(M.style.borderWidth=te.borderWidth,M.style.borderStyle="solid"):(M.style.borderWidth="",M.style.borderStyle=""),te.borderColor?M.style.borderColor=te.borderColor:M.style.borderColor="",te.paddingX?(M.style.paddingLeft=te.paddingX,M.style.paddingRight=te.paddingX):(M.style.paddingLeft="",M.style.paddingRight=""),te.paddingY?(M.style.paddingTop=te.paddingY,M.style.paddingBottom=te.paddingY):(M.style.paddingTop="",M.style.paddingBottom="");let Nt=ot==null?void 0:ot.querySelector(".tvw-send-button-tooltip");if(Ut&&Pt)if(Nt)Nt.textContent=Pt,Nt.style.display="";else{let C=document.createElement("div");C.className="tvw-send-button-tooltip",C.textContent=Pt,ot==null||ot.insertBefore(C,M)}else Nt&&(Nt.style.display="none");let At=(vo=e.statusIndicator)!=null?vo:{},qo=(yo=At.visible)!=null?yo:!0;if(qt.style.display=qo?"":"none",F){let C=F.getStatus(),We=Pe=>{var qe,ge,Mt,Ge;return Pe==="idle"?(qe=At.idleText)!=null?qe:Ue.idle:Pe==="connecting"?(ge=At.connectingText)!=null?ge:Ue.connecting:Pe==="connected"?(Mt=At.connectedText)!=null?Mt:Ue.connected:Pe==="error"?(Ge=At.errorText)!=null?Ge:Ue.error:Ue[Pe]};qt.textContent=We(C)}},open(){L&&_e(!0)},close(){L&&_e(!1)},toggle(){L&&_e(!B)},clearChat(){F.clearMessages();try{localStorage.removeItem(Yt),e.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Yt}`)}catch(l){console.error("[AgentWidget] Failed to clear default localStorage:",l)}if(e.clearChatHistoryStorageKey&&e.clearChatHistoryStorageKey!==Yt)try{localStorage.removeItem(e.clearChatHistoryStorageKey),e.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${e.clearChatHistoryStorageKey}`)}catch(l){console.error("[AgentWidget] Failed to clear custom localStorage:",l)}let i=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(i),a!=null&&a.clear)try{let l=a.clear();l instanceof Promise&&l.catch(S=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",S)})}catch(l){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",l)}m={},q.syncFromMetadata()},setMessage(i){return!Z||F.isStreaming()?!1:(!B&&L&&_e(!0),Z.value=i,Z.dispatchEvent(new Event("input",{bubbles:!0})),!0)},submitMessage(i){if(F.isStreaming())return!1;let l=(i==null?void 0:i.trim())||Z.value.trim();return l?(!B&&L&&_e(!0),Z.value="",F.sendMessage(l),!0):!1},startVoiceRecognition(){return $e||F.isStreaming()||!It()?!1:(!B&&L&&_e(!0),xe.manuallyDeactivated=!1,it(),vt("user"),!0)},stopVoiceRecognition(){return $e?(xe.manuallyDeactivated=!0,it(),Xe("user"),!0):!1},injectTestMessage(i){!B&&L&&_e(!0),F.injectTestEvent(i)},getMessages(){return F.getMessages()},getStatus(){return F.getStatus()},getPersistentMetadata(){return{...m}},updatePersistentMetadata(i){u(i)},on(i,l){return s.on(i,l)},off(i,l){s.off(i,l)},destroy(){ze.forEach(i=>i()),we.remove(),O==null||O.destroy(),Qe&&E.removeEventListener("click",Qe)}};if((((He=r==null?void 0:r.debugTools)!=null?He:!1)||!!e.debug)&&typeof window!="undefined"){let i=window.AgentWidgetBrowser,l={controller:N,getMessages:N.getMessages,getStatus:N.getStatus,getMetadata:N.getPersistentMetadata,updateMetadata:N.updatePersistentMetadata,clearHistory:()=>N.clearChat(),setVoiceActive:S=>S?N.startVoiceRecognition():N.stopVoiceRecognition()};window.AgentWidgetBrowser=l,ze.push(()=>{window.AgentWidgetBrowser===l&&(window.AgentWidgetBrowser=i)})}return N};var Sn={},er=t=>{if(typeof window=="undefined"||typeof document=="undefined")throw new Error("Chat widget can only be mounted in a browser environment");if(typeof t=="string"){let n=document.querySelector(t);if(!n)throw new Error(`Chat widget target "${t}" was not found`);return n}return t},tr=()=>{try{if(typeof Sn!="undefined"&&Sn.url)return new URL("../widget.css",Sn.url).href}catch{}return null},Fo=t=>{let n=tr(),r=()=>{if(!(t instanceof ShadowRoot)||t.querySelector("link[data-vanilla-agent]"))return;let e=document.head.querySelector("link[data-vanilla-agent]");if(!e)return;let o=e.cloneNode(!0);t.insertBefore(o,t.firstChild)};if(t instanceof ShadowRoot)if(n){let e=document.createElement("link");e.rel="stylesheet",e.href=n,e.setAttribute("data-vanilla-agent","true"),t.insertBefore(e,t.firstChild)}else r();else if(!document.head.querySelector("link[data-vanilla-agent]")&&n){let o=document.createElement("link");o.rel="stylesheet",o.href=n,o.setAttribute("data-vanilla-agent","true"),document.head.appendChild(o)}},Do=t=>{var v;let n=er(t.target),r=document.createElement("div");r.className="vanilla-agent-host",n.appendChild(r);let e=t.useShadowDom!==!1,o,s;if(e){let P=r.attachShadow({mode:"open"});s=P,o=document.createElement("div"),o.id="vanilla-agent-root",P.appendChild(o),Fo(P)}else s=r,o=document.createElement("div"),o.id="vanilla-agent-root",r.appendChild(o),Fo(r);let a=Cn(o,t.config,{debugTools:t.debugTools});(v=t.onReady)==null||v.call(t);let m={...a,host:r,destroy(){a.destroy(),r.remove(),t.windowKey&&typeof window!="undefined"&&delete window[t.windowKey]}};return t.windowKey&&typeof window!="undefined"&&(window[t.windowKey]=m),m};var nr=t=>{if(!t)return null;try{return JSON.parse(t)}catch(n){return typeof console!="undefined"&&console.error("[AgentWidget] Failed to parse stored state:",n),null}},or=t=>t.map(n=>({...n,streaming:!1})),rr=(t="vanilla-agent-state")=>{let n=()=>typeof window=="undefined"||!window.localStorage?null:window.localStorage;return{load:()=>{let r=n();return r?nr(r.getItem(t)):null},save:r=>{let e=n();if(e)try{let o={...r,messages:r.messages?or(r.messages):void 0};e.setItem(t,JSON.stringify(o))}catch(o){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",o)}},clear:()=>{let r=n();if(r)try{r.removeItem(t)}catch(e){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear stored state:",e)}}}};var ms=Do;export{Kt as AgentWidgetClient,Jt as AgentWidgetSession,ct as DEFAULT_WIDGET_CONFIG,en as createActionManager,Cn as createAgentExperience,Vo as createFlexibleJsonStreamParser,an as createJsonStreamParser,rr as createLocalStorageAdapter,rn as createPlainTextParser,sn as createRegexJsonParser,ln as createXmlParser,ms as default,Xt as defaultActionHandlers,Qt as defaultJsonActionParser,_o as directivePostprocessor,nn as escapeHtml,Do as initAgentWidget,So as markdownPostprocessor,yn as mergeWithDefaults,Zt as pluginRegistry};
|
|
14
|
+
`,r.addEventListener("click",n);let e=s=>{var G,I,x,M,m,ke,ne,Fe,Be,me;let a=(G=s.launcher)!=null?G:{},c=r.querySelector("[data-role='launcher-title']");c&&(c.textContent=(I=a.title)!=null?I:"Chat Assistant");let b=r.querySelector("[data-role='launcher-subtitle']");b&&(b.textContent=(x=a.subtitle)!=null?x:"Get answers fast");let z=r.querySelector(".tvw-flex-col");z&&(a.textHidden?z.style.display="none":z.style.display="");let g=r.querySelector("[data-role='launcher-icon']");if(g)if(a.agentIconHidden)g.style.display="none";else{let Z=(M=a.agentIconSize)!=null?M:"40px";if(g.style.height=Z,g.style.width=Z,g.innerHTML="",a.agentIconName){let Se=parseFloat(Z)||24,fe=Ee(a.agentIconName,Se*.6,"#ffffff",2);fe?(g.appendChild(fe),g.style.display=""):(g.textContent=(m=a.agentIconText)!=null?m:"\u{1F4AC}",g.style.display="")}else a.iconUrl?g.style.display="none":(g.textContent=(ke=a.agentIconText)!=null?ke:"\u{1F4AC}",g.style.display="")}let F=r.querySelector("[data-role='launcher-image']");if(F){let Z=(ne=a.agentIconSize)!=null?ne:"40px";F.style.height=Z,F.style.width=Z,a.iconUrl&&!a.agentIconName&&!a.agentIconHidden?(F.src=a.iconUrl,F.style.display="block"):F.style.display="none"}let H=r.querySelector("[data-role='launcher-call-to-action-icon']");if(H){let Z=(Fe=a.callToActionIconSize)!=null?Fe:"32px";H.style.height=Z,H.style.width=Z,a.callToActionIconBackgroundColor?(H.style.backgroundColor=a.callToActionIconBackgroundColor,H.classList.remove("tvw-bg-cw-primary")):(H.style.backgroundColor="",H.classList.add("tvw-bg-cw-primary"));let Se=0;if(a.callToActionIconPadding?(H.style.boxSizing="border-box",H.style.padding=a.callToActionIconPadding,Se=(parseFloat(a.callToActionIconPadding)||0)*2):(H.style.boxSizing="",H.style.padding=""),a.callToActionIconHidden)H.style.display="none";else if(H.style.display="",H.innerHTML="",a.callToActionIconName){let fe=parseFloat(Z)||24,K=Math.max(fe-Se,8),Q=Ee(a.callToActionIconName,K,"currentColor",2);Q?H.appendChild(Q):H.textContent=(Be=a.callToActionIconText)!=null?Be:"\u2197"}else H.textContent=(me=a.callToActionIconText)!=null?me:"\u2197"}let B=a.position&&Rt[a.position]?Rt[a.position]:Rt["bottom-right"],y="tvw-fixed tvw-flex tvw-items-center tvw-gap-3 tvw-rounded-launcher tvw-bg-cw-surface tvw-py-2.5 tvw-pl-3 tvw-pr-3 tvw-shadow-lg tvw-border tvw-border-gray-200 tvw-transition hover:tvw-translate-y-[-2px] tvw-cursor-pointer tvw-z-50";r.className=`${y} ${B}`},o=()=>{r.removeEventListener("click",n),r.remove()};return t&&e(t),{element:r,update:e,destroy:o}};var Ho=t=>{var b,z,g,F,H;if(!((z=(b=t==null?void 0:t.launcher)==null?void 0:b.enabled)!=null?z:!0)){let B=u("div","tvw-relative tvw-w-full tvw-h-full"),y=u("div","tvw-relative tvw-w-full tvw-h-full tvw-min-h-[360px]");return B.appendChild(y),{wrapper:B,panel:y}}let r=(g=t==null?void 0:t.launcher)!=null?g:{},e=r.position&&Rt[r.position]?Rt[r.position]:Rt["bottom-right"],o=u("div",`tvw-fixed ${e} tvw-z-50 tvw-transition`),s=u("div","tvw-relative tvw-min-h-[320px]"),a=(H=(F=t==null?void 0:t.launcher)==null?void 0:F.width)!=null?H:t==null?void 0:t.launcherWidth,c=a!=null?a:"min(400px, calc(100vw - 24px))";return s.style.width=c,s.style.maxWidth=c,o.appendChild(s),{wrapper:o,panel:s}},Io=(t,n=!0)=>{var xt,re,Tt,At,it,Dt,qt,Mt,ft,at,zt,_t,Ot,wt,ht,Oe,Ct,Wt,Et,Lt,De,$e,lt,Qe,kt,f,_,X,ce,Ae,Le,D,v,je,$,h,d,P,ae,le,ue,Re,Me,de,j,se,pe,ve,He,gt,Yt,i,l,C,N,W,k,T,V,ye;let r=u("div","tvw-flex tvw-h-full tvw-w-full tvw-flex-col tvw-bg-cw-surface tvw-text-cw-primary tvw-rounded-2xl tvw-overflow-hidden tvw-shadow-2xl tvw-border tvw-border-cw-border"),e=u("div","tvw-flex tvw-items-center tvw-gap-3 tvw-bg-cw-surface tvw-px-6 tvw-py-5 tvw-border-b-cw-divider"),o=(xt=t==null?void 0:t.launcher)!=null?xt:{},s=(re=o.headerIconSize)!=null?re:"48px",a=(Tt=o.closeButtonSize)!=null?Tt:"32px",c=(At=o.closeButtonPlacement)!=null?At:"inline",b=(it=o.headerIconHidden)!=null?it:!1,z=o.headerIconName,g=u("div","tvw-flex tvw-items-center tvw-justify-center tvw-rounded-xl tvw-bg-cw-primary tvw-text-white tvw-text-xl");if(g.style.height=s,g.style.width=s,!b)if(z){let p=parseFloat(s)||24,w=Ee(z,p*.6,"#ffffff",2);w?g.replaceChildren(w):g.textContent=(qt=(Dt=t==null?void 0:t.launcher)==null?void 0:Dt.agentIconText)!=null?qt:"\u{1F4AC}"}else if((Mt=t==null?void 0:t.launcher)!=null&&Mt.iconUrl){let p=u("img");p.src=t.launcher.iconUrl,p.alt="",p.className="tvw-rounded-xl tvw-object-cover",p.style.height=s,p.style.width=s,g.replaceChildren(p)}else g.textContent=(at=(ft=t==null?void 0:t.launcher)==null?void 0:ft.agentIconText)!=null?at:"\u{1F4AC}";let F=u("div","tvw-flex tvw-flex-col"),H=u("span","tvw-text-base tvw-font-semibold");H.textContent=(_t=(zt=t==null?void 0:t.launcher)==null?void 0:zt.title)!=null?_t:"Chat Assistant";let B=u("span","tvw-text-xs tvw-text-cw-muted");B.textContent=(wt=(Ot=t==null?void 0:t.launcher)==null?void 0:Ot.subtitle)!=null?wt:"Here to help you get answers fast",F.append(H,B),b?e.append(F):e.append(g,F);let y=(ht=o.clearChat)!=null?ht:{},G=(Oe=y.enabled)!=null?Oe:!0,I=null,x=null;if(G){let p=(Ct=y.size)!=null?Ct:"32px",w=(Wt=y.iconName)!=null?Wt:"refresh-cw",q=(Et=y.iconColor)!=null?Et:"",be=(Lt=y.backgroundColor)!=null?Lt:"",Y=(De=y.borderWidth)!=null?De:"",qe=($e=y.borderColor)!=null?$e:"",Pe=(lt=y.borderRadius)!=null?lt:"",Xe=(Qe=y.paddingX)!=null?Qe:"",ee=(kt=y.paddingY)!=null?kt:"",et=(f=y.tooltipText)!=null?f:"Clear chat",$t=(_=y.showTooltip)!=null?_:!0;x=u("div","tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper"),I=u("button","tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none"),I.style.height=p,I.style.width=p,I.type="button",I.setAttribute("aria-label",et);let Bt=Ee(w,"20px",q||"",2);if(Bt&&I.appendChild(Bt),q&&(I.style.color=q,I.classList.remove("tvw-text-cw-muted")),be&&(I.style.backgroundColor=be,I.classList.remove("hover:tvw-bg-gray-100")),Y||qe){let xe=Y||"0px",pt=qe||"transparent";I.style.border=`${xe} solid ${pt}`,I.classList.remove("tvw-border-none")}if(Pe&&(I.style.borderRadius=Pe,I.classList.remove("tvw-rounded-full")),Xe?(I.style.paddingLeft=Xe,I.style.paddingRight=Xe):(I.style.paddingLeft="",I.style.paddingRight=""),ee?(I.style.paddingTop=ee,I.style.paddingBottom=ee):(I.style.paddingTop="",I.style.paddingBottom=""),x.appendChild(I),$t&&et&&I&&x){let xe=null,pt=()=>{if(xe||!I)return;xe=u("div","tvw-clear-chat-tooltip"),xe.textContent=et;let jt=u("div");jt.className="tvw-clear-chat-tooltip-arrow",xe.appendChild(jt);let Ye=I.getBoundingClientRect();xe.style.position="fixed",xe.style.left=`${Ye.left+Ye.width/2}px`,xe.style.top=`${Ye.top-8}px`,xe.style.transform="translate(-50%, -100%)",document.body.appendChild(xe)},mt=()=>{xe&&xe.parentNode&&(xe.parentNode.removeChild(xe),xe=null)};x.addEventListener("mouseenter",pt),x.addEventListener("mouseleave",mt),I.addEventListener("focus",pt),I.addEventListener("blur",mt),x._cleanupTooltip=()=>{mt(),x&&(x.removeEventListener("mouseenter",pt),x.removeEventListener("mouseleave",mt)),I&&(I.removeEventListener("focus",pt),I.removeEventListener("blur",mt))}}e.appendChild(x)}let M=u("div",c==="top-right"?"tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50":G?"":"tvw-ml-auto"),m=u("button","tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none");m.style.height=a,m.style.width=a,m.type="button";let ke=(X=o.closeButtonTooltipText)!=null?X:"Close chat",ne=(ce=o.closeButtonShowTooltip)!=null?ce:!0;m.setAttribute("aria-label",ke),m.style.display=n?"":"none";let Fe=(Ae=o.closeButtonIconName)!=null?Ae:"x",Be=(Le=o.closeButtonIconText)!=null?Le:"\xD7",me=Ee(Fe,"20px",o.closeButtonColor||"",2);if(me?m.appendChild(me):m.textContent=Be,o.closeButtonColor?(m.style.color=o.closeButtonColor,m.classList.remove("tvw-text-cw-muted")):(m.style.color="",m.classList.add("tvw-text-cw-muted")),o.closeButtonBackgroundColor?(m.style.backgroundColor=o.closeButtonBackgroundColor,m.classList.remove("hover:tvw-bg-gray-100")):(m.style.backgroundColor="",m.classList.add("hover:tvw-bg-gray-100")),o.closeButtonBorderWidth||o.closeButtonBorderColor){let p=o.closeButtonBorderWidth||"0px",w=o.closeButtonBorderColor||"transparent";m.style.border=`${p} solid ${w}`,m.classList.remove("tvw-border-none")}else m.style.border="",m.classList.add("tvw-border-none");if(o.closeButtonBorderRadius?(m.style.borderRadius=o.closeButtonBorderRadius,m.classList.remove("tvw-rounded-full")):(m.style.borderRadius="",m.classList.add("tvw-rounded-full")),o.closeButtonPaddingX?(m.style.paddingLeft=o.closeButtonPaddingX,m.style.paddingRight=o.closeButtonPaddingX):(m.style.paddingLeft="",m.style.paddingRight=""),o.closeButtonPaddingY?(m.style.paddingTop=o.closeButtonPaddingY,m.style.paddingBottom=o.closeButtonPaddingY):(m.style.paddingTop="",m.style.paddingBottom=""),M.appendChild(m),ne&&ke){let p=null,w=()=>{if(p)return;p=u("div","tvw-clear-chat-tooltip"),p.textContent=ke;let be=u("div");be.className="tvw-clear-chat-tooltip-arrow",p.appendChild(be);let Y=m.getBoundingClientRect();p.style.position="fixed",p.style.left=`${Y.left+Y.width/2}px`,p.style.top=`${Y.top-8}px`,p.style.transform="translate(-50%, -100%)",document.body.appendChild(p)},q=()=>{p&&p.parentNode&&(p.parentNode.removeChild(p),p=null)};M.addEventListener("mouseenter",w),M.addEventListener("mouseleave",q),m.addEventListener("focus",w),m.addEventListener("blur",q),M._cleanupTooltip=()=>{q(),M.removeEventListener("mouseenter",w),M.removeEventListener("mouseleave",q),m.removeEventListener("focus",w),m.removeEventListener("blur",q)}}c==="top-right"?(r.style.position="relative",r.appendChild(M)):e.appendChild(M);let Z=u("div","tvw-flex tvw-flex-1 tvw-min-h-0 tvw-flex-col tvw-gap-6 tvw-overflow-y-auto tvw-bg-cw-container tvw-px-6 tvw-py-6");Z.id="vanilla-agent-scroll-container";let Se=u("div","tvw-rounded-2xl tvw-bg-cw-surface tvw-p-6 tvw-shadow-sm"),fe=u("h2","tvw-text-lg tvw-font-semibold tvw-text-cw-primary");fe.textContent=(v=(D=t==null?void 0:t.copy)==null?void 0:D.welcomeTitle)!=null?v:"Hello \u{1F44B}";let K=u("p","tvw-mt-2 tvw-text-sm tvw-text-cw-muted");K.textContent=($=(je=t==null?void 0:t.copy)==null?void 0:je.welcomeSubtitle)!=null?$:"Ask anything about your account or products.",Se.append(fe,K);let Q=u("div","tvw-flex tvw-flex-col tvw-gap-3");Z.append(Se,Q);let Ht=u("div","tvw-border-t-cw-divider tvw-bg-cw-surface tvw-px-6 tvw-py-4"),J=u("div","tvw-mb-3 tvw-flex tvw-flex-wrap tvw-gap-2"),E=((h=t==null?void 0:t.voiceRecognition)==null?void 0:h.enabled)===!0,ot=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),rt=u("form",`tvw-flex tvw-items-end ${E&&ot?"tvw-gap-1":"tvw-gap-3"} tvw-rounded-2xl tvw-border tvw-border-gray-200 tvw-bg-cw-input-background tvw-px-4 tvw-py-3`);rt.style.outline="none";let oe=u("textarea");oe.placeholder=(P=(d=t==null?void 0:t.copy)==null?void 0:d.inputPlaceholder)!=null?P:"Type your message\u2026",oe.className="tvw-min-h-[48px] tvw-flex-1 tvw-resize-none tvw-border-none tvw-bg-transparent tvw-text-sm tvw-text-cw-primary focus:tvw-outline-none focus:tvw-border-none",oe.rows=1;let L=(le=(ae=t==null?void 0:t.theme)==null?void 0:ae.inputFontFamily)!=null?le:"sans-serif",we=(Re=(ue=t==null?void 0:t.theme)==null?void 0:ue.inputFontWeight)!=null?Re:"400",Pt=p=>{switch(p){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'}};oe.style.fontFamily=Pt(L),oe.style.fontWeight=we,oe.style.border="none",oe.style.outline="none",oe.style.borderWidth="0",oe.style.borderStyle="none",oe.style.borderColor="transparent",oe.addEventListener("focus",()=>{oe.style.border="none",oe.style.outline="none",oe.style.borderWidth="0",oe.style.borderStyle="none",oe.style.borderColor="transparent",oe.style.boxShadow="none"}),oe.addEventListener("blur",()=>{oe.style.border="none",oe.style.outline="none"});let he=(Me=t==null?void 0:t.sendButton)!=null?Me:{},S=(de=he.useIcon)!=null?de:!1,Ne=(j=he.iconText)!=null?j:"\u2191",_e=he.iconName,dt=(se=he.tooltipText)!=null?se:"Send message",st=(pe=he.showTooltip)!=null?pe:!1,R=(ve=he.size)!=null?ve:"40px",ct=he.backgroundColor,Te=he.textColor,Ze=u("div","tvw-send-button-wrapper"),O=u("button",S?"tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer":"tvw-rounded-button tvw-bg-cw-accent tvw-px-4 tvw-py-2 tvw-text-sm tvw-font-semibold disabled:tvw-opacity-50 tvw-cursor-pointer");if(O.type="submit",S){if(O.style.width=R,O.style.height=R,O.style.minWidth=R,O.style.minHeight=R,O.style.fontSize="18px",O.style.lineHeight="1",O.innerHTML="",_e){let p=parseFloat(R)||24,w=Te&&typeof Te=="string"&&Te.trim()?Te.trim():"currentColor",q=Ee(_e,p,w,2);q?(O.appendChild(q),O.style.color=w):(O.textContent=Ne,Te?O.style.color=Te:O.classList.add("tvw-text-white"))}else O.textContent=Ne,Te?O.style.color=Te:O.classList.add("tvw-text-white");ct?O.style.backgroundColor=ct:O.classList.add("tvw-bg-cw-primary")}else O.textContent=(gt=(He=t==null?void 0:t.copy)==null?void 0:He.sendButtonLabel)!=null?gt:"Send",Te?O.style.color=Te:O.classList.add("tvw-text-white");if(he.borderWidth&&(O.style.borderWidth=he.borderWidth,O.style.borderStyle="solid"),he.borderColor&&(O.style.borderColor=he.borderColor),he.paddingX?(O.style.paddingLeft=he.paddingX,O.style.paddingRight=he.paddingX):(O.style.paddingLeft="",O.style.paddingRight=""),he.paddingY?(O.style.paddingTop=he.paddingY,O.style.paddingBottom=he.paddingY):(O.style.paddingTop="",O.style.paddingBottom=""),st&&dt){let p=u("div","tvw-send-button-tooltip");p.textContent=dt,Ze.appendChild(p)}Ze.appendChild(O);let ie=(Yt=t==null?void 0:t.voiceRecognition)!=null?Yt:{},ut=ie.enabled===!0,U=null,Ke=null,Vt=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined");if(ut&&Vt){Ke=u("div","tvw-send-button-wrapper"),U=u("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer"),U.type="button",U.setAttribute("aria-label","Start voice recognition");let p=(i=ie.iconName)!=null?i:"mic",w=(l=ie.iconSize)!=null?l:R,q=parseFloat(w)||24,be=(C=ie.backgroundColor)!=null?C:ct,Y=(N=ie.iconColor)!=null?N:Te;U.style.width=w,U.style.height=w,U.style.minWidth=w,U.style.minHeight=w,U.style.fontSize="18px",U.style.lineHeight="1";let qe=Y||"currentColor",Pe=Ee(p,q,qe,1.5);Pe?(U.appendChild(Pe),U.style.color=qe):(U.textContent="\u{1F3A4}",U.style.color=qe),be?U.style.backgroundColor=be:U.classList.add("tvw-bg-cw-primary"),Y?U.style.color=Y:!Y&&!Te&&U.classList.add("tvw-text-white"),ie.borderWidth&&(U.style.borderWidth=ie.borderWidth,U.style.borderStyle="solid"),ie.borderColor&&(U.style.borderColor=ie.borderColor),ie.paddingX&&(U.style.paddingLeft=ie.paddingX,U.style.paddingRight=ie.paddingX),ie.paddingY&&(U.style.paddingTop=ie.paddingY,U.style.paddingBottom=ie.paddingY),Ke.appendChild(U);let Xe=(W=ie.tooltipText)!=null?W:"Start voice recognition";if(((k=ie.showTooltip)!=null?k:!1)&&Xe){let et=u("div","tvw-send-button-tooltip");et.textContent=Xe,Ke.appendChild(et)}}rt.addEventListener("click",p=>{p.target!==O&&p.target!==Ze&&p.target!==U&&p.target!==Ke&&oe.focus()}),rt.append(oe),Ke&&rt.append(Ke),rt.append(Ze);let bt=u("div","tvw-mt-2 tvw-text-right tvw-text-xs tvw-text-cw-muted"),Ft=(T=t==null?void 0:t.statusIndicator)!=null?T:{},Nt=(V=Ft.visible)!=null?V:!0;return bt.style.display=Nt?"":"none",bt.textContent=(ye=Ft.idleText)!=null?ye:"Online",Ht.append(J,rt,bt),r.append(e,Z,Ht),{container:r,body:Z,messagesWrapper:Q,suggestions:J,textarea:oe,sendButton:O,sendButtonWrapper:Ze,micButton:U,micButtonWrapper:Ke,composerForm:rt,statusText:bt,introTitle:fe,introSubtitle:K,closeButton:m,closeButtonWrapper:M,clearChatButton:I,clearChatButtonWrapper:x,iconHolder:g,headerTitle:H,headerSubtitle:B}};var pn=()=>{let t=document.createElement("div");t.className="tvw-flex tvw-items-center tvw-space-x-1 tvw-h-5 tvw-mt-2";let n=document.createElement("div");n.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",n.style.animationDelay="0ms";let r=document.createElement("div");r.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",r.style.animationDelay="250ms";let e=document.createElement("div");e.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",e.style.animationDelay="500ms";let o=document.createElement("span");return o.className="tvw-sr-only",o.textContent="Loading",t.appendChild(n),t.appendChild(r),t.appendChild(e),t.appendChild(o),t},mn=(t,n)=>{let r=["vanilla-message-bubble","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-text-sm","tvw-leading-relaxed","tvw-shadow-sm"];t.role==="user"?r.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-bg-cw-accent","tvw-text-white","tvw-px-5","tvw-py-3"):r.push("vanilla-message-assistant-bubble","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-px-5","tvw-py-3");let e=u("div",r.join(" ")),o=document.createElement("div");if(o.innerHTML=n({text:t.content,message:t,streaming:!!t.streaming,raw:t.rawContent}),e.appendChild(o),t.streaming&&t.role==="assistant"&&(!t.content||!t.content.trim())){let s=pn();e.appendChild(s)}return e};var fn=new Set,wn=t=>{let n=t.reasoning,r=u("div",["vanilla-message-bubble","vanilla-reasoning-bubble","tvw-w-full","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-shadow-sm","tvw-overflow-hidden","tvw-px-0","tvw-py-0"].join(" "));if(!n)return r;let e=fn.has(t.id),o=u("button","tvw-flex tvw-w-full tvw-items-center tvw-justify-between tvw-gap-3 tvw-bg-transparent tvw-px-4 tvw-py-3 tvw-text-left tvw-cursor-pointer tvw-border-none");o.type="button",o.setAttribute("aria-expanded",e?"true":"false");let s=u("div","tvw-flex tvw-flex-col tvw-text-left"),a=u("span","tvw-text-xs tvw-text-cw-primary");a.textContent="Thinking...",s.appendChild(a);let c=u("span","tvw-text-xs tvw-text-cw-primary");c.textContent=Bo(n),s.appendChild(c),n.status==="complete"?a.style.display="none":a.style.display="";let b=u("div","tvw-flex tvw-items-center"),g=Ee(e?"chevron-up":"chevron-down",16,"currentColor",2);g?b.appendChild(g):b.textContent=e?"Hide":"Show";let F=u("div","tvw-flex tvw-items-center tvw-ml-auto");F.append(b),o.append(s,F);let H=u("div","tvw-border-t tvw-border-gray-200 tvw-bg-gray-50 tvw-px-4 tvw-py-3");H.style.display=e?"":"none";let B=n.chunks.join(""),y=u("div","tvw-whitespace-pre-wrap tvw-text-xs tvw-leading-snug tvw-text-cw-muted");y.textContent=B||(n.status==="complete"?"No additional context was shared.":"Waiting for details\u2026"),H.appendChild(y);let G=()=>{o.setAttribute("aria-expanded",e?"true":"false"),b.innerHTML="";let M=Ee(e?"chevron-up":"chevron-down",16,"currentColor",2);M?b.appendChild(M):b.textContent=e?"Hide":"Show",H.style.display=e?"":"none"},I=()=>{e=!e,e?fn.add(t.id):fn.delete(t.id),G()};return o.addEventListener("pointerdown",x=>{x.preventDefault(),I()}),o.addEventListener("keydown",x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),I())}),G(),r.append(o,H),r};var hn=new Set,vn=(t,n)=>{var I;let r=t.toolCall,e=(I=n==null?void 0:n.toolCall)!=null?I:{},o=u("div",["vanilla-message-bubble","vanilla-tool-bubble","tvw-w-full","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-text-cw-primary","tvw-shadow-sm","tvw-overflow-hidden","tvw-px-0","tvw-py-0"].join(" "));if(e.backgroundColor&&(o.style.backgroundColor=e.backgroundColor),e.borderColor&&(o.style.borderColor=e.borderColor),e.borderWidth&&(o.style.borderWidth=e.borderWidth),e.borderRadius&&(o.style.borderRadius=e.borderRadius),!r)return o;let s=hn.has(t.id),a=u("button","tvw-flex tvw-w-full tvw-items-center tvw-justify-between tvw-gap-3 tvw-bg-transparent tvw-px-4 tvw-py-3 tvw-text-left tvw-cursor-pointer tvw-border-none");a.type="button",a.setAttribute("aria-expanded",s?"true":"false"),e.headerBackgroundColor&&(a.style.backgroundColor=e.headerBackgroundColor),e.headerPaddingX&&(a.style.paddingLeft=e.headerPaddingX,a.style.paddingRight=e.headerPaddingX),e.headerPaddingY&&(a.style.paddingTop=e.headerPaddingY,a.style.paddingBottom=e.headerPaddingY);let c=u("div","tvw-flex tvw-flex-col tvw-text-left"),b=u("span","tvw-text-xs tvw-text-cw-primary");e.headerTextColor&&(b.style.color=e.headerTextColor),b.textContent=Ro(r),c.appendChild(b);let z=u("div","tvw-flex tvw-items-center"),g=e.toggleTextColor||e.headerTextColor||"currentColor",F=Ee(s?"chevron-up":"chevron-down",16,g,2);F?z.appendChild(F):z.textContent=s?"Hide":"Show";let H=u("div","tvw-flex tvw-items-center tvw-gap-2 tvw-ml-auto");H.append(z),a.append(c,H);let B=u("div","tvw-border-t tvw-border-gray-200 tvw-bg-gray-50 tvw-space-y-3 tvw-px-4 tvw-py-3");if(B.style.display=s?"":"none",e.contentBackgroundColor&&(B.style.backgroundColor=e.contentBackgroundColor),e.contentTextColor&&(B.style.color=e.contentTextColor),e.contentPaddingX&&(B.style.paddingLeft=e.contentPaddingX,B.style.paddingRight=e.contentPaddingX),e.contentPaddingY&&(B.style.paddingTop=e.contentPaddingY,B.style.paddingBottom=e.contentPaddingY),r.name){let x=u("div","tvw-text-xs tvw-text-cw-muted tvw-italic");e.contentTextColor?x.style.color=e.contentTextColor:e.headerTextColor&&(x.style.color=e.headerTextColor),x.textContent=r.name,B.appendChild(x)}if(r.args!==void 0){let x=u("div","tvw-space-y-1"),M=u("div","tvw-text-xs tvw-text-cw-muted");e.labelTextColor&&(M.style.color=e.labelTextColor),M.textContent="Arguments";let m=u("pre","tvw-max-h-48 tvw-overflow-auto tvw-whitespace-pre-wrap tvw-rounded-lg tvw-border tvw-border-gray-100 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-xs tvw-text-cw-primary");m.style.fontSize="0.75rem",m.style.lineHeight="1rem",e.codeBlockBackgroundColor&&(m.style.backgroundColor=e.codeBlockBackgroundColor),e.codeBlockBorderColor&&(m.style.borderColor=e.codeBlockBorderColor),e.codeBlockTextColor&&(m.style.color=e.codeBlockTextColor),m.textContent=sn(r.args),x.append(M,m),B.appendChild(x)}if(r.chunks&&r.chunks.length){let x=u("div","tvw-space-y-1"),M=u("div","tvw-text-xs tvw-text-cw-muted");e.labelTextColor&&(M.style.color=e.labelTextColor),M.textContent="Activity";let m=u("pre","tvw-max-h-48 tvw-overflow-auto tvw-whitespace-pre-wrap tvw-rounded-lg tvw-border tvw-border-gray-100 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-xs tvw-text-cw-primary");m.style.fontSize="0.75rem",m.style.lineHeight="1rem",e.codeBlockBackgroundColor&&(m.style.backgroundColor=e.codeBlockBackgroundColor),e.codeBlockBorderColor&&(m.style.borderColor=e.codeBlockBorderColor),e.codeBlockTextColor&&(m.style.color=e.codeBlockTextColor),m.textContent=r.chunks.join(`
|
|
15
|
+
`),x.append(M,m),B.appendChild(x)}if(r.status==="complete"&&r.result!==void 0){let x=u("div","tvw-space-y-1"),M=u("div","tvw-text-xs tvw-text-cw-muted");e.labelTextColor&&(M.style.color=e.labelTextColor),M.textContent="Result";let m=u("pre","tvw-max-h-48 tvw-overflow-auto tvw-whitespace-pre-wrap tvw-rounded-lg tvw-border tvw-border-gray-100 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-xs tvw-text-cw-primary");m.style.fontSize="0.75rem",m.style.lineHeight="1rem",e.codeBlockBackgroundColor&&(m.style.backgroundColor=e.codeBlockBackgroundColor),e.codeBlockBorderColor&&(m.style.borderColor=e.codeBlockBorderColor),e.codeBlockTextColor&&(m.style.color=e.codeBlockTextColor),m.textContent=sn(r.result),x.append(M,m),B.appendChild(x)}if(r.status==="complete"&&typeof r.duration=="number"){let x=u("div","tvw-text-xs tvw-text-cw-muted");e.contentTextColor&&(x.style.color=e.contentTextColor),x.textContent=`Duration: ${r.duration}ms`,B.appendChild(x)}let y=()=>{a.setAttribute("aria-expanded",s?"true":"false"),z.innerHTML="";let x=e.toggleTextColor||e.headerTextColor||"currentColor",M=Ee(s?"chevron-up":"chevron-down",16,x,2);M?z.appendChild(M):z.textContent=s?"Hide":"Show",B.style.display=s?"":"none"},G=()=>{s=!s,s?hn.add(t.id):hn.delete(t.id),y()};return a.addEventListener("pointerdown",x=>{x.preventDefault(),G()}),a.addEventListener("keydown",x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),G())}),y(),o.append(a,B),o};var Po=t=>{let n=[];return{buttons:n,render:(e,o,s,a,c)=>{if(t.innerHTML="",n.length=0,!e||!e.length||(a!=null?a:o?o.getMessages():[]).some(B=>B.role==="user"))return;let g=document.createDocumentFragment(),F=o?o.isStreaming():!1,H=B=>{switch(B){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'}};e.forEach(B=>{let y=u("button","tvw-rounded-button tvw-bg-cw-surface tvw-px-3 tvw-py-1.5 tvw-text-xs tvw-font-medium tvw-text-cw-muted hover:tvw-opacity-90 tvw-cursor-pointer tvw-border tvw-border-gray-200");y.type="button",y.textContent=B,y.disabled=F,c!=null&&c.fontFamily&&(y.style.fontFamily=H(c.fontFamily)),c!=null&&c.fontWeight&&(y.style.fontWeight=c.fontWeight),c!=null&&c.paddingX&&(y.style.paddingLeft=c.paddingX,y.style.paddingRight=c.paddingX),c!=null&&c.paddingY&&(y.style.paddingTop=c.paddingY,y.style.paddingBottom=c.paddingY),y.addEventListener("click",()=>{!o||o.isStreaming()||(s.value="",o.sendMessage(B))}),g.appendChild(y),n.push(y)}),t.appendChild(g)}}};var Fo={init:{title:"Schedule a Demo",description:"Share the basics and we'll follow up with a confirmation.",fields:[{name:"name",label:"Full name",placeholder:"Jane Doe",required:!0},{name:"email",label:"Work email",placeholder:"jane@example.com",type:"email",required:!0},{name:"notes",label:"What would you like to cover?",type:"textarea"}],submitLabel:"Submit details"},followup:{title:"Additional Information",description:"Provide any extra details to tailor the next steps.",fields:[{name:"company",label:"Company",placeholder:"Acme Inc."},{name:"context",label:"Context",type:"textarea",placeholder:"Share more about your use case"}],submitLabel:"Send"}},yn=(t,n,r,e)=>{let o=t.querySelectorAll("[data-tv-form]");o.length&&o.forEach(s=>{var y,G,I;if(s.dataset.enhanced==="true")return;let a=(y=s.dataset.tvForm)!=null?y:"init";s.dataset.enhanced="true";let c=(G=Fo[a])!=null?G:Fo.init;s.classList.add("tvw-form-card","tvw-space-y-4");let b=u("div","tvw-space-y-1"),z=u("h3","tvw-text-base tvw-font-semibold tvw-text-cw-primary");if(z.textContent=c.title,b.appendChild(z),c.description){let x=u("p","tvw-text-sm tvw-text-cw-muted");x.textContent=c.description,b.appendChild(x)}let g=document.createElement("form");g.className="tvw-form-grid tvw-space-y-3",c.fields.forEach(x=>{var Fe,Be;let M=u("label","tvw-form-field tvw-flex tvw-flex-col tvw-gap-1");M.htmlFor=`${n.id}-${a}-${x.name}`;let m=u("span","tvw-text-xs tvw-font-medium tvw-text-cw-muted");m.textContent=x.label,M.appendChild(m);let ke=(Fe=x.type)!=null?Fe:"text",ne;ke==="textarea"?(ne=document.createElement("textarea"),ne.rows=3):(ne=document.createElement("input"),ne.type=ke),ne.className="tvw-rounded-xl tvw-border tvw-border-gray-200 tvw-bg-white tvw-px-3 tvw-py-2 tvw-text-sm tvw-text-cw-primary focus:tvw-outline-none focus:tvw-border-cw-primary",ne.id=`${n.id}-${a}-${x.name}`,ne.name=x.name,ne.placeholder=(Be=x.placeholder)!=null?Be:"",x.required&&(ne.required=!0),M.appendChild(ne),g.appendChild(M)});let F=u("div","tvw-flex tvw-items-center tvw-justify-between tvw-gap-2"),H=u("div","tvw-text-xs tvw-text-cw-muted tvw-min-h-[1.5rem]"),B=u("button","tvw-inline-flex tvw-items-center tvw-rounded-full tvw-bg-cw-primary tvw-px-4 tvw-py-2 tvw-text-sm tvw-font-semibold tvw-text-white disabled:tvw-opacity-60 tvw-cursor-pointer");B.type="submit",B.textContent=(I=c.submitLabel)!=null?I:"Submit",F.appendChild(H),F.appendChild(B),g.appendChild(F),s.replaceChildren(b,g),g.addEventListener("submit",async x=>{var ne,Fe;x.preventDefault();let M=(ne=r.formEndpoint)!=null?ne:"/form",m=new FormData(g),ke={};m.forEach((Be,me)=>{ke[me]=Be}),ke.type=a,B.disabled=!0,H.textContent="Submitting\u2026";try{let Be=await fetch(M,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ke)});if(!Be.ok)throw new Error(`Form submission failed (${Be.status})`);let me=await Be.json();H.textContent=(Fe=me.message)!=null?Fe:"Thanks! We'll be in touch soon.",me.success&&me.nextPrompt&&await e.sendMessage(String(me.nextPrompt))}catch(Be){H.textContent=Be instanceof Error?Be.message:"Something went wrong. Please try again."}finally{B.disabled=!1}})})};var bn=class{constructor(){this.plugins=new Map}register(n){var r;this.plugins.has(n.id)&&console.warn(`Plugin "${n.id}" is already registered. Overwriting.`),this.plugins.set(n.id,n),(r=n.onRegister)==null||r.call(n)}unregister(n){var e;let r=this.plugins.get(n);r&&((e=r.onUnregister)==null||e.call(r),this.plugins.delete(n))}getAll(){return Array.from(this.plugins.values()).sort((n,r)=>{var e,o;return((e=r.priority)!=null?e:0)-((o=n.priority)!=null?o:0)})}getForInstance(n){let r=this.getAll();if(!n||n.length===0)return r;let e=new Set(n.map(s=>s.id));return[...r.filter(s=>!e.has(s.id)),...n].sort((s,a)=>{var c,b;return((c=a.priority)!=null?c:0)-((b=s.priority)!=null?b:0)})}clear(){this.plugins.forEach(n=>{var r;return(r=n.onUnregister)==null?void 0:r.call(n)}),this.plugins.clear()}},en=new bn;var nt={apiUrl:"http://localhost:43111/api/chat/dispatch",theme:{primary:"#111827",accent:"#1d4ed8",surface:"#ffffff",muted:"#6b7280",container:"#f8fafc",border:"#f1f5f9",divider:"#f1f5f9",messageBorder:"#f1f5f9",inputBackground:"#ffffff",callToAction:"#000000",callToActionBackground:"#ffffff",sendButtonBackgroundColor:"#111827",sendButtonTextColor:"#ffffff",sendButtonBorderColor:"#60a5fa",closeButtonColor:"#6b7280",closeButtonBackgroundColor:"transparent",closeButtonBorderColor:"",clearChatIconColor:"#6b7280",clearChatBackgroundColor:"transparent",clearChatBorderColor:"transparent",micIconColor:"#111827",micBackgroundColor:"transparent",micBorderColor:"transparent",recordingIconColor:"#ffffff",recordingBackgroundColor:"#ef4444",recordingBorderColor:"transparent",inputFontFamily:"sans-serif",inputFontWeight:"400",radiusSm:"0.75rem",radiusMd:"1rem",radiusLg:"1.5rem",launcherRadius:"9999px",buttonRadius:"9999px"},launcher:{enabled:!0,title:"Chat Assistant",subtitle:"Here to help you get answers fast",agentIconText:"\u{1F4AC}",position:"bottom-right",width:"min(400px, calc(100vw - 24px))",autoExpand:!1,callToActionIconHidden:!1,agentIconSize:"40px",headerIconSize:"40px",closeButtonSize:"32px",callToActionIconName:"arrow-up-right",callToActionIconText:"",callToActionIconSize:"32px",callToActionIconPadding:"5px",callToActionIconColor:"#000000",callToActionIconBackgroundColor:"#ffffff",closeButtonColor:"#6b7280",closeButtonBackgroundColor:"transparent",clearChat:{iconColor:"#6b7280",backgroundColor:"transparent",borderColor:"transparent",enabled:!0,iconName:"refresh-cw",size:"29px",showTooltip:!0,tooltipText:"Clear chat",paddingX:"0px",paddingY:"0px"},headerIconHidden:!1},copy:{welcomeTitle:"Hello \u{1F44B}",welcomeSubtitle:"Ask anything about your account or products.",inputPlaceholder:"How can I help...",sendButtonLabel:"Send"},sendButton:{borderWidth:"0px",paddingX:"12px",paddingY:"10px",backgroundColor:"#111827",textColor:"#ffffff",borderColor:"#60a5fa",useIcon:!0,iconText:"\u2191",size:"40px",showTooltip:!0,tooltipText:"Send message",iconName:"send"},statusIndicator:{visible:!0,idleText:"Online",connectingText:"Connecting\u2026",connectedText:"Streaming\u2026",errorText:"Offline"},voiceRecognition:{enabled:!0,pauseDuration:2e3,iconName:"mic",iconSize:"39px",borderWidth:"0px",paddingX:"9px",paddingY:"14px",iconColor:"#111827",backgroundColor:"transparent",borderColor:"transparent",recordingIconColor:"#ffffff",recordingBackgroundColor:"#ef4444",recordingBorderColor:"transparent",showTooltip:!0,tooltipText:"Start voice recognition"},features:{showReasoning:!0,showToolCalls:!0},suggestionChips:["What can you help me with?","Tell me about your features","How does this work?"],suggestionChipsConfig:{fontFamily:"sans-serif",fontWeight:"500",paddingX:"12px",paddingY:"6px"},debug:!1};function xn(t){var n,r,e;return t?{...nt,...t,theme:{...nt.theme,...t.theme},launcher:{...nt.launcher,...t.launcher,clearChat:{...(n=nt.launcher)==null?void 0:n.clearChat,...(r=t.launcher)==null?void 0:r.clearChat}},copy:{...nt.copy,...t.copy},sendButton:{...nt.sendButton,...t.sendButton},statusIndicator:{...nt.statusIndicator,...t.statusIndicator},voiceRecognition:{...nt.voiceRecognition,...t.voiceRecognition},features:{...nt.features,...t.features},suggestionChips:(e=t.suggestionChips)!=null?e:nt.suggestionChips,suggestionChipsConfig:{...nt.suggestionChipsConfig,...t.suggestionChipsConfig}}:nt}var No=()=>{let t=new Map,n=(o,s)=>(t.has(o)||t.set(o,new Set),t.get(o).add(s),()=>r(o,s)),r=(o,s)=>{var a;(a=t.get(o))==null||a.delete(s)};return{on:n,off:r,emit:(o,s)=>{var a;(a=t.get(o))==null||a.forEach(c=>{try{c(s)}catch(b){typeof console!="undefined"&&console.error("[AgentWidget] Event handler error:",b)}})}}};var tr=t=>{let n=t.match(/```(?:json)?\s*([\s\S]*?)```/i);return n?n[1]:t},nr=t=>{let n=t.trim(),r=n.indexOf("{");if(r===-1)return null;let e=0;for(let o=r;o<n.length;o+=1){let s=n[o];if(s==="{"&&(e+=1),s==="}"&&(e-=1,e===0))return n.slice(r,o+1)}return null},tn=({text:t})=>{if(!t||!t.includes("{"))return null;try{let n=tr(t),r=nr(n);if(!r)return null;let e=JSON.parse(r);if(!e||typeof e!="object"||!e.action)return null;let{action:o,...s}=e;return{type:String(o),payload:s,raw:e}}catch{return null}},Cn=t=>typeof t=="string"?t:t==null?"":String(t),Kt={message:t=>t.type!=="message"?void 0:{handled:!0,displayText:Cn(t.payload.text)},messageAndClick:(t,n)=>{var o;if(t.type!=="message_and_click")return;let r=t.payload,e=Cn(r.element);if(e&&((o=n.document)!=null&&o.querySelector)){let s=n.document.querySelector(e);s?setTimeout(()=>{s.click()},400):typeof console!="undefined"&&console.warn("[AgentWidget] Element not found for selector:",e)}return{handled:!0,displayText:Cn(r.text)}}},Do=t=>Array.isArray(t)?t.map(n=>String(n)):[],nn=t=>{let n=new Set(Do(t.getMetadata().processedActionMessageIds)),r=()=>{n=new Set(Do(t.getMetadata().processedActionMessageIds))},e=()=>{let s=Array.from(n);t.updateMetadata(a=>({...a,processedActionMessageIds:s}))};return{process:s=>{if(s.streaming||s.message.role!=="assistant"||!s.text||n.has(s.message.id))return null;let a=typeof s.raw=="string"&&s.raw||typeof s.message.rawContent=="string"&&s.message.rawContent||typeof s.text=="string"&&s.text||null;!a&&typeof s.text=="string"&&s.text.trim().startsWith("{")&&typeof console!="undefined"&&console.warn("[AgentWidget] Structured response detected but no raw payload was provided. Ensure your stream parser returns { text, raw }.");let c=a?t.parsers.reduce((z,g)=>z||(g==null?void 0:g({text:a,message:s.message}))||null,null):null;if(!c)return null;n.add(s.message.id),e();let b={action:c,message:s.message};t.emit("action:detected",b);for(let z of t.handlers)if(z)try{let g=z(c,{message:s.message,metadata:t.getMetadata(),updateMetadata:t.updateMetadata,document:t.documentRef});if(!g)continue;if(g.handled){let F=g.persistMessage!==!1;return{text:g.displayText!==void 0?g.displayText:"",persist:F}}}catch(g){typeof console!="undefined"&&console.error("[AgentWidget] Action handler error:",g)}return{text:"",persist:!0}},syncFromMetadata:r}};var Xt="vanilla-agent-chat-history",or=30*1e3,Sn=t=>!t||typeof t!="object"?{}:{...t},qo=t=>t.map(n=>({...n,streaming:!1})),zo=(t,n)=>r=>{var s,a,c;let e=(s=r.text)!=null?s:"",o=(a=r.message.rawContent)!=null?a:null;if(n){let b=n.process({text:e,raw:o!=null?o:e,message:r.message,streaming:r.streaming});b!==null&&(e=b.text,b.persist||(r.message.__skipPersist=!0))}return t!=null&&t.postprocessMessage?t.postprocessMessage({...r,text:e,raw:(c=o!=null?o:r.text)!=null?c:""}):rn(e)},Tn=(t,n,r)=>{var ae,le,ue,Re,Me,de,j,se,pe,ve,He,gt,Yt;(!t.id||t.id!=="vanilla-agent-root")&&(t.id="vanilla-agent-root");let e=xn(n);un(t,e);let o=en.getForInstance(e.plugins),s=No(),a=e.storageAdapter,c={},b=null;if(a!=null&&a.load)try{let i=a.load();if(i&&typeof i.then=="function")b=i;else if(i){let l=i;l.metadata&&(c=Sn(l.metadata)),(ae=l.messages)!=null&&ae.length&&(e={...e,initialMessages:l.messages})}}catch(i){typeof console!="undefined"&&console.error("[AgentWidget] Failed to load stored state:",i)}let z=()=>c,g=i=>{var C;c=(C=i({...c}))!=null?C:{},Mt()},F=e.actionParsers&&e.actionParsers.length?e.actionParsers:[tn],H=e.actionHandlers&&e.actionHandlers.length?e.actionHandlers:[Kt.message,Kt.messageAndClick],B=nn({parsers:F,handlers:H,getMetadata:z,updateMetadata:g,emit:s.emit,documentRef:typeof document!="undefined"?document:null});B.syncFromMetadata();let y=(ue=(le=e.launcher)==null?void 0:le.enabled)!=null?ue:!0,G=(Me=(Re=e.launcher)==null?void 0:Re.autoExpand)!=null?Me:!1,I=G,x=y,M=y?G:!0,m=zo(e,B),ke=(j=(de=e.features)==null?void 0:de.showReasoning)!=null?j:!0,ne=(pe=(se=e.features)==null?void 0:se.showToolCalls)!=null?pe:!0,Fe=(ve=e.statusIndicator)!=null?ve:{},Be=i=>{var l,C,N,W;return i==="idle"?(l=Fe.idleText)!=null?l:Ve.idle:i==="connecting"?(C=Fe.connectingText)!=null?C:Ve.connecting:i==="connected"?(N=Fe.connectedText)!=null?N:Ve.connected:i==="error"?(W=Fe.errorText)!=null?W:Ve.error:Ve[i]},{wrapper:me,panel:Z}=Ho(e),Se=Io(e,y),{container:fe,body:K,messagesWrapper:Q,suggestions:Ht,textarea:J,sendButton:E,sendButtonWrapper:ot,composerForm:yt,statusText:It,introTitle:rt,introSubtitle:oe,closeButton:L,iconHolder:we,headerTitle:Pt,headerSubtitle:he}=Se,S=Se.micButton,Ne=Se.micButtonWrapper;Z.appendChild(fe),t.appendChild(me);let _e=[],dt=Po(Ht),st=null,R,ct=!1,Te=!0,Ze=0,O=0,ie=null,ut=!1,U=0,Ke=!1,Vt=125,bt=2e3,Ft=5,Nt=50,xt=new Map,re={active:!1,manuallyDeactivated:!1,lastUserMessageWasVoice:!1},Tt=(gt=(He=e.voiceRecognition)==null?void 0:He.autoResume)!=null?gt:!1,At=i=>{s.emit("voice:state",{active:re.active,source:i,timestamp:Date.now()})},it=()=>{g(i=>({...i,voiceState:{active:re.active,timestamp:Date.now(),manuallyDeactivated:re.manuallyDeactivated}}))},Dt=()=>{var N,W;if(((N=e.voiceRecognition)==null?void 0:N.enabled)===!1)return;let i=Sn(c.voiceState),l=!!i.active,C=Number((W=i.timestamp)!=null?W:0);re.manuallyDeactivated=!!i.manuallyDeactivated,l&&Date.now()-C<or&&setTimeout(()=>{re.active||(re.manuallyDeactivated=!1,f("restore"))},1e3)},qt=()=>R?qo(R.getMessages()).filter(i=>!i.__skipPersist):[];function Mt(i){if(!(a!=null&&a.save)||!R)return;let l={messages:i?qo(i):qt(),metadata:c};try{let C=a.save(l);C instanceof Promise&&C.catch(N=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",N)})}catch(C){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",C)}}let ft=(i=!1)=>{if(!Te)return;let l=Date.now();ut&&l<U&&!i||(ut&&l>=U&&(ut=!1),!(!i&&!ct)&&(l-O<Vt||(O=l,ie&&cancelAnimationFrame(ie),ie=requestAnimationFrame(()=>{ut||!Te||(Ke=!0,K.scrollTop=K.scrollHeight,Ze=K.scrollTop,requestAnimationFrame(()=>{Ke=!1}),ie=null)}))))},at=null,zt=()=>me.querySelector("#vanilla-agent-scroll-container")||K,_t=(i,l=500)=>{let C=i.scrollTop,N=i.clientHeight,W=i.scrollHeight,k=W-C;if(C+N>=W-2||Math.abs(k)<5)return;at!==null&&(cancelAnimationFrame(at),at=null);let V=performance.now(),ye=w=>1-Math.pow(1-w,3),p=w=>{let q=i.scrollHeight;q!==W&&(W=q,k=W-C);let be=w-V,Y=Math.min(be/l,1),qe=ye(Y),Pe=C+k*qe;i.scrollTop=Pe,Y<1?at=requestAnimationFrame(p):(i.scrollTop=i.scrollHeight,at=null)};at=requestAnimationFrame(p)},Ot=i=>{let l=new Map;i.forEach(C=>{let N=xt.get(C.id);l.set(C.id,{streaming:C.streaming,role:C.role}),!N&&C.role==="assistant"&&s.emit("assistant:message",C),C.role==="assistant"&&(N!=null&&N.streaming)&&C.streaming===!1&&s.emit("assistant:complete",C)}),xt.clear(),l.forEach((C,N)=>{xt.set(N,C)})},wt=(i,l,C)=>{i.innerHTML="";let N=document.createDocumentFragment();l.forEach(k=>{let T=null,V=o.find(p=>!!(k.variant==="reasoning"&&p.renderReasoning||k.variant==="tool"&&p.renderToolCall||!k.variant&&p.renderMessage));if(V)if(k.variant==="reasoning"&&k.reasoning&&V.renderReasoning){if(!ke)return;T=V.renderReasoning({message:k,defaultRenderer:()=>wn(k),config:e})}else if(k.variant==="tool"&&k.toolCall&&V.renderToolCall){if(!ne)return;T=V.renderToolCall({message:k,defaultRenderer:()=>vn(k,e),config:e})}else V.renderMessage&&(T=V.renderMessage({message:k,defaultRenderer:()=>{let p=mn(k,C);return k.role!=="user"&&yn(p,k,e,R),p},config:e}));if(!T)if(k.variant==="reasoning"&&k.reasoning){if(!ke)return;T=wn(k)}else if(k.variant==="tool"&&k.toolCall){if(!ne)return;T=vn(k,e)}else T=mn(k,C),k.role!=="user"&&yn(T,k,e,R);let ye=document.createElement("div");ye.className="tvw-flex",k.role==="user"&&ye.classList.add("tvw-justify-end"),ye.appendChild(T),N.appendChild(ye)});let W=l.some(k=>k.role==="assistant"&&k.streaming);if(ct&&l.some(k=>k.role==="user")&&!W){let k=pn(),T=document.createElement("div");T.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(" "),T.appendChild(k);let V=document.createElement("div");V.className="tvw-flex",V.appendChild(T),N.appendChild(V)}i.appendChild(N),requestAnimationFrame(()=>{requestAnimationFrame(()=>{let k=zt();_t(k)})})},ht=()=>{y&&(M?(me.classList.remove("tvw-pointer-events-none","tvw-opacity-0"),Z.classList.remove("tvw-scale-95","tvw-opacity-0"),Z.classList.add("tvw-scale-100","tvw-opacity-100"),D&&(D.element.style.display="none")):(me.classList.add("tvw-pointer-events-none","tvw-opacity-0"),Z.classList.remove("tvw-scale-100","tvw-opacity-100"),Z.classList.add("tvw-scale-95","tvw-opacity-0"),D&&(D.element.style.display="")))},Oe=(i,l="user")=>{if(!y||M===i)return;let C=M;M=i,ht(),M&&(v(),ft(!0));let N={open:M,source:l,timestamp:Date.now()};M&&!C?s.emit("widget:opened",N):!M&&C&&s.emit("widget:closed",N),s.emit("widget:state",{open:M,launcherEnabled:y,voiceActive:re.active,streaming:R.isStreaming()})},Ct=i=>{J.disabled=i,E.disabled=i,S&&(S.disabled=i),dt.buttons.forEach(l=>{l.disabled=i})},Wt=()=>{var W,k,T,V,ye,p,w,q,be,Y,qe,Pe,Xe,ee;rt.textContent=(k=(W=e.copy)==null?void 0:W.welcomeTitle)!=null?k:"Hello \u{1F44B}",oe.textContent=(V=(T=e.copy)==null?void 0:T.welcomeSubtitle)!=null?V:"Ask anything about your account or products.",J.placeholder=(p=(ye=e.copy)==null?void 0:ye.inputPlaceholder)!=null?p:"How can I help...",((q=(w=e.sendButton)==null?void 0:w.useIcon)!=null?q:!1)||(E.textContent=(Y=(be=e.copy)==null?void 0:be.sendButtonLabel)!=null?Y:"Send");let l=(Pe=(qe=e.theme)==null?void 0:qe.inputFontFamily)!=null?Pe:"sans-serif",C=(ee=(Xe=e.theme)==null?void 0:Xe.inputFontWeight)!=null?ee:"400",N=et=>{switch(et){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'}};J.style.fontFamily=N(l),J.style.fontWeight=C};R=new Zt(e,{onMessagesChanged(i){wt(Q,i,m),R&&(i.some(N=>N.role==="user")?dt.render([],R,J,i):dt.render(e.suggestionChips,R,J,i,e.suggestionChipsConfig)),ft(!ct),Ot(i);let l=[...i].reverse().find(C=>C.role==="user");re.lastUserMessageWasVoice=!!(l!=null&&l.viaVoice),Mt(i)},onStatusChanged(i){var N;let l=(N=e.statusIndicator)!=null?N:{},C=W=>{var k,T,V,ye;return W==="idle"?(k=l.idleText)!=null?k:Ve.idle:W==="connecting"?(T=l.connectingText)!=null?T:Ve.connecting:W==="connected"?(V=l.connectedText)!=null?V:Ve.connected:W==="error"?(ye=l.errorText)!=null?ye:Ve.error:Ve[W]};It.textContent=C(i)},onStreamingChanged(i){ct=i,Ct(i),R&&wt(Q,R.getMessages(),m),i||ft(!0)}}),b&&b.then(i=>{var l;i&&(i.metadata&&(c=Sn(i.metadata),B.syncFromMetadata()),(l=i.messages)!=null&&l.length&&R.hydrateMessages(i.messages))}).catch(i=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to hydrate stored state:",i)});let Et=i=>{i.preventDefault();let l=J.value.trim();l&&(J.value="",R.sendMessage(l))},Lt=i=>{i.key==="Enter"&&!i.shiftKey&&(i.preventDefault(),E.click())},De=null,$e=!1,lt=null,Qe=null,kt=()=>typeof window=="undefined"?null:window.webkitSpeechRecognition||window.SpeechRecognition||null,f=(i="user")=>{var k,T,V,ye;if($e||R.isStreaming())return;let l=kt();if(!l)return;De=new l;let N=(T=((k=e.voiceRecognition)!=null?k:{}).pauseDuration)!=null?T:2e3;De.continuous=!0,De.interimResults=!0,De.lang="en-US";let W=J.value;De.onresult=p=>{let w="",q="";for(let Y=0;Y<p.results.length;Y++){let qe=p.results[Y],Pe=qe[0].transcript;qe.isFinal?w+=Pe+" ":q=Pe}let be=W+w+q;J.value=be,lt&&clearTimeout(lt),(w||q)&&(lt=window.setTimeout(()=>{let Y=J.value.trim();Y&&De&&$e&&(_(),J.value="",R.sendMessage(Y,{viaVoice:!0}))},N))},De.onerror=p=>{p.error!=="no-speech"&&_()},De.onend=()=>{if($e){let p=J.value.trim();p&&p!==W.trim()&&(J.value="",R.sendMessage(p,{viaVoice:!0})),_()}};try{if(De.start(),$e=!0,re.active=!0,i!=="system"&&(re.manuallyDeactivated=!1),At(i),it(),S){Qe={backgroundColor:S.style.backgroundColor,color:S.style.color,borderColor:S.style.borderColor};let p=(V=e.voiceRecognition)!=null?V:{},w=(ye=p.recordingBackgroundColor)!=null?ye:"#ef4444",q=p.recordingIconColor,be=p.recordingBorderColor;if(S.classList.add("tvw-voice-recording"),S.style.backgroundColor=w,q){S.style.color=q;let Y=S.querySelector("svg");Y&&Y.setAttribute("stroke",q)}be&&(S.style.borderColor=be),S.setAttribute("aria-label","Stop voice recognition")}}catch{_("system")}},_=(i="user")=>{if($e){if($e=!1,lt&&(clearTimeout(lt),lt=null),De){try{De.stop()}catch{}De=null}if(re.active=!1,At(i),it(),S){if(S.classList.remove("tvw-voice-recording"),Qe){S.style.backgroundColor=Qe.backgroundColor,S.style.color=Qe.color,S.style.borderColor=Qe.borderColor;let l=S.querySelector("svg");l&&l.setAttribute("stroke",Qe.color||"currentColor"),Qe=null}S.setAttribute("aria-label","Start voice recognition")}}},X=(i,l)=>{var Pe,Xe,ee,et,$t,Bt,xe;if(!(typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined")))return null;let N=u("div","tvw-send-button-wrapper"),W=u("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer");W.type="button",W.setAttribute("aria-label","Start voice recognition");let k=(Pe=i==null?void 0:i.iconName)!=null?Pe:"mic",T=(Xe=l==null?void 0:l.size)!=null?Xe:"40px",V=(ee=i==null?void 0:i.iconSize)!=null?ee:T,ye=parseFloat(V)||24,p=(et=i==null?void 0:i.backgroundColor)!=null?et:l==null?void 0:l.backgroundColor,w=($t=i==null?void 0:i.iconColor)!=null?$t:l==null?void 0:l.textColor;W.style.width=V,W.style.height=V,W.style.minWidth=V,W.style.minHeight=V,W.style.fontSize="18px",W.style.lineHeight="1";let q=w||"currentColor",be=Ee(k,ye,q,1.5);be?(W.appendChild(be),W.style.color=q):(W.textContent="\u{1F3A4}",W.style.color=q),p?W.style.backgroundColor=p:W.classList.add("tvw-bg-cw-primary"),w?W.style.color=w:!w&&!(l!=null&&l.textColor)&&W.classList.add("tvw-text-white"),i!=null&&i.borderWidth&&(W.style.borderWidth=i.borderWidth,W.style.borderStyle="solid"),i!=null&&i.borderColor&&(W.style.borderColor=i.borderColor),i!=null&&i.paddingX&&(W.style.paddingLeft=i.paddingX,W.style.paddingRight=i.paddingX),i!=null&&i.paddingY&&(W.style.paddingTop=i.paddingY,W.style.paddingBottom=i.paddingY),N.appendChild(W);let Y=(Bt=i==null?void 0:i.tooltipText)!=null?Bt:"Start voice recognition";if(((xe=i==null?void 0:i.showTooltip)!=null?xe:!1)&&Y){let pt=u("div","tvw-send-button-tooltip");pt.textContent=Y,N.appendChild(pt)}return{micButton:W,micButtonWrapper:N}},ce=()=>{if($e){let i=J.value.trim();re.manuallyDeactivated=!0,it(),_("user"),i&&(J.value="",R.sendMessage(i))}else re.manuallyDeactivated=!1,it(),f("user")};S&&(S.addEventListener("click",ce),_e.push(()=>{_("system"),S&&S.removeEventListener("click",ce)}));let Ae=s.on("assistant:complete",()=>{Tt&&(re.active||re.manuallyDeactivated||Tt==="assistant"&&!re.lastUserMessageWasVoice||setTimeout(()=>{!re.active&&!re.manuallyDeactivated&&f("auto")},600))});_e.push(Ae);let Le=()=>{Oe(!M,"user")},D=y?gn(e,Le):null;D&&t.appendChild(D.element),ht(),dt.render(e.suggestionChips,R,J,void 0,e.suggestionChipsConfig),Wt(),Ct(R.isStreaming()),ft(!0),Dt();let v=()=>{var T,V;if(!y){Z.style.height="",Z.style.width="";return}let i=(V=(T=e==null?void 0:e.launcher)==null?void 0:T.width)!=null?V:e==null?void 0:e.launcherWidth,l=i!=null?i:"min(400px, calc(100vw - 24px))";Z.style.width=l,Z.style.maxWidth=l;let C=window.innerHeight,W=Math.max(200,C-64),k=Math.min(640,W);Z.style.height=`${k}px`};v(),window.addEventListener("resize",v),_e.push(()=>window.removeEventListener("resize",v)),Ze=K.scrollTop;let je=()=>{let i=K.scrollTop,l=K.scrollHeight,C=K.clientHeight,N=l-i-C,W=Math.abs(i-Ze);if(Ze=i,!Ke&&!(W<=Ft)){if(!Te&&N<Nt){ut=!1,Te=!0;return}Te&&N>Nt&&(ut=!0,U=Date.now()+bt,Te=!1)}};K.addEventListener("scroll",je,{passive:!0}),_e.push(()=>K.removeEventListener("scroll",je)),_e.push(()=>{ie&&cancelAnimationFrame(ie)});let $=()=>{L&&(st&&(L.removeEventListener("click",st),st=null),y?(L.style.display="",st=()=>{M=!1,ht()},L.addEventListener("click",st)):L.style.display="none")};$(),(()=>{let{clearChatButton:i}=Se;i&&i.addEventListener("click",()=>{R.clearMessages();try{localStorage.removeItem(Xt),e.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Xt}`)}catch(C){console.error("[AgentWidget] Failed to clear default localStorage:",C)}if(e.clearChatHistoryStorageKey&&e.clearChatHistoryStorageKey!==Xt)try{localStorage.removeItem(e.clearChatHistoryStorageKey),e.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${e.clearChatHistoryStorageKey}`)}catch(C){console.error("[AgentWidget] Failed to clear custom localStorage:",C)}let l=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(l),a!=null&&a.clear)try{let C=a.clear();C instanceof Promise&&C.catch(N=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",N)})}catch(C){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",C)}c={},B.syncFromMetadata()})})(),yt.addEventListener("submit",Et),J.addEventListener("keydown",Lt),_e.push(()=>{yt.removeEventListener("submit",Et),J.removeEventListener("keydown",Lt)}),_e.push(()=>{R.cancel()}),D&&_e.push(()=>{D==null||D.destroy()});let d={update(i){var Mn,Wn,En,Ln,kn,Bn,Rn,Hn,In,Pn,Fn,Nn,Dn,qn,zn,_n,On,$n,jn,Vn,Un,Kn,Xn,Yn,Jn,Gn,Zn,Qn,eo,to,no,oo,ro,so,io,ao,lo,co,uo,go,po,mo,fo,wo,ho,vo,yo,bo,xo,Co,So;let l=e.toolCall;e={...e,...i},un(t,e);let C=en.getForInstance(e.plugins);o.length=0,o.push(...C),y=(Wn=(Mn=e.launcher)==null?void 0:Mn.enabled)!=null?Wn:!0,G=(Ln=(En=e.launcher)==null?void 0:En.autoExpand)!=null?Ln:!1,ke=(Bn=(kn=e.features)==null?void 0:kn.showReasoning)!=null?Bn:!0,ne=(Hn=(Rn=e.features)==null?void 0:Rn.showToolCalls)!=null?Hn:!0,((In=e.launcher)==null?void 0:In.enabled)===!1&&D&&(D.destroy(),D=null),((Pn=e.launcher)==null?void 0:Pn.enabled)!==!1&&!D&&(D=gn(e,Le),t.appendChild(D.element)),D&&D.update(e),Pt&&((Fn=e.launcher)==null?void 0:Fn.title)!==void 0&&(Pt.textContent=e.launcher.title),he&&((Nn=e.launcher)==null?void 0:Nn.subtitle)!==void 0&&(he.textContent=e.launcher.subtitle),y!==x?y?Oe(G,"auto"):(M=!0,ht()):G!==I&&Oe(G,"auto"),I=G,x=y,v(),$(),JSON.stringify(i.toolCall)!==JSON.stringify(l)&&R&&wt(Q,R.getMessages(),m);let T=(Dn=e.launcher)!=null?Dn:{},V=(qn=T.headerIconHidden)!=null?qn:!1,ye=T.headerIconName,p=(zn=T.headerIconSize)!=null?zn:"48px";if(we){let A=fe.querySelector(".tvw-border-b-cw-divider"),We=A==null?void 0:A.querySelector(".tvw-flex-col");if(V)we.style.display="none",A&&We&&!A.contains(We)&&A.insertBefore(We,A.firstChild);else{if(we.style.display="",we.style.height=p,we.style.width=p,A&&We&&(A.contains(we)?we.nextSibling!==We&&(we.remove(),A.insertBefore(we,We)):A.insertBefore(we,We)),ye){let ze=parseFloat(p)||24,ge=Ee(ye,ze*.6,"#ffffff",2);ge?we.replaceChildren(ge):we.textContent=(_n=T.agentIconText)!=null?_n:"\u{1F4AC}"}else if(T.iconUrl){let ze=we.querySelector("img");if(ze)ze.src=T.iconUrl,ze.style.height=p,ze.style.width=p;else{let ge=document.createElement("img");ge.src=T.iconUrl,ge.alt="",ge.className="tvw-rounded-xl tvw-object-cover",ge.style.height=p,ge.style.width=p,we.replaceChildren(ge)}}else{let ze=we.querySelector("svg"),ge=we.querySelector("img");(ze||ge)&&we.replaceChildren(),we.textContent=(On=T.agentIconText)!=null?On:"\u{1F4AC}"}let Ie=we.querySelector("img");Ie&&(Ie.style.height=p,Ie.style.width=p)}}if(L){let A=($n=T.closeButtonSize)!=null?$n:"32px",We=(jn=T.closeButtonPlacement)!=null?jn:"inline";L.style.height=A,L.style.width=A;let Ie=We==="top-right",ze=L.classList.contains("tvw-absolute");if(Ie!==ze)if(L.remove(),Ie)L.className="tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50 tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none",fe.style.position="relative",fe.appendChild(L);else{L.className="tvw-ml-auto tvw-inline-flex tvw-items-center tvw-justify-center tvw-rounded-full tvw-text-cw-muted hover:tvw-bg-gray-100 tvw-cursor-pointer tvw-border-none";let te=fe.querySelector(".tvw-border-b-cw-divider");te&&te.appendChild(L)}if(T.closeButtonColor?(L.style.color=T.closeButtonColor,L.classList.remove("tvw-text-cw-muted")):(L.style.color="",L.classList.add("tvw-text-cw-muted")),T.closeButtonBackgroundColor?(L.style.backgroundColor=T.closeButtonBackgroundColor,L.classList.remove("hover:tvw-bg-gray-100")):(L.style.backgroundColor="",L.classList.add("hover:tvw-bg-gray-100")),T.closeButtonBorderWidth||T.closeButtonBorderColor){let te=T.closeButtonBorderWidth||"0px",vt=T.closeButtonBorderColor||"transparent";L.style.border=`${te} solid ${vt}`,L.classList.remove("tvw-border-none")}else L.style.border="",L.classList.add("tvw-border-none");T.closeButtonBorderRadius?(L.style.borderRadius=T.closeButtonBorderRadius,L.classList.remove("tvw-rounded-full")):(L.style.borderRadius="",L.classList.add("tvw-rounded-full")),T.closeButtonPaddingX?(L.style.paddingLeft=T.closeButtonPaddingX,L.style.paddingRight=T.closeButtonPaddingX):(L.style.paddingLeft="",L.style.paddingRight=""),T.closeButtonPaddingY?(L.style.paddingTop=T.closeButtonPaddingY,L.style.paddingBottom=T.closeButtonPaddingY):(L.style.paddingTop="",L.style.paddingBottom="");let ge=(Vn=T.closeButtonIconName)!=null?Vn:"x",St=(Un=T.closeButtonIconText)!=null?Un:"\xD7";L.innerHTML="";let Je=Ee(ge,"20px",T.closeButtonColor||"",2);Je?L.appendChild(Je):L.textContent=St;let{closeButtonWrapper:Ue}=Se,Ce=(Kn=T.closeButtonTooltipText)!=null?Kn:"Close chat",Ge=(Xn=T.closeButtonShowTooltip)!=null?Xn:!0;if(L.setAttribute("aria-label",Ce),Ue&&(Ue._cleanupTooltip&&(Ue._cleanupTooltip(),delete Ue._cleanupTooltip),Ge&&Ce)){let te=null,vt=()=>{if(te||!L)return;te=u("div","tvw-clear-chat-tooltip"),te.textContent=Ce;let To=u("div");To.className="tvw-clear-chat-tooltip-arrow",te.appendChild(To);let on=L.getBoundingClientRect();te.style.position="fixed",te.style.left=`${on.left+on.width/2}px`,te.style.top=`${on.top-8}px`,te.style.transform="translate(-50%, -100%)",document.body.appendChild(te)},tt=()=>{te&&te.parentNode&&(te.parentNode.removeChild(te),te=null)};Ue.addEventListener("mouseenter",vt),Ue.addEventListener("mouseleave",tt),L.addEventListener("focus",vt),L.addEventListener("blur",tt),Ue._cleanupTooltip=()=>{tt(),Ue&&(Ue.removeEventListener("mouseenter",vt),Ue.removeEventListener("mouseleave",tt)),L&&(L.removeEventListener("focus",vt),L.removeEventListener("blur",tt))}}}let{clearChatButton:w,clearChatButtonWrapper:q}=Se;if(w){let A=(Yn=T.clearChat)!=null?Yn:{},We=(Jn=A.enabled)!=null?Jn:!0;if(q&&(q.style.display=We?"":"none"),We){let Ie=(Gn=A.size)!=null?Gn:"32px";w.style.height=Ie,w.style.width=Ie;let ze=(Zn=A.iconName)!=null?Zn:"refresh-cw",ge=(Qn=A.iconColor)!=null?Qn:"";w.innerHTML="";let St=Ee(ze,"20px",ge||"",2);if(St&&w.appendChild(St),ge?(w.style.color=ge,w.classList.remove("tvw-text-cw-muted")):(w.style.color="",w.classList.add("tvw-text-cw-muted")),A.backgroundColor?(w.style.backgroundColor=A.backgroundColor,w.classList.remove("hover:tvw-bg-gray-100")):(w.style.backgroundColor="",w.classList.add("hover:tvw-bg-gray-100")),A.borderWidth||A.borderColor){let Ce=A.borderWidth||"0px",Ge=A.borderColor||"transparent";w.style.border=`${Ce} solid ${Ge}`,w.classList.remove("tvw-border-none")}else w.style.border="",w.classList.add("tvw-border-none");A.borderRadius?(w.style.borderRadius=A.borderRadius,w.classList.remove("tvw-rounded-full")):(w.style.borderRadius="",w.classList.add("tvw-rounded-full")),A.paddingX?(w.style.paddingLeft=A.paddingX,w.style.paddingRight=A.paddingX):(w.style.paddingLeft="",w.style.paddingRight=""),A.paddingY?(w.style.paddingTop=A.paddingY,w.style.paddingBottom=A.paddingY):(w.style.paddingTop="",w.style.paddingBottom="");let Je=(eo=A.tooltipText)!=null?eo:"Clear chat",Ue=(to=A.showTooltip)!=null?to:!0;if(w.setAttribute("aria-label",Je),q&&(q._cleanupTooltip&&(q._cleanupTooltip(),delete q._cleanupTooltip),Ue&&Je)){let Ce=null,Ge=()=>{if(Ce||!w)return;Ce=u("div","tvw-clear-chat-tooltip"),Ce.textContent=Je;let vt=u("div");vt.className="tvw-clear-chat-tooltip-arrow",Ce.appendChild(vt);let tt=w.getBoundingClientRect();Ce.style.position="fixed",Ce.style.left=`${tt.left+tt.width/2}px`,Ce.style.top=`${tt.top-8}px`,Ce.style.transform="translate(-50%, -100%)",document.body.appendChild(Ce)},te=()=>{Ce&&Ce.parentNode&&(Ce.parentNode.removeChild(Ce),Ce=null)};q.addEventListener("mouseenter",Ge),q.addEventListener("mouseleave",te),w.addEventListener("focus",Ge),w.addEventListener("blur",te),q._cleanupTooltip=()=>{te(),q&&(q.removeEventListener("mouseenter",Ge),q.removeEventListener("mouseleave",te)),w&&(w.removeEventListener("focus",Ge),w.removeEventListener("blur",te))}}}}let be=e.actionParsers&&e.actionParsers.length?e.actionParsers:[tn],Y=e.actionHandlers&&e.actionHandlers.length?e.actionHandlers:[Kt.message,Kt.messageAndClick];B=nn({parsers:be,handlers:Y,getMetadata:z,updateMetadata:g,emit:s.emit,documentRef:typeof document!="undefined"?document:null}),m=zo(e,B),R.updateConfig(e),wt(Q,R.getMessages(),m),dt.render(e.suggestionChips,R,J,void 0,e.suggestionChipsConfig),Wt(),Ct(R.isStreaming());let qe=((no=e.voiceRecognition)==null?void 0:no.enabled)===!0,Pe=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),Xe=qe&&Pe;if(yt.classList.remove("tvw-gap-1","tvw-gap-3"),yt.classList.add(Xe?"tvw-gap-1":"tvw-gap-3"),qe&&Pe)if(!S||!Ne){let A=X(e.voiceRecognition,e.sendButton);A&&(S=A.micButton,Ne=A.micButtonWrapper,yt.insertBefore(Ne,ot),S.addEventListener("click",ce),S.disabled=R.isStreaming())}else{let A=(oo=e.voiceRecognition)!=null?oo:{},We=(ro=e.sendButton)!=null?ro:{},Ie=(so=A.iconName)!=null?so:"mic",ze=(io=We.size)!=null?io:"40px",ge=(ao=A.iconSize)!=null?ao:ze,St=parseFloat(ge)||24;S.style.width=ge,S.style.height=ge,S.style.minWidth=ge,S.style.minHeight=ge;let Je=(co=(lo=A.iconColor)!=null?lo:We.textColor)!=null?co:"currentColor";S.innerHTML="";let Ue=Ee(Ie,St,Je,2);Ue?S.appendChild(Ue):S.textContent="\u{1F3A4}";let Ce=(uo=A.backgroundColor)!=null?uo:We.backgroundColor;Ce?(S.style.backgroundColor=Ce,S.classList.remove("tvw-bg-cw-primary")):(S.style.backgroundColor="",S.classList.add("tvw-bg-cw-primary")),Je?(S.style.color=Je,S.classList.remove("tvw-text-white")):!Je&&!We.textColor&&(S.style.color="",S.classList.add("tvw-text-white")),A.borderWidth?(S.style.borderWidth=A.borderWidth,S.style.borderStyle="solid"):(S.style.borderWidth="",S.style.borderStyle=""),A.borderColor?S.style.borderColor=A.borderColor:S.style.borderColor="",A.paddingX?(S.style.paddingLeft=A.paddingX,S.style.paddingRight=A.paddingX):(S.style.paddingLeft="",S.style.paddingRight=""),A.paddingY?(S.style.paddingTop=A.paddingY,S.style.paddingBottom=A.paddingY):(S.style.paddingTop="",S.style.paddingBottom="");let Ge=Ne==null?void 0:Ne.querySelector(".tvw-send-button-tooltip"),te=(go=A.tooltipText)!=null?go:"Start voice recognition";if(((po=A.showTooltip)!=null?po:!1)&&te)if(Ge)Ge.textContent=te,Ge.style.display="";else{let tt=document.createElement("div");tt.className="tvw-send-button-tooltip",tt.textContent=te,Ne==null||Ne.insertBefore(tt,S)}else Ge&&(Ge.style.display="none");Ne.style.display="",S.disabled=R.isStreaming()}else S&&Ne&&(Ne.style.display="none",$e&&_());let ee=(mo=e.sendButton)!=null?mo:{},et=(fo=ee.useIcon)!=null?fo:!1,$t=(wo=ee.iconText)!=null?wo:"\u2191",Bt=ee.iconName,xe=(ho=ee.tooltipText)!=null?ho:"Send message",pt=(vo=ee.showTooltip)!=null?vo:!1,mt=(yo=ee.size)!=null?yo:"40px",jt=ee.backgroundColor,Ye=ee.textColor;if(et){if(E.style.width=mt,E.style.height=mt,E.style.minWidth=mt,E.style.minHeight=mt,E.style.fontSize="18px",E.style.lineHeight="1",E.innerHTML="",Bt){let A=parseFloat(mt)||24,We=Ye&&typeof Ye=="string"&&Ye.trim()?Ye.trim():"currentColor",Ie=Ee(Bt,A,We,2);Ie?(E.appendChild(Ie),E.style.color=We):(E.textContent=$t,Ye?E.style.color=Ye:E.classList.add("tvw-text-white"))}else E.textContent=$t,Ye?E.style.color=Ye:E.classList.add("tvw-text-white");E.className="tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer",jt?(E.style.backgroundColor=jt,E.classList.remove("tvw-bg-cw-primary")):E.classList.add("tvw-bg-cw-primary")}else E.textContent=(xo=(bo=e.copy)==null?void 0:bo.sendButtonLabel)!=null?xo:"Send",E.style.width="",E.style.height="",E.style.minWidth="",E.style.minHeight="",E.style.fontSize="",E.style.lineHeight="",E.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",jt?(E.style.backgroundColor=jt,E.classList.remove("tvw-bg-cw-accent")):E.classList.add("tvw-bg-cw-accent"),Ye?E.style.color=Ye:E.classList.add("tvw-text-white");ee.borderWidth?(E.style.borderWidth=ee.borderWidth,E.style.borderStyle="solid"):(E.style.borderWidth="",E.style.borderStyle=""),ee.borderColor?E.style.borderColor=ee.borderColor:E.style.borderColor="",ee.paddingX?(E.style.paddingLeft=ee.paddingX,E.style.paddingRight=ee.paddingX):(E.style.paddingLeft="",E.style.paddingRight=""),ee.paddingY?(E.style.paddingTop=ee.paddingY,E.style.paddingBottom=ee.paddingY):(E.style.paddingTop="",E.style.paddingBottom="");let Jt=ot==null?void 0:ot.querySelector(".tvw-send-button-tooltip");if(pt&&xe)if(Jt)Jt.textContent=xe,Jt.style.display="";else{let A=document.createElement("div");A.className="tvw-send-button-tooltip",A.textContent=xe,ot==null||ot.insertBefore(A,E)}else Jt&&(Jt.style.display="none");let Gt=(Co=e.statusIndicator)!=null?Co:{},$o=(So=Gt.visible)!=null?So:!0;if(It.style.display=$o?"":"none",R){let A=R.getStatus(),We=Ie=>{var ze,ge,St,Je;return Ie==="idle"?(ze=Gt.idleText)!=null?ze:Ve.idle:Ie==="connecting"?(ge=Gt.connectingText)!=null?ge:Ve.connecting:Ie==="connected"?(St=Gt.connectedText)!=null?St:Ve.connected:Ie==="error"?(Je=Gt.errorText)!=null?Je:Ve.error:Ve[Ie]};It.textContent=We(A)}},open(){y&&Oe(!0,"api")},close(){y&&Oe(!1,"api")},toggle(){y&&Oe(!M,"api")},clearChat(){R.clearMessages();try{localStorage.removeItem(Xt),e.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Xt}`)}catch(l){console.error("[AgentWidget] Failed to clear default localStorage:",l)}if(e.clearChatHistoryStorageKey&&e.clearChatHistoryStorageKey!==Xt)try{localStorage.removeItem(e.clearChatHistoryStorageKey),e.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${e.clearChatHistoryStorageKey}`)}catch(l){console.error("[AgentWidget] Failed to clear custom localStorage:",l)}let i=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(i),a!=null&&a.clear)try{let l=a.clear();l instanceof Promise&&l.catch(C=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",C)})}catch(l){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",l)}c={},B.syncFromMetadata()},setMessage(i){return!J||R.isStreaming()?!1:(!M&&y&&Oe(!0,"system"),J.value=i,J.dispatchEvent(new Event("input",{bubbles:!0})),!0)},submitMessage(i){if(R.isStreaming())return!1;let l=(i==null?void 0:i.trim())||J.value.trim();return l?(!M&&y&&Oe(!0,"system"),J.value="",R.sendMessage(l),!0):!1},startVoiceRecognition(){return $e||R.isStreaming()||!kt()?!1:(!M&&y&&Oe(!0,"system"),re.manuallyDeactivated=!1,it(),f("user"),!0)},stopVoiceRecognition(){return $e?(re.manuallyDeactivated=!0,it(),_("user"),!0):!1},injectTestMessage(i){!M&&y&&Oe(!0,"system"),R.injectTestEvent(i)},getMessages(){return R.getMessages()},getStatus(){return R.getStatus()},getPersistentMetadata(){return{...c}},updatePersistentMetadata(i){g(i)},on(i,l){return s.on(i,l)},off(i,l){s.off(i,l)},isOpen(){return y&&M},isVoiceActive(){return re.active},getState(){return{open:y&&M,launcherEnabled:y,voiceActive:re.active,streaming:R.isStreaming()}},destroy(){_e.forEach(i=>i()),me.remove(),D==null||D.destroy(),st&&L.removeEventListener("click",st)}};if((((Yt=r==null?void 0:r.debugTools)!=null?Yt:!1)||!!e.debug)&&typeof window!="undefined"){let i=window.AgentWidgetBrowser,l={controller:d,getMessages:d.getMessages,getStatus:d.getStatus,getMetadata:d.getPersistentMetadata,updateMetadata:d.updatePersistentMetadata,clearHistory:()=>d.clearChat(),setVoiceActive:C=>C?d.startVoiceRecognition():d.stopVoiceRecognition()};window.AgentWidgetBrowser=l,_e.push(()=>{window.AgentWidgetBrowser===l&&(window.AgentWidgetBrowser=i)})}return d};var An={},rr=t=>{if(typeof window=="undefined"||typeof document=="undefined")throw new Error("Chat widget can only be mounted in a browser environment");if(typeof t=="string"){let n=document.querySelector(t);if(!n)throw new Error(`Chat widget target "${t}" was not found`);return n}return t},sr=()=>{try{if(typeof An!="undefined"&&An.url)return new URL("../widget.css",An.url).href}catch{}return null},_o=t=>{let n=sr(),r=()=>{if(!(t instanceof ShadowRoot)||t.querySelector("link[data-vanilla-agent]"))return;let e=document.head.querySelector("link[data-vanilla-agent]");if(!e)return;let o=e.cloneNode(!0);t.insertBefore(o,t.firstChild)};if(t instanceof ShadowRoot)if(n){let e=document.createElement("link");e.rel="stylesheet",e.href=n,e.setAttribute("data-vanilla-agent","true"),t.insertBefore(e,t.firstChild)}else r();else if(!document.head.querySelector("link[data-vanilla-agent]")&&n){let o=document.createElement("link");o.rel="stylesheet",o.href=n,o.setAttribute("data-vanilla-agent","true"),document.head.appendChild(o)}},Oo=t=>{var b;let n=rr(t.target),r=document.createElement("div");r.className="vanilla-agent-host",n.appendChild(r);let e=t.useShadowDom!==!1,o,s;if(e){let z=r.attachShadow({mode:"open"});s=z,o=document.createElement("div"),o.id="vanilla-agent-root",z.appendChild(o),_o(z)}else s=r,o=document.createElement("div"),o.id="vanilla-agent-root",r.appendChild(o),_o(r);let a=Tn(o,t.config,{debugTools:t.debugTools});(b=t.onReady)==null||b.call(t);let c={...a,host:r,destroy(){a.destroy(),r.remove(),t.windowKey&&typeof window!="undefined"&&delete window[t.windowKey]}};return t.windowKey&&typeof window!="undefined"&&(window[t.windowKey]=c),c};var ir=t=>{if(!t)return null;try{return JSON.parse(t)}catch(n){return typeof console!="undefined"&&console.error("[AgentWidget] Failed to parse stored state:",n),null}},ar=t=>t.map(n=>({...n,streaming:!1})),lr=(t="vanilla-agent-state")=>{let n=()=>typeof window=="undefined"||!window.localStorage?null:window.localStorage;return{load:()=>{let r=n();return r?ir(r.getItem(t)):null},save:r=>{let e=n();if(e)try{let o={...r,messages:r.messages?ar(r.messages):void 0};e.setItem(t,JSON.stringify(o))}catch(o){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",o)}},clear:()=>{let r=n();if(r)try{r.removeItem(t)}catch(e){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear stored state:",e)}}}};var vs=Oo;export{Ut as AgentWidgetClient,Zt as AgentWidgetSession,nt as DEFAULT_WIDGET_CONFIG,nn as createActionManager,Tn as createAgentExperience,Jo as createFlexibleJsonStreamParser,dn as createJsonStreamParser,lr as createLocalStorageAdapter,an as createPlainTextParser,ln as createRegexJsonParser,cn as createXmlParser,vs as default,Kt as defaultActionHandlers,tn as defaultJsonActionParser,Uo as directivePostprocessor,rn as escapeHtml,Oo as initAgentWidget,Wo as markdownPostprocessor,xn as mergeWithDefaults,en as pluginRegistry};
|
|
16
16
|
//# sourceMappingURL=index.js.map
|