django-agent-studio 0.3.4__py3-none-any.whl → 0.3.6__py3-none-any.whl

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.
@@ -113,7 +113,8 @@
113
113
  align-items: center;
114
114
  justify-content: space-between;
115
115
  padding: 12px 16px;
116
- color: white;
116
+ background-color: var(--cw-primary, #0066cc);
117
+ color: var(--cw-header-text, white);
117
118
  border-radius: var(--cw-radius) var(--cw-radius) 0 0;
118
119
  }
119
120
 
@@ -131,7 +132,7 @@
131
132
  .cw-header-btn {
132
133
  background: transparent;
133
134
  border: none;
134
- color: white;
135
+ color: var(--cw-header-text, white);
135
136
  width: 28px;
136
137
  height: 28px;
137
138
  border-radius: 6px;
@@ -144,7 +145,7 @@
144
145
  }
145
146
 
146
147
  .cw-header-btn:hover:not(:disabled) {
147
- background: rgba(255, 255, 255, 0.2);
148
+ background: rgba(128, 128, 128, 0.2);
148
149
  }
149
150
 
150
151
  .cw-header-btn:disabled {
@@ -1,5 +1,5 @@
1
- var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var Kt=Object.getOwnPropertyNames;var Wt=Object.prototype.hasOwnProperty;var Bt=(e,t,n)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var jt=(e,t)=>{for(var n in t)ue(e,n,{get:t[n],enumerable:!0})},zt=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Kt(t))!Wt.call(e,a)&&a!==n&&ue(e,a,{get:()=>t[a],enumerable:!(s=Ut(t,a))||s.enumerable});return e};var Jt=e=>zt(ue({},"__esModule",{value:!0}),e);var We=(e,t,n)=>(Bt(e,typeof t!="symbol"?t+"":t,n),n);var bn={};jt(bn,{ChatWidget:()=>Te,default:()=>kn});var he,H,Ve,Vt,ee,Be,qe,Ge,Xe,Ie,Me,Ee,qt,oe={},Qe=[],Gt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,fe=Array.isArray;function Y(e,t){for(var n in t)e[n]=t[n];return e}function Ae(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function me(e,t,n){var s,a,o,i={};for(o in t)o=="key"?s=t[o]:o=="ref"?a=t[o]:i[o]=t[o];if(arguments.length>2&&(i.children=arguments.length>3?he.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)i[o]===void 0&&(i[o]=e.defaultProps[o]);return pe(e,i,s,a,null)}function pe(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??++Ve,__i:-1,__u:0};return a==null&&H.vnode!=null&&H.vnode(o),o}function ge(e){return e.children}function se(e,t){this.props=e,this.context=t}function te(e,t){if(t==null)return e.__?te(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"?te(e):null}function Ye(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 Ye(e)}}function je(e){(!e.__d&&(e.__d=!0)&&ee.push(e)&&!_e.__r++||Be!=H.debounceRendering)&&((Be=H.debounceRendering)||qe)(_e)}function _e(){for(var e,t,n,s,a,o,i,c=1;ee.length;)ee.length>c&&ee.sort(Ge),e=ee.shift(),c=ee.length,e.__d&&(n=void 0,s=void 0,a=(s=(t=e).__v).__e,o=[],i=[],t.__P&&((n=Y({},s)).__v=s.__v+1,H.vnode&&H.vnode(n),De(t.__P,n,s,t.__n,t.__P.namespaceURI,32&s.__u?[a]:null,o,a??te(s),!!(32&s.__u),i),n.__v=s.__v,n.__.__k[n.__i]=n,tt(o,n,i),s.__e=s.__=null,n.__e!=a&&Ye(n)));_e.__r=0}function Ze(e,t,n,s,a,o,i,c,u,l,p){var r,d,_,m,$,y,g,w=s&&s.__k||Qe,E=t.length;for(u=Xt(n,t,w,u,E),r=0;r<E;r++)(_=n.__k[r])!=null&&(d=_.__i==-1?oe:w[_.__i]||oe,_.__i=r,y=De(e,_,d,a,o,i,c,u,l,p),m=_.__e,_.ref&&d.ref!=_.ref&&(d.ref&&Pe(d.ref,null,_),p.push(_.ref,_.__c||m,_)),$==null&&m!=null&&($=m),(g=!!(4&_.__u))||d.__k===_.__k?u=et(_,u,e,g):typeof _.type=="function"&&y!==void 0?u=y:m&&(u=m.nextSibling),_.__u&=-7);return n.__e=$,u}function Xt(e,t,n,s,a){var o,i,c,u,l,p=n.length,r=p,d=0;for(e.__k=new Array(a),o=0;o<a;o++)(i=t[o])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[o]=pe(null,i,null,null,null):fe(i)?i=e.__k[o]=pe(ge,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[o]=pe(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[o]=i,u=o+d,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Qt(i,n,u,r))!=-1&&(r--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(a>p?d--:a<p&&d++),typeof i.type!="function"&&(i.__u|=4)):l!=u&&(l==u-1?d--:l==u+1?d++:(l>u?d--:d++,i.__u|=4))):e.__k[o]=null;if(r)for(o=0;o<p;o++)(c=n[o])!=null&&!(2&c.__u)&&(c.__e==s&&(s=te(c)),st(c,c));return s}function et(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=et(a[o],t,n,s));return t}e.__e!=t&&(s&&(t&&e.type&&!t.parentNode&&(t=te(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Qt(e,t,n,s){var a,o,i,c=e.key,u=e.type,l=t[n],p=l!=null&&(2&l.__u)==0;if(l===null&&c==null||p&&c==l.key&&u==l.type)return n;if(s>(p?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((l=t[i=a>=0?a--:o++])!=null&&!(2&l.__u)&&c==l.key&&u==l.type)return i}return-1}function ze(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Gt.test(t)?n:n+"px"}function de(e,t,n,s,a){var o,i;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||ze(e.style,t,"");if(n)for(t in n)s&&n[t]==s[t]||ze(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Xe,"$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+o]=n,n?s?n.u=s.u:(n.u=Ie,e.addEventListener(t,o?Ee:Me,o)):e.removeEventListener(t,o?Ee: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 Je(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Ie++;else if(t.t<n.u)return;return n(H.event?H.event(t):t)}}}function De(e,t,n,s,a,o,i,c,u,l){var p,r,d,_,m,$,y,g,w,E,O,W,J,V,B,j,G,N=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(u=!!(32&n.__u),o=[c=t.__e=n.__e]),(p=H.__b)&&p(t);e:if(typeof N=="function")try{if(g=t.props,w="prototype"in N&&N.prototype.render,E=(p=N.contextType)&&s[p.__c],O=p?E?E.props.value:p.__:s,n.__c?y=(r=t.__c=n.__c).__=r.__E:(w?t.__c=r=new N(g,O):(t.__c=r=new se(g,O),r.constructor=N,r.render=Zt),E&&E.sub(r),r.state||(r.state={}),r.__n=s,d=r.__d=!0,r.__h=[],r._sb=[]),w&&r.__s==null&&(r.__s=r.state),w&&N.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=Y({},r.__s)),Y(r.__s,N.getDerivedStateFromProps(g,r.__s))),_=r.props,m=r.state,r.__v=t,d)w&&N.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),w&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(w&&N.getDerivedStateFromProps==null&&g!==_&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(g,O),t.__v==n.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(g,r.__s,O)===!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(h){h&&(h.__=t)}),W=0;W<r._sb.length;W++)r.__h.push(r._sb[W]);r._sb=[],r.__h.length&&i.push(r);break e}r.componentWillUpdate!=null&&r.componentWillUpdate(g,r.__s,O),w&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(_,m,$)})}if(r.context=O,r.props=g,r.__P=e,r.__e=!1,J=H.__r,V=0,w){for(r.state=r.__s,r.__d=!1,J&&J(t),p=r.render(r.props,r.state,r.context),B=0;B<r._sb.length;B++)r.__h.push(r._sb[B]);r._sb=[]}else do r.__d=!1,J&&J(t),p=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++V<25);r.state=r.__s,r.getChildContext!=null&&(s=Y(Y({},s),r.getChildContext())),w&&!d&&r.getSnapshotBeforeUpdate!=null&&($=r.getSnapshotBeforeUpdate(_,m)),j=p,p!=null&&p.type===ge&&p.key==null&&(j=nt(p.props.children)),c=Ze(e,fe(j)?j:[j],t,n,s,a,o,i,c,u,l),r.base=t.__e,t.__u&=-161,r.__h.length&&i.push(r),y&&(r.__E=r.__=null)}catch(h){if(t.__v=null,u||o!=null)if(h.then){for(t.__u|=u?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,t.__e=c}else{for(G=o.length;G--;)Ae(o[G]);xe(t)}else t.__e=n.__e,t.__k=n.__k,h.then||xe(t);H.__e(h,t,n)}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Yt(n.__e,t,n,s,a,o,i,u,l);return(p=H.diffed)&&p(t),128&t.__u?void 0:c}function xe(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(xe)}function tt(e,t,n){for(var s=0;s<n.length;s++)Pe(n[s],n[++s],n[++s]);H.__c&&H.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){H.__e(o,a.__v)}})}function nt(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:fe(e)?e.map(nt):Y({},e)}function Yt(e,t,n,s,a,o,i,c,u){var l,p,r,d,_,m,$,y=n.props||oe,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(l=0;l<o.length;l++)if((_=o[l])&&"setAttribute"in _==!!w&&(w?_.localName==w:_.nodeType==3)){e=_,o[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(g);e=document.createElementNS(a,w,g.is&&g),c&&(H.__m&&H.__m(t,o),c=!1),o=null}if(w==null)y===g||c&&e.data==g||(e.data=g);else{if(o=o&&he.call(e.childNodes),!c&&o!=null)for(y={},l=0;l<e.attributes.length;l++)y[(_=e.attributes[l]).name]=_.value;for(l in y)if(_=y[l],l!="children"){if(l=="dangerouslySetInnerHTML")r=_;else if(!(l in g)){if(l=="value"&&"defaultValue"in g||l=="checked"&&"defaultChecked"in g)continue;de(e,l,null,_,a)}}for(l in g)_=g[l],l=="children"?d=_:l=="dangerouslySetInnerHTML"?p=_:l=="value"?m=_:l=="checked"?$=_:c&&typeof _!="function"||y[l]===_||de(e,l,_,y[l],a);if(p)c||r&&(p.__html==r.__html||p.__html==e.innerHTML)||(e.innerHTML=p.__html),t.__k=[];else if(r&&(e.innerHTML=""),Ze(t.type=="template"?e.content:e,fe(d)?d:[d],t,n,s,w=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,i,o?o[0]:n.__k&&te(n,0),c,u),o!=null)for(l=o.length;l--;)Ae(o[l]);c||(l="value",w=="progress"&&m==null?e.removeAttribute("value"):m!=null&&(m!==e[l]||w=="progress"&&!m||w=="option"&&m!=y[l])&&de(e,l,m,y[l],a),l="checked",$!=null&&$!=e[l]&&de(e,l,$,y[l],a))}return e}function Pe(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){H.__e(a,n)}}function st(e,t,n){var s,a;if(H.unmount&&H.unmount(e),(s=e.ref)&&(s.current&&s.current!=e.__e||Pe(s,null,t)),(s=e.__c)!=null){if(s.componentWillUnmount)try{s.componentWillUnmount()}catch(o){H.__e(o,t)}s.base=s.__P=null}if(s=e.__k)for(a=0;a<s.length;a++)s[a]&&st(s[a],t,n||typeof e.type!="function");n||Ae(e.__e),e.__c=e.__=e.__e=void 0}function Zt(e,t,n){return this.constructor(e,n)}function ye(e,t,n){var s,a,o,i;t==document&&(t=document.documentElement),H.__&&H.__(e,t),a=(s=typeof n=="function")?null:n&&n.__k||t.__k,o=[],i=[],De(t,e=(!s&&n||t).__k=me(ge,null,[e]),a||oe,oe,t.namespaceURI,!s&&n?[n]:a?null:t.firstChild?he.call(t.childNodes):null,o,!s&&n?n:a?a.__e:t.firstChild,s,i),tt(o,e,i)}he=Qe.slice,H={__e:function(e,t,n,s){for(var a,o,i;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),i=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,s||{}),i=a.__d),i)return a.__E=a}catch(c){e=c}throw e}},Ve=0,Vt=function(e){return e!=null&&e.constructor===void 0},se.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Y({},this.state),typeof e=="function"&&(e=e(Y({},n),this.props)),e&&Y(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),je(this))},se.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),je(this))},se.prototype.render=ge,ee=[],qe=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ge=function(e,t){return e.__v.__b-t.__v.__b},_e.__r=0,Xe=/(PointerCapture)$|Capture$/i,Ie=0,Me=Je(!1),Ee=Je(!0),qt=0;var at=function(e,t,n,s){var a;t[0]=0;for(var o=1;o<t.length;o++){var i=t[o++],c=t[o]?(t[0]|=i?1:2,n[t[o++]]):t[++o];i===3?s[0]=c:i===4?s[1]=Object.assign(s[1]||{},c):i===5?(s[1]=s[1]||{})[t[++o]]=c:i===6?s[1][t[++o]]+=c+"":i?(a=e.apply(c,at(e,c,n,["",null])),s.push(a),c[0]?t[0]|=2:(t[o-2]=0,t[o]=a)):s.push(c)}return s},ot=new Map;function rt(e){var t=ot.get(this);return t||(t=new Map,ot.set(this,t)),(t=at(this,t.get(e)||(t.set(e,t=function(n){for(var s,a,o=1,i="",c="",u=[0],l=function(d){o===1&&(d||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?u.push(0,d,i):o===3&&(d||i)?(u.push(3,d,i),o=2):o===2&&i==="..."&&d?u.push(4,d,0):o===2&&i&&!d?u.push(5,0,!0,i):o>=5&&((i||!d&&o===5)&&(u.push(o,0,i,a),o=6),d&&(u.push(o,d,0,a),o=6)),i=""},p=0;p<n.length;p++){p&&(o===1&&l(),l(p));for(var r=0;r<n[p].length;r++)s=n[p][r],o===1?s==="<"?(l(),u=[u],o=3):i+=s:o===4?i==="--"&&s===">"?(o=1,i=""):i=s+i[0]:c?s===c?c="":i+=s:s==='"'||s==="'"?c=s:s===">"?(l(),o=1):o&&(s==="="?(o=5,a=i,i=""):s==="/"&&(o<5||n[p][r+1]===">")?(l(),o===3&&(u=u[0]),o=u,(u=u[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
2
- `||s==="\r"?(l(),o=2):i+=s),o===3&&i==="!--"&&(o=4,u=u[0])}return l(),u}(e)),t),arguments,[])).length>1?t:t[0]}var f=rt.bind(me);var ae,L,Re,it,re=0,ft=[],U=H,lt=U.__b,ct=U.__r,ut=U.diffed,dt=U.__c,pt=U.unmount,_t=U.__;function He(e,t){U.__h&&U.__h(L,e,re||t),re=0;var n=L.__H||(L.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function C(e){return re=1,en(gt,e)}function en(e,t,n){var s=He(ae++,2);if(s.t=e,!s.__c&&(s.__=[n?n(t):gt(void 0,t),function(c){var u=s.__N?s.__N[0]:s.__[0],l=s.t(u,c);u!==l&&(s.__N=[l,s.__[1]],s.__c.setState({}))}],s.__c=L,!L.__f)){var a=function(c,u,l){if(!s.__c.__H)return!0;var p=s.__c.__H.__.filter(function(d){return!!d.__c});if(p.every(function(d){return!d.__N}))return!o||o.call(this,c,u,l);var r=s.__c.props!==c;return p.forEach(function(d){if(d.__N){var _=d.__[0];d.__=d.__N,d.__N=void 0,_!==d.__[0]&&(r=!0)}}),o&&o.call(this,c,u,l)||r};L.__f=!0;var o=L.shouldComponentUpdate,i=L.componentWillUpdate;L.componentWillUpdate=function(c,u,l){if(this.__e){var p=o;o=void 0,a(c,u,l),o=p}i&&i.call(this,c,u,l)},L.shouldComponentUpdate=a}return s.__N||s.__}function K(e,t){var n=He(ae++,3);!U.__s&&mt(n.__H,t)&&(n.__=e,n.u=t,L.__H.__h.push(n))}function X(e){return re=5,ie(function(){return{current:e}},[])}function ie(e,t){var n=He(ae++,7);return mt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function A(e,t){return re=8,ie(function(){return e},t)}function tn(){for(var e;e=ft.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ve),e.__H.__h.forEach(Fe),e.__H.__h=[]}catch(t){e.__H.__h=[],U.__e(t,e.__v)}}U.__b=function(e){L=null,lt&&lt(e)},U.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),_t&&_t(e,t)},U.__r=function(e){ct&&ct(e),ae=0;var t=(L=e.__c).__H;t&&(Re===L?(t.__h=[],L.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(ve),t.__h.forEach(Fe),t.__h=[],ae=0)),Re=L},U.diffed=function(e){ut&&ut(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(ft.push(t)!==1&&it===U.requestAnimationFrame||((it=U.requestAnimationFrame)||nn)(tn)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Re=L=null},U.__c=function(e,t){t.some(function(n){try{n.__h.forEach(ve),n.__h=n.__h.filter(function(s){return!s.__||Fe(s)})}catch(s){t.some(function(a){a.__h&&(a.__h=[])}),t=[],U.__e(s,n.__v)}}),dt&&dt(e,t)},U.unmount=function(e){pt&&pt(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(s){try{ve(s)}catch(a){t=a}}),n.__H=void 0,t&&U.__e(t,n.__v))};var ht=typeof requestAnimationFrame=="function";function nn(e){var t,n=function(){clearTimeout(s),ht&&cancelAnimationFrame(t),setTimeout(e)},s=setTimeout(n,35);ht&&(t=requestAnimationFrame(n))}function ve(e){var t=L,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),L=t}function Fe(e){var t=L;e.__c=e.__(),L=t}function mt(e,t){return!e||e.length!==t.length||t.some(function(n,s){return n!==e[s]})}function gt(e,t){return typeof t=="function"?t(e):t}function sn(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function Oe(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function $e(e){return Array.isArray(e)?e.map($e):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[sn(t),$e(n)])):e}function we(e){return Array.isArray(e)?e.map(we):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Oe(t),we(n)])):e}function ke(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function z(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function yt(e){if(!e)return"";try{let t=new Date(e),s=new Date-t,a=Math.floor(s/6e4),o=Math.floor(s/36e5),i=Math.floor(s/864e5);return a<1?"Just now":a<60?`${a}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function vt(e,t=null){if(t)return t(e);let n=z(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 $t(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 wt(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 be(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],s=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,s)).toFixed(1))+" "+n[s]}function Ce(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 kt({config:e,debugMode:t,isExpanded:n,isSpeaking:s,messagesCount:a,isLoading:o,currentAgent:i,onClose:c,onToggleExpand:u,onToggleDebug:l,onToggleTTS:p,onClear:r,onToggleSidebar:d}){let{title:_,primaryColor:m,embedded:$,showConversationSidebar:y,showClearButton:g,showDebugButton:w,enableDebugMode:E,showTTSButton:O,showExpandButton:W,enableTTS:J,elevenLabsApiKey:V,ttsProxyUrl:B}=e,j=V||B;return f`
1
+ var ChatWidgetModule=(()=>{var de=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var Kt=Object.getOwnPropertyNames;var Bt=Object.prototype.hasOwnProperty;var jt=(e,t,n)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var zt=(e,t)=>{for(var n in t)de(e,n,{get:t[n],enumerable:!0})},Jt=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Kt(t))!Bt.call(e,a)&&a!==n&&de(e,a,{get:()=>t[a],enumerable:!(s=Ut(t,a))||s.enumerable});return e};var Vt=e=>Jt(de({},"__esModule",{value:!0}),e);var Be=(e,t,n)=>(jt(e,typeof t!="symbol"?t+"":t,n),n);var Sn={};zt(Sn,{ChatWidget:()=>Me,default:()=>Cn});var fe,H,qe,qt,te,je,Ge,Xe,Qe,Pe,xe,Ee,Gt,oe={},Ye=[],Xt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,me=Array.isArray;function Y(e,t){for(var n in t)e[n]=t[n];return e}function Ae(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ge(e,t,n){var s,a,o,i={};for(o in t)o=="key"?s=t[o]:o=="ref"?a=t[o]:i[o]=t[o];if(arguments.length>2&&(i.children=arguments.length>3?fe.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(o in e.defaultProps)i[o]===void 0&&(i[o]=e.defaultProps[o]);return _e(e,i,s,a,null)}function _e(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??++qe,__i:-1,__u:0};return a==null&&H.vnode!=null&&H.vnode(o),o}function ye(e){return e.children}function se(e,t){this.props=e,this.context=t}function ne(e,t){if(t==null)return e.__?ne(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"?ne(e):null}function Ze(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 Ze(e)}}function ze(e){(!e.__d&&(e.__d=!0)&&te.push(e)&&!he.__r++||je!=H.debounceRendering)&&((je=H.debounceRendering)||Ge)(he)}function he(){for(var e,t,n,s,a,o,i,c=1;te.length;)te.length>c&&te.sort(Xe),e=te.shift(),c=te.length,e.__d&&(n=void 0,s=void 0,a=(s=(t=e).__v).__e,o=[],i=[],t.__P&&((n=Y({},s)).__v=s.__v+1,H.vnode&&H.vnode(n),Re(t.__P,n,s,t.__n,t.__P.namespaceURI,32&s.__u?[a]:null,o,a??ne(s),!!(32&s.__u),i),n.__v=s.__v,n.__.__k[n.__i]=n,nt(o,n,i),s.__e=s.__=null,n.__e!=a&&Ze(n)));he.__r=0}function et(e,t,n,s,a,o,i,c,u,l,p){var r,d,h,m,w,y,g,k=s&&s.__k||Ye,E=t.length;for(u=Qt(n,t,k,u,E),r=0;r<E;r++)(h=n.__k[r])!=null&&(d=h.__i==-1?oe:k[h.__i]||oe,h.__i=r,y=Re(e,h,d,a,o,i,c,u,l,p),m=h.__e,h.ref&&d.ref!=h.ref&&(d.ref&&De(d.ref,null,h),p.push(h.ref,h.__c||m,h)),w==null&&m!=null&&(w=m),(g=!!(4&h.__u))||d.__k===h.__k?u=tt(h,u,e,g):typeof h.type=="function"&&y!==void 0?u=y:m&&(u=m.nextSibling),h.__u&=-7);return n.__e=w,u}function Qt(e,t,n,s,a){var o,i,c,u,l,p=n.length,r=p,d=0;for(e.__k=new Array(a),o=0;o<a;o++)(i=t[o])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[o]=_e(null,i,null,null,null):me(i)?i=e.__k[o]=_e(ye,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[o]=_e(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[o]=i,u=o+d,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Yt(i,n,u,r))!=-1&&(r--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(a>p?d--:a<p&&d++),typeof i.type!="function"&&(i.__u|=4)):l!=u&&(l==u-1?d--:l==u+1?d++:(l>u?d--:d++,i.__u|=4))):e.__k[o]=null;if(r)for(o=0;o<p;o++)(c=n[o])!=null&&!(2&c.__u)&&(c.__e==s&&(s=ne(c)),ot(c,c));return s}function tt(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=tt(a[o],t,n,s));return t}e.__e!=t&&(s&&(t&&e.type&&!t.parentNode&&(t=ne(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Yt(e,t,n,s){var a,o,i,c=e.key,u=e.type,l=t[n],p=l!=null&&(2&l.__u)==0;if(l===null&&c==null||p&&c==l.key&&u==l.type)return n;if(s>(p?1:0)){for(a=n-1,o=n+1;a>=0||o<t.length;)if((l=t[i=a>=0?a--:o++])!=null&&!(2&l.__u)&&c==l.key&&u==l.type)return i}return-1}function Je(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Xt.test(t)?n:n+"px"}function pe(e,t,n,s,a){var o,i;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||Je(e.style,t,"");if(n)for(t in n)s&&n[t]==s[t]||Je(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")o=t!=(t=t.replace(Qe,"$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+o]=n,n?s?n.u=s.u:(n.u=Pe,e.addEventListener(t,o?Ee:xe,o)):e.removeEventListener(t,o?Ee:xe,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 Ve(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Pe++;else if(t.t<n.u)return;return n(H.event?H.event(t):t)}}}function Re(e,t,n,s,a,o,i,c,u,l){var p,r,d,h,m,w,y,g,k,E,O,B,V,q,j,z,G,N=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(u=!!(32&n.__u),o=[c=t.__e=n.__e]),(p=H.__b)&&p(t);e:if(typeof N=="function")try{if(g=t.props,k="prototype"in N&&N.prototype.render,E=(p=N.contextType)&&s[p.__c],O=p?E?E.props.value:p.__:s,n.__c?y=(r=t.__c=n.__c).__=r.__E:(k?t.__c=r=new N(g,O):(t.__c=r=new se(g,O),r.constructor=N,r.render=en),E&&E.sub(r),r.state||(r.state={}),r.__n=s,d=r.__d=!0,r.__h=[],r._sb=[]),k&&r.__s==null&&(r.__s=r.state),k&&N.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=Y({},r.__s)),Y(r.__s,N.getDerivedStateFromProps(g,r.__s))),h=r.props,m=r.state,r.__v=t,d)k&&N.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),k&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(k&&N.getDerivedStateFromProps==null&&g!==h&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(g,O),t.__v==n.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(g,r.__s,O)===!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(_){_&&(_.__=t)}),B=0;B<r._sb.length;B++)r.__h.push(r._sb[B]);r._sb=[],r.__h.length&&i.push(r);break e}r.componentWillUpdate!=null&&r.componentWillUpdate(g,r.__s,O),k&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(h,m,w)})}if(r.context=O,r.props=g,r.__P=e,r.__e=!1,V=H.__r,q=0,k){for(r.state=r.__s,r.__d=!1,V&&V(t),p=r.render(r.props,r.state,r.context),j=0;j<r._sb.length;j++)r.__h.push(r._sb[j]);r._sb=[]}else do r.__d=!1,V&&V(t),p=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++q<25);r.state=r.__s,r.getChildContext!=null&&(s=Y(Y({},s),r.getChildContext())),k&&!d&&r.getSnapshotBeforeUpdate!=null&&(w=r.getSnapshotBeforeUpdate(h,m)),z=p,p!=null&&p.type===ye&&p.key==null&&(z=st(p.props.children)),c=et(e,me(z)?z:[z],t,n,s,a,o,i,c,u,l),r.base=t.__e,t.__u&=-161,r.__h.length&&i.push(r),y&&(r.__E=r.__=null)}catch(_){if(t.__v=null,u||o!=null)if(_.then){for(t.__u|=u?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,t.__e=c}else{for(G=o.length;G--;)Ae(o[G]);Ie(t)}else t.__e=n.__e,t.__k=n.__k,_.then||Ie(t);H.__e(_,t,n)}else o==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Zt(n.__e,t,n,s,a,o,i,u,l);return(p=H.diffed)&&p(t),128&t.__u?void 0:c}function Ie(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Ie)}function nt(e,t,n){for(var s=0;s<n.length;s++)De(n[s],n[++s],n[++s]);H.__c&&H.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(o){o.call(a)})}catch(o){H.__e(o,a.__v)}})}function st(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:me(e)?e.map(st):Y({},e)}function Zt(e,t,n,s,a,o,i,c,u){var l,p,r,d,h,m,w,y=n.props||oe,g=t.props,k=t.type;if(k=="svg"?a="http://www.w3.org/2000/svg":k=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),o!=null){for(l=0;l<o.length;l++)if((h=o[l])&&"setAttribute"in h==!!k&&(k?h.localName==k:h.nodeType==3)){e=h,o[l]=null;break}}if(e==null){if(k==null)return document.createTextNode(g);e=document.createElementNS(a,k,g.is&&g),c&&(H.__m&&H.__m(t,o),c=!1),o=null}if(k==null)y===g||c&&e.data==g||(e.data=g);else{if(o=o&&fe.call(e.childNodes),!c&&o!=null)for(y={},l=0;l<e.attributes.length;l++)y[(h=e.attributes[l]).name]=h.value;for(l in y)if(h=y[l],l!="children"){if(l=="dangerouslySetInnerHTML")r=h;else if(!(l in g)){if(l=="value"&&"defaultValue"in g||l=="checked"&&"defaultChecked"in g)continue;pe(e,l,null,h,a)}}for(l in g)h=g[l],l=="children"?d=h:l=="dangerouslySetInnerHTML"?p=h:l=="value"?m=h:l=="checked"?w=h:c&&typeof h!="function"||y[l]===h||pe(e,l,h,y[l],a);if(p)c||r&&(p.__html==r.__html||p.__html==e.innerHTML)||(e.innerHTML=p.__html),t.__k=[];else if(r&&(e.innerHTML=""),et(t.type=="template"?e.content:e,me(d)?d:[d],t,n,s,k=="foreignObject"?"http://www.w3.org/1999/xhtml":a,o,i,o?o[0]:n.__k&&ne(n,0),c,u),o!=null)for(l=o.length;l--;)Ae(o[l]);c||(l="value",k=="progress"&&m==null?e.removeAttribute("value"):m!=null&&(m!==e[l]||k=="progress"&&!m||k=="option"&&m!=y[l])&&pe(e,l,m,y[l],a),l="checked",w!=null&&w!=e[l]&&pe(e,l,w,y[l],a))}return e}function De(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){H.__e(a,n)}}function ot(e,t,n){var s,a;if(H.unmount&&H.unmount(e),(s=e.ref)&&(s.current&&s.current!=e.__e||De(s,null,t)),(s=e.__c)!=null){if(s.componentWillUnmount)try{s.componentWillUnmount()}catch(o){H.__e(o,t)}s.base=s.__P=null}if(s=e.__k)for(a=0;a<s.length;a++)s[a]&&ot(s[a],t,n||typeof e.type!="function");n||Ae(e.__e),e.__c=e.__=e.__e=void 0}function en(e,t,n){return this.constructor(e,n)}function ve(e,t,n){var s,a,o,i;t==document&&(t=document.documentElement),H.__&&H.__(e,t),a=(s=typeof n=="function")?null:n&&n.__k||t.__k,o=[],i=[],Re(t,e=(!s&&n||t).__k=ge(ye,null,[e]),a||oe,oe,t.namespaceURI,!s&&n?[n]:a?null:t.firstChild?fe.call(t.childNodes):null,o,!s&&n?n:a?a.__e:t.firstChild,s,i),nt(o,e,i)}fe=Ye.slice,H={__e:function(e,t,n,s){for(var a,o,i;t=t.__;)if((a=t.__c)&&!a.__)try{if((o=a.constructor)&&o.getDerivedStateFromError!=null&&(a.setState(o.getDerivedStateFromError(e)),i=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,s||{}),i=a.__d),i)return a.__E=a}catch(c){e=c}throw e}},qe=0,qt=function(e){return e!=null&&e.constructor===void 0},se.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Y({},this.state),typeof e=="function"&&(e=e(Y({},n),this.props)),e&&Y(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),ze(this))},se.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),ze(this))},se.prototype.render=ye,te=[],Ge=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Xe=function(e,t){return e.__v.__b-t.__v.__b},he.__r=0,Qe=/(PointerCapture)$|Capture$/i,Pe=0,xe=Ve(!1),Ee=Ve(!0),Gt=0;var rt=function(e,t,n,s){var a;t[0]=0;for(var o=1;o<t.length;o++){var i=t[o++],c=t[o]?(t[0]|=i?1:2,n[t[o++]]):t[++o];i===3?s[0]=c:i===4?s[1]=Object.assign(s[1]||{},c):i===5?(s[1]=s[1]||{})[t[++o]]=c:i===6?s[1][t[++o]]+=c+"":i?(a=e.apply(c,rt(e,c,n,["",null])),s.push(a),c[0]?t[0]|=2:(t[o-2]=0,t[o]=a)):s.push(c)}return s},at=new Map;function it(e){var t=at.get(this);return t||(t=new Map,at.set(this,t)),(t=rt(this,t.get(e)||(t.set(e,t=function(n){for(var s,a,o=1,i="",c="",u=[0],l=function(d){o===1&&(d||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?u.push(0,d,i):o===3&&(d||i)?(u.push(3,d,i),o=2):o===2&&i==="..."&&d?u.push(4,d,0):o===2&&i&&!d?u.push(5,0,!0,i):o>=5&&((i||!d&&o===5)&&(u.push(o,0,i,a),o=6),d&&(u.push(o,d,0,a),o=6)),i=""},p=0;p<n.length;p++){p&&(o===1&&l(),l(p));for(var r=0;r<n[p].length;r++)s=n[p][r],o===1?s==="<"?(l(),u=[u],o=3):i+=s:o===4?i==="--"&&s===">"?(o=1,i=""):i=s+i[0]:c?s===c?c="":i+=s:s==='"'||s==="'"?c=s:s===">"?(l(),o=1):o&&(s==="="?(o=5,a=i,i=""):s==="/"&&(o<5||n[p][r+1]===">")?(l(),o===3&&(u=u[0]),o=u,(u=u[0]).push(2,0,o),o=0):s===" "||s===" "||s===`
2
+ `||s==="\r"?(l(),o=2):i+=s),o===3&&i==="!--"&&(o=4,u=u[0])}return l(),u}(e)),t),arguments,[])).length>1?t:t[0]}var f=it.bind(ge);var ae,W,Fe,lt,re=0,mt=[],U=H,ct=U.__b,ut=U.__r,dt=U.diffed,pt=U.__c,_t=U.unmount,ht=U.__;function Oe(e,t){U.__h&&U.__h(W,e,re||t),re=0;var n=W.__H||(W.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function C(e){return re=1,tn(yt,e)}function tn(e,t,n){var s=Oe(ae++,2);if(s.t=e,!s.__c&&(s.__=[n?n(t):yt(void 0,t),function(c){var u=s.__N?s.__N[0]:s.__[0],l=s.t(u,c);u!==l&&(s.__N=[l,s.__[1]],s.__c.setState({}))}],s.__c=W,!W.__f)){var a=function(c,u,l){if(!s.__c.__H)return!0;var p=s.__c.__H.__.filter(function(d){return!!d.__c});if(p.every(function(d){return!d.__N}))return!o||o.call(this,c,u,l);var r=s.__c.props!==c;return p.forEach(function(d){if(d.__N){var h=d.__[0];d.__=d.__N,d.__N=void 0,h!==d.__[0]&&(r=!0)}}),o&&o.call(this,c,u,l)||r};W.__f=!0;var o=W.shouldComponentUpdate,i=W.componentWillUpdate;W.componentWillUpdate=function(c,u,l){if(this.__e){var p=o;o=void 0,a(c,u,l),o=p}i&&i.call(this,c,u,l)},W.shouldComponentUpdate=a}return s.__N||s.__}function K(e,t){var n=Oe(ae++,3);!U.__s&&gt(n.__H,t)&&(n.__=e,n.u=t,W.__H.__h.push(n))}function X(e){return re=5,ie(function(){return{current:e}},[])}function ie(e,t){var n=Oe(ae++,7);return gt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function A(e,t){return re=8,ie(function(){return e},t)}function nn(){for(var e;e=mt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(we),e.__H.__h.forEach(He),e.__H.__h=[]}catch(t){e.__H.__h=[],U.__e(t,e.__v)}}U.__b=function(e){W=null,ct&&ct(e)},U.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ht&&ht(e,t)},U.__r=function(e){ut&&ut(e),ae=0;var t=(W=e.__c).__H;t&&(Fe===W?(t.__h=[],W.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(we),t.__h.forEach(He),t.__h=[],ae=0)),Fe=W},U.diffed=function(e){dt&&dt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(mt.push(t)!==1&&lt===U.requestAnimationFrame||((lt=U.requestAnimationFrame)||sn)(nn)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Fe=W=null},U.__c=function(e,t){t.some(function(n){try{n.__h.forEach(we),n.__h=n.__h.filter(function(s){return!s.__||He(s)})}catch(s){t.some(function(a){a.__h&&(a.__h=[])}),t=[],U.__e(s,n.__v)}}),pt&&pt(e,t)},U.unmount=function(e){_t&&_t(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(s){try{we(s)}catch(a){t=a}}),n.__H=void 0,t&&U.__e(t,n.__v))};var ft=typeof requestAnimationFrame=="function";function sn(e){var t,n=function(){clearTimeout(s),ft&&cancelAnimationFrame(t),setTimeout(e)},s=setTimeout(n,35);ft&&(t=requestAnimationFrame(n))}function we(e){var t=W,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),W=t}function He(e){var t=W;e.__c=e.__(),W=t}function gt(e,t){return!e||e.length!==t.length||t.some(function(n,s){return n!==e[s]})}function yt(e,t){return typeof t=="function"?t(e):t}function on(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function Ne(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function $e(e){return Array.isArray(e)?e.map($e):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[on(t),$e(n)])):e}function ke(e){return Array.isArray(e)?e.map(ke):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Ne(t),ke(n)])):e}function be(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function J(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function vt(e){if(!e)return"";try{let t=new Date(e),s=new Date-t,a=Math.floor(s/6e4),o=Math.floor(s/36e5),i=Math.floor(s/864e5);return a<1?"Just now":a<60?`${a}m ago`:o<24?`${o}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function wt(e,t=null){if(t)return t(e);let n=J(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 $t(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 kt(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 Ce(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],s=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,s)).toFixed(1))+" "+n[s]}function Se(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 an(e){if(!e||typeof e!="string")return 0;let t=e.replace("#","");if(t.length!==6&&t.length!==3)return 0;let n=t.length===3?t.split("").map(c=>c+c).join(""):t,s=parseInt(n.substr(0,2),16)/255,a=parseInt(n.substr(2,2),16)/255,o=parseInt(n.substr(4,2),16)/255,i=c=>c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return .2126*i(s)+.7152*i(a)+.0722*i(o)}function bt(e){return an(e)>.179?"#000000":"#ffffff"}function Ct({config:e,debugMode:t,isExpanded:n,isSpeaking:s,messagesCount:a,isLoading:o,currentAgent:i,onClose:c,onToggleExpand:u,onToggleDebug:l,onToggleTTS:p,onClear:r,onToggleSidebar:d}){let{title:h,primaryColor:m,embedded:w,showConversationSidebar:y,showClearButton:g,showDebugButton:k,enableDebugMode:E,showTTSButton:O,showExpandButton:B,enableTTS:V,elevenLabsApiKey:q,ttsProxyUrl:j}=e,z=q||j;return f`
3
3
  <div class="cw-header" style=${{backgroundColor:m}}>
4
4
  ${y&&f`
5
5
  <button
@@ -16,11 +16,11 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
16
16
  `}
17
17
 
18
18
  <div class="cw-title-container">
19
- <span class="cw-title">${z(_)}</span>
19
+ <span class="cw-title">${J(h)}</span>
20
20
  ${i&&f`
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">${z(i.name||i.key)}</span>
23
+ <span class="cw-agent-name">${J(i.name||i.key)}</span>
24
24
  </span>
25
25
  `}
26
26
  </div>
@@ -35,7 +35,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
35
35
  >🗑️</button>
36
36
  `}
37
37
 
38
- ${w&&E&&f`
38
+ ${k&&E&&f`
39
39
  <button
40
40
  class="cw-header-btn ${t?"cw-btn-active":""}"
41
41
  onClick=${l}
@@ -43,15 +43,15 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
43
43
  >🐛</button>
44
44
  `}
45
45
 
46
- ${O&&j&&f`
46
+ ${O&&z&&f`
47
47
  <button
48
- class="cw-header-btn ${J?"cw-btn-active":""}"
48
+ class="cw-header-btn ${V?"cw-btn-active":""}"
49
49
  onClick=${p}
50
50
  title="TTS"
51
- >${J?"\u{1F50A}":"\u{1F507}"}</button>
51
+ >${V?"\u{1F50A}":"\u{1F507}"}</button>
52
52
  `}
53
53
 
54
- ${W&&!$&&f`
54
+ ${B&&!w&&f`
55
55
  <button
56
56
  class="cw-header-btn"
57
57
  onClick=${u}
@@ -59,7 +59,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
59
59
  >${n?"\u2296":"\u2295"}</button>
60
60
  `}
61
61
 
62
- ${!$&&f`
62
+ ${!w&&f`
63
63
  <button
64
64
  class="cw-header-btn"
65
65
  onClick=${c}
@@ -68,7 +68,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
68
68
  `}
69
69
  </div>
70
70
  </div>
71
- `}function Ne({msg:e,show:t,onToggle:n}){return t?f`
71
+ `}function Le({msg:e,show:t,onToggle:n}){return t?f`
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>
@@ -79,7 +79,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
79
79
  onClick=${n}
80
80
  title="Show message payload"
81
81
  >{ }</button>
82
- `}function bt({onEdit:e,onRetry:t,isLoading:n,position:s,showEdit:a=!0}){return n?null:f`
82
+ `}function St({onEdit:e,onRetry:t,isLoading:n,position:s,showEdit:a=!0}){return n?null:f`
83
83
  <div class="cw-message-actions cw-message-actions-${s||"left"}">
84
84
  ${a&&f`
85
85
  <button
@@ -105,7 +105,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
105
105
  </svg>
106
106
  </button>
107
107
  </div>
108
- `}function on({initialContent:e,onSave:t,onCancel:n}){let[s,a]=C(e),o=X(null);return K(()=>{o.current&&(o.current.focus(),o.current.setSelectionRange(s.length,s.length),o.current.style.height="auto",o.current.style.height=o.current.scrollHeight+"px")},[]),f`
108
+ `}function rn({initialContent:e,onSave:t,onCancel:n}){let[s,a]=C(e),o=X(null);return K(()=>{o.current&&(o.current.focus(),o.current.setSelectionRange(s.length,s.length),o.current.style.height="auto",o.current.style.height=o.current.scrollHeight+"px")},[]),f`
109
109
  <div class="cw-inline-edit">
110
110
  <textarea
111
111
  ref=${o}
@@ -129,88 +129,88 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
129
129
  >Save & Send</button>
130
130
  </div>
131
131
  </div>
132
- `}function Ct({msg:e,debugMode:t,markdownParser:n,onEdit:s,onRetry:a,isLoading:o,messageIndex:i}){let[c,u]=C(!1),[l,p]=C(!1),[r,d]=C(!1),_=e.role==="user",m=e.role==="system",$=e.type==="tool_call",y=e.type==="tool_result",g=e.type==="error",w=e.type==="sub_agent_start",E=e.type==="sub_agent_end",O=e.type==="agent_context";if(m&&!t)return null;if(w||E||O)return f`
133
- <div class="cw-agent-context ${w?"cw-agent-delegating":""} ${E?"cw-agent-returned":""}" style="position: relative;">
134
- <span class="cw-agent-context-icon">${w?"\u{1F517}":E?"\u2713":"\u{1F916}"}</span>
132
+ `}function Tt({msg:e,debugMode:t,markdownParser:n,onEdit:s,onRetry:a,isLoading:o,messageIndex:i}){let[c,u]=C(!1),[l,p]=C(!1),[r,d]=C(!1),h=e.role==="user",m=e.role==="system",w=e.type==="tool_call",y=e.type==="tool_result",g=e.type==="error",k=e.type==="sub_agent_start",E=e.type==="sub_agent_end",O=e.type==="agent_context";if(m&&!t)return null;if(k||E||O)return f`
133
+ <div class="cw-agent-context ${k?"cw-agent-delegating":""} ${E?"cw-agent-returned":""}" style="position: relative;">
134
+ <span class="cw-agent-context-icon">${k?"\u{1F517}":E?"\u2713":"\u{1F916}"}</span>
135
135
  <span class="cw-agent-context-text">${e.content}</span>
136
136
  ${e.metadata?.agentName&&f`
137
137
  <span class="cw-agent-context-name">${e.metadata.agentName}</span>
138
138
  `}
139
- ${t&&f`<${Ne} msg=${e} show=${l} onToggle=${()=>p(!l)} />`}
139
+ ${t&&f`<${Le} msg=${e} show=${l} onToggle=${()=>p(!l)} />`}
140
140
  </div>
141
- `;if($||y){let T=e.metadata?.arguments||e.metadata?.result,I=k=>{if(typeof k=="string")try{return JSON.stringify(JSON.parse(k),null,2)}catch{return k}return JSON.stringify(k,null,2)};return f`
141
+ `;if(w||y){let S=e.metadata?.arguments||e.metadata?.result,I=$=>{if(typeof $=="string")try{return JSON.stringify(JSON.parse($),null,2)}catch{return $}return JSON.stringify($,null,2)};return f`
142
142
  <div class="cw-tool-message ${y?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
143
- <span class="cw-tool-label" onClick=${()=>T&&u(!c)}>
143
+ <span class="cw-tool-label" onClick=${()=>S&&u(!c)}>
144
144
  ${e.content}
145
- ${T&&f`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
145
+ ${S&&f`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
146
146
  </span>
147
- ${c&&T&&f`
148
- <pre class="cw-tool-details">${z(I($?e.metadata.arguments:e.metadata.result))}</pre>
147
+ ${c&&S&&f`
148
+ <pre class="cw-tool-details">${J(I(w?e.metadata.arguments:e.metadata.result))}</pre>
149
149
  `}
150
- ${t&&f`<${Ne} msg=${e} show=${l} onToggle=${()=>p(!l)} />`}
150
+ ${t&&f`<${Le} msg=${e} show=${l} onToggle=${()=>p(!l)} />`}
151
151
  </div>
152
- `}let W=["cw-message",_&&"cw-message-user",g&&"cw-message-error"].filter(Boolean).join(" "),J=`cw-message-row ${_?"cw-message-row-user":""}`,V=e.role==="assistant"?vt(e.content,n):z(e.content),B=e.files&&e.files.length>0,j=()=>B?f`
152
+ `}let B=["cw-message",h&&"cw-message-user",g&&"cw-message-error"].filter(Boolean).join(" "),V=`cw-message-row ${h?"cw-message-row-user":""}`,q=e.role==="assistant"?wt(e.content,n):J(e.content),j=e.files&&e.files.length>0,z=()=>j?f`
153
153
  <div class="cw-message-attachments">
154
- ${e.files.map(T=>T.type&&T.type.startsWith("image/")?f`
155
- <a class="cw-attachment-thumbnail" href=${T.url} target="_blank" title=${T.name}>
156
- <img src=${T.url} alt=${T.name} />
154
+ ${e.files.map(S=>S.type&&S.type.startsWith("image/")?f`
155
+ <a class="cw-attachment-thumbnail" href=${S.url} target="_blank" title=${S.name}>
156
+ <img src=${S.url} alt=${S.name} />
157
157
  </a>
158
158
  `:f`
159
- <a class="cw-attachment-file" href=${T.url} target="_blank" title=${T.name}>
160
- <span class="cw-attachment-icon">${Ce(T.type)}</span>
159
+ <a class="cw-attachment-file" href=${S.url} target="_blank" title=${S.name}>
160
+ <span class="cw-attachment-icon">${Se(S.type)}</span>
161
161
  <span class="cw-attachment-info">
162
- <span class="cw-attachment-name">${T.name}</span>
163
- <span class="cw-attachment-size">${be(T.size)}</span>
162
+ <span class="cw-attachment-name">${S.name}</span>
163
+ <span class="cw-attachment-size">${Ce(S.size)}</span>
164
164
  </span>
165
165
  </a>
166
166
  `)}
167
167
  </div>
168
- `:null,G=T=>{d(!1),s&&s(i,T)},N=()=>{a&&a(i)};if(_&&r)return f`
169
- <div class=${J} style="position: relative;">
170
- ${j()}
171
- <${on}
168
+ `:null,G=S=>{d(!1),s&&s(i,S)},N=()=>{a&&a(i)};if(h&&r)return f`
169
+ <div class=${V} style="position: relative;">
170
+ ${z()}
171
+ <${rn}
172
172
  initialContent=${e.content}
173
173
  onSave=${G}
174
174
  onCancel=${()=>d(!1)}
175
175
  />
176
176
  </div>
177
- `;let h=_&&s&&a,M=e.role==="assistant"&&a&&!o;return f`
178
- <div class="${J} ${h||M?"cw-message-row-with-actions":""}">
179
- ${j()}
180
- ${h&&f`
177
+ `;let _=h&&s&&a,M=e.role==="assistant"&&a&&!o;return f`
178
+ <div class="${V} ${_||M?"cw-message-row-with-actions":""}">
179
+ ${z()}
180
+ ${_&&f`
181
181
  <div class="cw-user-actions-wrapper">
182
- <${bt}
182
+ <${St}
183
183
  onEdit=${()=>d(!0)}
184
184
  onRetry=${N}
185
185
  isLoading=${o}
186
186
  position="left"
187
187
  showEdit=${!0}
188
188
  />
189
- <div class=${W} dangerouslySetInnerHTML=${{__html:V}} />
189
+ <div class=${B} dangerouslySetInnerHTML=${{__html:q}} />
190
190
  </div>
191
191
  `}
192
- ${!h&&f`
193
- <div class=${W} dangerouslySetInnerHTML=${{__html:V}} />
192
+ ${!_&&f`
193
+ <div class=${B} dangerouslySetInnerHTML=${{__html:q}} />
194
194
  `}
195
195
  ${M&&f`
196
- <${bt}
196
+ <${St}
197
197
  onRetry=${N}
198
198
  isLoading=${o}
199
199
  position="right"
200
200
  showEdit=${!1}
201
201
  />
202
202
  `}
203
- ${t&&f`<${Ne} msg=${e} show=${l} onToggle=${()=>p(!l)} />`}
203
+ ${t&&f`<${Le} msg=${e} show=${l} onToggle=${()=>p(!l)} />`}
204
204
  </div>
205
- `}function St({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:a,onEditMessage:o,onRetryMessage:i,debugMode:c,markdownParser:u,emptyStateTitle:l,emptyStateMessage:p}){let r=X(null),d=X(!0),_=$=>{let y=$.target,g=y.scrollHeight-y.scrollTop-y.clientHeight<100;if(d.current=g,y.scrollTop<50&&n&&!s){let w=y.scrollHeight;a().then(()=>{let E=y.scrollHeight;y.scrollTop=E-w+y.scrollTop})}};K(()=>{let $=r.current;$&&d.current&&requestAnimationFrame(()=>{$.scrollTop=$.scrollHeight})},[e,t]),K(()=>{let $=r.current;$&&e.length<=2&&(d.current=!0,requestAnimationFrame(()=>{$.scrollTop=$.scrollHeight}))},[e.length]);let m=e.length===0;return f`
206
- <div class="cw-messages" ref=${r} onScroll=${_}>
205
+ `}function Mt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:s,onLoadMore:a,onEditMessage:o,onRetryMessage:i,debugMode:c,markdownParser:u,emptyStateTitle:l,emptyStateMessage:p}){let r=X(null),d=X(!0),h=w=>{let y=w.target,g=y.scrollHeight-y.scrollTop-y.clientHeight<100;if(d.current=g,y.scrollTop<50&&n&&!s){let k=y.scrollHeight;a().then(()=>{let E=y.scrollHeight;y.scrollTop=E-k+y.scrollTop})}};K(()=>{let w=r.current;w&&d.current&&requestAnimationFrame(()=>{w.scrollTop=w.scrollHeight})},[e,t]),K(()=>{let w=r.current;w&&e.length<=2&&(d.current=!0,requestAnimationFrame(()=>{w.scrollTop=w.scrollHeight}))},[e.length]);let m=e.length===0;return f`
206
+ <div class="cw-messages" ref=${r} onScroll=${h}>
207
207
  ${m&&f`
208
208
  <div class="cw-empty-state">
209
209
  <svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
210
210
  <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>
211
211
  </svg>
212
- <h3>${z(l)}</h3>
213
- <p>${z(p)}</p>
212
+ <h3>${J(l)}</h3>
213
+ <p>${J(p)}</p>
214
214
  </div>
215
215
  `}
216
216
 
@@ -220,10 +220,10 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
220
220
  </div>
221
221
  `}
222
222
 
223
- ${e.map(($,y)=>f`
224
- <${Ct}
225
- key=${$.id}
226
- msg=${$}
223
+ ${e.map((w,y)=>f`
224
+ <${Tt}
225
+ key=${w.id}
226
+ msg=${w}
227
227
  messageIndex=${y}
228
228
  debugMode=${c}
229
229
  markdownParser=${u}
@@ -242,7 +242,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
242
242
  </div>
243
243
  `}
244
244
  </div>
245
- `}var Le=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function Tt({onSend:e,onCancel:t,isLoading:n,placeholder:s,primaryColor:a,enableVoice:o=!0,enableFiles:i=!0}){let[c,u]=C(""),[l,p]=C([]),[r,d]=C(!1),[_,m]=C(!1),[$]=C(()=>!!Le),y=X(null),g=X(null),w=X(null),E=X(!1);K(()=>{!n&&y.current&&y.current.focus()},[n]),K(()=>{y.current&&(y.current.style.height="auto",y.current.style.height=Math.min(y.current.scrollHeight,150)+"px")},[c]),K(()=>()=>{E.current=!1,w.current&&w.current.abort()},[]);let O=k=>{k.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),u(""),p([]),y.current&&(y.current.style.height="auto"),g.current&&(g.current.value=""))},W=k=>{let P=Array.from(k.target.files||[]);P.length>0&&p(R=>[...R,...P])},J=k=>{p(P=>P.filter((R,v)=>v!==k))},V=k=>{k.preventDefault(),g.current&&!n&&g.current.click()},B=k=>{k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),O(k))},j=k=>{n&&t&&(k.preventDefault(),t())},G=()=>{if(!Le||n)return;E.current=!0;let k=new Le;k.continuous=!0,k.interimResults=!0,k.lang=navigator.language||"en-US";let P=c,R="";k.onstart=()=>{m(!0)},k.onresult=v=>{R="";for(let b=v.resultIndex;b<v.results.length;b++){let D=v.results[b][0].transcript;v.results[b].isFinal?P+=(P?" ":"")+D:R+=D}u(P+(R?" "+R:""))},k.onerror=v=>{if(v.error==="no-speech"||v.error==="aborted"){console.log("[ChatWidget] Speech recognition:",v.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",v.error),E.current=!1,m(!1),u(P||c)},k.onend=()=>{if(E.current){console.log("[ChatWidget] Recognition paused, restarting...");try{k.start();return}catch(v){console.warn("[ChatWidget] Could not restart recognition:",v)}}m(!1),P&&u(P),w.current=null},w.current=k,k.start()},N=()=>{E.current=!1,w.current&&w.current.stop()},h=k=>{k.preventDefault(),_?N():G()},S=f`
245
+ `}var We=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function xt({onSend:e,onCancel:t,isLoading:n,placeholder:s,primaryColor:a,enableVoice:o=!0,enableFiles:i=!0}){let[c,u]=C(""),[l,p]=C([]),[r,d]=C(!1),[h,m]=C(!1),[w]=C(()=>!!We),y=X(null),g=X(null),k=X(null),E=X(!1);K(()=>{!n&&y.current&&y.current.focus()},[n]),K(()=>{y.current&&(y.current.style.height="auto",y.current.style.height=Math.min(y.current.scrollHeight,150)+"px")},[c]),K(()=>()=>{E.current=!1,k.current&&k.current.abort()},[]);let O=$=>{$.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),u(""),p([]),y.current&&(y.current.style.height="auto"),g.current&&(g.current.value=""))},B=$=>{let R=Array.from($.target.files||[]);R.length>0&&p(D=>[...D,...R])},V=$=>{p(R=>R.filter((D,v)=>v!==$))},q=$=>{$.preventDefault(),g.current&&!n&&g.current.click()},j=$=>{$.key==="Enter"&&!$.shiftKey&&($.preventDefault(),O($))},z=$=>{n&&t&&($.preventDefault(),t())},G=()=>{if(!We||n)return;E.current=!0;let $=new We;$.continuous=!0,$.interimResults=!0,$.lang=navigator.language||"en-US";let R=c,D="";$.onstart=()=>{m(!0)},$.onresult=v=>{D="";for(let P=v.resultIndex;P<v.results.length;P++){let b=v.results[P][0].transcript;v.results[P].isFinal?R+=(R?" ":"")+b:D+=b}u(R+(D?" "+D:""))},$.onerror=v=>{if(v.error==="no-speech"||v.error==="aborted"){console.log("[ChatWidget] Speech recognition:",v.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",v.error),E.current=!1,m(!1),u(R||c)},$.onend=()=>{if(E.current){console.log("[ChatWidget] Recognition paused, restarting...");try{$.start();return}catch(v){console.warn("[ChatWidget] Could not restart recognition:",v)}}m(!1),R&&u(R),k.current=null},k.current=$,$.start()},N=()=>{E.current=!1,k.current&&k.current.stop()},_=$=>{$.preventDefault(),h?N():G()},T=f`
246
246
  <svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
247
247
  <rect x="2" y="2" width="10" height="10" rx="1" />
248
248
  </svg>
@@ -257,26 +257,26 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
257
257
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
258
258
  <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>
259
259
  </svg>
260
- `,T=o&&$,I=i;return f`
260
+ `,S=o&&w,I=i;return f`
261
261
  <form class="cw-input-form" onSubmit=${O}>
262
262
  <input
263
263
  type="file"
264
264
  ref=${g}
265
265
  style="display: none"
266
266
  multiple
267
- onChange=${W}
267
+ onChange=${B}
268
268
  />
269
269
  ${l.length>0&&f`
270
270
  <div class="cw-file-chips">
271
- ${l.map((k,P)=>f`
272
- <div class="cw-file-chip" key=${P}>
273
- <span class="cw-file-chip-icon">${Ce(k.type)}</span>
274
- <span class="cw-file-chip-name" title=${k.name}>${k.name.length>20?k.name.substring(0,17)+"...":k.name}</span>
275
- <span class="cw-file-chip-size">(${be(k.size)})</span>
271
+ ${l.map(($,R)=>f`
272
+ <div class="cw-file-chip" key=${R}>
273
+ <span class="cw-file-chip-icon">${Se($.type)}</span>
274
+ <span class="cw-file-chip-name" title=${$.name}>${$.name.length>20?$.name.substring(0,17)+"...":$.name}</span>
275
+ <span class="cw-file-chip-size">(${Ce($.size)})</span>
276
276
  <button
277
277
  type="button"
278
278
  class="cw-file-chip-remove"
279
- onClick=${()=>J(P)}
279
+ onClick=${()=>V(R)}
280
280
  title="Remove file"
281
281
  >×</button>
282
282
  </div>
@@ -286,10 +286,10 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
286
286
  <textarea
287
287
  ref=${y}
288
288
  class="cw-input"
289
- placeholder=${z(s)}
289
+ placeholder=${J(s)}
290
290
  value=${c}
291
- onInput=${k=>u(k.target.value)}
292
- onKeyDown=${B}
291
+ onInput=${$=>u($.target.value)}
292
+ onKeyDown=${j}
293
293
  disabled=${n}
294
294
  rows="1"
295
295
  />
@@ -297,20 +297,20 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
297
297
  <button
298
298
  type="button"
299
299
  class="cw-attach-btn"
300
- onClick=${V}
300
+ onClick=${q}
301
301
  disabled=${n}
302
302
  title="Attach files"
303
303
  >
304
304
  ${x}
305
305
  </button>
306
306
  `}
307
- ${T&&f`
307
+ ${S&&f`
308
308
  <button
309
309
  type="button"
310
- class=${`cw-voice-btn ${_?"cw-voice-btn-recording":""}`}
311
- onClick=${h}
310
+ class=${`cw-voice-btn ${h?"cw-voice-btn-recording":""}`}
311
+ onClick=${_}
312
312
  disabled=${n}
313
- title=${_?"Stop recording":"Voice input"}
313
+ title=${h?"Stop recording":"Voice input"}
314
314
  >
315
315
  ${M}
316
316
  </button>
@@ -319,15 +319,15 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
319
319
  type=${n?"button":"submit"}
320
320
  class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&r?"cw-send-btn-stop":""}`}
321
321
  style=${{backgroundColor:n&&r?"#dc2626":a}}
322
- onClick=${j}
322
+ onClick=${z}
323
323
  onMouseEnter=${()=>d(!0)}
324
324
  onMouseLeave=${()=>d(!1)}
325
325
  title=${n?"Stop":"Send"}
326
326
  >
327
- ${n?r?S:f`<span class="cw-spinner"></span>`:"\u27A4"}
327
+ ${n?r?T:f`<span class="cw-spinner"></span>`:"\u27A4"}
328
328
  </button>
329
329
  </form>
330
- `}function Mt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:a,onNewConversation:o,onSwitchConversation:i}){return f`
330
+ `}function Et({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:s,onClose:a,onNewConversation:o,onSwitchConversation:i}){return f`
331
331
  <div class="cw-sidebar ${e?"cw-sidebar-open":""}">
332
332
  <div class="cw-sidebar-header">
333
333
  <span>Conversations</span>
@@ -355,8 +355,8 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
355
355
  class="cw-conversation-item ${c.id===s?"cw-conversation-active":""}"
356
356
  onClick=${()=>i(c.id)}
357
357
  >
358
- <div class="cw-conversation-title">${z(c.title||"Untitled")}</div>
359
- <div class="cw-conversation-date">${yt(c.updatedAt||c.createdAt)}</div>
358
+ <div class="cw-conversation-title">${J(c.title||"Untitled")}</div>
359
+ <div class="cw-conversation-date">${vt(c.updatedAt||c.createdAt)}</div>
360
360
  </div>
361
361
  `)}
362
362
  </div>
@@ -366,7 +366,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
366
366
  class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
367
367
  onClick=${a}
368
368
  />
369
- `}function Et({availableModels:e,selectedModel:t,onSelectModel:n,thinkingEnabled:s,onToggleThinking:a,disabled:o}){let[i,c]=C(!1);if(!e||e.length===0)return null;let u=e.find(m=>m.id===t),l=u?.name||"Select Model",p=u?.supports_thinking||!1,r=()=>{o||c(!i)},d=m=>{n(m),c(!1)},_=m=>{m.stopPropagation(),a&&p&&a(!s)};return f`
369
+ `}function It({availableModels:e,selectedModel:t,onSelectModel:n,thinkingEnabled:s,onToggleThinking:a,disabled:o}){let[i,c]=C(!1);if(!e||e.length===0)return null;let u=e.find(m=>m.id===t),l=u?.name||"Select Model",p=u?.supports_thinking||!1,r=()=>{o||c(!i)},d=m=>{n(m),c(!1)},h=m=>{m.stopPropagation(),a&&p&&a(!s)};return f`
370
370
  <div class="cw-model-selector">
371
371
  <button
372
372
  class="cw-model-btn"
@@ -375,14 +375,14 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
375
375
  title="Select Model"
376
376
  >
377
377
  <span class="cw-model-icon">🤖</span>
378
- <span class="cw-model-name">${z(l)}</span>
378
+ <span class="cw-model-name">${J(l)}</span>
379
379
  <span class="cw-model-chevron">${i?"\u25B2":"\u25BC"}</span>
380
380
  </button>
381
381
 
382
382
  ${p&&a&&f`
383
383
  <button
384
384
  class="cw-thinking-toggle ${s?"cw-thinking-enabled":""}"
385
- onClick=${_}
385
+ onClick=${h}
386
386
  disabled=${o}
387
387
  title=${s?"Thinking enabled - click to disable":"Enable extended thinking"}
388
388
  >
@@ -399,26 +399,26 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
399
399
  onClick=${()=>d(m.id)}
400
400
  >
401
401
  <span class="cw-model-option-name">
402
- ${z(m.name)}
402
+ ${J(m.name)}
403
403
  ${m.supports_thinking&&f`<span class="cw-thinking-badge" title="Supports extended thinking">🧠</span>`}
404
404
  </span>
405
- <span class="cw-model-option-provider">${z(m.provider)}</span>
405
+ <span class="cw-model-option-provider">${J(m.provider)}</span>
406
406
  ${m.description&&f`
407
- <span class="cw-model-option-desc">${z(m.description)}</span>
407
+ <span class="cw-model-option-desc">${J(m.description)}</span>
408
408
  `}
409
409
  </button>
410
410
  `)}
411
411
  </div>
412
412
  `}
413
413
  </div>
414
- `}var an={not_started:"\u25CB",in_progress:"\u25D0",complete:"\u25CF",cancelled:"\u2298"},rn={not_started:"Not Started",in_progress:"In Progress",complete:"Complete",cancelled:"Cancelled"};function ln({task:e,onUpdate:t,onRemove:n,depth:s=0}){let[a,o]=C(!1),[i,c]=C(e.name),u=A(()=>{let d={not_started:"in_progress",in_progress:"complete",complete:"not_started",cancelled:"not_started"};t(e.id,{state:d[e.state]||"not_started"})},[e,t]),l=A(()=>{i.trim()&&i!==e.name&&t(e.id,{name:i.trim()}),o(!1)},[e,i,t]),p=A(d=>{d.key==="Enter"&&l(),d.key==="Escape"&&(c(e.name),o(!1))},[l,e.name]),r=`cw-task-state-${e.state.replace("_","-")}`;return f`
414
+ `}var ln={not_started:"\u25CB",in_progress:"\u25D0",complete:"\u25CF",cancelled:"\u2298"},cn={not_started:"Not Started",in_progress:"In Progress",complete:"Complete",cancelled:"Cancelled"};function un({task:e,onUpdate:t,onRemove:n,depth:s=0}){let[a,o]=C(!1),[i,c]=C(e.name),u=A(()=>{let d={not_started:"in_progress",in_progress:"complete",complete:"not_started",cancelled:"not_started"};t(e.id,{state:d[e.state]||"not_started"})},[e,t]),l=A(()=>{i.trim()&&i!==e.name&&t(e.id,{name:i.trim()}),o(!1)},[e,i,t]),p=A(d=>{d.key==="Enter"&&l(),d.key==="Escape"&&(c(e.name),o(!1))},[l,e.name]),r=`cw-task-state-${e.state.replace("_","-")}`;return f`
415
415
  <div class="cw-task-item ${r}" style=${{paddingLeft:`${s*16+8}px`}}>
416
416
  <button
417
417
  class="cw-task-state-btn"
418
418
  onClick=${u}
419
- title=${rn[e.state]}
419
+ title=${cn[e.state]}
420
420
  >
421
- ${an[e.state]}
421
+ ${ln[e.state]}
422
422
  </button>
423
423
 
424
424
  ${a?f`
@@ -449,15 +449,15 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
449
449
  ×
450
450
  </button>
451
451
  </div>
452
- `}function xt({tasks:e,progress:t,isLoading:n,error:s,onUpdate:a,onRemove:o,onClear:i,onRefresh:c}){let u=A(r=>{let d=new Map,_=[];return r.forEach(m=>{d.set(m.id,{...m,children:[]})}),r.forEach(m=>{let $=d.get(m.id);m.parent_id&&d.has(m.parent_id)?d.get(m.parent_id).children.push($):_.push($)}),_},[]),l=A((r,d=0)=>f`
453
- <${ln}
452
+ `}function Pt({tasks:e,progress:t,isLoading:n,error:s,onUpdate:a,onRemove:o,onClear:i,onRefresh:c}){let u=A(r=>{let d=new Map,h=[];return r.forEach(m=>{d.set(m.id,{...m,children:[]})}),r.forEach(m=>{let w=d.get(m.id);m.parent_id&&d.has(m.parent_id)?d.get(m.parent_id).children.push(w):h.push(w)}),h},[]),l=A((r,d=0)=>f`
453
+ <${un}
454
454
  key=${r.id}
455
455
  task=${r}
456
456
  depth=${d}
457
457
  onUpdate=${a}
458
458
  onRemove=${o}
459
459
  />
460
- ${r.children?.map(_=>l(_,d+1))}
460
+ ${r.children?.map(h=>l(h,d+1))}
461
461
  `,[a,o]),p=u(e);return n&&e.length===0?f`<div class="cw-tasks-loading">Loading tasks...</div>`:f`
462
462
  <div class="cw-tasks-container">
463
463
  <div class="cw-tasks-header">
@@ -491,7 +491,7 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
491
491
  `:p.map(r=>l(r))}
492
492
  </div>
493
493
  </div>
494
- `}function It(e,t,n){let[s,a]=C([]),[o,i]=C(!1),[c,u]=C(null),[l,p]=C(()=>n?.get(e.conversationIdKey)||null),[r,d]=C(!1),[_,m]=C(!1),[$,y]=C(0),g=X(null),w=X(null);K(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let E=A(async(h,S,M)=>{g.current&&g.current.close();let x=e.apiPaths.runEvents.replace("{runId}",h),T=`${e.backendUrl}${x}`;S&&(T+=`?anonymous_token=${encodeURIComponent(S)}`);let I=new EventSource(T);g.current=I;let k="";I.addEventListener("assistant.message",R=>{try{let v=JSON.parse(R.data);e.onEvent&&e.onEvent("assistant.message",v.payload);let b=v.payload.content;b&&(k+=b,a(D=>{let q=D[D.length-1];return q?.role==="assistant"&&q.id.startsWith("assistant-stream-")?[...D.slice(0,-1),{...q,content:k}]:[...D,{id:"assistant-stream-"+Date.now(),role:"assistant",content:k,timestamp:new Date,type:"message"}]}))}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("tool.call",R=>{try{let v=JSON.parse(R.data);e.onEvent&&e.onEvent("tool.call",v.payload),a(b=>[...b,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${v.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:v.payload.name,arguments:v.payload.arguments,toolCallId:v.payload.id}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("tool.result",R=>{try{let v=JSON.parse(R.data);e.onEvent&&e.onEvent("tool.result",v.payload);let b=v.payload.result,D=b?.error;a(q=>[...q,{id:"tool-result-"+Date.now(),role:"system",content:D?`\u274C ${b.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:v.payload.name,result:b,toolCallId:v.payload.tool_call_id}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("custom",R=>{try{let v=JSON.parse(R.data);e.onEvent&&e.onEvent("custom",v.payload),v.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(v.payload),v.payload?.type==="agent_context"&&a(b=>[...b,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${v.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:v.payload.agent_key,agentName:v.payload.agent_name,action:v.payload.action}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("sub_agent.start",R=>{try{let v=JSON.parse(R.data);e.onEvent&&e.onEvent("sub_agent.start",v.payload),a(b=>[...b,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${v.payload.agent_name||v.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:v.payload.sub_agent_key,agentName:v.payload.agent_name,invocationMode:v.payload.invocation_mode}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("sub_agent.end",R=>{try{let v=JSON.parse(R.data);e.onEvent&&e.onEvent("sub_agent.end",v.payload),a(b=>[...b,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${v.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:v.payload.sub_agent_key,agentName:v.payload.agent_name}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}});let P=R=>{try{let v=JSON.parse(R.data);if(e.onEvent&&e.onEvent(v.type,v.payload),v.type==="run.failed"){let b=v.payload.error||"Agent run failed";u(b),a(D=>[...D,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${b}`,timestamp:new Date,type:"error"}])}}catch(v){console.error("[ChatWidget] Parse error:",v)}i(!1),I.close(),g.current=null,k&&M&&M(k)};I.addEventListener("run.succeeded",P),I.addEventListener("run.failed",P),I.addEventListener("run.cancelled",P),I.addEventListener("run.timed_out",P),I.onerror=()=>{i(!1),I.close(),g.current=null}},[e]),O=A(async(h,S={},M={})=>{if(!h.trim()||o)return;let x=[],T={};typeof S=="function"?T={onAssistantMessage:S}:Array.isArray(S)?(x=S,T=M):T=S||{};let{model:I,thinking:k,onAssistantMessage:P,supersedeFromMessageIndex:R}=T;i(!0),u(null);let v={id:ke(),role:"user",content:h.trim(),timestamp:new Date,type:"message",files:x.length>0?x.map(b=>({name:b.name,size:b.size,type:b.type})):void 0};a(b=>[...b,v]);try{let b=await t.getOrCreateSession(),D;if(x.length>0){let Q=e.apiCaseStyle!=="camel",Ke=ce=>Q?Oe(ce):ce,Z=new FormData;Z.append(Ke("agentKey"),e.agentKey),l&&Z.append(Ke("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:h.trim()}])),Z.append("metadata",JSON.stringify(Q?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),I&&Z.append("model",I),k&&Z.append("thinking","true"),x.forEach(ce=>{Z.append("files",ce)}),D=t.getFetchOptions({method:"POST",body:Z},b)}else{let Q=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:h.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...I&&{model:I},...k&&{thinking:!0},...R!==void 0&&{supersedeFromMessageIndex:R}});D=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)},b)}let q=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,D),ne=b;if(q.status===401){t.clearSession();let Q=await t.getOrCreateSession(!0);Q&&(ne=Q,x.length>0?D=t.getFetchOptions({method:"POST",body:D.body},Q):D=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:D.body},Q),q=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,D))}if(!q.ok){let Q=await q.json().catch(()=>({}));throw new Error(Q.error||Q.detail||`HTTP ${q.status}`)}let Lt=await q.json(),le=t.transformResponse(Lt);w.current=le.id,!l&&le.conversationId&&p(le.conversationId),await E(le.id,ne,P)}catch(b){u(b.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,o,E]),W=A(async()=>{let h=w.current;if(!(!h||!o))try{let S=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",h):`${e.apiPaths.runs}${h}/cancel/`;(await fetch(`${e.backendUrl}${S}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(g.current&&(g.current.close(),g.current=null),i(!1),w.current=null,a(x=>[...x,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(S){console.error("[ChatWidget] Failed to cancel run:",S)}},[e,t,o]),J=A(()=>{a([]),p(null),u(null),d(!1),y(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),V=h=>{let S={id:ke(),role:h.role,timestamp:h.timestamp?new Date(h.timestamp):new Date};if(h.role==="tool")return{...S,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:h.content,toolCallId:h.toolCallId}};if(h.role==="assistant"&&h.toolCalls&&h.toolCalls.length>0)return h.toolCalls.map(x=>({id:ke(),role:"assistant",content:`\u{1F527} ${x.function?.name||x.name||"tool"}`,timestamp:S.timestamp,type:"tool_call",metadata:{toolName:x.function?.name||x.name,arguments:x.function?.arguments||x.arguments,toolCallId:x.id}}));let M=typeof h.content=="string"?h.content:JSON.stringify(h.content);return h.role==="assistant"&&!M?.trim()?null:{...S,content:M,type:"message"}},B=A(async h=>{i(!0),a([]),p(h);try{let S=await t.getOrCreateSession(),x=`${e.backendUrl}${e.apiPaths.conversations}${h}/?limit=10&offset=0`,T=await fetch(x,t.getFetchOptions({method:"GET"},S));if(T.ok){let I=await T.json(),k=t.transformResponse(I);k.messages&&a(k.messages.flatMap(V).filter(Boolean)),d(k.hasMore||!1),y(k.messages?.length||0)}else T.status===404&&(p(null),n?.set(e.conversationIdKey,null))}catch(S){console.error("[ChatWidget] Failed to load conversation:",S)}finally{i(!1)}},[e,t,n]),j=A(async()=>{if(!(!l||_||!r)){m(!0);try{let h=await t.getOrCreateSession(),M=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${$}`,x=await fetch(M,t.getFetchOptions({method:"GET"},h));if(x.ok){let T=await x.json(),I=t.transformResponse(T);if(I.messages?.length>0){let k=I.messages.flatMap(V).filter(Boolean);a(P=>[...k,...P]),y(P=>P+I.messages.length),d(I.hasMore||!1)}else d(!1)}}catch(h){console.error("[ChatWidget] Failed to load more messages:",h)}finally{m(!1)}}},[e,t,l,$,_,r]),G=A(async(h,S,M={})=>{if(o)return;let x=s[h];if(!x||x.role!=="user")return;let T=s.slice(0,h);a(T),await O(S,{...M,supersedeFromMessageIndex:h})},[s,o,O]),N=A(async(h,S={})=>{if(o)return;let M=s[h];if(!M)return;let x=h,T=M;if(M.role==="assistant"){for(let k=h-1;k>=0;k--)if(s[k].role==="user"){x=k,T=s[k];break}if(T.role!=="user")return}else if(M.role!=="user")return;let I=s.slice(0,x);a(I),await O(T.content,{...S,supersedeFromMessageIndex:x})},[s,o,O]);return K(()=>()=>{g.current&&g.current.close()},[]),{messages:s,isLoading:o,error:c,conversationId:l,hasMoreMessages:r,loadingMoreMessages:_,sendMessage:O,cancelRun:W,clearMessages:J,loadConversation:B,loadMoreMessages:j,setConversationId:p,editMessage:G,retryMessage:N}}var At="cw_thinking_enabled";function Dt(e,t,n){let[s,a]=C([]),[o,i]=C(null),[c,u]=C(null),[l,p]=C(!1),[r,d]=C(!1);K(()=>{(async()=>{if(e.showModelSelector){p(!0);try{let w=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(w.ok){let E=await w.json(),O=E.models||[];a(O),u(E.default);let W=n?.get(e.modelKey);W&&O.some(V=>V.id===W)?i(W):i(E.default),n?.get(At)==="true"&&d(!0)}}catch(w){console.warn("[ChatWidget] Failed to load models:",w)}finally{p(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let _=A(g=>{i(g),n?.set(e.modelKey,g)},[e.modelKey,n]),m=A(g=>{d(g),n?.set(At,g?"true":"false")},[n]),$=A(()=>s.find(g=>g.id===o)||null,[s,o]),y=A(()=>$()?.supports_thinking||!1,[$]);return{availableModels:s,selectedModel:o,defaultModel:c,isLoading:l,selectModel:_,getSelectedModelInfo:$,thinkingEnabled:r,toggleThinking:m,supportsThinking:y}}function Pt(e,t){let[n,s]=C(null),[a,o]=C(!1),[i,c]=C(null),u=e.apiPaths?.tasks||"/api/agent/tasks/",l=A(async()=>{o(!0),c(null);try{let $=`${e.backendUrl}${u}`,y=await fetch($,t.getFetchOptions({method:"GET"}));if(y.ok){let g=await y.json();s(g)}else{let g=await y.json().catch(()=>({}));c(g.error||"Failed to load tasks")}}catch($){console.error("[useTasks] Failed to load task list:",$),c("Failed to load tasks")}finally{o(!1)}},[e.backendUrl,u,t]),p=A(async $=>{if(!n)return null;try{let y=`${e.backendUrl}${u}${n.id}/add_task/`,g=await fetch(y,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)}));if(g.ok){let w=await g.json();return await l(),w}else{let w=await g.json().catch(()=>({}));return c(w.error||"Failed to add task"),null}}catch(y){return console.error("[useTasks] Failed to add task:",y),c("Failed to add task"),null}},[e.backendUrl,u,n,t,l]),r=A(async($,y)=>{if(!n)return null;try{let g=`${e.backendUrl}${u}${n.id}/update_task/${$}/`,w=await fetch(g,t.getFetchOptions({method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}));if(w.ok){let E=await w.json();return await l(),E}else{let E=await w.json().catch(()=>({}));return c(E.error||"Failed to update task"),null}}catch(g){return console.error("[useTasks] Failed to update task:",g),c("Failed to update task"),null}},[e.backendUrl,u,n,t,l]),d=A(async $=>{if(!n)return!1;try{let y=`${e.backendUrl}${u}${n.id}/remove_task/${$}/`,g=await fetch(y,t.getFetchOptions({method:"DELETE"}));if(g.ok)return await l(),!0;{let w=await g.json().catch(()=>({}));return c(w.error||"Failed to remove task"),!1}}catch(y){return console.error("[useTasks] Failed to remove task:",y),c("Failed to remove task"),!1}},[e.backendUrl,u,n,t,l]),_=A(async()=>{if(!n)return!1;try{let $=`${e.backendUrl}${u}${n.id}/clear/`,y=await fetch($,t.getFetchOptions({method:"POST"}));if(y.ok)return await l(),!0;{let g=await y.json().catch(()=>({}));return c(g.error||"Failed to clear tasks"),!1}}catch($){return console.error("[useTasks] Failed to clear tasks:",$),c("Failed to clear tasks"),!1}},[e.backendUrl,u,n,t,l]),m=A(()=>c(null),[]);return{taskList:n,tasks:n?.tasks||[],progress:n?.progress||{total:0,completed:0,percent_complete:0},isLoading:a,error:i,loadTaskList:l,addTask:p,updateTask:r,removeTask:d,clearTasks:_,clearError:m}}function Rt(e,t,n){let s=p=>!p||typeof p!="object"||e.apiCaseStyle==="camel"?p:we(p),a=p=>!p||typeof p!="object"||e.apiCaseStyle==="snake"?p:$e(p),o=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(p=null)=>{let r=o(),d={},_=p||e.authToken||t().authToken;if(r==="token"&&_){let m=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";d[m]=$?`${$} ${_}`:_}else if(r==="jwt"&&_){let m=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";d[m]=$?`${$} ${_}`:_}else if(r==="anonymous"&&_){let m=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";d[m]=_}if(r==="session"){let m=wt(e.csrfCookieName);m&&(d["X-CSRFToken"]=m)}return d};return{getAuthStrategy:o,getAuthHeaders:i,getFetchOptions:(p={},r=null)=>{let d=o(),_={...p},m=i(r);return console.log("[ChatWidget] getFetchOptions - strategy:",d,"overrideToken:",r,"authHeaders:",m),_.headers={..._.headers,...m},d==="session"&&(_.credentials="include"),_},getOrCreateSession:async(p=!1)=>{let r=o(),d=t(),_=e.anonymousTokenKey||e.sessionTokenKey;if(r!=="anonymous")return e.authToken||d.authToken;if(!p){if(d.authToken)return d.authToken;let m=d.storage?.get(_);if(m)return n($=>({...$,authToken:m})),m}try{let m=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${m}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let y=await $.json();return n(g=>({...g,authToken:y.token})),d.storage?.set(_,y.token),y.token}}catch(m){console.warn("[ChatWidget] Failed to create session:",m)}return null},clearSession:()=>{let p=e.anonymousTokenKey||e.sessionTokenKey,r=t();n(d=>({...d,authToken:null})),r.storage?.set(p,null)},transformRequest:s,transformResponse:a}}function Ft({config:e,onStateChange:t,markdownParser:n,apiRef:s}){let[a,o]=C(e.embedded||e.forceOpen===!0),[i,c]=C(!1),[u,l]=C(!1),[p,r]=C(!1),[d,_]=C([]),[m,$]=C("chat"),[y,g]=C(!1),[w,E]=C(e.enableTTS),[O,W]=C(!1),[J,V]=C(null);K(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let B=ie(()=>$t(e.containerId),[e.containerId]),[j,G]=C(e.authToken||null),N=ie(()=>Rt(e,()=>({authToken:j,storage:B}),q=>{let ne=q({authToken:j,storage:B});ne.authToken!==j&&G(ne.authToken)}),[e,j,B]),h=It(e,N,B),S=Dt(e,N,B),M=Pt(e,N);K(()=>{for(let b=h.messages.length-1;b>=0;b--){let D=h.messages[b];if(D.type==="sub_agent_start"){V({key:D.metadata?.subAgentKey,name:D.metadata?.agentName});return}if(D.type==="sub_agent_end"){V(null);return}}},[h.messages]),K(()=>{let b=B.get(e.conversationIdKey);b&&h.loadConversation(b)},[]),K(()=>{t&&t({isOpen:a,isExpanded:i,debugMode:u,messages:h.messages,conversationId:h.conversationId,isLoading:h.isLoading,error:h.error})},[a,i,u,h.messages,h.conversationId,h.isLoading,h.error]);let x=A(async()=>{if(e.showConversationSidebar){g(!0);try{let b=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,D=await fetch(b,N.getFetchOptions({method:"GET"}));if(D.ok){let q=await D.json();_(q.results||q)}}catch(b){console.error("[ChatWidget] Failed to load conversations:",b),_([])}finally{g(!1)}}},[e,N]),T=A(()=>{let b=!p;r(b),b&&x()},[p,x]),I=A(b=>{b!==h.conversationId&&h.loadConversation(b),r(!1)},[h]),k=A(()=>{h.clearMessages(),r(!1)},[h]),P=A(b=>{h.sendMessage(b,{model:S.selectedModel,thinking:S.thinkingEnabled&&S.supportsThinking(),onAssistantMessage:D=>{}})},[h,w,S.selectedModel,S.thinkingEnabled,S.supportsThinking]),R=A(b=>{$(b),b==="tasks"&&M.loadTaskList()},[M]);if(K(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:b=>P(b),clearMessages:()=>h.clearMessages(),toggleTTS:()=>E(b=>!b),stopSpeech:()=>W(!1),setAuth:b=>{b.token!==void 0&&G(b.token)},clearAuth:()=>G(null)})},[h,s,P]),!e.embedded&&!a)return f`
494
+ `}function At(e,t,n){let[s,a]=C([]),[o,i]=C(!1),[c,u]=C(null),[l,p]=C(()=>n?.get(e.conversationIdKey)||null),[r,d]=C(!1),[h,m]=C(!1),[w,y]=C(0),g=X(null),k=X(null);K(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let E=A(async(_,T,M)=>{g.current&&g.current.close();let x=e.apiPaths.runEvents.replace("{runId}",_),S=`${e.backendUrl}${x}`;T&&(S+=`?anonymous_token=${encodeURIComponent(T)}`);let I=new EventSource(S);g.current=I;let $="";I.addEventListener("assistant.message",D=>{try{let v=JSON.parse(D.data);e.onEvent&&e.onEvent("assistant.message",v.payload);let P=v.payload.content;P&&($+=P,a(b=>{let L=b[b.length-1];return L?.role==="assistant"&&L.id.startsWith("assistant-stream-")?[...b.slice(0,-1),{...L,content:$}]:[...b,{id:"assistant-stream-"+Date.now(),role:"assistant",content:$,timestamp:new Date,type:"message"}]}))}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("tool.call",D=>{try{let v=JSON.parse(D.data);e.onEvent&&e.onEvent("tool.call",v.payload),a(P=>[...P,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${v.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:v.payload.name,arguments:v.payload.arguments,toolCallId:v.payload.id}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("tool.result",D=>{try{let v=JSON.parse(D.data);e.onEvent&&e.onEvent("tool.result",v.payload);let P=v.payload.result,b=P?.error;a(L=>[...L,{id:"tool-result-"+Date.now(),role:"system",content:b?`\u274C ${P.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:v.payload.name,result:P,toolCallId:v.payload.tool_call_id}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("custom",D=>{try{let v=JSON.parse(D.data);e.onEvent&&e.onEvent("custom",v.payload),v.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(v.payload),v.payload?.type==="agent_context"&&a(P=>[...P,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${v.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:v.payload.agent_key,agentName:v.payload.agent_name,action:v.payload.action}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("sub_agent.start",D=>{try{let v=JSON.parse(D.data);e.onEvent&&e.onEvent("sub_agent.start",v.payload),a(P=>[...P,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${v.payload.agent_name||v.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:v.payload.sub_agent_key,agentName:v.payload.agent_name,invocationMode:v.payload.invocation_mode}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}}),I.addEventListener("sub_agent.end",D=>{try{let v=JSON.parse(D.data);e.onEvent&&e.onEvent("sub_agent.end",v.payload),a(P=>[...P,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${v.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:v.payload.sub_agent_key,agentName:v.payload.agent_name}}])}catch(v){console.error("[ChatWidget] Parse error:",v)}});let R=D=>{try{let v=JSON.parse(D.data);if(e.onEvent&&e.onEvent(v.type,v.payload),v.type==="run.failed"){let P=v.payload.error||"Agent run failed";u(P),a(b=>[...b,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${P}`,timestamp:new Date,type:"error"}])}}catch(v){console.error("[ChatWidget] Parse error:",v)}i(!1),I.close(),g.current=null,$&&M&&M($)};I.addEventListener("run.succeeded",R),I.addEventListener("run.failed",R),I.addEventListener("run.cancelled",R),I.addEventListener("run.timed_out",R),I.onerror=()=>{i(!1),I.close(),g.current=null}},[e]),O=A(async(_,T={},M={})=>{if(!_.trim()||o)return;let x=[],S={};typeof T=="function"?S={onAssistantMessage:T}:Array.isArray(T)?(x=T,S=M):S=T||{};let{model:I,thinking:$,onAssistantMessage:R,supersedeFromMessageIndex:D}=S;i(!0),u(null);let v={id:be(),role:"user",content:_.trim(),timestamp:new Date,type:"message",files:x.length>0?x.map(P=>({name:P.name,size:P.size,type:P.type})):void 0};a(P=>[...P,v]);try{let P=await t.getOrCreateSession(),b;if(x.length>0){let Q=e.apiCaseStyle!=="camel",Ke=ue=>Q?Ne(ue):ue,Z=new FormData;Z.append(Ke("agentKey"),e.agentKey),l&&Z.append(Ke("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:_.trim()}])),Z.append("metadata",JSON.stringify(Q?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),I&&Z.append("model",I),$&&Z.append("thinking","true"),x.forEach(ue=>{Z.append("files",ue)}),b=t.getFetchOptions({method:"POST",body:Z},P)}else{let Q=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:_.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...I&&{model:I},...$&&{thinking:!0},...D!==void 0&&{supersedeFromMessageIndex:D}});b=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)},P)}let L=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,b),ee=P;if(L.status===401){t.clearSession();let Q=await t.getOrCreateSession(!0);Q&&(ee=Q,x.length>0?b=t.getFetchOptions({method:"POST",body:b.body},Q):b=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:b.body},Q),L=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,b))}if(!L.ok){let Q=await L.json().catch(()=>({}));throw new Error(Q.error||Q.detail||`HTTP ${L.status}`)}let le=await L.json(),ce=t.transformResponse(le);k.current=ce.id,!l&&ce.conversationId&&p(ce.conversationId),await E(ce.id,ee,R)}catch(P){u(P.message||"Failed to send message"),i(!1)}finally{k.current=null}},[e,t,l,o,E]),B=A(async()=>{let _=k.current;if(!(!_||!o))try{let T=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",_):`${e.apiPaths.runs}${_}/cancel/`;(await fetch(`${e.backendUrl}${T}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(g.current&&(g.current.close(),g.current=null),i(!1),k.current=null,a(x=>[...x,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(T){console.error("[ChatWidget] Failed to cancel run:",T)}},[e,t,o]),V=A(()=>{a([]),p(null),u(null),d(!1),y(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),q=_=>{let T={id:be(),role:_.role,timestamp:_.timestamp?new Date(_.timestamp):new Date};if(_.role==="tool")return{...T,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:_.content,toolCallId:_.toolCallId}};if(_.role==="assistant"&&_.toolCalls&&_.toolCalls.length>0)return _.toolCalls.map(x=>({id:be(),role:"assistant",content:`\u{1F527} ${x.function?.name||x.name||"tool"}`,timestamp:T.timestamp,type:"tool_call",metadata:{toolName:x.function?.name||x.name,arguments:x.function?.arguments||x.arguments,toolCallId:x.id}}));let M=typeof _.content=="string"?_.content:JSON.stringify(_.content);return _.role==="assistant"&&!M?.trim()?null:{...T,content:M,type:"message"}},j=A(async _=>{console.log("[ChatWidget] loadConversation called with:",_),i(!0),a([]),p(_);try{let T=await t.getOrCreateSession(),x=`${e.backendUrl}${e.apiPaths.conversations}${_}/?limit=10&offset=0`;console.log("[ChatWidget] Fetching conversation from:",x);let S=await fetch(x,t.getFetchOptions({method:"GET"},T));if(console.log("[ChatWidget] Response status:",S.status),S.ok){let I=await S.json();console.log("[ChatWidget] Raw conversation:",I);let $=t.transformResponse(I);if(console.log("[ChatWidget] Transformed conversation:",$),$.messages){let R=$.messages.flatMap(q).filter(Boolean);console.log("[ChatWidget] Mapped messages:",R),a(R)}d($.hasMore||!1),y($.messages?.length||0)}else S.status===404?(console.log("[ChatWidget] Conversation not found, clearing"),p(null),n?.set(e.conversationIdKey,null)):console.error("[ChatWidget] Unexpected response status:",S.status)}catch(T){console.error("[ChatWidget] Failed to load conversation:",T)}finally{i(!1)}},[e,t,n]),z=A(async()=>{if(!(!l||h||!r)){m(!0);try{let _=await t.getOrCreateSession(),M=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${w}`,x=await fetch(M,t.getFetchOptions({method:"GET"},_));if(x.ok){let S=await x.json(),I=t.transformResponse(S);if(I.messages?.length>0){let $=I.messages.flatMap(q).filter(Boolean);a(R=>[...$,...R]),y(R=>R+I.messages.length),d(I.hasMore||!1)}else d(!1)}}catch(_){console.error("[ChatWidget] Failed to load more messages:",_)}finally{m(!1)}}},[e,t,l,w,h,r]),G=A(async(_,T,M={})=>{if(o)return;let x=s[_];if(!x||x.role!=="user")return;let S=s.slice(0,_);a(S),await O(T,{...M,supersedeFromMessageIndex:_})},[s,o,O]),N=A(async(_,T={})=>{if(o)return;let M=s[_];if(!M)return;let x=_,S=M;if(M.role==="assistant"){for(let $=_-1;$>=0;$--)if(s[$].role==="user"){x=$,S=s[$];break}if(S.role!=="user")return}else if(M.role!=="user")return;let I=s.slice(0,x);a(I),await O(S.content,{...T,supersedeFromMessageIndex:x})},[s,o,O]);return K(()=>()=>{g.current&&g.current.close()},[]),{messages:s,isLoading:o,error:c,conversationId:l,hasMoreMessages:r,loadingMoreMessages:h,sendMessage:O,cancelRun:B,clearMessages:V,loadConversation:j,loadMoreMessages:z,setConversationId:p,editMessage:G,retryMessage:N}}var Rt="cw_thinking_enabled";function Dt(e,t,n){let[s,a]=C([]),[o,i]=C(null),[c,u]=C(null),[l,p]=C(!1),[r,d]=C(!1);K(()=>{(async()=>{if(e.showModelSelector){p(!0);try{let k=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if(k.ok){let E=await k.json(),O=E.models||[];a(O),u(E.default);let B=n?.get(e.modelKey);B&&O.some(q=>q.id===B)?i(B):i(E.default),n?.get(Rt)==="true"&&d(!0)}}catch(k){console.warn("[ChatWidget] Failed to load models:",k)}finally{p(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let h=A(g=>{i(g),n?.set(e.modelKey,g)},[e.modelKey,n]),m=A(g=>{d(g),n?.set(Rt,g?"true":"false")},[n]),w=A(()=>s.find(g=>g.id===o)||null,[s,o]),y=A(()=>w()?.supports_thinking||!1,[w]);return{availableModels:s,selectedModel:o,defaultModel:c,isLoading:l,selectModel:h,getSelectedModelInfo:w,thinkingEnabled:r,toggleThinking:m,supportsThinking:y}}function Ft(e,t){let[n,s]=C(null),[a,o]=C(!1),[i,c]=C(null),u=e.apiPaths?.tasks||"/api/agent/tasks/",l=A(async()=>{o(!0),c(null);try{let w=`${e.backendUrl}${u}`,y=await fetch(w,t.getFetchOptions({method:"GET"}));if(y.ok){let g=await y.json();s(g)}else{let g=await y.json().catch(()=>({}));c(g.error||"Failed to load tasks")}}catch(w){console.error("[useTasks] Failed to load task list:",w),c("Failed to load tasks")}finally{o(!1)}},[e.backendUrl,u,t]),p=A(async w=>{if(!n)return null;try{let y=`${e.backendUrl}${u}${n.id}/add_task/`,g=await fetch(y,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(w)}));if(g.ok){let k=await g.json();return await l(),k}else{let k=await g.json().catch(()=>({}));return c(k.error||"Failed to add task"),null}}catch(y){return console.error("[useTasks] Failed to add task:",y),c("Failed to add task"),null}},[e.backendUrl,u,n,t,l]),r=A(async(w,y)=>{if(!n)return null;try{let g=`${e.backendUrl}${u}${n.id}/update_task/${w}/`,k=await fetch(g,t.getFetchOptions({method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}));if(k.ok){let E=await k.json();return await l(),E}else{let E=await k.json().catch(()=>({}));return c(E.error||"Failed to update task"),null}}catch(g){return console.error("[useTasks] Failed to update task:",g),c("Failed to update task"),null}},[e.backendUrl,u,n,t,l]),d=A(async w=>{if(!n)return!1;try{let y=`${e.backendUrl}${u}${n.id}/remove_task/${w}/`,g=await fetch(y,t.getFetchOptions({method:"DELETE"}));if(g.ok)return await l(),!0;{let k=await g.json().catch(()=>({}));return c(k.error||"Failed to remove task"),!1}}catch(y){return console.error("[useTasks] Failed to remove task:",y),c("Failed to remove task"),!1}},[e.backendUrl,u,n,t,l]),h=A(async()=>{if(!n)return!1;try{let w=`${e.backendUrl}${u}${n.id}/clear/`,y=await fetch(w,t.getFetchOptions({method:"POST"}));if(y.ok)return await l(),!0;{let g=await y.json().catch(()=>({}));return c(g.error||"Failed to clear tasks"),!1}}catch(w){return console.error("[useTasks] Failed to clear tasks:",w),c("Failed to clear tasks"),!1}},[e.backendUrl,u,n,t,l]),m=A(()=>c(null),[]);return{taskList:n,tasks:n?.tasks||[],progress:n?.progress||{total:0,completed:0,percent_complete:0},isLoading:a,error:i,loadTaskList:l,addTask:p,updateTask:r,removeTask:d,clearTasks:h,clearError:m}}function Ht(e,t,n){let s=p=>!p||typeof p!="object"||e.apiCaseStyle==="camel"?p:ke(p),a=p=>!p||typeof p!="object"||e.apiCaseStyle==="snake"?p:$e(p),o=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(p=null)=>{let r=o(),d={},h=p||e.authToken||t().authToken;if(r==="token"&&h){let m=e.authHeader||"Authorization",w=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";d[m]=w?`${w} ${h}`:h}else if(r==="jwt"&&h){let m=e.authHeader||"Authorization",w=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";d[m]=w?`${w} ${h}`:h}else if(r==="anonymous"&&h){let m=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";d[m]=h}if(r==="session"){let m=kt(e.csrfCookieName);m&&(d["X-CSRFToken"]=m)}return d};return{getAuthStrategy:o,getAuthHeaders:i,getFetchOptions:(p={},r=null)=>{let d=o(),h={...p},m=i(r);return console.log("[ChatWidget] getFetchOptions - strategy:",d,"overrideToken:",r,"authHeaders:",m),h.headers={...h.headers,...m},d==="session"&&(h.credentials="include"),h},getOrCreateSession:async(p=!1)=>{let r=o(),d=t(),h=e.anonymousTokenKey||e.sessionTokenKey;if(r!=="anonymous")return e.authToken||d.authToken;if(!p){if(d.authToken)return d.authToken;let m=d.storage?.get(h);if(m)return n(w=>({...w,authToken:m})),m}try{let m=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,w=await fetch(`${e.backendUrl}${m}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(w.ok){let y=await w.json();return n(g=>({...g,authToken:y.token})),d.storage?.set(h,y.token),y.token}}catch(m){console.warn("[ChatWidget] Failed to create session:",m)}return null},clearSession:()=>{let p=e.anonymousTokenKey||e.sessionTokenKey,r=t();n(d=>({...d,authToken:null})),r.storage?.set(p,null)},transformRequest:s,transformResponse:a}}function Ot({config:e,onStateChange:t,markdownParser:n,apiRef:s}){console.log("[ChatWidget] Config:",{showConversationSidebar:e.showConversationSidebar,apiPaths:e.apiPaths});let[a,o]=C(e.embedded||e.forceOpen===!0),[i,c]=C(!1),[u,l]=C(!1),[p,r]=C(!1),[d,h]=C([]),[m,w]=C("chat"),[y,g]=C(!1),[k,E]=C(e.enableTTS),[O,B]=C(!1),[V,q]=C(null);K(()=>{e.forceOpen!==void 0&&o(e.forceOpen)},[e.forceOpen]);let j=ie(()=>$t(e.containerId),[e.containerId]),[z,G]=C(e.authToken||null),N=ie(()=>Ht(e,()=>({authToken:z,storage:j}),ee=>{let le=ee({authToken:z,storage:j});le.authToken!==z&&G(le.authToken)}),[e,z,j]),_=At(e,N,j),T=Dt(e,N,j),M=Ft(e,N);K(()=>{for(let b=_.messages.length-1;b>=0;b--){let L=_.messages[b];if(L.type==="sub_agent_start"){q({key:L.metadata?.subAgentKey,name:L.metadata?.agentName});return}if(L.type==="sub_agent_end"){q(null);return}}},[_.messages]),K(()=>{let b=j.get(e.conversationIdKey);console.log("[ChatWidget] Initial load - storedConvId:",b,"key:",e.conversationIdKey),console.log("[ChatWidget] apiPaths.conversations:",e.apiPaths.conversations),b&&(console.log("[ChatWidget] Loading conversation:",b),_.loadConversation(b))},[]),K(()=>{t&&t({isOpen:a,isExpanded:i,debugMode:u,messages:_.messages,conversationId:_.conversationId,isLoading:_.isLoading,error:_.error})},[a,i,u,_.messages,_.conversationId,_.isLoading,_.error]);let x=A(async()=>{if(e.showConversationSidebar){g(!0);try{let b=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,L=await fetch(b,N.getFetchOptions({method:"GET"}));if(L.ok){let ee=await L.json();h(ee.results||ee)}}catch(b){console.error("[ChatWidget] Failed to load conversations:",b),h([])}finally{g(!1)}}},[e,N]),S=A(()=>{let b=!p;r(b),b&&x()},[p,x]),I=A(b=>{b!==_.conversationId&&_.loadConversation(b),r(!1)},[_]),$=A(()=>{_.clearMessages(),r(!1)},[_]),R=A(b=>{_.sendMessage(b,{model:T.selectedModel,thinking:T.thinkingEnabled&&T.supportsThinking(),onAssistantMessage:L=>{}})},[_,k,T.selectedModel,T.thinkingEnabled,T.supportsThinking]),D=A(b=>{w(b),b==="tasks"&&M.loadTaskList()},[M]);if(K(()=>{s&&(s.current={open:()=>o(!0),close:()=>o(!1),send:b=>R(b),clearMessages:()=>_.clearMessages(),toggleTTS:()=>E(b=>!b),stopSpeech:()=>B(!1),setAuth:b=>{b.token!==void 0&&G(b.token)},clearAuth:()=>G(null)})},[_,s,R]),!e.embedded&&!a)return f`
495
495
  <button
496
496
  class="cw-fab"
497
497
  style=${{backgroundColor:e.primaryColor}}
@@ -501,47 +501,47 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
501
501
  <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>
502
502
  </svg>
503
503
  </button>
504
- `;let v=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return f`
505
- <div class=${v} style=${{"--cw-primary":e.primaryColor}}>
504
+ `;let v=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" "),P=e.headerTextColor||bt(e.primaryColor);return f`
505
+ <div class=${v} style=${{"--cw-primary":e.primaryColor,"--cw-header-text":P}}>
506
506
  ${e.showConversationSidebar&&f`
507
- <${Mt}
507
+ <${Et}
508
508
  isOpen=${p}
509
509
  conversations=${d}
510
510
  conversationsLoading=${y}
511
- currentConversationId=${h.conversationId}
511
+ currentConversationId=${_.conversationId}
512
512
  onClose=${()=>r(!1)}
513
- onNewConversation=${k}
513
+ onNewConversation=${$}
514
514
  onSwitchConversation=${I}
515
515
  />
516
516
  `}
517
517
 
518
- <${kt}
518
+ <${Ct}
519
519
  config=${e}
520
520
  debugMode=${u}
521
521
  isExpanded=${i}
522
522
  isSpeaking=${O}
523
- messagesCount=${h.messages.length}
524
- isLoading=${h.isLoading}
525
- currentAgent=${J}
523
+ messagesCount=${_.messages.length}
524
+ isLoading=${_.isLoading}
525
+ currentAgent=${V}
526
526
  onClose=${()=>o(!1)}
527
527
  onToggleExpand=${()=>c(!i)}
528
528
  onToggleDebug=${()=>l(!u)}
529
- onToggleTTS=${()=>E(!w)}
530
- onClear=${h.clearMessages}
531
- onToggleSidebar=${T}
529
+ onToggleTTS=${()=>E(!k)}
530
+ onClear=${_.clearMessages}
531
+ onToggleSidebar=${S}
532
532
  />
533
533
 
534
534
  ${e.showTasksTab!==!1&&f`
535
535
  <div class="cw-tabs">
536
536
  <button
537
537
  class=${`cw-tab ${m==="chat"?"cw-tab-active":""}`}
538
- onClick=${()=>R("chat")}
538
+ onClick=${()=>D("chat")}
539
539
  >
540
540
  Chat
541
541
  </button>
542
542
  <button
543
543
  class=${`cw-tab ${m==="tasks"?"cw-tab-active":""}`}
544
- onClick=${()=>R("tasks")}
544
+ onClick=${()=>D("tasks")}
545
545
  >
546
546
  Tasks ${M.progress.total>0?f`<span class="cw-tab-badge">${M.progress.completed}/${M.progress.total}</span>`:""}
547
547
  </button>
@@ -551,43 +551,43 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
551
551
  ${u&&f`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
552
552
 
553
553
  ${m==="chat"?f`
554
- <${St}
555
- messages=${h.messages}
556
- isLoading=${h.isLoading}
557
- hasMoreMessages=${h.hasMoreMessages}
558
- loadingMoreMessages=${h.loadingMoreMessages}
559
- onLoadMore=${h.loadMoreMessages}
560
- onEditMessage=${h.editMessage}
561
- onRetryMessage=${h.retryMessage}
554
+ <${Mt}
555
+ messages=${_.messages}
556
+ isLoading=${_.isLoading}
557
+ hasMoreMessages=${_.hasMoreMessages}
558
+ loadingMoreMessages=${_.loadingMoreMessages}
559
+ onLoadMore=${_.loadMoreMessages}
560
+ onEditMessage=${_.editMessage}
561
+ onRetryMessage=${_.retryMessage}
562
562
  debugMode=${u}
563
563
  markdownParser=${n}
564
564
  emptyStateTitle=${e.emptyStateTitle}
565
565
  emptyStateMessage=${e.emptyStateMessage}
566
566
  />
567
567
 
568
- ${h.error&&f`<div class="cw-error-bar">${h.error}</div>`}
568
+ ${_.error&&f`<div class="cw-error-bar">${_.error}</div>`}
569
569
 
570
- ${e.showModelSelector&&S.availableModels.length>0&&f`
571
- <${Et}
572
- availableModels=${S.availableModels}
573
- selectedModel=${S.selectedModel}
574
- onSelectModel=${S.selectModel}
575
- thinkingEnabled=${S.thinkingEnabled}
576
- onToggleThinking=${S.toggleThinking}
577
- disabled=${h.isLoading}
570
+ ${e.showModelSelector&&T.availableModels.length>0&&f`
571
+ <${It}
572
+ availableModels=${T.availableModels}
573
+ selectedModel=${T.selectedModel}
574
+ onSelectModel=${T.selectModel}
575
+ thinkingEnabled=${T.thinkingEnabled}
576
+ onToggleThinking=${T.toggleThinking}
577
+ disabled=${_.isLoading}
578
578
  />
579
579
  `}
580
580
 
581
- <${Tt}
582
- onSend=${P}
583
- onCancel=${h.cancelRun}
584
- isLoading=${h.isLoading}
581
+ <${xt}
582
+ onSend=${R}
583
+ onCancel=${_.cancelRun}
584
+ isLoading=${_.isLoading}
585
585
  placeholder=${e.placeholder}
586
586
  primaryColor=${e.primaryColor}
587
587
  enableVoice=${e.enableVoice}
588
588
  />
589
589
  `:f`
590
- <${xt}
590
+ <${Pt}
591
591
  tasks=${M.tasks}
592
592
  progress=${M.progress}
593
593
  isLoading=${M.isLoading}
@@ -599,9 +599,9 @@ var ChatWidgetModule=(()=>{var ue=Object.defineProperty;var Ut=Object.getOwnProp
599
599
  />
600
600
  `}
601
601
  </div>
602
- `}var Ht={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/"},apiCaseStyle:"auto",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 Ot(e){let t={...Ht.apiPaths,...e.apiPaths||{}};return{...Ht,...e,apiPaths:t}}var Se=new Map,cn=0,F=null,Ue=class{constructor(t={}){We(this,"_handleStateChange",t=>{this._state=t});this.instanceId=`cw-${++cn}`,this.config=Ot(t),this.container=null,this._state={},this._apiRef={current:null},Se.set(this.instanceId,this)}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&&ye(f`<${Ft}
602
+ `}var Nt={backendUrl:"http://localhost:8000",agentKey:"default-agent",title:"Chat Assistant",subtitle:"How can we help you today?",primaryColor:"#0066cc",headerTextColor:null,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/"},apiCaseStyle:"auto",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 Lt(e){let t={...Nt.apiPaths,...e.apiPaths||{}};return{...Nt,...e,apiPaths:t}}var Te=new Map,dn=0,F=null,Ue=class{constructor(t={}){Be(this,"_handleStateChange",t=>{this._state=t});this.instanceId=`cw-${++dn}`,this.config=Lt(t),this.container=null,this._state={},this._apiRef={current:null},Te.set(this.instanceId,this)}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&&ve(f`<${Ot}
603
603
  config=${{...this.config,...t}}
604
604
  onStateChange=${this._handleStateChange}
605
- markdownParser=${Te._enhancedMarkdownParser}
605
+ markdownParser=${Me._enhancedMarkdownParser}
606
606
  apiRef=${this._apiRef}
607
- />`,this.container)}destroy(){this.container&&(ye(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),Se.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}}updateMetadata(t){this.config.metadata={...this.config.metadata,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} metadata updated:`,t)}updateConfig(t){this.config={...this.config,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} config updated`)}};function Nt(e={}){return new Ue(e).init()}function un(e={}){return F&&F.destroy(),F=Nt(e),F}function dn(){F&&(F.destroy(),F=null)}function pn(){F&&F.open()}function _n(){F&&F.close()}function hn(e){F&&F.send(e)}function fn(){F&&F.clearMessages()}function mn(){F&&F.toggleTTS()}function gn(){F&&F.stopSpeech()}function yn(e){F&&F.setAuth(e)}function vn(){F&&F.clearAuth()}function $n(){return F?F.getState():null}function wn(){return F?F.getConfig():null}var Te={createInstance:Nt,getInstance:e=>Se.get(e),getAllInstances:()=>Array.from(Se.values()),init:un,destroy:dn,open:pn,close:_n,send:hn,clearMessages:fn,toggleTTS:mn,stopSpeech:gn,setAuth:yn,clearAuth:vn,getState:$n,getConfig:wn,_enhancedMarkdownParser:null};var kn=Te;typeof window<"u"&&(window.ChatWidget=Te);return Jt(bn);})();
607
+ />`,this.container)}destroy(){this.container&&(ve(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),Te.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}}updateMetadata(t){this.config.metadata={...this.config.metadata,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} metadata updated:`,t)}updateConfig(t){this.config={...this.config,...t},this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} config updated`)}};function Wt(e={}){return new Ue(e).init()}function pn(e={}){return F&&F.destroy(),F=Wt(e),F}function _n(){F&&(F.destroy(),F=null)}function hn(){F&&F.open()}function fn(){F&&F.close()}function mn(e){F&&F.send(e)}function gn(){F&&F.clearMessages()}function yn(){F&&F.toggleTTS()}function vn(){F&&F.stopSpeech()}function wn(e){F&&F.setAuth(e)}function $n(){F&&F.clearAuth()}function kn(){return F?F.getState():null}function bn(){return F?F.getConfig():null}var Me={createInstance:Wt,getInstance:e=>Te.get(e),getAllInstances:()=>Array.from(Te.values()),init:pn,destroy:_n,open:hn,close:fn,send:mn,clearMessages:gn,toggleTTS:yn,stopSpeech:vn,setAuth:wn,clearAuth:$n,getState:kn,getConfig:bn,_enhancedMarkdownParser:null};var Cn=Me;typeof window<"u"&&(window.ChatWidget=Me);return Vt(Sn);})();
@@ -5,7 +5,7 @@
5
5
  <meta charset="UTF-8">
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
7
  <meta name="csrf-token" content="{{ csrf_token }}">
8
- <title>{% block title %}{{ studio_app_name }}{% endblock %}</title>
8
+ <title>{% block title %}{{ studio_app_name|default:'Agent Studio' }}{% endblock %}</title>
9
9
 
10
10
  <!-- Tailwind CSS -->
11
11
  <script src="https://cdn.tailwindcss.com"></script>
@@ -15,34 +15,34 @@
15
15
  theme: {
16
16
  extend: {
17
17
  colors: {
18
- // Brand Colors (from Django settings)
18
+ // Brand Colors (from Django settings with fallbacks)
19
19
  primary: {
20
20
  "50": "#e6f7fc",
21
21
  "100": "#cceff9",
22
22
  "200": "#99dff3",
23
23
  "300": "#66cfed",
24
- "400": "{{ studio_colors.accent }}",
24
+ "400": "{{ studio_colors.accent|default:'#4fc4f7' }}",
25
25
  "500": "#33b5e7",
26
26
  "600": "#2691b9",
27
27
  "700": "#1a6d8b",
28
28
  "800": "#0d495c",
29
- "900": "{{ studio_colors.primary }}",
30
- "950": "{{ studio_colors.primary_dark }}"
29
+ "900": "{{ studio_colors.primary|default:'#00142E' }}",
30
+ "950": "{{ studio_colors.primary_dark|default:'#000d1f' }}"
31
31
  },
32
32
  navy: {
33
- "DEFAULT": "{{ studio_colors.primary }}",
34
- "light": "{{ studio_colors.primary_light }}",
35
- "dark": "{{ studio_colors.primary_dark }}"
33
+ "DEFAULT": "{{ studio_colors.primary|default:'#00142E' }}",
34
+ "light": "{{ studio_colors.primary_light|default:'#0a2540' }}",
35
+ "dark": "{{ studio_colors.primary_dark|default:'#000d1f' }}"
36
36
  },
37
37
  cyan: {
38
- "DEFAULT": "{{ studio_colors.accent }}",
39
- "light": "{{ studio_colors.accent_light }}",
40
- "dark": "{{ studio_colors.accent_dark }}"
38
+ "DEFAULT": "{{ studio_colors.accent|default:'#4fc4f7' }}",
39
+ "light": "{{ studio_colors.accent_light|default:'#7dd3fc' }}",
40
+ "dark": "{{ studio_colors.accent_dark|default:'#3db8eb' }}"
41
41
  },
42
42
  slate: {
43
- "DEFAULT": "{{ studio_colors.secondary }}",
44
- "light": "{{ studio_colors.secondary_light }}",
45
- "dark": "{{ studio_colors.secondary_dark }}"
43
+ "DEFAULT": "{{ studio_colors.secondary|default:'#253547' }}",
44
+ "light": "{{ studio_colors.secondary_light|default:'#334155' }}",
45
+ "dark": "{{ studio_colors.secondary_dark|default:'#1e293b' }}"
46
46
  }
47
47
  },
48
48
  fontFamily: {
@@ -87,17 +87,17 @@
87
87
  <style>
88
88
  [v-cloak] { display: none; }
89
89
 
90
- /* ===== Brand Color Variables (from Django settings) ===== */
90
+ /* ===== Brand Color Variables (from Django settings with fallbacks) ===== */
91
91
  :root {
92
- --studio-primary: {{ studio_colors.primary }};
93
- --studio-primary-light: {{ studio_colors.primary_light }};
94
- --studio-primary-dark: {{ studio_colors.primary_dark }};
95
- --studio-accent: {{ studio_colors.accent }};
96
- --studio-accent-light: {{ studio_colors.accent_light }};
97
- --studio-accent-dark: {{ studio_colors.accent_dark }};
98
- --studio-secondary: {{ studio_colors.secondary }};
99
- --studio-secondary-light: {{ studio_colors.secondary_light }};
100
- --studio-secondary-dark: {{ studio_colors.secondary_dark }};
92
+ --studio-primary: {{ studio_colors.primary|default:'#00142E' }};
93
+ --studio-primary-light: {{ studio_colors.primary_light|default:'#0a2540' }};
94
+ --studio-primary-dark: {{ studio_colors.primary_dark|default:'#000d1f' }};
95
+ --studio-accent: {{ studio_colors.accent|default:'#4fc4f7' }};
96
+ --studio-accent-light: {{ studio_colors.accent_light|default:'#7dd3fc' }};
97
+ --studio-accent-dark: {{ studio_colors.accent_dark|default:'#3db8eb' }};
98
+ --studio-secondary: {{ studio_colors.secondary|default:'#253547' }};
99
+ --studio-secondary-light: {{ studio_colors.secondary_light|default:'#334155' }};
100
+ --studio-secondary-dark: {{ studio_colors.secondary_dark|default:'#1e293b' }};
101
101
  }
102
102
 
103
103
  /* Override PrimeVue primary color */
@@ -204,10 +204,10 @@
204
204
  <div class="flex items-center space-x-6">
205
205
  <a href="{% url 'agent_studio:home' %}" class="studio-logo">
206
206
  <!-- Logo from settings -->
207
- {{ studio_logo_svg|safe }}
208
- {% if studio_show_app_name %}
207
+ {% if studio_logo_svg %}{{ studio_logo_svg|safe }}{% else %}<svg viewBox="0 0 80 32" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-7"><text x="0" y="24" fill="currentColor" font-family="system-ui, -apple-system, sans-serif" font-size="24" font-weight="700">AS</text></svg>{% endif %}
208
+ {% if studio_show_app_name|default:True %}
209
209
  <div class="flex items-center">
210
- <span class="text-lg font-semibold text-white/90">{{ studio_app_name }}</span>
210
+ <span class="text-lg font-semibold text-white/90">{{ studio_app_name|default:'Agent Studio' }}</span>
211
211
  </div>
212
212
  {% endif %}
213
213
  </a>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-agent-studio
3
- Version: 0.3.4
3
+ Version: 0.3.6
4
4
  Summary: Visual agent builder and management studio for Django - build custom GPTs with a two-pane interface
5
5
  Author: Chris Barry
6
6
  License: Business Source License 1.1
@@ -20,13 +20,13 @@ django_agent_studio/models/permissions.py,sha256=NepltvQzeehv5EwcOTqULj8n3N5XGVT
20
20
  django_agent_studio/services/__init__.py,sha256=06cc1eLnAbROTKFxBgvkeCpsYV5cQsyJVGXaE_rcp3M,244
21
21
  django_agent_studio/services/permissions.py,sha256=-cwe0YZCFBFYh_ScXKncsPwEkCfEyIrtOzp8Wt9GSco,7785
22
22
  django_agent_studio/static/agent-frontend/chat-widget-markdown.js,sha256=_TQCux4HPRynCiLKydITO-docIRoi454jLpX0fegAFM,3722
23
- django_agent_studio/static/agent-frontend/chat-widget.css,sha256=hXbF85O9r9NtfGPsfm_j0ydA6eSQunxrSop3wguRQy4,39272
24
- django_agent_studio/static/agent-frontend/chat-widget.js,sha256=taWJEanfXJjO9HRT3e1eK0428q3g-59s0PN9XsPjYIA,62278
23
+ django_agent_studio/static/agent-frontend/chat-widget.css,sha256=CrVBHpN8yG1zOuVgj6H_ATXJby6RyzLSO6FSxOB3Tas,39366
24
+ django_agent_studio/static/agent-frontend/chat-widget.js,sha256=-RkQcK2K-RZ4tZ620QcJn_-9zZyqQD2fP50_X3ggXyY,63570
25
25
  django_agent_studio/static/django_agent_studio/js/builder.js,sha256=9b5tfVtKLBubzYx1SgfQ_k3DXyGk_hgTsD9CSOXH82M,419987
26
26
  django_agent_studio/static/django_agent_studio/js/builder.js.map,sha256=GnCYDH_KCn9sK5ZY_qO7xZrHlK75kDYDagJChrFduy0,1650733
27
27
  django_agent_studio/static/django_agent_studio/js/style.css,sha256=UqHhQqLup8c34l76M5YPQczAZs3FM4Z45-x-KbqVoZ8,1630851
28
28
  django_agent_studio/templates/django_agent_studio/agent_list.html,sha256=khHjecmMkoUngSQISiFq8uVB7qj0W0loSr4KquggSo0,5475
29
- django_agent_studio/templates/django_agent_studio/base.html,sha256=fMg6q7_3WmTRo4LOxWzYXXnpgorEaPbTeaZlJXQjD1o,10022
29
+ django_agent_studio/templates/django_agent_studio/base.html,sha256=c0OKhFtdkhrZkK4K6vsN_yey3a2eOXzLlndPnbfHUnY,10756
30
30
  django_agent_studio/templates/django_agent_studio/builder.html,sha256=sc0V661vbe6iOULqsMOgX6fqgDNtyYRx1NobmqX79Us,1551
31
31
  django_agent_studio/templates/django_agent_studio/collaborators.html,sha256=9r9uN9NdX_DijWdNUsDnIyGCvYdB25GUCyXkqxPDWI0,19641
32
32
  django_agent_studio/templates/django_agent_studio/home.html,sha256=4TSpgQg5fS5qGZHSeuYLF6xs8JoJr0dnEd2DUjHxHE0,8720
@@ -34,8 +34,8 @@ django_agent_studio/templates/django_agent_studio/system_create.html,sha256=0D46
34
34
  django_agent_studio/templates/django_agent_studio/system_list.html,sha256=93gQUcUbgWhPXdo8gyLTdqlceDmII5nOe9wjgW9v1WM,5555
35
35
  django_agent_studio/templates/django_agent_studio/system_test.html,sha256=LJvJqqkdO4ua1GvWUV7M1G-NFhRjBy0eRsTKYY1rJkg,4990
36
36
  django_agent_studio/templates/django_agent_studio/test.html,sha256=T0ETvqH5v7rUoOhuwbuxdZ2zrka89H4i-efNkwK_2Fc,4740
37
- django_agent_studio-0.3.4.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
38
- django_agent_studio-0.3.4.dist-info/METADATA,sha256=1OiOos9Wxx_L-UxHIys4b-reu_hQ4CB1_p95-5hi1Lw,17048
39
- django_agent_studio-0.3.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
40
- django_agent_studio-0.3.4.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
41
- django_agent_studio-0.3.4.dist-info/RECORD,,
37
+ django_agent_studio-0.3.6.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
38
+ django_agent_studio-0.3.6.dist-info/METADATA,sha256=cEbtoNizHhOPMUwJZ2BgiM3AXmWBKcmKHroN9MiKFnk,17048
39
+ django_agent_studio-0.3.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
40
+ django_agent_studio-0.3.6.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
41
+ django_agent_studio-0.3.6.dist-info/RECORD,,