@makemore/agent-frontend 2.0.0 → 2.2.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.
@@ -1,10 +1,10 @@
1
- var ChatWidgetModule=(()=>{var he=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var $t=Object.getOwnPropertyNames;var bt=Object.prototype.hasOwnProperty;var kt=(e,t)=>{for(var n in t)he(e,n,{get:t[n],enumerable:!0})},Ct=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of $t(t))!bt.call(e,a)&&a!==n&&he(e,a,{get:()=>t[a],enumerable:!(s=wt(t,a))||s.enumerable});return e};var St=e=>Ct(he({},"__esModule",{value:!0}),e);var Xt={};kt(Xt,{ChatWidget:()=>fe,default:()=>Gt});var re,M,De,Tt,G,xe,He,Ae,Ne,ve,me,ye,Mt,Z={},Oe=[],xt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,le=Array.isArray;function q(e,t){for(var n in t)e[n]=t[n];return e}function we(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ie(e,t,n){var s,a,o,l={};for(o in t)o=="key"?s=t[o]:o=="ref"?a=t[o]:l[o]=t[o];if(arguments.length>2&&(l.children=arguments.length>3?re.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)l[o]===void 0&&(l[o]=e.defaultProps[o]);return se(e,l,s,a,null)}function se(e,t,n,s,a){var o={type:e,props:t,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++De,__i:-1,__u:0};return a==null&&M.vnode!=null&&M.vnode(o),o}function ce(e){return e.children}function Y(e,t){this.props=e,this.context=t}function X(e,t){if(t==null)return e.__?X(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?X(e):null}function Re(e){var t,n;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null){e.__e=e.__c.base=n.__e;break}return Re(e)}}function Ee(e){(!e.__d&&(e.__d=!0)&&G.push(e)&&!ae.__r++||xe!=M.debounceRendering)&&((xe=M.debounceRendering)||He)(ae)}function ae(){for(var e,t,n,s,a,o,l,c=1;G.length;)G.length>c&&G.sort(Ae),e=G.shift(),c=G.length,e.__d&&(n=void 0,s=void 0,a=(s=(t=e).__v).__e,o=[],l=[],t.__P&&((n=q({},s)).__v=s.__v+1,M.vnode&&M.vnode(n),$e(t.__P,n,s,t.__n,t.__P.namespaceURI,32&s.__u?[a]:null,o,a??X(s),!!(32&s.__u),l),n.__v=s.__v,n.__.__k[n.__i]=n,Le(o,n,l),s.__e=s.__=null,n.__e!=a&&Re(n)));ae.__r=0}function Ue(e,t,n,s,a,o,l,c,_,i,u){var r,f,d,m,S,b,g,w=s&&s.__k||Oe,N=t.length;for(_=Et(n,t,w,_,N),r=0;r<N;r++)(d=n.__k[r])!=null&&(f=d.__i==-1?Z:w[d.__i]||Z,d.__i=r,b=$e(e,d,f,a,o,l,c,_,i,u),m=d.__e,d.ref&&f.ref!=d.ref&&(f.ref&&be(f.ref,null,d),u.push(d.ref,d.__c||m,d)),S==null&&m!=null&&(S=m),(g=!!(4&d.__u))||f.__k===d.__k?_=Fe(d,_,e,g):typeof d.type=="function"&&b!==void 0?_=b:m&&(_=m.nextSibling),d.__u&=-7);return n.__e=S,_}function Et(e,t,n,s,a){var o,l,c,_,i,u=n.length,r=u,f=0;for(e.__k=new Array(a),o=0;o<a;o++)(l=t[o])!=null&&typeof l!="boolean"&&typeof l!="function"?(typeof l=="string"||typeof l=="number"||typeof l=="bigint"||l.constructor==String?l=e.__k[o]=se(null,l,null,null,null):le(l)?l=e.__k[o]=se(ce,{children:l},null,null,null):l.constructor===void 0&&l.__b>0?l=e.__k[o]=se(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):e.__k[o]=l,_=o+f,l.__=e,l.__b=e.__b+1,c=null,(i=l.__i=It(l,n,_,r))!=-1&&(r--,(c=n[i])&&(c.__u|=2)),c==null||c.__v==null?(i==-1&&(a>u?f--:a<u&&f++),typeof l.type!="function"&&(l.__u|=4)):i!=_&&(i==_-1?f--:i==_+1?f++:(i>_?f--:f++,l.__u|=4))):e.__k[o]=null;if(r)for(o=0;o<u;o++)(c=n[o])!=null&&!(2&c.__u)&&(c.__e==s&&(s=X(c)),Ke(c,c));return s}function Fe(e,t,n,s){var a,o;if(typeof e.type=="function"){for(a=e.__k,o=0;a&&o<a.length;o++)a[o]&&(a[o].__=e,t=Fe(a[o],t,n,s));return t}e.__e!=t&&(s&&(t&&e.type&&!t.parentNode&&(t=X(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function It(e,t,n,s){var a,o,l,c=e.key,_=e.type,i=t[n],u=i!=null&&(2&i.__u)==0;if(i===null&&c==null||u&&c==i.key&&_==i.type)return n;if(s>(u?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((i=t[l=a>=0?a--:o++])!=null&&!(2&i.__u)&&c==i.key&&_==i.type)return l}return-1}function Ie(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||xt.test(t)?n:n+"px"}function oe(e,t,n,s,a){var o,l;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof s=="string"&&(e.style.cssText=s=""),s)for(t in s)n&&t in n||Ie(e.style,t,"");if(n)for(t in n)s&&n[t]==s[t]||Ie(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Ne,"$1")),l=t.toLowerCase(),t=l in e||t=="onFocusOut"||t=="onFocusIn"?l.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=n,n?s?n.u=s.u:(n.u=ve,e.addEventListener(t,o?ye:me,o)):e.removeEventListener(t,o?ye:me,o);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Pe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=ve++;else if(t.t<n.u)return;return n(M.event?M.event(t):t)}}}function $e(e,t,n,s,a,o,l,c,_,i){var u,r,f,d,m,S,b,g,w,N,A,j,O,L,W,F,p,$=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(_=!!(32&n.__u),o=[c=t.__e=n.__e]),(u=M.__b)&&u(t);e:if(typeof $=="function")try{if(g=t.props,w="prototype"in $&&$.prototype.render,N=(u=$.contextType)&&s[u.__c],A=u?N?N.props.value:u.__:s,n.__c?b=(r=t.__c=n.__c).__=r.__E:(w?t.__c=r=new $(g,A):(t.__c=r=new Y(g,A),r.constructor=$,r.render=Dt),N&&N.sub(r),r.state||(r.state={}),r.__n=s,f=r.__d=!0,r.__h=[],r._sb=[]),w&&r.__s==null&&(r.__s=r.state),w&&$.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=q({},r.__s)),q(r.__s,$.getDerivedStateFromProps(g,r.__s))),d=r.props,m=r.state,r.__v=t,f)w&&$.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),w&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(w&&$.getDerivedStateFromProps==null&&g!==d&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(g,A),t.__v==n.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(g,r.__s,A)===!1){for(t.__v!=n.__v&&(r.props=g,r.state=r.__s,r.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(E){E&&(E.__=t)}),j=0;j<r._sb.length;j++)r.__h.push(r._sb[j]);r._sb=[],r.__h.length&&l.push(r);break e}r.componentWillUpdate!=null&&r.componentWillUpdate(g,r.__s,A),w&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(d,m,S)})}if(r.context=A,r.props=g,r.__P=e,r.__e=!1,O=M.__r,L=0,w){for(r.state=r.__s,r.__d=!1,O&&O(t),u=r.render(r.props,r.state,r.context),W=0;W<r._sb.length;W++)r.__h.push(r._sb[W]);r._sb=[]}else do r.__d=!1,O&&O(t),u=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++L<25);r.state=r.__s,r.getChildContext!=null&&(s=q(q({},s),r.getChildContext())),w&&!f&&r.getSnapshotBeforeUpdate!=null&&(S=r.getSnapshotBeforeUpdate(d,m)),F=u,u!=null&&u.type===ce&&u.key==null&&(F=We(u.props.children)),c=Ue(e,le(F)?F:[F],t,n,s,a,o,l,c,_,i),r.base=t.__e,t.__u&=-161,r.__h.length&&l.push(r),b&&(r.__E=r.__=null)}catch(E){if(t.__v=null,_||o!=null)if(E.then){for(t.__u|=_?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,t.__e=c}else{for(p=o.length;p--;)we(o[p]);ge(t)}else t.__e=n.__e,t.__k=n.__k,E.then||ge(t);M.__e(E,t,n)}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Pt(n.__e,t,n,s,a,o,l,_,i);return(u=M.diffed)&&u(t),128&t.__u?void 0:c}function ge(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(ge)}function Le(e,t,n){for(var s=0;s<n.length;s++)be(n[s],n[++s],n[++s]);M.__c&&M.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){M.__e(o,a.__v)}})}function We(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:le(e)?e.map(We):q({},e)}function Pt(e,t,n,s,a,o,l,c,_){var i,u,r,f,d,m,S,b=n.props||Z,g=t.props,w=t.type;if(w=="svg"?a="http://www.w3.org/2000/svg":w=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(i=0;i<o.length;i++)if((d=o[i])&&"setAttribute"in d==!!w&&(w?d.localName==w:d.nodeType==3)){e=d,o[i]=null;break}}if(e==null){if(w==null)return document.createTextNode(g);e=document.createElementNS(a,w,g.is&&g),c&&(M.__m&&M.__m(t,o),c=!1),o=null}if(w==null)b===g||c&&e.data==g||(e.data=g);else{if(o=o&&re.call(e.childNodes),!c&&o!=null)for(b={},i=0;i<e.attributes.length;i++)b[(d=e.attributes[i]).name]=d.value;for(i in b)if(d=b[i],i!="children"){if(i=="dangerouslySetInnerHTML")r=d;else if(!(i in g)){if(i=="value"&&"defaultValue"in g||i=="checked"&&"defaultChecked"in g)continue;oe(e,i,null,d,a)}}for(i in g)d=g[i],i=="children"?f=d:i=="dangerouslySetInnerHTML"?u=d:i=="value"?m=d:i=="checked"?S=d:c&&typeof d!="function"||b[i]===d||oe(e,i,d,b[i],a);if(u)c||r&&(u.__html==r.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(r&&(e.innerHTML=""),Ue(t.type=="template"?e.content:e,le(f)?f:[f],t,n,s,w=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,l,o?o[0]:n.__k&&X(n,0),c,_),o!=null)for(i=o.length;i--;)we(o[i]);c||(i="value",w=="progress"&&m==null?e.removeAttribute("value"):m!=null&&(m!==e[i]||w=="progress"&&!m||w=="option"&&m!=b[i])&&oe(e,i,m,b[i],a),i="checked",S!=null&&S!=e[i]&&oe(e,i,S,b[i],a))}return e}function be(e,t,n){try{if(typeof e=="function"){var s=typeof e.__u=="function";s&&e.__u(),s&&t==null||(e.__u=e(t))}else e.current=t}catch(a){M.__e(a,n)}}function Ke(e,t,n){var s,a;if(M.unmount&&M.unmount(e),(s=e.ref)&&(s.current&&s.current!=e.__e||be(s,null,t)),(s=e.__c)!=null){if(s.componentWillUnmount)try{s.componentWillUnmount()}catch(o){M.__e(o,t)}s.base=s.__P=null}if(s=e.__k)for(a=0;a<s.length;a++)s[a]&&Ke(s[a],t,n||typeof e.type!="function");n||we(e.__e),e.__c=e.__=e.__e=void 0}function Dt(e,t,n){return this.constructor(e,n)}function ue(e,t,n){var s,a,o,l;t==document&&(t=document.documentElement),M.__&&M.__(e,t),a=(s=typeof n=="function")?null:n&&n.__k||t.__k,o=[],l=[],$e(t,e=(!s&&n||t).__k=ie(ce,null,[e]),a||Z,Z,t.namespaceURI,!s&&n?[n]:a?null:t.firstChild?re.call(t.childNodes):null,o,!s&&n?n:a?a.__e:t.firstChild,s,l),Le(o,e,l)}re=Oe.slice,M={__e:function(e,t,n,s){for(var a,o,l;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),l=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,s||{}),l=a.__d),l)return a.__E=a}catch(c){e=c}throw e}},De=0,Tt=function(e){return e!=null&&e.constructor===void 0},Y.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=q({},this.state),typeof e=="function"&&(e=e(q({},n),this.props)),e&&q(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ee(this))},Y.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ee(this))},Y.prototype.render=ce,G=[],He=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ae=function(e,t){return e.__v.__b-t.__v.__b},ae.__r=0,Ne=/(PointerCapture)$|Capture$/i,ve=0,me=Pe(!1),ye=Pe(!0),Mt=0;var je=function(e,t,n,s){var a;t[0]=0;for(var o=1;o<t.length;o++){var l=t[o++],c=t[o]?(t[0]|=l?1:2,n[t[o++]]):t[++o];l===3?s[0]=c:l===4?s[1]=Object.assign(s[1]||{},c):l===5?(s[1]=s[1]||{})[t[++o]]=c:l===6?s[1][t[++o]]+=c+"":l?(a=e.apply(c,je(e,c,n,["",null])),s.push(a),c[0]?t[0]|=2:(t[o-2]=0,t[o]=a)):s.push(c)}return s},Be=new Map;function Je(e){var t=Be.get(this);return t||(t=new Map,Be.set(this,t)),(t=je(this,t.get(e)||(t.set(e,t=function(n){for(var s,a,o=1,l="",c="",_=[0],i=function(f){o===1&&(f||(l=l.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?_.push(0,f,l):o===3&&(f||l)?(_.push(3,f,l),o=2):o===2&&l==="..."&&f?_.push(4,f,0):o===2&&l&&!f?_.push(5,0,!0,l):o>=5&&((l||!f&&o===5)&&(_.push(o,0,l,a),o=6),f&&(_.push(o,f,0,a),o=6)),l=""},u=0;u<n.length;u++){u&&(o===1&&i(),i(u));for(var r=0;r<n[u].length;r++)s=n[u][r],o===1?s==="<"?(i(),_=[_],o=3):l+=s:o===4?l==="--"&&s===">"?(o=1,l=""):l=s+l[0]:c?s===c?c="":l+=s:s==='"'||s==="'"?c=s:s===">"?(i(),o=1):o&&(s==="="?(o=5,a=l,l=""):s==="/"&&(o<5||n[u][r+1]===">")?(i(),o===3&&(_=_[0]),o=_,(_=_[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
2
- `||s==="\r"?(i(),o=2):l+=s),o===3&&l==="!--"&&(o=4,_=_[0])}return i(),_}(e)),t),arguments,[])).length>1?t:t[0]}var y=Je.bind(ie);var ee,P,ke,Ve,te=0,et=[],D=M,qe=D.__b,ze=D.__r,Ge=D.diffed,Xe=D.__c,Qe=D.unmount,Ye=D.__;function Se(e,t){D.__h&&D.__h(P,e,te||t),te=0;var n=P.__H||(P.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function C(e){return te=1,Ht(nt,e)}function Ht(e,t,n){var s=Se(ee++,2);if(s.t=e,!s.__c&&(s.__=[n?n(t):nt(void 0,t),function(c){var _=s.__N?s.__N[0]:s.__[0],i=s.t(_,c);_!==i&&(s.__N=[i,s.__[1]],s.__c.setState({}))}],s.__c=P,!P.__f)){var a=function(c,_,i){if(!s.__c.__H)return!0;var u=s.__c.__H.__.filter(function(f){return!!f.__c});if(u.every(function(f){return!f.__N}))return!o||o.call(this,c,_,i);var r=s.__c.props!==c;return u.forEach(function(f){if(f.__N){var d=f.__[0];f.__=f.__N,f.__N=void 0,d!==f.__[0]&&(r=!0)}}),o&&o.call(this,c,_,i)||r};P.__f=!0;var o=P.shouldComponentUpdate,l=P.componentWillUpdate;P.componentWillUpdate=function(c,_,i){if(this.__e){var u=o;o=void 0,a(c,_,i),o=u}l&&l.call(this,c,_,i)},P.shouldComponentUpdate=a}return s.__N||s.__}function R(e,t){var n=Se(ee++,3);!D.__s&&tt(n.__H,t)&&(n.__=e,n.u=t,P.__H.__h.push(n))}function z(e){return te=5,ne(function(){return{current:e}},[])}function ne(e,t){var n=Se(ee++,7);return tt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function U(e,t){return te=8,ne(function(){return e},t)}function At(){for(var e;e=et.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(_e),e.__H.__h.forEach(Ce),e.__H.__h=[]}catch(t){e.__H.__h=[],D.__e(t,e.__v)}}D.__b=function(e){P=null,qe&&qe(e)},D.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ye&&Ye(e,t)},D.__r=function(e){ze&&ze(e),ee=0;var t=(P=e.__c).__H;t&&(ke===P?(t.__h=[],P.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(_e),t.__h.forEach(Ce),t.__h=[],ee=0)),ke=P},D.diffed=function(e){Ge&&Ge(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(et.push(t)!==1&&Ve===D.requestAnimationFrame||((Ve=D.requestAnimationFrame)||Nt)(At)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),ke=P=null},D.__c=function(e,t){t.some(function(n){try{n.__h.forEach(_e),n.__h=n.__h.filter(function(s){return!s.__||Ce(s)})}catch(s){t.some(function(a){a.__h&&(a.__h=[])}),t=[],D.__e(s,n.__v)}}),Xe&&Xe(e,t)},D.unmount=function(e){Qe&&Qe(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(s){try{_e(s)}catch(a){t=a}}),n.__H=void 0,t&&D.__e(t,n.__v))};var Ze=typeof requestAnimationFrame=="function";function Nt(e){var t,n=function(){clearTimeout(s),Ze&&cancelAnimationFrame(t),setTimeout(e)},s=setTimeout(n,35);Ze&&(t=requestAnimationFrame(n))}function _e(e){var t=P,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),P=t}function Ce(e){var t=P;e.__c=e.__(),P=t}function tt(e,t){return!e||e.length!==t.length||t.some(function(n,s){return n!==e[s]})}function nt(e,t){return typeof t=="function"?t(e):t}function de(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function H(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function ot(e){if(!e)return"";try{let t=new Date(e),s=new Date-t,a=Math.floor(s/6e4),o=Math.floor(s/36e5),l=Math.floor(s/864e5);return a<1?"Just now":a<60?`${a}m ago`:o<24?`${o}h ago`:l<7?`${l}d ago`:t.toLocaleDateString()}catch{return""}}function st(e,t=null){if(t)return t(e);let n=H(e);return n=n.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),n=n.replace(/__(.+?)__/g,"<strong>$1</strong>"),n=n.replace(/\*(.+?)\*/g,"<em>$1</em>"),n=n.replace(/_(.+?)_/g,"<em>$1</em>"),n=n.replace(/`(.+?)`/g,"<code>$1</code>"),n=n.replace(/\[(.+?)\]\((.+?)\)/g,'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'),n=n.replace(/\n/g,"<br>"),n}function at(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,s){try{let a=t(n);s===null?localStorage.removeItem(a):localStorage.setItem(a,s)}catch{}}}}function rt(e="csrftoken"){let t=document.cookie.split(";");for(let s of t){let[a,o]=s.trim().split("=");if(a===e)return decodeURIComponent(o)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function lt({config:e,debugMode:t,isExpanded:n,isSpeaking:s,messagesCount:a,isLoading:o,currentAgent:l,onClose:c,onToggleExpand:_,onToggleDebug:i,onToggleTTS:u,onClear:r,onToggleSidebar:f}){let{title:d,primaryColor:m,embedded:S,showConversationSidebar:b,showClearButton:g,showDebugButton:w,enableDebugMode:N,showTTSButton:A,showExpandButton:j,enableTTS:O,elevenLabsApiKey:L,ttsProxyUrl:W}=e,F=L||W;return y`
3
- <div class="cw-header" style=${{backgroundColor:m}}>
4
- ${b&&y`
1
+ var ChatWidgetModule=(()=>{var ye=Object.defineProperty;var St=Object.getOwnPropertyDescriptor;var Mt=Object.getOwnPropertyNames;var Tt=Object.prototype.hasOwnProperty;var xt=(e,t)=>{for(var n in t)ye(e,n,{get:t[n],enumerable:!0})},It=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Mt(t))!Tt.call(e,r)&&r!==n&&ye(e,r,{get:()=>t[r],enumerable:!(o=St(t,r))||o.enumerable});return e};var Et=e=>It(ye({},"__esModule",{value:!0}),e);var tn={};xt(tn,{ChatWidget:()=>ge,default:()=>en});var ie,P,Ne,Pt,Q,De,Fe,Oe,Ue,be,ve,we,Dt,ee={},We=[],At=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,le=Array.isArray;function X(e,t){for(var n in t)e[n]=t[n];return e}function ke(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ce(e,t,n){var o,r,s,i={};for(s in t)s=="key"?o=t[s]:s=="ref"?r=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?ie.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)i[s]===void 0&&(i[s]=e.defaultProps[s]);return re(e,i,o,r,null)}function re(e,t,n,o,r){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++Ne,__i:-1,__u:0};return r==null&&P.vnode!=null&&P.vnode(s),s}function ue(e){return e.children}function Z(e,t){this.props=e,this.context=t}function Y(e,t){if(t==null)return e.__?Y(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?Y(e):null}function Ke(e){var t,n;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null){e.__e=e.__c.base=n.__e;break}return Ke(e)}}function Ae(e){(!e.__d&&(e.__d=!0)&&Q.push(e)&&!ae.__r++||De!=P.debounceRendering)&&((De=P.debounceRendering)||Fe)(ae)}function ae(){for(var e,t,n,o,r,s,i,c=1;Q.length;)Q.length>c&&Q.sort(Oe),e=Q.shift(),c=Q.length,e.__d&&(n=void 0,o=void 0,r=(o=(t=e).__v).__e,s=[],i=[],t.__P&&((n=X({},o)).__v=o.__v+1,P.vnode&&P.vnode(n),Ce(t.__P,n,o,t.__n,t.__P.namespaceURI,32&o.__u?[r]:null,s,r??Y(o),!!(32&o.__u),i),n.__v=o.__v,n.__.__k[n.__i]=n,je(s,n,i),o.__e=o.__=null,n.__e!=r&&Ke(n)));ae.__r=0}function Le(e,t,n,o,r,s,i,c,d,l,u){var a,h,p,v,T,$,y,w=o&&o.__k||We,H=t.length;for(d=Ht(n,t,w,d,H),a=0;a<H;a++)(p=n.__k[a])!=null&&(h=p.__i==-1?ee:w[p.__i]||ee,p.__i=a,$=Ce(e,p,h,r,s,i,c,d,l,u),v=p.__e,p.ref&&h.ref!=p.ref&&(h.ref&&Se(h.ref,null,p),u.push(p.ref,p.__c||v,p)),T==null&&v!=null&&(T=v),(y=!!(4&p.__u))||h.__k===p.__k?d=Be(p,d,e,y):typeof p.type=="function"&&$!==void 0?d=$:v&&(d=v.nextSibling),p.__u&=-7);return n.__e=T,d}function Ht(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,h=0;for(e.__k=new Array(r),s=0;s<r;s++)(i=t[s])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[s]=re(null,i,null,null,null):le(i)?i=e.__k[s]=re(ue,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[s]=re(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,d=s+h,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Rt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?h--:r<u&&h++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?h--:l==d+1?h++:(l>d?h--:h++,i.__u|=4))):e.__k[s]=null;if(a)for(s=0;s<u;s++)(c=n[s])!=null&&!(2&c.__u)&&(c.__e==o&&(o=Y(c)),Je(c,c));return o}function Be(e,t,n,o){var r,s;if(typeof e.type=="function"){for(r=e.__k,s=0;r&&s<r.length;s++)r[s]&&(r[s].__=e,t=Be(r[s],t,n,o));return t}e.__e!=t&&(o&&(t&&e.type&&!t.parentNode&&(t=Y(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Rt(e,t,n,o){var r,s,i,c=e.key,d=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&c==null||u&&c==l.key&&d==l.type)return n;if(o>(u?1:0)){for(r=n-1,s=n+1;r>=0||s<t.length;)if((l=t[i=r>=0?r--:s++])!=null&&!(2&l.__u)&&c==l.key&&d==l.type)return i}return-1}function He(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||At.test(t)?n:n+"px"}function se(e,t,n,o,r){var s,i;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||He(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||He(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(Ue,"$1")),i=t.toLowerCase(),t=i in e||t=="onFocusOut"||t=="onFocusIn"?i.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?o?n.u=o.u:(n.u=be,e.addEventListener(t,s?we:ve,s)):e.removeEventListener(t,s?we:ve,s);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Re(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=be++;else if(t.t<n.u)return;return n(P.event?P.event(t):t)}}}function Ce(e,t,n,o,r,s,i,c,d,l){var u,a,h,p,v,T,$,y,w,H,S,K,D,z,J,L,m,b=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=P.__b)&&u(t);e:if(typeof b=="function")try{if(y=t.props,w="prototype"in b&&b.prototype.render,H=(u=b.contextType)&&o[u.__c],S=u?H?H.props.value:u.__:o,n.__c?$=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new b(y,S):(t.__c=a=new Z(y,S),a.constructor=b,a.render=Ft),H&&H.sub(a),a.state||(a.state={}),a.__n=o,h=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&b.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=X({},a.__s)),X(a.__s,b.getDerivedStateFromProps(y,a.__s))),p=a.props,v=a.state,a.__v=t,h)w&&b.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&b.getDerivedStateFromProps==null&&y!==p&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(y,S),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(y,a.__s,S)===!1){for(t.__v!=n.__v&&(a.props=y,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(A){A&&(A.__=t)}),K=0;K<a._sb.length;K++)a.__h.push(a._sb[K]);a._sb=[],a.__h.length&&i.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(y,a.__s,S),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(p,v,T)})}if(a.context=S,a.props=y,a.__P=e,a.__e=!1,D=P.__r,z=0,w){for(a.state=a.__s,a.__d=!1,D&&D(t),u=a.render(a.props,a.state,a.context),J=0;J<a._sb.length;J++)a.__h.push(a._sb[J]);a._sb=[]}else do a.__d=!1,D&&D(t),u=a.render(a.props,a.state,a.context),a.state=a.__s;while(a.__d&&++z<25);a.state=a.__s,a.getChildContext!=null&&(o=X(X({},o),a.getChildContext())),w&&!h&&a.getSnapshotBeforeUpdate!=null&&(T=a.getSnapshotBeforeUpdate(p,v)),L=u,u!=null&&u.type===ue&&u.key==null&&(L=ze(u.props.children)),c=Le(e,le(L)?L:[L],t,n,o,r,s,i,c,d,l),a.base=t.__e,t.__u&=-161,a.__h.length&&i.push(a),$&&(a.__E=a.__=null)}catch(A){if(t.__v=null,d||s!=null)if(A.then){for(t.__u|=d?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;s[s.indexOf(c)]=null,t.__e=c}else{for(m=s.length;m--;)ke(s[m]);$e(t)}else t.__e=n.__e,t.__k=n.__k,A.then||$e(t);P.__e(A,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Nt(n.__e,t,n,o,r,s,i,d,l);return(u=P.diffed)&&u(t),128&t.__u?void 0:c}function $e(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach($e)}function je(e,t,n){for(var o=0;o<n.length;o++)Se(n[o],n[++o],n[++o]);P.__c&&P.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){P.__e(s,r.__v)}})}function ze(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:le(e)?e.map(ze):X({},e)}function Nt(e,t,n,o,r,s,i,c,d){var l,u,a,h,p,v,T,$=n.props||ee,y=t.props,w=t.type;if(w=="svg"?r="http://www.w3.org/2000/svg":w=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),s!=null){for(l=0;l<s.length;l++)if((p=s[l])&&"setAttribute"in p==!!w&&(w?p.localName==w:p.nodeType==3)){e=p,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(y);e=document.createElementNS(r,w,y.is&&y),c&&(P.__m&&P.__m(t,s),c=!1),s=null}if(w==null)$===y||c&&e.data==y||(e.data=y);else{if(s=s&&ie.call(e.childNodes),!c&&s!=null)for($={},l=0;l<e.attributes.length;l++)$[(p=e.attributes[l]).name]=p.value;for(l in $)if(p=$[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=p;else if(!(l in y)){if(l=="value"&&"defaultValue"in y||l=="checked"&&"defaultChecked"in y)continue;se(e,l,null,p,r)}}for(l in y)p=y[l],l=="children"?h=p:l=="dangerouslySetInnerHTML"?u=p:l=="value"?v=p:l=="checked"?T=p:c&&typeof p!="function"||$[l]===p||se(e,l,p,$[l],r);if(u)c||a&&(u.__html==a.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(a&&(e.innerHTML=""),Le(t.type=="template"?e.content:e,le(h)?h:[h],t,n,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,i,s?s[0]:n.__k&&Y(n,0),c,d),s!=null)for(l=s.length;l--;)ke(s[l]);c||(l="value",w=="progress"&&v==null?e.removeAttribute("value"):v!=null&&(v!==e[l]||w=="progress"&&!v||w=="option"&&v!=$[l])&&se(e,l,v,$[l],r),l="checked",T!=null&&T!=e[l]&&se(e,l,T,$[l],r))}return e}function Se(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){P.__e(r,n)}}function Je(e,t,n){var o,r;if(P.unmount&&P.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Se(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){P.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&Je(o[r],t,n||typeof e.type!="function");n||ke(e.__e),e.__c=e.__=e.__e=void 0}function Ft(e,t,n){return this.constructor(e,n)}function de(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),P.__&&P.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],Ce(t,e=(!o&&n||t).__k=ce(ue,null,[e]),r||ee,ee,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?ie.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,i),je(s,e,i)}ie=We.slice,P={__e:function(e,t,n,o){for(var r,s,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},Ne=0,Pt=function(e){return e!=null&&e.constructor===void 0},Z.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=X({},this.state),typeof e=="function"&&(e=e(X({},n),this.props)),e&&X(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ae(this))},Z.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ae(this))},Z.prototype.render=ue,Q=[],Fe=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Oe=function(e,t){return e.__v.__b-t.__v.__b},ae.__r=0,Ue=/(PointerCapture)$|Capture$/i,be=0,ve=Re(!1),we=Re(!0),Dt=0;var qe=function(e,t,n,o){var r;t[0]=0;for(var s=1;s<t.length;s++){var i=t[s++],c=t[s]?(t[0]|=i?1:2,n[t[s++]]):t[++s];i===3?o[0]=c:i===4?o[1]=Object.assign(o[1]||{},c):i===5?(o[1]=o[1]||{})[t[++s]]=c:i===6?o[1][t[++s]]+=c+"":i?(r=e.apply(c,qe(e,c,n,["",null])),o.push(r),c[0]?t[0]|=2:(t[s-2]=0,t[s]=r)):o.push(c)}return o},Ve=new Map;function Ge(e){var t=Ve.get(this);return t||(t=new Map,Ve.set(this,t)),(t=qe(this,t.get(e)||(t.set(e,t=function(n){for(var o,r,s=1,i="",c="",d=[0],l=function(h){s===1&&(h||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,h,i):s===3&&(h||i)?(d.push(3,h,i),s=2):s===2&&i==="..."&&h?d.push(4,h,0):s===2&&i&&!h?d.push(5,0,!0,i):s>=5&&((i||!h&&s===5)&&(d.push(s,0,i,r),s=6),h&&(d.push(s,h,0,r),s=6)),i=""},u=0;u<n.length;u++){u&&(s===1&&l(),l(u));for(var a=0;a<n[u].length;a++)o=n[u][a],s===1?o==="<"?(l(),d=[d],s=3):i+=o:s===4?i==="--"&&o===">"?(s=1,i=""):i=o+i[0]:c?o===c?c="":i+=o:o==='"'||o==="'"?c=o:o===">"?(l(),s=1):s&&(o==="="?(s=5,r=i,i=""):o==="/"&&(s<5||n[u][a+1]===">")?(l(),s===3&&(d=d[0]),s=d,(d=d[0]).push(2,0,s),s=0):o===" "||o===" "||o===`
2
+ `||o==="\r"?(l(),s=2):i+=o),s===3&&i==="!--"&&(s=4,d=d[0])}return l(),d}(e)),t),arguments,[])).length>1?t:t[0]}var g=Ge.bind(ce);var te,N,Me,Xe,ne=0,st=[],F=P,Qe=F.__b,Ye=F.__r,Ze=F.diffed,et=F.__c,tt=F.unmount,nt=F.__;function xe(e,t){F.__h&&F.__h(N,e,ne||t),ne=0;var n=N.__H||(N.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function C(e){return ne=1,Ot(at,e)}function Ot(e,t,n){var o=xe(te++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):at(void 0,t),function(c){var d=o.__N?o.__N[0]:o.__[0],l=o.t(d,c);d!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=N,!N.__f)){var r=function(c,d,l){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(h){return!!h.__c});if(u.every(function(h){return!h.__N}))return!s||s.call(this,c,d,l);var a=o.__c.props!==c;return u.forEach(function(h){if(h.__N){var p=h.__[0];h.__=h.__N,h.__N=void 0,p!==h.__[0]&&(a=!0)}}),s&&s.call(this,c,d,l)||a};N.__f=!0;var s=N.shouldComponentUpdate,i=N.componentWillUpdate;N.componentWillUpdate=function(c,d,l){if(this.__e){var u=s;s=void 0,r(c,d,l),s=u}i&&i.call(this,c,d,l)},N.shouldComponentUpdate=r}return o.__N||o.__}function U(e,t){var n=xe(te++,3);!F.__s&&rt(n.__H,t)&&(n.__=e,n.u=t,N.__H.__h.push(n))}function q(e){return ne=5,oe(function(){return{current:e}},[])}function oe(e,t){var n=xe(te++,7);return rt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function B(e,t){return ne=8,oe(function(){return e},t)}function Ut(){for(var e;e=st.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(_e),e.__H.__h.forEach(Te),e.__H.__h=[]}catch(t){e.__H.__h=[],F.__e(t,e.__v)}}F.__b=function(e){N=null,Qe&&Qe(e)},F.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),nt&&nt(e,t)},F.__r=function(e){Ye&&Ye(e),te=0;var t=(N=e.__c).__H;t&&(Me===N?(t.__h=[],N.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(_e),t.__h.forEach(Te),t.__h=[],te=0)),Me=N},F.diffed=function(e){Ze&&Ze(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(st.push(t)!==1&&Xe===F.requestAnimationFrame||((Xe=F.requestAnimationFrame)||Wt)(Ut)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Me=N=null},F.__c=function(e,t){t.some(function(n){try{n.__h.forEach(_e),n.__h=n.__h.filter(function(o){return!o.__||Te(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],F.__e(o,n.__v)}}),et&&et(e,t)},F.unmount=function(e){tt&&tt(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{_e(o)}catch(r){t=r}}),n.__H=void 0,t&&F.__e(t,n.__v))};var ot=typeof requestAnimationFrame=="function";function Wt(e){var t,n=function(){clearTimeout(o),ot&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);ot&&(t=requestAnimationFrame(n))}function _e(e){var t=N,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),N=t}function Te(e){var t=N;e.__c=e.__(),N=t}function rt(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function at(e,t){return typeof t=="function"?t(e):t}function pe(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function O(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function it(e){if(!e)return"";try{let t=new Date(e),o=new Date-t,r=Math.floor(o/6e4),s=Math.floor(o/36e5),i=Math.floor(o/864e5);return r<1?"Just now":r<60?`${r}m ago`:s<24?`${s}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function lt(e,t=null){if(t)return t(e);let n=O(e);return n=n.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),n=n.replace(/__(.+?)__/g,"<strong>$1</strong>"),n=n.replace(/\*(.+?)\*/g,"<em>$1</em>"),n=n.replace(/_(.+?)_/g,"<em>$1</em>"),n=n.replace(/`(.+?)`/g,"<code>$1</code>"),n=n.replace(/\[(.+?)\]\((.+?)\)/g,'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'),n=n.replace(/\n/g,"<br>"),n}function ct(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,o){try{let r=t(n);o===null?localStorage.removeItem(r):localStorage.setItem(r,o)}catch{}}}}function ut(e="csrftoken"){let t=document.cookie.split(";");for(let o of t){let[r,s]=o.trim().split("=");if(r===e)return decodeURIComponent(s)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function fe(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,o)).toFixed(1))+" "+n[o]}function he(e){return e?e.startsWith("image/")?"\u{1F5BC}\uFE0F":e.startsWith("video/")?"\u{1F3AC}":e.startsWith("audio/")?"\u{1F3B5}":e.includes("pdf")?"\u{1F4D5}":e.includes("spreadsheet")||e.includes("excel")?"\u{1F4CA}":e.includes("document")||e.includes("word")?"\u{1F4DD}":e.includes("presentation")||e.includes("powerpoint")?"\u{1F4FD}\uFE0F":e.includes("zip")||e.includes("compressed")?"\u{1F5DC}\uFE0F":(e.includes("text/"),"\u{1F4C4}"):"\u{1F4C4}"}function dt({config:e,debugMode:t,isExpanded:n,isSpeaking:o,messagesCount:r,isLoading:s,currentAgent:i,onClose:c,onToggleExpand:d,onToggleDebug:l,onToggleTTS:u,onClear:a,onToggleSidebar:h}){let{title:p,primaryColor:v,embedded:T,showConversationSidebar:$,showClearButton:y,showDebugButton:w,enableDebugMode:H,showTTSButton:S,showExpandButton:K,enableTTS:D,elevenLabsApiKey:z,ttsProxyUrl:J}=e,L=z||J;return g`
3
+ <div class="cw-header" style=${{backgroundColor:v}}>
4
+ ${$&&g`
5
5
  <button
6
6
  class="cw-header-btn cw-hamburger"
7
- onClick=${f}
7
+ onClick=${h}
8
8
  title="Conversations"
9
9
  >
10
10
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16">
@@ -16,50 +16,50 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var wt=Object.getOwnProp
16
16
  `}
17
17
 
18
18
  <div class="cw-title-container">
19
- <span class="cw-title">${H(d)}</span>
20
- ${l&&y`
19
+ <span class="cw-title">${O(p)}</span>
20
+ ${i&&g`
21
21
  <span class="cw-current-agent" title="Currently active agent">
22
22
  <span class="cw-agent-indicator">🤖</span>
23
- <span class="cw-agent-name">${H(l.name||l.key)}</span>
23
+ <span class="cw-agent-name">${O(i.name||i.key)}</span>
24
24
  </span>
25
25
  `}
26
26
  </div>
27
27
 
28
28
  <div class="cw-header-actions">
29
- ${g&&y`
29
+ ${y&&g`
30
30
  <button
31
31
  class="cw-header-btn"
32
- onClick=${r}
32
+ onClick=${a}
33
33
  title="Clear"
34
- disabled=${o||a===0}
34
+ disabled=${s||r===0}
35
35
  >🗑️</button>
36
36
  `}
37
37
 
38
- ${w&&N&&y`
38
+ ${w&&H&&g`
39
39
  <button
40
40
  class="cw-header-btn ${t?"cw-btn-active":""}"
41
- onClick=${i}
41
+ onClick=${l}
42
42
  title="Debug"
43
43
  >🐛</button>
44
44
  `}
45
45
 
46
- ${A&&F&&y`
46
+ ${S&&L&&g`
47
47
  <button
48
- class="cw-header-btn ${O?"cw-btn-active":""}"
48
+ class="cw-header-btn ${D?"cw-btn-active":""}"
49
49
  onClick=${u}
50
50
  title="TTS"
51
- >${O?"\u{1F50A}":"\u{1F507}"}</button>
51
+ >${D?"\u{1F50A}":"\u{1F507}"}</button>
52
52
  `}
53
53
 
54
- ${j&&!S&&y`
54
+ ${K&&!T&&g`
55
55
  <button
56
56
  class="cw-header-btn"
57
- onClick=${_}
57
+ onClick=${d}
58
58
  title=${n?"Minimize":"Expand"}
59
59
  >${n?"\u2296":"\u2295"}</button>
60
60
  `}
61
61
 
62
- ${!S&&y`
62
+ ${!T&&g`
63
63
  <button
64
64
  class="cw-header-btn"
65
65
  onClick=${c}
@@ -68,70 +68,87 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var wt=Object.getOwnProp
68
68
  `}
69
69
  </div>
70
70
  </div>
71
- `}function Te({msg:e,show:t,onToggle:n}){return t?y`
71
+ `}function Ie({msg:e,show:t,onToggle:n}){return t?g`
72
72
  <div class="cw-debug-payload">
73
73
  <button class="cw-debug-payload-close" onClick=${n}>×</button>
74
74
  <pre class="cw-debug-payload-content">${JSON.stringify(e,null,2)}</pre>
75
75
  </div>
76
- `:y`
76
+ `:g`
77
77
  <button
78
78
  class="cw-debug-payload-btn"
79
79
  onClick=${n}
80
80
  title="Show message payload"
81
81
  >{ }</button>
82
- `}function it({msg:e,debugMode:t,markdownParser:n}){let[s,a]=C(!1),[o,l]=C(!1),c=e.role==="user",_=e.role==="system",i=e.type==="tool_call",u=e.type==="tool_result",r=e.type==="error",f=e.type==="sub_agent_start",d=e.type==="sub_agent_end",m=e.type==="agent_context";if(_&&!t)return null;if(f||d||m)return y`
83
- <div class="cw-agent-context ${f?"cw-agent-delegating":""} ${d?"cw-agent-returned":""}" style="position: relative;">
84
- <span class="cw-agent-context-icon">${f?"\u{1F517}":d?"\u2713":"\u{1F916}"}</span>
82
+ `}function _t({msg:e,debugMode:t,markdownParser:n}){let[o,r]=C(!1),[s,i]=C(!1),c=e.role==="user",d=e.role==="system",l=e.type==="tool_call",u=e.type==="tool_result",a=e.type==="error",h=e.type==="sub_agent_start",p=e.type==="sub_agent_end",v=e.type==="agent_context";if(d&&!t)return null;if(h||p||v)return g`
83
+ <div class="cw-agent-context ${h?"cw-agent-delegating":""} ${p?"cw-agent-returned":""}" style="position: relative;">
84
+ <span class="cw-agent-context-icon">${h?"\u{1F517}":p?"\u2713":"\u{1F916}"}</span>
85
85
  <span class="cw-agent-context-text">${e.content}</span>
86
- ${e.metadata?.agentName&&y`
86
+ ${e.metadata?.agentName&&g`
87
87
  <span class="cw-agent-context-name">${e.metadata.agentName}</span>
88
88
  `}
89
- ${t&&y`<${Te} msg=${e} show=${o} onToggle=${()=>l(!o)} />`}
89
+ ${t&&g`<${Ie} msg=${e} show=${s} onToggle=${()=>i(!s)} />`}
90
90
  </div>
91
- `;if(i||u){let w=e.metadata?.arguments||e.metadata?.result,N=A=>{if(typeof A=="string")try{return JSON.stringify(JSON.parse(A),null,2)}catch{return A}return JSON.stringify(A,null,2)};return y`
91
+ `;if(l||u){let S=e.metadata?.arguments||e.metadata?.result,K=D=>{if(typeof D=="string")try{return JSON.stringify(JSON.parse(D),null,2)}catch{return D}return JSON.stringify(D,null,2)};return g`
92
92
  <div class="cw-tool-message ${u?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
93
- <span class="cw-tool-label" onClick=${()=>w&&a(!s)}>
93
+ <span class="cw-tool-label" onClick=${()=>S&&r(!o)}>
94
94
  ${e.content}
95
- ${w&&y`<span class="cw-tool-expand">${s?"\u25BC":"\u25B6"}</span>`}
95
+ ${S&&g`<span class="cw-tool-expand">${o?"\u25BC":"\u25B6"}</span>`}
96
96
  </span>
97
- ${s&&w&&y`
98
- <pre class="cw-tool-details">${H(N(i?e.metadata.arguments:e.metadata.result))}</pre>
97
+ ${o&&S&&g`
98
+ <pre class="cw-tool-details">${O(K(l?e.metadata.arguments:e.metadata.result))}</pre>
99
99
  `}
100
- ${t&&y`<${Te} msg=${e} show=${o} onToggle=${()=>l(!o)} />`}
100
+ ${t&&g`<${Ie} msg=${e} show=${s} onToggle=${()=>i(!s)} />`}
101
101
  </div>
102
- `}let S=["cw-message",c&&"cw-message-user",r&&"cw-message-error"].filter(Boolean).join(" "),b=`cw-message-row ${c?"cw-message-row-user":""}`,g=e.role==="assistant"?st(e.content,n):H(e.content);return y`
103
- <div class=${b} style="position: relative;">
104
- <div class=${S} dangerouslySetInnerHTML=${{__html:g}} />
105
- ${t&&y`<${Te} msg=${e} show=${o} onToggle=${()=>l(!o)} />`}
102
+ `}let T=["cw-message",c&&"cw-message-user",a&&"cw-message-error"].filter(Boolean).join(" "),$=`cw-message-row ${c?"cw-message-row-user":""}`,y=e.role==="assistant"?lt(e.content,n):O(e.content),w=e.files&&e.files.length>0;return g`
103
+ <div class=${$} style="position: relative;">
104
+ ${w?g`
105
+ <div class="cw-message-attachments">
106
+ ${e.files.map(S=>S.type&&S.type.startsWith("image/")?g`
107
+ <a class="cw-attachment-thumbnail" href=${S.url} target="_blank" title=${S.name}>
108
+ <img src=${S.url} alt=${S.name} />
109
+ </a>
110
+ `:g`
111
+ <a class="cw-attachment-file" href=${S.url} target="_blank" title=${S.name}>
112
+ <span class="cw-attachment-icon">${he(S.type)}</span>
113
+ <span class="cw-attachment-info">
114
+ <span class="cw-attachment-name">${S.name}</span>
115
+ <span class="cw-attachment-size">${fe(S.size)}</span>
116
+ </span>
117
+ </a>
118
+ `)}
119
+ </div>
120
+ `:null}
121
+ <div class=${T} dangerouslySetInnerHTML=${{__html:y}} />
122
+ ${t&&g`<${Ie} msg=${e} show=${s} onToggle=${()=>i(!s)} />`}
106
123
  </div>
107
- `}function ct({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:a,debugMode:o,markdownParser:l,emptyStateTitle:c,emptyStateMessage:_}){let i=z(null),u=z(!0),r=d=>{let m=d.target,S=m.scrollHeight-m.scrollTop-m.clientHeight<100;if(u.current=S,m.scrollTop<50&&n&&!s){let b=m.scrollHeight;a().then(()=>{let g=m.scrollHeight;m.scrollTop=g-b+m.scrollTop})}};R(()=>{let d=i.current;d&&u.current&&requestAnimationFrame(()=>{d.scrollTop=d.scrollHeight})},[e,t]),R(()=>{let d=i.current;d&&e.length<=2&&(u.current=!0,requestAnimationFrame(()=>{d.scrollTop=d.scrollHeight}))},[e.length]);let f=e.length===0;return y`
108
- <div class="cw-messages" ref=${i} onScroll=${r}>
109
- ${f&&y`
124
+ `}function pt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:o,onLoadMore:r,debugMode:s,markdownParser:i,emptyStateTitle:c,emptyStateMessage:d}){let l=q(null),u=q(!0),a=p=>{let v=p.target,T=v.scrollHeight-v.scrollTop-v.clientHeight<100;if(u.current=T,v.scrollTop<50&&n&&!o){let $=v.scrollHeight;r().then(()=>{let y=v.scrollHeight;v.scrollTop=y-$+v.scrollTop})}};U(()=>{let p=l.current;p&&u.current&&requestAnimationFrame(()=>{p.scrollTop=p.scrollHeight})},[e,t]),U(()=>{let p=l.current;p&&e.length<=2&&(u.current=!0,requestAnimationFrame(()=>{p.scrollTop=p.scrollHeight}))},[e.length]);let h=e.length===0;return g`
125
+ <div class="cw-messages" ref=${l} onScroll=${a}>
126
+ ${h&&g`
110
127
  <div class="cw-empty-state">
111
128
  <svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
112
129
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
113
130
  </svg>
114
- <h3>${H(c)}</h3>
115
- <p>${H(_)}</p>
131
+ <h3>${O(c)}</h3>
132
+ <p>${O(d)}</p>
116
133
  </div>
117
134
  `}
118
135
 
119
- ${!f&&n&&y`
120
- <div class="cw-load-more" onClick=${a}>
121
- ${s?y`<span class="cw-spinner"></span><span>Loading...</span>`:y`<span>↑ Scroll up or click to load older messages</span>`}
136
+ ${!h&&n&&g`
137
+ <div class="cw-load-more" onClick=${r}>
138
+ ${o?g`<span class="cw-spinner"></span><span>Loading...</span>`:g`<span>↑ Scroll up or click to load older messages</span>`}
122
139
  </div>
123
140
  `}
124
141
 
125
- ${e.map(d=>y`
126
- <${it}
127
- key=${d.id}
128
- msg=${d}
129
- debugMode=${o}
130
- markdownParser=${l}
142
+ ${e.map(p=>g`
143
+ <${_t}
144
+ key=${p.id}
145
+ msg=${p}
146
+ debugMode=${s}
147
+ markdownParser=${i}
131
148
  />
132
149
  `)}
133
150
 
134
- ${t&&y`
151
+ ${t&&g`
135
152
  <div class="cw-message-row">
136
153
  <div class="cw-typing">
137
154
  <span class="cw-spinner"></span>
@@ -140,64 +157,121 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var wt=Object.getOwnProp
140
157
  </div>
141
158
  `}
142
159
  </div>
143
- `}function ut({onSend:e,onCancel:t,isLoading:n,placeholder:s,primaryColor:a}){let[o,l]=C(""),[c,_]=C(!1),i=z(null);R(()=>{!n&&i.current&&i.current.focus()},[n]),R(()=>{i.current&&(i.current.style.height="auto",i.current.style.height=Math.min(i.current.scrollHeight,150)+"px")},[o]);let u=m=>{m.preventDefault(),o.trim()&&!n&&(e(o),l(""),i.current&&(i.current.style.height="auto"))},r=m=>{m.key==="Enter"&&!m.shiftKey&&(m.preventDefault(),u(m))},f=m=>{n&&t&&(m.preventDefault(),t())},d=y`
160
+ `}var Ee=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function ft({onSend:e,onCancel:t,isLoading:n,placeholder:o,primaryColor:r,enableVoice:s=!0,enableFiles:i=!0}){let[c,d]=C(""),[l,u]=C([]),[a,h]=C(!1),[p,v]=C(!1),[T]=C(()=>!!Ee),$=q(null),y=q(null),w=q(null),H=q(!1);U(()=>{!n&&$.current&&$.current.focus()},[n]),U(()=>{$.current&&($.current.style.height="auto",$.current.style.height=Math.min($.current.scrollHeight,150)+"px")},[c]),U(()=>()=>{H.current=!1,w.current&&w.current.abort()},[]);let S=_=>{_.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),d(""),u([]),$.current&&($.current.style.height="auto"),y.current&&(y.current.value=""))},K=_=>{let f=Array.from(_.target.files||[]);f.length>0&&u(k=>[...k,...f])},D=_=>{u(f=>f.filter((k,x)=>x!==_))},z=_=>{_.preventDefault(),y.current&&!n&&y.current.click()},J=_=>{_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),S(_))},L=_=>{n&&t&&(_.preventDefault(),t())},m=()=>{if(!Ee||n)return;H.current=!0;let _=new Ee;_.continuous=!0,_.interimResults=!0,_.lang=navigator.language||"en-US";let f=c,k="";_.onstart=()=>{v(!0)},_.onresult=x=>{k="";for(let V=x.resultIndex;V<x.results.length;V++){let j=x.results[V][0].transcript;x.results[V].isFinal?f+=(f?" ":"")+j:k+=j}d(f+(k?" "+k:""))},_.onerror=x=>{if(x.error==="no-speech"||x.error==="aborted"){console.log("[ChatWidget] Speech recognition:",x.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",x.error),H.current=!1,v(!1),d(f||c)},_.onend=()=>{if(H.current){console.log("[ChatWidget] Recognition paused, restarting...");try{_.start();return}catch(x){console.warn("[ChatWidget] Could not restart recognition:",x)}}v(!1),f&&d(f),w.current=null},w.current=_,_.start()},b=()=>{H.current=!1,w.current&&w.current.stop()},A=_=>{_.preventDefault(),p?b():m()},E=g`
144
161
  <svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
145
162
  <rect x="2" y="2" width="10" height="10" rx="1" />
146
163
  </svg>
147
- `;return y`
148
- <form class="cw-input-form" onSubmit=${u}>
164
+ `,R=g`
165
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
166
+ <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
167
+ <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
168
+ <line x1="12" y1="19" x2="12" y2="23"></line>
169
+ <line x1="8" y1="23" x2="16" y2="23"></line>
170
+ </svg>
171
+ `,M=g`
172
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
173
+ <path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>
174
+ </svg>
175
+ `,W=s&&T,G=i;return g`
176
+ <form class="cw-input-form" onSubmit=${S}>
177
+ <input
178
+ type="file"
179
+ ref=${y}
180
+ style="display: none"
181
+ multiple
182
+ onChange=${K}
183
+ />
184
+ ${l.length>0&&g`
185
+ <div class="cw-file-chips">
186
+ ${l.map((_,f)=>g`
187
+ <div class="cw-file-chip" key=${f}>
188
+ <span class="cw-file-chip-icon">${he(_.type)}</span>
189
+ <span class="cw-file-chip-name" title=${_.name}>${_.name.length>20?_.name.substring(0,17)+"...":_.name}</span>
190
+ <span class="cw-file-chip-size">(${fe(_.size)})</span>
191
+ <button
192
+ type="button"
193
+ class="cw-file-chip-remove"
194
+ onClick=${()=>D(f)}
195
+ title="Remove file"
196
+ >×</button>
197
+ </div>
198
+ `)}
199
+ </div>
200
+ `}
149
201
  <textarea
150
- ref=${i}
202
+ ref=${$}
151
203
  class="cw-input"
152
- placeholder=${H(s)}
153
- value=${o}
154
- onInput=${m=>l(m.target.value)}
155
- onKeyDown=${r}
204
+ placeholder=${O(o)}
205
+ value=${c}
206
+ onInput=${_=>d(_.target.value)}
207
+ onKeyDown=${J}
156
208
  disabled=${n}
157
209
  rows="1"
158
210
  />
211
+ ${G&&g`
212
+ <button
213
+ type="button"
214
+ class="cw-attach-btn"
215
+ onClick=${z}
216
+ disabled=${n}
217
+ title="Attach files"
218
+ >
219
+ ${M}
220
+ </button>
221
+ `}
222
+ ${W&&g`
223
+ <button
224
+ type="button"
225
+ class=${`cw-voice-btn ${p?"cw-voice-btn-recording":""}`}
226
+ onClick=${A}
227
+ disabled=${n}
228
+ title=${p?"Stop recording":"Voice input"}
229
+ >
230
+ ${R}
231
+ </button>
232
+ `}
159
233
  <button
160
234
  type=${n?"button":"submit"}
161
- class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&c?"cw-send-btn-stop":""}`}
162
- style=${{backgroundColor:n&&c?"#dc2626":a}}
163
- onClick=${f}
164
- onMouseEnter=${()=>_(!0)}
165
- onMouseLeave=${()=>_(!1)}
235
+ class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&a?"cw-send-btn-stop":""}`}
236
+ style=${{backgroundColor:n&&a?"#dc2626":r}}
237
+ onClick=${L}
238
+ onMouseEnter=${()=>h(!0)}
239
+ onMouseLeave=${()=>h(!1)}
166
240
  title=${n?"Stop":"Send"}
167
241
  >
168
- ${n?c?d:y`<span class="cw-spinner"></span>`:"\u27A4"}
242
+ ${n?a?E:g`<span class="cw-spinner"></span>`:"\u27A4"}
169
243
  </button>
170
244
  </form>
171
- `}function _t({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:a,onNewConversation:o,onSwitchConversation:l}){return y`
245
+ `}function ht({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return g`
172
246
  <div class="cw-sidebar ${e?"cw-sidebar-open":""}">
173
247
  <div class="cw-sidebar-header">
174
248
  <span>Conversations</span>
175
- <button class="cw-sidebar-close" onClick=${a}>✕</button>
249
+ <button class="cw-sidebar-close" onClick=${r}>✕</button>
176
250
  </div>
177
251
 
178
- <button class="cw-new-conversation" onClick=${o}>
252
+ <button class="cw-new-conversation" onClick=${s}>
179
253
  <span>+ New Conversation</span>
180
254
  </button>
181
255
 
182
256
  <div class="cw-conversation-list">
183
- ${n&&y`
257
+ ${n&&g`
184
258
  <div class="cw-sidebar-loading">
185
259
  <span class="cw-spinner"></span>
186
260
  </div>
187
261
  `}
188
262
 
189
- ${!n&&t.length===0&&y`
263
+ ${!n&&t.length===0&&g`
190
264
  <div class="cw-sidebar-empty">No conversations yet</div>
191
265
  `}
192
266
 
193
- ${t.map(c=>y`
267
+ ${t.map(c=>g`
194
268
  <div
195
269
  key=${c.id}
196
- class="cw-conversation-item ${c.id===s?"cw-conversation-active":""}"
197
- onClick=${()=>l(c.id)}
270
+ class="cw-conversation-item ${c.id===o?"cw-conversation-active":""}"
271
+ onClick=${()=>i(c.id)}
198
272
  >
199
- <div class="cw-conversation-title">${H(c.title||"Untitled")}</div>
200
- <div class="cw-conversation-date">${ot(c.updatedAt||c.createdAt)}</div>
273
+ <div class="cw-conversation-title">${O(c.title||"Untitled")}</div>
274
+ <div class="cw-conversation-date">${it(c.updatedAt||c.createdAt)}</div>
201
275
  </div>
202
276
  `)}
203
277
  </div>
@@ -205,115 +279,116 @@ var ChatWidgetModule=(()=>{var he=Object.defineProperty;var wt=Object.getOwnProp
205
279
 
206
280
  <div
207
281
  class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
208
- onClick=${a}
282
+ onClick=${r}
209
283
  />
210
- `}function dt({availableModels:e,selectedModel:t,onSelectModel:n,disabled:s}){let[a,o]=C(!1);if(!e||e.length===0)return null;let c=e.find(u=>u.id===t)?.name||"Select Model",_=()=>{s||o(!a)},i=u=>{n(u),o(!1)};return y`
284
+ `}function mt({availableModels:e,selectedModel:t,onSelectModel:n,disabled:o}){let[r,s]=C(!1);if(!e||e.length===0)return null;let c=e.find(u=>u.id===t)?.name||"Select Model",d=()=>{o||s(!r)},l=u=>{n(u),s(!1)};return g`
211
285
  <div class="cw-model-selector">
212
286
  <button
213
287
  class="cw-model-btn"
214
- onClick=${_}
215
- disabled=${s}
288
+ onClick=${d}
289
+ disabled=${o}
216
290
  title="Select Model"
217
291
  >
218
292
  <span class="cw-model-icon">🤖</span>
219
- <span class="cw-model-name">${H(c)}</span>
220
- <span class="cw-model-chevron">${a?"\u25B2":"\u25BC"}</span>
293
+ <span class="cw-model-name">${O(c)}</span>
294
+ <span class="cw-model-chevron">${r?"\u25B2":"\u25BC"}</span>
221
295
  </button>
222
296
 
223
- ${a&&y`
297
+ ${r&&g`
224
298
  <div class="cw-model-dropdown">
225
- ${e.map(u=>y`
299
+ ${e.map(u=>g`
226
300
  <button
227
301
  key=${u.id}
228
302
  class="cw-model-option ${u.id===t?"cw-model-option-selected":""}"
229
- onClick=${()=>i(u.id)}
303
+ onClick=${()=>l(u.id)}
230
304
  >
231
- <span class="cw-model-option-name">${H(u.name)}</span>
232
- <span class="cw-model-option-provider">${H(u.provider)}</span>
233
- ${u.description&&y`
234
- <span class="cw-model-option-desc">${H(u.description)}</span>
305
+ <span class="cw-model-option-name">${O(u.name)}</span>
306
+ <span class="cw-model-option-provider">${O(u.provider)}</span>
307
+ ${u.description&&g`
308
+ <span class="cw-model-option-desc">${O(u.description)}</span>
235
309
  `}
236
310
  </button>
237
311
  `)}
238
312
  </div>
239
313
  `}
240
314
  </div>
241
- `}function pt(e,t,n){let[s,a]=C([]),[o,l]=C(!1),[c,_]=C(null),[i,u]=C(()=>n?.get(e.conversationIdKey)||null),[r,f]=C(!1),[d,m]=C(!1),[S,b]=C(0),g=z(null),w=z(null);R(()=>{i&&n?.set(e.conversationIdKey,i)},[i,e.conversationIdKey,n]);let N=U(async(p,$,E)=>{g.current&&g.current.close();let I=e.apiPaths.runEvents.replace("{runId}",p),K=`${e.backendUrl}${I}`;$&&(K+=`?anonymous_token=${encodeURIComponent($)}`);let k=new EventSource(K);g.current=k;let B="";k.addEventListener("assistant.message",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let x=h.payload.content;x&&(B+=x,a(V=>{let Q=V[V.length-1];return Q?.role==="assistant"&&Q.id.startsWith("assistant-stream-")?[...V.slice(0,-1),{...Q,content:B}]:[...V,{id:"assistant-stream-"+Date.now(),role:"assistant",content:B,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),k.addEventListener("tool.call",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("tool.call",h.payload),a(x=>[...x,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${h.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:h.payload.name,arguments:h.payload.arguments,toolCallId:h.payload.id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),k.addEventListener("tool.result",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("tool.result",h.payload);let x=h.payload.result,V=x?.error;a(Q=>[...Q,{id:"tool-result-"+Date.now(),role:"system",content:V?`\u274C ${x.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:x,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),k.addEventListener("custom",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("custom",h.payload),h.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(h.payload),h.payload?.type==="agent_context"&&a(x=>[...x,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${h.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:h.payload.agent_key,agentName:h.payload.agent_name,action:h.payload.action}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),k.addEventListener("sub_agent.start",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),a(x=>[...x,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${h.payload.agent_name||h.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name,invocationMode:h.payload.invocation_mode}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),k.addEventListener("sub_agent.end",v=>{try{let h=JSON.parse(v.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),a(x=>[...x,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${h.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}});let J=v=>{try{let h=JSON.parse(v.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let x=h.payload.error||"Agent run failed";_(x),a(V=>[...V,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${x}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}l(!1),k.close(),g.current=null,B&&E&&E(B)};k.addEventListener("run.succeeded",J),k.addEventListener("run.failed",J),k.addEventListener("run.cancelled",J),k.addEventListener("run.timed_out",J),k.onerror=()=>{l(!1),k.close(),g.current=null}},[e]),A=U(async(p,$={})=>{if(!p.trim()||o)return;let{model:E,onAssistantMessage:I}=typeof $=="function"?{onAssistantMessage:$}:$;l(!0),_(null);let K={id:de(),role:"user",content:p.trim(),timestamp:new Date,type:"message"};a(k=>[...k,K]);try{let k=await t.getOrCreateSession(),B={agentKey:e.agentKey,conversationId:i,messages:[{role:"user",content:p.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType}};E&&(B.model=E);let J=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(B)}));if(!J.ok){let x=await J.json().catch(()=>({}));throw new Error(x.error||`HTTP ${J.status}`)}let v=await J.json();w.current=v.id;let h=v.conversationId||v.conversation_id;!i&&h&&u(h),await N(v.id,k,I)}catch(k){_(k.message||"Failed to send message"),l(!1)}finally{w.current=null}},[e,t,i,o,N]),j=U(async()=>{let p=w.current;if(!(!p||!o))try{let $=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",p):`${e.apiPaths.runs}${p}/cancel/`;(await fetch(`${e.backendUrl}${$}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(g.current&&(g.current.close(),g.current=null),l(!1),w.current=null,a(I=>[...I,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch($){console.error("[ChatWidget] Failed to cancel run:",$)}},[e,t,o]),O=U(()=>{a([]),u(null),_(null),f(!1),b(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),L=p=>{let $={id:de(),role:p.role,timestamp:p.timestamp?new Date(p.timestamp):new Date};if(p.role==="tool")return{...$,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:p.content,toolCallId:p.tool_call_id}};if(p.role==="assistant"&&p.tool_calls&&p.tool_calls.length>0)return p.tool_calls.map(I=>({id:de(),role:"assistant",content:`\u{1F527} ${I.function?.name||I.name||"tool"}`,timestamp:$.timestamp,type:"tool_call",metadata:{toolName:I.function?.name||I.name,arguments:I.function?.arguments||I.arguments,toolCallId:I.id}}));let E=typeof p.content=="string"?p.content:JSON.stringify(p.content);return p.role==="assistant"&&!E?.trim()?null:{...$,content:E,type:"message"}},W=U(async p=>{l(!0),a([]),u(p);try{let $=await t.getOrCreateSession(),I=`${e.backendUrl}${e.apiPaths.conversations}${p}/?limit=10&offset=0`,K=await fetch(I,t.getFetchOptions({method:"GET"}));if(K.ok){let k=await K.json();k.messages&&a(k.messages.flatMap(L).filter(Boolean)),f(k.has_more||k.hasMore||!1),b(k.messages?.length||0)}else K.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch($){console.error("[ChatWidget] Failed to load conversation:",$)}finally{l(!1)}},[e,t,n]),F=U(async()=>{if(!(!i||d||!r)){m(!0);try{let $=`${e.backendUrl}${e.apiPaths.conversations}${i}/?limit=10&offset=${S}`,E=await fetch($,t.getFetchOptions({method:"GET"}));if(E.ok){let I=await E.json();if(I.messages?.length>0){let K=I.messages.flatMap(L).filter(Boolean);a(k=>[...K,...k]),b(k=>k+I.messages.length),f(I.has_more||I.hasMore||!1)}else f(!1)}}catch(p){console.error("[ChatWidget] Failed to load more messages:",p)}finally{m(!1)}}},[e,t,i,S,d,r]);return R(()=>()=>{g.current&&g.current.close()},[]),{messages:s,isLoading:o,error:c,conversationId:i,hasMoreMessages:r,loadingMoreMessages:d,sendMessage:A,cancelRun:j,clearMessages:O,loadConversation:W,loadMoreMessages:F,setConversationId:u}}function ft(e,t,n){let[s,a]=C([]),[o,l]=C(null),[c,_]=C(null),[i,u]=C(!1);R(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let m=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(m.ok){let S=await m.json(),b=S.models||[];a(b),_(S.default);let g=n?.get(e.modelKey);g&&b.some(w=>w.id===g)?l(g):l(S.default)}}catch(m){console.warn("[ChatWidget] Failed to load models:",m)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let r=U(d=>{l(d),n?.set(e.modelKey,d)},[e.modelKey,n]),f=U(()=>s.find(d=>d.id===o)||null,[s,o]);return{availableModels:s,selectedModel:o,defaultModel:c,isLoading:i,selectModel:r,getSelectedModelInfo:f}}function ht(e,t,n){let s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",a=()=>{let c=s(),_={},i=e.authToken||t().authToken;if(c==="token"&&i){let u=e.authHeader||"Authorization",r=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";_[u]=r?`${r} ${i}`:i}else if(c==="jwt"&&i){let u=e.authHeader||"Authorization",r=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";_[u]=r?`${r} ${i}`:i}else if(c==="anonymous"&&i){let u=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";_[u]=i}if(c==="session"){let u=rt(e.csrfCookieName);u&&(_["X-CSRFToken"]=u)}return _};return{getAuthStrategy:s,getAuthHeaders:a,getFetchOptions:(c={})=>{let _=s(),i={...c};return i.headers={...i.headers,...a()},_==="session"&&(i.credentials="include"),i},getOrCreateSession:async()=>{let c=s(),_=t();if(c!=="anonymous")return e.authToken||_.authToken;if(_.authToken)return _.authToken;let i=e.anonymousTokenKey||e.sessionTokenKey,u=_.storage?.get(i);if(u)return n(r=>({...r,authToken:u})),u;try{let r=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,f=await fetch(`${e.backendUrl}${r}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(f.ok){let d=await f.json();return n(m=>({...m,authToken:d.token})),_.storage?.set(i,d.token),d.token}}catch(r){console.warn("[ChatWidget] Failed to create session:",r)}return null}}}function mt({config:e,onStateChange:t,markdownParser:n,apiRef:s}){let[a,o]=C(e.embedded||e.forceOpen===!0),[l,c]=C(!1),[_,i]=C(!1),[u,r]=C(!1),[f,d]=C([]),[m,S]=C(!1),[b,g]=C(e.enableTTS),[w,N]=C(!1),[A,j]=C(null);R(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let O=ne(()=>at(e.containerId),[e.containerId]),[L,W]=C(e.authToken||null),F=ne(()=>ht(e,()=>({authToken:L,storage:O}),x=>{let V=x({authToken:L,storage:O});V.authToken!==L&&W(V.authToken)}),[e,L,O]),p=pt(e,F,O),$=ft(e,F,O);R(()=>{for(let v=p.messages.length-1;v>=0;v--){let h=p.messages[v];if(h.type==="sub_agent_start"){j({key:h.metadata?.subAgentKey,name:h.metadata?.agentName});return}if(h.type==="sub_agent_end"){j(null);return}}},[p.messages]),R(()=>{let v=O.get(e.conversationIdKey);v&&p.loadConversation(v)},[]),R(()=>{t&&t({isOpen:a,isExpanded:l,debugMode:_,messages:p.messages,conversationId:p.conversationId,isLoading:p.isLoading,error:p.error})},[a,l,_,p.messages,p.conversationId,p.isLoading,p.error]);let E=U(async()=>{if(e.showConversationSidebar){S(!0);try{let v=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,h=await fetch(v,F.getFetchOptions({method:"GET"}));if(h.ok){let x=await h.json();d(x.results||x)}}catch(v){console.error("[ChatWidget] Failed to load conversations:",v),d([])}finally{S(!1)}}},[e,F]),I=U(()=>{let v=!u;r(v),v&&E()},[u,E]),K=U(v=>{v!==p.conversationId&&p.loadConversation(v),r(!1)},[p]),k=U(()=>{p.clearMessages(),r(!1)},[p]),B=U(v=>{p.sendMessage(v,{model:$.selectedModel,onAssistantMessage:h=>{}})},[p,b,$.selectedModel]);if(R(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:v=>B(v),clearMessages:()=>p.clearMessages(),toggleTTS:()=>g(v=>!v),stopSpeech:()=>N(!1),setAuth:v=>{v.token!==void 0&&W(v.token)},clearAuth:()=>W(null)})},[p,s,B]),!e.embedded&&!a)return y`
315
+ `}function gt(e,t,n){let[o,r]=C([]),[s,i]=C(!1),[c,d]=C(null),[l,u]=C(()=>n?.get(e.conversationIdKey)||null),[a,h]=C(!1),[p,v]=C(!1),[T,$]=C(0),y=q(null),w=q(null);U(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let H=B(async(m,b,A)=>{y.current&&y.current.close();let E=e.apiPaths.runEvents.replace("{runId}",m),R=`${e.backendUrl}${E}`;b&&(R+=`?anonymous_token=${encodeURIComponent(b)}`);let M=new EventSource(R);y.current=M;let W="";M.addEventListener("assistant.message",_=>{try{let f=JSON.parse(_.data);e.onEvent&&e.onEvent("assistant.message",f.payload);let k=f.payload.content;k&&(W+=k,r(x=>{let V=x[x.length-1];return V?.role==="assistant"&&V.id.startsWith("assistant-stream-")?[...x.slice(0,-1),{...V,content:W}]:[...x,{id:"assistant-stream-"+Date.now(),role:"assistant",content:W,timestamp:new Date,type:"message"}]}))}catch(f){console.error("[ChatWidget] Parse error:",f)}}),M.addEventListener("tool.call",_=>{try{let f=JSON.parse(_.data);e.onEvent&&e.onEvent("tool.call",f.payload),r(k=>[...k,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${f.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:f.payload.name,arguments:f.payload.arguments,toolCallId:f.payload.id}}])}catch(f){console.error("[ChatWidget] Parse error:",f)}}),M.addEventListener("tool.result",_=>{try{let f=JSON.parse(_.data);e.onEvent&&e.onEvent("tool.result",f.payload);let k=f.payload.result,x=k?.error;r(V=>[...V,{id:"tool-result-"+Date.now(),role:"system",content:x?`\u274C ${k.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:f.payload.name,result:k,toolCallId:f.payload.tool_call_id}}])}catch(f){console.error("[ChatWidget] Parse error:",f)}}),M.addEventListener("custom",_=>{try{let f=JSON.parse(_.data);e.onEvent&&e.onEvent("custom",f.payload),f.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(f.payload),f.payload?.type==="agent_context"&&r(k=>[...k,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${f.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:f.payload.agent_key,agentName:f.payload.agent_name,action:f.payload.action}}])}catch(f){console.error("[ChatWidget] Parse error:",f)}}),M.addEventListener("sub_agent.start",_=>{try{let f=JSON.parse(_.data);e.onEvent&&e.onEvent("sub_agent.start",f.payload),r(k=>[...k,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${f.payload.agent_name||f.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:f.payload.sub_agent_key,agentName:f.payload.agent_name,invocationMode:f.payload.invocation_mode}}])}catch(f){console.error("[ChatWidget] Parse error:",f)}}),M.addEventListener("sub_agent.end",_=>{try{let f=JSON.parse(_.data);e.onEvent&&e.onEvent("sub_agent.end",f.payload),r(k=>[...k,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${f.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:f.payload.sub_agent_key,agentName:f.payload.agent_name}}])}catch(f){console.error("[ChatWidget] Parse error:",f)}});let G=_=>{try{let f=JSON.parse(_.data);if(e.onEvent&&e.onEvent(f.type,f.payload),f.type==="run.failed"){let k=f.payload.error||"Agent run failed";d(k),r(x=>[...x,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${k}`,timestamp:new Date,type:"error"}])}}catch(f){console.error("[ChatWidget] Parse error:",f)}i(!1),M.close(),y.current=null,W&&A&&A(W)};M.addEventListener("run.succeeded",G),M.addEventListener("run.failed",G),M.addEventListener("run.cancelled",G),M.addEventListener("run.timed_out",G),M.onerror=()=>{i(!1),M.close(),y.current=null}},[e]),S=B(async(m,b={},A={})=>{if(!m.trim()||s)return;let E=[],R={};typeof b=="function"?R={onAssistantMessage:b}:Array.isArray(b)?(E=b,R=A):R=b||{};let{model:M,onAssistantMessage:W}=R;i(!0),d(null);let G={id:pe(),role:"user",content:m.trim(),timestamp:new Date,type:"message",files:E.length>0?E.map(_=>({name:_.name,size:_.size,type:_.type})):void 0};r(_=>[..._,G]);try{let _=await t.getOrCreateSession(),f;if(E.length>0){let j=new FormData;j.append("agentKey",e.agentKey),l&&j.append("conversationId",l),j.append("messages",JSON.stringify([{role:"user",content:m.trim()}])),j.append("metadata",JSON.stringify({...e.metadata,journeyType:e.defaultJourneyType})),M&&j.append("model",M),E.forEach(Ct=>{j.append("files",Ct)}),f=t.getFetchOptions({method:"POST",body:j},_)}else{let j={agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:m.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType}};M&&(j.model=M),f=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j)},_)}let k=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,f);if(!k.ok){let j=await k.json().catch(()=>({}));throw new Error(j.error||`HTTP ${k.status}`)}let x=await k.json();w.current=x.id;let V=x.conversationId||x.conversation_id;!l&&V&&u(V),await H(x.id,_,W)}catch(_){d(_.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,H]),K=B(async()=>{let m=w.current;if(!(!m||!s))try{let b=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",m):`${e.apiPaths.runs}${m}/cancel/`;(await fetch(`${e.backendUrl}${b}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(y.current&&(y.current.close(),y.current=null),i(!1),w.current=null,r(E=>[...E,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(b){console.error("[ChatWidget] Failed to cancel run:",b)}},[e,t,s]),D=B(()=>{r([]),u(null),d(null),h(!1),$(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),z=m=>{let b={id:pe(),role:m.role,timestamp:m.timestamp?new Date(m.timestamp):new Date};if(m.role==="tool")return{...b,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:m.content,toolCallId:m.tool_call_id}};if(m.role==="assistant"&&m.tool_calls&&m.tool_calls.length>0)return m.tool_calls.map(E=>({id:pe(),role:"assistant",content:`\u{1F527} ${E.function?.name||E.name||"tool"}`,timestamp:b.timestamp,type:"tool_call",metadata:{toolName:E.function?.name||E.name,arguments:E.function?.arguments||E.arguments,toolCallId:E.id}}));let A=typeof m.content=="string"?m.content:JSON.stringify(m.content);return m.role==="assistant"&&!A?.trim()?null:{...b,content:A,type:"message"}},J=B(async m=>{i(!0),r([]),u(m);try{let b=await t.getOrCreateSession(),E=`${e.backendUrl}${e.apiPaths.conversations}${m}/?limit=10&offset=0`,R=await fetch(E,t.getFetchOptions({method:"GET"},b));if(R.ok){let M=await R.json();M.messages&&r(M.messages.flatMap(z).filter(Boolean)),h(M.has_more||M.hasMore||!1),$(M.messages?.length||0)}else R.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(b){console.error("[ChatWidget] Failed to load conversation:",b)}finally{i(!1)}},[e,t,n]),L=B(async()=>{if(!(!l||p||!a)){v(!0);try{let m=await t.getOrCreateSession(),A=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${T}`,E=await fetch(A,t.getFetchOptions({method:"GET"},m));if(E.ok){let R=await E.json();if(R.messages?.length>0){let M=R.messages.flatMap(z).filter(Boolean);r(W=>[...M,...W]),$(W=>W+R.messages.length),h(R.has_more||R.hasMore||!1)}else h(!1)}}catch(m){console.error("[ChatWidget] Failed to load more messages:",m)}finally{v(!1)}}},[e,t,l,T,p,a]);return U(()=>()=>{y.current&&y.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:p,sendMessage:S,cancelRun:K,clearMessages:D,loadConversation:J,loadMoreMessages:L,setConversationId:u}}function yt(e,t,n){let[o,r]=C([]),[s,i]=C(null),[c,d]=C(null),[l,u]=C(!1);U(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let v=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(v.ok){let T=await v.json(),$=T.models||[];r($),d(T.default);let y=n?.get(e.modelKey);y&&$.some(w=>w.id===y)?i(y):i(T.default)}}catch(v){console.warn("[ChatWidget] Failed to load models:",v)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=B(p=>{i(p),n?.set(e.modelKey,p)},[e.modelKey,n]),h=B(()=>o.find(p=>p.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:h}}function vt(e,t,n){let o=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",r=(c=null)=>{let d=o(),l={},u=c||e.authToken||t().authToken;if(d==="token"&&u){let a=e.authHeader||"Authorization",h=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";l[a]=h?`${h} ${u}`:u}else if(d==="jwt"&&u){let a=e.authHeader||"Authorization",h=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";l[a]=h?`${h} ${u}`:u}else if(d==="anonymous"&&u){let a=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";l[a]=u}if(d==="session"){let a=ut(e.csrfCookieName);a&&(l["X-CSRFToken"]=a)}return l};return{getAuthStrategy:o,getAuthHeaders:r,getFetchOptions:(c={},d=null)=>{let l=o(),u={...c};return u.headers={...u.headers,...r(d)},l==="session"&&(u.credentials="include"),u},getOrCreateSession:async()=>{let c=o(),d=t();if(c!=="anonymous")return e.authToken||d.authToken;if(d.authToken)return d.authToken;let l=e.anonymousTokenKey||e.sessionTokenKey,u=d.storage?.get(l);if(u)return n(a=>({...a,authToken:u})),u;try{let a=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,h=await fetch(`${e.backendUrl}${a}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(h.ok){let p=await h.json();return n(v=>({...v,authToken:p.token})),d.storage?.set(l,p.token),p.token}}catch(a){console.warn("[ChatWidget] Failed to create session:",a)}return null}}}function wt({config:e,onStateChange:t,markdownParser:n,apiRef:o}){let[r,s]=C(e.embedded||e.forceOpen===!0),[i,c]=C(!1),[d,l]=C(!1),[u,a]=C(!1),[h,p]=C([]),[v,T]=C(!1),[$,y]=C(e.enableTTS),[w,H]=C(!1),[S,K]=C(null);U(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let D=oe(()=>ct(e.containerId),[e.containerId]),[z,J]=C(e.authToken||null),L=oe(()=>vt(e,()=>({authToken:z,storage:D}),k=>{let x=k({authToken:z,storage:D});x.authToken!==z&&J(x.authToken)}),[e,z,D]),m=gt(e,L,D),b=yt(e,L,D);U(()=>{for(let _=m.messages.length-1;_>=0;_--){let f=m.messages[_];if(f.type==="sub_agent_start"){K({key:f.metadata?.subAgentKey,name:f.metadata?.agentName});return}if(f.type==="sub_agent_end"){K(null);return}}},[m.messages]),U(()=>{let _=D.get(e.conversationIdKey);_&&m.loadConversation(_)},[]),U(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:m.messages,conversationId:m.conversationId,isLoading:m.isLoading,error:m.error})},[r,i,d,m.messages,m.conversationId,m.isLoading,m.error]);let A=B(async()=>{if(e.showConversationSidebar){T(!0);try{let _=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,f=await fetch(_,L.getFetchOptions({method:"GET"}));if(f.ok){let k=await f.json();p(k.results||k)}}catch(_){console.error("[ChatWidget] Failed to load conversations:",_),p([])}finally{T(!1)}}},[e,L]),E=B(()=>{let _=!u;a(_),_&&A()},[u,A]),R=B(_=>{_!==m.conversationId&&m.loadConversation(_),a(!1)},[m]),M=B(()=>{m.clearMessages(),a(!1)},[m]),W=B(_=>{m.sendMessage(_,{model:b.selectedModel,onAssistantMessage:f=>{}})},[m,$,b.selectedModel]);if(U(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:_=>W(_),clearMessages:()=>m.clearMessages(),toggleTTS:()=>y(_=>!_),stopSpeech:()=>H(!1),setAuth:_=>{_.token!==void 0&&J(_.token)},clearAuth:()=>J(null)})},[m,o,W]),!e.embedded&&!r)return g`
242
316
  <button
243
317
  class="cw-fab"
244
318
  style=${{backgroundColor:e.primaryColor}}
245
- onClick=${()=>o(!0)}
319
+ onClick=${()=>s(!0)}
246
320
  >
247
321
  <svg class="cw-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
248
322
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
249
323
  </svg>
250
324
  </button>
251
- `;let J=["cw-widget",l&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return y`
252
- <div class=${J} style=${{"--cw-primary":e.primaryColor}}>
253
- ${e.showConversationSidebar&&y`
254
- <${_t}
325
+ `;let G=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return g`
326
+ <div class=${G} style=${{"--cw-primary":e.primaryColor}}>
327
+ ${e.showConversationSidebar&&g`
328
+ <${ht}
255
329
  isOpen=${u}
256
- conversations=${f}
257
- conversationsLoading=${m}
258
- currentConversationId=${p.conversationId}
259
- onClose=${()=>r(!1)}
260
- onNewConversation=${k}
261
- onSwitchConversation=${K}
330
+ conversations=${h}
331
+ conversationsLoading=${v}
332
+ currentConversationId=${m.conversationId}
333
+ onClose=${()=>a(!1)}
334
+ onNewConversation=${M}
335
+ onSwitchConversation=${R}
262
336
  />
263
337
  `}
264
338
 
265
- <${lt}
339
+ <${dt}
266
340
  config=${e}
267
- debugMode=${_}
268
- isExpanded=${l}
341
+ debugMode=${d}
342
+ isExpanded=${i}
269
343
  isSpeaking=${w}
270
- messagesCount=${p.messages.length}
271
- isLoading=${p.isLoading}
272
- currentAgent=${A}
273
- onClose=${()=>o(!1)}
274
- onToggleExpand=${()=>c(!l)}
275
- onToggleDebug=${()=>i(!_)}
276
- onToggleTTS=${()=>g(!b)}
277
- onClear=${p.clearMessages}
278
- onToggleSidebar=${I}
344
+ messagesCount=${m.messages.length}
345
+ isLoading=${m.isLoading}
346
+ currentAgent=${S}
347
+ onClose=${()=>s(!1)}
348
+ onToggleExpand=${()=>c(!i)}
349
+ onToggleDebug=${()=>l(!d)}
350
+ onToggleTTS=${()=>y(!$)}
351
+ onClear=${m.clearMessages}
352
+ onToggleSidebar=${E}
279
353
  />
280
354
 
281
- ${_&&y`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
355
+ ${d&&g`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
282
356
 
283
- <${ct}
284
- messages=${p.messages}
285
- isLoading=${p.isLoading}
286
- hasMoreMessages=${p.hasMoreMessages}
287
- loadingMoreMessages=${p.loadingMoreMessages}
288
- onLoadMore=${p.loadMoreMessages}
289
- debugMode=${_}
357
+ <${pt}
358
+ messages=${m.messages}
359
+ isLoading=${m.isLoading}
360
+ hasMoreMessages=${m.hasMoreMessages}
361
+ loadingMoreMessages=${m.loadingMoreMessages}
362
+ onLoadMore=${m.loadMoreMessages}
363
+ debugMode=${d}
290
364
  markdownParser=${n}
291
365
  emptyStateTitle=${e.emptyStateTitle}
292
366
  emptyStateMessage=${e.emptyStateMessage}
293
367
  />
294
368
 
295
- ${p.error&&y`<div class="cw-error-bar">${p.error}</div>`}
369
+ ${m.error&&g`<div class="cw-error-bar">${m.error}</div>`}
296
370
 
297
- ${e.showModelSelector&&$.availableModels.length>0&&y`
298
- <${dt}
299
- availableModels=${$.availableModels}
300
- selectedModel=${$.selectedModel}
301
- onSelectModel=${$.selectModel}
302
- disabled=${p.isLoading}
371
+ ${e.showModelSelector&&b.availableModels.length>0&&g`
372
+ <${mt}
373
+ availableModels=${b.availableModels}
374
+ selectedModel=${b.selectedModel}
375
+ onSelectModel=${b.selectModel}
376
+ disabled=${m.isLoading}
303
377
  />
304
378
  `}
305
379
 
306
- <${ut}
307
- onSend=${B}
308
- onCancel=${p.cancelRun}
309
- isLoading=${p.isLoading}
380
+ <${ft}
381
+ onSend=${W}
382
+ onCancel=${m.cancelRun}
383
+ isLoading=${m.isLoading}
310
384
  placeholder=${e.placeholder}
311
385
  primaryColor=${e.primaryColor}
386
+ enableVoice=${e.enableVoice}
312
387
  />
313
388
  </div>
314
- `}var yt={backendUrl:"http://localhost:8000",agentKey:"default-agent",title:"Chat Assistant",subtitle:"How can we help you today?",primaryColor:"#0066cc",position:"bottom-right",defaultJourneyType:"general",enableDebugMode:!0,enableAutoRun:!0,journeyTypes:{},customerPrompts:{},placeholder:"Type your message...",emptyStateTitle:"Start a Conversation",emptyStateMessage:"Send a message to get started.",authStrategy:null,authToken:null,authHeader:null,authTokenPrefix:null,anonymousSessionEndpoint:null,anonymousTokenKey:"chat_widget_anonymous_token",onAuthError:null,anonymousTokenHeader:"X-Anonymous-Token",conversationIdKey:"chat_widget_conversation_id",sessionTokenKey:"chat_widget_session_token",apiPaths:{anonymousSession:"/api/accounts/anonymous-session/",conversations:"/api/agent-runtime/conversations/",runs:"/api/agent-runtime/runs/",runEvents:"/api/agent-runtime/runs/{runId}/events/",simulateCustomer:"/api/agent-runtime/simulate-customer/",ttsVoices:"/api/tts/voices/",ttsSetVoice:"/api/tts/set-voice/",models:"/api/agent-runtime/models/"},showConversationSidebar:!0,showClearButton:!0,showDebugButton:!0,showTTSButton:!0,showVoiceSettings:!0,showExpandButton:!0,showModelSelector:!1,modelKey:"chat_widget_selected_model",autoRunDelay:1e3,autoRunMode:"automatic",enableTTS:!1,ttsProxyUrl:null,elevenLabsApiKey:null,ttsVoices:{assistant:null,user:null},ttsModel:"eleven_turbo_v2_5",ttsSettings:{stability:.5,similarity_boost:.75,style:0,use_speaker_boost:!0},availableVoices:[],onEvent:null,containerId:null,embedded:!1,metadata:{}};function gt(e){let t={...yt.apiPaths,...e.apiPaths||{}};return{...yt,...e,apiPaths:t}}var pe=new Map,Ot=0,T=null,Me=class{constructor(t={}){this.instanceId=`cw-${++Ot}`,this.config=gt(t),this.container=null,this._state={},this._apiRef={current:null},pe.set(this.instanceId,this)}_handleStateChange=t=>{this._state=t};init(){if(this.config.containerId){if(this.container=document.getElementById(this.config.containerId),!this.container)return console.error(`[ChatWidget] Container not found: ${this.config.containerId}`),this;this.container.classList.add("cw-container-embedded")}else this.container=document.createElement("div"),this.container.id=this.instanceId,this.container.className=`cw-container cw-position-${this.config.position}`,document.body.appendChild(this.container);return this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_render(t={}){this.container&&ue(y`<${mt}
389
+ `}var $t={backendUrl:"http://localhost:8000",agentKey:"default-agent",title:"Chat Assistant",subtitle:"How can we help you today?",primaryColor:"#0066cc",position:"bottom-right",defaultJourneyType:"general",enableDebugMode:!0,enableAutoRun:!0,journeyTypes:{},customerPrompts:{},placeholder:"Type your message...",emptyStateTitle:"Start a Conversation",emptyStateMessage:"Send a message to get started.",authStrategy:null,authToken:null,authHeader:null,authTokenPrefix:null,anonymousSessionEndpoint:null,anonymousTokenKey:"chat_widget_anonymous_token",onAuthError:null,anonymousTokenHeader:"X-Anonymous-Token",conversationIdKey:"chat_widget_conversation_id",sessionTokenKey:"chat_widget_session_token",apiPaths:{anonymousSession:"/api/accounts/anonymous-session/",conversations:"/api/agent-runtime/conversations/",runs:"/api/agent-runtime/runs/",runEvents:"/api/agent-runtime/runs/{runId}/events/",simulateCustomer:"/api/agent-runtime/simulate-customer/",ttsVoices:"/api/tts/voices/",ttsSetVoice:"/api/tts/set-voice/",models:"/api/agent-runtime/models/"},showConversationSidebar:!0,showClearButton:!0,showDebugButton:!0,showTTSButton:!0,showVoiceSettings:!0,showExpandButton:!0,showModelSelector:!1,enableVoice:!0,modelKey:"chat_widget_selected_model",autoRunDelay:1e3,autoRunMode:"automatic",enableTTS:!1,ttsProxyUrl:null,elevenLabsApiKey:null,ttsVoices:{assistant:null,user:null},ttsModel:"eleven_turbo_v2_5",ttsSettings:{stability:.5,similarity_boost:.75,style:0,use_speaker_boost:!0},availableVoices:[],onEvent:null,containerId:null,embedded:!1,metadata:{}};function bt(e){let t={...$t.apiPaths,...e.apiPaths||{}};return{...$t,...e,apiPaths:t}}var me=new Map,Kt=0,I=null,Pe=class{constructor(t={}){this.instanceId=`cw-${++Kt}`,this.config=bt(t),this.container=null,this._state={},this._apiRef={current:null},me.set(this.instanceId,this)}_handleStateChange=t=>{this._state=t};init(){if(this.config.containerId){if(this.container=document.getElementById(this.config.containerId),!this.container)return console.error(`[ChatWidget] Container not found: ${this.config.containerId}`),this;this.container.classList.add("cw-container-embedded")}else this.container=document.createElement("div"),this.container.id=this.instanceId,this.container.className=`cw-container cw-position-${this.config.position}`,document.body.appendChild(this.container);return this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_render(t={}){this.container&&de(g`<${wt}
315
390
  config=${{...this.config,...t}}
316
391
  onStateChange=${this._handleStateChange}
317
- markdownParser=${fe._enhancedMarkdownParser}
392
+ markdownParser=${ge._enhancedMarkdownParser}
318
393
  apiRef=${this._apiRef}
319
- />`,this.container)}destroy(){this.container&&(ue(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),pe.delete(this.instanceId),console.log(`[ChatWidget] Instance ${this.instanceId} destroyed`)}open(){this._apiRef.current?this._apiRef.current.open():this._render({forceOpen:!0})}close(){this._apiRef.current?this._apiRef.current.close():this._render({forceOpen:!1})}send(t){this._apiRef.current&&this._apiRef.current.send(t)}clearMessages(){this._apiRef.current&&this._apiRef.current.clearMessages()}toggleTTS(){this._apiRef.current&&this._apiRef.current.toggleTTS()}stopSpeech(){this._apiRef.current&&this._apiRef.current.stopSpeech()}setAuth(t){this._apiRef.current&&this._apiRef.current.setAuth(t)}clearAuth(){this._apiRef.current&&this._apiRef.current.clearAuth()}getState(){return{...this._state}}getConfig(){return{...this.config}}};function vt(e={}){return new Me(e).init()}function Rt(e={}){return T&&T.destroy(),T=vt(e),T}function Ut(){T&&(T.destroy(),T=null)}function Ft(){T&&T.open()}function Lt(){T&&T.close()}function Wt(e){T&&T.send(e)}function Kt(){T&&T.clearMessages()}function Bt(){T&&T.toggleTTS()}function jt(){T&&T.stopSpeech()}function Jt(e){T&&T.setAuth(e)}function Vt(){T&&T.clearAuth()}function qt(){return T?T.getState():null}function zt(){return T?T.getConfig():null}var fe={createInstance:vt,getInstance:e=>pe.get(e),getAllInstances:()=>Array.from(pe.values()),init:Rt,destroy:Ut,open:Ft,close:Lt,send:Wt,clearMessages:Kt,toggleTTS:Bt,stopSpeech:jt,setAuth:Jt,clearAuth:Vt,getState:qt,getConfig:zt,_enhancedMarkdownParser:null};var Gt=fe;typeof window<"u"&&(window.ChatWidget=fe);return St(Xt);})();
394
+ />`,this.container)}destroy(){this.container&&(de(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),me.delete(this.instanceId),console.log(`[ChatWidget] Instance ${this.instanceId} destroyed`)}open(){this._apiRef.current?this._apiRef.current.open():this._render({forceOpen:!0})}close(){this._apiRef.current?this._apiRef.current.close():this._render({forceOpen:!1})}send(t){this._apiRef.current&&this._apiRef.current.send(t)}clearMessages(){this._apiRef.current&&this._apiRef.current.clearMessages()}toggleTTS(){this._apiRef.current&&this._apiRef.current.toggleTTS()}stopSpeech(){this._apiRef.current&&this._apiRef.current.stopSpeech()}setAuth(t){this._apiRef.current&&this._apiRef.current.setAuth(t)}clearAuth(){this._apiRef.current&&this._apiRef.current.clearAuth()}getState(){return{...this._state}}getConfig(){return{...this.config}}};function kt(e={}){return new Pe(e).init()}function Lt(e={}){return I&&I.destroy(),I=kt(e),I}function Bt(){I&&(I.destroy(),I=null)}function jt(){I&&I.open()}function zt(){I&&I.close()}function Jt(e){I&&I.send(e)}function Vt(){I&&I.clearMessages()}function qt(){I&&I.toggleTTS()}function Gt(){I&&I.stopSpeech()}function Xt(e){I&&I.setAuth(e)}function Qt(){I&&I.clearAuth()}function Yt(){return I?I.getState():null}function Zt(){return I?I.getConfig():null}var ge={createInstance:kt,getInstance:e=>me.get(e),getAllInstances:()=>Array.from(me.values()),init:Lt,destroy:Bt,open:jt,close:zt,send:Jt,clearMessages:Vt,toggleTTS:qt,stopSpeech:Gt,setAuth:Xt,clearAuth:Qt,getState:Yt,getConfig:Zt,_enhancedMarkdownParser:null};var en=ge;typeof window<"u"&&(window.ChatWidget=ge);return Et(tn);})();