vanilla-agent 1.22.0 → 1.24.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 +26 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +291 -69
- package/dist/index.d.ts +291 -69
- package/dist/index.global.js +48 -44
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +26 -22
- package/dist/index.js.map +1 -1
- package/dist/widget.css +224 -0
- package/package.json +2 -2
- package/src/client.ts +180 -5
- package/src/components/feedback.ts +377 -0
- package/src/index.ts +13 -1
- package/src/session.ts +55 -3
- package/src/styles/widget.css +224 -0
- package/src/types.ts +58 -6
- package/src/ui.ts +95 -1
- package/src/utils/code-generators.ts +237 -0
- package/src/utils/message-id.ts +35 -0
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{Marked as
|
|
2
|
-
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\"),
|
|
3
|
-
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return
|
|
4
|
-
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return l[1]}return null};return{getExtractedText:()=>n,processChunk:async t=>{if(t.length<=e)return n!==null?{text:n,raw:t}:null;let r=t.trim();if(!r.startsWith("{")&&!r.startsWith("["))return null;let s=o(t);return s!==null&&(n=s),e=t.length,n!==null?{text:n,raw:t}:null},close:async()=>{}}},mn=n=>{try{let e=JSON.parse(n);if(e&&typeof e=="object"&&typeof e.text=="string")return e.text}catch{return null}return null},Tn=()=>{let n={processChunk:e=>null,getExtractedText:()=>null};return n.__isPlainTextParser=!0,n},En=()=>{var e;let n=$o();return{processChunk:async o=>{let t=o.trim();return!t.startsWith("{")&&!t.startsWith("[")?null:n.processChunk(o)},getExtractedText:n.getExtractedText.bind(n),close:(e=n.close)==null?void 0:e.bind(n)}},Wn=()=>{let n=null,e=0;return{getExtractedText:()=>n,processChunk:o=>{let t=o.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;if(o.length<=e)return n!==null||n===""?{text:n||"",raw:o}:null;try{let r=ao(o,lo|co);r&&typeof r=="object"&&(r.component&&typeof r.component=="string"?n=typeof r.text=="string"?hn(r.text):"":r.type==="init"&&r.form?n="":typeof r.text=="string"&&(n=hn(r.text)))}catch{}return e=o.length,n!==null?{text:n,raw:o}:null},close:()=>{}}},Oo=n=>{let e=null,o=0,r=n||(s=>{if(!s||typeof s!="object")return null;let i=l=>typeof l=="string"?hn(l):null;if(s.component&&typeof s.component=="string")return typeof s.text=="string"?hn(s.text):"";if(s.type==="init"&&s.form)return"";if(s.action)switch(s.action){case"nav_then_click":return i(s.on_load_text)||i(s.text)||null;case"message":case"message_and_click":case"checkout":return i(s.text)||null;default:return i(s.text)||i(s.display_text)||i(s.message)||null}return i(s.text)||i(s.display_text)||i(s.message)||i(s.content)||null});return{getExtractedText:()=>e,processChunk:s=>{let i=s.trim();if(!i.startsWith("{")&&!i.startsWith("["))return null;if(s.length<=o)return e!==null?{text:e,raw:s}:null;try{let l=ao(s,lo|co),d=r(l);d!==null&&(e=d)}catch{}return o=s.length,{text:e||"",raw:s}},close:()=>{}}},Mn=()=>{let n=null;return{processChunk:e=>{if(!e.trim().startsWith("<"))return null;let t=e.match(/<text[^>]*>([\s\S]*?)<\/text>/);return t&&t[1]?(n=t[1],{text:n,raw:e}):null},getExtractedText:()=>n}};var Fo="https://api.travrse.ai/v1/dispatch",Do="https://api.travrse.ai";function No(n){switch(n){case"json":return Wn;case"regex-json":return En;case"xml":return Mn;case"plain":default:return Tn}}var Xt=class{constructor(e={}){this.config=e;this.clientSession=null;this.sessionInitPromise=null;var o,t,r;this.apiUrl=(o=e.apiUrl)!=null?o:Fo,this.headers={"Content-Type":"application/json",...e.headers},this.debug=!!e.debug,this.createStreamParser=(t=e.streamParser)!=null?t:No(e.parserType),this.contextProviders=(r=e.contextProviders)!=null?r:[],this.requestMiddleware=e.requestMiddleware,this.customFetch=e.customFetch,this.parseSSEEvent=e.parseSSEEvent,this.getHeaders=e.getHeaders}isClientTokenMode(){return!!this.config.clientToken}getClientApiUrl(e){var t;let o=((t=this.config.apiUrl)==null?void 0:t.replace(/\/+$/,"").replace(/\/v1\/dispatch$/,""))||Do;return e==="init"?`${o}/v1/client/init`:`${o}/v1/client/chat`}getClientSession(){return this.clientSession}async initSession(){var e,o;if(!this.isClientTokenMode())throw new Error("initSession() only available in client token mode");if(this.clientSession&&new Date<this.clientSession.expiresAt)return this.clientSession;if(this.sessionInitPromise)return this.sessionInitPromise;this.sessionInitPromise=this._doInitSession();try{let t=await this.sessionInitPromise;return this.clientSession=t,(o=(e=this.config).onSessionInit)==null||o.call(e,t),t}finally{this.sessionInitPromise=null}}async _doInitSession(){let e=await fetch(this.getClientApiUrl("init"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:this.config.clientToken,flow_id:this.config.flowId})});if(!e.ok){let t=await e.json().catch(()=>({error:"Session initialization failed"}));throw e.status===401?new Error(`Invalid client token: ${t.hint||t.error}`):e.status===403?new Error(`Origin not allowed: ${t.hint||t.error}`):new Error(t.error||"Failed to initialize session")}let o=await e.json();return{sessionId:o.session_id,expiresAt:new Date(o.expires_at),flow:o.flow,config:{welcomeMessage:o.config.welcome_message,placeholder:o.config.placeholder,theme:o.config.theme}}}clearClientSession(){this.clientSession=null,this.sessionInitPromise=null}async dispatch(e,o){return this.isClientTokenMode()?this.dispatchClientToken(e,o):this.dispatchProxy(e,o)}async dispatchClientToken(e,o){var r,s,i,l;let t=new AbortController;e.signal&&e.signal.addEventListener("abort",()=>t.abort()),o({type:"status",status:"connecting"});try{let d=await this.initSession();if(new Date>=new Date(d.expiresAt.getTime()-6e4)){this.clientSession=null,(s=(r=this.config).onSessionExpired)==null||s.call(r);let y=new Error("Session expired. Please refresh to continue.");throw o({type:"error",error:y}),y}let u={session_id:d.sessionId,messages:e.messages.map(y=>({role:y.role,content:y.rawContent||y.content}))};this.debug&&console.debug("[AgentWidgetClient] client token dispatch",u);let c=await fetch(this.getClientApiUrl("chat"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u),signal:t.signal});if(!c.ok){let y=await c.json().catch(()=>({error:"Chat request failed"}));if(c.status===401){this.clientSession=null,(l=(i=this.config).onSessionExpired)==null||l.call(i);let b=new Error("Session expired. Please refresh to continue.");throw o({type:"error",error:b}),b}if(c.status===429){let b=new Error(y.hint||"Message limit reached for this session.");throw o({type:"error",error:b}),b}let m=new Error(y.error||"Failed to send message");throw o({type:"error",error:m}),m}if(!c.body){let y=new Error("No response body received");throw o({type:"error",error:y}),y}o({type:"status",status:"connected"});try{await this.streamResponse(c.body,o)}finally{o({type:"status",status:"idle"})}}catch(d){let u=d instanceof Error?d:new Error(String(d));throw!u.message.includes("Session expired")&&!u.message.includes("Message limit")&&o({type:"error",error:u}),u}}async dispatchProxy(e,o){let t=new AbortController;e.signal&&e.signal.addEventListener("abort",()=>t.abort()),o({type:"status",status:"connecting"});let r=await this.buildPayload(e.messages);this.debug&&console.debug("[AgentWidgetClient] dispatch payload",r);let s={...this.headers};if(this.getHeaders)try{let l=await this.getHeaders();s={...s,...l}}catch(l){typeof console!="undefined"&&console.error("[AgentWidget] getHeaders error:",l)}let i;if(this.customFetch)try{i=await this.customFetch(this.apiUrl,{method:"POST",headers:s,body:JSON.stringify(r),signal:t.signal},r)}catch(l){let d=l instanceof Error?l:new Error(String(l));throw o({type:"error",error:d}),d}else i=await fetch(this.apiUrl,{method:"POST",headers:s,body:JSON.stringify(r),signal:t.signal});if(!i.ok||!i.body){let l=new Error(`Chat backend request failed: ${i.status} ${i.statusText}`);throw o({type:"error",error:l}),l}o({type:"status",status:"connected"});try{await this.streamResponse(i.body,o)}finally{o({type:"status",status:"idle"})}}async buildPayload(e){let t={messages:e.slice().sort((r,s)=>{let i=new Date(r.createdAt).getTime(),l=new Date(s.createdAt).getTime();return i-l}).map(r=>({role:r.role,content:r.rawContent||r.content,createdAt:r.createdAt})),...this.config.flowId&&{flowId:this.config.flowId}};if(this.contextProviders.length){let r={};await Promise.all(this.contextProviders.map(async s=>{try{let i=await s({messages:e,config:this.config});i&&typeof i=="object"&&Object.assign(r,i)}catch(i){typeof console!="undefined"&&console.warn("[AgentWidget] Context provider failed:",i)}})),Object.keys(r).length&&(t.context=r)}if(this.requestMiddleware)try{let r=await this.requestMiddleware({payload:{...t},config:this.config});if(r&&typeof r=="object")return r}catch(r){typeof console!="undefined"&&console.error("[AgentWidget] Request middleware error:",r)}return t}async handleCustomSSEEvent(e,o,t,r,s){if(!this.parseSSEEvent)return!1;try{let i=await this.parseSSEEvent(e);if(i===null)return!1;let l=()=>{if(t.current)return t.current;let d={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"assistant",sequence:s()};return t.current=d,r(d),d};if(i.text!==void 0){let d=l();d.content+=i.text,r(d)}return i.done&&(t.current&&(t.current.streaming=!1,r(t.current)),o({type:"status",status:"idle"})),i.error&&o({type:"error",error:new Error(i.error)}),!0}catch(i){return typeof console!="undefined"&&console.error("[AgentWidget] parseSSEEvent error:",i),!1}}async streamResponse(e,o){var De,oe,$,qe,Xe,tt,bt,Ct,q,he,mt,ft,Ve,nt,L,Re,it,at,Tt,wt,$e,st,Ue,U,lt,Ae,Oe,Z,Te,Ee,ze,Je,xt,kt,yt,Et,St,we,Bt,ke,Ye,At,Ft,Wt,Dt,Mt,ln,dn,cn,Cn,Nt,jt,ot,Jt,Zt,Qt;let t=e.getReader(),r=new TextDecoder,s="",i=Date.now(),l=0,d=()=>i+l++,u=S=>{let X=S.reasoning?{...S.reasoning,chunks:[...S.reasoning.chunks]}:void 0,te=S.toolCall?{...S.toolCall,chunks:S.toolCall.chunks?[...S.toolCall.chunks]:void 0}:void 0,be=S.tools?S.tools.map(xe=>({...xe,chunks:xe.chunks?[...xe.chunks]:void 0})):void 0;return{...S,reasoning:X,toolCall:te,tools:be}},c=S=>{o({type:"message",message:u(S)})},y=null,m={current:null},b=new Map,f=new Map,D={lastId:null,byStep:new Map},j={lastId:null,byCall:new Map},h=S=>{if(S==null)return null;try{return String(S)}catch{return null}},x=S=>{var X,te,be,xe,Ne;return h((Ne=(xe=(be=(te=(X=S.stepId)!=null?X:S.step_id)!=null?te:S.step)!=null?be:S.parentId)!=null?xe:S.flowStepId)!=null?Ne:S.flow_step_id)},R=S=>{var X,te,be,xe,Ne,Se,A;return h((A=(Se=(Ne=(xe=(be=(te=(X=S.callId)!=null?X:S.call_id)!=null?te:S.requestId)!=null?be:S.request_id)!=null?xe:S.toolCallId)!=null?Ne:S.tool_call_id)!=null?Se:S.stepId)!=null?A:S.step_id)},w=()=>y||(y={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,sequence:d()},c(y),y),K=(S,X)=>{D.lastId=X,S&&D.byStep.set(S,X)},T=(S,X)=>{var Ne;let te=(Ne=S.reasoningId)!=null?Ne:S.id,be=x(S);if(te){let Se=String(te);return K(be,Se),Se}if(be){let Se=D.byStep.get(be);if(Se)return D.lastId=Se,Se}if(D.lastId&&!X)return D.lastId;if(!X)return null;let xe=`reason-${d()}`;return K(be,xe),xe},O=S=>{let X=b.get(S);if(X)return X;let te={id:`reason-${S}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"reasoning",sequence:d(),reasoning:{id:S,status:"streaming",chunks:[]}};return b.set(S,te),c(te),te},ee=(S,X)=>{j.lastId=X,S&&j.byCall.set(S,X)},P=(S,X)=>{var Ne;let te=(Ne=S.toolId)!=null?Ne:S.id,be=R(S);if(te){let Se=String(te);return ee(be,Se),Se}if(be){let Se=j.byCall.get(be);if(Se)return j.lastId=Se,Se}if(j.lastId&&!X)return j.lastId;if(!X)return null;let xe=`tool-${d()}`;return ee(be,xe),xe},Y=S=>{let X=f.get(S);if(X)return X;let te={id:`tool-${S}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"tool",sequence:d(),toolCall:{id:S,status:"pending"}};return f.set(S,te),c(te),te},fe=S=>{if(typeof S=="number"&&Number.isFinite(S))return S;if(typeof S=="string"){let X=Number(S);if(!Number.isNaN(X)&&Number.isFinite(X))return X;let te=Date.parse(S);if(!Number.isNaN(te))return te}return Date.now()},J=S=>{if(typeof S=="string")return S;if(S==null)return"";try{return JSON.stringify(S)}catch{return String(S)}},F=new Map,ne=new Map;for(;;){let{done:S,value:X}=await t.read();if(S)break;s+=r.decode(X,{stream:!0});let te=s.split(`
|
|
1
|
+
import{Marked as No}from"marked";var Oo=n=>{if(n)return n},wn=n=>{var r,o;let e=n==null?void 0:n.markedOptions,s=new No({gfm:(r=e==null?void 0:e.gfm)!=null?r:!0,breaks:(o=e==null?void 0:e.breaks)!=null?o:!0,pedantic:e==null?void 0:e.pedantic,silent:e==null?void 0:e.silent}),t=Oo(n==null?void 0:n.renderer);return t&&s.use({renderer:t}),i=>s.parse(i)},yn=n=>n?wn({markedOptions:n.options,renderer:n.renderer}):wn(),Do=wn(),go=n=>Do(n),Wn=n=>n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),ho=n=>n.replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"),po=n=>`%%FORM_PLACEHOLDER_${n}%%`,mo=(n,e)=>{let s=n;return s=s.replace(/<Directive>([\s\S]*?)<\/Directive>/gi,(t,r)=>{try{let o=JSON.parse(r.trim());if(o&&typeof o=="object"&&o.component==="form"&&o.type){let i=po(e.length);return e.push({token:i,type:String(o.type)}),i}}catch{return t}return t}),s=s.replace(/<Form\s+type="([^"]+)"\s*\/>/gi,(t,r)=>{let o=po(e.length);return e.push({token:o,type:r}),o}),s},jo=n=>{let e=yn(n);return s=>{let t=[],r=mo(s,t),o=e(r);return t.forEach(({token:i,type:l})=>{let c=new RegExp(i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),f=`<div class="tvw-form-directive" data-tv-form="${ho(l)}"></div>`;o=o.replace(c,f)}),o}},_o=n=>{let e=[],s=mo(n,e),t=go(s);return e.forEach(({token:r,type:o})=>{let i=new RegExp(r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),c=`<div class="tvw-form-directive" data-tv-form="${ho(o)}"></div>`;t=t.replace(i,c)}),t};import{parse as fo,STR as wo,OBJ as yo}from"partial-json";var vn=n=>n.replace(/\\n/g,`
|
|
2
|
+
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\"),kn=n=>{if(n===null)return"null";if(n===void 0)return"";if(typeof n=="string")return n;if(typeof n=="number"||typeof n=="boolean")return String(n);try{return JSON.stringify(n,null,2)}catch{return String(n)}},qo=n=>{var i,l;let e=(i=n.completedAt)!=null?i:Date.now(),s=(l=n.startedAt)!=null?l:e,r=(n.durationMs!==void 0?n.durationMs:Math.max(0,e-s))/1e3;return r<.1?"Thought for <0.1 seconds":`Thought for ${r>=10?Math.round(r).toString():r.toFixed(1).replace(/\.0$/,"")} seconds`},vo=n=>n.status==="complete"?qo(n):n.status==="pending"?"Waiting":"",Uo=n=>{var r,o,i;let s=(typeof n.duration=="number"?n.duration:typeof n.durationMs=="number"?n.durationMs:Math.max(0,((r=n.completedAt)!=null?r:Date.now())-((i=(o=n.startedAt)!=null?o:n.completedAt)!=null?i:Date.now())))/1e3;return s<.1?"Used tool for <0.1 seconds":`Used tool for ${s>=10?Math.round(s).toString():s.toFixed(1).replace(/\.0$/,"")} seconds`};var bo=n=>n.status==="complete"?Uo(n):"Using tool...",zo=()=>{let n=null,e=0,s=t=>{let r=/"text"\s*:\s*"((?:[^"\\]|\\.|")*?)"/,o=t.match(r);if(o&&o[1])try{return o[1].replace(/\\n/g,`
|
|
3
|
+
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return o[1]}let i=/"text"\s*:\s*"((?:[^"\\]|\\.)*)/,l=t.match(i);if(l&&l[1])try{return l[1].replace(/\\n/g,`
|
|
4
|
+
`).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return l[1]}return null};return{getExtractedText:()=>n,processChunk:async t=>{if(t.length<=e)return n!==null?{text:n,raw:t}:null;let r=t.trim();if(!r.startsWith("{")&&!r.startsWith("["))return null;let o=s(t);return o!==null&&(n=o),e=t.length,n!==null?{text:n,raw:t}:null},close:async()=>{}}},bn=n=>{try{let e=JSON.parse(n);if(e&&typeof e=="object"&&typeof e.text=="string")return e.text}catch{return null}return null},Ln=()=>{let n={processChunk:e=>null,getExtractedText:()=>null};return n.__isPlainTextParser=!0,n},Bn=()=>{var e;let n=zo();return{processChunk:async s=>{let t=s.trim();return!t.startsWith("{")&&!t.startsWith("[")?null:n.processChunk(s)},getExtractedText:n.getExtractedText.bind(n),close:(e=n.close)==null?void 0:e.bind(n)}},Hn=()=>{let n=null,e=0;return{getExtractedText:()=>n,processChunk:s=>{let t=s.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;if(s.length<=e)return n!==null||n===""?{text:n||"",raw:s}:null;try{let r=fo(s,wo|yo);r&&typeof r=="object"&&(r.component&&typeof r.component=="string"?n=typeof r.text=="string"?vn(r.text):"":r.type==="init"&&r.form?n="":typeof r.text=="string"&&(n=vn(r.text)))}catch{}return e=s.length,n!==null?{text:n,raw:s}:null},close:()=>{}}},Yo=n=>{let e=null,s=0,r=n||(o=>{if(!o||typeof o!="object")return null;let i=l=>typeof l=="string"?vn(l):null;if(o.component&&typeof o.component=="string")return typeof o.text=="string"?vn(o.text):"";if(o.type==="init"&&o.form)return"";if(o.action)switch(o.action){case"nav_then_click":return i(o.on_load_text)||i(o.text)||null;case"message":case"message_and_click":case"checkout":return i(o.text)||null;default:return i(o.text)||i(o.display_text)||i(o.message)||null}return i(o.text)||i(o.display_text)||i(o.message)||i(o.content)||null});return{getExtractedText:()=>e,processChunk:o=>{let i=o.trim();if(!i.startsWith("{")&&!i.startsWith("["))return null;if(o.length<=s)return e!==null?{text:e,raw:o}:null;try{let l=fo(o,wo|yo),c=r(l);c!==null&&(e=c)}catch{}return s=o.length,{text:e||"",raw:o}},close:()=>{}}},$n=()=>{let n=null;return{processChunk:e=>{if(!e.trim().startsWith("<"))return null;let t=e.match(/<text[^>]*>([\s\S]*?)<\/text>/);return t&&t[1]?(n=t[1],{text:n,raw:e}):null},getExtractedText:()=>n}};var Jo="https://api.travrse.ai/v1/dispatch",Co="https://api.travrse.ai";function Ko(n){switch(n){case"json":return Hn;case"regex-json":return Bn;case"xml":return $n;case"plain":default:return Ln}}var Xt=class{constructor(e={}){this.config=e;this.clientSession=null;this.sessionInitPromise=null;var s,t,r;this.apiUrl=(s=e.apiUrl)!=null?s:Jo,this.headers={"Content-Type":"application/json",...e.headers},this.debug=!!e.debug,this.createStreamParser=(t=e.streamParser)!=null?t:Ko(e.parserType),this.contextProviders=(r=e.contextProviders)!=null?r:[],this.requestMiddleware=e.requestMiddleware,this.customFetch=e.customFetch,this.parseSSEEvent=e.parseSSEEvent,this.getHeaders=e.getHeaders}isClientTokenMode(){return!!this.config.clientToken}getClientApiUrl(e){var t;let s=((t=this.config.apiUrl)==null?void 0:t.replace(/\/+$/,"").replace(/\/v1\/dispatch$/,""))||Co;return e==="init"?`${s}/v1/client/init`:`${s}/v1/client/chat`}getClientSession(){return this.clientSession}async initSession(){var e,s;if(!this.isClientTokenMode())throw new Error("initSession() only available in client token mode");if(this.clientSession&&new Date<this.clientSession.expiresAt)return this.clientSession;if(this.sessionInitPromise)return this.sessionInitPromise;this.sessionInitPromise=this._doInitSession();try{let t=await this.sessionInitPromise;return this.clientSession=t,(s=(e=this.config).onSessionInit)==null||s.call(e,t),t}finally{this.sessionInitPromise=null}}async _doInitSession(){let e=await fetch(this.getClientApiUrl("init"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:this.config.clientToken,flow_id:this.config.flowId})});if(!e.ok){let t=await e.json().catch(()=>({error:"Session initialization failed"}));throw e.status===401?new Error(`Invalid client token: ${t.hint||t.error}`):e.status===403?new Error(`Origin not allowed: ${t.hint||t.error}`):new Error(t.error||"Failed to initialize session")}let s=await e.json();return{sessionId:s.session_id,expiresAt:new Date(s.expires_at),flow:s.flow,config:{welcomeMessage:s.config.welcome_message,placeholder:s.config.placeholder,theme:s.config.theme}}}clearClientSession(){this.clientSession=null,this.sessionInitPromise=null}getFeedbackApiUrl(){var s;return`${((s=this.config.apiUrl)==null?void 0:s.replace(/\/+$/,"").replace(/\/v1\/dispatch$/,""))||Co}/v1/client/feedback`}async sendFeedback(e){var o,i;if(!this.isClientTokenMode())throw new Error("sendFeedback() only available in client token mode");if(!this.getClientSession())throw new Error("No active session. Please initialize session first.");if(["upvote","downvote","copy"].includes(e.type)&&!e.message_id)throw new Error(`message_id is required for ${e.type} feedback type`);if(e.type==="csat"&&(e.rating===void 0||e.rating<1||e.rating>5))throw new Error("CSAT rating must be between 1 and 5");if(e.type==="nps"&&(e.rating===void 0||e.rating<0||e.rating>10))throw new Error("NPS rating must be between 0 and 10");this.debug&&console.debug("[AgentWidgetClient] sending feedback",e);let r=await fetch(this.getFeedbackApiUrl(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!r.ok){let l=await r.json().catch(()=>({error:"Feedback submission failed"}));throw r.status===401?(this.clientSession=null,(i=(o=this.config).onSessionExpired)==null||i.call(o),new Error("Session expired. Please refresh to continue.")):new Error(l.error||"Failed to submit feedback")}}async submitMessageFeedback(e,s){let t=this.getClientSession();if(!t)throw new Error("No active session. Please initialize session first.");return this.sendFeedback({session_id:t.sessionId,message_id:e,type:s})}async submitCSATFeedback(e,s){let t=this.getClientSession();if(!t)throw new Error("No active session. Please initialize session first.");return this.sendFeedback({session_id:t.sessionId,type:"csat",rating:e,comment:s})}async submitNPSFeedback(e,s){let t=this.getClientSession();if(!t)throw new Error("No active session. Please initialize session first.");return this.sendFeedback({session_id:t.sessionId,type:"nps",rating:e,comment:s})}async dispatch(e,s){return this.isClientTokenMode()?this.dispatchClientToken(e,s):this.dispatchProxy(e,s)}async dispatchClientToken(e,s){var r,o,i,l;let t=new AbortController;e.signal&&e.signal.addEventListener("abort",()=>t.abort()),s({type:"status",status:"connecting"});try{let c=await this.initSession();if(new Date>=new Date(c.expiresAt.getTime()-6e4)){this.clientSession=null,(o=(r=this.config).onSessionExpired)==null||o.call(r);let u=new Error("Session expired. Please refresh to continue.");throw s({type:"error",error:u}),u}let d=await this.buildPayload(e.messages),f={session_id:c.sessionId,messages:e.messages.map(u=>({id:u.id,role:u.role,content:u.rawContent||u.content})),...e.assistantMessageId&&{assistant_message_id:e.assistantMessageId},...d.metadata&&{metadata:d.metadata},...d.context&&{context:d.context}};this.debug&&console.debug("[AgentWidgetClient] client token dispatch",f);let w=await fetch(this.getClientApiUrl("chat"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f),signal:t.signal});if(!w.ok){let u=await w.json().catch(()=>({error:"Chat request failed"}));if(w.status===401){this.clientSession=null,(l=(i=this.config).onSessionExpired)==null||l.call(i);let g=new Error("Session expired. Please refresh to continue.");throw s({type:"error",error:g}),g}if(w.status===429){let g=new Error(u.hint||"Message limit reached for this session.");throw s({type:"error",error:g}),g}let C=new Error(u.error||"Failed to send message");throw s({type:"error",error:C}),C}if(!w.body){let u=new Error("No response body received");throw s({type:"error",error:u}),u}s({type:"status",status:"connected"});try{await this.streamResponse(w.body,s,e.assistantMessageId)}finally{s({type:"status",status:"idle"})}}catch(c){let d=c instanceof Error?c:new Error(String(c));throw!d.message.includes("Session expired")&&!d.message.includes("Message limit")&&s({type:"error",error:d}),d}}async dispatchProxy(e,s){let t=new AbortController;e.signal&&e.signal.addEventListener("abort",()=>t.abort()),s({type:"status",status:"connecting"});let r=await this.buildPayload(e.messages);this.debug&&console.debug("[AgentWidgetClient] dispatch payload",r);let o={...this.headers};if(this.getHeaders)try{let l=await this.getHeaders();o={...o,...l}}catch(l){typeof console!="undefined"&&console.error("[AgentWidget] getHeaders error:",l)}let i;if(this.customFetch)try{i=await this.customFetch(this.apiUrl,{method:"POST",headers:o,body:JSON.stringify(r),signal:t.signal},r)}catch(l){let c=l instanceof Error?l:new Error(String(l));throw s({type:"error",error:c}),c}else i=await fetch(this.apiUrl,{method:"POST",headers:o,body:JSON.stringify(r),signal:t.signal});if(!i.ok||!i.body){let l=new Error(`Chat backend request failed: ${i.status} ${i.statusText}`);throw s({type:"error",error:l}),l}s({type:"status",status:"connected"});try{await this.streamResponse(i.body,s)}finally{s({type:"status",status:"idle"})}}async buildPayload(e){let t={messages:e.slice().sort((r,o)=>{let i=new Date(r.createdAt).getTime(),l=new Date(o.createdAt).getTime();return i-l}).map(r=>({role:r.role,content:r.rawContent||r.content,createdAt:r.createdAt})),...this.config.flowId&&{flowId:this.config.flowId}};if(this.contextProviders.length){let r={};await Promise.all(this.contextProviders.map(async o=>{try{let i=await o({messages:e,config:this.config});i&&typeof i=="object"&&Object.assign(r,i)}catch(i){typeof console!="undefined"&&console.warn("[AgentWidget] Context provider failed:",i)}})),Object.keys(r).length&&(t.context=r)}if(this.requestMiddleware)try{let r=await this.requestMiddleware({payload:{...t},config:this.config});if(r&&typeof r=="object")return r}catch(r){typeof console!="undefined"&&console.error("[AgentWidget] Request middleware error:",r)}return t}async handleCustomSSEEvent(e,s,t,r,o){if(!this.parseSSEEvent)return!1;try{let i=await this.parseSSEEvent(e);if(i===null)return!1;let l=()=>{if(t.current)return t.current;let c={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"assistant",sequence:o()};return t.current=c,r(c),c};if(i.text!==void 0){let c=l();c.content+=i.text,r(c)}return i.done&&(t.current&&(t.current.streaming=!1,r(t.current)),s({type:"status",status:"idle"})),i.error&&s({type:"error",error:new Error(i.error)}),!0}catch(i){return typeof console!="undefined"&&console.error("[AgentWidget] parseSSEEvent error:",i),!1}}async streamResponse(e,s,t){var re,q,qe,Ve,nt,bt,Ct,Y,fe,mt,ft,Ge,st,H,He,at,lt,Tt,wt,Ie,ot,Ue,R,dt,Se,Oe,te,Ae,Te,ze,Ye,xt,Lt,yt,Et,St,ye,Bt,ke,Je,At,Nt,Mt,Ot,Wt,gn,hn,mn,En,Dt,jt,Ke,Yt,nn,sn,on;let r=e.getReader(),o=new TextDecoder,i="",l=Date.now(),c=0,d=()=>l+c++,f=A=>{let V=A.reasoning?{...A.reasoning,chunks:[...A.reasoning.chunks]}:void 0,ie=A.toolCall?{...A.toolCall,chunks:A.toolCall.chunks?[...A.toolCall.chunks]:void 0}:void 0,ve=A.tools?A.tools.map(Fe=>({...Fe,chunks:Fe.chunks?[...Fe.chunks]:void 0})):void 0;return{...A,reasoning:V,toolCall:ie,tools:ve}},w=A=>{s({type:"message",message:f(A)})},u=null,C={current:null},g=new Map,U=new Map,I={lastId:null,byStep:new Map},h={lastId:null,byCall:new Map},b=A=>{if(A==null)return null;try{return String(A)}catch{return null}},W=A=>{var V,ie,ve,Fe,Ne;return b((Ne=(Fe=(ve=(ie=(V=A.stepId)!=null?V:A.step_id)!=null?ie:A.step)!=null?ve:A.parentId)!=null?Fe:A.flowStepId)!=null?Ne:A.flow_step_id)},v=A=>{var V,ie,ve,Fe,Ne,ue,$;return b(($=(ue=(Ne=(Fe=(ve=(ie=(V=A.callId)!=null?V:A.call_id)!=null?ie:A.requestId)!=null?ve:A.request_id)!=null?Fe:A.toolCallId)!=null?Ne:A.tool_call_id)!=null?ue:A.stepId)!=null?$:A.step_id)},D=()=>u||(u={id:t!=null?t:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,sequence:d()},w(u),u),x=(A,V)=>{I.lastId=V,A&&I.byStep.set(A,V)},S=(A,V)=>{var Ne;let ie=(Ne=A.reasoningId)!=null?Ne:A.id,ve=W(A);if(ie){let ue=String(ie);return x(ve,ue),ue}if(ve){let ue=I.byStep.get(ve);if(ue)return I.lastId=ue,ue}if(I.lastId&&!V)return I.lastId;if(!V)return null;let Fe=`reason-${d()}`;return x(ve,Fe),Fe},X=A=>{let V=g.get(A);if(V)return V;let ie={id:`reason-${A}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"reasoning",sequence:d(),reasoning:{id:A,status:"streaming",chunks:[]}};return g.set(A,ie),w(ie),ie},B=(A,V)=>{h.lastId=V,A&&h.byCall.set(A,V)},j=(A,V)=>{var Ne;let ie=(Ne=A.toolId)!=null?Ne:A.id,ve=v(A);if(ie){let ue=String(ie);return B(ve,ue),ue}if(ve){let ue=h.byCall.get(ve);if(ue)return h.lastId=ue,ue}if(h.lastId&&!V)return h.lastId;if(!V)return null;let Fe=`tool-${d()}`;return B(ve,Fe),Fe},Z=A=>{let V=U.get(A);if(V)return V;let ie={id:`tool-${A}`,role:"assistant",content:"",createdAt:new Date().toISOString(),streaming:!0,variant:"tool",sequence:d(),toolCall:{id:A,status:"pending"}};return U.set(A,ie),w(ie),ie},_=A=>{if(typeof A=="number"&&Number.isFinite(A))return A;if(typeof A=="string"){let V=Number(A);if(!Number.isNaN(V)&&Number.isFinite(V))return V;let ie=Date.parse(A);if(!Number.isNaN(ie))return ie}return Date.now()},K=A=>{if(typeof A=="string")return A;if(A==null)return"";try{return JSON.stringify(A)}catch{return String(A)}},Q=new Map,ne=new Map;for(;;){let{done:A,value:V}=await r.read();if(A)break;i+=o.decode(V,{stream:!0});let ie=i.split(`
|
|
5
5
|
|
|
6
|
-
`);
|
|
7
|
-
`),Ne="message",Se="";for(let Q of xe)Q.startsWith("event:")?Ne=Q.replace("event:","").trim():Q.startsWith("data:")&&(Se+=Q.replace("data:","").trim());if(!Se)continue;let A;try{A=JSON.parse(Se)}catch(Q){o({type:"error",error:Q instanceof Error?Q:new Error("Failed to parse chat stream payload")});continue}let gt=Ne!=="message"?Ne:(oe=A.type)!=null?oe:"message";if(this.parseSSEEvent){m.current=y;let Q=await this.handleCustomSSEEvent(A,o,m,c,d);if(m.current&&!y&&(y=m.current),Q)continue}if(gt==="reason_start"){let Q=($=T(A,!0))!=null?$:`reason-${d()}`,E=O(Q);E.reasoning=(qe=E.reasoning)!=null?qe:{id:Q,status:"streaming",chunks:[]},E.reasoning.startedAt=(tt=E.reasoning.startedAt)!=null?tt:fe((Xe=A.startedAt)!=null?Xe:A.timestamp),E.reasoning.completedAt=void 0,E.reasoning.durationMs=void 0,E.streaming=!0,E.reasoning.status="streaming",c(E)}else if(gt==="reason_chunk"){let Q=(Ct=(bt=T(A,!1))!=null?bt:T(A,!0))!=null?Ct:`reason-${d()}`,E=O(Q);E.reasoning=(q=E.reasoning)!=null?q:{id:Q,status:"streaming",chunks:[]},E.reasoning.startedAt=(mt=E.reasoning.startedAt)!=null?mt:fe((he=A.startedAt)!=null?he:A.timestamp);let v=(nt=(Ve=(ft=A.reasoningText)!=null?ft:A.text)!=null?Ve:A.delta)!=null?nt:"";if(v&&A.hidden!==!0&&E.reasoning.chunks.push(String(v)),E.reasoning.status=A.done?"complete":"streaming",A.done){E.reasoning.completedAt=fe((L=A.completedAt)!=null?L:A.timestamp);let B=(Re=E.reasoning.startedAt)!=null?Re:Date.now();E.reasoning.durationMs=Math.max(0,((it=E.reasoning.completedAt)!=null?it:Date.now())-B)}E.streaming=E.reasoning.status!=="complete",c(E)}else if(gt==="reason_complete"){let Q=(Tt=(at=T(A,!1))!=null?at:T(A,!0))!=null?Tt:`reason-${d()}`,E=b.get(Q);if(E!=null&&E.reasoning){E.reasoning.status="complete",E.reasoning.completedAt=fe((wt=A.completedAt)!=null?wt:A.timestamp);let B=($e=E.reasoning.startedAt)!=null?$e:Date.now();E.reasoning.durationMs=Math.max(0,((st=E.reasoning.completedAt)!=null?st:Date.now())-B),E.streaming=!1,c(E)}let v=x(A);v&&D.byStep.delete(v)}else if(gt==="tool_start"){let Q=(Ue=P(A,!0))!=null?Ue:`tool-${d()}`,E=Y(Q),v=(U=E.toolCall)!=null?U:{id:Q,status:"pending"};v.name=(lt=A.toolName)!=null?lt:v.name,v.status="running",A.args!==void 0&&(v.args=A.args),v.startedAt=(Oe=v.startedAt)!=null?Oe:fe((Ae=A.startedAt)!=null?Ae:A.timestamp),v.completedAt=void 0,v.durationMs=void 0,E.toolCall=v,E.streaming=!0,c(E)}else if(gt==="tool_chunk"){let Q=(Te=(Z=P(A,!1))!=null?Z:P(A,!0))!=null?Te:`tool-${d()}`,E=Y(Q),v=(Ee=E.toolCall)!=null?Ee:{id:Q,status:"running"};v.startedAt=(Je=v.startedAt)!=null?Je:fe((ze=A.startedAt)!=null?ze:A.timestamp);let B=(yt=(kt=(xt=A.text)!=null?xt:A.delta)!=null?kt:A.message)!=null?yt:"";B&&(v.chunks=(Et=v.chunks)!=null?Et:[],v.chunks.push(String(B))),v.status="running",E.toolCall=v,E.streaming=!0,c(E)}else if(gt==="tool_complete"){let Q=(we=(St=P(A,!1))!=null?St:P(A,!0))!=null?we:`tool-${d()}`,E=Y(Q),v=(Bt=E.toolCall)!=null?Bt:{id:Q,status:"running"};if(v.status="complete",A.result!==void 0&&(v.result=A.result),typeof A.duration=="number"&&(v.duration=A.duration),v.completedAt=fe((ke=A.completedAt)!=null?ke:A.timestamp),typeof A.duration=="number")v.durationMs=A.duration;else{let V=(Ye=v.startedAt)!=null?Ye:Date.now();v.durationMs=Math.max(0,((At=v.completedAt)!=null?At:Date.now())-V)}E.toolCall=v,E.streaming=!1,c(E);let B=R(A);B&&j.byCall.delete(B)}else if(gt==="step_chunk"){let Q=A.stepType,E=A.executionType;if(Q==="tool"||E==="context")continue;let v=w(),B=(Mt=(Dt=(Wt=(Ft=A.text)!=null?Ft:A.delta)!=null?Wt:A.content)!=null?Dt:A.chunk)!=null?Mt:"";if(B){let ye=((ln=ne.get(v.id))!=null?ln:"")+B;v.rawContent=ye,F.has(v.id)||F.set(v.id,this.createStreamParser());let Ge=F.get(v.id),Me=ye.trim().startsWith("{")||ye.trim().startsWith("[");if(Me&&ne.set(v.id,ye),Ge.__isPlainTextParser===!0){v.content+=B,ne.delete(v.id),F.delete(v.id),v.rawContent=void 0,c(v);continue}let ve=Ge.processChunk(ye);if(ve instanceof Promise)ve.then(de=>{var Ie;let ce=typeof de=="string"?de:(Ie=de==null?void 0:de.text)!=null?Ie:null;if(ce!==null&&ce.trim()!==""){let pe=y;pe&&pe.id===v.id&&(pe.content=ce,c(pe))}else if(!Me&&!ye.trim().startsWith("<")){let pe=y;pe&&pe.id===v.id&&(pe.content+=B,ne.delete(pe.id),F.delete(pe.id),pe.rawContent=void 0,c(pe))}}).catch(()=>{v.content+=B,ne.delete(v.id),F.delete(v.id),v.rawContent=void 0,c(v)});else{let de=typeof ve=="string"?ve:(dn=ve==null?void 0:ve.text)!=null?dn:null;de!==null&&de.trim()!==""?(v.content=de,c(v)):!Me&&!ye.trim().startsWith("<")&&(v.content+=B,ne.delete(v.id),F.delete(v.id),v.rawContent=void 0,c(v))}}if(A.isComplete){let V=(Cn=(cn=A.result)==null?void 0:cn.response)!=null?Cn:v.content;if(V){let ye=ne.get(v.id),Ge=ye!=null?ye:J(V);v.rawContent=Ge;let Me=F.get(v.id),_e=null,ve=!1;if(Me&&(_e=Me.getExtractedText(),_e===null&&(_e=mn(Ge)),_e===null)){let de=Me.processChunk(Ge);de instanceof Promise?(ve=!0,de.then(ce=>{var pe;let Ie=typeof ce=="string"?ce:(pe=ce==null?void 0:ce.text)!=null?pe:null;if(Ie!==null){let Fe=y;Fe&&Fe.id===v.id&&(Fe.content=Ie,Fe.streaming=!1,F.delete(Fe.id),ne.delete(Fe.id),c(Fe))}})):_e=typeof de=="string"?de:(Nt=de==null?void 0:de.text)!=null?Nt:null}if(!ve){_e!==null&&_e.trim()!==""?v.content=_e:ne.has(v.id)||(v.content=J(V));let de=F.get(v.id);if(de){let ce=(jt=de.close)==null?void 0:jt.call(de);ce instanceof Promise&&ce.catch(()=>{}),F.delete(v.id)}ne.delete(v.id),v.streaming=!1,c(v)}}}}else if(gt==="step_complete"){let Q=A.stepType,E=A.executionType;if(Q==="tool"||E==="context")continue;let v=(ot=A.result)==null?void 0:ot.response,B=w();if(v!=null){let V=F.get(B.id),ye=!1,Ge=!1;if(V){let Me=V.getExtractedText(),_e=ne.get(B.id),ve=_e!=null?_e:J(v);if(B.rawContent=ve,Me!==null&&Me.trim()!=="")B.content=Me,ye=!0;else{let de=mn(ve);if(de!==null)B.content=de,ye=!0;else{let ce=V.processChunk(ve);if(ce instanceof Promise)Ge=!0,ce.then(Ie=>{var Fe;let pe=typeof Ie=="string"?Ie:(Fe=Ie==null?void 0:Ie.text)!=null?Fe:null;if(pe!==null&&pe.trim()!==""){let rt=y;rt&&rt.id===B.id&&(rt.content=pe,rt.streaming=!1,F.delete(rt.id),ne.delete(rt.id),c(rt))}else{let rt=V.getExtractedText(),ht=y;ht&&ht.id===B.id&&(rt!==null&&rt.trim()!==""?ht.content=rt:ne.has(ht.id)||(ht.content=J(v)),ht.streaming=!1,F.delete(ht.id),ne.delete(ht.id),c(ht))}});else{let Ie=typeof ce=="string"?ce:(Jt=ce==null?void 0:ce.text)!=null?Jt:null;if(Ie!==null&&Ie.trim()!=="")B.content=Ie,ye=!0;else{let pe=V.getExtractedText();pe!==null&&pe.trim()!==""&&(B.content=pe,ye=!0)}}}}}if(!Ge){if(!B.rawContent){let Me=ne.get(B.id);B.rawContent=Me!=null?Me:J(v)}if(!ye&&!ne.has(B.id)&&(B.content=J(v)),V){let Me=(Zt=V.close)==null?void 0:Zt.call(V);Me instanceof Promise&&Me.catch(()=>{})}F.delete(B.id),ne.delete(B.id),B.streaming=!1,c(B)}}else F.delete(B.id),ne.delete(B.id),B.streaming=!1,c(B)}else if(gt==="flow_complete"){let Q=(Qt=A.result)==null?void 0:Qt.response;if(Q!=null){let E=w(),v=ne.get(E.id),B=v!=null?v:J(Q);E.rawContent=B;let V=J(Q),ye=F.get(E.id);if(ye){let _e=mn(B);if(_e!==null)V=_e;else{let ve=ye.processChunk(B);ve instanceof Promise&&ve.then(ce=>{var pe;let Ie=typeof ce=="string"?ce:(pe=ce==null?void 0:ce.text)!=null?pe:null;if(Ie!==null){let Fe=y;Fe&&Fe.id===E.id&&(Fe.content=Ie,Fe.streaming=!1,c(Fe))}});let de=ye.getExtractedText();de!==null&&(V=de)}}F.delete(E.id),ne.delete(E.id);let Ge=V!==E.content,Me=E.streaming!==!1;Ge&&(E.content=V),E.streaming=!1,(Ge||Me)&&c(E)}else if(y!==null){let E=y;F.delete(E.id),ne.delete(E.id),E.streaming!==!1&&(E.streaming=!1,c(E))}o({type:"status",status:"idle"})}else gt==="error"&&A.error&&o({type:"error",error:A.error instanceof Error?A.error:new Error(String(A.error))})}}}};var tn=class{constructor(e={},o){this.config=e;this.callbacks=o;this.status="idle";this.streaming=!1;this.abortController=null;this.sequenceCounter=Date.now();this.clientSession=null;this.handleEvent=e=>{var o,t;e.type==="message"?this.upsertMessage(e.message):e.type==="status"?(this.setStatus(e.status),e.status==="connecting"?this.setStreaming(!0):(e.status==="idle"||e.status==="error")&&(this.setStreaming(!1),this.abortController=null)):e.type==="error"&&(this.setStatus("error"),this.setStreaming(!1),this.abortController=null,(t=(o=this.callbacks).onError)==null||t.call(o,e.error))};var t;this.messages=[...(t=e.initialMessages)!=null?t:[]].map(r=>{var s;return{...r,sequence:(s=r.sequence)!=null?s:this.nextSequence()}}),this.messages=this.sortMessages(this.messages),this.client=new Xt(e),this.messages.length&&this.callbacks.onMessagesChanged([...this.messages]),this.callbacks.onStatusChanged(this.status)}isClientTokenMode(){return this.client.isClientTokenMode()}async initClientSession(){var e,o;if(!this.isClientTokenMode())return null;try{let t=await this.client.initSession();return this.setClientSession(t),t}catch(t){return(o=(e=this.callbacks).onError)==null||o.call(e,t instanceof Error?t:new Error(String(t))),null}}setClientSession(e){if(this.clientSession=e,e.config.welcomeMessage&&this.messages.length===0){let o={id:`welcome-${Date.now()}`,role:"assistant",content:e.config.welcomeMessage,createdAt:new Date().toISOString(),sequence:this.nextSequence()};this.appendMessage(o)}}getClientSession(){var e;return(e=this.clientSession)!=null?e:this.client.getClientSession()}isSessionValid(){let e=this.getClientSession();return e?new Date<e.expiresAt:!1}clearClientSession(){this.clientSession=null,this.client.clearClientSession()}updateConfig(e){this.config={...this.config,...e},this.client=new Xt(this.config)}getMessages(){return[...this.messages]}getStatus(){return this.status}isStreaming(){return this.streaming}injectTestEvent(e){this.handleEvent(e)}async sendMessage(e,o){var l,d,u,c,y;let t=e.trim();if(!t)return;(l=this.abortController)==null||l.abort();let r={id:`user-${Date.now()}`,role:"user",content:t,createdAt:new Date().toISOString(),sequence:this.nextSequence(),viaVoice:(o==null?void 0:o.viaVoice)||!1};this.appendMessage(r),this.setStreaming(!0);let s=new AbortController;this.abortController=s;let i=[...this.messages];try{await this.client.dispatch({messages:i,signal:s.signal},this.handleEvent)}catch(m){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,m instanceof Error?(u=(d=this.callbacks).onError)==null||u.call(d,m):(y=(c=this.callbacks).onError)==null||y.call(c,new Error(String(m)))}}cancel(){var e;(e=this.abortController)==null||e.abort(),this.abortController=null,this.setStreaming(!1),this.setStatus("idle")}clearMessages(){var e;(e=this.abortController)==null||e.abort(),this.abortController=null,this.messages=[],this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}hydrateMessages(e){var o;(o=this.abortController)==null||o.abort(),this.abortController=null,this.messages=this.sortMessages(e.map(t=>{var r;return{...t,streaming:!1,sequence:(r=t.sequence)!=null?r:this.nextSequence()}})),this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}setStatus(e){this.status!==e&&(this.status=e,this.callbacks.onStatusChanged(e))}setStreaming(e){this.streaming!==e&&(this.streaming=e,this.callbacks.onStreamingChanged(e))}appendMessage(e){let o=this.ensureSequence(e);this.messages=this.sortMessages([...this.messages,o]),this.callbacks.onMessagesChanged([...this.messages])}upsertMessage(e){let o=this.ensureSequence(e),t=this.messages.findIndex(r=>r.id===o.id);if(t===-1){this.appendMessage(o);return}this.messages=this.messages.map((r,s)=>s===t?{...r,...o}:r),this.messages=this.sortMessages(this.messages),this.callbacks.onMessagesChanged([...this.messages])}ensureSequence(e){return e.sequence!==void 0?{...e}:{...e,sequence:this.nextSequence()}}nextSequence(){return this.sequenceCounter++}sortMessages(e){return[...e].sort((o,t)=>{var d,u;let r=new Date(o.createdAt).getTime(),s=new Date(t.createdAt).getTime();if(!Number.isNaN(r)&&!Number.isNaN(s)&&r!==s)return r-s;let i=(d=o.sequence)!=null?d:0,l=(u=t.sequence)!=null?u:0;return i!==l?i-l:o.id.localeCompare(t.id)})}};var Ln=(n,e)=>{var t;let o=(t=e==null?void 0:e.theme)!=null?t:{};Object.entries(o).forEach(([r,s])=>{if(s==null||s==="")return;let i=r.replace(/[A-Z]/g,l=>`-${l.toLowerCase()}`);n.style.setProperty(`--cw-${i}`,String(s))})};import*as jo from"lucide";var le=(n,e=24,o="currentColor",t=2)=>{try{let r=n.split("-").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(""),s=jo[r];return s?_o(s,e,o,t):(console.warn(`Lucide icon "${n}" not found (tried "${r}"). Available icons: https://lucide.dev/icons`),null)}catch(r){return console.warn(`Failed to render Lucide icon "${n}":`,r),null}};function _o(n,e,o,t){if(!n||!Array.isArray(n))return null;let r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",String(e)),r.setAttribute("height",String(e)),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("fill","none"),r.setAttribute("stroke",o),r.setAttribute("stroke-width",String(t)),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),r.setAttribute("aria-hidden","true"),n.forEach(s=>{if(Array.isArray(s)&&s.length>=2){let i=s[0],l=s[1];if(l){let d=document.createElementNS("http://www.w3.org/2000/svg",i);Object.entries(l).forEach(([u,c])=>{u!=="stroke"&&d.setAttribute(u,String(c))}),r.appendChild(d)}}}),r}var p=(n,e)=>{let o=document.createElement(n);return e&&(o.className=e),o};var Ke={idle:"Online",connecting:"Connecting\u2026",connected:"Streaming\u2026",error:"Offline"};var vt={"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 nn=(n,e)=>{let o=p("button");o.type="button",o.innerHTML=`
|
|
6
|
+
`);i=(re=ie.pop())!=null?re:"";for(let ve of ie){let Fe=ve.split(`
|
|
7
|
+
`),Ne="message",ue="";for(let se of Fe)se.startsWith("event:")?Ne=se.replace("event:","").trim():se.startsWith("data:")&&(ue+=se.replace("data:","").trim());if(!ue)continue;let $;try{$=JSON.parse(ue)}catch(se){s({type:"error",error:se instanceof Error?se:new Error("Failed to parse chat stream payload")});continue}let rt=Ne!=="message"?Ne:(q=$.type)!=null?q:"message";if(this.parseSSEEvent){C.current=u;let se=await this.handleCustomSSEEvent($,s,C,w,d);if(C.current&&!u&&(u=C.current),se)continue}if(rt==="reason_start"){let se=(qe=S($,!0))!=null?qe:`reason-${d()}`,M=X(se);M.reasoning=(Ve=M.reasoning)!=null?Ve:{id:se,status:"streaming",chunks:[]},M.reasoning.startedAt=(bt=M.reasoning.startedAt)!=null?bt:_((nt=$.startedAt)!=null?nt:$.timestamp),M.reasoning.completedAt=void 0,M.reasoning.durationMs=void 0,M.streaming=!0,M.reasoning.status="streaming",w(M)}else if(rt==="reason_chunk"){let se=(Y=(Ct=S($,!1))!=null?Ct:S($,!0))!=null?Y:`reason-${d()}`,M=X(se);M.reasoning=(fe=M.reasoning)!=null?fe:{id:se,status:"streaming",chunks:[]},M.reasoning.startedAt=(ft=M.reasoning.startedAt)!=null?ft:_((mt=$.startedAt)!=null?mt:$.timestamp);let y=(H=(st=(Ge=$.reasoningText)!=null?Ge:$.text)!=null?st:$.delta)!=null?H:"";if(y&&$.hidden!==!0&&M.reasoning.chunks.push(String(y)),M.reasoning.status=$.done?"complete":"streaming",$.done){M.reasoning.completedAt=_((He=$.completedAt)!=null?He:$.timestamp);let F=(at=M.reasoning.startedAt)!=null?at:Date.now();M.reasoning.durationMs=Math.max(0,((lt=M.reasoning.completedAt)!=null?lt:Date.now())-F)}M.streaming=M.reasoning.status!=="complete",w(M)}else if(rt==="reason_complete"){let se=(wt=(Tt=S($,!1))!=null?Tt:S($,!0))!=null?wt:`reason-${d()}`,M=g.get(se);if(M!=null&&M.reasoning){M.reasoning.status="complete",M.reasoning.completedAt=_((Ie=$.completedAt)!=null?Ie:$.timestamp);let F=(ot=M.reasoning.startedAt)!=null?ot:Date.now();M.reasoning.durationMs=Math.max(0,((Ue=M.reasoning.completedAt)!=null?Ue:Date.now())-F),M.streaming=!1,w(M)}let y=W($);y&&I.byStep.delete(y)}else if(rt==="tool_start"){let se=(R=j($,!0))!=null?R:`tool-${d()}`,M=Z(se),y=(dt=M.toolCall)!=null?dt:{id:se,status:"pending"};y.name=(Se=$.toolName)!=null?Se:y.name,y.status="running",$.args!==void 0&&(y.args=$.args),y.startedAt=(te=y.startedAt)!=null?te:_((Oe=$.startedAt)!=null?Oe:$.timestamp),y.completedAt=void 0,y.durationMs=void 0,M.toolCall=y,M.streaming=!0,w(M)}else if(rt==="tool_chunk"){let se=(Te=(Ae=j($,!1))!=null?Ae:j($,!0))!=null?Te:`tool-${d()}`,M=Z(se),y=(ze=M.toolCall)!=null?ze:{id:se,status:"running"};y.startedAt=(xt=y.startedAt)!=null?xt:_((Ye=$.startedAt)!=null?Ye:$.timestamp);let F=(Et=(yt=(Lt=$.text)!=null?Lt:$.delta)!=null?yt:$.message)!=null?Et:"";F&&(y.chunks=(St=y.chunks)!=null?St:[],y.chunks.push(String(F))),y.status="running",M.toolCall=y,M.streaming=!0,w(M)}else if(rt==="tool_complete"){let se=(Bt=(ye=j($,!1))!=null?ye:j($,!0))!=null?Bt:`tool-${d()}`,M=Z(se),y=(ke=M.toolCall)!=null?ke:{id:se,status:"running"};if(y.status="complete",$.result!==void 0&&(y.result=$.result),typeof $.duration=="number"&&(y.duration=$.duration),y.completedAt=_((Je=$.completedAt)!=null?Je:$.timestamp),typeof $.duration=="number")y.durationMs=$.duration;else{let be=(At=y.startedAt)!=null?At:Date.now();y.durationMs=Math.max(0,((Nt=y.completedAt)!=null?Nt:Date.now())-be)}M.toolCall=y,M.streaming=!1,w(M);let F=v($);F&&h.byCall.delete(F)}else if(rt==="step_chunk"){let se=$.stepType,M=$.executionType;if(se==="tool"||M==="context")continue;let y=D(),F=(gn=(Wt=(Ot=(Mt=$.text)!=null?Mt:$.delta)!=null?Ot:$.content)!=null?Wt:$.chunk)!=null?gn:"";if(F){let Ee=((hn=ne.get(y.id))!=null?hn:"")+F;y.rawContent=Ee,Q.has(y.id)||Q.set(y.id,this.createStreamParser());let Ze=Q.get(y.id),$e=Ee.trim().startsWith("{")||Ee.trim().startsWith("[");if($e&&ne.set(y.id,Ee),Ze.__isPlainTextParser===!0){y.content+=F,ne.delete(y.id),Q.delete(y.id),y.rawContent=void 0,w(y);continue}let je=Ze.processChunk(Ee);if(je instanceof Promise)je.then(de=>{var Pe;let pe=typeof de=="string"?de:(Pe=de==null?void 0:de.text)!=null?Pe:null;if(pe!==null&&pe.trim()!==""){let ge=u;ge&&ge.id===y.id&&(ge.content=pe,w(ge))}else if(!$e&&!Ee.trim().startsWith("<")){let ge=u;ge&&ge.id===y.id&&(ge.content+=F,ne.delete(ge.id),Q.delete(ge.id),ge.rawContent=void 0,w(ge))}}).catch(()=>{y.content+=F,ne.delete(y.id),Q.delete(y.id),y.rawContent=void 0,w(y)});else{let de=typeof je=="string"?je:(mn=je==null?void 0:je.text)!=null?mn:null;de!==null&&de.trim()!==""?(y.content=de,w(y)):!$e&&!Ee.trim().startsWith("<")&&(y.content+=F,ne.delete(y.id),Q.delete(y.id),y.rawContent=void 0,w(y))}}if($.isComplete){let be=(Dt=(En=$.result)==null?void 0:En.response)!=null?Dt:y.content;if(be){let Ee=ne.get(y.id),Ze=Ee!=null?Ee:K(be);y.rawContent=Ze;let $e=Q.get(y.id),Ce=null,je=!1;if($e&&(Ce=$e.getExtractedText(),Ce===null&&(Ce=bn(Ze)),Ce===null)){let de=$e.processChunk(Ze);de instanceof Promise?(je=!0,de.then(pe=>{var ge;let Pe=typeof pe=="string"?pe:(ge=pe==null?void 0:pe.text)!=null?ge:null;if(Pe!==null){let De=u;De&&De.id===y.id&&(De.content=Pe,De.streaming=!1,Q.delete(De.id),ne.delete(De.id),w(De))}})):Ce=typeof de=="string"?de:(jt=de==null?void 0:de.text)!=null?jt:null}if(!je){Ce!==null&&Ce.trim()!==""?y.content=Ce:ne.has(y.id)||(y.content=K(be));let de=Q.get(y.id);if(de){let pe=(Ke=de.close)==null?void 0:Ke.call(de);pe instanceof Promise&&pe.catch(()=>{}),Q.delete(y.id)}ne.delete(y.id),y.streaming=!1,w(y)}}}}else if(rt==="step_complete"){let se=$.stepType,M=$.executionType;if(se==="tool"||M==="context")continue;let y=(Yt=$.result)==null?void 0:Yt.response,F=D();if(y!=null){let be=Q.get(F.id),Ee=!1,Ze=!1;if(be){let $e=be.getExtractedText(),Ce=ne.get(F.id),je=Ce!=null?Ce:K(y);if(F.rawContent=je,$e!==null&&$e.trim()!=="")F.content=$e,Ee=!0;else{let de=bn(je);if(de!==null)F.content=de,Ee=!0;else{let pe=be.processChunk(je);if(pe instanceof Promise)Ze=!0,pe.then(Pe=>{var De;let ge=typeof Pe=="string"?Pe:(De=Pe==null?void 0:Pe.text)!=null?De:null;if(ge!==null&&ge.trim()!==""){let it=u;it&&it.id===F.id&&(it.content=ge,it.streaming=!1,Q.delete(it.id),ne.delete(it.id),w(it))}else{let it=be.getExtractedText(),ht=u;ht&&ht.id===F.id&&(it!==null&&it.trim()!==""?ht.content=it:ne.has(ht.id)||(ht.content=K(y)),ht.streaming=!1,Q.delete(ht.id),ne.delete(ht.id),w(ht))}});else{let Pe=typeof pe=="string"?pe:(nn=pe==null?void 0:pe.text)!=null?nn:null;if(Pe!==null&&Pe.trim()!=="")F.content=Pe,Ee=!0;else{let ge=be.getExtractedText();ge!==null&&ge.trim()!==""&&(F.content=ge,Ee=!0)}}}}}if(!Ze){if(!F.rawContent){let $e=ne.get(F.id);F.rawContent=$e!=null?$e:K(y)}if(!Ee&&!ne.has(F.id)&&(F.content=K(y)),be){let $e=(sn=be.close)==null?void 0:sn.call(be);$e instanceof Promise&&$e.catch(()=>{})}Q.delete(F.id),ne.delete(F.id),F.streaming=!1,w(F)}}else Q.delete(F.id),ne.delete(F.id),F.streaming=!1,w(F)}else if(rt==="flow_complete"){let se=(on=$.result)==null?void 0:on.response;if(se!=null){let M=D(),y=ne.get(M.id),F=y!=null?y:K(se);M.rawContent=F;let be=K(se),Ee=Q.get(M.id);if(Ee){let Ce=bn(F);if(Ce!==null)be=Ce;else{let je=Ee.processChunk(F);je instanceof Promise&&je.then(pe=>{var ge;let Pe=typeof pe=="string"?pe:(ge=pe==null?void 0:pe.text)!=null?ge:null;if(Pe!==null){let De=u;De&&De.id===M.id&&(De.content=Pe,De.streaming=!1,w(De))}});let de=Ee.getExtractedText();de!==null&&(be=de)}}Q.delete(M.id),ne.delete(M.id);let Ze=be!==M.content,$e=M.streaming!==!1;Ze&&(M.content=be),M.streaming=!1,(Ze||$e)&&w(M)}else if(u!==null){let M=u;Q.delete(M.id),ne.delete(M.id),M.streaming!==!1&&(M.streaming=!1,w(M))}s({type:"status",status:"idle"})}else rt==="error"&&$.error&&s({type:"error",error:$.error instanceof Error?$.error:new Error(String($.error))})}}}};function Xo(){let n=Date.now().toString(36),e=Math.random().toString(36).substring(2,10);return`msg_${n}_${e}`}function Pn(){let n=Date.now().toString(36),e=Math.random().toString(36).substring(2,10);return`usr_${n}_${e}`}function Rn(){let n=Date.now().toString(36),e=Math.random().toString(36).substring(2,10);return`ast_${n}_${e}`}var an=class{constructor(e={},s){this.config=e;this.callbacks=s;this.status="idle";this.streaming=!1;this.abortController=null;this.sequenceCounter=Date.now();this.clientSession=null;this.handleEvent=e=>{var s,t;e.type==="message"?this.upsertMessage(e.message):e.type==="status"?(this.setStatus(e.status),e.status==="connecting"?this.setStreaming(!0):(e.status==="idle"||e.status==="error")&&(this.setStreaming(!1),this.abortController=null)):e.type==="error"&&(this.setStatus("error"),this.setStreaming(!1),this.abortController=null,(t=(s=this.callbacks).onError)==null||t.call(s,e.error))};var t;this.messages=[...(t=e.initialMessages)!=null?t:[]].map(r=>{var o;return{...r,sequence:(o=r.sequence)!=null?o:this.nextSequence()}}),this.messages=this.sortMessages(this.messages),this.client=new Xt(e),this.messages.length&&this.callbacks.onMessagesChanged([...this.messages]),this.callbacks.onStatusChanged(this.status)}isClientTokenMode(){return this.client.isClientTokenMode()}async initClientSession(){var e,s;if(!this.isClientTokenMode())return null;try{let t=await this.client.initSession();return this.setClientSession(t),t}catch(t){return(s=(e=this.callbacks).onError)==null||s.call(e,t instanceof Error?t:new Error(String(t))),null}}setClientSession(e){if(this.clientSession=e,e.config.welcomeMessage&&this.messages.length===0){let s={id:`welcome-${Date.now()}`,role:"assistant",content:e.config.welcomeMessage,createdAt:new Date().toISOString(),sequence:this.nextSequence()};this.appendMessage(s)}}getClientSession(){var e;return(e=this.clientSession)!=null?e:this.client.getClientSession()}isSessionValid(){let e=this.getClientSession();return e?new Date<e.expiresAt:!1}clearClientSession(){this.clientSession=null,this.client.clearClientSession()}getClient(){return this.client}async submitMessageFeedback(e,s){return this.client.submitMessageFeedback(e,s)}async submitCSATFeedback(e,s){return this.client.submitCSATFeedback(e,s)}async submitNPSFeedback(e,s){return this.client.submitNPSFeedback(e,s)}updateConfig(e){this.config={...this.config,...e},this.client=new Xt(this.config)}getMessages(){return[...this.messages]}getStatus(){return this.status}isStreaming(){return this.streaming}injectTestEvent(e){this.handleEvent(e)}async sendMessage(e,s){var d,f,w,u,C;let t=e.trim();if(!t)return;(d=this.abortController)==null||d.abort();let r=Pn(),o=Rn(),i={id:r,role:"user",content:t,createdAt:new Date().toISOString(),sequence:this.nextSequence(),viaVoice:(s==null?void 0:s.viaVoice)||!1};this.appendMessage(i),this.setStreaming(!0);let l=new AbortController;this.abortController=l;let c=[...this.messages];try{await this.client.dispatch({messages:c,signal:l.signal,assistantMessageId:o},this.handleEvent)}catch(g){let U={id:o,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(U),this.setStatus("idle"),this.setStreaming(!1),this.abortController=null,g instanceof Error?(w=(f=this.callbacks).onError)==null||w.call(f,g):(C=(u=this.callbacks).onError)==null||C.call(u,new Error(String(g)))}}cancel(){var e;(e=this.abortController)==null||e.abort(),this.abortController=null,this.setStreaming(!1),this.setStatus("idle")}clearMessages(){var e;(e=this.abortController)==null||e.abort(),this.abortController=null,this.messages=[],this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}hydrateMessages(e){var s;(s=this.abortController)==null||s.abort(),this.abortController=null,this.messages=this.sortMessages(e.map(t=>{var r;return{...t,streaming:!1,sequence:(r=t.sequence)!=null?r:this.nextSequence()}})),this.setStreaming(!1),this.setStatus("idle"),this.callbacks.onMessagesChanged([...this.messages])}setStatus(e){this.status!==e&&(this.status=e,this.callbacks.onStatusChanged(e))}setStreaming(e){this.streaming!==e&&(this.streaming=e,this.callbacks.onStreamingChanged(e))}appendMessage(e){let s=this.ensureSequence(e);this.messages=this.sortMessages([...this.messages,s]),this.callbacks.onMessagesChanged([...this.messages])}upsertMessage(e){let s=this.ensureSequence(e),t=this.messages.findIndex(r=>r.id===s.id);if(t===-1){this.appendMessage(s);return}this.messages=this.messages.map((r,o)=>o===t?{...r,...s}:r),this.messages=this.sortMessages(this.messages),this.callbacks.onMessagesChanged([...this.messages])}ensureSequence(e){return e.sequence!==void 0?{...e}:{...e,sequence:this.nextSequence()}}nextSequence(){return this.sequenceCounter++}sortMessages(e){return[...e].sort((s,t)=>{var c,d;let r=new Date(s.createdAt).getTime(),o=new Date(t.createdAt).getTime();if(!Number.isNaN(r)&&!Number.isNaN(o)&&r!==o)return r-o;let i=(c=s.sequence)!=null?c:0,l=(d=t.sequence)!=null?d:0;return i!==l?i-l:s.id.localeCompare(t.id)})}};var In=(n,e)=>{var t;let s=(t=e==null?void 0:e.theme)!=null?t:{};Object.entries(s).forEach(([r,o])=>{if(o==null||o==="")return;let i=r.replace(/[A-Z]/g,l=>`-${l.toLowerCase()}`);n.style.setProperty(`--cw-${i}`,String(o))})};import*as Vo from"lucide";var ce=(n,e=24,s="currentColor",t=2)=>{try{let r=n.split("-").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(""),o=Vo[r];return o?Go(o,e,s,t):(console.warn(`Lucide icon "${n}" not found (tried "${r}"). Available icons: https://lucide.dev/icons`),null)}catch(r){return console.warn(`Failed to render Lucide icon "${n}":`,r),null}};function Go(n,e,s,t){if(!n||!Array.isArray(n))return null;let r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",String(e)),r.setAttribute("height",String(e)),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("fill","none"),r.setAttribute("stroke",s),r.setAttribute("stroke-width",String(t)),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),r.setAttribute("aria-hidden","true"),n.forEach(o=>{if(Array.isArray(o)&&o.length>=2){let i=o[0],l=o[1];if(l){let c=document.createElementNS("http://www.w3.org/2000/svg",i);Object.entries(l).forEach(([d,f])=>{d!=="stroke"&&c.setAttribute(d,String(f))}),r.appendChild(c)}}}),r}var m=(n,e)=>{let s=document.createElement(n);return e&&(s.className=e),s};var Xe={idle:"Online",connecting:"Connecting\u2026",connected:"Streaming\u2026",error:"Offline"};var vt={"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 ln=(n,e)=>{let s=m("button");s.type="button",s.innerHTML=`
|
|
8
8
|
<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>
|
|
9
9
|
<img data-role="launcher-image" class="tvw-rounded-full tvw-object-cover" alt="" style="display:none" />
|
|
10
10
|
<span class="tvw-flex tvw-flex-col tvw-items-start tvw-text-left">
|
|
@@ -12,8 +12,12 @@ import{Marked as Lo}from"marked";var ko=n=>{if(n)return n},un=n=>{var r,s;let e=
|
|
|
12
12
|
<span class="tvw-text-xs tvw-text-cw-muted" data-role="launcher-subtitle"></span>
|
|
13
13
|
</span>
|
|
14
14
|
<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>
|
|
15
|
-
`,o.addEventListener("click",e);let t=s=>{var h,x,R,w,K,T,O,ee,P,Y,fe,J;let i=(h=s.launcher)!=null?h:{},l=o.querySelector("[data-role='launcher-title']");l&&(l.textContent=(x=i.title)!=null?x:"Chat Assistant");let d=o.querySelector("[data-role='launcher-subtitle']");d&&(d.textContent=(R=i.subtitle)!=null?R:"Get answers fast");let u=o.querySelector(".tvw-flex-col");u&&(i.textHidden?u.style.display="none":u.style.display="");let c=o.querySelector("[data-role='launcher-icon']");if(c)if(i.agentIconHidden)c.style.display="none";else{let F=(w=i.agentIconSize)!=null?w:"40px";if(c.style.height=F,c.style.width=F,c.innerHTML="",i.agentIconName){let ne=parseFloat(F)||24,De=le(i.agentIconName,ne*.6,"#ffffff",2);De?(c.appendChild(De),c.style.display=""):(c.textContent=(K=i.agentIconText)!=null?K:"\u{1F4AC}",c.style.display="")}else i.iconUrl?c.style.display="none":(c.textContent=(T=i.agentIconText)!=null?T:"\u{1F4AC}",c.style.display="")}let y=o.querySelector("[data-role='launcher-image']");if(y){let F=(O=i.agentIconSize)!=null?O:"40px";y.style.height=F,y.style.width=F,i.iconUrl&&!i.agentIconName&&!i.agentIconHidden?(y.src=i.iconUrl,y.style.display="block"):y.style.display="none"}let m=o.querySelector("[data-role='launcher-call-to-action-icon']");if(m){let F=(ee=i.callToActionIconSize)!=null?ee:"32px";m.style.height=F,m.style.width=F,i.callToActionIconBackgroundColor?(m.style.backgroundColor=i.callToActionIconBackgroundColor,m.classList.remove("tvw-bg-cw-primary")):(m.style.backgroundColor="",m.classList.add("tvw-bg-cw-primary"));let ne=0;if(i.callToActionIconPadding?(m.style.boxSizing="border-box",m.style.padding=i.callToActionIconPadding,ne=(parseFloat(i.callToActionIconPadding)||0)*2):(m.style.boxSizing="",m.style.padding=""),i.callToActionIconHidden)m.style.display="none";else if(m.style.display="",m.innerHTML="",i.callToActionIconName){let De=parseFloat(F)||24,oe=Math.max(De-ne,8),$=le(i.callToActionIconName,oe,"currentColor",2);$?m.appendChild($):m.textContent=(P=i.callToActionIconText)!=null?P:"\u2197"}else m.textContent=(Y=i.callToActionIconText)!=null?Y:"\u2197"}let b=i.position&&vt[i.position]?vt[i.position]:vt["bottom-right"],f="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-transition hover:tvw-translate-y-[-2px] tvw-cursor-pointer tvw-z-50";o.className=`${f} ${b}`;let D="1px solid #e5e7eb",j="0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)";o.style.border=(fe=i.border)!=null?fe:D,o.style.boxShadow=(J=i.shadow)!=null?J:j},r=()=>{o.removeEventListener("click",e),o.remove()};return n&&t(n),{element:o,update:t,destroy:r}};var zt=n=>{var Y,fe,J,F,ne,De,oe,$,qe,Xe,tt,bt,Ct,q,he,mt,ft,Ve,nt,L,Re,it,at,Tt,wt,$e,st,Ue,U,lt,Ae,Oe;let{config:e,showClose:o=!0}=n,t=p("div","tvw-widget-header tvw-flex tvw-items-center tvw-gap-3 tvw-bg-cw-surface tvw-px-6 tvw-py-5 tvw-border-b-cw-divider"),r=(Y=e==null?void 0:e.launcher)!=null?Y:{},s=(fe=r.headerIconSize)!=null?fe:"48px",i=(J=r.closeButtonSize)!=null?J:"32px",l=(F=r.closeButtonPlacement)!=null?F:"inline",d=(ne=r.headerIconHidden)!=null?ne:!1,u=r.headerIconName,c=p("div","tvw-flex tvw-items-center tvw-justify-center tvw-rounded-xl tvw-bg-cw-primary tvw-text-white tvw-text-xl");if(c.style.height=s,c.style.width=s,!d)if(u){let Z=parseFloat(s)||24,Te=le(u,Z*.6,"#ffffff",2);Te?c.replaceChildren(Te):c.textContent=(oe=(De=e==null?void 0:e.launcher)==null?void 0:De.agentIconText)!=null?oe:"\u{1F4AC}"}else if(($=e==null?void 0:e.launcher)!=null&&$.iconUrl){let Z=p("img");Z.src=e.launcher.iconUrl,Z.alt="",Z.className="tvw-rounded-xl tvw-object-cover",Z.style.height=s,Z.style.width=s,c.replaceChildren(Z)}else c.textContent=(Xe=(qe=e==null?void 0:e.launcher)==null?void 0:qe.agentIconText)!=null?Xe:"\u{1F4AC}";let y=p("div","tvw-flex tvw-flex-col"),m=p("span","tvw-text-base tvw-font-semibold");m.textContent=(bt=(tt=e==null?void 0:e.launcher)==null?void 0:tt.title)!=null?bt:"Chat Assistant";let b=p("span","tvw-text-xs tvw-text-cw-muted");b.textContent=(q=(Ct=e==null?void 0:e.launcher)==null?void 0:Ct.subtitle)!=null?q:"Here to help you get answers fast",y.append(m,b),d?t.append(y):t.append(c,y);let f=(he=r.clearChat)!=null?he:{},D=(mt=f.enabled)!=null?mt:!0,j=(ft=f.placement)!=null?ft:"inline",h=null,x=null;if(D){let Z=(Ve=f.size)!=null?Ve:"32px",Te=(nt=f.iconName)!=null?nt:"refresh-cw",Ee=(L=f.iconColor)!=null?L:"",ze=(Re=f.backgroundColor)!=null?Re:"",Je=(it=f.borderWidth)!=null?it:"",xt=(at=f.borderColor)!=null?at:"",kt=(Tt=f.borderRadius)!=null?Tt:"",yt=(wt=f.paddingX)!=null?wt:"",Et=($e=f.paddingY)!=null?$e:"",St=(st=f.tooltipText)!=null?st:"Clear chat",we=(Ue=f.showTooltip)!=null?Ue:!0;x=p("div",j==="top-right"?"tvw-absolute tvw-top-4 tvw-z-50":"tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper"),j==="top-right"&&(x.style.right="48px"),h=p("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"),h.style.height=Z,h.style.width=Z,h.type="button",h.setAttribute("aria-label",St);let Bt=le(Te,"20px",Ee||"",2);if(Bt&&h.appendChild(Bt),Ee&&(h.style.color=Ee,h.classList.remove("tvw-text-cw-muted")),ze&&(h.style.backgroundColor=ze,h.classList.remove("hover:tvw-bg-gray-100")),Je||xt){let ke=Je||"0px",Ye=xt||"transparent";h.style.border=`${ke} solid ${Ye}`,h.classList.remove("tvw-border-none")}if(kt&&(h.style.borderRadius=kt,h.classList.remove("tvw-rounded-full")),yt?(h.style.paddingLeft=yt,h.style.paddingRight=yt):(h.style.paddingLeft="",h.style.paddingRight=""),Et?(h.style.paddingTop=Et,h.style.paddingBottom=Et):(h.style.paddingTop="",h.style.paddingBottom=""),x.appendChild(h),we&&St&&h&&x){let ke=null,Ye=()=>{if(ke||!h)return;ke=p("div","tvw-clear-chat-tooltip"),ke.textContent=St;let Ft=p("div");Ft.className="tvw-clear-chat-tooltip-arrow",ke.appendChild(Ft);let Wt=h.getBoundingClientRect();ke.style.position="fixed",ke.style.left=`${Wt.left+Wt.width/2}px`,ke.style.top=`${Wt.top-8}px`,ke.style.transform="translate(-50%, -100%)",document.body.appendChild(ke)},At=()=>{ke&&ke.parentNode&&(ke.parentNode.removeChild(ke),ke=null)};x.addEventListener("mouseenter",Ye),x.addEventListener("mouseleave",At),h.addEventListener("focus",Ye),h.addEventListener("blur",At),x._cleanupTooltip=()=>{At(),x&&(x.removeEventListener("mouseenter",Ye),x.removeEventListener("mouseleave",At)),h&&(h.removeEventListener("focus",Ye),h.removeEventListener("blur",At))}}j==="inline"&&t.appendChild(x)}let R=p("div",l==="top-right"?"tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50":D&&j==="inline"?"":"tvw-ml-auto"),w=p("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");w.style.height=i,w.style.width=i,w.type="button";let K=(U=r.closeButtonTooltipText)!=null?U:"Close chat",T=(lt=r.closeButtonShowTooltip)!=null?lt:!0;w.setAttribute("aria-label",K),w.style.display=o?"":"none";let O=(Ae=r.closeButtonIconName)!=null?Ae:"x",ee=(Oe=r.closeButtonIconText)!=null?Oe:"\xD7",P=le(O,"20px",r.closeButtonColor||"",2);if(P?w.appendChild(P):w.textContent=ee,r.closeButtonColor?(w.style.color=r.closeButtonColor,w.classList.remove("tvw-text-cw-muted")):(w.style.color="",w.classList.add("tvw-text-cw-muted")),r.closeButtonBackgroundColor?(w.style.backgroundColor=r.closeButtonBackgroundColor,w.classList.remove("hover:tvw-bg-gray-100")):(w.style.backgroundColor="",w.classList.add("hover:tvw-bg-gray-100")),r.closeButtonBorderWidth||r.closeButtonBorderColor){let Z=r.closeButtonBorderWidth||"0px",Te=r.closeButtonBorderColor||"transparent";w.style.border=`${Z} solid ${Te}`,w.classList.remove("tvw-border-none")}else w.style.border="",w.classList.add("tvw-border-none");if(r.closeButtonBorderRadius?(w.style.borderRadius=r.closeButtonBorderRadius,w.classList.remove("tvw-rounded-full")):(w.style.borderRadius="",w.classList.add("tvw-rounded-full")),r.closeButtonPaddingX?(w.style.paddingLeft=r.closeButtonPaddingX,w.style.paddingRight=r.closeButtonPaddingX):(w.style.paddingLeft="",w.style.paddingRight=""),r.closeButtonPaddingY?(w.style.paddingTop=r.closeButtonPaddingY,w.style.paddingBottom=r.closeButtonPaddingY):(w.style.paddingTop="",w.style.paddingBottom=""),R.appendChild(w),T&&K){let Z=null,Te=()=>{if(Z)return;Z=p("div","tvw-clear-chat-tooltip"),Z.textContent=K;let ze=p("div");ze.className="tvw-clear-chat-tooltip-arrow",Z.appendChild(ze);let Je=w.getBoundingClientRect();Z.style.position="fixed",Z.style.left=`${Je.left+Je.width/2}px`,Z.style.top=`${Je.top-8}px`,Z.style.transform="translate(-50%, -100%)",document.body.appendChild(Z)},Ee=()=>{Z&&Z.parentNode&&(Z.parentNode.removeChild(Z),Z=null)};R.addEventListener("mouseenter",Te),R.addEventListener("mouseleave",Ee),w.addEventListener("focus",Te),w.addEventListener("blur",Ee),R._cleanupTooltip=()=>{Ee(),R.removeEventListener("mouseenter",Te),R.removeEventListener("mouseleave",Ee),w.removeEventListener("focus",Te),w.removeEventListener("blur",Ee)}}return l!=="top-right"&&t.appendChild(R),{header:t,iconHolder:c,headerTitle:m,headerSubtitle:b,closeButton:w,closeButtonWrapper:R,clearChatButton:h,clearChatButtonWrapper:x}},sn=(n,e,o)=>{var i,l,d,u;let t=(i=o==null?void 0:o.launcher)!=null?i:{},r=(l=t.closeButtonPlacement)!=null?l:"inline",s=(u=(d=t.clearChat)==null?void 0:d.placement)!=null?u:"inline";n.appendChild(e.header),r==="top-right"&&(n.style.position="relative",n.appendChild(e.closeButtonWrapper)),e.clearChatButtonWrapper&&s==="top-right"&&(n.style.position="relative",n.appendChild(e.clearChatButtonWrapper))};var go=n=>zt({config:n.config,showClose:n.showClose,onClose:n.onClose,onClearChat:n.onClearChat}),ho=n=>{var f,D,j,h;let{config:e,showClose:o=!0,onClose:t}=n,r=(f=e==null?void 0:e.launcher)!=null?f:{},s=p("div","tvw-flex tvw-items-center tvw-justify-between tvw-bg-cw-surface tvw-px-6 tvw-py-4 tvw-border-b-cw-divider"),i=p("span","tvw-text-base tvw-font-semibold");i.textContent=(D=r.title)!=null?D:"Chat Assistant",s.appendChild(i);let l=(j=r.closeButtonSize)!=null?j:"32px",d=p("div",""),u=p("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");u.style.height=l,u.style.width=l,u.type="button",u.setAttribute("aria-label","Close chat"),u.style.display=o?"":"none";let c=(h=r.closeButtonIconName)!=null?h:"x",y=le(c,"20px",r.closeButtonColor||"",2);y?u.appendChild(y):u.textContent="\xD7",t&&u.addEventListener("click",t),d.appendChild(u),s.appendChild(d);let m=p("div");m.style.display="none";let b=p("span");return b.style.display="none",{header:s,iconHolder:m,headerTitle:i,headerSubtitle:b,closeButton:u,closeButtonWrapper:d,clearChatButton:null,clearChatButtonWrapper:null}},mo=n=>{var w,K,T,O,ee,P,Y,fe;let{config:e,showClose:o=!0,onClose:t,onClearChat:r}=n,s=(w=e==null?void 0:e.launcher)!=null?w:{},i=p("div","tvw-flex tvw-flex-col tvw-bg-cw-surface tvw-px-6 tvw-py-5 tvw-border-b-cw-divider"),l=p("div","tvw-flex tvw-items-center tvw-gap-3"),d=(K=s.headerIconSize)!=null?K:"56px",u=p("div","tvw-flex tvw-items-center tvw-justify-center tvw-rounded-xl tvw-bg-cw-primary tvw-text-white tvw-text-2xl");u.style.height=d,u.style.width=d;let c=s.headerIconName;if(c){let J=parseFloat(d)||24,F=le(c,J*.5,"#ffffff",2);F?u.replaceChildren(F):u.textContent=(T=s.agentIconText)!=null?T:"\u{1F4AC}"}else if(s.iconUrl){let J=p("img");J.src=s.iconUrl,J.alt="",J.className="tvw-rounded-xl tvw-object-cover",J.style.height=d,J.style.width=d,u.replaceChildren(J)}else u.textContent=(O=s.agentIconText)!=null?O:"\u{1F4AC}";let y=p("div","tvw-flex tvw-flex-col tvw-flex-1"),m=p("span","tvw-text-lg tvw-font-semibold");m.textContent=(ee=s.title)!=null?ee:"Chat Assistant";let b=p("span","tvw-text-sm tvw-text-cw-muted");b.textContent=(P=s.subtitle)!=null?P:"Here to help you get answers fast",y.append(m,b),l.append(u,y);let f=(Y=s.closeButtonSize)!=null?Y:"32px",D=p("div",""),j=p("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");j.style.height=f,j.style.width=f,j.type="button",j.setAttribute("aria-label","Close chat"),j.style.display=o?"":"none";let h=(fe=s.closeButtonIconName)!=null?fe:"x",x=le(h,"20px",s.closeButtonColor||"",2);x?j.appendChild(x):j.textContent="\xD7",t&&j.addEventListener("click",t),D.appendChild(j),l.appendChild(D),i.appendChild(l);let R=p("div","tvw-mt-3 tvw-pt-3 tvw-border-t tvw-border-gray-100 tvw-text-xs tvw-text-cw-muted");return R.textContent="Online and ready to help",i.appendChild(R),{header:i,iconHolder:u,headerTitle:m,headerSubtitle:b,closeButton:j,closeButtonWrapper:D,clearChatButton:null,clearChatButtonWrapper:null}},kn={default:go,minimal:ho,expanded:mo},fo=n=>{var e;return(e=kn[n])!=null?e:kn.default},Bn=(n,e,o)=>{var i,l,d;if(e!=null&&e.render){let u=e.render({config:n,onClose:o==null?void 0:o.onClose,onClearChat:o==null?void 0:o.onClearChat}),c=p("div");c.style.display="none";let y=p("span"),m=p("span"),b=p("button");b.style.display="none";let f=p("div");return f.style.display="none",{header:u,iconHolder:c,headerTitle:y,headerSubtitle:m,closeButton:b,closeButtonWrapper:f,clearChatButton:null,clearChatButtonWrapper:null}}let t=(i=e==null?void 0:e.layout)!=null?i:"default",s=fo(t)({config:n,showClose:(d=(l=e==null?void 0:e.showCloseButton)!=null?l:o==null?void 0:o.showClose)!=null?d:!0,onClose:o==null?void 0:o.onClose,onClearChat:o==null?void 0:o.onClearChat});return e&&(e.showIcon===!1&&(s.iconHolder.style.display="none"),e.showTitle===!1&&(s.headerTitle.style.display="none"),e.showSubtitle===!1&&(s.headerSubtitle.style.display="none"),e.showCloseButton===!1&&(s.closeButton.style.display="none"),e.showClearChat===!1&&s.clearChatButtonWrapper&&(s.clearChatButtonWrapper.style.display="none")),s};var qo=n=>{switch(n){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'}},on=n=>{var De,oe,$,qe,Xe,tt,bt,Ct,q,he,mt,ft,Ve,nt,L,Re,it,at,Tt,wt,$e,st,Ue,U,lt;let{config:e}=n,o=p("div","tvw-widget-footer tvw-border-t-cw-divider tvw-bg-cw-surface tvw-px-6 tvw-py-4"),t=p("div","tvw-mb-3 tvw-flex tvw-flex-wrap tvw-gap-2"),r=((De=e==null?void 0:e.voiceRecognition)==null?void 0:De.enabled)===!0,s=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),d=p("form",`tvw-widget-composer tvw-flex tvw-items-end ${r&&s?"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`);d.style.outline="none";let u=p("textarea");u.placeholder=($=(oe=e==null?void 0:e.copy)==null?void 0:oe.inputPlaceholder)!=null?$:"Type your message\u2026",u.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",u.rows=1;let c=(Xe=(qe=e==null?void 0:e.theme)==null?void 0:qe.inputFontFamily)!=null?Xe:"sans-serif",y=(bt=(tt=e==null?void 0:e.theme)==null?void 0:tt.inputFontWeight)!=null?bt:"400";u.style.fontFamily=qo(c),u.style.fontWeight=y,u.style.border="none",u.style.outline="none",u.style.borderWidth="0",u.style.borderStyle="none",u.style.borderColor="transparent",u.addEventListener("focus",()=>{u.style.border="none",u.style.outline="none",u.style.borderWidth="0",u.style.borderStyle="none",u.style.borderColor="transparent",u.style.boxShadow="none"}),u.addEventListener("blur",()=>{u.style.border="none",u.style.outline="none"});let m=(Ct=e==null?void 0:e.sendButton)!=null?Ct:{},b=(q=m.useIcon)!=null?q:!1,f=(he=m.iconText)!=null?he:"\u2191",D=m.iconName,j=(mt=m.tooltipText)!=null?mt:"Send message",h=(ft=m.showTooltip)!=null?ft:!1,x=(Ve=m.size)!=null?Ve:"40px",R=m.backgroundColor,w=m.textColor,K=p("div","tvw-send-button-wrapper"),T=p("button",b?"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(T.type="submit",b){if(T.style.width=x,T.style.height=x,T.style.minWidth=x,T.style.minHeight=x,T.style.fontSize="18px",T.style.lineHeight="1",T.innerHTML="",D){let Ae=parseFloat(x)||24,Oe=w&&typeof w=="string"&&w.trim()?w.trim():"currentColor",Z=le(D,Ae,Oe,2);Z?(T.appendChild(Z),T.style.color=Oe):(T.textContent=f,w?T.style.color=w:T.classList.add("tvw-text-white"))}else T.textContent=f,w?T.style.color=w:T.classList.add("tvw-text-white");R?T.style.backgroundColor=R:T.classList.add("tvw-bg-cw-primary")}else T.textContent=(L=(nt=e==null?void 0:e.copy)==null?void 0:nt.sendButtonLabel)!=null?L:"Send",w?T.style.color=w:T.classList.add("tvw-text-white");if(m.borderWidth&&(T.style.borderWidth=m.borderWidth,T.style.borderStyle="solid"),m.borderColor&&(T.style.borderColor=m.borderColor),m.paddingX?(T.style.paddingLeft=m.paddingX,T.style.paddingRight=m.paddingX):(T.style.paddingLeft="",T.style.paddingRight=""),m.paddingY?(T.style.paddingTop=m.paddingY,T.style.paddingBottom=m.paddingY):(T.style.paddingTop="",T.style.paddingBottom=""),h&&j){let Ae=p("div","tvw-send-button-tooltip");Ae.textContent=j,K.appendChild(Ae)}K.appendChild(T);let O=(Re=e==null?void 0:e.voiceRecognition)!=null?Re:{},ee=O.enabled===!0,P=null,Y=null,fe=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined");if(ee&&fe){Y=p("div","tvw-send-button-wrapper"),P=p("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer"),P.type="button",P.setAttribute("aria-label","Start voice recognition");let Ae=(it=O.iconName)!=null?it:"mic",Oe=(at=O.iconSize)!=null?at:x,Z=parseFloat(Oe)||24,Te=(Tt=O.backgroundColor)!=null?Tt:R,Ee=(wt=O.iconColor)!=null?wt:w;P.style.width=Oe,P.style.height=Oe,P.style.minWidth=Oe,P.style.minHeight=Oe,P.style.fontSize="18px",P.style.lineHeight="1";let ze=Ee||"currentColor",Je=le(Ae,Z,ze,1.5);Je?(P.appendChild(Je),P.style.color=ze):(P.textContent="\u{1F3A4}",P.style.color=ze),Te?P.style.backgroundColor=Te:P.classList.add("tvw-bg-cw-primary"),Ee?P.style.color=Ee:!Ee&&!w&&P.classList.add("tvw-text-white"),O.borderWidth&&(P.style.borderWidth=O.borderWidth,P.style.borderStyle="solid"),O.borderColor&&(P.style.borderColor=O.borderColor),O.paddingX&&(P.style.paddingLeft=O.paddingX,P.style.paddingRight=O.paddingX),O.paddingY&&(P.style.paddingTop=O.paddingY,P.style.paddingBottom=O.paddingY),Y.appendChild(P);let xt=($e=O.tooltipText)!=null?$e:"Start voice recognition";if(((st=O.showTooltip)!=null?st:!1)&&xt){let yt=p("div","tvw-send-button-tooltip");yt.textContent=xt,Y.appendChild(yt)}}d.addEventListener("click",Ae=>{Ae.target!==T&&Ae.target!==K&&Ae.target!==P&&Ae.target!==Y&&u.focus()}),d.append(u),Y&&d.append(Y),d.append(K);let J=p("div","tvw-mt-2 tvw-text-right tvw-text-xs tvw-text-cw-muted"),F=(Ue=e==null?void 0:e.statusIndicator)!=null?Ue:{},ne=(U=F.visible)!=null?U:!0;return J.style.display=ne?"":"none",J.textContent=(lt=F.idleText)!=null?lt:"Online",o.append(t,d,J),{footer:o,suggestions:t,composerForm:d,textarea:u,sendButton:T,sendButtonWrapper:K,micButton:P,micButtonWrapper:Y,statusText:J}};var wo=n=>{var d,u,c,y,m,b,f;if(!((u=(d=n==null?void 0:n.launcher)==null?void 0:d.enabled)!=null?u:!0)){let D=p("div","tvw-relative tvw-h-full tvw-flex tvw-flex-col tvw-flex-1 tvw-min-h-0"),j=p("div","tvw-relative tvw-flex-1 tvw-flex tvw-flex-col tvw-min-h-0"),h=(y=(c=n==null?void 0:n.launcher)==null?void 0:c.width)!=null?y:"100%";return D.style.width=h,j.style.width="100%",D.appendChild(j),{wrapper:D,panel:j}}let o=(m=n==null?void 0:n.launcher)!=null?m:{},t=o.position&&vt[o.position]?vt[o.position]:vt["bottom-right"],r=p("div",`tvw-widget-wrapper tvw-fixed ${t} tvw-z-50 tvw-transition`),s=p("div","tvw-widget-panel tvw-relative tvw-min-h-[320px]"),i=(f=(b=n==null?void 0:n.launcher)==null?void 0:b.width)!=null?f:n==null?void 0:n.launcherWidth,l=i!=null?i:"min(400px, calc(100vw - 24px))";return s.style.width=l,s.style.maxWidth=l,r.appendChild(s),{wrapper:r,panel:s}},yo=(n,e=!0)=>{var y,m,b,f,D;let o=p("div","tvw-widget-container tvw-flex tvw-h-full tvw-w-full tvw-flex-1 tvw-min-h-0 tvw-flex-col tvw-bg-cw-surface tvw-text-cw-primary tvw-rounded-2xl tvw-overflow-hidden tvw-border tvw-border-cw-border"),t=(y=n==null?void 0:n.layout)==null?void 0:y.header,r=t?Bn(n,t,{showClose:e}):zt({config:n,showClose:e}),s=p("div","tvw-widget-body 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");s.id="vanilla-agent-scroll-container";let i=p("div","tvw-rounded-2xl tvw-bg-cw-surface tvw-p-6 tvw-shadow-sm"),l=p("h2","tvw-text-lg tvw-font-semibold tvw-text-cw-primary");l.textContent=(b=(m=n==null?void 0:n.copy)==null?void 0:m.welcomeTitle)!=null?b:"Hello \u{1F44B}";let d=p("p","tvw-mt-2 tvw-text-sm tvw-text-cw-muted");d.textContent=(D=(f=n==null?void 0:n.copy)==null?void 0:f.welcomeSubtitle)!=null?D:"Ask anything about your account or products.",i.append(l,d);let u=p("div","tvw-flex tvw-flex-col tvw-gap-3");s.append(i,u);let c=on({config:n});return sn(o,r,n),o.append(s,c.footer),{container:o,body:s,messagesWrapper:u,suggestions:c.suggestions,textarea:c.textarea,sendButton:c.sendButton,sendButtonWrapper:c.sendButtonWrapper,micButton:c.micButton,micButtonWrapper:c.micButtonWrapper,composerForm:c.composerForm,statusText:c.statusText,introTitle:l,introSubtitle:d,closeButton:r.closeButton,closeButtonWrapper:r.closeButtonWrapper,clearChatButton:r.clearChatButton,clearChatButtonWrapper:r.clearChatButtonWrapper,iconHolder:r.iconHolder,headerTitle:r.headerTitle,headerSubtitle:r.headerSubtitle,header:r.header,footer:c.footer}};var fn=()=>{let n=document.createElement("div");n.className="tvw-flex tvw-items-center tvw-space-x-1 tvw-h-5 tvw-mt-2";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="0ms";let o=document.createElement("div");o.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",o.style.animationDelay="250ms";let t=document.createElement("div");t.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",t.style.animationDelay="500ms";let r=document.createElement("span");return r.className="tvw-sr-only",r.textContent="Loading",n.appendChild(e),n.appendChild(o),n.appendChild(t),n.appendChild(r),n},Uo=(n,e)=>{let o=p("div","tvw-flex-shrink-0 tvw-w-8 tvw-h-8 tvw-rounded-full tvw-flex tvw-items-center tvw-justify-center tvw-text-sm"),t=e==="user"?n.userAvatar:n.assistantAvatar;if(t)if(t.startsWith("http")||t.startsWith("/")||t.startsWith("data:")){let r=p("img");r.src=t,r.alt=e==="user"?"User":"Assistant",r.className="tvw-w-full tvw-h-full tvw-rounded-full tvw-object-cover",o.appendChild(r)}else o.textContent=t,o.classList.add(e==="user"?"tvw-bg-cw-accent":"tvw-bg-cw-primary","tvw-text-white");else o.textContent=e==="user"?"U":"A",o.classList.add(e==="user"?"tvw-bg-cw-accent":"tvw-bg-cw-primary","tvw-text-white");return o},vo=(n,e)=>{let o=p("div","tvw-text-xs tvw-text-cw-muted"),t=new Date(n.createdAt);return e.format?o.textContent=e.format(t):o.textContent=t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),o},zo=(n,e="bubble")=>{let o=["vanilla-message-bubble","tvw-max-w-[85%]"];switch(e){case"flat":n==="user"?o.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-text-cw-primary","tvw-py-2"):o.push("vanilla-message-assistant-bubble","tvw-text-cw-primary","tvw-py-2");break;case"minimal":o.push("tvw-text-sm","tvw-leading-relaxed"),n==="user"?o.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-bg-cw-accent","tvw-text-white","tvw-px-3","tvw-py-2","tvw-rounded-lg"):o.push("vanilla-message-assistant-bubble","tvw-bg-cw-surface","tvw-text-cw-primary","tvw-px-3","tvw-py-2","tvw-rounded-lg");break;case"bubble":default:o.push("tvw-rounded-2xl","tvw-text-sm","tvw-leading-relaxed","tvw-shadow-sm"),n==="user"?o.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-bg-cw-accent","tvw-text-white","tvw-px-5","tvw-py-3"):o.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");break}return o},bo=(n,e,o)=>{var f,D,j,h,x,R;let t=(f=e.showCopy)!=null?f:!0,r=(D=e.showUpvote)!=null?D:!0,s=(j=e.showDownvote)!=null?j:!0,i=(h=e.visibility)!=null?h:"hover",l=(x=e.align)!=null?x:"right",d=(R=e.layout)!=null?R:"pill-inside",u={left:"tvw-message-actions-left",center:"tvw-message-actions-center",right:"tvw-message-actions-right"}[l],c={"pill-inside":"tvw-message-actions-pill","row-inside":"tvw-message-actions-row"}[d],y=p("div",`tvw-message-actions tvw-flex tvw-items-center tvw-gap-1 tvw-mt-2 ${u} ${c} ${i==="hover"?"tvw-message-actions-hover":""}`),m=null,b=(w,K,T,O)=>{let ee=document.createElement("button");ee.className="tvw-message-action-btn",ee.setAttribute("aria-label",K),ee.setAttribute("title",K),O&&ee.setAttribute("data-action",O);let P=le(w,14,"currentColor",2);return P&&ee.appendChild(P),ee.addEventListener("click",Y=>{Y.preventDefault(),Y.stopPropagation(),T()}),ee};if(t){let w=b("copy","Copy message",()=>{let K=n.content||"";navigator.clipboard.writeText(K).then(()=>{w.classList.add("tvw-message-action-success");let T=le("check",14,"currentColor",2);T&&(w.innerHTML="",w.appendChild(T)),setTimeout(()=>{w.classList.remove("tvw-message-action-success");let O=le("copy",14,"currentColor",2);O&&(w.innerHTML="",w.appendChild(O))},2e3)}).catch(T=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to copy message:",T)}),o!=null&&o.onCopy&&o.onCopy(n),e.onCopy&&e.onCopy(n)},"copy");y.appendChild(w)}if(r){let w=b("thumbs-up","Upvote",()=>{if(m==="upvote")m=null,w.classList.remove("tvw-message-action-active");else{let T=y.querySelector('[data-action="downvote"]');T&&T.classList.remove("tvw-message-action-active"),m="upvote",w.classList.add("tvw-message-action-active");let O={type:"upvote",messageId:n.id,message:n};o!=null&&o.onFeedback&&o.onFeedback(O),e.onFeedback&&e.onFeedback(O)}},"upvote");y.appendChild(w)}if(s){let w=b("thumbs-down","Downvote",()=>{if(m==="downvote")m=null,w.classList.remove("tvw-message-action-active");else{let T=y.querySelector('[data-action="upvote"]');T&&T.classList.remove("tvw-message-action-active"),m="downvote",w.classList.add("tvw-message-action-active");let O={type:"downvote",messageId:n.id,message:n};o!=null&&o.onFeedback&&o.onFeedback(O),e.onFeedback&&e.onFeedback(O)}},"downvote");y.appendChild(w)}return y},rn=(n,e,o,t,r)=>{var R,w,K,T,O;let s=o!=null?o:{},i=(R=s.layout)!=null?R:"bubble",l=s.avatar,d=s.timestamp,u=(w=l==null?void 0:l.show)!=null?w:!1,c=(K=d==null?void 0:d.show)!=null?K:!1,y=(T=l==null?void 0:l.position)!=null?T:"left",m=(O=d==null?void 0:d.position)!=null?O:"below",b=zo(n.role,i),f=p("div",b.join(" ")),D=document.createElement("div");if(D.innerHTML=e({text:n.content,message:n,streaming:!!n.streaming,raw:n.rawContent}),c&&m==="inline"&&n.createdAt){let ee=vo(n,d);ee.classList.add("tvw-ml-2","tvw-inline"),D.appendChild(ee)}if(f.appendChild(D),c&&m==="below"&&n.createdAt){let ee=vo(n,d);ee.classList.add("tvw-mt-1"),f.appendChild(ee)}if(n.streaming&&n.role==="assistant"&&(!n.content||!n.content.trim())){let ee=fn();f.appendChild(ee)}if(n.role==="assistant"&&!n.streaming&&n.content&&n.content.trim()&&(t==null?void 0:t.enabled)!==!1&&t){let ee=bo(n,t,r);f.appendChild(ee)}if(!u||n.role==="system")return f;let h=p("div",`tvw-flex tvw-gap-2 ${n.role==="user"?"tvw-flex-row-reverse":""}`),x=Uo(l,n.role);return y==="right"||y==="left"&&n.role==="user"?h.append(f,x):h.append(x,f),f.classList.remove("tvw-max-w-[85%]"),f.classList.add("tvw-max-w-[calc(85%-2.5rem)]"),h},Jo=(n,e,o,t,r)=>{let s=o!=null?o:{};return n.role==="user"&&s.renderUserMessage?s.renderUserMessage({message:n,config:{},streaming:!!n.streaming}):n.role==="assistant"&&s.renderAssistantMessage?s.renderAssistantMessage({message:n,config:{},streaming:!!n.streaming}):rn(n,e,o,t,r)};var Hn=new Set,Rn=n=>{let e=n.reasoning,o=p("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(!e)return o;let t=Hn.has(n.id),r=p("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");r.type="button",r.setAttribute("aria-expanded",t?"true":"false");let s=p("div","tvw-flex tvw-flex-col tvw-text-left"),i=p("span","tvw-text-xs tvw-text-cw-primary");i.textContent="Thinking...",s.appendChild(i);let l=p("span","tvw-text-xs tvw-text-cw-primary");l.textContent=po(e),s.appendChild(l),e.status==="complete"?i.style.display="none":i.style.display="";let d=p("div","tvw-flex tvw-items-center"),c=le(t?"chevron-up":"chevron-down",16,"currentColor",2);c?d.appendChild(c):d.textContent=t?"Hide":"Show";let y=p("div","tvw-flex tvw-items-center tvw-ml-auto");y.append(d),r.append(s,y);let m=p("div","tvw-border-t tvw-border-gray-200 tvw-bg-gray-50 tvw-px-4 tvw-py-3");m.style.display=t?"":"none";let b=e.chunks.join(""),f=p("div","tvw-whitespace-pre-wrap tvw-text-xs tvw-leading-snug tvw-text-cw-muted");f.textContent=b||(e.status==="complete"?"No additional context was shared.":"Waiting for details\u2026"),m.appendChild(f);let D=()=>{r.setAttribute("aria-expanded",t?"true":"false"),d.innerHTML="";let x=le(t?"chevron-up":"chevron-down",16,"currentColor",2);x?d.appendChild(x):d.textContent=t?"Hide":"Show",m.style.display=t?"":"none"},j=()=>{t=!t,t?Hn.add(n.id):Hn.delete(n.id),D()};return r.addEventListener("pointerdown",h=>{h.preventDefault(),j()}),r.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),j())}),D(),o.append(r,m),o};var In=new Set,Pn=(n,e)=>{var j;let o=n.toolCall,t=(j=e==null?void 0:e.toolCall)!=null?j:{},r=p("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(t.backgroundColor&&(r.style.backgroundColor=t.backgroundColor),t.borderColor&&(r.style.borderColor=t.borderColor),t.borderWidth&&(r.style.borderWidth=t.borderWidth),t.borderRadius&&(r.style.borderRadius=t.borderRadius),!o)return r;let s=In.has(n.id),i=p("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");i.type="button",i.setAttribute("aria-expanded",s?"true":"false"),t.headerBackgroundColor&&(i.style.backgroundColor=t.headerBackgroundColor),t.headerPaddingX&&(i.style.paddingLeft=t.headerPaddingX,i.style.paddingRight=t.headerPaddingX),t.headerPaddingY&&(i.style.paddingTop=t.headerPaddingY,i.style.paddingBottom=t.headerPaddingY);let l=p("div","tvw-flex tvw-flex-col tvw-text-left"),d=p("span","tvw-text-xs tvw-text-cw-primary");t.headerTextColor&&(d.style.color=t.headerTextColor),d.textContent=uo(o),l.appendChild(d);let u=p("div","tvw-flex tvw-items-center"),c=t.toggleTextColor||t.headerTextColor||"currentColor",y=le(s?"chevron-up":"chevron-down",16,c,2);y?u.appendChild(y):u.textContent=s?"Hide":"Show";let m=p("div","tvw-flex tvw-items-center tvw-gap-2 tvw-ml-auto");m.append(u),i.append(l,m);let b=p("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",t.contentBackgroundColor&&(b.style.backgroundColor=t.contentBackgroundColor),t.contentTextColor&&(b.style.color=t.contentTextColor),t.contentPaddingX&&(b.style.paddingLeft=t.contentPaddingX,b.style.paddingRight=t.contentPaddingX),t.contentPaddingY&&(b.style.paddingTop=t.contentPaddingY,b.style.paddingBottom=t.contentPaddingY),o.name){let h=p("div","tvw-text-xs tvw-text-cw-muted tvw-italic");t.contentTextColor?h.style.color=t.contentTextColor:t.headerTextColor&&(h.style.color=t.headerTextColor),h.textContent=o.name,b.appendChild(h)}if(o.args!==void 0){let h=p("div","tvw-space-y-1"),x=p("div","tvw-text-xs tvw-text-cw-muted");t.labelTextColor&&(x.style.color=t.labelTextColor),x.textContent="Arguments";let R=p("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");R.style.fontSize="0.75rem",R.style.lineHeight="1rem",t.codeBlockBackgroundColor&&(R.style.backgroundColor=t.codeBlockBackgroundColor),t.codeBlockBorderColor&&(R.style.borderColor=t.codeBlockBorderColor),t.codeBlockTextColor&&(R.style.color=t.codeBlockTextColor),R.textContent=An(o.args),h.append(x,R),b.appendChild(h)}if(o.chunks&&o.chunks.length){let h=p("div","tvw-space-y-1"),x=p("div","tvw-text-xs tvw-text-cw-muted");t.labelTextColor&&(x.style.color=t.labelTextColor),x.textContent="Activity";let R=p("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");R.style.fontSize="0.75rem",R.style.lineHeight="1rem",t.codeBlockBackgroundColor&&(R.style.backgroundColor=t.codeBlockBackgroundColor),t.codeBlockBorderColor&&(R.style.borderColor=t.codeBlockBorderColor),t.codeBlockTextColor&&(R.style.color=t.codeBlockTextColor),R.textContent=o.chunks.join(`
|
|
16
|
-
`),h.append(x,R),b.appendChild(h)}if(o.status==="complete"&&o.result!==void 0){let h=p("div","tvw-space-y-1"),x=p("div","tvw-text-xs tvw-text-cw-muted");t.labelTextColor&&(x.style.color=t.labelTextColor),x.textContent="Result";let R=p("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");R.style.fontSize="0.75rem",R.style.lineHeight="1rem",t.codeBlockBackgroundColor&&(R.style.backgroundColor=t.codeBlockBackgroundColor),t.codeBlockBorderColor&&(R.style.borderColor=t.codeBlockBorderColor),t.codeBlockTextColor&&(R.style.color=t.codeBlockTextColor),R.textContent=An(o.result),h.append(x,R),b.appendChild(h)}if(o.status==="complete"&&typeof o.duration=="number"){let h=p("div","tvw-text-xs tvw-text-cw-muted");t.contentTextColor&&(h.style.color=t.contentTextColor),h.textContent=`Duration: ${o.duration}ms`,b.appendChild(h)}let f=()=>{i.setAttribute("aria-expanded",s?"true":"false"),u.innerHTML="";let h=t.toggleTextColor||t.headerTextColor||"currentColor",x=le(s?"chevron-up":"chevron-down",16,h,2);x?u.appendChild(x):u.textContent=s?"Hide":"Show",b.style.display=s?"":"none"},D=()=>{s=!s,s?In.add(n.id):In.delete(n.id),f()};return i.addEventListener("pointerdown",h=>{h.preventDefault(),D()}),i.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),D())}),f(),r.append(i,b),r};var Co=n=>{let e=[];return{buttons:e,render:(t,r,s,i,l)=>{if(n.innerHTML="",e.length=0,!t||!t.length||(i!=null?i:r?r.getMessages():[]).some(b=>b.role==="user"))return;let c=document.createDocumentFragment(),y=r?r.isStreaming():!1,m=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'}};t.forEach(b=>{let f=p("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");f.type="button",f.textContent=b,f.disabled=y,l!=null&&l.fontFamily&&(f.style.fontFamily=m(l.fontFamily)),l!=null&&l.fontWeight&&(f.style.fontWeight=l.fontWeight),l!=null&&l.paddingX&&(f.style.paddingLeft=l.paddingX,f.style.paddingRight=l.paddingX),l!=null&&l.paddingY&&(f.style.paddingTop=l.paddingY,f.style.paddingBottom=l.paddingY),f.addEventListener("click",()=>{!r||r.isStreaming()||(s.value="",r.sendMessage(b))}),c.appendChild(f),e.push(f)}),n.appendChild(c)}}};var xo={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"}},$n=(n,e,o,t)=>{let r=n.querySelectorAll("[data-tv-form]");r.length&&r.forEach(s=>{var f,D,j;if(s.dataset.enhanced==="true")return;let i=(f=s.dataset.tvForm)!=null?f:"init";s.dataset.enhanced="true";let l=(D=xo[i])!=null?D:xo.init;s.classList.add("tvw-form-card","tvw-space-y-4");let d=p("div","tvw-space-y-1"),u=p("h3","tvw-text-base tvw-font-semibold tvw-text-cw-primary");if(u.textContent=l.title,d.appendChild(u),l.description){let h=p("p","tvw-text-sm tvw-text-cw-muted");h.textContent=l.description,d.appendChild(h)}let c=document.createElement("form");c.className="tvw-form-grid tvw-space-y-3",l.fields.forEach(h=>{var T,O;let x=p("label","tvw-form-field tvw-flex tvw-flex-col tvw-gap-1");x.htmlFor=`${e.id}-${i}-${h.name}`;let R=p("span","tvw-text-xs tvw-font-medium tvw-text-cw-muted");R.textContent=h.label,x.appendChild(R);let w=(T=h.type)!=null?T:"text",K;w==="textarea"?(K=document.createElement("textarea"),K.rows=3):(K=document.createElement("input"),K.type=w),K.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",K.id=`${e.id}-${i}-${h.name}`,K.name=h.name,K.placeholder=(O=h.placeholder)!=null?O:"",h.required&&(K.required=!0),x.appendChild(K),c.appendChild(x)});let y=p("div","tvw-flex tvw-items-center tvw-justify-between tvw-gap-2"),m=p("div","tvw-text-xs tvw-text-cw-muted tvw-min-h-[1.5rem]"),b=p("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=(j=l.submitLabel)!=null?j:"Submit",y.appendChild(m),y.appendChild(b),c.appendChild(y),s.replaceChildren(d,c),c.addEventListener("submit",async h=>{var K,T;h.preventDefault();let x=(K=o.formEndpoint)!=null?K:"/form",R=new FormData(c),w={};R.forEach((O,ee)=>{w[ee]=O}),w.type=i,b.disabled=!0,m.textContent="Submitting\u2026";try{let O=await fetch(x,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(w)});if(!O.ok)throw new Error(`Form submission failed (${O.status})`);let ee=await O.json();m.textContent=(T=ee.message)!=null?T:"Thanks! We'll be in touch soon.",ee.success&&ee.nextPrompt&&await t.sendMessage(String(ee.nextPrompt))}catch(O){m.textContent=O instanceof Error?O.message:"Something went wrong. Please try again."}finally{b.disabled=!1}})})};var On=class{constructor(){this.plugins=new Map}register(e){var o;this.plugins.has(e.id)&&console.warn(`Plugin "${e.id}" is already registered. Overwriting.`),this.plugins.set(e.id,e),(o=e.onRegister)==null||o.call(e)}unregister(e){var t;let o=this.plugins.get(e);o&&((t=o.onUnregister)==null||t.call(o),this.plugins.delete(e))}getAll(){return Array.from(this.plugins.values()).sort((e,o)=>{var t,r;return((t=o.priority)!=null?t:0)-((r=e.priority)!=null?r:0)})}getForInstance(e){let o=this.getAll();if(!e||e.length===0)return o;let t=new Set(e.map(s=>s.id));return[...o.filter(s=>!t.has(s.id)),...e].sort((s,i)=>{var l,d;return((l=i.priority)!=null?l:0)-((d=s.priority)!=null?d:0)})}clear(){this.plugins.forEach(e=>{var o;return(o=e.onUnregister)==null?void 0:o.call(e)}),this.plugins.clear()}},wn=new On;var He={apiUrl:"http://localhost:43111/api/chat/dispatch",clientToken:void 0,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))",heightOffset:0,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,placement:"inline",iconName:"refresh-cw",size:"32px",showTooltip:!0,tooltipText:"Clear chat",paddingX:"0px",paddingY:"0px"},headerIconHidden:!1,border:"1px solid #e5e7eb",shadow:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.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"},layout:{header:{layout:"default",showIcon:!0,showTitle:!0,showSubtitle:!0,showCloseButton:!0,showClearChat:!0},messages:{layout:"bubble",avatar:{show:!1,position:"left"},timestamp:{show:!1,position:"below"},groupConsecutive:!1},slots:{}},markdown:{options:{gfm:!0,breaks:!0},disableDefaultStyles:!1},messageActions:{enabled:!0,showCopy:!0,showUpvote:!1,showDownvote:!1,visibility:"hover",align:"right",layout:"pill-inside"},debug:!1};function Fn(n){var e,o,t,r,s,i,l,d,u,c,y,m,b,f,D,j,h,x,R;return n?{...He,...n,theme:{...He.theme,...n.theme},launcher:{...He.launcher,...n.launcher,clearChat:{...(e=He.launcher)==null?void 0:e.clearChat,...(o=n.launcher)==null?void 0:o.clearChat}},copy:{...He.copy,...n.copy},sendButton:{...He.sendButton,...n.sendButton},statusIndicator:{...He.statusIndicator,...n.statusIndicator},voiceRecognition:{...He.voiceRecognition,...n.voiceRecognition},features:{...He.features,...n.features},suggestionChips:(t=n.suggestionChips)!=null?t:He.suggestionChips,suggestionChipsConfig:{...He.suggestionChipsConfig,...n.suggestionChipsConfig},layout:{...He.layout,...n.layout,header:{...(r=He.layout)==null?void 0:r.header,...(s=n.layout)==null?void 0:s.header},messages:{...(i=He.layout)==null?void 0:i.messages,...(l=n.layout)==null?void 0:l.messages,avatar:{...(u=(d=He.layout)==null?void 0:d.messages)==null?void 0:u.avatar,...(y=(c=n.layout)==null?void 0:c.messages)==null?void 0:y.avatar},timestamp:{...(b=(m=He.layout)==null?void 0:m.messages)==null?void 0:b.timestamp,...(D=(f=n.layout)==null?void 0:f.messages)==null?void 0:D.timestamp}},slots:{...(j=He.layout)==null?void 0:j.slots,...(h=n.layout)==null?void 0:h.slots}},markdown:{...He.markdown,...n.markdown,options:{...(x=He.markdown)==null?void 0:x.options,...(R=n.markdown)==null?void 0:R.options}},messageActions:{...He.messageActions,...n.messageActions}}:He}var So=()=>{let n=new Map,e=(r,s)=>(n.has(r)||n.set(r,new Set),n.get(r).add(s),()=>o(r,s)),o=(r,s)=>{var i;(i=n.get(r))==null||i.delete(s)};return{on:e,off:o,emit:(r,s)=>{var i;(i=n.get(r))==null||i.forEach(l=>{try{l(s)}catch(d){typeof console!="undefined"&&console.error("[AgentWidget] Event handler error:",d)}})}}};var Yo=n=>{let e=n.match(/```(?:json)?\s*([\s\S]*?)```/i);return e?e[1]:n},Ko=n=>{let e=n.trim(),o=e.indexOf("{");if(o===-1)return null;let t=0;for(let r=o;r<e.length;r+=1){let s=e[r];if(s==="{"&&(t+=1),s==="}"&&(t-=1,t===0))return e.slice(o,r+1)}return null},yn=({text:n})=>{if(!n||!n.includes("{"))return null;try{let e=Yo(n),o=Ko(e);if(!o)return null;let t=JSON.parse(o);if(!t||typeof t!="object"||!t.action)return null;let{action:r,...s}=t;return{type:String(r),payload:s,raw:t}}catch{return null}},Dn=n=>typeof n=="string"?n:n==null?"":String(n),Vt={message:n=>n.type!=="message"?void 0:{handled:!0,displayText:Dn(n.payload.text)},messageAndClick:(n,e)=>{var r;if(n.type!=="message_and_click")return;let o=n.payload,t=Dn(o.element);if(t&&((r=e.document)!=null&&r.querySelector)){let s=e.document.querySelector(t);s?setTimeout(()=>{s.click()},400):typeof console!="undefined"&&console.warn("[AgentWidget] Element not found for selector:",t)}return{handled:!0,displayText:Dn(o.text)}}},Ao=n=>Array.isArray(n)?n.map(e=>String(e)):[],vn=n=>{let e=new Set(Ao(n.getMetadata().processedActionMessageIds)),o=()=>{e=new Set(Ao(n.getMetadata().processedActionMessageIds))},t=()=>{let s=Array.from(e);n.updateMetadata(i=>({...i,processedActionMessageIds:s}))};return{process:s=>{if(s.streaming||s.message.role!=="assistant"||!s.text||e.has(s.message.id))return null;let i=typeof s.raw=="string"&&s.raw||typeof s.message.rawContent=="string"&&s.message.rawContent||typeof s.text=="string"&&s.text||null;!i&&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 l=i?n.parsers.reduce((u,c)=>u||(c==null?void 0:c({text:i,message:s.message}))||null,null):null;if(!l)return null;e.add(s.message.id),t();let d={action:l,message:s.message};n.emit("action:detected",d);for(let u of n.handlers)if(u)try{let c=u(l,{message:s.message,metadata:n.getMetadata(),updateMetadata:n.updateMetadata,document:n.documentRef});if(!c)continue;if(c.handled){let y=c.persistMessage!==!1;return{text:c.displayText!==void 0?c.displayText:"",persist:y}}}catch(c){typeof console!="undefined"&&console.error("[AgentWidget] Action handler error:",c)}return{text:"",persist:!0}},syncFromMetadata:o}};var Xo=n=>{if(!n)return null;try{return JSON.parse(n)}catch(e){return typeof console!="undefined"&&console.error("[AgentWidget] Failed to parse stored state:",e),null}},Vo=n=>n.map(e=>({...e,streaming:!1})),Nn=(n="vanilla-agent-state")=>{let e=()=>typeof window=="undefined"||!window.localStorage?null:window.localStorage;return{load:()=>{let o=e();return o?Xo(o.getItem(n)):null},save:o=>{let t=e();if(t)try{let r={...o,messages:o.messages?Vo(o.messages):void 0};t.setItem(n,JSON.stringify(r))}catch(r){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",r)}},clear:()=>{let o=e();if(o)try{o.removeItem(n)}catch(t){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear stored state:",t)}}}};var jn=class{constructor(){this.components=new Map}register(e,o){this.components.has(e)&&console.warn(`[ComponentRegistry] Component "${e}" is already registered. Overwriting.`),this.components.set(e,o)}unregister(e){this.components.delete(e)}get(e){return this.components.get(e)}has(e){return this.components.has(e)}getAllNames(){return Array.from(this.components.keys())}clear(){this.components.clear()}registerAll(e){Object.entries(e).forEach(([o,t])=>{this.register(o,t)})}},an=new jn;import{parse as Go,STR as Zo,OBJ as Qo}from"partial-json";function er(n){if(!n||typeof n!="object"||!("component"in n))return!1;let e=n.component;return typeof e=="string"&&e.length>0}function tr(n,e){if(!er(n))return null;let o=n.props&&typeof n.props=="object"&&n.props!==null?n.props:{};return{component:n.component,props:o,raw:e}}function _n(){let n=null,e=0;return{getExtractedDirective:()=>n,processChunk:o=>{let t=o.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;if(o.length<=e)return n;try{let r=Go(o,Zo|Qo),s=tr(r,o);s&&(n=s)}catch{}return e=o.length,n},reset:()=>{n=null,e=0}}}function nr(n){return typeof n=="object"&&n!==null&&"component"in n&&typeof n.component=="string"&&"props"in n&&typeof n.props=="object"}function qn(n,e){let{config:o,message:t,onPropsUpdate:r}=e,s=an.get(n.component);if(!s)return console.warn(`[ComponentMiddleware] Component "${n.component}" not found in registry. Falling back to default rendering.`),null;let i={message:t,config:o,updateProps:l=>{r&&r(l)}};try{return s(n.props,i)}catch(l){return console.error(`[ComponentMiddleware] Error rendering component "${n.component}":`,l),null}}function sr(){let n=_n();return{processChunk:e=>n.processChunk(e),getDirective:()=>n.getExtractedDirective(),reset:()=>{n.reset()}}}function Un(n){if(!n.rawContent)return!1;try{let e=JSON.parse(n.rawContent);return typeof e=="object"&&e!==null&&"component"in e&&typeof e.component=="string"}catch{return!1}}function zn(n){if(!n.rawContent)return null;try{let e=JSON.parse(n.rawContent);if(typeof e=="object"&&e!==null&&"component"in e&&typeof e.component=="string")return{component:e.component,props:e.props&&typeof e.props=="object"&&e.props!==null?e.props:{},raw:n.rawContent}}catch{}return null}var Gt="vanilla-agent-chat-history",or=30*1e3,Jn=n=>!n||typeof n!="object"?{}:{...n},To=n=>n.map(e=>({...e,streaming:!1})),Eo=(n,e)=>{let o=n!=null&&n.markdown?gn(n.markdown):null;return t=>{var i,l,d;let r=(i=t.text)!=null?i:"",s=(l=t.message.rawContent)!=null?l:null;if(e){let u=e.process({text:r,raw:s!=null?s:r,message:t.message,streaming:t.streaming});u!==null&&(r=u.text,u.persist||(t.message.__skipPersist=!0))}return n!=null&&n.postprocessMessage?n.postprocessMessage({...t,text:r,raw:(d=s!=null?s:t.text)!=null?d:""}):o?o(r):Sn(r)}},Yn=(n,e,o)=>{var ce,Ie,pe,Fe,rt,ht,Xn,Vn,Gn,Zn,Qn,es,ts,ns;(!n.id||n.id!=="vanilla-agent-root")&&(n.id="vanilla-agent-root");let t=Fn(e),r=wn.getForInstance(t.plugins);t.components&&an.registerAll(t.components);let s=So(),i=(ce=t.storageAdapter)!=null?ce:Nn(),l={},d=null;if(i!=null&&i.load)try{let a=i.load();if(a&&typeof a.then=="function")d=a;else if(a){let g=a;g.metadata&&(l=Jn(g.metadata)),(Ie=g.messages)!=null&&Ie.length&&(t={...t,initialMessages:g.messages})}}catch(a){typeof console!="undefined"&&console.error("[AgentWidget] Failed to load stored state:",a)}let u=()=>l,c=a=>{var W;l=(W=a({...l}))!=null?W:{},Wt()},y=t.actionParsers&&t.actionParsers.length?t.actionParsers:[yn],m=t.actionHandlers&&t.actionHandlers.length?t.actionHandlers:[Vt.message,Vt.messageAndClick],b=vn({parsers:y,handlers:m,getMetadata:u,updateMetadata:c,emit:s.emit,documentRef:typeof document!="undefined"?document:null});b.syncFromMetadata();let f=(Fe=(pe=t.launcher)==null?void 0:pe.enabled)!=null?Fe:!0,D=(ht=(rt=t.launcher)==null?void 0:rt.autoExpand)!=null?ht:!1,j=D,h=f,x=f?D:!0,R=Eo(t,b),w=(Vn=(Xn=t.features)==null?void 0:Xn.showReasoning)!=null?Vn:!0,K=(Zn=(Gn=t.features)==null?void 0:Gn.showToolCalls)!=null?Zn:!0,T={onCopy:a=>{s.emit("message:copy",a)},onFeedback:a=>{s.emit("message:feedback",a)}},O=(Qn=t.statusIndicator)!=null?Qn:{},ee=a=>{var g,W,N,I;return a==="idle"?(g=O.idleText)!=null?g:Ke.idle:a==="connecting"?(W=O.connectingText)!=null?W:Ke.connecting:a==="connected"?(N=O.connectedText)!=null?N:Ke.connected:a==="error"?(I=O.errorText)!=null?I:Ke.error:Ke[a]},{wrapper:P,panel:Y}=wo(t),fe=yo(t,f),{container:J,body:F,messagesWrapper:ne,suggestions:De,textarea:oe,sendButton:$,sendButtonWrapper:qe,composerForm:Xe,statusText:tt,introTitle:bt,introSubtitle:Ct,closeButton:q,iconHolder:he,headerTitle:mt,headerSubtitle:ft,header:Ve,footer:nt}=fe,L=fe.micButton,Re=fe.micButtonWrapper,it=r.find(a=>a.renderHeader);if(it!=null&&it.renderHeader){let a=it.renderHeader({config:t,defaultRenderer:()=>{let g=zt({config:t,showClose:f});return sn(J,g,t),g.header},onClose:()=>ot(!1,"user")});if(a){let g=J.querySelector(".tvw-border-b-cw-divider");g&&(g.replaceWith(a),Ve=a)}}let at=r.find(a=>a.renderComposer);if(at!=null&&at.renderComposer){let a=at.renderComposer({config:t,defaultRenderer:()=>on({config:t}).footer,onSubmit:g=>{U&&!U.isStreaming()&&U.sendMessage(g)},disabled:!1});a&&(nt.replaceWith(a),nt=a)}(()=>{var N,I;let a=(I=(N=t.layout)==null?void 0:N.slots)!=null?I:{},g=re=>{switch(re){case"body-top":return J.querySelector(".tvw-rounded-2xl.tvw-bg-cw-surface.tvw-p-6")||null;case"messages":return ne;case"footer-top":return De;case"composer":return Xe;case"footer-bottom":return tt;default:return null}},W=(re,H)=>{var C;switch(re){case"header-left":case"header-center":case"header-right":if(re==="header-left")Ve.insertBefore(H,Ve.firstChild);else if(re==="header-right")Ve.appendChild(H);else{let _=Ve.querySelector(".tvw-flex-col");_?(C=_.parentNode)==null||C.insertBefore(H,_.nextSibling):Ve.appendChild(H)}break;case"body-top":let G=F.querySelector(".tvw-rounded-2xl.tvw-bg-cw-surface.tvw-p-6");G?G.replaceWith(H):F.insertBefore(H,F.firstChild);break;case"body-bottom":F.appendChild(H);break;case"footer-top":De.replaceWith(H);break;case"footer-bottom":tt.replaceWith(H);break;default:break}};for(let[re,H]of Object.entries(a))if(H)try{let C=H({config:t,defaultContent:()=>g(re)});C&&W(re,C)}catch(C){typeof console!="undefined"&&console.error(`[AgentWidget] Error rendering slot "${re}":`,C)}})(),Y.appendChild(J),n.appendChild(P);let wt=()=>{var ie,Pe,dt,ae,ct,Ht,Rt,Lt,_t,It,qt,pt,Pt,$t,pn,en;let a=(Pe=(ie=t.launcher)==null?void 0:ie.sidebarMode)!=null?Pe:!1,g=a||((ae=(dt=t.launcher)==null?void 0:dt.fullHeight)!=null?ae:!1),W=(ct=t.theme)!=null?ct:{},N=(Rt=(Ht=t.launcher)==null?void 0:Ht.position)!=null?Rt:"bottom-left",I=N==="bottom-left"||N==="top-left",re=a?"none":"1px solid var(--tvw-cw-border)",H=a?I?"2px 0 12px rgba(0, 0, 0, 0.08)":"-2px 0 12px rgba(0, 0, 0, 0.08)":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",C=a?"0":"16px",G=(Lt=W.panelBorder)!=null?Lt:re,_=(_t=W.panelShadow)!=null?_t:H,k=(It=W.panelBorderRadius)!=null?It:C;n.style.cssText="",P.style.cssText="",Y.style.cssText="",J.style.cssText="",F.style.cssText="",nt.style.cssText="";let z=(pt=(qt=t==null?void 0:t.launcher)==null?void 0:qt.width)!=null?pt:t==null?void 0:t.launcherWidth,Be=z!=null?z:"min(400px, calc(100vw - 24px))";a||(Y.style.width=Be,Y.style.maxWidth=Be),Y.style.boxShadow=_,Y.style.borderRadius=k,J.style.border=G,J.style.borderRadius=k;let ue=((Pt=t.launcher)==null?void 0:Pt.enabled)===!1;if(g&&(n.style.display="flex",n.style.flexDirection="column",n.style.height="100%",n.style.minHeight="0",P.style.display="flex",P.style.flexDirection="column",P.style.flex="1 1 0%",P.style.minHeight="0",P.style.maxHeight="100%",P.style.height="100%",ue&&(P.style.overflow="hidden"),Y.style.display="flex",Y.style.flexDirection="column",Y.style.flex="1 1 0%",Y.style.minHeight="0",Y.style.maxHeight="100%",Y.style.height="100%",Y.style.overflow="hidden",J.style.display="flex",J.style.flexDirection="column",J.style.flex="1 1 0%",J.style.minHeight="0",J.style.maxHeight="100%",J.style.overflow="hidden",F.style.flex="1 1 0%",F.style.minHeight="0",F.style.overflowY="auto",nt.style.flexShrink="0"),P.classList.remove("tvw-bottom-6","tvw-right-6","tvw-left-6","tvw-top-6","tvw-bottom-4","tvw-right-4","tvw-left-4","tvw-top-4"),!a&&!ue&&(($t=vt[N])!=null?$t:vt["bottom-right"]).split(" ").forEach(Yt=>P.classList.add(Yt)),a){let Ut=(en=(pn=t.launcher)==null?void 0:pn.sidebarWidth)!=null?en:"420px";P.style.cssText=`
|
|
15
|
+
`,s.addEventListener("click",e);let t=o=>{var h,b,W,v,D,x,S,X,B,j,Z,_;let i=(h=o.launcher)!=null?h:{},l=s.querySelector("[data-role='launcher-title']");l&&(l.textContent=(b=i.title)!=null?b:"Chat Assistant");let c=s.querySelector("[data-role='launcher-subtitle']");c&&(c.textContent=(W=i.subtitle)!=null?W:"Get answers fast");let d=s.querySelector(".tvw-flex-col");d&&(i.textHidden?d.style.display="none":d.style.display="");let f=s.querySelector("[data-role='launcher-icon']");if(f)if(i.agentIconHidden)f.style.display="none";else{let K=(v=i.agentIconSize)!=null?v:"40px";if(f.style.height=K,f.style.width=K,f.innerHTML="",i.agentIconName){let Q=parseFloat(K)||24,ne=ce(i.agentIconName,Q*.6,"#ffffff",2);ne?(f.appendChild(ne),f.style.display=""):(f.textContent=(D=i.agentIconText)!=null?D:"\u{1F4AC}",f.style.display="")}else i.iconUrl?f.style.display="none":(f.textContent=(x=i.agentIconText)!=null?x:"\u{1F4AC}",f.style.display="")}let w=s.querySelector("[data-role='launcher-image']");if(w){let K=(S=i.agentIconSize)!=null?S:"40px";w.style.height=K,w.style.width=K,i.iconUrl&&!i.agentIconName&&!i.agentIconHidden?(w.src=i.iconUrl,w.style.display="block"):w.style.display="none"}let u=s.querySelector("[data-role='launcher-call-to-action-icon']");if(u){let K=(X=i.callToActionIconSize)!=null?X:"32px";u.style.height=K,u.style.width=K,i.callToActionIconBackgroundColor?(u.style.backgroundColor=i.callToActionIconBackgroundColor,u.classList.remove("tvw-bg-cw-primary")):(u.style.backgroundColor="",u.classList.add("tvw-bg-cw-primary"));let Q=0;if(i.callToActionIconPadding?(u.style.boxSizing="border-box",u.style.padding=i.callToActionIconPadding,Q=(parseFloat(i.callToActionIconPadding)||0)*2):(u.style.boxSizing="",u.style.padding=""),i.callToActionIconHidden)u.style.display="none";else if(u.style.display="",u.innerHTML="",i.callToActionIconName){let ne=parseFloat(K)||24,re=Math.max(ne-Q,8),q=ce(i.callToActionIconName,re,"currentColor",2);q?u.appendChild(q):u.textContent=(B=i.callToActionIconText)!=null?B:"\u2197"}else u.textContent=(j=i.callToActionIconText)!=null?j:"\u2197"}let C=i.position&&vt[i.position]?vt[i.position]:vt["bottom-right"],g="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-transition hover:tvw-translate-y-[-2px] tvw-cursor-pointer tvw-z-50";s.className=`${g} ${C}`;let U="1px solid #e5e7eb",I="0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)";s.style.border=(Z=i.border)!=null?Z:U,s.style.boxShadow=(_=i.shadow)!=null?_:I},r=()=>{s.removeEventListener("click",e),s.remove()};return n&&t(n),{element:s,update:t,destroy:r}};var zt=n=>{var j,Z,_,K,Q,ne,re,q,qe,Ve,nt,bt,Ct,Y,fe,mt,ft,Ge,st,H,He,at,lt,Tt,wt,Ie,ot,Ue,R,dt,Se,Oe;let{config:e,showClose:s=!0}=n,t=m("div","tvw-widget-header tvw-flex tvw-items-center tvw-gap-3 tvw-bg-cw-surface tvw-px-6 tvw-py-5 tvw-border-b-cw-divider"),r=(j=e==null?void 0:e.launcher)!=null?j:{},o=(Z=r.headerIconSize)!=null?Z:"48px",i=(_=r.closeButtonSize)!=null?_:"32px",l=(K=r.closeButtonPlacement)!=null?K:"inline",c=(Q=r.headerIconHidden)!=null?Q:!1,d=r.headerIconName,f=m("div","tvw-flex tvw-items-center tvw-justify-center tvw-rounded-xl tvw-bg-cw-primary tvw-text-white tvw-text-xl");if(f.style.height=o,f.style.width=o,!c)if(d){let te=parseFloat(o)||24,Ae=ce(d,te*.6,"#ffffff",2);Ae?f.replaceChildren(Ae):f.textContent=(re=(ne=e==null?void 0:e.launcher)==null?void 0:ne.agentIconText)!=null?re:"\u{1F4AC}"}else if((q=e==null?void 0:e.launcher)!=null&&q.iconUrl){let te=m("img");te.src=e.launcher.iconUrl,te.alt="",te.className="tvw-rounded-xl tvw-object-cover",te.style.height=o,te.style.width=o,f.replaceChildren(te)}else f.textContent=(Ve=(qe=e==null?void 0:e.launcher)==null?void 0:qe.agentIconText)!=null?Ve:"\u{1F4AC}";let w=m("div","tvw-flex tvw-flex-col"),u=m("span","tvw-text-base tvw-font-semibold");u.textContent=(bt=(nt=e==null?void 0:e.launcher)==null?void 0:nt.title)!=null?bt:"Chat Assistant";let C=m("span","tvw-text-xs tvw-text-cw-muted");C.textContent=(Y=(Ct=e==null?void 0:e.launcher)==null?void 0:Ct.subtitle)!=null?Y:"Here to help you get answers fast",w.append(u,C),c?t.append(w):t.append(f,w);let g=(fe=r.clearChat)!=null?fe:{},U=(mt=g.enabled)!=null?mt:!0,I=(ft=g.placement)!=null?ft:"inline",h=null,b=null;if(U){let te=(Ge=g.size)!=null?Ge:"32px",Ae=(st=g.iconName)!=null?st:"refresh-cw",Te=(H=g.iconColor)!=null?H:"",ze=(He=g.backgroundColor)!=null?He:"",Ye=(at=g.borderWidth)!=null?at:"",xt=(lt=g.borderColor)!=null?lt:"",Lt=(Tt=g.borderRadius)!=null?Tt:"",yt=(wt=g.paddingX)!=null?wt:"",Et=(Ie=g.paddingY)!=null?Ie:"",St=(ot=g.tooltipText)!=null?ot:"Clear chat",ye=(Ue=g.showTooltip)!=null?Ue:!0;b=m("div",I==="top-right"?"tvw-absolute tvw-top-4 tvw-z-50":"tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper"),I==="top-right"&&(b.style.right="48px"),h=m("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"),h.style.height=te,h.style.width=te,h.type="button",h.setAttribute("aria-label",St);let Bt=ce(Ae,"20px",Te||"",2);if(Bt&&h.appendChild(Bt),Te&&(h.style.color=Te,h.classList.remove("tvw-text-cw-muted")),ze&&(h.style.backgroundColor=ze,h.classList.remove("hover:tvw-bg-gray-100")),Ye||xt){let ke=Ye||"0px",Je=xt||"transparent";h.style.border=`${ke} solid ${Je}`,h.classList.remove("tvw-border-none")}if(Lt&&(h.style.borderRadius=Lt,h.classList.remove("tvw-rounded-full")),yt?(h.style.paddingLeft=yt,h.style.paddingRight=yt):(h.style.paddingLeft="",h.style.paddingRight=""),Et?(h.style.paddingTop=Et,h.style.paddingBottom=Et):(h.style.paddingTop="",h.style.paddingBottom=""),b.appendChild(h),ye&&St&&h&&b){let ke=null,Je=()=>{if(ke||!h)return;ke=m("div","tvw-clear-chat-tooltip"),ke.textContent=St;let Nt=m("div");Nt.className="tvw-clear-chat-tooltip-arrow",ke.appendChild(Nt);let Mt=h.getBoundingClientRect();ke.style.position="fixed",ke.style.left=`${Mt.left+Mt.width/2}px`,ke.style.top=`${Mt.top-8}px`,ke.style.transform="translate(-50%, -100%)",document.body.appendChild(ke)},At=()=>{ke&&ke.parentNode&&(ke.parentNode.removeChild(ke),ke=null)};b.addEventListener("mouseenter",Je),b.addEventListener("mouseleave",At),h.addEventListener("focus",Je),h.addEventListener("blur",At),b._cleanupTooltip=()=>{At(),b&&(b.removeEventListener("mouseenter",Je),b.removeEventListener("mouseleave",At)),h&&(h.removeEventListener("focus",Je),h.removeEventListener("blur",At))}}I==="inline"&&t.appendChild(b)}let W=m("div",l==="top-right"?"tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50":U&&I==="inline"?"":"tvw-ml-auto"),v=m("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");v.style.height=i,v.style.width=i,v.type="button";let D=(R=r.closeButtonTooltipText)!=null?R:"Close chat",x=(dt=r.closeButtonShowTooltip)!=null?dt:!0;v.setAttribute("aria-label",D),v.style.display=s?"":"none";let S=(Se=r.closeButtonIconName)!=null?Se:"x",X=(Oe=r.closeButtonIconText)!=null?Oe:"\xD7",B=ce(S,"20px",r.closeButtonColor||"",2);if(B?v.appendChild(B):v.textContent=X,r.closeButtonColor?(v.style.color=r.closeButtonColor,v.classList.remove("tvw-text-cw-muted")):(v.style.color="",v.classList.add("tvw-text-cw-muted")),r.closeButtonBackgroundColor?(v.style.backgroundColor=r.closeButtonBackgroundColor,v.classList.remove("hover:tvw-bg-gray-100")):(v.style.backgroundColor="",v.classList.add("hover:tvw-bg-gray-100")),r.closeButtonBorderWidth||r.closeButtonBorderColor){let te=r.closeButtonBorderWidth||"0px",Ae=r.closeButtonBorderColor||"transparent";v.style.border=`${te} solid ${Ae}`,v.classList.remove("tvw-border-none")}else v.style.border="",v.classList.add("tvw-border-none");if(r.closeButtonBorderRadius?(v.style.borderRadius=r.closeButtonBorderRadius,v.classList.remove("tvw-rounded-full")):(v.style.borderRadius="",v.classList.add("tvw-rounded-full")),r.closeButtonPaddingX?(v.style.paddingLeft=r.closeButtonPaddingX,v.style.paddingRight=r.closeButtonPaddingX):(v.style.paddingLeft="",v.style.paddingRight=""),r.closeButtonPaddingY?(v.style.paddingTop=r.closeButtonPaddingY,v.style.paddingBottom=r.closeButtonPaddingY):(v.style.paddingTop="",v.style.paddingBottom=""),W.appendChild(v),x&&D){let te=null,Ae=()=>{if(te)return;te=m("div","tvw-clear-chat-tooltip"),te.textContent=D;let ze=m("div");ze.className="tvw-clear-chat-tooltip-arrow",te.appendChild(ze);let Ye=v.getBoundingClientRect();te.style.position="fixed",te.style.left=`${Ye.left+Ye.width/2}px`,te.style.top=`${Ye.top-8}px`,te.style.transform="translate(-50%, -100%)",document.body.appendChild(te)},Te=()=>{te&&te.parentNode&&(te.parentNode.removeChild(te),te=null)};W.addEventListener("mouseenter",Ae),W.addEventListener("mouseleave",Te),v.addEventListener("focus",Ae),v.addEventListener("blur",Te),W._cleanupTooltip=()=>{Te(),W.removeEventListener("mouseenter",Ae),W.removeEventListener("mouseleave",Te),v.removeEventListener("focus",Ae),v.removeEventListener("blur",Te)}}return l!=="top-right"&&t.appendChild(W),{header:t,iconHolder:f,headerTitle:u,headerSubtitle:C,closeButton:v,closeButtonWrapper:W,clearChatButton:h,clearChatButtonWrapper:b}},dn=(n,e,s)=>{var i,l,c,d;let t=(i=s==null?void 0:s.launcher)!=null?i:{},r=(l=t.closeButtonPlacement)!=null?l:"inline",o=(d=(c=t.clearChat)==null?void 0:c.placement)!=null?d:"inline";n.appendChild(e.header),r==="top-right"&&(n.style.position="relative",n.appendChild(e.closeButtonWrapper)),e.clearChatButtonWrapper&&o==="top-right"&&(n.style.position="relative",n.appendChild(e.clearChatButtonWrapper))};var xo=n=>zt({config:n.config,showClose:n.showClose,onClose:n.onClose,onClearChat:n.onClearChat}),So=n=>{var g,U,I,h;let{config:e,showClose:s=!0,onClose:t}=n,r=(g=e==null?void 0:e.launcher)!=null?g:{},o=m("div","tvw-flex tvw-items-center tvw-justify-between tvw-bg-cw-surface tvw-px-6 tvw-py-4 tvw-border-b-cw-divider"),i=m("span","tvw-text-base tvw-font-semibold");i.textContent=(U=r.title)!=null?U:"Chat Assistant",o.appendChild(i);let l=(I=r.closeButtonSize)!=null?I:"32px",c=m("div",""),d=m("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");d.style.height=l,d.style.width=l,d.type="button",d.setAttribute("aria-label","Close chat"),d.style.display=s?"":"none";let f=(h=r.closeButtonIconName)!=null?h:"x",w=ce(f,"20px",r.closeButtonColor||"",2);w?d.appendChild(w):d.textContent="\xD7",t&&d.addEventListener("click",t),c.appendChild(d),o.appendChild(c);let u=m("div");u.style.display="none";let C=m("span");return C.style.display="none",{header:o,iconHolder:u,headerTitle:i,headerSubtitle:C,closeButton:d,closeButtonWrapper:c,clearChatButton:null,clearChatButtonWrapper:null}},Ao=n=>{var v,D,x,S,X,B,j,Z;let{config:e,showClose:s=!0,onClose:t,onClearChat:r}=n,o=(v=e==null?void 0:e.launcher)!=null?v:{},i=m("div","tvw-flex tvw-flex-col tvw-bg-cw-surface tvw-px-6 tvw-py-5 tvw-border-b-cw-divider"),l=m("div","tvw-flex tvw-items-center tvw-gap-3"),c=(D=o.headerIconSize)!=null?D:"56px",d=m("div","tvw-flex tvw-items-center tvw-justify-center tvw-rounded-xl tvw-bg-cw-primary tvw-text-white tvw-text-2xl");d.style.height=c,d.style.width=c;let f=o.headerIconName;if(f){let _=parseFloat(c)||24,K=ce(f,_*.5,"#ffffff",2);K?d.replaceChildren(K):d.textContent=(x=o.agentIconText)!=null?x:"\u{1F4AC}"}else if(o.iconUrl){let _=m("img");_.src=o.iconUrl,_.alt="",_.className="tvw-rounded-xl tvw-object-cover",_.style.height=c,_.style.width=c,d.replaceChildren(_)}else d.textContent=(S=o.agentIconText)!=null?S:"\u{1F4AC}";let w=m("div","tvw-flex tvw-flex-col tvw-flex-1"),u=m("span","tvw-text-lg tvw-font-semibold");u.textContent=(X=o.title)!=null?X:"Chat Assistant";let C=m("span","tvw-text-sm tvw-text-cw-muted");C.textContent=(B=o.subtitle)!=null?B:"Here to help you get answers fast",w.append(u,C),l.append(d,w);let g=(j=o.closeButtonSize)!=null?j:"32px",U=m("div",""),I=m("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=g,I.style.width=g,I.type="button",I.setAttribute("aria-label","Close chat"),I.style.display=s?"":"none";let h=(Z=o.closeButtonIconName)!=null?Z:"x",b=ce(h,"20px",o.closeButtonColor||"",2);b?I.appendChild(b):I.textContent="\xD7",t&&I.addEventListener("click",t),U.appendChild(I),l.appendChild(U),i.appendChild(l);let W=m("div","tvw-mt-3 tvw-pt-3 tvw-border-t tvw-border-gray-100 tvw-text-xs tvw-text-cw-muted");return W.textContent="Online and ready to help",i.appendChild(W),{header:i,iconHolder:d,headerTitle:u,headerSubtitle:C,closeButton:I,closeButtonWrapper:U,clearChatButton:null,clearChatButtonWrapper:null}},Fn={default:xo,minimal:So,expanded:Ao},To=n=>{var e;return(e=Fn[n])!=null?e:Fn.default},Nn=(n,e,s)=>{var i,l,c;if(e!=null&&e.render){let d=e.render({config:n,onClose:s==null?void 0:s.onClose,onClearChat:s==null?void 0:s.onClearChat}),f=m("div");f.style.display="none";let w=m("span"),u=m("span"),C=m("button");C.style.display="none";let g=m("div");return g.style.display="none",{header:d,iconHolder:f,headerTitle:w,headerSubtitle:u,closeButton:C,closeButtonWrapper:g,clearChatButton:null,clearChatButtonWrapper:null}}let t=(i=e==null?void 0:e.layout)!=null?i:"default",o=To(t)({config:n,showClose:(c=(l=e==null?void 0:e.showCloseButton)!=null?l:s==null?void 0:s.showClose)!=null?c:!0,onClose:s==null?void 0:s.onClose,onClearChat:s==null?void 0:s.onClearChat});return e&&(e.showIcon===!1&&(o.iconHolder.style.display="none"),e.showTitle===!1&&(o.headerTitle.style.display="none"),e.showSubtitle===!1&&(o.headerSubtitle.style.display="none"),e.showCloseButton===!1&&(o.closeButton.style.display="none"),e.showClearChat===!1&&o.clearChatButtonWrapper&&(o.clearChatButtonWrapper.style.display="none")),o};var Zo=n=>{switch(n){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'}},cn=n=>{var ne,re,q,qe,Ve,nt,bt,Ct,Y,fe,mt,ft,Ge,st,H,He,at,lt,Tt,wt,Ie,ot,Ue,R,dt;let{config:e}=n,s=m("div","tvw-widget-footer tvw-border-t-cw-divider tvw-bg-cw-surface tvw-px-6 tvw-py-4"),t=m("div","tvw-mb-3 tvw-flex tvw-flex-wrap tvw-gap-2"),r=((ne=e==null?void 0:e.voiceRecognition)==null?void 0:ne.enabled)===!0,o=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),c=m("form",`tvw-widget-composer tvw-flex tvw-items-end ${r&&o?"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`);c.style.outline="none";let d=m("textarea");d.placeholder=(q=(re=e==null?void 0:e.copy)==null?void 0:re.inputPlaceholder)!=null?q:"Type your message\u2026",d.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",d.rows=1;let f=(Ve=(qe=e==null?void 0:e.theme)==null?void 0:qe.inputFontFamily)!=null?Ve:"sans-serif",w=(bt=(nt=e==null?void 0:e.theme)==null?void 0:nt.inputFontWeight)!=null?bt:"400";d.style.fontFamily=Zo(f),d.style.fontWeight=w,d.style.border="none",d.style.outline="none",d.style.borderWidth="0",d.style.borderStyle="none",d.style.borderColor="transparent",d.addEventListener("focus",()=>{d.style.border="none",d.style.outline="none",d.style.borderWidth="0",d.style.borderStyle="none",d.style.borderColor="transparent",d.style.boxShadow="none"}),d.addEventListener("blur",()=>{d.style.border="none",d.style.outline="none"});let u=(Ct=e==null?void 0:e.sendButton)!=null?Ct:{},C=(Y=u.useIcon)!=null?Y:!1,g=(fe=u.iconText)!=null?fe:"\u2191",U=u.iconName,I=(mt=u.tooltipText)!=null?mt:"Send message",h=(ft=u.showTooltip)!=null?ft:!1,b=(Ge=u.size)!=null?Ge:"40px",W=u.backgroundColor,v=u.textColor,D=m("div","tvw-send-button-wrapper"),x=m("button",C?"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(x.type="submit",C){if(x.style.width=b,x.style.height=b,x.style.minWidth=b,x.style.minHeight=b,x.style.fontSize="18px",x.style.lineHeight="1",x.innerHTML="",U){let Se=parseFloat(b)||24,Oe=v&&typeof v=="string"&&v.trim()?v.trim():"currentColor",te=ce(U,Se,Oe,2);te?(x.appendChild(te),x.style.color=Oe):(x.textContent=g,v?x.style.color=v:x.classList.add("tvw-text-white"))}else x.textContent=g,v?x.style.color=v:x.classList.add("tvw-text-white");W?x.style.backgroundColor=W:x.classList.add("tvw-bg-cw-primary")}else x.textContent=(H=(st=e==null?void 0:e.copy)==null?void 0:st.sendButtonLabel)!=null?H:"Send",v?x.style.color=v:x.classList.add("tvw-text-white");if(u.borderWidth&&(x.style.borderWidth=u.borderWidth,x.style.borderStyle="solid"),u.borderColor&&(x.style.borderColor=u.borderColor),u.paddingX?(x.style.paddingLeft=u.paddingX,x.style.paddingRight=u.paddingX):(x.style.paddingLeft="",x.style.paddingRight=""),u.paddingY?(x.style.paddingTop=u.paddingY,x.style.paddingBottom=u.paddingY):(x.style.paddingTop="",x.style.paddingBottom=""),h&&I){let Se=m("div","tvw-send-button-tooltip");Se.textContent=I,D.appendChild(Se)}D.appendChild(x);let S=(He=e==null?void 0:e.voiceRecognition)!=null?He:{},X=S.enabled===!0,B=null,j=null,Z=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined");if(X&&Z){j=m("div","tvw-send-button-wrapper"),B=m("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer"),B.type="button",B.setAttribute("aria-label","Start voice recognition");let Se=(at=S.iconName)!=null?at:"mic",Oe=(lt=S.iconSize)!=null?lt:b,te=parseFloat(Oe)||24,Ae=(Tt=S.backgroundColor)!=null?Tt:W,Te=(wt=S.iconColor)!=null?wt:v;B.style.width=Oe,B.style.height=Oe,B.style.minWidth=Oe,B.style.minHeight=Oe,B.style.fontSize="18px",B.style.lineHeight="1";let ze=Te||"currentColor",Ye=ce(Se,te,ze,1.5);Ye?(B.appendChild(Ye),B.style.color=ze):(B.textContent="\u{1F3A4}",B.style.color=ze),Ae?B.style.backgroundColor=Ae:B.classList.add("tvw-bg-cw-primary"),Te?B.style.color=Te:!Te&&!v&&B.classList.add("tvw-text-white"),S.borderWidth&&(B.style.borderWidth=S.borderWidth,B.style.borderStyle="solid"),S.borderColor&&(B.style.borderColor=S.borderColor),S.paddingX&&(B.style.paddingLeft=S.paddingX,B.style.paddingRight=S.paddingX),S.paddingY&&(B.style.paddingTop=S.paddingY,B.style.paddingBottom=S.paddingY),j.appendChild(B);let xt=(Ie=S.tooltipText)!=null?Ie:"Start voice recognition";if(((ot=S.showTooltip)!=null?ot:!1)&&xt){let yt=m("div","tvw-send-button-tooltip");yt.textContent=xt,j.appendChild(yt)}}c.addEventListener("click",Se=>{Se.target!==x&&Se.target!==D&&Se.target!==B&&Se.target!==j&&d.focus()}),c.append(d),j&&c.append(j),c.append(D);let _=m("div","tvw-mt-2 tvw-text-right tvw-text-xs tvw-text-cw-muted"),K=(Ue=e==null?void 0:e.statusIndicator)!=null?Ue:{},Q=(R=K.visible)!=null?R:!0;return _.style.display=Q?"":"none",_.textContent=(dt=K.idleText)!=null?dt:"Online",s.append(t,c,_),{footer:s,suggestions:t,composerForm:c,textarea:d,sendButton:x,sendButtonWrapper:D,micButton:B,micButtonWrapper:j,statusText:_}};var Eo=n=>{var c,d,f,w,u,C,g;if(!((d=(c=n==null?void 0:n.launcher)==null?void 0:c.enabled)!=null?d:!0)){let U=m("div","tvw-relative tvw-h-full tvw-flex tvw-flex-col tvw-flex-1 tvw-min-h-0"),I=m("div","tvw-relative tvw-flex-1 tvw-flex tvw-flex-col tvw-min-h-0"),h=(w=(f=n==null?void 0:n.launcher)==null?void 0:f.width)!=null?w:"100%";return U.style.width=h,I.style.width="100%",U.appendChild(I),{wrapper:U,panel:I}}let s=(u=n==null?void 0:n.launcher)!=null?u:{},t=s.position&&vt[s.position]?vt[s.position]:vt["bottom-right"],r=m("div",`tvw-widget-wrapper tvw-fixed ${t} tvw-z-50 tvw-transition`),o=m("div","tvw-widget-panel tvw-relative tvw-min-h-[320px]"),i=(g=(C=n==null?void 0:n.launcher)==null?void 0:C.width)!=null?g:n==null?void 0:n.launcherWidth,l=i!=null?i:"min(400px, calc(100vw - 24px))";return o.style.width=l,o.style.maxWidth=l,r.appendChild(o),{wrapper:r,panel:o}},Mo=(n,e=!0)=>{var w,u,C,g,U;let s=m("div","tvw-widget-container tvw-flex tvw-h-full tvw-w-full tvw-flex-1 tvw-min-h-0 tvw-flex-col tvw-bg-cw-surface tvw-text-cw-primary tvw-rounded-2xl tvw-overflow-hidden tvw-border tvw-border-cw-border"),t=(w=n==null?void 0:n.layout)==null?void 0:w.header,r=t?Nn(n,t,{showClose:e}):zt({config:n,showClose:e}),o=m("div","tvw-widget-body 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");o.id="vanilla-agent-scroll-container";let i=m("div","tvw-rounded-2xl tvw-bg-cw-surface tvw-p-6 tvw-shadow-sm"),l=m("h2","tvw-text-lg tvw-font-semibold tvw-text-cw-primary");l.textContent=(C=(u=n==null?void 0:n.copy)==null?void 0:u.welcomeTitle)!=null?C:"Hello \u{1F44B}";let c=m("p","tvw-mt-2 tvw-text-sm tvw-text-cw-muted");c.textContent=(U=(g=n==null?void 0:n.copy)==null?void 0:g.welcomeSubtitle)!=null?U:"Ask anything about your account or products.",i.append(l,c);let d=m("div","tvw-flex tvw-flex-col tvw-gap-3");o.append(i,d);let f=cn({config:n});return dn(s,r,n),s.append(o,f.footer),{container:s,body:o,messagesWrapper:d,suggestions:f.suggestions,textarea:f.textarea,sendButton:f.sendButton,sendButtonWrapper:f.sendButtonWrapper,micButton:f.micButton,micButtonWrapper:f.micButtonWrapper,composerForm:f.composerForm,statusText:f.statusText,introTitle:l,introSubtitle:c,closeButton:r.closeButton,closeButtonWrapper:r.closeButtonWrapper,clearChatButton:r.clearChatButton,clearChatButtonWrapper:r.clearChatButtonWrapper,iconHolder:r.iconHolder,headerTitle:r.headerTitle,headerSubtitle:r.headerSubtitle,header:r.header,footer:f.footer}};var Cn=()=>{let n=document.createElement("div");n.className="tvw-flex tvw-items-center tvw-space-x-1 tvw-h-5 tvw-mt-2";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="0ms";let s=document.createElement("div");s.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",s.style.animationDelay="250ms";let t=document.createElement("div");t.className="tvw-bg-cw-primary tvw-animate-typing tvw-rounded-full tvw-h-1.5 tvw-w-1.5",t.style.animationDelay="500ms";let r=document.createElement("span");return r.className="tvw-sr-only",r.textContent="Loading",n.appendChild(e),n.appendChild(s),n.appendChild(t),n.appendChild(r),n},Qo=(n,e)=>{let s=m("div","tvw-flex-shrink-0 tvw-w-8 tvw-h-8 tvw-rounded-full tvw-flex tvw-items-center tvw-justify-center tvw-text-sm"),t=e==="user"?n.userAvatar:n.assistantAvatar;if(t)if(t.startsWith("http")||t.startsWith("/")||t.startsWith("data:")){let r=m("img");r.src=t,r.alt=e==="user"?"User":"Assistant",r.className="tvw-w-full tvw-h-full tvw-rounded-full tvw-object-cover",s.appendChild(r)}else s.textContent=t,s.classList.add(e==="user"?"tvw-bg-cw-accent":"tvw-bg-cw-primary","tvw-text-white");else s.textContent=e==="user"?"U":"A",s.classList.add(e==="user"?"tvw-bg-cw-accent":"tvw-bg-cw-primary","tvw-text-white");return s},Wo=(n,e)=>{let s=m("div","tvw-text-xs tvw-text-cw-muted"),t=new Date(n.createdAt);return e.format?s.textContent=e.format(t):s.textContent=t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),s},er=(n,e="bubble")=>{let s=["vanilla-message-bubble","tvw-max-w-[85%]"];switch(e){case"flat":n==="user"?s.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-text-cw-primary","tvw-py-2"):s.push("vanilla-message-assistant-bubble","tvw-text-cw-primary","tvw-py-2");break;case"minimal":s.push("tvw-text-sm","tvw-leading-relaxed"),n==="user"?s.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-bg-cw-accent","tvw-text-white","tvw-px-3","tvw-py-2","tvw-rounded-lg"):s.push("vanilla-message-assistant-bubble","tvw-bg-cw-surface","tvw-text-cw-primary","tvw-px-3","tvw-py-2","tvw-rounded-lg");break;case"bubble":default:s.push("tvw-rounded-2xl","tvw-text-sm","tvw-leading-relaxed","tvw-shadow-sm"),n==="user"?s.push("vanilla-message-user-bubble","tvw-ml-auto","tvw-bg-cw-accent","tvw-text-white","tvw-px-5","tvw-py-3"):s.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");break}return s},ko=(n,e,s)=>{var g,U,I,h,b,W;let t=(g=e.showCopy)!=null?g:!0,r=(U=e.showUpvote)!=null?U:!0,o=(I=e.showDownvote)!=null?I:!0,i=(h=e.visibility)!=null?h:"hover",l=(b=e.align)!=null?b:"right",c=(W=e.layout)!=null?W:"pill-inside",d={left:"tvw-message-actions-left",center:"tvw-message-actions-center",right:"tvw-message-actions-right"}[l],f={"pill-inside":"tvw-message-actions-pill","row-inside":"tvw-message-actions-row"}[c],w=m("div",`tvw-message-actions tvw-flex tvw-items-center tvw-gap-1 tvw-mt-2 ${d} ${f} ${i==="hover"?"tvw-message-actions-hover":""}`),u=null,C=(v,D,x,S)=>{let X=document.createElement("button");X.className="tvw-message-action-btn",X.setAttribute("aria-label",D),X.setAttribute("title",D),S&&X.setAttribute("data-action",S);let B=ce(v,14,"currentColor",2);return B&&X.appendChild(B),X.addEventListener("click",j=>{j.preventDefault(),j.stopPropagation(),x()}),X};if(t){let v=C("copy","Copy message",()=>{let D=n.content||"";navigator.clipboard.writeText(D).then(()=>{v.classList.add("tvw-message-action-success");let x=ce("check",14,"currentColor",2);x&&(v.innerHTML="",v.appendChild(x)),setTimeout(()=>{v.classList.remove("tvw-message-action-success");let S=ce("copy",14,"currentColor",2);S&&(v.innerHTML="",v.appendChild(S))},2e3)}).catch(x=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to copy message:",x)}),s!=null&&s.onCopy&&s.onCopy(n),e.onCopy&&e.onCopy(n)},"copy");w.appendChild(v)}if(r){let v=C("thumbs-up","Upvote",()=>{if(u==="upvote")u=null,v.classList.remove("tvw-message-action-active");else{let x=w.querySelector('[data-action="downvote"]');x&&x.classList.remove("tvw-message-action-active"),u="upvote",v.classList.add("tvw-message-action-active");let S={type:"upvote",messageId:n.id,message:n};s!=null&&s.onFeedback&&s.onFeedback(S),e.onFeedback&&e.onFeedback(S)}},"upvote");w.appendChild(v)}if(o){let v=C("thumbs-down","Downvote",()=>{if(u==="downvote")u=null,v.classList.remove("tvw-message-action-active");else{let x=w.querySelector('[data-action="upvote"]');x&&x.classList.remove("tvw-message-action-active"),u="downvote",v.classList.add("tvw-message-action-active");let S={type:"downvote",messageId:n.id,message:n};s!=null&&s.onFeedback&&s.onFeedback(S),e.onFeedback&&e.onFeedback(S)}},"downvote");w.appendChild(v)}return w},un=(n,e,s,t,r)=>{var W,v,D,x,S;let o=s!=null?s:{},i=(W=o.layout)!=null?W:"bubble",l=o.avatar,c=o.timestamp,d=(v=l==null?void 0:l.show)!=null?v:!1,f=(D=c==null?void 0:c.show)!=null?D:!1,w=(x=l==null?void 0:l.position)!=null?x:"left",u=(S=c==null?void 0:c.position)!=null?S:"below",C=er(n.role,i),g=m("div",C.join(" ")),U=document.createElement("div");if(U.innerHTML=e({text:n.content,message:n,streaming:!!n.streaming,raw:n.rawContent}),f&&u==="inline"&&n.createdAt){let X=Wo(n,c);X.classList.add("tvw-ml-2","tvw-inline"),U.appendChild(X)}if(g.appendChild(U),f&&u==="below"&&n.createdAt){let X=Wo(n,c);X.classList.add("tvw-mt-1"),g.appendChild(X)}if(n.streaming&&n.role==="assistant"&&(!n.content||!n.content.trim())){let X=Cn();g.appendChild(X)}if(n.role==="assistant"&&!n.streaming&&n.content&&n.content.trim()&&(t==null?void 0:t.enabled)!==!1&&t){let X=ko(n,t,r);g.appendChild(X)}if(!d||n.role==="system")return g;let h=m("div",`tvw-flex tvw-gap-2 ${n.role==="user"?"tvw-flex-row-reverse":""}`),b=Qo(l,n.role);return w==="right"||w==="left"&&n.role==="user"?h.append(g,b):h.append(b,g),g.classList.remove("tvw-max-w-[85%]"),g.classList.add("tvw-max-w-[calc(85%-2.5rem)]"),h},tr=(n,e,s,t,r)=>{let o=s!=null?s:{};return n.role==="user"&&o.renderUserMessage?o.renderUserMessage({message:n,config:{},streaming:!!n.streaming}):n.role==="assistant"&&o.renderAssistantMessage?o.renderAssistantMessage({message:n,config:{},streaming:!!n.streaming}):un(n,e,s,t,r)};var On=new Set,Dn=n=>{let e=n.reasoning,s=m("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(!e)return s;let t=On.has(n.id),r=m("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");r.type="button",r.setAttribute("aria-expanded",t?"true":"false");let o=m("div","tvw-flex tvw-flex-col tvw-text-left"),i=m("span","tvw-text-xs tvw-text-cw-primary");i.textContent="Thinking...",o.appendChild(i);let l=m("span","tvw-text-xs tvw-text-cw-primary");l.textContent=vo(e),o.appendChild(l),e.status==="complete"?i.style.display="none":i.style.display="";let c=m("div","tvw-flex tvw-items-center"),f=ce(t?"chevron-up":"chevron-down",16,"currentColor",2);f?c.appendChild(f):c.textContent=t?"Hide":"Show";let w=m("div","tvw-flex tvw-items-center tvw-ml-auto");w.append(c),r.append(o,w);let u=m("div","tvw-border-t tvw-border-gray-200 tvw-bg-gray-50 tvw-px-4 tvw-py-3");u.style.display=t?"":"none";let C=e.chunks.join(""),g=m("div","tvw-whitespace-pre-wrap tvw-text-xs tvw-leading-snug tvw-text-cw-muted");g.textContent=C||(e.status==="complete"?"No additional context was shared.":"Waiting for details\u2026"),u.appendChild(g);let U=()=>{r.setAttribute("aria-expanded",t?"true":"false"),c.innerHTML="";let b=ce(t?"chevron-up":"chevron-down",16,"currentColor",2);b?c.appendChild(b):c.textContent=t?"Hide":"Show",u.style.display=t?"":"none"},I=()=>{t=!t,t?On.add(n.id):On.delete(n.id),U()};return r.addEventListener("pointerdown",h=>{h.preventDefault(),I()}),r.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),I())}),U(),s.append(r,u),s};var jn=new Set,_n=(n,e)=>{var I;let s=n.toolCall,t=(I=e==null?void 0:e.toolCall)!=null?I:{},r=m("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(t.backgroundColor&&(r.style.backgroundColor=t.backgroundColor),t.borderColor&&(r.style.borderColor=t.borderColor),t.borderWidth&&(r.style.borderWidth=t.borderWidth),t.borderRadius&&(r.style.borderRadius=t.borderRadius),!s)return r;let o=jn.has(n.id),i=m("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");i.type="button",i.setAttribute("aria-expanded",o?"true":"false"),t.headerBackgroundColor&&(i.style.backgroundColor=t.headerBackgroundColor),t.headerPaddingX&&(i.style.paddingLeft=t.headerPaddingX,i.style.paddingRight=t.headerPaddingX),t.headerPaddingY&&(i.style.paddingTop=t.headerPaddingY,i.style.paddingBottom=t.headerPaddingY);let l=m("div","tvw-flex tvw-flex-col tvw-text-left"),c=m("span","tvw-text-xs tvw-text-cw-primary");t.headerTextColor&&(c.style.color=t.headerTextColor),c.textContent=bo(s),l.appendChild(c);let d=m("div","tvw-flex tvw-items-center"),f=t.toggleTextColor||t.headerTextColor||"currentColor",w=ce(o?"chevron-up":"chevron-down",16,f,2);w?d.appendChild(w):d.textContent=o?"Hide":"Show";let u=m("div","tvw-flex tvw-items-center tvw-gap-2 tvw-ml-auto");u.append(d),i.append(l,u);let C=m("div","tvw-border-t tvw-border-gray-200 tvw-bg-gray-50 tvw-space-y-3 tvw-px-4 tvw-py-3");if(C.style.display=o?"":"none",t.contentBackgroundColor&&(C.style.backgroundColor=t.contentBackgroundColor),t.contentTextColor&&(C.style.color=t.contentTextColor),t.contentPaddingX&&(C.style.paddingLeft=t.contentPaddingX,C.style.paddingRight=t.contentPaddingX),t.contentPaddingY&&(C.style.paddingTop=t.contentPaddingY,C.style.paddingBottom=t.contentPaddingY),s.name){let h=m("div","tvw-text-xs tvw-text-cw-muted tvw-italic");t.contentTextColor?h.style.color=t.contentTextColor:t.headerTextColor&&(h.style.color=t.headerTextColor),h.textContent=s.name,C.appendChild(h)}if(s.args!==void 0){let h=m("div","tvw-space-y-1"),b=m("div","tvw-text-xs tvw-text-cw-muted");t.labelTextColor&&(b.style.color=t.labelTextColor),b.textContent="Arguments";let W=m("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");W.style.fontSize="0.75rem",W.style.lineHeight="1rem",t.codeBlockBackgroundColor&&(W.style.backgroundColor=t.codeBlockBackgroundColor),t.codeBlockBorderColor&&(W.style.borderColor=t.codeBlockBorderColor),t.codeBlockTextColor&&(W.style.color=t.codeBlockTextColor),W.textContent=kn(s.args),h.append(b,W),C.appendChild(h)}if(s.chunks&&s.chunks.length){let h=m("div","tvw-space-y-1"),b=m("div","tvw-text-xs tvw-text-cw-muted");t.labelTextColor&&(b.style.color=t.labelTextColor),b.textContent="Activity";let W=m("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");W.style.fontSize="0.75rem",W.style.lineHeight="1rem",t.codeBlockBackgroundColor&&(W.style.backgroundColor=t.codeBlockBackgroundColor),t.codeBlockBorderColor&&(W.style.borderColor=t.codeBlockBorderColor),t.codeBlockTextColor&&(W.style.color=t.codeBlockTextColor),W.textContent=s.chunks.join(`
|
|
16
|
+
`),h.append(b,W),C.appendChild(h)}if(s.status==="complete"&&s.result!==void 0){let h=m("div","tvw-space-y-1"),b=m("div","tvw-text-xs tvw-text-cw-muted");t.labelTextColor&&(b.style.color=t.labelTextColor),b.textContent="Result";let W=m("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");W.style.fontSize="0.75rem",W.style.lineHeight="1rem",t.codeBlockBackgroundColor&&(W.style.backgroundColor=t.codeBlockBackgroundColor),t.codeBlockBorderColor&&(W.style.borderColor=t.codeBlockBorderColor),t.codeBlockTextColor&&(W.style.color=t.codeBlockTextColor),W.textContent=kn(s.result),h.append(b,W),C.appendChild(h)}if(s.status==="complete"&&typeof s.duration=="number"){let h=m("div","tvw-text-xs tvw-text-cw-muted");t.contentTextColor&&(h.style.color=t.contentTextColor),h.textContent=`Duration: ${s.duration}ms`,C.appendChild(h)}let g=()=>{i.setAttribute("aria-expanded",o?"true":"false"),d.innerHTML="";let h=t.toggleTextColor||t.headerTextColor||"currentColor",b=ce(o?"chevron-up":"chevron-down",16,h,2);b?d.appendChild(b):d.textContent=o?"Hide":"Show",C.style.display=o?"":"none"},U=()=>{o=!o,o?jn.add(n.id):jn.delete(n.id),g()};return i.addEventListener("pointerdown",h=>{h.preventDefault(),U()}),i.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),U())}),g(),r.append(i,C),r};var Lo=n=>{let e=[];return{buttons:e,render:(t,r,o,i,l)=>{if(n.innerHTML="",e.length=0,!t||!t.length||(i!=null?i:r?r.getMessages():[]).some(C=>C.role==="user"))return;let f=document.createDocumentFragment(),w=r?r.isStreaming():!1,u=C=>{switch(C){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'}};t.forEach(C=>{let g=m("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");g.type="button",g.textContent=C,g.disabled=w,l!=null&&l.fontFamily&&(g.style.fontFamily=u(l.fontFamily)),l!=null&&l.fontWeight&&(g.style.fontWeight=l.fontWeight),l!=null&&l.paddingX&&(g.style.paddingLeft=l.paddingX,g.style.paddingRight=l.paddingX),l!=null&&l.paddingY&&(g.style.paddingTop=l.paddingY,g.style.paddingBottom=l.paddingY),g.addEventListener("click",()=>{!r||r.isStreaming()||(o.value="",r.sendMessage(C))}),f.appendChild(g),e.push(g)}),n.appendChild(f)}}};var Bo={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"}},qn=(n,e,s,t)=>{let r=n.querySelectorAll("[data-tv-form]");r.length&&r.forEach(o=>{var g,U,I;if(o.dataset.enhanced==="true")return;let i=(g=o.dataset.tvForm)!=null?g:"init";o.dataset.enhanced="true";let l=(U=Bo[i])!=null?U:Bo.init;o.classList.add("tvw-form-card","tvw-space-y-4");let c=m("div","tvw-space-y-1"),d=m("h3","tvw-text-base tvw-font-semibold tvw-text-cw-primary");if(d.textContent=l.title,c.appendChild(d),l.description){let h=m("p","tvw-text-sm tvw-text-cw-muted");h.textContent=l.description,c.appendChild(h)}let f=document.createElement("form");f.className="tvw-form-grid tvw-space-y-3",l.fields.forEach(h=>{var x,S;let b=m("label","tvw-form-field tvw-flex tvw-flex-col tvw-gap-1");b.htmlFor=`${e.id}-${i}-${h.name}`;let W=m("span","tvw-text-xs tvw-font-medium tvw-text-cw-muted");W.textContent=h.label,b.appendChild(W);let v=(x=h.type)!=null?x:"text",D;v==="textarea"?(D=document.createElement("textarea"),D.rows=3):(D=document.createElement("input"),D.type=v),D.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",D.id=`${e.id}-${i}-${h.name}`,D.name=h.name,D.placeholder=(S=h.placeholder)!=null?S:"",h.required&&(D.required=!0),b.appendChild(D),f.appendChild(b)});let w=m("div","tvw-flex tvw-items-center tvw-justify-between tvw-gap-2"),u=m("div","tvw-text-xs tvw-text-cw-muted tvw-min-h-[1.5rem]"),C=m("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");C.type="submit",C.textContent=(I=l.submitLabel)!=null?I:"Submit",w.appendChild(u),w.appendChild(C),f.appendChild(w),o.replaceChildren(c,f),f.addEventListener("submit",async h=>{var D,x;h.preventDefault();let b=(D=s.formEndpoint)!=null?D:"/form",W=new FormData(f),v={};W.forEach((S,X)=>{v[X]=S}),v.type=i,C.disabled=!0,u.textContent="Submitting\u2026";try{let S=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});if(!S.ok)throw new Error(`Form submission failed (${S.status})`);let X=await S.json();u.textContent=(x=X.message)!=null?x:"Thanks! We'll be in touch soon.",X.success&&X.nextPrompt&&await t.sendMessage(String(X.nextPrompt))}catch(S){u.textContent=S instanceof Error?S.message:"Something went wrong. Please try again."}finally{C.disabled=!1}})})};var Un=class{constructor(){this.plugins=new Map}register(e){var s;this.plugins.has(e.id)&&console.warn(`Plugin "${e.id}" is already registered. Overwriting.`),this.plugins.set(e.id,e),(s=e.onRegister)==null||s.call(e)}unregister(e){var t;let s=this.plugins.get(e);s&&((t=s.onUnregister)==null||t.call(s),this.plugins.delete(e))}getAll(){return Array.from(this.plugins.values()).sort((e,s)=>{var t,r;return((t=s.priority)!=null?t:0)-((r=e.priority)!=null?r:0)})}getForInstance(e){let s=this.getAll();if(!e||e.length===0)return s;let t=new Set(e.map(o=>o.id));return[...s.filter(o=>!t.has(o.id)),...e].sort((o,i)=>{var l,c;return((l=i.priority)!=null?l:0)-((c=o.priority)!=null?c:0)})}clear(){this.plugins.forEach(e=>{var s;return(s=e.onUnregister)==null?void 0:s.call(e)}),this.plugins.clear()}},xn=new Un;var Be={apiUrl:"http://localhost:43111/api/chat/dispatch",clientToken:void 0,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))",heightOffset:0,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,placement:"inline",iconName:"refresh-cw",size:"32px",showTooltip:!0,tooltipText:"Clear chat",paddingX:"0px",paddingY:"0px"},headerIconHidden:!1,border:"1px solid #e5e7eb",shadow:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.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"},layout:{header:{layout:"default",showIcon:!0,showTitle:!0,showSubtitle:!0,showCloseButton:!0,showClearChat:!0},messages:{layout:"bubble",avatar:{show:!1,position:"left"},timestamp:{show:!1,position:"below"},groupConsecutive:!1},slots:{}},markdown:{options:{gfm:!0,breaks:!0},disableDefaultStyles:!1},messageActions:{enabled:!0,showCopy:!0,showUpvote:!1,showDownvote:!1,visibility:"hover",align:"right",layout:"pill-inside"},debug:!1};function zn(n){var e,s,t,r,o,i,l,c,d,f,w,u,C,g,U,I,h,b,W;return n?{...Be,...n,theme:{...Be.theme,...n.theme},launcher:{...Be.launcher,...n.launcher,clearChat:{...(e=Be.launcher)==null?void 0:e.clearChat,...(s=n.launcher)==null?void 0:s.clearChat}},copy:{...Be.copy,...n.copy},sendButton:{...Be.sendButton,...n.sendButton},statusIndicator:{...Be.statusIndicator,...n.statusIndicator},voiceRecognition:{...Be.voiceRecognition,...n.voiceRecognition},features:{...Be.features,...n.features},suggestionChips:(t=n.suggestionChips)!=null?t:Be.suggestionChips,suggestionChipsConfig:{...Be.suggestionChipsConfig,...n.suggestionChipsConfig},layout:{...Be.layout,...n.layout,header:{...(r=Be.layout)==null?void 0:r.header,...(o=n.layout)==null?void 0:o.header},messages:{...(i=Be.layout)==null?void 0:i.messages,...(l=n.layout)==null?void 0:l.messages,avatar:{...(d=(c=Be.layout)==null?void 0:c.messages)==null?void 0:d.avatar,...(w=(f=n.layout)==null?void 0:f.messages)==null?void 0:w.avatar},timestamp:{...(C=(u=Be.layout)==null?void 0:u.messages)==null?void 0:C.timestamp,...(U=(g=n.layout)==null?void 0:g.messages)==null?void 0:U.timestamp}},slots:{...(I=Be.layout)==null?void 0:I.slots,...(h=n.layout)==null?void 0:h.slots}},markdown:{...Be.markdown,...n.markdown,options:{...(b=Be.markdown)==null?void 0:b.options,...(W=n.markdown)==null?void 0:W.options}},messageActions:{...Be.messageActions,...n.messageActions}}:Be}var Ho=()=>{let n=new Map,e=(r,o)=>(n.has(r)||n.set(r,new Set),n.get(r).add(o),()=>s(r,o)),s=(r,o)=>{var i;(i=n.get(r))==null||i.delete(o)};return{on:e,off:s,emit:(r,o)=>{var i;(i=n.get(r))==null||i.forEach(l=>{try{l(o)}catch(c){typeof console!="undefined"&&console.error("[AgentWidget] Event handler error:",c)}})}}};var nr=n=>{let e=n.match(/```(?:json)?\s*([\s\S]*?)```/i);return e?e[1]:n},sr=n=>{let e=n.trim(),s=e.indexOf("{");if(s===-1)return null;let t=0;for(let r=s;r<e.length;r+=1){let o=e[r];if(o==="{"&&(t+=1),o==="}"&&(t-=1,t===0))return e.slice(s,r+1)}return null},Sn=({text:n})=>{if(!n||!n.includes("{"))return null;try{let e=nr(n),s=sr(e);if(!s)return null;let t=JSON.parse(s);if(!t||typeof t!="object"||!t.action)return null;let{action:r,...o}=t;return{type:String(r),payload:o,raw:t}}catch{return null}},Yn=n=>typeof n=="string"?n:n==null?"":String(n),Vt={message:n=>n.type!=="message"?void 0:{handled:!0,displayText:Yn(n.payload.text)},messageAndClick:(n,e)=>{var r;if(n.type!=="message_and_click")return;let s=n.payload,t=Yn(s.element);if(t&&((r=e.document)!=null&&r.querySelector)){let o=e.document.querySelector(t);o?setTimeout(()=>{o.click()},400):typeof console!="undefined"&&console.warn("[AgentWidget] Element not found for selector:",t)}return{handled:!0,displayText:Yn(s.text)}}},$o=n=>Array.isArray(n)?n.map(e=>String(e)):[],An=n=>{let e=new Set($o(n.getMetadata().processedActionMessageIds)),s=()=>{e=new Set($o(n.getMetadata().processedActionMessageIds))},t=()=>{let o=Array.from(e);n.updateMetadata(i=>({...i,processedActionMessageIds:o}))};return{process:o=>{if(o.streaming||o.message.role!=="assistant"||!o.text||e.has(o.message.id))return null;let i=typeof o.raw=="string"&&o.raw||typeof o.message.rawContent=="string"&&o.message.rawContent||typeof o.text=="string"&&o.text||null;!i&&typeof o.text=="string"&&o.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 l=i?n.parsers.reduce((d,f)=>d||(f==null?void 0:f({text:i,message:o.message}))||null,null):null;if(!l)return null;e.add(o.message.id),t();let c={action:l,message:o.message};n.emit("action:detected",c);for(let d of n.handlers)if(d)try{let f=d(l,{message:o.message,metadata:n.getMetadata(),updateMetadata:n.updateMetadata,document:n.documentRef});if(!f)continue;if(f.handled){let w=f.persistMessage!==!1;return{text:f.displayText!==void 0?f.displayText:"",persist:w}}}catch(f){typeof console!="undefined"&&console.error("[AgentWidget] Action handler error:",f)}return{text:"",persist:!0}},syncFromMetadata:s}};var or=n=>{if(!n)return null;try{return JSON.parse(n)}catch(e){return typeof console!="undefined"&&console.error("[AgentWidget] Failed to parse stored state:",e),null}},rr=n=>n.map(e=>({...e,streaming:!1})),Jn=(n="vanilla-agent-state")=>{let e=()=>typeof window=="undefined"||!window.localStorage?null:window.localStorage;return{load:()=>{let s=e();return s?or(s.getItem(n)):null},save:s=>{let t=e();if(t)try{let r={...s,messages:s.messages?rr(s.messages):void 0};t.setItem(n,JSON.stringify(r))}catch(r){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",r)}},clear:()=>{let s=e();if(s)try{s.removeItem(n)}catch(t){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear stored state:",t)}}}};var Kn=class{constructor(){this.components=new Map}register(e,s){this.components.has(e)&&console.warn(`[ComponentRegistry] Component "${e}" is already registered. Overwriting.`),this.components.set(e,s)}unregister(e){this.components.delete(e)}get(e){return this.components.get(e)}has(e){return this.components.has(e)}getAllNames(){return Array.from(this.components.keys())}clear(){this.components.clear()}registerAll(e){Object.entries(e).forEach(([s,t])=>{this.register(s,t)})}},pn=new Kn;import{parse as ir,STR as ar,OBJ as lr}from"partial-json";function dr(n){if(!n||typeof n!="object"||!("component"in n))return!1;let e=n.component;return typeof e=="string"&&e.length>0}function cr(n,e){if(!dr(n))return null;let s=n.props&&typeof n.props=="object"&&n.props!==null?n.props:{};return{component:n.component,props:s,raw:e}}function Xn(){let n=null,e=0;return{getExtractedDirective:()=>n,processChunk:s=>{let t=s.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;if(s.length<=e)return n;try{let r=ir(s,ar|lr),o=cr(r,s);o&&(n=o)}catch{}return e=s.length,n},reset:()=>{n=null,e=0}}}function ur(n){return typeof n=="object"&&n!==null&&"component"in n&&typeof n.component=="string"&&"props"in n&&typeof n.props=="object"}function Vn(n,e){let{config:s,message:t,onPropsUpdate:r}=e,o=pn.get(n.component);if(!o)return console.warn(`[ComponentMiddleware] Component "${n.component}" not found in registry. Falling back to default rendering.`),null;let i={message:t,config:s,updateProps:l=>{r&&r(l)}};try{return o(n.props,i)}catch(l){return console.error(`[ComponentMiddleware] Error rendering component "${n.component}":`,l),null}}function pr(){let n=Xn();return{processChunk:e=>n.processChunk(e),getDirective:()=>n.getExtractedDirective(),reset:()=>{n.reset()}}}function Gn(n){if(!n.rawContent)return!1;try{let e=JSON.parse(n.rawContent);return typeof e=="object"&&e!==null&&"component"in e&&typeof e.component=="string"}catch{return!1}}function Zn(n){if(!n.rawContent)return null;try{let e=JSON.parse(n.rawContent);if(typeof e=="object"&&e!==null&&"component"in e&&typeof e.component=="string")return{component:e.component,props:e.props&&typeof e.props=="object"&&e.props!==null?e.props:{},raw:n.rawContent}}catch{}return null}var gr=["Very dissatisfied","Dissatisfied","Neutral","Satisfied","Very satisfied"];function Qn(n){let{onSubmit:e,onDismiss:s,title:t="How satisfied are you?",subtitle:r="Please rate your experience",commentPlaceholder:o="Share your thoughts (optional)...",submitText:i="Submit",skipText:l="Skip",showComment:c=!0,ratingLabels:d=gr}=n,f=document.createElement("div");f.className="tvw-feedback-container tvw-feedback-csat",f.setAttribute("role","dialog"),f.setAttribute("aria-label","Customer satisfaction feedback");let w=null,u=document.createElement("div");u.className="tvw-feedback-content";let C=document.createElement("div");C.className="tvw-feedback-header";let g=document.createElement("h3");g.className="tvw-feedback-title",g.textContent=t,C.appendChild(g);let U=document.createElement("p");U.className="tvw-feedback-subtitle",U.textContent=r,C.appendChild(U),u.appendChild(C);let I=document.createElement("div");I.className="tvw-feedback-rating tvw-feedback-rating-csat",I.setAttribute("role","radiogroup"),I.setAttribute("aria-label","Satisfaction rating from 1 to 5");let h=[];for(let x=1;x<=5;x++){let S=document.createElement("button");S.type="button",S.className="tvw-feedback-rating-btn tvw-feedback-star-btn",S.setAttribute("role","radio"),S.setAttribute("aria-checked","false"),S.setAttribute("aria-label",`${x} star${x>1?"s":""}: ${d[x-1]}`),S.title=d[x-1],S.dataset.rating=String(x),S.innerHTML=`
|
|
17
|
+
<svg class="tvw-feedback-star" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
18
|
+
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>
|
|
19
|
+
</svg>
|
|
20
|
+
`,S.addEventListener("click",()=>{w=x,h.forEach((X,B)=>{let j=B<x;X.classList.toggle("selected",j),X.setAttribute("aria-checked",B===x-1?"true":"false")})}),h.push(S),I.appendChild(S)}u.appendChild(I);let b=null;if(c){let x=document.createElement("div");x.className="tvw-feedback-comment-container",b=document.createElement("textarea"),b.className="tvw-feedback-comment",b.placeholder=o,b.rows=3,b.setAttribute("aria-label","Additional comments"),x.appendChild(b),u.appendChild(x)}let W=document.createElement("div");W.className="tvw-feedback-actions";let v=document.createElement("button");v.type="button",v.className="tvw-feedback-btn tvw-feedback-btn-skip",v.textContent=l,v.addEventListener("click",()=>{s==null||s(),f.remove()});let D=document.createElement("button");return D.type="button",D.className="tvw-feedback-btn tvw-feedback-btn-submit",D.textContent=i,D.addEventListener("click",async()=>{if(w===null){I.classList.add("tvw-feedback-shake"),setTimeout(()=>I.classList.remove("tvw-feedback-shake"),500);return}D.disabled=!0,D.textContent="Submitting...";try{let x=(b==null?void 0:b.value.trim())||void 0;await e(w,x),f.remove()}catch(x){D.disabled=!1,D.textContent=i,console.error("[CSAT Feedback] Failed to submit:",x)}}),W.appendChild(v),W.appendChild(D),u.appendChild(W),f.appendChild(u),f}function es(n){let{onSubmit:e,onDismiss:s,title:t="How likely are you to recommend us?",subtitle:r="On a scale of 0 to 10",commentPlaceholder:o="What could we do better? (optional)...",submitText:i="Submit",skipText:l="Skip",showComment:c=!0,lowLabel:d="Not likely",highLabel:f="Very likely"}=n,w=document.createElement("div");w.className="tvw-feedback-container tvw-feedback-nps",w.setAttribute("role","dialog"),w.setAttribute("aria-label","Net Promoter Score feedback");let u=null,C=document.createElement("div");C.className="tvw-feedback-content";let g=document.createElement("div");g.className="tvw-feedback-header";let U=document.createElement("h3");U.className="tvw-feedback-title",U.textContent=t,g.appendChild(U);let I=document.createElement("p");I.className="tvw-feedback-subtitle",I.textContent=r,g.appendChild(I),C.appendChild(g);let h=document.createElement("div");h.className="tvw-feedback-rating tvw-feedback-rating-nps",h.setAttribute("role","radiogroup"),h.setAttribute("aria-label","Likelihood rating from 0 to 10");let b=document.createElement("div");b.className="tvw-feedback-labels";let W=document.createElement("span");W.className="tvw-feedback-label-low",W.textContent=d;let v=document.createElement("span");v.className="tvw-feedback-label-high",v.textContent=f,b.appendChild(W),b.appendChild(v);let D=document.createElement("div");D.className="tvw-feedback-numbers";let x=[];for(let Z=0;Z<=10;Z++){let _=document.createElement("button");_.type="button",_.className="tvw-feedback-rating-btn tvw-feedback-number-btn",_.setAttribute("role","radio"),_.setAttribute("aria-checked","false"),_.setAttribute("aria-label",`Rating ${Z} out of 10`),_.textContent=String(Z),_.dataset.rating=String(Z),Z<=6?_.classList.add("tvw-feedback-detractor"):Z<=8?_.classList.add("tvw-feedback-passive"):_.classList.add("tvw-feedback-promoter"),_.addEventListener("click",()=>{u=Z,x.forEach((K,Q)=>{K.classList.toggle("selected",Q===Z),K.setAttribute("aria-checked",Q===Z?"true":"false")})}),x.push(_),D.appendChild(_)}h.appendChild(b),h.appendChild(D),C.appendChild(h);let S=null;if(c){let Z=document.createElement("div");Z.className="tvw-feedback-comment-container",S=document.createElement("textarea"),S.className="tvw-feedback-comment",S.placeholder=o,S.rows=3,S.setAttribute("aria-label","Additional comments"),Z.appendChild(S),C.appendChild(Z)}let X=document.createElement("div");X.className="tvw-feedback-actions";let B=document.createElement("button");B.type="button",B.className="tvw-feedback-btn tvw-feedback-btn-skip",B.textContent=l,B.addEventListener("click",()=>{s==null||s(),w.remove()});let j=document.createElement("button");return j.type="button",j.className="tvw-feedback-btn tvw-feedback-btn-submit",j.textContent=i,j.addEventListener("click",async()=>{if(u===null){D.classList.add("tvw-feedback-shake"),setTimeout(()=>D.classList.remove("tvw-feedback-shake"),500);return}j.disabled=!0,j.textContent="Submitting...";try{let Z=(S==null?void 0:S.value.trim())||void 0;await e(u,Z),w.remove()}catch(Z){j.disabled=!1,j.textContent=i,console.error("[NPS Feedback] Failed to submit:",Z)}}),X.appendChild(B),X.appendChild(j),C.appendChild(X),w.appendChild(C),w}var Gt="vanilla-agent-chat-history",hr=30*1e3,ts=n=>!n||typeof n!="object"?{}:{...n},Po=n=>n.map(e=>({...e,streaming:!1})),Ro=(n,e)=>{let s=n!=null&&n.markdown?yn(n.markdown):null;return t=>{var i,l,c;let r=(i=t.text)!=null?i:"",o=(l=t.message.rawContent)!=null?l:null;if(e){let d=e.process({text:r,raw:o!=null?o:r,message:t.message,streaming:t.streaming});d!==null&&(r=d.text,d.persist||(t.message.__skipPersist=!0))}return n!=null&&n.postprocessMessage?n.postprocessMessage({...t,text:r,raw:(c=o!=null?o:t.text)!=null?c:""}):s?s(r):Wn(r)}},ns=(n,e,s)=>{var de,pe,Pe,ge,De,it,ht,os,rs,is,as,ls,ds,cs;(!n.id||n.id!=="vanilla-agent-root")&&(n.id="vanilla-agent-root");let t=zn(e),r=xn.getForInstance(t.plugins);t.components&&pn.registerAll(t.components);let o=Ho(),i=(de=t.storageAdapter)!=null?de:Jn(),l={},c=null;if(i!=null&&i.load)try{let a=i.load();if(a&&typeof a.then=="function")c=a;else if(a){let p=a;p.metadata&&(l=ts(p.metadata)),(pe=p.messages)!=null&&pe.length&&(t={...t,initialMessages:p.messages})}}catch(a){typeof console!="undefined"&&console.error("[AgentWidget] Failed to load stored state:",a)}let d=()=>l,f=a=>{var E;l=(E=a({...l}))!=null?E:{},Mt()},w=t.actionParsers&&t.actionParsers.length?t.actionParsers:[Sn],u=t.actionHandlers&&t.actionHandlers.length?t.actionHandlers:[Vt.message,Vt.messageAndClick],C=An({parsers:w,handlers:u,getMetadata:d,updateMetadata:f,emit:o.emit,documentRef:typeof document!="undefined"?document:null});C.syncFromMetadata();let g=(ge=(Pe=t.launcher)==null?void 0:Pe.enabled)!=null?ge:!0,U=(it=(De=t.launcher)==null?void 0:De.autoExpand)!=null?it:!1,I=U,h=g,b=g?U:!0,W=Ro(t,C),v=(os=(ht=t.features)==null?void 0:ht.showReasoning)!=null?os:!0,D=(is=(rs=t.features)==null?void 0:rs.showToolCalls)!=null?is:!0,x={onCopy:a=>{var p,E;o.emit("message:copy",a),R!=null&&R.isClientTokenMode()&&R.submitMessageFeedback(a.id,"copy").catch(O=>{t.debug&&console.error("[AgentWidget] Failed to submit copy feedback:",O)}),(E=(p=t.messageActions)==null?void 0:p.onCopy)==null||E.call(p,a)},onFeedback:a=>{var p,E;o.emit("message:feedback",a),R!=null&&R.isClientTokenMode()&&R.submitMessageFeedback(a.messageId,a.type).catch(O=>{t.debug&&console.error("[AgentWidget] Failed to submit feedback:",O)}),(E=(p=t.messageActions)==null?void 0:p.onFeedback)==null||E.call(p,a)}},S=(as=t.statusIndicator)!=null?as:{},X=a=>{var p,E,O,k;return a==="idle"?(p=S.idleText)!=null?p:Xe.idle:a==="connecting"?(E=S.connectingText)!=null?E:Xe.connecting:a==="connected"?(O=S.connectedText)!=null?O:Xe.connected:a==="error"?(k=S.errorText)!=null?k:Xe.error:Xe[a]},{wrapper:B,panel:j}=Eo(t),Z=Mo(t,g),{container:_,body:K,messagesWrapper:Q,suggestions:ne,textarea:re,sendButton:q,sendButtonWrapper:qe,composerForm:Ve,statusText:nt,introTitle:bt,introSubtitle:Ct,closeButton:Y,iconHolder:fe,headerTitle:mt,headerSubtitle:ft,header:Ge,footer:st}=Z,H=Z.micButton,He=Z.micButtonWrapper,at=r.find(a=>a.renderHeader);if(at!=null&&at.renderHeader){let a=at.renderHeader({config:t,defaultRenderer:()=>{let p=zt({config:t,showClose:g});return dn(_,p,t),p.header},onClose:()=>Ke(!1,"user")});if(a){let p=_.querySelector(".tvw-border-b-cw-divider");p&&(p.replaceWith(a),Ge=a)}}let lt=r.find(a=>a.renderComposer);if(lt!=null&<.renderComposer){let a=lt.renderComposer({config:t,defaultRenderer:()=>cn({config:t}).footer,onSubmit:p=>{R&&!R.isStreaming()&&R.sendMessage(p)},disabled:!1});a&&(st.replaceWith(a),st=a)}(()=>{var O,k;let a=(k=(O=t.layout)==null?void 0:O.slots)!=null?k:{},p=ee=>{switch(ee){case"body-top":return _.querySelector(".tvw-rounded-2xl.tvw-bg-cw-surface.tvw-p-6")||null;case"messages":return Q;case"footer-top":return ne;case"composer":return Ve;case"footer-bottom":return nt;default:return null}},E=(ee,N)=>{var T;switch(ee){case"header-left":case"header-center":case"header-right":if(ee==="header-left")Ge.insertBefore(N,Ge.firstChild);else if(ee==="header-right")Ge.appendChild(N);else{let z=Ge.querySelector(".tvw-flex-col");z?(T=z.parentNode)==null||T.insertBefore(N,z.nextSibling):Ge.appendChild(N)}break;case"body-top":let G=K.querySelector(".tvw-rounded-2xl.tvw-bg-cw-surface.tvw-p-6");G?G.replaceWith(N):K.insertBefore(N,K.firstChild);break;case"body-bottom":K.appendChild(N);break;case"footer-top":ne.replaceWith(N);break;case"footer-bottom":nt.replaceWith(N);break;default:break}};for(let[ee,N]of Object.entries(a))if(N)try{let T=N({config:t,defaultContent:()=>p(ee)});T&&E(ee,T)}catch(T){typeof console!="undefined"&&console.error(`[AgentWidget] Error rendering slot "${ee}":`,T)}})(),j.appendChild(_),n.appendChild(B);let wt=()=>{var ae,Re,ct,le,ut,Ht,$t,kt,_t,Pt,qt,pt,Rt,It,fn,rn;let a=(Re=(ae=t.launcher)==null?void 0:ae.sidebarMode)!=null?Re:!1,p=a||((le=(ct=t.launcher)==null?void 0:ct.fullHeight)!=null?le:!1),E=(ut=t.theme)!=null?ut:{},O=($t=(Ht=t.launcher)==null?void 0:Ht.position)!=null?$t:"bottom-left",k=O==="bottom-left"||O==="top-left",ee=a?"none":"1px solid var(--tvw-cw-border)",N=a?k?"2px 0 12px rgba(0, 0, 0, 0.08)":"-2px 0 12px rgba(0, 0, 0, 0.08)":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",T=a?"0":"16px",G=(kt=E.panelBorder)!=null?kt:ee,z=(_t=E.panelShadow)!=null?_t:N,P=(Pt=E.panelBorderRadius)!=null?Pt:T;n.style.cssText="",B.style.cssText="",j.style.cssText="",_.style.cssText="",K.style.cssText="",st.style.cssText="";let J=(pt=(qt=t==null?void 0:t.launcher)==null?void 0:qt.width)!=null?pt:t==null?void 0:t.launcherWidth,Le=J!=null?J:"min(400px, calc(100vw - 24px))";a||(j.style.width=Le,j.style.maxWidth=Le),j.style.boxShadow=z,j.style.borderRadius=P,_.style.border=G,_.style.borderRadius=P;let he=((Rt=t.launcher)==null?void 0:Rt.enabled)===!1;if(p&&(n.style.display="flex",n.style.flexDirection="column",n.style.height="100%",n.style.minHeight="0",B.style.display="flex",B.style.flexDirection="column",B.style.flex="1 1 0%",B.style.minHeight="0",B.style.maxHeight="100%",B.style.height="100%",he&&(B.style.overflow="hidden"),j.style.display="flex",j.style.flexDirection="column",j.style.flex="1 1 0%",j.style.minHeight="0",j.style.maxHeight="100%",j.style.height="100%",j.style.overflow="hidden",_.style.display="flex",_.style.flexDirection="column",_.style.flex="1 1 0%",_.style.minHeight="0",_.style.maxHeight="100%",_.style.overflow="hidden",K.style.flex="1 1 0%",K.style.minHeight="0",K.style.overflowY="auto",st.style.flexShrink="0"),B.classList.remove("tvw-bottom-6","tvw-right-6","tvw-left-6","tvw-top-6","tvw-bottom-4","tvw-right-4","tvw-left-4","tvw-top-4"),!a&&!he&&((It=vt[O])!=null?It:vt["bottom-right"]).split(" ").forEach(Jt=>B.classList.add(Jt)),a){let Ut=(rn=(fn=t.launcher)==null?void 0:fn.sidebarWidth)!=null?rn:"420px";B.style.cssText=`
|
|
17
21
|
position: fixed !important;
|
|
18
22
|
top: 0 !important;
|
|
19
23
|
bottom: 0 !important;
|
|
@@ -24,8 +28,8 @@ import{Marked as Lo}from"marked";var ko=n=>{if(n)return n},un=n=>{var r,s;let e=
|
|
|
24
28
|
padding: 0 !important;
|
|
25
29
|
display: flex !important;
|
|
26
30
|
flex-direction: column !important;
|
|
27
|
-
${
|
|
28
|
-
`,
|
|
31
|
+
${k?"left: 0 !important; right: auto !important;":"left: auto !important; right: 0 !important;"}
|
|
32
|
+
`,j.style.cssText=`
|
|
29
33
|
position: relative !important;
|
|
30
34
|
display: flex !important;
|
|
31
35
|
flex-direction: column !important;
|
|
@@ -36,9 +40,9 @@ import{Marked as Lo}from"marked";var ko=n=>{if(n)return n},un=n=>{var r,s;let e=
|
|
|
36
40
|
min-height: 0 !important;
|
|
37
41
|
margin: 0 !important;
|
|
38
42
|
padding: 0 !important;
|
|
39
|
-
box-shadow: ${
|
|
40
|
-
border-radius: ${
|
|
41
|
-
`,
|
|
43
|
+
box-shadow: ${z} !important;
|
|
44
|
+
border-radius: ${P} !important;
|
|
45
|
+
`,j.style.setProperty("width","100%","important"),j.style.setProperty("max-width","100%","important"),_.style.cssText=`
|
|
42
46
|
display: flex !important;
|
|
43
47
|
flex-direction: column !important;
|
|
44
48
|
flex: 1 1 0% !important;
|
|
@@ -47,17 +51,17 @@ import{Marked as Lo}from"marked";var ko=n=>{if(n)return n},un=n=>{var r,s;let e=
|
|
|
47
51
|
min-height: 0 !important;
|
|
48
52
|
max-height: 100% !important;
|
|
49
53
|
overflow: hidden !important;
|
|
50
|
-
border-radius: ${
|
|
54
|
+
border-radius: ${P} !important;
|
|
51
55
|
border: ${G} !important;
|
|
52
|
-
`,
|
|
56
|
+
`,st.style.cssText=`
|
|
53
57
|
flex-shrink: 0 !important;
|
|
54
58
|
border-top: none !important;
|
|
55
59
|
padding: 8px 16px 12px 16px !important;
|
|
56
|
-
`}if(!ue){let Ut="max-height: -moz-available !important; max-height: stretch !important;",Yt=a?"":"padding-top: 1.25em !important;";P.style.cssText+=Ut+Yt}};wt(),Ln(n,t);let $e=[],st=Co(De),Ue=null,U,lt=!1,Ae=!0,Oe=0,Z=0,Te=null,Ee=!1,ze=0,Je=!1,xt=125,kt=2e3,yt=5,Et=50,St=new Map,we={active:!1,manuallyDeactivated:!1,lastUserMessageWasVoice:!1},Bt=(ts=(es=t.voiceRecognition)==null?void 0:es.autoResume)!=null?ts:!1,ke=a=>{s.emit("voice:state",{active:we.active,source:a,timestamp:Date.now()})},Ye=()=>{c(a=>({...a,voiceState:{active:we.active,timestamp:Date.now(),manuallyDeactivated:we.manuallyDeactivated}}))},At=()=>{var N,I;if(((N=t.voiceRecognition)==null?void 0:N.enabled)===!1)return;let a=Jn(l.voiceState),g=!!a.active,W=Number((I=a.timestamp)!=null?I:0);we.manuallyDeactivated=!!a.manuallyDeactivated,g&&Date.now()-W<or&&setTimeout(()=>{we.active||(we.manuallyDeactivated=!1,Se("restore"))},1e3)},Ft=()=>U?To(U.getMessages()).filter(a=>!a.__skipPersist):[];function Wt(a){if(!(i!=null&&i.save))return;let W={messages:a?To(a):U?Ft():[],metadata:l};try{let N=i.save(W);N instanceof Promise&&N.catch(I=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",I)})}catch(N){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",N)}}let Dt=(a=!1)=>{if(!Ae)return;let g=Date.now();Ee&&g<ze&&!a||(Ee&&g>=ze&&(Ee=!1),!(!a&&!lt)&&(g-Z<xt||(Z=g,Te&&cancelAnimationFrame(Te),Te=requestAnimationFrame(()=>{Ee||!Ae||(Je=!0,F.scrollTop=F.scrollHeight,Oe=F.scrollTop,requestAnimationFrame(()=>{Je=!1}),Te=null)}))))},Mt=null,ln=()=>P.querySelector("#vanilla-agent-scroll-container")||F,dn=(a,g=500)=>{let W=a.scrollTop,N=a.clientHeight,I=a.scrollHeight,re=I-W;if(W+N>=I-2||Math.abs(re)<5)return;Mt!==null&&(cancelAnimationFrame(Mt),Mt=null);let C=performance.now(),G=k=>1-Math.pow(1-k,3),_=k=>{let z=a.scrollHeight;z!==I&&(I=z,re=I-W);let Be=k-C,ue=Math.min(Be/g,1),ie=G(ue),Pe=W+re*ie;a.scrollTop=Pe,ue<1?Mt=requestAnimationFrame(_):(a.scrollTop=a.scrollHeight,Mt=null)};Mt=requestAnimationFrame(_)},cn=a=>{let g=new Map;a.forEach(W=>{let N=St.get(W.id);g.set(W.id,{streaming:W.streaming,role:W.role}),!N&&W.role==="assistant"&&s.emit("assistant:message",W),W.role==="assistant"&&(N!=null&&N.streaming)&&W.streaming===!1&&s.emit("assistant:complete",W)}),St.clear(),g.forEach((W,N)=>{St.set(N,W)})},Nt=(a,g,W)=>{a.innerHTML="";let N=document.createDocumentFragment();g.forEach(C=>{var Be,ue;let G=null,_=r.find(ie=>!!(C.variant==="reasoning"&&ie.renderReasoning||C.variant==="tool"&&ie.renderToolCall||!C.variant&&ie.renderMessage)),k=(Be=t.layout)==null?void 0:Be.messages;if(_)if(C.variant==="reasoning"&&C.reasoning&&_.renderReasoning){if(!w)return;G=_.renderReasoning({message:C,defaultRenderer:()=>Rn(C),config:t})}else if(C.variant==="tool"&&C.toolCall&&_.renderToolCall){if(!K)return;G=_.renderToolCall({message:C,defaultRenderer:()=>Pn(C,t),config:t})}else _.renderMessage&&(G=_.renderMessage({message:C,defaultRenderer:()=>{let ie=rn(C,W,k,t.messageActions,T);return C.role!=="user"&&$n(ie,C,t,U),ie},config:t}));if(!G&&C.role==="assistant"&&!C.variant&&t.enableComponentStreaming!==!1&&Un(C)){let Pe=zn(C);if(Pe){let dt=qn(Pe,{config:t,message:C,transform:W});if(dt){let ae=document.createElement("div");if(ae.className=["vanilla-message-bubble","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-p-4"].join(" "),ae.setAttribute("data-message-id",C.id),C.content&&C.content.trim()){let ct=document.createElement("div");ct.className="tvw-mb-3 tvw-text-sm tvw-leading-relaxed",ct.innerHTML=W({text:C.content,message:C,streaming:!!C.streaming,raw:C.rawContent}),ae.appendChild(ct)}ae.appendChild(dt),G=ae}}}if(!G)if(C.variant==="reasoning"&&C.reasoning){if(!w)return;G=Rn(C)}else if(C.variant==="tool"&&C.toolCall){if(!K)return;G=Pn(C,t)}else{let ie=(ue=t.layout)==null?void 0:ue.messages;ie!=null&&ie.renderUserMessage&&C.role==="user"?G=ie.renderUserMessage({message:C,config:t,streaming:!!C.streaming}):ie!=null&&ie.renderAssistantMessage&&C.role==="assistant"?G=ie.renderAssistantMessage({message:C,config:t,streaming:!!C.streaming}):G=rn(C,W,ie,t.messageActions,T),C.role!=="user"&&G&&$n(G,C,t,U)}let z=document.createElement("div");z.className="tvw-flex",C.role==="user"&&z.classList.add("tvw-justify-end"),z.appendChild(G),N.appendChild(z)});let I=g.some(C=>C.role==="assistant"&&C.streaming),re=g[g.length-1],H=(re==null?void 0:re.role)==="assistant"&&!re.streaming;if(lt&&g.some(C=>C.role==="user")&&!I&&!H){let C=fn(),G=document.createElement("div");G.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(" "),G.appendChild(C);let _=document.createElement("div");_.className="tvw-flex",_.appendChild(G),N.appendChild(_)}a.appendChild(N),requestAnimationFrame(()=>{requestAnimationFrame(()=>{let C=ln();dn(C)})})},jt=()=>{f&&(x?(P.classList.remove("tvw-pointer-events-none","tvw-opacity-0"),Y.classList.remove("tvw-scale-95","tvw-opacity-0"),Y.classList.add("tvw-scale-100","tvw-opacity-100"),B?B.element.style.display="none":V&&(V.style.display="none")):(P.classList.add("tvw-pointer-events-none","tvw-opacity-0"),Y.classList.remove("tvw-scale-100","tvw-opacity-100"),Y.classList.add("tvw-scale-95","tvw-opacity-0"),B?B.element.style.display="":V&&(V.style.display="")))},ot=(a,g="user")=>{if(!f||x===a)return;let W=x;x=a,jt(),x&&(ye(),Dt(!0));let N={open:x,source:g,timestamp:Date.now()};x&&!W?s.emit("widget:opened",N):!x&&W&&s.emit("widget:closed",N),s.emit("widget:state",{open:x,launcherEnabled:f,voiceActive:we.active,streaming:U.isStreaming()})},Jt=a=>{$.disabled=a,L&&(L.disabled=a),st.buttons.forEach(g=>{g.disabled=a})},Zt=()=>{var I,re,H,C,G,_,k,z,Be,ue,ie,Pe,dt,ae;bt.textContent=(re=(I=t.copy)==null?void 0:I.welcomeTitle)!=null?re:"Hello \u{1F44B}",Ct.textContent=(C=(H=t.copy)==null?void 0:H.welcomeSubtitle)!=null?C:"Ask anything about your account or products.",oe.placeholder=(_=(G=t.copy)==null?void 0:G.inputPlaceholder)!=null?_:"How can I help...",((z=(k=t.sendButton)==null?void 0:k.useIcon)!=null?z:!1)||($.textContent=(ue=(Be=t.copy)==null?void 0:Be.sendButtonLabel)!=null?ue:"Send");let g=(Pe=(ie=t.theme)==null?void 0:ie.inputFontFamily)!=null?Pe:"sans-serif",W=(ae=(dt=t.theme)==null?void 0:dt.inputFontWeight)!=null?ae:"400",N=ct=>{switch(ct){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=N(g),oe.style.fontWeight=W};U=new tn(t,{onMessagesChanged(a){Nt(ne,a,R),U&&(a.some(N=>N.role==="user")?st.render([],U,oe,a):st.render(t.suggestionChips,U,oe,a,t.suggestionChipsConfig)),Dt(!lt),cn(a);let g=[...a].reverse().find(W=>W.role==="user");we.lastUserMessageWasVoice=!!(g!=null&&g.viaVoice),Wt(a)},onStatusChanged(a){var N;let g=(N=t.statusIndicator)!=null?N:{},W=I=>{var re,H,C,G;return I==="idle"?(re=g.idleText)!=null?re:Ke.idle:I==="connecting"?(H=g.connectingText)!=null?H:Ke.connecting:I==="connected"?(C=g.connectedText)!=null?C:Ke.connected:I==="error"?(G=g.errorText)!=null?G:Ke.error:Ke[I]};tt.textContent=W(a)},onStreamingChanged(a){lt=a,Jt(a),U&&Nt(ne,U.getMessages(),R),a||Dt(!0)}}),d&&d.then(a=>{var g;a&&(a.metadata&&(l=Jn(a.metadata),b.syncFromMetadata()),(g=a.messages)!=null&&g.length&&U.hydrateMessages(a.messages))}).catch(a=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to hydrate stored state:",a)});let Qt=a=>{a.preventDefault();let g=oe.value.trim();g&&(oe.value="",U.sendMessage(g))},S=a=>{a.key==="Enter"&&!a.shiftKey&&(a.preventDefault(),$.click())},X=null,te=!1,be=null,xe=null,Ne=()=>typeof window=="undefined"?null:window.webkitSpeechRecognition||window.SpeechRecognition||null,Se=(a="user")=>{var re,H,C,G;if(te||U.isStreaming())return;let g=Ne();if(!g)return;X=new g;let N=(H=((re=t.voiceRecognition)!=null?re:{}).pauseDuration)!=null?H:2e3;X.continuous=!0,X.interimResults=!0,X.lang="en-US";let I=oe.value;X.onresult=_=>{let k="",z="";for(let ue=0;ue<_.results.length;ue++){let ie=_.results[ue],Pe=ie[0].transcript;ie.isFinal?k+=Pe+" ":z=Pe}let Be=I+k+z;oe.value=Be,be&&clearTimeout(be),(k||z)&&(be=window.setTimeout(()=>{let ue=oe.value.trim();ue&&X&&te&&(A(),oe.value="",U.sendMessage(ue,{viaVoice:!0}))},N))},X.onerror=_=>{_.error!=="no-speech"&&A()},X.onend=()=>{if(te){let _=oe.value.trim();_&&_!==I.trim()&&(oe.value="",U.sendMessage(_,{viaVoice:!0})),A()}};try{if(X.start(),te=!0,we.active=!0,a!=="system"&&(we.manuallyDeactivated=!1),ke(a),Ye(),L){xe={backgroundColor:L.style.backgroundColor,color:L.style.color,borderColor:L.style.borderColor};let _=(C=t.voiceRecognition)!=null?C:{},k=(G=_.recordingBackgroundColor)!=null?G:"#ef4444",z=_.recordingIconColor,Be=_.recordingBorderColor;if(L.classList.add("tvw-voice-recording"),L.style.backgroundColor=k,z){L.style.color=z;let ue=L.querySelector("svg");ue&&ue.setAttribute("stroke",z)}Be&&(L.style.borderColor=Be),L.setAttribute("aria-label","Stop voice recognition")}}catch{A("system")}},A=(a="user")=>{if(te){if(te=!1,be&&(clearTimeout(be),be=null),X){try{X.stop()}catch{}X=null}if(we.active=!1,ke(a),Ye(),L){if(L.classList.remove("tvw-voice-recording"),xe){L.style.backgroundColor=xe.backgroundColor,L.style.color=xe.color,L.style.borderColor=xe.borderColor;let g=L.querySelector("svg");g&&g.setAttribute("stroke",xe.color||"currentColor"),xe=null}L.setAttribute("aria-label","Start voice recognition")}}},gt=(a,g)=>{var Pe,dt,ae,ct,Ht,Rt,Lt;if(!(typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined")))return null;let N=p("div","tvw-send-button-wrapper"),I=p("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer");I.type="button",I.setAttribute("aria-label","Start voice recognition");let re=(Pe=a==null?void 0:a.iconName)!=null?Pe:"mic",H=(dt=g==null?void 0:g.size)!=null?dt:"40px",C=(ae=a==null?void 0:a.iconSize)!=null?ae:H,G=parseFloat(C)||24,_=(ct=a==null?void 0:a.backgroundColor)!=null?ct:g==null?void 0:g.backgroundColor,k=(Ht=a==null?void 0:a.iconColor)!=null?Ht:g==null?void 0:g.textColor;I.style.width=C,I.style.height=C,I.style.minWidth=C,I.style.minHeight=C,I.style.fontSize="18px",I.style.lineHeight="1";let z=k||"currentColor",Be=le(re,G,z,1.5);Be?(I.appendChild(Be),I.style.color=z):(I.textContent="\u{1F3A4}",I.style.color=z),_?I.style.backgroundColor=_:I.classList.add("tvw-bg-cw-primary"),k?I.style.color=k:!k&&!(g!=null&&g.textColor)&&I.classList.add("tvw-text-white"),a!=null&&a.borderWidth&&(I.style.borderWidth=a.borderWidth,I.style.borderStyle="solid"),a!=null&&a.borderColor&&(I.style.borderColor=a.borderColor),a!=null&&a.paddingX&&(I.style.paddingLeft=a.paddingX,I.style.paddingRight=a.paddingX),a!=null&&a.paddingY&&(I.style.paddingTop=a.paddingY,I.style.paddingBottom=a.paddingY),N.appendChild(I);let ue=(Rt=a==null?void 0:a.tooltipText)!=null?Rt:"Start voice recognition";if(((Lt=a==null?void 0:a.showTooltip)!=null?Lt:!1)&&ue){let _t=p("div","tvw-send-button-tooltip");_t.textContent=ue,N.appendChild(_t)}return{micButton:I,micButtonWrapper:N}},Q=()=>{if(te){let a=oe.value.trim();we.manuallyDeactivated=!0,Ye(),A("user"),a&&(oe.value="",U.sendMessage(a))}else we.manuallyDeactivated=!1,Ye(),Se("user")};L&&(L.addEventListener("click",Q),$e.push(()=>{A("system"),L&&L.removeEventListener("click",Q)}));let E=s.on("assistant:complete",()=>{Bt&&(we.active||we.manuallyDeactivated||Bt==="assistant"&&!we.lastUserMessageWasVoice||setTimeout(()=>{!we.active&&!we.manuallyDeactivated&&Se("auto")},600))});$e.push(E);let v=()=>{ot(!x,"user")},B=null,V=null;if(f){let a=r.find(g=>g.renderLauncher);if(a!=null&&a.renderLauncher){let g=a.renderLauncher({config:t,defaultRenderer:()=>nn(t,v).element,onToggle:v});g&&(V=g)}V||(B=nn(t,v))}B?n.appendChild(B.element):V&&n.appendChild(V),jt(),st.render(t.suggestionChips,U,oe,void 0,t.suggestionChipsConfig),Zt(),Jt(U.isStreaming()),Dt(!0),At();let ye=()=>{var W,N,I,re,H,C,G,_;let a=(N=(W=t.launcher)==null?void 0:W.sidebarMode)!=null?N:!1,g=a||((re=(I=t.launcher)==null?void 0:I.fullHeight)!=null?re:!1);if(!f){Y.style.height="",Y.style.width="";return}if(!a){let k=(C=(H=t==null?void 0:t.launcher)==null?void 0:H.width)!=null?C:t==null?void 0:t.launcherWidth,z=k!=null?k:"min(400px, calc(100vw - 24px))";Y.style.width=z,Y.style.maxWidth=z}if(!g){let k=window.innerHeight,z=64,Be=(_=(G=t.launcher)==null?void 0:G.heightOffset)!=null?_:0,ue=Math.max(200,k-z),ie=Math.min(640,ue),Pe=Math.max(200,ie-Be);Y.style.height=`${Pe}px`}};ye(),window.addEventListener("resize",ye),$e.push(()=>window.removeEventListener("resize",ye)),Oe=F.scrollTop;let Ge=()=>{let a=F.scrollTop,g=F.scrollHeight,W=F.clientHeight,N=g-a-W,I=Math.abs(a-Oe);if(Oe=a,!Je&&!(I<=yt)){if(!Ae&&N<Et){Ee=!1,Ae=!0;return}Ae&&N>Et&&(Ee=!0,ze=Date.now()+kt,Ae=!1)}};F.addEventListener("scroll",Ge,{passive:!0}),$e.push(()=>F.removeEventListener("scroll",Ge)),$e.push(()=>{Te&&cancelAnimationFrame(Te)});let Me=()=>{q&&(Ue&&(q.removeEventListener("click",Ue),Ue=null),f?(q.style.display="",Ue=()=>{x=!1,jt()},q.addEventListener("click",Ue)):q.style.display="none")};Me(),(()=>{let{clearChatButton:a}=fe;a&&a.addEventListener("click",()=>{U.clearMessages();try{localStorage.removeItem(Gt),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Gt}`)}catch(W){console.error("[AgentWidget] Failed to clear default localStorage:",W)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==Gt)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(W){console.error("[AgentWidget] Failed to clear custom localStorage:",W)}let g=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(g),i!=null&&i.clear)try{let W=i.clear();W instanceof Promise&&W.catch(N=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",N)})}catch(W){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",W)}l={},b.syncFromMetadata()})})(),Xe.addEventListener("submit",Qt),oe.addEventListener("keydown",S),$e.push(()=>{Xe.removeEventListener("submit",Qt),oe.removeEventListener("keydown",S)}),$e.push(()=>{U.cancel()}),B?$e.push(()=>{B==null||B.destroy()}):V&&$e.push(()=>{V==null||V.remove()});let ve={update(a){var en,Ut,Yt,ss,os,rs,is,as,ls,ds,cs,ps,us,gs,hs,ms,fs,ws,ys,vs,bs,Cs,xs,Ss,As,Ts,Es,Ws,Ms,Ls,ks,Bs,Hs,Rs,Is,Ps,$s,Os,Fs,Ds,Ns,js,_s,qs,Us,zs,Js,Ys,Ks,Xs,Vs,Gs,Zs,Qs,eo,to,no;let g=t.toolCall;t={...t,...a},wt(),Ln(n,t);let W=wn.getForInstance(t.plugins);if(r.length=0,r.push(...W),f=(Ut=(en=t.launcher)==null?void 0:en.enabled)!=null?Ut:!0,D=(ss=(Yt=t.launcher)==null?void 0:Yt.autoExpand)!=null?ss:!1,w=(rs=(os=t.features)==null?void 0:os.showReasoning)!=null?rs:!0,K=(as=(is=t.features)==null?void 0:is.showToolCalls)!=null?as:!0,((ls=t.launcher)==null?void 0:ls.enabled)===!1&&B&&(B.destroy(),B=null),((ds=t.launcher)==null?void 0:ds.enabled)===!1&&V&&(V.remove(),V=null),((cs=t.launcher)==null?void 0:cs.enabled)!==!1&&!B&&!V){let M=r.find(me=>me.renderLauncher);if(M!=null&&M.renderLauncher){let me=M.renderLauncher({config:t,defaultRenderer:()=>nn(t,v).element,onToggle:v});me&&(V=me,n.appendChild(V))}V||(B=nn(t,v),n.appendChild(B.element))}B&&B.update(t),mt&&((ps=t.launcher)==null?void 0:ps.title)!==void 0&&(mt.textContent=t.launcher.title),ft&&((us=t.launcher)==null?void 0:us.subtitle)!==void 0&&(ft.textContent=t.launcher.subtitle),f!==h?f?ot(D,"auto"):(x=!0,jt()):D!==j&&ot(D,"auto"),j=D,h=f,ye(),Me(),JSON.stringify(a.toolCall)!==JSON.stringify(g)&&U&&Nt(ne,U.getMessages(),R);let H=(gs=t.launcher)!=null?gs:{},C=(hs=H.headerIconHidden)!=null?hs:!1,G=H.headerIconName,_=(ms=H.headerIconSize)!=null?ms:"48px";if(he){let M=J.querySelector(".tvw-border-b-cw-divider"),me=M==null?void 0:M.querySelector(".tvw-flex-col");if(C)he.style.display="none",M&&me&&!M.contains(me)&&M.insertBefore(me,M.firstChild);else{if(he.style.display="",he.style.height=_,he.style.width=_,M&&me&&(M.contains(he)?he.nextSibling!==me&&(he.remove(),M.insertBefore(he,me)):M.insertBefore(he,me)),G){let Le=parseFloat(_)||24,Ce=le(G,Le*.6,"#ffffff",2);Ce?he.replaceChildren(Ce):he.textContent=(fs=H.agentIconText)!=null?fs:"\u{1F4AC}"}else if(H.iconUrl){let Le=he.querySelector("img");if(Le)Le.src=H.iconUrl,Le.style.height=_,Le.style.width=_;else{let Ce=document.createElement("img");Ce.src=H.iconUrl,Ce.alt="",Ce.className="tvw-rounded-xl tvw-object-cover",Ce.style.height=_,Ce.style.width=_,he.replaceChildren(Ce)}}else{let Le=he.querySelector("svg"),Ce=he.querySelector("img");(Le||Ce)&&he.replaceChildren(),he.textContent=(ws=H.agentIconText)!=null?ws:"\u{1F4AC}"}let se=he.querySelector("img");se&&(se.style.height=_,se.style.width=_)}}if(q){let M=(ys=H.closeButtonSize)!=null?ys:"32px",me=(vs=H.closeButtonPlacement)!=null?vs:"inline";q.style.height=M,q.style.width=M;let{closeButtonWrapper:se}=fe,Le=me==="top-right",Ce=se==null?void 0:se.classList.contains("tvw-absolute");if(se&&Le!==Ce)if(se.remove(),Le)se.className="tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50",J.style.position="relative",J.appendChild(se);else{let ge=(Cs=(bs=H.clearChat)==null?void 0:bs.placement)!=null?Cs:"inline",Qe=(Ss=(xs=H.clearChat)==null?void 0:xs.enabled)!=null?Ss:!0;se.className=Qe&&ge==="inline"?"":"tvw-ml-auto";let et=J.querySelector(".tvw-border-b-cw-divider");et&&et.appendChild(se)}if(H.closeButtonColor?(q.style.color=H.closeButtonColor,q.classList.remove("tvw-text-cw-muted")):(q.style.color="",q.classList.add("tvw-text-cw-muted")),H.closeButtonBackgroundColor?(q.style.backgroundColor=H.closeButtonBackgroundColor,q.classList.remove("hover:tvw-bg-gray-100")):(q.style.backgroundColor="",q.classList.add("hover:tvw-bg-gray-100")),H.closeButtonBorderWidth||H.closeButtonBorderColor){let ge=H.closeButtonBorderWidth||"0px",Qe=H.closeButtonBorderColor||"transparent";q.style.border=`${ge} solid ${Qe}`,q.classList.remove("tvw-border-none")}else q.style.border="",q.classList.add("tvw-border-none");H.closeButtonBorderRadius?(q.style.borderRadius=H.closeButtonBorderRadius,q.classList.remove("tvw-rounded-full")):(q.style.borderRadius="",q.classList.add("tvw-rounded-full")),H.closeButtonPaddingX?(q.style.paddingLeft=H.closeButtonPaddingX,q.style.paddingRight=H.closeButtonPaddingX):(q.style.paddingLeft="",q.style.paddingRight=""),H.closeButtonPaddingY?(q.style.paddingTop=H.closeButtonPaddingY,q.style.paddingBottom=H.closeButtonPaddingY):(q.style.paddingTop="",q.style.paddingBottom="");let Ze=(As=H.closeButtonIconName)!=null?As:"x",je=(Ts=H.closeButtonIconText)!=null?Ts:"\xD7";q.innerHTML="";let ut=le(Ze,"20px",H.closeButtonColor||"",2);ut?q.appendChild(ut):q.textContent=je;let Ot=(Es=H.closeButtonTooltipText)!=null?Es:"Close chat",We=(Ws=H.closeButtonShowTooltip)!=null?Ws:!0;if(q.setAttribute("aria-label",Ot),se&&(se._cleanupTooltip&&(se._cleanupTooltip(),delete se._cleanupTooltip),We&&Ot)){let ge=null,Qe=()=>{if(ge||!q)return;ge=p("div","tvw-clear-chat-tooltip"),ge.textContent=Ot;let Kt=p("div");Kt.className="tvw-clear-chat-tooltip-arrow",ge.appendChild(Kt);let xn=q.getBoundingClientRect();ge.style.position="fixed",ge.style.left=`${xn.left+xn.width/2}px`,ge.style.top=`${xn.top-8}px`,ge.style.transform="translate(-50%, -100%)",document.body.appendChild(ge)},et=()=>{ge&&ge.parentNode&&(ge.parentNode.removeChild(ge),ge=null)};se.addEventListener("mouseenter",Qe),se.addEventListener("mouseleave",et),q.addEventListener("focus",Qe),q.addEventListener("blur",et),se._cleanupTooltip=()=>{et(),se&&(se.removeEventListener("mouseenter",Qe),se.removeEventListener("mouseleave",et)),q&&(q.removeEventListener("focus",Qe),q.removeEventListener("blur",et))}}}let{clearChatButton:k,clearChatButtonWrapper:z}=fe;if(k){let M=(Ms=H.clearChat)!=null?Ms:{},me=(Ls=M.enabled)!=null?Ls:!0,se=(ks=M.placement)!=null?ks:"inline";if(z){z.style.display=me?"":"none";let Le=se==="top-right",Ce=z.classList.contains("tvw-absolute");if(Le!==Ce&&me){if(z.remove(),Le)z.className="tvw-absolute tvw-top-4 tvw-z-50",z.style.right="48px",J.style.position="relative",J.appendChild(z);else{z.className="tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper",z.style.right="";let je=J.querySelector(".tvw-border-b-cw-divider"),ut=fe.closeButtonWrapper;je&&ut&&ut.parentElement===je?je.insertBefore(z,ut):je&&je.appendChild(z)}let Ze=fe.closeButtonWrapper;Ze&&!Ze.classList.contains("tvw-absolute")&&(Le?Ze.classList.add("tvw-ml-auto"):Ze.classList.remove("tvw-ml-auto"))}}if(me){let Le=(Bs=M.size)!=null?Bs:"32px";k.style.height=Le,k.style.width=Le;let Ce=(Hs=M.iconName)!=null?Hs:"refresh-cw",Ze=(Rs=M.iconColor)!=null?Rs:"";k.innerHTML="";let je=le(Ce,"20px",Ze||"",2);if(je&&k.appendChild(je),Ze?(k.style.color=Ze,k.classList.remove("tvw-text-cw-muted")):(k.style.color="",k.classList.add("tvw-text-cw-muted")),M.backgroundColor?(k.style.backgroundColor=M.backgroundColor,k.classList.remove("hover:tvw-bg-gray-100")):(k.style.backgroundColor="",k.classList.add("hover:tvw-bg-gray-100")),M.borderWidth||M.borderColor){let We=M.borderWidth||"0px",ge=M.borderColor||"transparent";k.style.border=`${We} solid ${ge}`,k.classList.remove("tvw-border-none")}else k.style.border="",k.classList.add("tvw-border-none");M.borderRadius?(k.style.borderRadius=M.borderRadius,k.classList.remove("tvw-rounded-full")):(k.style.borderRadius="",k.classList.add("tvw-rounded-full")),M.paddingX?(k.style.paddingLeft=M.paddingX,k.style.paddingRight=M.paddingX):(k.style.paddingLeft="",k.style.paddingRight=""),M.paddingY?(k.style.paddingTop=M.paddingY,k.style.paddingBottom=M.paddingY):(k.style.paddingTop="",k.style.paddingBottom="");let ut=(Is=M.tooltipText)!=null?Is:"Clear chat",Ot=(Ps=M.showTooltip)!=null?Ps:!0;if(k.setAttribute("aria-label",ut),z&&(z._cleanupTooltip&&(z._cleanupTooltip(),delete z._cleanupTooltip),Ot&&ut)){let We=null,ge=()=>{if(We||!k)return;We=p("div","tvw-clear-chat-tooltip"),We.textContent=ut;let et=p("div");et.className="tvw-clear-chat-tooltip-arrow",We.appendChild(et);let Kt=k.getBoundingClientRect();We.style.position="fixed",We.style.left=`${Kt.left+Kt.width/2}px`,We.style.top=`${Kt.top-8}px`,We.style.transform="translate(-50%, -100%)",document.body.appendChild(We)},Qe=()=>{We&&We.parentNode&&(We.parentNode.removeChild(We),We=null)};z.addEventListener("mouseenter",ge),z.addEventListener("mouseleave",Qe),k.addEventListener("focus",ge),k.addEventListener("blur",Qe),z._cleanupTooltip=()=>{Qe(),z&&(z.removeEventListener("mouseenter",ge),z.removeEventListener("mouseleave",Qe)),k&&(k.removeEventListener("focus",ge),k.removeEventListener("blur",Qe))}}}}let Be=t.actionParsers&&t.actionParsers.length?t.actionParsers:[yn],ue=t.actionHandlers&&t.actionHandlers.length?t.actionHandlers:[Vt.message,Vt.messageAndClick];b=vn({parsers:Be,handlers:ue,getMetadata:u,updateMetadata:c,emit:s.emit,documentRef:typeof document!="undefined"?document:null}),R=Eo(t,b),U.updateConfig(t),Nt(ne,U.getMessages(),R),st.render(t.suggestionChips,U,oe,void 0,t.suggestionChipsConfig),Zt(),Jt(U.isStreaming());let ie=(($s=t.voiceRecognition)==null?void 0:$s.enabled)===!0,Pe=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),dt=ie&&Pe;if(Xe.classList.remove("tvw-gap-1","tvw-gap-3"),Xe.classList.add(dt?"tvw-gap-1":"tvw-gap-3"),ie&&Pe)if(!L||!Re){let M=gt(t.voiceRecognition,t.sendButton);M&&(L=M.micButton,Re=M.micButtonWrapper,Xe.insertBefore(Re,qe),L.addEventListener("click",Q),L.disabled=U.isStreaming())}else{let M=(Os=t.voiceRecognition)!=null?Os:{},me=(Fs=t.sendButton)!=null?Fs:{},se=(Ds=M.iconName)!=null?Ds:"mic",Le=(Ns=me.size)!=null?Ns:"40px",Ce=(js=M.iconSize)!=null?js:Le,Ze=parseFloat(Ce)||24;L.style.width=Ce,L.style.height=Ce,L.style.minWidth=Ce,L.style.minHeight=Ce;let je=(qs=(_s=M.iconColor)!=null?_s:me.textColor)!=null?qs:"currentColor";L.innerHTML="";let ut=le(se,Ze,je,2);ut?L.appendChild(ut):L.textContent="\u{1F3A4}";let Ot=(Us=M.backgroundColor)!=null?Us:me.backgroundColor;Ot?(L.style.backgroundColor=Ot,L.classList.remove("tvw-bg-cw-primary")):(L.style.backgroundColor="",L.classList.add("tvw-bg-cw-primary")),je?(L.style.color=je,L.classList.remove("tvw-text-white")):!je&&!me.textColor&&(L.style.color="",L.classList.add("tvw-text-white")),M.borderWidth?(L.style.borderWidth=M.borderWidth,L.style.borderStyle="solid"):(L.style.borderWidth="",L.style.borderStyle=""),M.borderColor?L.style.borderColor=M.borderColor:L.style.borderColor="",M.paddingX?(L.style.paddingLeft=M.paddingX,L.style.paddingRight=M.paddingX):(L.style.paddingLeft="",L.style.paddingRight=""),M.paddingY?(L.style.paddingTop=M.paddingY,L.style.paddingBottom=M.paddingY):(L.style.paddingTop="",L.style.paddingBottom="");let We=Re==null?void 0:Re.querySelector(".tvw-send-button-tooltip"),ge=(zs=M.tooltipText)!=null?zs:"Start voice recognition";if(((Js=M.showTooltip)!=null?Js:!1)&&ge)if(We)We.textContent=ge,We.style.display="";else{let et=document.createElement("div");et.className="tvw-send-button-tooltip",et.textContent=ge,Re==null||Re.insertBefore(et,L)}else We&&(We.style.display="none");Re.style.display="",L.disabled=U.isStreaming()}else L&&Re&&(Re.style.display="none",te&&A());let ae=(Ys=t.sendButton)!=null?Ys:{},ct=(Ks=ae.useIcon)!=null?Ks:!1,Ht=(Xs=ae.iconText)!=null?Xs:"\u2191",Rt=ae.iconName,Lt=(Vs=ae.tooltipText)!=null?Vs:"Send message",_t=(Gs=ae.showTooltip)!=null?Gs:!1,It=(Zs=ae.size)!=null?Zs:"40px",qt=ae.backgroundColor,pt=ae.textColor;if(ct){if($.style.width=It,$.style.height=It,$.style.minWidth=It,$.style.minHeight=It,$.style.fontSize="18px",$.style.lineHeight="1",$.innerHTML="",Rt){let M=parseFloat(It)||24,me=pt&&typeof pt=="string"&&pt.trim()?pt.trim():"currentColor",se=le(Rt,M,me,2);se?($.appendChild(se),$.style.color=me):($.textContent=Ht,pt?$.style.color=pt:$.classList.add("tvw-text-white"))}else $.textContent=Ht,pt?$.style.color=pt:$.classList.add("tvw-text-white");$.className="tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer",qt?($.style.backgroundColor=qt,$.classList.remove("tvw-bg-cw-primary")):$.classList.add("tvw-bg-cw-primary")}else $.textContent=(eo=(Qs=t.copy)==null?void 0:Qs.sendButtonLabel)!=null?eo:"Send",$.style.width="",$.style.height="",$.style.minWidth="",$.style.minHeight="",$.style.fontSize="",$.style.lineHeight="",$.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",qt?($.style.backgroundColor=qt,$.classList.remove("tvw-bg-cw-accent")):$.classList.add("tvw-bg-cw-accent"),pt?$.style.color=pt:$.classList.add("tvw-text-white");ae.borderWidth?($.style.borderWidth=ae.borderWidth,$.style.borderStyle="solid"):($.style.borderWidth="",$.style.borderStyle=""),ae.borderColor?$.style.borderColor=ae.borderColor:$.style.borderColor="",ae.paddingX?($.style.paddingLeft=ae.paddingX,$.style.paddingRight=ae.paddingX):($.style.paddingLeft="",$.style.paddingRight=""),ae.paddingY?($.style.paddingTop=ae.paddingY,$.style.paddingBottom=ae.paddingY):($.style.paddingTop="",$.style.paddingBottom="");let Pt=qe==null?void 0:qe.querySelector(".tvw-send-button-tooltip");if(_t&&Lt)if(Pt)Pt.textContent=Lt,Pt.style.display="";else{let M=document.createElement("div");M.className="tvw-send-button-tooltip",M.textContent=Lt,qe==null||qe.insertBefore(M,$)}else Pt&&(Pt.style.display="none");let $t=(to=t.statusIndicator)!=null?to:{},pn=(no=$t.visible)!=null?no:!0;if(tt.style.display=pn?"":"none",U){let M=U.getStatus(),me=se=>{var Le,Ce,Ze,je;return se==="idle"?(Le=$t.idleText)!=null?Le:Ke.idle:se==="connecting"?(Ce=$t.connectingText)!=null?Ce:Ke.connecting:se==="connected"?(Ze=$t.connectedText)!=null?Ze:Ke.connected:se==="error"?(je=$t.errorText)!=null?je:Ke.error:Ke[se]};tt.textContent=me(M)}},open(){f&&ot(!0,"api")},close(){f&&ot(!1,"api")},toggle(){f&&ot(!x,"api")},clearChat(){U.clearMessages();try{localStorage.removeItem(Gt),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Gt}`)}catch(g){console.error("[AgentWidget] Failed to clear default localStorage:",g)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==Gt)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(g){console.error("[AgentWidget] Failed to clear custom localStorage:",g)}let a=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(a),i!=null&&i.clear)try{let g=i.clear();g instanceof Promise&&g.catch(W=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",W)})}catch(g){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",g)}l={},b.syncFromMetadata()},setMessage(a){return!oe||U.isStreaming()?!1:(!x&&f&&ot(!0,"system"),oe.value=a,oe.dispatchEvent(new Event("input",{bubbles:!0})),!0)},submitMessage(a){if(U.isStreaming())return!1;let g=(a==null?void 0:a.trim())||oe.value.trim();return g?(!x&&f&&ot(!0,"system"),oe.value="",U.sendMessage(g),!0):!1},startVoiceRecognition(){return te||U.isStreaming()||!Ne()?!1:(!x&&f&&ot(!0,"system"),we.manuallyDeactivated=!1,Ye(),Se("user"),!0)},stopVoiceRecognition(){return te?(we.manuallyDeactivated=!0,Ye(),A("user"),!0):!1},injectTestMessage(a){!x&&f&&ot(!0,"system"),U.injectTestEvent(a)},getMessages(){return U.getMessages()},getStatus(){return U.getStatus()},getPersistentMetadata(){return{...l}},updatePersistentMetadata(a){c(a)},on(a,g){return s.on(a,g)},off(a,g){s.off(a,g)},isOpen(){return f&&x},isVoiceActive(){return we.active},getState(){return{open:f&&x,launcherEnabled:f,voiceActive:we.active,streaming:U.isStreaming()}},destroy(){$e.forEach(a=>a()),P.remove(),B==null||B.destroy(),V==null||V.remove(),Ue&&q.removeEventListener("click",Ue)}};if((((ns=o==null?void 0:o.debugTools)!=null?ns:!1)||!!t.debug)&&typeof window!="undefined"){let a=window.AgentWidgetBrowser,g={controller:ve,getMessages:ve.getMessages,getStatus:ve.getStatus,getMetadata:ve.getPersistentMetadata,updateMetadata:ve.updatePersistentMetadata,clearHistory:()=>ve.clearChat(),setVoiceActive:W=>W?ve.startVoiceRecognition():ve.stopVoiceRecognition()};window.AgentWidgetBrowser=g,$e.push(()=>{window.AgentWidgetBrowser===g&&(window.AgentWidgetBrowser=a)})}return ve};var Kn={},rr=n=>{if(typeof window=="undefined"||typeof document=="undefined")throw new Error("Chat widget can only be mounted in a browser environment");if(typeof n=="string"){let e=document.querySelector(n);if(!e)throw new Error(`Chat widget target "${n}" was not found`);return e}return n},ir=()=>{try{if(typeof Kn!="undefined"&&Kn.url)return new URL("../widget.css",Kn.url).href}catch{}return null},Wo=n=>{let e=ir(),o=()=>{if(!(n instanceof ShadowRoot)||n.querySelector("link[data-vanilla-agent]"))return;let t=document.head.querySelector("link[data-vanilla-agent]");if(!t)return;let r=t.cloneNode(!0);n.insertBefore(r,n.firstChild)};if(n instanceof ShadowRoot)if(e){let t=document.createElement("link");t.rel="stylesheet",t.href=e,t.setAttribute("data-vanilla-agent","true"),n.insertBefore(t,n.firstChild)}else o();else if(!document.head.querySelector("link[data-vanilla-agent]")&&e){let r=document.createElement("link");r.rel="stylesheet",r.href=e,r.setAttribute("data-vanilla-agent","true"),document.head.appendChild(r)}},Mo=n=>{var u,c,y,m;let e=rr(n.target),o=document.createElement("div");o.className="vanilla-agent-host";let t=(y=(c=(u=n.config)==null?void 0:u.launcher)==null?void 0:c.enabled)!=null?y:!0;t||(o.style.height="100%"),e.appendChild(o);let r=n.useShadowDom===!0,s,i;if(r){let b=o.attachShadow({mode:"open"});i=b,s=document.createElement("div"),s.id="vanilla-agent-root",t||(s.style.height="100%",s.style.display="flex",s.style.flexDirection="column",s.style.flex="1",s.style.minHeight="0"),b.appendChild(s),Wo(b)}else i=o,s=document.createElement("div"),s.id="vanilla-agent-root",t||(s.style.height="100%",s.style.display="flex",s.style.flexDirection="column",s.style.flex="1",s.style.minHeight="0"),o.appendChild(s),Wo(o);let l=Yn(s,n.config,{debugTools:n.debugTools});(m=n.onReady)==null||m.call(n);let d={...l,host:o,destroy(){l.destroy(),o.remove(),n.windowKey&&typeof window!="undefined"&&delete window[n.windowKey]}};return n.windowKey&&typeof window!="undefined"&&(window[n.windowKey]=d),d};function ar(n){if(!n)return null;let e=n.toString();return e.includes("createJsonStreamParser")||e.includes("partial-json")?"json":e.includes("createRegexJsonParser")||e.includes("regex")?"regex-json":e.includes("createXmlParser")||e.includes("<text>")?"xml":null}function bn(n){var e,o;return(o=(e=n.parserType)!=null?e:ar(n.streamParser))!=null?o:"plain"}function lr(n,e="esm"){let o={...n};return delete o.postprocessMessage,delete o.initialMessages,e==="esm"?dr(o):e==="script-installer"?ur(o):e==="script-advanced"?hr(o):e==="react-component"?cr(o):e==="react-advanced"?pr(o):gr(o)}function dr(n){let e=bn(n),o=e!=="plain",t=["import 'vanilla-agent/widget.css';","import { initAgentWidget, markdownPostprocessor } from 'vanilla-agent';","","initAgentWidget({"," target: 'body',"," config: {"];return n.apiUrl&&t.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&t.push(` flowId: "${n.flowId}",`),o&&t.push(` parserType: "${e}",`),n.theme&&(t.push(" theme: {"),Object.entries(n.theme).forEach(([r,s])=>{t.push(` ${r}: "${s}",`)}),t.push(" },")),n.launcher&&(t.push(" launcher: {"),Object.entries(n.launcher).forEach(([r,s])=>{typeof s=="string"?t.push(` ${r}: "${s}",`):typeof s=="boolean"&&t.push(` ${r}: ${s},`)}),t.push(" },")),n.copy&&(t.push(" copy: {"),Object.entries(n.copy).forEach(([r,s])=>{t.push(` ${r}: "${s}",`)}),t.push(" },")),n.sendButton&&(t.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([r,s])=>{typeof s=="string"?t.push(` ${r}: "${s}",`):typeof s=="boolean"&&t.push(` ${r}: ${s},`)}),t.push(" },")),n.voiceRecognition&&(t.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([r,s])=>{typeof s=="string"?t.push(` ${r}: "${s}",`):typeof s=="boolean"?t.push(` ${r}: ${s},`):typeof s=="number"&&t.push(` ${r}: ${s},`)}),t.push(" },")),n.statusIndicator&&(t.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([r,s])=>{typeof s=="string"?t.push(` ${r}: "${s}",`):typeof s=="boolean"&&t.push(` ${r}: ${s},`)}),t.push(" },")),n.features&&(t.push(" features: {"),Object.entries(n.features).forEach(([r,s])=>{t.push(` ${r}: ${s},`)}),t.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(t.push(" suggestionChips: ["),n.suggestionChips.forEach(r=>{t.push(` "${r}",`)}),t.push(" ],")),n.suggestionChipsConfig&&(t.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&t.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&t.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&t.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&t.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),t.push(" },")),n.debug&&t.push(` debug: ${n.debug},`),t.push(" postprocessMessage: ({ text }) => markdownPostprocessor(text)"),t.push(" }"),t.push("});"),t.join(`
|
|
57
|
-
`)}function
|
|
58
|
-
`)}function pr(n){let e=["// ChatWidgetAdvanced.tsx","'use client'; // Required for Next.js - remove for Vite/CRA","","import { useEffect } from 'react';","import 'vanilla-agent/widget.css';","import {"," initAgentWidget,"," createFlexibleJsonStreamParser,"," defaultJsonActionParser,"," defaultActionHandlers,"," markdownPostprocessor","} from 'vanilla-agent';","import type { AgentWidgetInitHandle } from 'vanilla-agent';","","const STORAGE_KEY = 'chat-widget-state';","const PROCESSED_ACTIONS_KEY = 'chat-widget-processed-actions';","","// Types for DOM elements","interface PageElement {"," type: string;"," tagName: string;"," selector: string;"," innerText: string;"," href?: string;","}","","interface DOMContext {"," page_elements: PageElement[];"," page_element_count: number;"," element_types: Record<string, number>;"," page_url: string;"," page_title: string;"," timestamp: string;","}","","// DOM context provider - extracts page elements for AI context","const collectDOMContext = (): DOMContext => {"," const selectors = {",` products: '[data-product-id], .product-card, .product-item, [role="article"]',`,` buttons: 'button, [role="button"], .btn',`," links: 'a[href]',"," inputs: 'input, textarea, select'"," };",""," const elements: PageElement[] = [];"," Object.entries(selectors).forEach(([type, selector]) => {"," document.querySelectorAll(selector).forEach((element) => {"," if (!(element instanceof HTMLElement)) return;"," "," // Exclude elements within the widget"," const widgetHost = element.closest('.vanilla-agent-host');"," if (widgetHost) return;"," "," const text = element.innerText?.trim();"," if (!text) return;",""," const selectorString ="," element.id ? `#${element.id}` :"," element.getAttribute('data-testid') ? `[data-testid=\"${element.getAttribute('data-testid')}\"]` :"," element.getAttribute('data-product-id') ? `[data-product-id=\"${element.getAttribute('data-product-id')}\"]` :"," element.tagName.toLowerCase();",""," const elementData: PageElement = {"," type,"," tagName: element.tagName.toLowerCase(),"," selector: selectorString,"," innerText: text.substring(0, 200)"," };",""," if (type === 'links' && element instanceof HTMLAnchorElement && element.href) {"," elementData.href = element.href;"," }",""," elements.push(elementData);"," });"," });",""," const counts = elements.reduce((acc, el) => {"," acc[el.type] = (acc[el.type] || 0) + 1;"," return acc;"," }, {} as Record<string, number>);",""," return {"," page_elements: elements.slice(0, 50),"," page_element_count: elements.length,"," element_types: counts,"," page_url: window.location.href,"," page_title: document.title,"," timestamp: new Date().toISOString()"," };","};","","export function ChatWidgetAdvanced() {"," useEffect(() => {"," let handle: AgentWidgetInitHandle | null = null;",""," // Load saved state"," const loadSavedMessages = () => {"," const savedState = localStorage.getItem(STORAGE_KEY);"," if (savedState) {"," try {"," const { messages } = JSON.parse(savedState);"," return messages || [];"," } catch (e) {"," console.error('Failed to load saved state:', e);"," }"," }"," return [];"," };",""," handle = initAgentWidget({"," target: 'body',"," config: {"];return n.apiUrl&&e.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&e.push(` flowId: "${n.flowId}",`),n.theme&&(e.push(" theme: {"),Object.entries(n.theme).forEach(([o,t])=>{e.push(` ${o}: "${t}",`)}),e.push(" },")),n.launcher&&(e.push(" launcher: {"),Object.entries(n.launcher).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.copy&&(e.push(" copy: {"),Object.entries(n.copy).forEach(([o,t])=>{e.push(` ${o}: "${t}",`)}),e.push(" },")),n.sendButton&&(e.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.voiceRecognition&&(e.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"?e.push(` ${o}: ${t},`):typeof t=="number"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.statusIndicator&&(e.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.features&&(e.push(" features: {"),Object.entries(n.features).forEach(([o,t])=>{e.push(` ${o}: ${t},`)}),e.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(e.push(" suggestionChips: ["),n.suggestionChips.forEach(o=>{e.push(` "${o}",`)}),e.push(" ],")),n.suggestionChipsConfig&&(e.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&e.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&e.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&e.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&e.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),e.push(" },")),n.debug&&e.push(` debug: ${n.debug},`),e.push(" initialMessages: loadSavedMessages(),"),e.push(" // Flexible JSON stream parser for handling structured actions"),e.push(" streamParser: () => createFlexibleJsonStreamParser((parsed: any) => {"),e.push(" if (!parsed || typeof parsed !== 'object') return null;"),e.push(" // Extract display text based on action type"),e.push(" if (parsed.action === 'nav_then_click') return 'Navigating...';"),e.push(" if (parsed.action === 'message') return parsed.text || '';"),e.push(" if (parsed.action === 'message_and_click') return parsed.text || 'Processing...';"),e.push(" return parsed.text || null;"),e.push(" }),"),e.push(" // Action parsers to detect JSON actions in responses"),e.push(" actionParsers: ["),e.push(" defaultJsonActionParser,"),e.push(" // Custom parser for markdown-wrapped JSON"),e.push(" ({ text, message }: any) => {"),e.push(" const jsonSource = (message as any).rawContent || text || message.content;"),e.push(" if (!jsonSource || typeof jsonSource !== 'string') return null;"),e.push(" // Strip markdown code fences"),e.push(" let cleanJson = jsonSource"),e.push(" .replace(/^```(?:json)?\\s*\\n?/, '')"),e.push(" .replace(/\\n?```\\s*$/, '')"),e.push(" .trim();"),e.push(" if (!cleanJson.startsWith('{') || !cleanJson.endsWith('}')) return null;"),e.push(" try {"),e.push(" const parsed = JSON.parse(cleanJson);"),e.push(" if (parsed.action) return { type: parsed.action, payload: parsed };"),e.push(" } catch (e) { return null; }"),e.push(" return null;"),e.push(" }"),e.push(" ],"),e.push(" // Action handlers for navigation and other actions"),e.push(" actionHandlers: ["),e.push(" defaultActionHandlers.message,"),e.push(" defaultActionHandlers.messageAndClick,"),e.push(" // Handler for nav_then_click action"),e.push(" (action: any, context: any) => {"),e.push(" if (action.type !== 'nav_then_click') return;"),e.push(" const payload = action.payload || action.raw || {};"),e.push(" const url = payload?.page;"),e.push(" const text = payload?.on_load_text || 'Navigating...';"),e.push(" if (!url) return { handled: true, displayText: text };"),e.push(" // Check if already processed"),e.push(" const messageId = context.message?.id;"),e.push(" const processedActions = JSON.parse(localStorage.getItem(PROCESSED_ACTIONS_KEY) || '[]');"),e.push(" const actionKey = `nav_${messageId}_${url}`;"),e.push(" if (processedActions.includes(actionKey)) {"),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" processedActions.push(actionKey);"),e.push(" localStorage.setItem(PROCESSED_ACTIONS_KEY, JSON.stringify(processedActions));"),e.push(" const targetUrl = url.startsWith('http') ? url : new URL(url, window.location.origin).toString();"),e.push(" window.location.href = targetUrl;"),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" ],"),e.push(" postprocessMessage: ({ text }) => markdownPostprocessor(text),"),e.push(" requestMiddleware: ({ payload }) => {"),e.push(" return {"),e.push(" ...payload,"),e.push(" metadata: collectDOMContext()"),e.push(" };"),e.push(" }"),e.push(" }"),e.push(" });"),e.push(""),e.push(" // Save state on message events"),e.push(" const handleMessage = () => {"),e.push(" const session = handle?.getSession?.();"),e.push(" if (session) {"),e.push(" localStorage.setItem(STORAGE_KEY, JSON.stringify({"),e.push(" messages: session.messages,"),e.push(" timestamp: new Date().toISOString()"),e.push(" }));"),e.push(" }"),e.push(" };"),e.push(""),e.push(" // Clear state on clear chat"),e.push(" const handleClearChat = () => {"),e.push(" localStorage.removeItem(STORAGE_KEY);"),e.push(" localStorage.removeItem(PROCESSED_ACTIONS_KEY);"),e.push(" };"),e.push(""),e.push(" window.addEventListener('vanilla-agent:message', handleMessage);"),e.push(" window.addEventListener('vanilla-agent:clear-chat', handleClearChat);"),e.push(""),e.push(" // Cleanup on unmount"),e.push(" return () => {"),e.push(" window.removeEventListener('vanilla-agent:message', handleMessage);"),e.push(" window.removeEventListener('vanilla-agent:clear-chat', handleClearChat);"),e.push(" if (handle) {"),e.push(" handle.destroy();"),e.push(" }"),e.push(" };"),e.push(" }, []);"),e.push(""),e.push(" return null; // Widget injects itself into the DOM"),e.push("}"),e.push(""),e.push("// Usage: Collects DOM context for AI-powered navigation"),e.push("// Features:"),e.push("// - Extracts page elements (products, buttons, links)"),e.push("// - Persists chat history across page loads"),e.push("// - Handles navigation actions (nav_then_click)"),e.push("// - Processes structured JSON actions from AI"),e.push("//"),e.push("// Example usage in Next.js:"),e.push("// import { ChatWidgetAdvanced } from './components/ChatWidgetAdvanced';"),e.push("//"),e.push("// export default function RootLayout({ children }) {"),e.push("// return ("),e.push('// <html lang="en">'),e.push("// <body>"),e.push("// {children}"),e.push("// <ChatWidgetAdvanced />"),e.push("// </body>"),e.push("// </html>"),e.push("// );"),e.push("// }"),e.join(`
|
|
59
|
-
`)}function
|
|
60
|
-
`)}function
|
|
61
|
-
`)}function hr(n){let e=["<!-- Load CSS -->",'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/widget.css" />',"","<!-- Chat Widget Configuration -->","<script>"," window.ChatWidgetConfig = {"];return n.apiUrl&&e.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&e.push(` flowId: "${n.flowId}",`),n.theme&&(e.push(" theme: {"),Object.entries(n.theme).forEach(([o,t])=>{e.push(` ${o}: "${t}",`)}),e.push(" },")),n.launcher&&(e.push(" launcher: {"),Object.entries(n.launcher).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.copy&&(e.push(" copy: {"),Object.entries(n.copy).forEach(([o,t])=>{e.push(` ${o}: "${t}",`)}),e.push(" },")),n.sendButton&&(e.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.voiceRecognition&&(e.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"?e.push(` ${o}: ${t},`):typeof t=="number"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.statusIndicator&&(e.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([o,t])=>{typeof t=="string"?e.push(` ${o}: "${t}",`):typeof t=="boolean"&&e.push(` ${o}: ${t},`)}),e.push(" },")),n.features&&(e.push(" features: {"),Object.entries(n.features).forEach(([o,t])=>{e.push(` ${o}: ${t},`)}),e.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(e.push(" suggestionChips: ["),n.suggestionChips.forEach(o=>{e.push(` "${o}",`)}),e.push(" ],")),e.push(" };"),e.push("</script>"),e.push(""),e.push("<!-- Load the widget library -->"),e.push('<script src="https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/index.global.js"></script>'),e.push(""),e.push("<!-- Chat Widget Script with DOM Helper -->"),e.push("<script>"),e.push(" (function () {"),e.push(" 'use strict';"),e.push(" "),e.push(" const STORAGE_KEY = 'chat-widget-state';"),e.push(" const PROCESSED_ACTIONS_KEY = 'chat-widget-processed-actions';"),e.push(""),e.push(" // DOM context provider - extracts page elements for AI context"),e.push(" const domContextProvider = () => {"),e.push(" const selectors = {"),e.push(` products: '[data-product-id], .product-card, .product-item, [role="article"]',`),e.push(` buttons: 'button, [role="button"], .btn',`),e.push(" links: 'a[href]',"),e.push(" inputs: 'input, textarea, select'"),e.push(" };"),e.push(""),e.push(" const elements = [];"),e.push(" Object.entries(selectors).forEach(([type, selector]) => {"),e.push(" document.querySelectorAll(selector).forEach((element) => {"),e.push(" if (!(element instanceof HTMLElement)) return;"),e.push(" "),e.push(" // Exclude elements within the widget"),e.push(" const widgetHost = element.closest('.vanilla-agent-host');"),e.push(" if (widgetHost) return;"),e.push(" "),e.push(" const text = element.innerText?.trim();"),e.push(" if (!text) return;"),e.push(""),e.push(" const selectorString ="),e.push(" element.id ? `#${element.id}` :"),e.push(" element.getAttribute('data-testid') ? `[data-testid=\"${element.getAttribute('data-testid')}\"]` :"),e.push(" element.getAttribute('data-product-id') ? `[data-product-id=\"${element.getAttribute('data-product-id')}\"]` :"),e.push(" element.tagName.toLowerCase();"),e.push(""),e.push(" const elementData = {"),e.push(" type,"),e.push(" tagName: element.tagName.toLowerCase(),"),e.push(" selector: selectorString,"),e.push(" innerText: text.substring(0, 200)"),e.push(" };"),e.push(""),e.push(" if (type === 'links' && element instanceof HTMLAnchorElement && element.href) {"),e.push(" elementData.href = element.href;"),e.push(" }"),e.push(""),e.push(" elements.push(elementData);"),e.push(" });"),e.push(" });"),e.push(""),e.push(" const counts = elements.reduce((acc, el) => {"),e.push(" acc[el.type] = (acc[el.type] || 0) + 1;"),e.push(" return acc;"),e.push(" }, {});"),e.push(""),e.push(" return {"),e.push(" page_elements: elements.slice(0, 50),"),e.push(" page_element_count: elements.length,"),e.push(" element_types: counts,"),e.push(" page_url: window.location.href,"),e.push(" page_title: document.title,"),e.push(" timestamp: new Date().toISOString()"),e.push(" };"),e.push(" };"),e.push(""),e.push(" const createWidgetConfig = (agentWidget) => ({"),e.push(" ...window.ChatWidgetConfig,"),e.push(" // Flexible JSON stream parser for handling structured actions"),e.push(" streamParser: () => agentWidget.createFlexibleJsonStreamParser((parsed) => {"),e.push(" if (!parsed || typeof parsed !== 'object') return null;"),e.push(" "),e.push(" // Extract display text based on action type"),e.push(" if (parsed.action === 'nav_then_click') {"),e.push(" return 'Navigating...';"),e.push(" } else if (parsed.action === 'message') {"),e.push(" return parsed.text || '';"),e.push(" } else if (parsed.action === 'message_and_click') {"),e.push(" return parsed.text || 'Processing...';"),e.push(" }"),e.push(" "),e.push(" return parsed.text || null;"),e.push(" }),"),e.push(" // Action parsers to detect JSON actions in responses"),e.push(" actionParsers: ["),e.push(" agentWidget.defaultJsonActionParser,"),e.push(" // Custom parser for markdown-wrapped JSON"),e.push(" ({ text, message }) => {"),e.push(" const jsonSource = message.rawContent || text || message.content;"),e.push(" if (!jsonSource || typeof jsonSource !== 'string') return null;"),e.push(" "),e.push(" // Strip markdown code fences"),e.push(" let cleanJson = jsonSource"),e.push(" .replace(/^```(?:json)?\\s*\\n?/, '')"),e.push(" .replace(/\\n?```\\s*$/, '')"),e.push(" .trim();"),e.push(" "),e.push(" if (!cleanJson.startsWith('{') || !cleanJson.endsWith('}')) return null;"),e.push(" "),e.push(" try {"),e.push(" const parsed = JSON.parse(cleanJson);"),e.push(" if (parsed.action) {"),e.push(" return { type: parsed.action, payload: parsed };"),e.push(" }"),e.push(" } catch (e) {"),e.push(" return null;"),e.push(" }"),e.push(" return null;"),e.push(" }"),e.push(" ],"),e.push(" // Action handlers for navigation and other actions"),e.push(" actionHandlers: ["),e.push(" agentWidget.defaultActionHandlers.message,"),e.push(" agentWidget.defaultActionHandlers.messageAndClick,"),e.push(" // Handler for nav_then_click action"),e.push(" (action, context) => {"),e.push(" if (action.type !== 'nav_then_click') return;"),e.push(" "),e.push(" const payload = action.payload || action.raw || {};"),e.push(" const url = payload?.page;"),e.push(" const text = payload?.on_load_text || 'Navigating...';"),e.push(" "),e.push(" if (!url) return { handled: true, displayText: text };"),e.push(" "),e.push(" // Check if already processed"),e.push(" const messageId = context.message?.id;"),e.push(" const processedActions = JSON.parse(localStorage.getItem(PROCESSED_ACTIONS_KEY) || '[]');"),e.push(" const actionKey = `nav_${messageId}_${url}`;"),e.push(" "),e.push(" if (processedActions.includes(actionKey)) {"),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" "),e.push(" processedActions.push(actionKey);"),e.push(" localStorage.setItem(PROCESSED_ACTIONS_KEY, JSON.stringify(processedActions));"),e.push(" "),e.push(" const targetUrl = url.startsWith('http')"),e.push(" ? url"),e.push(" : new URL(url, window.location.origin).toString();"),e.push(" "),e.push(" window.location.href = targetUrl;"),e.push(" "),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" ],"),e.push(" // Send DOM context with each request"),e.push(" requestMiddleware: ({ payload }) => ({"),e.push(" ...payload,"),e.push(" metadata: domContextProvider()"),e.push(" }),"),e.push(" postprocessMessage: ({ text }) => agentWidget.markdownPostprocessor(text)"),e.push(" });"),e.push(""),e.push(" // Initialize widget when DOM is loaded"),e.push(" function init() {"),e.push(" const agentWidget = window.AgentWidget;"),e.push(" if (!agentWidget) {"),e.push(" console.error('AgentWidget not loaded');"),e.push(" return;"),e.push(" }"),e.push(""),e.push(" const widgetConfig = createWidgetConfig(agentWidget);"),e.push(""),e.push(" // Load saved state"),e.push(" const savedState = localStorage.getItem(STORAGE_KEY);"),e.push(" if (savedState) {"),e.push(" try {"),e.push(" const { messages } = JSON.parse(savedState);"),e.push(" widgetConfig.initialMessages = messages || [];"),e.push(" } catch (e) {"),e.push(" console.error('Failed to load saved state:', e);"),e.push(" }"),e.push(" }"),e.push(""),e.push(" // Initialize widget with DOM context"),e.push(" const handle = agentWidget.initAgentWidget({"),e.push(" target: 'body',"),e.push(" useShadowDom: false,"),e.push(" config: widgetConfig"),e.push(" });"),e.push(""),e.push(" // Save state on message events"),e.push(" window.addEventListener('vanilla-agent:message', (event) => {"),e.push(" const session = handle.getSession?.();"),e.push(" if (session) {"),e.push(" localStorage.setItem(STORAGE_KEY, JSON.stringify({"),e.push(" messages: session.messages,"),e.push(" timestamp: new Date().toISOString()"),e.push(" }));"),e.push(" }"),e.push(" });"),e.push(""),e.push(" // Clear state on clear chat"),e.push(" window.addEventListener('vanilla-agent:clear-chat', () => {"),e.push(" localStorage.removeItem(STORAGE_KEY);"),e.push(" localStorage.removeItem(PROCESSED_ACTIONS_KEY);"),e.push(" });"),e.push(" }"),e.push(""),e.push(" // Initialize when DOM is ready"),e.push(" if (document.readyState === 'loading') {"),e.push(" document.addEventListener('DOMContentLoaded', init);"),e.push(" } else {"),e.push(" init();"),e.push(" }"),e.push(" })();"),e.push("</script>"),e.join(`
|
|
62
|
-
`)}var
|
|
60
|
+
`}if(!he){let Ut="max-height: -moz-available !important; max-height: stretch !important;",Jt=a?"":"padding-top: 1.25em !important;";B.style.cssText+=Ut+Jt}};wt(),In(n,t);let Ie=[],ot=Lo(ne),Ue=null,R,dt=!1,Se=!0,Oe=0,te=0,Ae=null,Te=!1,ze=0,Ye=!1,xt=125,Lt=2e3,yt=5,Et=50,St=new Map,ye={active:!1,manuallyDeactivated:!1,lastUserMessageWasVoice:!1},Bt=(ds=(ls=t.voiceRecognition)==null?void 0:ls.autoResume)!=null?ds:!1,ke=a=>{o.emit("voice:state",{active:ye.active,source:a,timestamp:Date.now()})},Je=()=>{f(a=>({...a,voiceState:{active:ye.active,timestamp:Date.now(),manuallyDeactivated:ye.manuallyDeactivated}}))},At=()=>{var O,k;if(((O=t.voiceRecognition)==null?void 0:O.enabled)===!1)return;let a=ts(l.voiceState),p=!!a.active,E=Number((k=a.timestamp)!=null?k:0);ye.manuallyDeactivated=!!a.manuallyDeactivated,p&&Date.now()-E<hr&&setTimeout(()=>{ye.active||(ye.manuallyDeactivated=!1,Ne("restore"))},1e3)},Nt=()=>R?Po(R.getMessages()).filter(a=>!a.__skipPersist):[];function Mt(a){if(!(i!=null&&i.save))return;let E={messages:a?Po(a):R?Nt():[],metadata:l};try{let O=i.save(E);O instanceof Promise&&O.catch(k=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",k)})}catch(O){typeof console!="undefined"&&console.error("[AgentWidget] Failed to persist state:",O)}}let Ot=(a=!1)=>{if(!Se)return;let p=Date.now();Te&&p<ze&&!a||(Te&&p>=ze&&(Te=!1),!(!a&&!dt)&&(p-te<xt||(te=p,Ae&&cancelAnimationFrame(Ae),Ae=requestAnimationFrame(()=>{Te||!Se||(Ye=!0,K.scrollTop=K.scrollHeight,Oe=K.scrollTop,requestAnimationFrame(()=>{Ye=!1}),Ae=null)}))))},Wt=null,gn=()=>B.querySelector("#vanilla-agent-scroll-container")||K,hn=(a,p=500)=>{let E=a.scrollTop,O=a.clientHeight,k=a.scrollHeight,ee=k-E;if(E+O>=k-2||Math.abs(ee)<5)return;Wt!==null&&(cancelAnimationFrame(Wt),Wt=null);let T=performance.now(),G=P=>1-Math.pow(1-P,3),z=P=>{let J=a.scrollHeight;J!==k&&(k=J,ee=k-E);let Le=P-T,he=Math.min(Le/p,1),ae=G(he),Re=E+ee*ae;a.scrollTop=Re,he<1?Wt=requestAnimationFrame(z):(a.scrollTop=a.scrollHeight,Wt=null)};Wt=requestAnimationFrame(z)},mn=a=>{let p=new Map;a.forEach(E=>{let O=St.get(E.id);p.set(E.id,{streaming:E.streaming,role:E.role}),!O&&E.role==="assistant"&&o.emit("assistant:message",E),E.role==="assistant"&&(O!=null&&O.streaming)&&E.streaming===!1&&o.emit("assistant:complete",E)}),St.clear(),p.forEach((E,O)=>{St.set(O,E)})},Dt=(a,p,E)=>{a.innerHTML="";let O=document.createDocumentFragment();p.forEach(T=>{var Le,he;let G=null,z=r.find(ae=>!!(T.variant==="reasoning"&&ae.renderReasoning||T.variant==="tool"&&ae.renderToolCall||!T.variant&&ae.renderMessage)),P=(Le=t.layout)==null?void 0:Le.messages;if(z)if(T.variant==="reasoning"&&T.reasoning&&z.renderReasoning){if(!v)return;G=z.renderReasoning({message:T,defaultRenderer:()=>Dn(T),config:t})}else if(T.variant==="tool"&&T.toolCall&&z.renderToolCall){if(!D)return;G=z.renderToolCall({message:T,defaultRenderer:()=>_n(T,t),config:t})}else z.renderMessage&&(G=z.renderMessage({message:T,defaultRenderer:()=>{let ae=un(T,E,P,t.messageActions,x);return T.role!=="user"&&qn(ae,T,t,R),ae},config:t}));if(!G&&T.role==="assistant"&&!T.variant&&t.enableComponentStreaming!==!1&&Gn(T)){let Re=Zn(T);if(Re){let ct=Vn(Re,{config:t,message:T,transform:E});if(ct){let le=document.createElement("div");if(le.className=["vanilla-message-bubble","tvw-max-w-[85%]","tvw-rounded-2xl","tvw-bg-cw-surface","tvw-border","tvw-border-cw-message-border","tvw-p-4"].join(" "),le.setAttribute("data-message-id",T.id),T.content&&T.content.trim()){let ut=document.createElement("div");ut.className="tvw-mb-3 tvw-text-sm tvw-leading-relaxed",ut.innerHTML=E({text:T.content,message:T,streaming:!!T.streaming,raw:T.rawContent}),le.appendChild(ut)}le.appendChild(ct),G=le}}}if(!G)if(T.variant==="reasoning"&&T.reasoning){if(!v)return;G=Dn(T)}else if(T.variant==="tool"&&T.toolCall){if(!D)return;G=_n(T,t)}else{let ae=(he=t.layout)==null?void 0:he.messages;ae!=null&&ae.renderUserMessage&&T.role==="user"?G=ae.renderUserMessage({message:T,config:t,streaming:!!T.streaming}):ae!=null&&ae.renderAssistantMessage&&T.role==="assistant"?G=ae.renderAssistantMessage({message:T,config:t,streaming:!!T.streaming}):G=un(T,E,ae,t.messageActions,x),T.role!=="user"&&G&&qn(G,T,t,R)}let J=document.createElement("div");J.className="tvw-flex",T.role==="user"&&J.classList.add("tvw-justify-end"),J.appendChild(G),O.appendChild(J)});let k=p.some(T=>T.role==="assistant"&&T.streaming),ee=p[p.length-1],N=(ee==null?void 0:ee.role)==="assistant"&&!ee.streaming;if(dt&&p.some(T=>T.role==="user")&&!k&&!N){let T=Cn(),G=document.createElement("div");G.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(" "),G.appendChild(T);let z=document.createElement("div");z.className="tvw-flex",z.appendChild(G),O.appendChild(z)}a.appendChild(O),requestAnimationFrame(()=>{requestAnimationFrame(()=>{let T=gn();hn(T)})})},jt=()=>{g&&(b?(B.classList.remove("tvw-pointer-events-none","tvw-opacity-0"),j.classList.remove("tvw-scale-95","tvw-opacity-0"),j.classList.add("tvw-scale-100","tvw-opacity-100"),y?y.element.style.display="none":F&&(F.style.display="none")):(B.classList.add("tvw-pointer-events-none","tvw-opacity-0"),j.classList.remove("tvw-scale-100","tvw-opacity-100"),j.classList.add("tvw-scale-95","tvw-opacity-0"),y?y.element.style.display="":F&&(F.style.display="")))},Ke=(a,p="user")=>{if(!g||b===a)return;let E=b;b=a,jt(),b&&(be(),Ot(!0));let O={open:b,source:p,timestamp:Date.now()};b&&!E?o.emit("widget:opened",O):!b&&E&&o.emit("widget:closed",O),o.emit("widget:state",{open:b,launcherEnabled:g,voiceActive:ye.active,streaming:R.isStreaming()})},Yt=a=>{q.disabled=a,H&&(H.disabled=a),ot.buttons.forEach(p=>{p.disabled=a})},nn=()=>{var k,ee,N,T,G,z,P,J,Le,he,ae,Re,ct,le;bt.textContent=(ee=(k=t.copy)==null?void 0:k.welcomeTitle)!=null?ee:"Hello \u{1F44B}",Ct.textContent=(T=(N=t.copy)==null?void 0:N.welcomeSubtitle)!=null?T:"Ask anything about your account or products.",re.placeholder=(z=(G=t.copy)==null?void 0:G.inputPlaceholder)!=null?z:"How can I help...",((J=(P=t.sendButton)==null?void 0:P.useIcon)!=null?J:!1)||(q.textContent=(he=(Le=t.copy)==null?void 0:Le.sendButtonLabel)!=null?he:"Send");let p=(Re=(ae=t.theme)==null?void 0:ae.inputFontFamily)!=null?Re:"sans-serif",E=(le=(ct=t.theme)==null?void 0:ct.inputFontWeight)!=null?le:"400",O=ut=>{switch(ut){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'}};re.style.fontFamily=O(p),re.style.fontWeight=E};R=new an(t,{onMessagesChanged(a){Dt(Q,a,W),R&&(a.some(O=>O.role==="user")?ot.render([],R,re,a):ot.render(t.suggestionChips,R,re,a,t.suggestionChipsConfig)),Ot(!dt),mn(a);let p=[...a].reverse().find(E=>E.role==="user");ye.lastUserMessageWasVoice=!!(p!=null&&p.viaVoice),Mt(a)},onStatusChanged(a){var O;let p=(O=t.statusIndicator)!=null?O:{},E=k=>{var ee,N,T,G;return k==="idle"?(ee=p.idleText)!=null?ee:Xe.idle:k==="connecting"?(N=p.connectingText)!=null?N:Xe.connecting:k==="connected"?(T=p.connectedText)!=null?T:Xe.connected:k==="error"?(G=p.errorText)!=null?G:Xe.error:Xe[k]};nt.textContent=E(a)},onStreamingChanged(a){dt=a,Yt(a),R&&Dt(Q,R.getMessages(),W),a||Ot(!0)}}),c&&c.then(a=>{var p;a&&(a.metadata&&(l=ts(a.metadata),C.syncFromMetadata()),(p=a.messages)!=null&&p.length&&R.hydrateMessages(a.messages))}).catch(a=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to hydrate stored state:",a)});let sn=a=>{a.preventDefault();let p=re.value.trim();p&&(re.value="",R.sendMessage(p))},on=a=>{a.key==="Enter"&&!a.shiftKey&&(a.preventDefault(),q.click())},A=null,V=!1,ie=null,ve=null,Fe=()=>typeof window=="undefined"?null:window.webkitSpeechRecognition||window.SpeechRecognition||null,Ne=(a="user")=>{var ee,N,T,G;if(V||R.isStreaming())return;let p=Fe();if(!p)return;A=new p;let O=(N=((ee=t.voiceRecognition)!=null?ee:{}).pauseDuration)!=null?N:2e3;A.continuous=!0,A.interimResults=!0,A.lang="en-US";let k=re.value;A.onresult=z=>{let P="",J="";for(let he=0;he<z.results.length;he++){let ae=z.results[he],Re=ae[0].transcript;ae.isFinal?P+=Re+" ":J=Re}let Le=k+P+J;re.value=Le,ie&&clearTimeout(ie),(P||J)&&(ie=window.setTimeout(()=>{let he=re.value.trim();he&&A&&V&&(ue(),re.value="",R.sendMessage(he,{viaVoice:!0}))},O))},A.onerror=z=>{z.error!=="no-speech"&&ue()},A.onend=()=>{if(V){let z=re.value.trim();z&&z!==k.trim()&&(re.value="",R.sendMessage(z,{viaVoice:!0})),ue()}};try{if(A.start(),V=!0,ye.active=!0,a!=="system"&&(ye.manuallyDeactivated=!1),ke(a),Je(),H){ve={backgroundColor:H.style.backgroundColor,color:H.style.color,borderColor:H.style.borderColor};let z=(T=t.voiceRecognition)!=null?T:{},P=(G=z.recordingBackgroundColor)!=null?G:"#ef4444",J=z.recordingIconColor,Le=z.recordingBorderColor;if(H.classList.add("tvw-voice-recording"),H.style.backgroundColor=P,J){H.style.color=J;let he=H.querySelector("svg");he&&he.setAttribute("stroke",J)}Le&&(H.style.borderColor=Le),H.setAttribute("aria-label","Stop voice recognition")}}catch{ue("system")}},ue=(a="user")=>{if(V){if(V=!1,ie&&(clearTimeout(ie),ie=null),A){try{A.stop()}catch{}A=null}if(ye.active=!1,ke(a),Je(),H){if(H.classList.remove("tvw-voice-recording"),ve){H.style.backgroundColor=ve.backgroundColor,H.style.color=ve.color,H.style.borderColor=ve.borderColor;let p=H.querySelector("svg");p&&p.setAttribute("stroke",ve.color||"currentColor"),ve=null}H.setAttribute("aria-label","Start voice recognition")}}},$=(a,p)=>{var Re,ct,le,ut,Ht,$t,kt;if(!(typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined")))return null;let O=m("div","tvw-send-button-wrapper"),k=m("button","tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer");k.type="button",k.setAttribute("aria-label","Start voice recognition");let ee=(Re=a==null?void 0:a.iconName)!=null?Re:"mic",N=(ct=p==null?void 0:p.size)!=null?ct:"40px",T=(le=a==null?void 0:a.iconSize)!=null?le:N,G=parseFloat(T)||24,z=(ut=a==null?void 0:a.backgroundColor)!=null?ut:p==null?void 0:p.backgroundColor,P=(Ht=a==null?void 0:a.iconColor)!=null?Ht:p==null?void 0:p.textColor;k.style.width=T,k.style.height=T,k.style.minWidth=T,k.style.minHeight=T,k.style.fontSize="18px",k.style.lineHeight="1";let J=P||"currentColor",Le=ce(ee,G,J,1.5);Le?(k.appendChild(Le),k.style.color=J):(k.textContent="\u{1F3A4}",k.style.color=J),z?k.style.backgroundColor=z:k.classList.add("tvw-bg-cw-primary"),P?k.style.color=P:!P&&!(p!=null&&p.textColor)&&k.classList.add("tvw-text-white"),a!=null&&a.borderWidth&&(k.style.borderWidth=a.borderWidth,k.style.borderStyle="solid"),a!=null&&a.borderColor&&(k.style.borderColor=a.borderColor),a!=null&&a.paddingX&&(k.style.paddingLeft=a.paddingX,k.style.paddingRight=a.paddingX),a!=null&&a.paddingY&&(k.style.paddingTop=a.paddingY,k.style.paddingBottom=a.paddingY),O.appendChild(k);let he=($t=a==null?void 0:a.tooltipText)!=null?$t:"Start voice recognition";if(((kt=a==null?void 0:a.showTooltip)!=null?kt:!1)&&he){let _t=m("div","tvw-send-button-tooltip");_t.textContent=he,O.appendChild(_t)}return{micButton:k,micButtonWrapper:O}},rt=()=>{if(V){let a=re.value.trim();ye.manuallyDeactivated=!0,Je(),ue("user"),a&&(re.value="",R.sendMessage(a))}else ye.manuallyDeactivated=!1,Je(),Ne("user")};H&&(H.addEventListener("click",rt),Ie.push(()=>{ue("system"),H&&H.removeEventListener("click",rt)}));let se=o.on("assistant:complete",()=>{Bt&&(ye.active||ye.manuallyDeactivated||Bt==="assistant"&&!ye.lastUserMessageWasVoice||setTimeout(()=>{!ye.active&&!ye.manuallyDeactivated&&Ne("auto")},600))});Ie.push(se);let M=()=>{Ke(!b,"user")},y=null,F=null;if(g){let a=r.find(p=>p.renderLauncher);if(a!=null&&a.renderLauncher){let p=a.renderLauncher({config:t,defaultRenderer:()=>ln(t,M).element,onToggle:M});p&&(F=p)}F||(y=ln(t,M))}y?n.appendChild(y.element):F&&n.appendChild(F),jt(),ot.render(t.suggestionChips,R,re,void 0,t.suggestionChipsConfig),nn(),Yt(R.isStreaming()),Ot(!0),At();let be=()=>{var E,O,k,ee,N,T,G,z;let a=(O=(E=t.launcher)==null?void 0:E.sidebarMode)!=null?O:!1,p=a||((ee=(k=t.launcher)==null?void 0:k.fullHeight)!=null?ee:!1);if(!g){j.style.height="",j.style.width="";return}if(!a){let P=(T=(N=t==null?void 0:t.launcher)==null?void 0:N.width)!=null?T:t==null?void 0:t.launcherWidth,J=P!=null?P:"min(400px, calc(100vw - 24px))";j.style.width=J,j.style.maxWidth=J}if(!p){let P=window.innerHeight,J=64,Le=(z=(G=t.launcher)==null?void 0:G.heightOffset)!=null?z:0,he=Math.max(200,P-J),ae=Math.min(640,he),Re=Math.max(200,ae-Le);j.style.height=`${Re}px`}};be(),window.addEventListener("resize",be),Ie.push(()=>window.removeEventListener("resize",be)),Oe=K.scrollTop;let Ee=()=>{let a=K.scrollTop,p=K.scrollHeight,E=K.clientHeight,O=p-a-E,k=Math.abs(a-Oe);if(Oe=a,!Ye&&!(k<=yt)){if(!Se&&O<Et){Te=!1,Se=!0;return}Se&&O>Et&&(Te=!0,ze=Date.now()+Lt,Se=!1)}};K.addEventListener("scroll",Ee,{passive:!0}),Ie.push(()=>K.removeEventListener("scroll",Ee)),Ie.push(()=>{Ae&&cancelAnimationFrame(Ae)});let Ze=()=>{Y&&(Ue&&(Y.removeEventListener("click",Ue),Ue=null),g?(Y.style.display="",Ue=()=>{b=!1,jt()},Y.addEventListener("click",Ue)):Y.style.display="none")};Ze(),(()=>{let{clearChatButton:a}=Z;a&&a.addEventListener("click",()=>{R.clearMessages();try{localStorage.removeItem(Gt),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Gt}`)}catch(E){console.error("[AgentWidget] Failed to clear default localStorage:",E)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==Gt)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(E){console.error("[AgentWidget] Failed to clear custom localStorage:",E)}let p=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(p),i!=null&&i.clear)try{let E=i.clear();E instanceof Promise&&E.catch(O=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",O)})}catch(E){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",E)}l={},C.syncFromMetadata()})})(),Ve.addEventListener("submit",sn),re.addEventListener("keydown",on),Ie.push(()=>{Ve.removeEventListener("submit",sn),re.removeEventListener("keydown",on)}),Ie.push(()=>{R.cancel()}),y?Ie.push(()=>{y==null||y.destroy()}):F&&Ie.push(()=>{F==null||F.remove()});let Ce={update(a){var rn,Ut,Jt,us,ps,gs,hs,ms,fs,ws,ys,vs,bs,Cs,xs,Ss,As,Ts,Es,Ms,Ws,ks,Ls,Bs,Hs,$s,Ps,Rs,Is,Fs,Ns,Os,Ds,js,_s,qs,Us,zs,Ys,Js,Ks,Xs,Vs,Gs,Zs,Qs,eo,to,no,so,oo,ro,io,ao,lo,co,uo;let p=t.toolCall;t={...t,...a},wt(),In(n,t);let E=xn.getForInstance(t.plugins);if(r.length=0,r.push(...E),g=(Ut=(rn=t.launcher)==null?void 0:rn.enabled)!=null?Ut:!0,U=(us=(Jt=t.launcher)==null?void 0:Jt.autoExpand)!=null?us:!1,v=(gs=(ps=t.features)==null?void 0:ps.showReasoning)!=null?gs:!0,D=(ms=(hs=t.features)==null?void 0:hs.showToolCalls)!=null?ms:!0,((fs=t.launcher)==null?void 0:fs.enabled)===!1&&y&&(y.destroy(),y=null),((ws=t.launcher)==null?void 0:ws.enabled)===!1&&F&&(F.remove(),F=null),((ys=t.launcher)==null?void 0:ys.enabled)!==!1&&!y&&!F){let L=r.find(we=>we.renderLauncher);if(L!=null&&L.renderLauncher){let we=L.renderLauncher({config:t,defaultRenderer:()=>ln(t,M).element,onToggle:M});we&&(F=we,n.appendChild(F))}F||(y=ln(t,M),n.appendChild(y.element))}y&&y.update(t),mt&&((vs=t.launcher)==null?void 0:vs.title)!==void 0&&(mt.textContent=t.launcher.title),ft&&((bs=t.launcher)==null?void 0:bs.subtitle)!==void 0&&(ft.textContent=t.launcher.subtitle),g!==h?g?Ke(U,"auto"):(b=!0,jt()):U!==I&&Ke(U,"auto"),I=U,h=g,be(),Ze(),JSON.stringify(a.toolCall)!==JSON.stringify(p)&&R&&Dt(Q,R.getMessages(),W);let N=(Cs=t.launcher)!=null?Cs:{},T=(xs=N.headerIconHidden)!=null?xs:!1,G=N.headerIconName,z=(Ss=N.headerIconSize)!=null?Ss:"48px";if(fe){let L=_.querySelector(".tvw-border-b-cw-divider"),we=L==null?void 0:L.querySelector(".tvw-flex-col");if(T)fe.style.display="none",L&&we&&!L.contains(we)&&L.insertBefore(we,L.firstChild);else{if(fe.style.display="",fe.style.height=z,fe.style.width=z,L&&we&&(L.contains(fe)?fe.nextSibling!==we&&(fe.remove(),L.insertBefore(fe,we)):L.insertBefore(fe,we)),G){let We=parseFloat(z)||24,xe=ce(G,We*.6,"#ffffff",2);xe?fe.replaceChildren(xe):fe.textContent=(As=N.agentIconText)!=null?As:"\u{1F4AC}"}else if(N.iconUrl){let We=fe.querySelector("img");if(We)We.src=N.iconUrl,We.style.height=z,We.style.width=z;else{let xe=document.createElement("img");xe.src=N.iconUrl,xe.alt="",xe.className="tvw-rounded-xl tvw-object-cover",xe.style.height=z,xe.style.width=z,fe.replaceChildren(xe)}}else{let We=fe.querySelector("svg"),xe=fe.querySelector("img");(We||xe)&&fe.replaceChildren(),fe.textContent=(Ts=N.agentIconText)!=null?Ts:"\u{1F4AC}"}let oe=fe.querySelector("img");oe&&(oe.style.height=z,oe.style.width=z)}}if(Y){let L=(Es=N.closeButtonSize)!=null?Es:"32px",we=(Ms=N.closeButtonPlacement)!=null?Ms:"inline";Y.style.height=L,Y.style.width=L;let{closeButtonWrapper:oe}=Z,We=we==="top-right",xe=oe==null?void 0:oe.classList.contains("tvw-absolute");if(oe&&We!==xe)if(oe.remove(),We)oe.className="tvw-absolute tvw-top-4 tvw-right-4 tvw-z-50",_.style.position="relative",_.appendChild(oe);else{let me=(ks=(Ws=N.clearChat)==null?void 0:Ws.placement)!=null?ks:"inline",et=(Bs=(Ls=N.clearChat)==null?void 0:Ls.enabled)!=null?Bs:!0;oe.className=et&&me==="inline"?"":"tvw-ml-auto";let tt=_.querySelector(".tvw-border-b-cw-divider");tt&&tt.appendChild(oe)}if(N.closeButtonColor?(Y.style.color=N.closeButtonColor,Y.classList.remove("tvw-text-cw-muted")):(Y.style.color="",Y.classList.add("tvw-text-cw-muted")),N.closeButtonBackgroundColor?(Y.style.backgroundColor=N.closeButtonBackgroundColor,Y.classList.remove("hover:tvw-bg-gray-100")):(Y.style.backgroundColor="",Y.classList.add("hover:tvw-bg-gray-100")),N.closeButtonBorderWidth||N.closeButtonBorderColor){let me=N.closeButtonBorderWidth||"0px",et=N.closeButtonBorderColor||"transparent";Y.style.border=`${me} solid ${et}`,Y.classList.remove("tvw-border-none")}else Y.style.border="",Y.classList.add("tvw-border-none");N.closeButtonBorderRadius?(Y.style.borderRadius=N.closeButtonBorderRadius,Y.classList.remove("tvw-rounded-full")):(Y.style.borderRadius="",Y.classList.add("tvw-rounded-full")),N.closeButtonPaddingX?(Y.style.paddingLeft=N.closeButtonPaddingX,Y.style.paddingRight=N.closeButtonPaddingX):(Y.style.paddingLeft="",Y.style.paddingRight=""),N.closeButtonPaddingY?(Y.style.paddingTop=N.closeButtonPaddingY,Y.style.paddingBottom=N.closeButtonPaddingY):(Y.style.paddingTop="",Y.style.paddingBottom="");let Qe=(Hs=N.closeButtonIconName)!=null?Hs:"x",_e=($s=N.closeButtonIconText)!=null?$s:"\xD7";Y.innerHTML="";let gt=ce(Qe,"20px",N.closeButtonColor||"",2);gt?Y.appendChild(gt):Y.textContent=_e;let Ft=(Ps=N.closeButtonTooltipText)!=null?Ps:"Close chat",Me=(Rs=N.closeButtonShowTooltip)!=null?Rs:!0;if(Y.setAttribute("aria-label",Ft),oe&&(oe._cleanupTooltip&&(oe._cleanupTooltip(),delete oe._cleanupTooltip),Me&&Ft)){let me=null,et=()=>{if(me||!Y)return;me=m("div","tvw-clear-chat-tooltip"),me.textContent=Ft;let Kt=m("div");Kt.className="tvw-clear-chat-tooltip-arrow",me.appendChild(Kt);let Mn=Y.getBoundingClientRect();me.style.position="fixed",me.style.left=`${Mn.left+Mn.width/2}px`,me.style.top=`${Mn.top-8}px`,me.style.transform="translate(-50%, -100%)",document.body.appendChild(me)},tt=()=>{me&&me.parentNode&&(me.parentNode.removeChild(me),me=null)};oe.addEventListener("mouseenter",et),oe.addEventListener("mouseleave",tt),Y.addEventListener("focus",et),Y.addEventListener("blur",tt),oe._cleanupTooltip=()=>{tt(),oe&&(oe.removeEventListener("mouseenter",et),oe.removeEventListener("mouseleave",tt)),Y&&(Y.removeEventListener("focus",et),Y.removeEventListener("blur",tt))}}}let{clearChatButton:P,clearChatButtonWrapper:J}=Z;if(P){let L=(Is=N.clearChat)!=null?Is:{},we=(Fs=L.enabled)!=null?Fs:!0,oe=(Ns=L.placement)!=null?Ns:"inline";if(J){J.style.display=we?"":"none";let We=oe==="top-right",xe=J.classList.contains("tvw-absolute");if(We!==xe&&we){if(J.remove(),We)J.className="tvw-absolute tvw-top-4 tvw-z-50",J.style.right="48px",_.style.position="relative",_.appendChild(J);else{J.className="tvw-relative tvw-ml-auto tvw-clear-chat-button-wrapper",J.style.right="";let _e=_.querySelector(".tvw-border-b-cw-divider"),gt=Z.closeButtonWrapper;_e&>&>.parentElement===_e?_e.insertBefore(J,gt):_e&&_e.appendChild(J)}let Qe=Z.closeButtonWrapper;Qe&&!Qe.classList.contains("tvw-absolute")&&(We?Qe.classList.add("tvw-ml-auto"):Qe.classList.remove("tvw-ml-auto"))}}if(we){let We=(Os=L.size)!=null?Os:"32px";P.style.height=We,P.style.width=We;let xe=(Ds=L.iconName)!=null?Ds:"refresh-cw",Qe=(js=L.iconColor)!=null?js:"";P.innerHTML="";let _e=ce(xe,"20px",Qe||"",2);if(_e&&P.appendChild(_e),Qe?(P.style.color=Qe,P.classList.remove("tvw-text-cw-muted")):(P.style.color="",P.classList.add("tvw-text-cw-muted")),L.backgroundColor?(P.style.backgroundColor=L.backgroundColor,P.classList.remove("hover:tvw-bg-gray-100")):(P.style.backgroundColor="",P.classList.add("hover:tvw-bg-gray-100")),L.borderWidth||L.borderColor){let Me=L.borderWidth||"0px",me=L.borderColor||"transparent";P.style.border=`${Me} solid ${me}`,P.classList.remove("tvw-border-none")}else P.style.border="",P.classList.add("tvw-border-none");L.borderRadius?(P.style.borderRadius=L.borderRadius,P.classList.remove("tvw-rounded-full")):(P.style.borderRadius="",P.classList.add("tvw-rounded-full")),L.paddingX?(P.style.paddingLeft=L.paddingX,P.style.paddingRight=L.paddingX):(P.style.paddingLeft="",P.style.paddingRight=""),L.paddingY?(P.style.paddingTop=L.paddingY,P.style.paddingBottom=L.paddingY):(P.style.paddingTop="",P.style.paddingBottom="");let gt=(_s=L.tooltipText)!=null?_s:"Clear chat",Ft=(qs=L.showTooltip)!=null?qs:!0;if(P.setAttribute("aria-label",gt),J&&(J._cleanupTooltip&&(J._cleanupTooltip(),delete J._cleanupTooltip),Ft&>)){let Me=null,me=()=>{if(Me||!P)return;Me=m("div","tvw-clear-chat-tooltip"),Me.textContent=gt;let tt=m("div");tt.className="tvw-clear-chat-tooltip-arrow",Me.appendChild(tt);let Kt=P.getBoundingClientRect();Me.style.position="fixed",Me.style.left=`${Kt.left+Kt.width/2}px`,Me.style.top=`${Kt.top-8}px`,Me.style.transform="translate(-50%, -100%)",document.body.appendChild(Me)},et=()=>{Me&&Me.parentNode&&(Me.parentNode.removeChild(Me),Me=null)};J.addEventListener("mouseenter",me),J.addEventListener("mouseleave",et),P.addEventListener("focus",me),P.addEventListener("blur",et),J._cleanupTooltip=()=>{et(),J&&(J.removeEventListener("mouseenter",me),J.removeEventListener("mouseleave",et)),P&&(P.removeEventListener("focus",me),P.removeEventListener("blur",et))}}}}let Le=t.actionParsers&&t.actionParsers.length?t.actionParsers:[Sn],he=t.actionHandlers&&t.actionHandlers.length?t.actionHandlers:[Vt.message,Vt.messageAndClick];C=An({parsers:Le,handlers:he,getMetadata:d,updateMetadata:f,emit:o.emit,documentRef:typeof document!="undefined"?document:null}),W=Ro(t,C),R.updateConfig(t),Dt(Q,R.getMessages(),W),ot.render(t.suggestionChips,R,re,void 0,t.suggestionChipsConfig),nn(),Yt(R.isStreaming());let ae=((Us=t.voiceRecognition)==null?void 0:Us.enabled)===!0,Re=typeof window!="undefined"&&(typeof window.webkitSpeechRecognition!="undefined"||typeof window.SpeechRecognition!="undefined"),ct=ae&ℜif(Ve.classList.remove("tvw-gap-1","tvw-gap-3"),Ve.classList.add(ct?"tvw-gap-1":"tvw-gap-3"),ae&&Re)if(!H||!He){let L=$(t.voiceRecognition,t.sendButton);L&&(H=L.micButton,He=L.micButtonWrapper,Ve.insertBefore(He,qe),H.addEventListener("click",rt),H.disabled=R.isStreaming())}else{let L=(zs=t.voiceRecognition)!=null?zs:{},we=(Ys=t.sendButton)!=null?Ys:{},oe=(Js=L.iconName)!=null?Js:"mic",We=(Ks=we.size)!=null?Ks:"40px",xe=(Xs=L.iconSize)!=null?Xs:We,Qe=parseFloat(xe)||24;H.style.width=xe,H.style.height=xe,H.style.minWidth=xe,H.style.minHeight=xe;let _e=(Gs=(Vs=L.iconColor)!=null?Vs:we.textColor)!=null?Gs:"currentColor";H.innerHTML="";let gt=ce(oe,Qe,_e,2);gt?H.appendChild(gt):H.textContent="\u{1F3A4}";let Ft=(Zs=L.backgroundColor)!=null?Zs:we.backgroundColor;Ft?(H.style.backgroundColor=Ft,H.classList.remove("tvw-bg-cw-primary")):(H.style.backgroundColor="",H.classList.add("tvw-bg-cw-primary")),_e?(H.style.color=_e,H.classList.remove("tvw-text-white")):!_e&&!we.textColor&&(H.style.color="",H.classList.add("tvw-text-white")),L.borderWidth?(H.style.borderWidth=L.borderWidth,H.style.borderStyle="solid"):(H.style.borderWidth="",H.style.borderStyle=""),L.borderColor?H.style.borderColor=L.borderColor:H.style.borderColor="",L.paddingX?(H.style.paddingLeft=L.paddingX,H.style.paddingRight=L.paddingX):(H.style.paddingLeft="",H.style.paddingRight=""),L.paddingY?(H.style.paddingTop=L.paddingY,H.style.paddingBottom=L.paddingY):(H.style.paddingTop="",H.style.paddingBottom="");let Me=He==null?void 0:He.querySelector(".tvw-send-button-tooltip"),me=(Qs=L.tooltipText)!=null?Qs:"Start voice recognition";if(((eo=L.showTooltip)!=null?eo:!1)&&me)if(Me)Me.textContent=me,Me.style.display="";else{let tt=document.createElement("div");tt.className="tvw-send-button-tooltip",tt.textContent=me,He==null||He.insertBefore(tt,H)}else Me&&(Me.style.display="none");He.style.display="",H.disabled=R.isStreaming()}else H&&He&&(He.style.display="none",V&&ue());let le=(to=t.sendButton)!=null?to:{},ut=(no=le.useIcon)!=null?no:!1,Ht=(so=le.iconText)!=null?so:"\u2191",$t=le.iconName,kt=(oo=le.tooltipText)!=null?oo:"Send message",_t=(ro=le.showTooltip)!=null?ro:!1,Pt=(io=le.size)!=null?io:"40px",qt=le.backgroundColor,pt=le.textColor;if(ut){if(q.style.width=Pt,q.style.height=Pt,q.style.minWidth=Pt,q.style.minHeight=Pt,q.style.fontSize="18px",q.style.lineHeight="1",q.innerHTML="",$t){let L=parseFloat(Pt)||24,we=pt&&typeof pt=="string"&&pt.trim()?pt.trim():"currentColor",oe=ce($t,L,we,2);oe?(q.appendChild(oe),q.style.color=we):(q.textContent=Ht,pt?q.style.color=pt:q.classList.add("tvw-text-white"))}else q.textContent=Ht,pt?q.style.color=pt:q.classList.add("tvw-text-white");q.className="tvw-rounded-button tvw-flex tvw-items-center tvw-justify-center disabled:tvw-opacity-50 tvw-cursor-pointer",qt?(q.style.backgroundColor=qt,q.classList.remove("tvw-bg-cw-primary")):q.classList.add("tvw-bg-cw-primary")}else q.textContent=(lo=(ao=t.copy)==null?void 0:ao.sendButtonLabel)!=null?lo:"Send",q.style.width="",q.style.height="",q.style.minWidth="",q.style.minHeight="",q.style.fontSize="",q.style.lineHeight="",q.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",qt?(q.style.backgroundColor=qt,q.classList.remove("tvw-bg-cw-accent")):q.classList.add("tvw-bg-cw-accent"),pt?q.style.color=pt:q.classList.add("tvw-text-white");le.borderWidth?(q.style.borderWidth=le.borderWidth,q.style.borderStyle="solid"):(q.style.borderWidth="",q.style.borderStyle=""),le.borderColor?q.style.borderColor=le.borderColor:q.style.borderColor="",le.paddingX?(q.style.paddingLeft=le.paddingX,q.style.paddingRight=le.paddingX):(q.style.paddingLeft="",q.style.paddingRight=""),le.paddingY?(q.style.paddingTop=le.paddingY,q.style.paddingBottom=le.paddingY):(q.style.paddingTop="",q.style.paddingBottom="");let Rt=qe==null?void 0:qe.querySelector(".tvw-send-button-tooltip");if(_t&&kt)if(Rt)Rt.textContent=kt,Rt.style.display="";else{let L=document.createElement("div");L.className="tvw-send-button-tooltip",L.textContent=kt,qe==null||qe.insertBefore(L,q)}else Rt&&(Rt.style.display="none");let It=(co=t.statusIndicator)!=null?co:{},fn=(uo=It.visible)!=null?uo:!0;if(nt.style.display=fn?"":"none",R){let L=R.getStatus(),we=oe=>{var We,xe,Qe,_e;return oe==="idle"?(We=It.idleText)!=null?We:Xe.idle:oe==="connecting"?(xe=It.connectingText)!=null?xe:Xe.connecting:oe==="connected"?(Qe=It.connectedText)!=null?Qe:Xe.connected:oe==="error"?(_e=It.errorText)!=null?_e:Xe.error:Xe[oe]};nt.textContent=we(L)}},open(){g&&Ke(!0,"api")},close(){g&&Ke(!1,"api")},toggle(){g&&Ke(!b,"api")},clearChat(){R.clearMessages();try{localStorage.removeItem(Gt),t.debug&&console.log(`[AgentWidget] Cleared default localStorage key: ${Gt}`)}catch(p){console.error("[AgentWidget] Failed to clear default localStorage:",p)}if(t.clearChatHistoryStorageKey&&t.clearChatHistoryStorageKey!==Gt)try{localStorage.removeItem(t.clearChatHistoryStorageKey),t.debug&&console.log(`[AgentWidget] Cleared custom localStorage key: ${t.clearChatHistoryStorageKey}`)}catch(p){console.error("[AgentWidget] Failed to clear custom localStorage:",p)}let a=new CustomEvent("vanilla-agent:clear-chat",{detail:{timestamp:new Date().toISOString()}});if(window.dispatchEvent(a),i!=null&&i.clear)try{let p=i.clear();p instanceof Promise&&p.catch(E=>{typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",E)})}catch(p){typeof console!="undefined"&&console.error("[AgentWidget] Failed to clear storage adapter:",p)}l={},C.syncFromMetadata()},setMessage(a){return!re||R.isStreaming()?!1:(!b&&g&&Ke(!0,"system"),re.value=a,re.dispatchEvent(new Event("input",{bubbles:!0})),!0)},submitMessage(a){if(R.isStreaming())return!1;let p=(a==null?void 0:a.trim())||re.value.trim();return p?(!b&&g&&Ke(!0,"system"),re.value="",R.sendMessage(p),!0):!1},startVoiceRecognition(){return V||R.isStreaming()||!Fe()?!1:(!b&&g&&Ke(!0,"system"),ye.manuallyDeactivated=!1,Je(),Ne("user"),!0)},stopVoiceRecognition(){return V?(ye.manuallyDeactivated=!0,Je(),ue("user"),!0):!1},injectTestMessage(a){!b&&g&&Ke(!0,"system"),R.injectTestEvent(a)},getMessages(){return R.getMessages()},getStatus(){return R.getStatus()},getPersistentMetadata(){return{...l}},updatePersistentMetadata(a){f(a)},on(a,p){return o.on(a,p)},off(a,p){o.off(a,p)},isOpen(){return g&&b},isVoiceActive(){return ye.active},getState(){return{open:g&&b,launcherEnabled:g,voiceActive:ye.active,streaming:R.isStreaming()}},showCSATFeedback(a){!b&&g&&Ke(!0,"system");let p=Q.querySelector(".tvw-feedback-container");p&&p.remove();let E=Qn({onSubmit:async(O,k)=>{var ee;R.isClientTokenMode()&&await R.submitCSATFeedback(O,k),(ee=a==null?void 0:a.onSubmit)==null||ee.call(a,O,k)},onDismiss:a==null?void 0:a.onDismiss,...a});Q.appendChild(E),E.scrollIntoView({behavior:"smooth",block:"end"})},showNPSFeedback(a){!b&&g&&Ke(!0,"system");let p=Q.querySelector(".tvw-feedback-container");p&&p.remove();let E=es({onSubmit:async(O,k)=>{var ee;R.isClientTokenMode()&&await R.submitNPSFeedback(O,k),(ee=a==null?void 0:a.onSubmit)==null||ee.call(a,O,k)},onDismiss:a==null?void 0:a.onDismiss,...a});Q.appendChild(E),E.scrollIntoView({behavior:"smooth",block:"end"})},async submitCSATFeedback(a,p){return R.submitCSATFeedback(a,p)},async submitNPSFeedback(a,p){return R.submitNPSFeedback(a,p)},destroy(){Ie.forEach(a=>a()),B.remove(),y==null||y.destroy(),F==null||F.remove(),Ue&&Y.removeEventListener("click",Ue)}};if((((cs=s==null?void 0:s.debugTools)!=null?cs:!1)||!!t.debug)&&typeof window!="undefined"){let a=window.AgentWidgetBrowser,p={controller:Ce,getMessages:Ce.getMessages,getStatus:Ce.getStatus,getMetadata:Ce.getPersistentMetadata,updateMetadata:Ce.updatePersistentMetadata,clearHistory:()=>Ce.clearChat(),setVoiceActive:E=>E?Ce.startVoiceRecognition():Ce.stopVoiceRecognition()};window.AgentWidgetBrowser=p,Ie.push(()=>{window.AgentWidgetBrowser===p&&(window.AgentWidgetBrowser=a)})}return Ce};var ss={},mr=n=>{if(typeof window=="undefined"||typeof document=="undefined")throw new Error("Chat widget can only be mounted in a browser environment");if(typeof n=="string"){let e=document.querySelector(n);if(!e)throw new Error(`Chat widget target "${n}" was not found`);return e}return n},fr=()=>{try{if(typeof ss!="undefined"&&ss.url)return new URL("../widget.css",ss.url).href}catch{}return null},Io=n=>{let e=fr(),s=()=>{if(!(n instanceof ShadowRoot)||n.querySelector("link[data-vanilla-agent]"))return;let t=document.head.querySelector("link[data-vanilla-agent]");if(!t)return;let r=t.cloneNode(!0);n.insertBefore(r,n.firstChild)};if(n instanceof ShadowRoot)if(e){let t=document.createElement("link");t.rel="stylesheet",t.href=e,t.setAttribute("data-vanilla-agent","true"),n.insertBefore(t,n.firstChild)}else s();else if(!document.head.querySelector("link[data-vanilla-agent]")&&e){let r=document.createElement("link");r.rel="stylesheet",r.href=e,r.setAttribute("data-vanilla-agent","true"),document.head.appendChild(r)}},Fo=n=>{var d,f,w,u;let e=mr(n.target),s=document.createElement("div");s.className="vanilla-agent-host";let t=(w=(f=(d=n.config)==null?void 0:d.launcher)==null?void 0:f.enabled)!=null?w:!0;t||(s.style.height="100%"),e.appendChild(s);let r=n.useShadowDom===!0,o,i;if(r){let C=s.attachShadow({mode:"open"});i=C,o=document.createElement("div"),o.id="vanilla-agent-root",t||(o.style.height="100%",o.style.display="flex",o.style.flexDirection="column",o.style.flex="1",o.style.minHeight="0"),C.appendChild(o),Io(C)}else i=s,o=document.createElement("div"),o.id="vanilla-agent-root",t||(o.style.height="100%",o.style.display="flex",o.style.flexDirection="column",o.style.flex="1",o.style.minHeight="0"),s.appendChild(o),Io(s);let l=ns(o,n.config,{debugTools:n.debugTools});(u=n.onReady)==null||u.call(n);let c={...l,host:s,destroy(){l.destroy(),s.remove(),n.windowKey&&typeof window!="undefined"&&delete window[n.windowKey]}};return n.windowKey&&typeof window!="undefined"&&(window[n.windowKey]=c),c};function wr(n){if(!n)return null;let e=n.toString();return e.includes("createJsonStreamParser")||e.includes("partial-json")?"json":e.includes("createRegexJsonParser")||e.includes("regex")?"regex-json":e.includes("createXmlParser")||e.includes("<text>")?"xml":null}function Tn(n){var e,s;return(s=(e=n.parserType)!=null?e:wr(n.streamParser))!=null?s:"plain"}function Zt(n,e){let s=[];return n.toolCall&&(s.push(`${e}toolCall: {`),Object.entries(n.toolCall).forEach(([t,r])=>{typeof r=="string"&&s.push(`${e} ${t}: "${r}",`)}),s.push(`${e}},`)),s}function Qt(n,e){let s=[];return n.messageActions&&Object.entries(n.messageActions).some(([r,o])=>r!=="onFeedback"&&r!=="onCopy"&&o!==void 0)&&(s.push(`${e}messageActions: {`),Object.entries(n.messageActions).forEach(([r,o])=>{r==="onFeedback"||r==="onCopy"||(typeof o=="string"?s.push(`${e} ${r}: "${o}",`):typeof o=="boolean"&&s.push(`${e} ${r}: ${o},`))}),s.push(`${e}},`)),s}function en(n,e){let s=[];if(n.markdown){let t=n.markdown.options&&Object.keys(n.markdown.options).length>0,r=n.markdown.disableDefaultStyles!==void 0;(t||r)&&(s.push(`${e}markdown: {`),t&&(s.push(`${e} options: {`),Object.entries(n.markdown.options).forEach(([o,i])=>{typeof i=="string"?s.push(`${e} ${o}: "${i}",`):typeof i=="boolean"&&s.push(`${e} ${o}: ${i},`)}),s.push(`${e} },`)),r&&s.push(`${e} disableDefaultStyles: ${n.markdown.disableDefaultStyles},`),s.push(`${e}},`))}return s}function tn(n,e){let s=[];if(n.layout){let t=n.layout.header&&Object.keys(n.layout.header).some(o=>o!=="render"),r=n.layout.messages&&Object.keys(n.layout.messages).some(o=>o!=="renderUserMessage"&&o!=="renderAssistantMessage");(t||r)&&(s.push(`${e}layout: {`),t&&(s.push(`${e} header: {`),Object.entries(n.layout.header).forEach(([o,i])=>{o!=="render"&&(typeof i=="string"?s.push(`${e} ${o}: "${i}",`):typeof i=="boolean"&&s.push(`${e} ${o}: ${i},`))}),s.push(`${e} },`)),r&&(s.push(`${e} messages: {`),Object.entries(n.layout.messages).forEach(([o,i])=>{o==="renderUserMessage"||o==="renderAssistantMessage"||(o==="avatar"&&typeof i=="object"&&i!==null?(s.push(`${e} avatar: {`),Object.entries(i).forEach(([l,c])=>{typeof c=="string"?s.push(`${e} ${l}: "${c}",`):typeof c=="boolean"&&s.push(`${e} ${l}: ${c},`)}),s.push(`${e} },`)):o==="timestamp"&&typeof i=="object"&&i!==null?Object.entries(i).some(([c])=>c!=="format")&&(s.push(`${e} timestamp: {`),Object.entries(i).forEach(([c,d])=>{c!=="format"&&(typeof d=="string"?s.push(`${e} ${c}: "${d}",`):typeof d=="boolean"&&s.push(`${e} ${c}: ${d},`))}),s.push(`${e} },`)):typeof i=="string"?s.push(`${e} ${o}: "${i}",`):typeof i=="boolean"&&s.push(`${e} ${o}: ${i},`))}),s.push(`${e} },`)),s.push(`${e}},`))}return s}function yr(n,e="esm"){let s={...n};return delete s.postprocessMessage,delete s.initialMessages,e==="esm"?vr(s):e==="script-installer"?xr(s):e==="script-advanced"?Ar(s):e==="react-component"?br(s):e==="react-advanced"?Cr(s):Sr(s)}function vr(n){let e=Tn(n),s=e!=="plain",t=["import 'vanilla-agent/widget.css';","import { initAgentWidget, markdownPostprocessor } from 'vanilla-agent';","","initAgentWidget({"," target: 'body',"," config: {"];return n.apiUrl&&t.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&t.push(` flowId: "${n.flowId}",`),s&&t.push(` parserType: "${e}",`),n.theme&&(t.push(" theme: {"),Object.entries(n.theme).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.launcher&&(t.push(" launcher: {"),Object.entries(n.launcher).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.copy&&(t.push(" copy: {"),Object.entries(n.copy).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.sendButton&&(t.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.voiceRecognition&&(t.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"?t.push(` ${r}: ${o},`):typeof o=="number"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.statusIndicator&&(t.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.features&&(t.push(" features: {"),Object.entries(n.features).forEach(([r,o])=>{t.push(` ${r}: ${o},`)}),t.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(t.push(" suggestionChips: ["),n.suggestionChips.forEach(r=>{t.push(` "${r}",`)}),t.push(" ],")),n.suggestionChipsConfig&&(t.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&t.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&t.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&t.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&t.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),t.push(" },")),t.push(...Zt(n," ")),t.push(...Qt(n," ")),t.push(...en(n," ")),t.push(...tn(n," ")),n.debug&&t.push(` debug: ${n.debug},`),t.push(" postprocessMessage: ({ text }) => markdownPostprocessor(text)"),t.push(" }"),t.push("});"),t.join(`
|
|
61
|
+
`)}function br(n){let e=Tn(n),s=e!=="plain",t=["// ChatWidget.tsx","'use client'; // Required for Next.js - remove for Vite/CRA","","import { useEffect } from 'react';","import 'vanilla-agent/widget.css';","import { initAgentWidget, markdownPostprocessor } from 'vanilla-agent';","import type { AgentWidgetInitHandle } from 'vanilla-agent';","","export function ChatWidget() {"," useEffect(() => {"," let handle: AgentWidgetInitHandle | null = null;",""," handle = initAgentWidget({"," target: 'body',"," config: {"];return n.apiUrl&&t.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&t.push(` flowId: "${n.flowId}",`),s&&t.push(` parserType: "${e}",`),n.theme&&(t.push(" theme: {"),Object.entries(n.theme).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.launcher&&(t.push(" launcher: {"),Object.entries(n.launcher).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.copy&&(t.push(" copy: {"),Object.entries(n.copy).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.sendButton&&(t.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.voiceRecognition&&(t.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"?t.push(` ${r}: ${o},`):typeof o=="number"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.statusIndicator&&(t.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.features&&(t.push(" features: {"),Object.entries(n.features).forEach(([r,o])=>{t.push(` ${r}: ${o},`)}),t.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(t.push(" suggestionChips: ["),n.suggestionChips.forEach(r=>{t.push(` "${r}",`)}),t.push(" ],")),n.suggestionChipsConfig&&(t.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&t.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&t.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&t.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&t.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),t.push(" },")),t.push(...Zt(n," ")),t.push(...Qt(n," ")),t.push(...en(n," ")),t.push(...tn(n," ")),n.debug&&t.push(` debug: ${n.debug},`),t.push(" postprocessMessage: ({ text }) => markdownPostprocessor(text)"),t.push(" }"),t.push(" });"),t.push(""),t.push(" // Cleanup on unmount"),t.push(" return () => {"),t.push(" if (handle) {"),t.push(" handle.destroy();"),t.push(" }"),t.push(" };"),t.push(" }, []);"),t.push(""),t.push(" return null; // Widget injects itself into the DOM"),t.push("}"),t.push(""),t.push("// Usage in your app:"),t.push("// import { ChatWidget } from './components/ChatWidget';"),t.push("//"),t.push("// export default function App() {"),t.push("// return ("),t.push("// <div>"),t.push("// {/* Your app content */}"),t.push("// <ChatWidget />"),t.push("// </div>"),t.push("// );"),t.push("// }"),t.join(`
|
|
62
|
+
`)}function Cr(n){let e=["// ChatWidgetAdvanced.tsx","'use client'; // Required for Next.js - remove for Vite/CRA","","import { useEffect } from 'react';","import 'vanilla-agent/widget.css';","import {"," initAgentWidget,"," createFlexibleJsonStreamParser,"," defaultJsonActionParser,"," defaultActionHandlers,"," markdownPostprocessor","} from 'vanilla-agent';","import type { AgentWidgetInitHandle } from 'vanilla-agent';","","const STORAGE_KEY = 'chat-widget-state';","const PROCESSED_ACTIONS_KEY = 'chat-widget-processed-actions';","","// Types for DOM elements","interface PageElement {"," type: string;"," tagName: string;"," selector: string;"," innerText: string;"," href?: string;","}","","interface DOMContext {"," page_elements: PageElement[];"," page_element_count: number;"," element_types: Record<string, number>;"," page_url: string;"," page_title: string;"," timestamp: string;","}","","// DOM context provider - extracts page elements for AI context","const collectDOMContext = (): DOMContext => {"," const selectors = {",` products: '[data-product-id], .product-card, .product-item, [role="article"]',`,` buttons: 'button, [role="button"], .btn',`," links: 'a[href]',"," inputs: 'input, textarea, select'"," };",""," const elements: PageElement[] = [];"," Object.entries(selectors).forEach(([type, selector]) => {"," document.querySelectorAll(selector).forEach((element) => {"," if (!(element instanceof HTMLElement)) return;"," "," // Exclude elements within the widget"," const widgetHost = element.closest('.vanilla-agent-host');"," if (widgetHost) return;"," "," const text = element.innerText?.trim();"," if (!text) return;",""," const selectorString ="," element.id ? `#${element.id}` :"," element.getAttribute('data-testid') ? `[data-testid=\"${element.getAttribute('data-testid')}\"]` :"," element.getAttribute('data-product-id') ? `[data-product-id=\"${element.getAttribute('data-product-id')}\"]` :"," element.tagName.toLowerCase();",""," const elementData: PageElement = {"," type,"," tagName: element.tagName.toLowerCase(),"," selector: selectorString,"," innerText: text.substring(0, 200)"," };",""," if (type === 'links' && element instanceof HTMLAnchorElement && element.href) {"," elementData.href = element.href;"," }",""," elements.push(elementData);"," });"," });",""," const counts = elements.reduce((acc, el) => {"," acc[el.type] = (acc[el.type] || 0) + 1;"," return acc;"," }, {} as Record<string, number>);",""," return {"," page_elements: elements.slice(0, 50),"," page_element_count: elements.length,"," element_types: counts,"," page_url: window.location.href,"," page_title: document.title,"," timestamp: new Date().toISOString()"," };","};","","export function ChatWidgetAdvanced() {"," useEffect(() => {"," let handle: AgentWidgetInitHandle | null = null;",""," // Load saved state"," const loadSavedMessages = () => {"," const savedState = localStorage.getItem(STORAGE_KEY);"," if (savedState) {"," try {"," const { messages } = JSON.parse(savedState);"," return messages || [];"," } catch (e) {"," console.error('Failed to load saved state:', e);"," }"," }"," return [];"," };",""," handle = initAgentWidget({"," target: 'body',"," config: {"];return n.apiUrl&&e.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&e.push(` flowId: "${n.flowId}",`),n.theme&&(e.push(" theme: {"),Object.entries(n.theme).forEach(([s,t])=>{e.push(` ${s}: "${t}",`)}),e.push(" },")),n.launcher&&(e.push(" launcher: {"),Object.entries(n.launcher).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.copy&&(e.push(" copy: {"),Object.entries(n.copy).forEach(([s,t])=>{e.push(` ${s}: "${t}",`)}),e.push(" },")),n.sendButton&&(e.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.voiceRecognition&&(e.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"?e.push(` ${s}: ${t},`):typeof t=="number"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.statusIndicator&&(e.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.features&&(e.push(" features: {"),Object.entries(n.features).forEach(([s,t])=>{e.push(` ${s}: ${t},`)}),e.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(e.push(" suggestionChips: ["),n.suggestionChips.forEach(s=>{e.push(` "${s}",`)}),e.push(" ],")),n.suggestionChipsConfig&&(e.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&e.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&e.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&e.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&e.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),e.push(" },")),e.push(...Zt(n," ")),e.push(...Qt(n," ")),e.push(...en(n," ")),e.push(...tn(n," ")),n.debug&&e.push(` debug: ${n.debug},`),e.push(" initialMessages: loadSavedMessages(),"),e.push(" // Flexible JSON stream parser for handling structured actions"),e.push(" streamParser: () => createFlexibleJsonStreamParser((parsed: any) => {"),e.push(" if (!parsed || typeof parsed !== 'object') return null;"),e.push(" // Extract display text based on action type"),e.push(" if (parsed.action === 'nav_then_click') return 'Navigating...';"),e.push(" if (parsed.action === 'message') return parsed.text || '';"),e.push(" if (parsed.action === 'message_and_click') return parsed.text || 'Processing...';"),e.push(" return parsed.text || null;"),e.push(" }),"),e.push(" // Action parsers to detect JSON actions in responses"),e.push(" actionParsers: ["),e.push(" defaultJsonActionParser,"),e.push(" // Custom parser for markdown-wrapped JSON"),e.push(" ({ text, message }: any) => {"),e.push(" const jsonSource = (message as any).rawContent || text || message.content;"),e.push(" if (!jsonSource || typeof jsonSource !== 'string') return null;"),e.push(" // Strip markdown code fences"),e.push(" let cleanJson = jsonSource"),e.push(" .replace(/^```(?:json)?\\s*\\n?/, '')"),e.push(" .replace(/\\n?```\\s*$/, '')"),e.push(" .trim();"),e.push(" if (!cleanJson.startsWith('{') || !cleanJson.endsWith('}')) return null;"),e.push(" try {"),e.push(" const parsed = JSON.parse(cleanJson);"),e.push(" if (parsed.action) return { type: parsed.action, payload: parsed };"),e.push(" } catch (e) { return null; }"),e.push(" return null;"),e.push(" }"),e.push(" ],"),e.push(" // Action handlers for navigation and other actions"),e.push(" actionHandlers: ["),e.push(" defaultActionHandlers.message,"),e.push(" defaultActionHandlers.messageAndClick,"),e.push(" // Handler for nav_then_click action"),e.push(" (action: any, context: any) => {"),e.push(" if (action.type !== 'nav_then_click') return;"),e.push(" const payload = action.payload || action.raw || {};"),e.push(" const url = payload?.page;"),e.push(" const text = payload?.on_load_text || 'Navigating...';"),e.push(" if (!url) return { handled: true, displayText: text };"),e.push(" // Check if already processed"),e.push(" const messageId = context.message?.id;"),e.push(" const processedActions = JSON.parse(localStorage.getItem(PROCESSED_ACTIONS_KEY) || '[]');"),e.push(" const actionKey = `nav_${messageId}_${url}`;"),e.push(" if (processedActions.includes(actionKey)) {"),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" processedActions.push(actionKey);"),e.push(" localStorage.setItem(PROCESSED_ACTIONS_KEY, JSON.stringify(processedActions));"),e.push(" const targetUrl = url.startsWith('http') ? url : new URL(url, window.location.origin).toString();"),e.push(" window.location.href = targetUrl;"),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" ],"),e.push(" postprocessMessage: ({ text }) => markdownPostprocessor(text),"),e.push(" requestMiddleware: ({ payload }) => {"),e.push(" return {"),e.push(" ...payload,"),e.push(" metadata: collectDOMContext()"),e.push(" };"),e.push(" }"),e.push(" }"),e.push(" });"),e.push(""),e.push(" // Save state on message events"),e.push(" const handleMessage = () => {"),e.push(" const session = handle?.getSession?.();"),e.push(" if (session) {"),e.push(" localStorage.setItem(STORAGE_KEY, JSON.stringify({"),e.push(" messages: session.messages,"),e.push(" timestamp: new Date().toISOString()"),e.push(" }));"),e.push(" }"),e.push(" };"),e.push(""),e.push(" // Clear state on clear chat"),e.push(" const handleClearChat = () => {"),e.push(" localStorage.removeItem(STORAGE_KEY);"),e.push(" localStorage.removeItem(PROCESSED_ACTIONS_KEY);"),e.push(" };"),e.push(""),e.push(" window.addEventListener('vanilla-agent:message', handleMessage);"),e.push(" window.addEventListener('vanilla-agent:clear-chat', handleClearChat);"),e.push(""),e.push(" // Cleanup on unmount"),e.push(" return () => {"),e.push(" window.removeEventListener('vanilla-agent:message', handleMessage);"),e.push(" window.removeEventListener('vanilla-agent:clear-chat', handleClearChat);"),e.push(" if (handle) {"),e.push(" handle.destroy();"),e.push(" }"),e.push(" };"),e.push(" }, []);"),e.push(""),e.push(" return null; // Widget injects itself into the DOM"),e.push("}"),e.push(""),e.push("// Usage: Collects DOM context for AI-powered navigation"),e.push("// Features:"),e.push("// - Extracts page elements (products, buttons, links)"),e.push("// - Persists chat history across page loads"),e.push("// - Handles navigation actions (nav_then_click)"),e.push("// - Processes structured JSON actions from AI"),e.push("//"),e.push("// Example usage in Next.js:"),e.push("// import { ChatWidgetAdvanced } from './components/ChatWidgetAdvanced';"),e.push("//"),e.push("// export default function RootLayout({ children }) {"),e.push("// return ("),e.push('// <html lang="en">'),e.push("// <body>"),e.push("// {children}"),e.push("// <ChatWidgetAdvanced />"),e.push("// </body>"),e.push("// </html>"),e.push("// );"),e.push("// }"),e.join(`
|
|
63
|
+
`)}function xr(n){let e=Tn(n),s=e!=="plain",t=["<script>"," window.siteAgentConfig = {"," target: 'body',"," config: {"];return n.apiUrl&&t.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&t.push(` flowId: "${n.flowId}",`),s&&t.push(` parserType: "${e}",`),n.theme&&(t.push(" theme: {"),Object.entries(n.theme).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.launcher&&(t.push(" launcher: {"),Object.entries(n.launcher).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.copy&&(t.push(" copy: {"),Object.entries(n.copy).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.sendButton&&(t.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.voiceRecognition&&(t.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"?t.push(` ${r}: ${o},`):typeof o=="number"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.statusIndicator&&(t.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.features&&(t.push(" features: {"),Object.entries(n.features).forEach(([r,o])=>{t.push(` ${r}: ${o},`)}),t.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(t.push(" suggestionChips: ["),n.suggestionChips.forEach(r=>{t.push(` "${r}",`)}),t.push(" ],")),n.suggestionChipsConfig&&(t.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&t.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&t.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&t.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&t.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),t.push(" },")),t.push(...Zt(n," ")),t.push(...Qt(n," ")),t.push(...en(n," ")),t.push(...tn(n," ")),n.debug&&t.push(` debug: ${n.debug},`),t.push(" postprocessMessage: ({ text }) => window.AgentWidget.markdownPostprocessor(text)"),t.push(" }"),t.push(" };"),t.push("</script>"),t.push('<script src="https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/install.global.js"></script>'),t.join(`
|
|
64
|
+
`)}function Sr(n){let e=Tn(n),s=e!=="plain",t=["<!-- Load CSS -->",'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/widget.css" />',"","<!-- Load JavaScript -->",'<script src="https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/index.global.js"></script>',"","<!-- Initialize widget -->","<script>"," window.AgentWidget.initAgentWidget({"," target: 'body',"," config: {"];return n.apiUrl&&t.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&t.push(` flowId: "${n.flowId}",`),s&&t.push(` parserType: "${e}",`),n.theme&&(t.push(" theme: {"),Object.entries(n.theme).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.launcher&&(t.push(" launcher: {"),Object.entries(n.launcher).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.copy&&(t.push(" copy: {"),Object.entries(n.copy).forEach(([r,o])=>{t.push(` ${r}: "${o}",`)}),t.push(" },")),n.sendButton&&(t.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.voiceRecognition&&(t.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"?t.push(` ${r}: ${o},`):typeof o=="number"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.statusIndicator&&(t.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([r,o])=>{typeof o=="string"?t.push(` ${r}: "${o}",`):typeof o=="boolean"&&t.push(` ${r}: ${o},`)}),t.push(" },")),n.features&&(t.push(" features: {"),Object.entries(n.features).forEach(([r,o])=>{t.push(` ${r}: ${o},`)}),t.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(t.push(" suggestionChips: ["),n.suggestionChips.forEach(r=>{t.push(` "${r}",`)}),t.push(" ],")),n.suggestionChipsConfig&&(t.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&t.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&t.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&t.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&t.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),t.push(" },")),t.push(...Zt(n," ")),t.push(...Qt(n," ")),t.push(...en(n," ")),t.push(...tn(n," ")),n.debug&&t.push(` debug: ${n.debug},`),t.push(" postprocessMessage: ({ text }) => window.AgentWidget.markdownPostprocessor(text)"),t.push(" }"),t.push(" });"),t.push("</script>"),t.join(`
|
|
65
|
+
`)}function Ar(n){let e=["<!-- Load CSS -->",'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/widget.css" />',"","<!-- Chat Widget Configuration -->","<script>"," window.ChatWidgetConfig = {"];return n.apiUrl&&e.push(` apiUrl: "${n.apiUrl}",`),n.flowId&&e.push(` flowId: "${n.flowId}",`),n.theme&&(e.push(" theme: {"),Object.entries(n.theme).forEach(([s,t])=>{e.push(` ${s}: "${t}",`)}),e.push(" },")),n.launcher&&(e.push(" launcher: {"),Object.entries(n.launcher).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.copy&&(e.push(" copy: {"),Object.entries(n.copy).forEach(([s,t])=>{e.push(` ${s}: "${t}",`)}),e.push(" },")),n.sendButton&&(e.push(" sendButton: {"),Object.entries(n.sendButton).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.voiceRecognition&&(e.push(" voiceRecognition: {"),Object.entries(n.voiceRecognition).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"?e.push(` ${s}: ${t},`):typeof t=="number"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.statusIndicator&&(e.push(" statusIndicator: {"),Object.entries(n.statusIndicator).forEach(([s,t])=>{typeof t=="string"?e.push(` ${s}: "${t}",`):typeof t=="boolean"&&e.push(` ${s}: ${t},`)}),e.push(" },")),n.features&&(e.push(" features: {"),Object.entries(n.features).forEach(([s,t])=>{e.push(` ${s}: ${t},`)}),e.push(" },")),n.suggestionChips&&n.suggestionChips.length>0&&(e.push(" suggestionChips: ["),n.suggestionChips.forEach(s=>{e.push(` "${s}",`)}),e.push(" ],")),n.suggestionChipsConfig&&(e.push(" suggestionChipsConfig: {"),n.suggestionChipsConfig.fontFamily&&e.push(` fontFamily: "${n.suggestionChipsConfig.fontFamily}",`),n.suggestionChipsConfig.fontWeight&&e.push(` fontWeight: "${n.suggestionChipsConfig.fontWeight}",`),n.suggestionChipsConfig.paddingX&&e.push(` paddingX: "${n.suggestionChipsConfig.paddingX}",`),n.suggestionChipsConfig.paddingY&&e.push(` paddingY: "${n.suggestionChipsConfig.paddingY}",`),e.push(" },")),e.push(...Zt(n," ")),e.push(...Qt(n," ")),e.push(...en(n," ")),e.push(...tn(n," ")),e.push(" };"),e.push("</script>"),e.push(""),e.push("<!-- Load the widget library -->"),e.push('<script src="https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/index.global.js"></script>'),e.push(""),e.push("<!-- Chat Widget Script with DOM Helper -->"),e.push("<script>"),e.push(" (function () {"),e.push(" 'use strict';"),e.push(" "),e.push(" const STORAGE_KEY = 'chat-widget-state';"),e.push(" const PROCESSED_ACTIONS_KEY = 'chat-widget-processed-actions';"),e.push(""),e.push(" // DOM context provider - extracts page elements for AI context"),e.push(" const domContextProvider = () => {"),e.push(" const selectors = {"),e.push(` products: '[data-product-id], .product-card, .product-item, [role="article"]',`),e.push(` buttons: 'button, [role="button"], .btn',`),e.push(" links: 'a[href]',"),e.push(" inputs: 'input, textarea, select'"),e.push(" };"),e.push(""),e.push(" const elements = [];"),e.push(" Object.entries(selectors).forEach(([type, selector]) => {"),e.push(" document.querySelectorAll(selector).forEach((element) => {"),e.push(" if (!(element instanceof HTMLElement)) return;"),e.push(" "),e.push(" // Exclude elements within the widget"),e.push(" const widgetHost = element.closest('.vanilla-agent-host');"),e.push(" if (widgetHost) return;"),e.push(" "),e.push(" const text = element.innerText?.trim();"),e.push(" if (!text) return;"),e.push(""),e.push(" const selectorString ="),e.push(" element.id ? `#${element.id}` :"),e.push(" element.getAttribute('data-testid') ? `[data-testid=\"${element.getAttribute('data-testid')}\"]` :"),e.push(" element.getAttribute('data-product-id') ? `[data-product-id=\"${element.getAttribute('data-product-id')}\"]` :"),e.push(" element.tagName.toLowerCase();"),e.push(""),e.push(" const elementData = {"),e.push(" type,"),e.push(" tagName: element.tagName.toLowerCase(),"),e.push(" selector: selectorString,"),e.push(" innerText: text.substring(0, 200)"),e.push(" };"),e.push(""),e.push(" if (type === 'links' && element instanceof HTMLAnchorElement && element.href) {"),e.push(" elementData.href = element.href;"),e.push(" }"),e.push(""),e.push(" elements.push(elementData);"),e.push(" });"),e.push(" });"),e.push(""),e.push(" const counts = elements.reduce((acc, el) => {"),e.push(" acc[el.type] = (acc[el.type] || 0) + 1;"),e.push(" return acc;"),e.push(" }, {});"),e.push(""),e.push(" return {"),e.push(" page_elements: elements.slice(0, 50),"),e.push(" page_element_count: elements.length,"),e.push(" element_types: counts,"),e.push(" page_url: window.location.href,"),e.push(" page_title: document.title,"),e.push(" timestamp: new Date().toISOString()"),e.push(" };"),e.push(" };"),e.push(""),e.push(" const createWidgetConfig = (agentWidget) => ({"),e.push(" ...window.ChatWidgetConfig,"),e.push(" // Flexible JSON stream parser for handling structured actions"),e.push(" streamParser: () => agentWidget.createFlexibleJsonStreamParser((parsed) => {"),e.push(" if (!parsed || typeof parsed !== 'object') return null;"),e.push(" "),e.push(" // Extract display text based on action type"),e.push(" if (parsed.action === 'nav_then_click') {"),e.push(" return 'Navigating...';"),e.push(" } else if (parsed.action === 'message') {"),e.push(" return parsed.text || '';"),e.push(" } else if (parsed.action === 'message_and_click') {"),e.push(" return parsed.text || 'Processing...';"),e.push(" }"),e.push(" "),e.push(" return parsed.text || null;"),e.push(" }),"),e.push(" // Action parsers to detect JSON actions in responses"),e.push(" actionParsers: ["),e.push(" agentWidget.defaultJsonActionParser,"),e.push(" // Custom parser for markdown-wrapped JSON"),e.push(" ({ text, message }) => {"),e.push(" const jsonSource = message.rawContent || text || message.content;"),e.push(" if (!jsonSource || typeof jsonSource !== 'string') return null;"),e.push(" "),e.push(" // Strip markdown code fences"),e.push(" let cleanJson = jsonSource"),e.push(" .replace(/^```(?:json)?\\s*\\n?/, '')"),e.push(" .replace(/\\n?```\\s*$/, '')"),e.push(" .trim();"),e.push(" "),e.push(" if (!cleanJson.startsWith('{') || !cleanJson.endsWith('}')) return null;"),e.push(" "),e.push(" try {"),e.push(" const parsed = JSON.parse(cleanJson);"),e.push(" if (parsed.action) {"),e.push(" return { type: parsed.action, payload: parsed };"),e.push(" }"),e.push(" } catch (e) {"),e.push(" return null;"),e.push(" }"),e.push(" return null;"),e.push(" }"),e.push(" ],"),e.push(" // Action handlers for navigation and other actions"),e.push(" actionHandlers: ["),e.push(" agentWidget.defaultActionHandlers.message,"),e.push(" agentWidget.defaultActionHandlers.messageAndClick,"),e.push(" // Handler for nav_then_click action"),e.push(" (action, context) => {"),e.push(" if (action.type !== 'nav_then_click') return;"),e.push(" "),e.push(" const payload = action.payload || action.raw || {};"),e.push(" const url = payload?.page;"),e.push(" const text = payload?.on_load_text || 'Navigating...';"),e.push(" "),e.push(" if (!url) return { handled: true, displayText: text };"),e.push(" "),e.push(" // Check if already processed"),e.push(" const messageId = context.message?.id;"),e.push(" const processedActions = JSON.parse(localStorage.getItem(PROCESSED_ACTIONS_KEY) || '[]');"),e.push(" const actionKey = `nav_${messageId}_${url}`;"),e.push(" "),e.push(" if (processedActions.includes(actionKey)) {"),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" "),e.push(" processedActions.push(actionKey);"),e.push(" localStorage.setItem(PROCESSED_ACTIONS_KEY, JSON.stringify(processedActions));"),e.push(" "),e.push(" const targetUrl = url.startsWith('http')"),e.push(" ? url"),e.push(" : new URL(url, window.location.origin).toString();"),e.push(" "),e.push(" window.location.href = targetUrl;"),e.push(" "),e.push(" return { handled: true, displayText: text };"),e.push(" }"),e.push(" ],"),e.push(" // Send DOM context with each request"),e.push(" requestMiddleware: ({ payload }) => ({"),e.push(" ...payload,"),e.push(" metadata: domContextProvider()"),e.push(" }),"),e.push(" postprocessMessage: ({ text }) => agentWidget.markdownPostprocessor(text)"),e.push(" });"),e.push(""),e.push(" // Initialize widget when DOM is loaded"),e.push(" function init() {"),e.push(" const agentWidget = window.AgentWidget;"),e.push(" if (!agentWidget) {"),e.push(" console.error('AgentWidget not loaded');"),e.push(" return;"),e.push(" }"),e.push(""),e.push(" const widgetConfig = createWidgetConfig(agentWidget);"),e.push(""),e.push(" // Load saved state"),e.push(" const savedState = localStorage.getItem(STORAGE_KEY);"),e.push(" if (savedState) {"),e.push(" try {"),e.push(" const { messages } = JSON.parse(savedState);"),e.push(" widgetConfig.initialMessages = messages || [];"),e.push(" } catch (e) {"),e.push(" console.error('Failed to load saved state:', e);"),e.push(" }"),e.push(" }"),e.push(""),e.push(" // Initialize widget with DOM context"),e.push(" const handle = agentWidget.initAgentWidget({"),e.push(" target: 'body',"),e.push(" useShadowDom: false,"),e.push(" config: widgetConfig"),e.push(" });"),e.push(""),e.push(" // Save state on message events"),e.push(" window.addEventListener('vanilla-agent:message', (event) => {"),e.push(" const session = handle.getSession?.();"),e.push(" if (session) {"),e.push(" localStorage.setItem(STORAGE_KEY, JSON.stringify({"),e.push(" messages: session.messages,"),e.push(" timestamp: new Date().toISOString()"),e.push(" }));"),e.push(" }"),e.push(" });"),e.push(""),e.push(" // Clear state on clear chat"),e.push(" window.addEventListener('vanilla-agent:clear-chat', () => {"),e.push(" localStorage.removeItem(STORAGE_KEY);"),e.push(" localStorage.removeItem(PROCESSED_ACTIONS_KEY);"),e.push(" });"),e.push(" }"),e.push(""),e.push(" // Initialize when DOM is ready"),e.push(" if (document.readyState === 'loading') {"),e.push(" document.addEventListener('DOMContentLoaded', init);"),e.push(" } else {"),e.push(" init();"),e.push(" }"),e.push(" })();"),e.push("</script>"),e.join(`
|
|
66
|
+
`)}var ha=Fo;export{Xt as AgentWidgetClient,an as AgentWidgetSession,Be as DEFAULT_WIDGET_CONFIG,dn as attachHeaderToContainer,cn as buildComposer,xo as buildDefaultHeader,Ao as buildExpandedHeader,zt as buildHeader,Nn as buildHeaderWithLayout,So as buildMinimalHeader,pn as componentRegistry,An as createActionManager,ns as createAgentExperience,tr as createBubbleWithLayout,Qn as createCSATFeedback,pr as createComponentMiddleware,Xn as createComponentStreamParser,jo as createDirectivePostprocessor,Yo as createFlexibleJsonStreamParser,Hn as createJsonStreamParser,Jn as createLocalStorageAdapter,wn as createMarkdownProcessor,yn as createMarkdownProcessorFromConfig,ko as createMessageActions,es as createNPSFeedback,Ln as createPlainTextParser,Bn as createRegexJsonParser,un as createStandardBubble,Cn as createTypingIndicator,$n as createXmlParser,ha as default,Vt as defaultActionHandlers,Sn as defaultJsonActionParser,_o as directivePostprocessor,Wn as escapeHtml,Zn as extractComponentDirectiveFromMessage,Rn as generateAssistantMessageId,yr as generateCodeSnippet,Xo as generateMessageId,Pn as generateUserMessageId,To as getHeaderLayout,Gn as hasComponentDirective,Fn as headerLayouts,Fo as initAgentWidget,ur as isComponentDirectiveType,go as markdownPostprocessor,zn as mergeWithDefaults,xn as pluginRegistry,Vn as renderComponentDirective};
|
|
63
67
|
//# sourceMappingURL=index.js.map
|