django-agent-studio 0.2.1__py3-none-any.whl → 0.2.5__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.
@@ -1693,19 +1693,36 @@
1693
1693
  Edit/Retry Message Actions
1694
1694
  ========================================== */
1695
1695
 
1696
+ /* Wrapper for message bubble + action buttons */
1697
+ .cw-message-wrapper {
1698
+ position: relative;
1699
+ display: inline-flex;
1700
+ align-items: flex-start;
1701
+ max-width: 80%;
1702
+ }
1703
+
1696
1704
  /* Container for action buttons - appears on hover */
1697
1705
  .cw-message-actions {
1698
1706
  display: flex;
1699
1707
  gap: 4px;
1700
1708
  opacity: 0;
1701
1709
  transition: opacity 0.15s ease;
1702
- position: absolute;
1703
- right: 100%;
1704
- top: 50%;
1705
- transform: translateY(-50%);
1710
+ flex-shrink: 0;
1711
+ align-self: center;
1712
+ }
1713
+
1714
+ /* Position on left side (for user messages - they're on the right) */
1715
+ .cw-message-actions-left {
1716
+ order: -1;
1706
1717
  margin-right: 6px;
1707
1718
  }
1708
1719
 
1720
+ /* Position on right side (for assistant messages - they're on the left) */
1721
+ .cw-message-actions-right {
1722
+ order: 1;
1723
+ margin-left: 6px;
1724
+ }
1725
+
1709
1726
  .cw-message-row-with-actions:hover .cw-message-actions {
1710
1727
  opacity: 1;
1711
1728
  }
@@ -1,10 +1,10 @@
1
- var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var Dt=Object.getOwnPropertyNames;var Pt=Object.prototype.hasOwnProperty;var Ht=(e,t)=>{for(var n in t)Ce(e,n,{get:t[n],enumerable:!0})},Nt=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Dt(t))!Pt.call(e,r)&&r!==n&&Ce(e,r,{get:()=>t[r],enumerable:!(o=At(t,r))||o.enumerable});return e};var Ot=e=>Nt(Ce({},"__esModule",{value:!0}),e);var _n={};Ht(_n,{ChatWidget:()=>ke,default:()=>dn});var de,D,ze,Ft,Y,Ue,je,Je,Ve,xe,Se,Me,Wt,oe={},qe=[],Ut=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_e=Array.isArray;function Q(e,t){for(var n in t)e[n]=t[n];return e}function Ee(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function pe(e,t,n){var o,r,s,i={};for(s in t)s=="key"?o=t[s]:s=="ref"?r=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?de.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)i[s]===void 0&&(i[s]=e.defaultProps[s]);return ce(e,i,o,r,null)}function ce(e,t,n,o,r){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++ze,__i:-1,__u:0};return r==null&&D.vnode!=null&&D.vnode(s),s}function fe(e){return e.children}function ne(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 Ge(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 Ge(e)}}function Le(e){(!e.__d&&(e.__d=!0)&&Y.push(e)&&!ue.__r++||Ue!=D.debounceRendering)&&((Ue=D.debounceRendering)||je)(ue)}function ue(){for(var e,t,n,o,r,s,i,c=1;Y.length;)Y.length>c&&Y.sort(Je),e=Y.shift(),c=Y.length,e.__d&&(n=void 0,o=void 0,r=(o=(t=e).__v).__e,s=[],i=[],t.__P&&((n=Q({},o)).__v=o.__v+1,D.vnode&&D.vnode(n),Ie(t.__P,n,o,t.__n,t.__P.namespaceURI,32&o.__u?[r]:null,s,r??te(o),!!(32&o.__u),i),n.__v=o.__v,n.__.__k[n.__i]=n,Ze(s,n,i),o.__e=o.__=null,n.__e!=r&&Ge(n)));ue.__r=0}function Xe(e,t,n,o,r,s,i,c,d,l,u){var a,_,p,$,C,g,y,w=o&&o.__k||qe,I=t.length;for(d=Lt(n,t,w,d,I),a=0;a<I;a++)(p=n.__k[a])!=null&&(_=p.__i==-1?oe:w[p.__i]||oe,p.__i=a,g=Ie(e,p,_,r,s,i,c,d,l,u),$=p.__e,p.ref&&_.ref!=p.ref&&(_.ref&&Re(_.ref,null,p),u.push(p.ref,p.__c||$,p)),C==null&&$!=null&&(C=$),(y=!!(4&p.__u))||_.__k===p.__k?d=Qe(p,d,e,y):typeof p.type=="function"&&g!==void 0?d=g:$&&(d=$.nextSibling),p.__u&=-7);return n.__e=C,d}function Lt(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,_=0;for(e.__k=new Array(r),s=0;s<r;s++)(i=t[s])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[s]=ce(null,i,null,null,null):_e(i)?i=e.__k[s]=ce(fe,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[s]=ce(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,d=s+_,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Kt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?_--:r<u&&_++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?_--:l==d+1?_++:(l>d?_--:_++,i.__u|=4))):e.__k[s]=null;if(a)for(s=0;s<u;s++)(c=n[s])!=null&&!(2&c.__u)&&(c.__e==o&&(o=te(c)),et(c,c));return o}function Qe(e,t,n,o){var r,s;if(typeof e.type=="function"){for(r=e.__k,s=0;r&&s<r.length;s++)r[s]&&(r[s].__=e,t=Qe(r[s],t,n,o));return t}e.__e!=t&&(o&&(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 Kt(e,t,n,o){var r,s,i,c=e.key,d=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&c==null||u&&c==l.key&&d==l.type)return n;if(o>(u?1:0)){for(r=n-1,s=n+1;r>=0||s<t.length;)if((l=t[i=r>=0?r--:s++])!=null&&!(2&l.__u)&&c==l.key&&d==l.type)return i}return-1}function Ke(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Ut.test(t)?n:n+"px"}function le(e,t,n,o,r){var s,i;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||Ke(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Ke(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(Ve,"$1")),i=t.toLowerCase(),t=i in e||t=="onFocusOut"||t=="onFocusIn"?i.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?o?n.u=o.u:(n.u=xe,e.addEventListener(t,s?Me:Se,s)):e.removeEventListener(t,s?Me:Se,s);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Be(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=xe++;else if(t.t<n.u)return;return n(D.event?D.event(t):t)}}}function Ie(e,t,n,o,r,s,i,c,d,l){var u,a,_,p,$,C,g,y,w,I,N,V,O,j,J,K,k,H=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=D.__b)&&u(t);e:if(typeof H=="function")try{if(y=t.props,w="prototype"in H&&H.prototype.render,I=(u=H.contextType)&&o[u.__c],N=u?I?I.props.value:u.__:o,n.__c?g=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new H(y,N):(t.__c=a=new ne(y,N),a.constructor=H,a.render=zt),I&&I.sub(a),a.state||(a.state={}),a.__n=o,_=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&H.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=Q({},a.__s)),Q(a.__s,H.getDerivedStateFromProps(y,a.__s))),p=a.props,$=a.state,a.__v=t,_)w&&H.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&H.getDerivedStateFromProps==null&&y!==p&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(y,N),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(y,a.__s,N)===!1){for(t.__v!=n.__v&&(a.props=y,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(v){v&&(v.__=t)}),V=0;V<a._sb.length;V++)a.__h.push(a._sb[V]);a._sb=[],a.__h.length&&i.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(y,a.__s,N),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(p,$,C)})}if(a.context=N,a.props=y,a.__P=e,a.__e=!1,O=D.__r,j=0,w){for(a.state=a.__s,a.__d=!1,O&&O(t),u=a.render(a.props,a.state,a.context),J=0;J<a._sb.length;J++)a.__h.push(a._sb[J]);a._sb=[]}else do a.__d=!1,O&&O(t),u=a.render(a.props,a.state,a.context),a.state=a.__s;while(a.__d&&++j<25);a.state=a.__s,a.getChildContext!=null&&(o=Q(Q({},o),a.getChildContext())),w&&!_&&a.getSnapshotBeforeUpdate!=null&&(C=a.getSnapshotBeforeUpdate(p,$)),K=u,u!=null&&u.type===fe&&u.key==null&&(K=Ye(u.props.children)),c=Xe(e,_e(K)?K:[K],t,n,o,r,s,i,c,d,l),a.base=t.__e,t.__u&=-161,a.__h.length&&i.push(a),g&&(a.__E=a.__=null)}catch(v){if(t.__v=null,d||s!=null)if(v.then){for(t.__u|=d?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;s[s.indexOf(c)]=null,t.__e=c}else{for(k=s.length;k--;)Ee(s[k]);Te(t)}else t.__e=n.__e,t.__k=n.__k,v.then||Te(t);D.__e(v,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=Bt(n.__e,t,n,o,r,s,i,d,l);return(u=D.diffed)&&u(t),128&t.__u?void 0:c}function Te(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Te)}function Ze(e,t,n){for(var o=0;o<n.length;o++)Re(n[o],n[++o],n[++o]);D.__c&&D.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){D.__e(s,r.__v)}})}function Ye(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:_e(e)?e.map(Ye):Q({},e)}function Bt(e,t,n,o,r,s,i,c,d){var l,u,a,_,p,$,C,g=n.props||oe,y=t.props,w=t.type;if(w=="svg"?r="http://www.w3.org/2000/svg":w=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),s!=null){for(l=0;l<s.length;l++)if((p=s[l])&&"setAttribute"in p==!!w&&(w?p.localName==w:p.nodeType==3)){e=p,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(y);e=document.createElementNS(r,w,y.is&&y),c&&(D.__m&&D.__m(t,s),c=!1),s=null}if(w==null)g===y||c&&e.data==y||(e.data=y);else{if(s=s&&de.call(e.childNodes),!c&&s!=null)for(g={},l=0;l<e.attributes.length;l++)g[(p=e.attributes[l]).name]=p.value;for(l in g)if(p=g[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=p;else if(!(l in y)){if(l=="value"&&"defaultValue"in y||l=="checked"&&"defaultChecked"in y)continue;le(e,l,null,p,r)}}for(l in y)p=y[l],l=="children"?_=p:l=="dangerouslySetInnerHTML"?u=p:l=="value"?$=p:l=="checked"?C=p:c&&typeof p!="function"||g[l]===p||le(e,l,p,g[l],r);if(u)c||a&&(u.__html==a.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(a&&(e.innerHTML=""),Xe(t.type=="template"?e.content:e,_e(_)?_:[_],t,n,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,i,s?s[0]:n.__k&&te(n,0),c,d),s!=null)for(l=s.length;l--;)Ee(s[l]);c||(l="value",w=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[l]||w=="progress"&&!$||w=="option"&&$!=g[l])&&le(e,l,$,g[l],r),l="checked",C!=null&&C!=e[l]&&le(e,l,C,g[l],r))}return e}function Re(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){D.__e(r,n)}}function et(e,t,n){var o,r;if(D.unmount&&D.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Re(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){D.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&et(o[r],t,n||typeof e.type!="function");n||Ee(e.__e),e.__c=e.__=e.__e=void 0}function zt(e,t,n){return this.constructor(e,n)}function he(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),D.__&&D.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],Ie(t,e=(!o&&n||t).__k=pe(fe,null,[e]),r||oe,oe,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?de.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,i),Ze(s,e,i)}de=qe.slice,D={__e:function(e,t,n,o){for(var r,s,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},ze=0,Ft=function(e){return e!=null&&e.constructor===void 0},ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Q({},this.state),typeof e=="function"&&(e=e(Q({},n),this.props)),e&&Q(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Le(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Le(this))},ne.prototype.render=fe,Y=[],je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Je=function(e,t){return e.__v.__b-t.__v.__b},ue.__r=0,Ve=/(PointerCapture)$|Capture$/i,xe=0,Se=Be(!1),Me=Be(!0),Wt=0;var nt=function(e,t,n,o){var r;t[0]=0;for(var s=1;s<t.length;s++){var i=t[s++],c=t[s]?(t[0]|=i?1:2,n[t[s++]]):t[++s];i===3?o[0]=c:i===4?o[1]=Object.assign(o[1]||{},c):i===5?(o[1]=o[1]||{})[t[++s]]=c:i===6?o[1][t[++s]]+=c+"":i?(r=e.apply(c,nt(e,c,n,["",null])),o.push(r),c[0]?t[0]|=2:(t[s-2]=0,t[s]=r)):o.push(c)}return o},tt=new Map;function ot(e){var t=tt.get(this);return t||(t=new Map,tt.set(this,t)),(t=nt(this,t.get(e)||(t.set(e,t=function(n){for(var o,r,s=1,i="",c="",d=[0],l=function(_){s===1&&(_||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,_,i):s===3&&(_||i)?(d.push(3,_,i),s=2):s===2&&i==="..."&&_?d.push(4,_,0):s===2&&i&&!_?d.push(5,0,!0,i):s>=5&&((i||!_&&s===5)&&(d.push(s,0,i,r),s=6),_&&(d.push(s,_,0,r),s=6)),i=""},u=0;u<n.length;u++){u&&(s===1&&l(),l(u));for(var a=0;a<n[u].length;a++)o=n[u][a],s===1?o==="<"?(l(),d=[d],s=3):i+=o:s===4?i==="--"&&o===">"?(s=1,i=""):i=o+i[0]:c?o===c?c="":i+=o:o==='"'||o==="'"?c=o:o===">"?(l(),s=1):s&&(o==="="?(s=5,r=i,i=""):o==="/"&&(s<5||n[u][a+1]===">")?(l(),s===3&&(d=d[0]),s=d,(d=d[0]).push(2,0,s),s=0):o===" "||o===" "||o===`
2
- `||o==="\r"?(l(),s=2):i+=o),s===3&&i==="!--"&&(s=4,d=d[0])}return l(),d}(e)),t),arguments,[])).length>1?t:t[0]}var m=ot.bind(pe);var se,W,Ae,st,re=0,_t=[],U=D,rt=U.__b,at=U.__r,it=U.diffed,lt=U.__c,ct=U.unmount,ut=U.__;function Pe(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 M(e){return re=1,jt(ft,e)}function jt(e,t,n){var o=Pe(se++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):ft(void 0,t),function(c){var d=o.__N?o.__N[0]:o.__[0],l=o.t(d,c);d!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=W,!W.__f)){var r=function(c,d,l){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(_){return!!_.__c});if(u.every(function(_){return!_.__N}))return!s||s.call(this,c,d,l);var a=o.__c.props!==c;return u.forEach(function(_){if(_.__N){var p=_.__[0];_.__=_.__N,_.__N=void 0,p!==_.__[0]&&(a=!0)}}),s&&s.call(this,c,d,l)||a};W.__f=!0;var s=W.shouldComponentUpdate,i=W.componentWillUpdate;W.componentWillUpdate=function(c,d,l){if(this.__e){var u=s;s=void 0,r(c,d,l),s=u}i&&i.call(this,c,d,l)},W.shouldComponentUpdate=r}return o.__N||o.__}function L(e,t){var n=Pe(se++,3);!U.__s&&pt(n.__H,t)&&(n.__=e,n.u=t,W.__H.__h.push(n))}function G(e){return re=5,ae(function(){return{current:e}},[])}function ae(e,t){var n=Pe(se++,7);return pt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function z(e,t){return re=8,ae(function(){return e},t)}function Jt(){for(var e;e=_t.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(me),e.__H.__h.forEach(De),e.__H.__h=[]}catch(t){e.__H.__h=[],U.__e(t,e.__v)}}U.__b=function(e){W=null,rt&&rt(e)},U.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ut&&ut(e,t)},U.__r=function(e){at&&at(e),se=0;var t=(W=e.__c).__H;t&&(Ae===W?(t.__h=[],W.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(me),t.__h.forEach(De),t.__h=[],se=0)),Ae=W},U.diffed=function(e){it&&it(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_t.push(t)!==1&&st===U.requestAnimationFrame||((st=U.requestAnimationFrame)||Vt)(Jt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Ae=W=null},U.__c=function(e,t){t.some(function(n){try{n.__h.forEach(me),n.__h=n.__h.filter(function(o){return!o.__||De(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],U.__e(o,n.__v)}}),lt&&lt(e,t)},U.unmount=function(e){ct&&ct(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{me(o)}catch(r){t=r}}),n.__H=void 0,t&&U.__e(t,n.__v))};var dt=typeof requestAnimationFrame=="function";function Vt(e){var t,n=function(){clearTimeout(o),dt&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);dt&&(t=requestAnimationFrame(n))}function me(e){var t=W,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),W=t}function De(e){var t=W;e.__c=e.__(),W=t}function pt(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function ft(e,t){return typeof t=="function"?t(e):t}function qt(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function He(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function ge(e){return Array.isArray(e)?e.map(ge):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[qt(t),ge(n)])):e}function ye(e){return Array.isArray(e)?e.map(ye):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[He(t),ye(n)])):e}function ve(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function B(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function ht(e){if(!e)return"";try{let t=new Date(e),o=new Date-t,r=Math.floor(o/6e4),s=Math.floor(o/36e5),i=Math.floor(o/864e5);return r<1?"Just now":r<60?`${r}m ago`:s<24?`${s}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function mt(e,t=null){if(t)return t(e);let n=B(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 gt(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,o){try{let r=t(n);o===null?localStorage.removeItem(r):localStorage.setItem(r,o)}catch{}}}}function yt(e="csrftoken"){let t=document.cookie.split(";");for(let o of t){let[r,s]=o.trim().split("=");if(r===e)return decodeURIComponent(s)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function we(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,o)).toFixed(1))+" "+n[o]}function $e(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 vt({config:e,debugMode:t,isExpanded:n,isSpeaking:o,messagesCount:r,isLoading:s,currentAgent:i,onClose:c,onToggleExpand:d,onToggleDebug:l,onToggleTTS:u,onClear:a,onToggleSidebar:_}){let{title:p,primaryColor:$,embedded:C,showConversationSidebar:g,showClearButton:y,showDebugButton:w,enableDebugMode:I,showTTSButton:N,showExpandButton:V,enableTTS:O,elevenLabsApiKey:j,ttsProxyUrl:J}=e,K=j||J;return m`
1
+ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var Pt=Object.getOwnPropertyNames;var Ht=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var n in t)Ce(e,n,{get:t[n],enumerable:!0})},Ot=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Pt(t))!Ht.call(e,r)&&r!==n&&Ce(e,r,{get:()=>t[r],enumerable:!(o=Dt(t,r))||o.enumerable});return e};var Ft=e=>Ot(Ce({},"__esModule",{value:!0}),e);var _n={};Nt(_n,{ChatWidget:()=>ke,default:()=>dn});var de,P,ze,Ut,Y,We,je,Je,Ve,xe,Se,Me,Wt,oe={},qe=[],Lt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_e=Array.isArray;function Q(e,t){for(var n in t)e[n]=t[n];return e}function Ee(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function pe(e,t,n){var o,r,s,i={};for(s in t)s=="key"?o=t[s]:s=="ref"?r=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?de.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)i[s]===void 0&&(i[s]=e.defaultProps[s]);return ce(e,i,o,r,null)}function ce(e,t,n,o,r){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++ze,__i:-1,__u:0};return r==null&&P.vnode!=null&&P.vnode(s),s}function fe(e){return e.children}function ne(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 Ge(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 Ge(e)}}function Le(e){(!e.__d&&(e.__d=!0)&&Y.push(e)&&!ue.__r++||We!=P.debounceRendering)&&((We=P.debounceRendering)||je)(ue)}function ue(){for(var e,t,n,o,r,s,i,c=1;Y.length;)Y.length>c&&Y.sort(Je),e=Y.shift(),c=Y.length,e.__d&&(n=void 0,o=void 0,r=(o=(t=e).__v).__e,s=[],i=[],t.__P&&((n=Q({},o)).__v=o.__v+1,P.vnode&&P.vnode(n),Ie(t.__P,n,o,t.__n,t.__P.namespaceURI,32&o.__u?[r]:null,s,r??te(o),!!(32&o.__u),i),n.__v=o.__v,n.__.__k[n.__i]=n,Ze(s,n,i),o.__e=o.__=null,n.__e!=r&&Ge(n)));ue.__r=0}function Xe(e,t,n,o,r,s,i,c,d,l,u){var a,p,f,$,k,g,y,w=o&&o.__k||qe,A=t.length;for(d=Kt(n,t,w,d,A),a=0;a<A;a++)(f=n.__k[a])!=null&&(p=f.__i==-1?oe:w[f.__i]||oe,f.__i=a,g=Ie(e,f,p,r,s,i,c,d,l,u),$=f.__e,f.ref&&p.ref!=f.ref&&(p.ref&&Ae(p.ref,null,f),u.push(f.ref,f.__c||$,f)),k==null&&$!=null&&(k=$),(y=!!(4&f.__u))||p.__k===f.__k?d=Qe(f,d,e,y):typeof f.type=="function"&&g!==void 0?d=g:$&&(d=$.nextSibling),f.__u&=-7);return n.__e=k,d}function Kt(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,p=0;for(e.__k=new Array(r),s=0;s<r;s++)(i=t[s])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[s]=ce(null,i,null,null,null):_e(i)?i=e.__k[s]=ce(fe,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[s]=ce(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,d=s+p,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Bt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?p--:r<u&&p++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?p--:l==d+1?p++:(l>d?p--:p++,i.__u|=4))):e.__k[s]=null;if(a)for(s=0;s<u;s++)(c=n[s])!=null&&!(2&c.__u)&&(c.__e==o&&(o=te(c)),et(c,c));return o}function Qe(e,t,n,o){var r,s;if(typeof e.type=="function"){for(r=e.__k,s=0;r&&s<r.length;s++)r[s]&&(r[s].__=e,t=Qe(r[s],t,n,o));return t}e.__e!=t&&(o&&(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 Bt(e,t,n,o){var r,s,i,c=e.key,d=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&c==null||u&&c==l.key&&d==l.type)return n;if(o>(u?1:0)){for(r=n-1,s=n+1;r>=0||s<t.length;)if((l=t[i=r>=0?r--:s++])!=null&&!(2&l.__u)&&c==l.key&&d==l.type)return i}return-1}function Ke(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Lt.test(t)?n:n+"px"}function le(e,t,n,o,r){var s,i;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||Ke(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Ke(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(Ve,"$1")),i=t.toLowerCase(),t=i in e||t=="onFocusOut"||t=="onFocusIn"?i.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?o?n.u=o.u:(n.u=xe,e.addEventListener(t,s?Me:Se,s)):e.removeEventListener(t,s?Me:Se,s);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Be(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=xe++;else if(t.t<n.u)return;return n(P.event?P.event(t):t)}}}function Ie(e,t,n,o,r,s,i,c,d,l){var u,a,p,f,$,k,g,y,w,A,O,V,F,j,J,K,b,N=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=P.__b)&&u(t);e:if(typeof N=="function")try{if(y=t.props,w="prototype"in N&&N.prototype.render,A=(u=N.contextType)&&o[u.__c],O=u?A?A.props.value:u.__:o,n.__c?g=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new N(y,O):(t.__c=a=new ne(y,O),a.constructor=N,a.render=jt),A&&A.sub(a),a.state||(a.state={}),a.__n=o,p=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&N.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=Q({},a.__s)),Q(a.__s,N.getDerivedStateFromProps(y,a.__s))),f=a.props,$=a.state,a.__v=t,p)w&&N.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&N.getDerivedStateFromProps==null&&y!==f&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(y,O),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(y,a.__s,O)===!1){for(t.__v!=n.__v&&(a.props=y,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(v){v&&(v.__=t)}),V=0;V<a._sb.length;V++)a.__h.push(a._sb[V]);a._sb=[],a.__h.length&&i.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(y,a.__s,O),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(f,$,k)})}if(a.context=O,a.props=y,a.__P=e,a.__e=!1,F=P.__r,j=0,w){for(a.state=a.__s,a.__d=!1,F&&F(t),u=a.render(a.props,a.state,a.context),J=0;J<a._sb.length;J++)a.__h.push(a._sb[J]);a._sb=[]}else do a.__d=!1,F&&F(t),u=a.render(a.props,a.state,a.context),a.state=a.__s;while(a.__d&&++j<25);a.state=a.__s,a.getChildContext!=null&&(o=Q(Q({},o),a.getChildContext())),w&&!p&&a.getSnapshotBeforeUpdate!=null&&(k=a.getSnapshotBeforeUpdate(f,$)),K=u,u!=null&&u.type===fe&&u.key==null&&(K=Ye(u.props.children)),c=Xe(e,_e(K)?K:[K],t,n,o,r,s,i,c,d,l),a.base=t.__e,t.__u&=-161,a.__h.length&&i.push(a),g&&(a.__E=a.__=null)}catch(v){if(t.__v=null,d||s!=null)if(v.then){for(t.__u|=d?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;s[s.indexOf(c)]=null,t.__e=c}else{for(b=s.length;b--;)Ee(s[b]);Te(t)}else t.__e=n.__e,t.__k=n.__k,v.then||Te(t);P.__e(v,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=zt(n.__e,t,n,o,r,s,i,d,l);return(u=P.diffed)&&u(t),128&t.__u?void 0:c}function Te(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Te)}function Ze(e,t,n){for(var o=0;o<n.length;o++)Ae(n[o],n[++o],n[++o]);P.__c&&P.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){P.__e(s,r.__v)}})}function Ye(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:_e(e)?e.map(Ye):Q({},e)}function zt(e,t,n,o,r,s,i,c,d){var l,u,a,p,f,$,k,g=n.props||oe,y=t.props,w=t.type;if(w=="svg"?r="http://www.w3.org/2000/svg":w=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),s!=null){for(l=0;l<s.length;l++)if((f=s[l])&&"setAttribute"in f==!!w&&(w?f.localName==w:f.nodeType==3)){e=f,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(y);e=document.createElementNS(r,w,y.is&&y),c&&(P.__m&&P.__m(t,s),c=!1),s=null}if(w==null)g===y||c&&e.data==y||(e.data=y);else{if(s=s&&de.call(e.childNodes),!c&&s!=null)for(g={},l=0;l<e.attributes.length;l++)g[(f=e.attributes[l]).name]=f.value;for(l in g)if(f=g[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=f;else if(!(l in y)){if(l=="value"&&"defaultValue"in y||l=="checked"&&"defaultChecked"in y)continue;le(e,l,null,f,r)}}for(l in y)f=y[l],l=="children"?p=f:l=="dangerouslySetInnerHTML"?u=f:l=="value"?$=f:l=="checked"?k=f:c&&typeof f!="function"||g[l]===f||le(e,l,f,g[l],r);if(u)c||a&&(u.__html==a.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(a&&(e.innerHTML=""),Xe(t.type=="template"?e.content:e,_e(p)?p:[p],t,n,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,i,s?s[0]:n.__k&&te(n,0),c,d),s!=null)for(l=s.length;l--;)Ee(s[l]);c||(l="value",w=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[l]||w=="progress"&&!$||w=="option"&&$!=g[l])&&le(e,l,$,g[l],r),l="checked",k!=null&&k!=e[l]&&le(e,l,k,g[l],r))}return e}function Ae(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){P.__e(r,n)}}function et(e,t,n){var o,r;if(P.unmount&&P.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Ae(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){P.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&et(o[r],t,n||typeof e.type!="function");n||Ee(e.__e),e.__c=e.__=e.__e=void 0}function jt(e,t,n){return this.constructor(e,n)}function he(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),P.__&&P.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],Ie(t,e=(!o&&n||t).__k=pe(fe,null,[e]),r||oe,oe,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?de.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,i),Ze(s,e,i)}de=qe.slice,P={__e:function(e,t,n,o){for(var r,s,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},ze=0,Ut=function(e){return e!=null&&e.constructor===void 0},ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Q({},this.state),typeof e=="function"&&(e=e(Q({},n),this.props)),e&&Q(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Le(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Le(this))},ne.prototype.render=fe,Y=[],je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Je=function(e,t){return e.__v.__b-t.__v.__b},ue.__r=0,Ve=/(PointerCapture)$|Capture$/i,xe=0,Se=Be(!1),Me=Be(!0),Wt=0;var nt=function(e,t,n,o){var r;t[0]=0;for(var s=1;s<t.length;s++){var i=t[s++],c=t[s]?(t[0]|=i?1:2,n[t[s++]]):t[++s];i===3?o[0]=c:i===4?o[1]=Object.assign(o[1]||{},c):i===5?(o[1]=o[1]||{})[t[++s]]=c:i===6?o[1][t[++s]]+=c+"":i?(r=e.apply(c,nt(e,c,n,["",null])),o.push(r),c[0]?t[0]|=2:(t[s-2]=0,t[s]=r)):o.push(c)}return o},tt=new Map;function ot(e){var t=tt.get(this);return t||(t=new Map,tt.set(this,t)),(t=nt(this,t.get(e)||(t.set(e,t=function(n){for(var o,r,s=1,i="",c="",d=[0],l=function(p){s===1&&(p||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,p,i):s===3&&(p||i)?(d.push(3,p,i),s=2):s===2&&i==="..."&&p?d.push(4,p,0):s===2&&i&&!p?d.push(5,0,!0,i):s>=5&&((i||!p&&s===5)&&(d.push(s,0,i,r),s=6),p&&(d.push(s,p,0,r),s=6)),i=""},u=0;u<n.length;u++){u&&(s===1&&l(),l(u));for(var a=0;a<n[u].length;a++)o=n[u][a],s===1?o==="<"?(l(),d=[d],s=3):i+=o:s===4?i==="--"&&o===">"?(s=1,i=""):i=o+i[0]:c?o===c?c="":i+=o:o==='"'||o==="'"?c=o:o===">"?(l(),s=1):s&&(o==="="?(s=5,r=i,i=""):o==="/"&&(s<5||n[u][a+1]===">")?(l(),s===3&&(d=d[0]),s=d,(d=d[0]).push(2,0,s),s=0):o===" "||o===" "||o===`
2
+ `||o==="\r"?(l(),s=2):i+=o),s===3&&i==="!--"&&(s=4,d=d[0])}return l(),d}(e)),t),arguments,[])).length>1?t:t[0]}var m=ot.bind(pe);var se,U,Re,st,re=0,_t=[],W=P,rt=W.__b,at=W.__r,it=W.diffed,lt=W.__c,ct=W.unmount,ut=W.__;function Pe(e,t){W.__h&&W.__h(U,e,re||t),re=0;var n=U.__H||(U.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function M(e){return re=1,Jt(ft,e)}function Jt(e,t,n){var o=Pe(se++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):ft(void 0,t),function(c){var d=o.__N?o.__N[0]:o.__[0],l=o.t(d,c);d!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=U,!U.__f)){var r=function(c,d,l){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(p){return!!p.__c});if(u.every(function(p){return!p.__N}))return!s||s.call(this,c,d,l);var a=o.__c.props!==c;return u.forEach(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(a=!0)}}),s&&s.call(this,c,d,l)||a};U.__f=!0;var s=U.shouldComponentUpdate,i=U.componentWillUpdate;U.componentWillUpdate=function(c,d,l){if(this.__e){var u=s;s=void 0,r(c,d,l),s=u}i&&i.call(this,c,d,l)},U.shouldComponentUpdate=r}return o.__N||o.__}function L(e,t){var n=Pe(se++,3);!W.__s&&pt(n.__H,t)&&(n.__=e,n.u=t,U.__H.__h.push(n))}function G(e){return re=5,ae(function(){return{current:e}},[])}function ae(e,t){var n=Pe(se++,7);return pt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function z(e,t){return re=8,ae(function(){return e},t)}function Vt(){for(var e;e=_t.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(me),e.__H.__h.forEach(De),e.__H.__h=[]}catch(t){e.__H.__h=[],W.__e(t,e.__v)}}W.__b=function(e){U=null,rt&&rt(e)},W.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ut&&ut(e,t)},W.__r=function(e){at&&at(e),se=0;var t=(U=e.__c).__H;t&&(Re===U?(t.__h=[],U.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(me),t.__h.forEach(De),t.__h=[],se=0)),Re=U},W.diffed=function(e){it&&it(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_t.push(t)!==1&&st===W.requestAnimationFrame||((st=W.requestAnimationFrame)||qt)(Vt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Re=U=null},W.__c=function(e,t){t.some(function(n){try{n.__h.forEach(me),n.__h=n.__h.filter(function(o){return!o.__||De(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],W.__e(o,n.__v)}}),lt&&lt(e,t)},W.unmount=function(e){ct&&ct(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{me(o)}catch(r){t=r}}),n.__H=void 0,t&&W.__e(t,n.__v))};var dt=typeof requestAnimationFrame=="function";function qt(e){var t,n=function(){clearTimeout(o),dt&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);dt&&(t=requestAnimationFrame(n))}function me(e){var t=U,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),U=t}function De(e){var t=U;e.__c=e.__(),U=t}function pt(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function ft(e,t){return typeof t=="function"?t(e):t}function Gt(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function He(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function ge(e){return Array.isArray(e)?e.map(ge):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Gt(t),ge(n)])):e}function ye(e){return Array.isArray(e)?e.map(ye):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[He(t),ye(n)])):e}function ve(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function B(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function ht(e){if(!e)return"";try{let t=new Date(e),o=new Date-t,r=Math.floor(o/6e4),s=Math.floor(o/36e5),i=Math.floor(o/864e5);return r<1?"Just now":r<60?`${r}m ago`:s<24?`${s}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function mt(e,t=null){if(t)return t(e);let n=B(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 gt(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,o){try{let r=t(n);o===null?localStorage.removeItem(r):localStorage.setItem(r,o)}catch{}}}}function yt(e="csrftoken"){let t=document.cookie.split(";");for(let o of t){let[r,s]=o.trim().split("=");if(r===e)return decodeURIComponent(s)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function we(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,o)).toFixed(1))+" "+n[o]}function $e(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 vt({config:e,debugMode:t,isExpanded:n,isSpeaking:o,messagesCount:r,isLoading:s,currentAgent:i,onClose:c,onToggleExpand:d,onToggleDebug:l,onToggleTTS:u,onClear:a,onToggleSidebar:p}){let{title:f,primaryColor:$,embedded:k,showConversationSidebar:g,showClearButton:y,showDebugButton:w,enableDebugMode:A,showTTSButton:O,showExpandButton:V,enableTTS:F,elevenLabsApiKey:j,ttsProxyUrl:J}=e,K=j||J;return m`
3
3
  <div class="cw-header" style=${{backgroundColor:$}}>
4
4
  ${g&&m`
5
5
  <button
6
6
  class="cw-header-btn cw-hamburger"
7
- onClick=${_}
7
+ onClick=${p}
8
8
  title="Conversations"
9
9
  >
10
10
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16">
@@ -16,7 +16,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
16
16
  `}
17
17
 
18
18
  <div class="cw-title-container">
19
- <span class="cw-title">${B(p)}</span>
19
+ <span class="cw-title">${B(f)}</span>
20
20
  ${i&&m`
21
21
  <span class="cw-current-agent" title="Currently active agent">
22
22
  <span class="cw-agent-indicator">🤖</span>
@@ -35,7 +35,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
35
35
  >🗑️</button>
36
36
  `}
37
37
 
38
- ${w&&I&&m`
38
+ ${w&&A&&m`
39
39
  <button
40
40
  class="cw-header-btn ${t?"cw-btn-active":""}"
41
41
  onClick=${l}
@@ -43,15 +43,15 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
43
43
  >🐛</button>
44
44
  `}
45
45
 
46
- ${N&&K&&m`
46
+ ${O&&K&&m`
47
47
  <button
48
- class="cw-header-btn ${O?"cw-btn-active":""}"
48
+ class="cw-header-btn ${F?"cw-btn-active":""}"
49
49
  onClick=${u}
50
50
  title="TTS"
51
- >${O?"\u{1F50A}":"\u{1F507}"}</button>
51
+ >${F?"\u{1F50A}":"\u{1F507}"}</button>
52
52
  `}
53
53
 
54
- ${V&&!C&&m`
54
+ ${V&&!k&&m`
55
55
  <button
56
56
  class="cw-header-btn"
57
57
  onClick=${d}
@@ -59,7 +59,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
59
59
  >${n?"\u2296":"\u2295"}</button>
60
60
  `}
61
61
 
62
- ${!C&&m`
62
+ ${!k&&m`
63
63
  <button
64
64
  class="cw-header-btn"
65
65
  onClick=${c}
@@ -79,26 +79,29 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
79
79
  onClick=${n}
80
80
  title="Show message payload"
81
81
  >{ }</button>
82
- `}function Gt({onEdit:e,onRetry:t,isLoading:n}){return n?null:m`
83
- <div class="cw-message-actions">
84
- <button
85
- class="cw-message-action-btn"
86
- onClick=${e}
87
- title="Edit message"
88
- >
89
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
90
- <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
91
- <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
92
- </svg>
93
- </button>
82
+ `}function wt({onEdit:e,onRetry:t,isLoading:n,position:o,showEdit:r=!0}){return n?null:m`
83
+ <div class="cw-message-actions cw-message-actions-${o||"left"}">
84
+ ${r&&m`
85
+ <button
86
+ class="cw-message-action-btn"
87
+ onClick=${e}
88
+ title="Edit message"
89
+ >
90
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
91
+ <path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>
92
+ </svg>
93
+ </button>
94
+ `}
94
95
  <button
95
96
  class="cw-message-action-btn"
96
97
  onClick=${t}
97
98
  title="Retry from here"
98
99
  >
99
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
100
- <polyline points="1 4 1 10 7 10"></polyline>
101
- <path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path>
100
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
101
+ <path d="M21 2v6h-6"></path>
102
+ <path d="M3 12a9 9 0 0 1 15-6.7L21 8"></path>
103
+ <path d="M3 22v-6h6"></path>
104
+ <path d="M21 12a9 9 0 0 1-15 6.7L3 16"></path>
102
105
  </svg>
103
106
  </button>
104
107
  </div>
@@ -126,66 +129,78 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
126
129
  >Save & Send</button>
127
130
  </div>
128
131
  </div>
129
- `}function wt({msg:e,debugMode:t,markdownParser:n,onEdit:o,onRetry:r,isLoading:s,messageIndex:i}){let[c,d]=M(!1),[l,u]=M(!1),[a,_]=M(!1),p=e.role==="user",$=e.role==="system",C=e.type==="tool_call",g=e.type==="tool_result",y=e.type==="error",w=e.type==="sub_agent_start",I=e.type==="sub_agent_end",N=e.type==="agent_context";if($&&!t)return null;if(w||I||N)return m`
130
- <div class="cw-agent-context ${w?"cw-agent-delegating":""} ${I?"cw-agent-returned":""}" style="position: relative;">
131
- <span class="cw-agent-context-icon">${w?"\u{1F517}":I?"\u2713":"\u{1F916}"}</span>
132
+ `}function $t({msg:e,debugMode:t,markdownParser:n,onEdit:o,onRetry:r,isLoading:s,messageIndex:i}){let[c,d]=M(!1),[l,u]=M(!1),[a,p]=M(!1),f=e.role==="user",$=e.role==="system",k=e.type==="tool_call",g=e.type==="tool_result",y=e.type==="error",w=e.type==="sub_agent_start",A=e.type==="sub_agent_end",O=e.type==="agent_context";if($&&!t)return null;if(w||A||O)return m`
133
+ <div class="cw-agent-context ${w?"cw-agent-delegating":""} ${A?"cw-agent-returned":""}" style="position: relative;">
134
+ <span class="cw-agent-context-icon">${w?"\u{1F517}":A?"\u2713":"\u{1F916}"}</span>
132
135
  <span class="cw-agent-context-text">${e.content}</span>
133
136
  ${e.metadata?.agentName&&m`
134
137
  <span class="cw-agent-context-name">${e.metadata.agentName}</span>
135
138
  `}
136
139
  ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
137
140
  </div>
138
- `;if(C||g){let b=e.metadata?.arguments||e.metadata?.result,P=T=>{if(typeof T=="string")try{return JSON.stringify(JSON.parse(T),null,2)}catch{return T}return JSON.stringify(T,null,2)};return m`
141
+ `;if(k||g){let C=e.metadata?.arguments||e.metadata?.result,x=_=>{if(typeof _=="string")try{return JSON.stringify(JSON.parse(_),null,2)}catch{return _}return JSON.stringify(_,null,2)};return m`
139
142
  <div class="cw-tool-message ${g?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
140
- <span class="cw-tool-label" onClick=${()=>b&&d(!c)}>
143
+ <span class="cw-tool-label" onClick=${()=>C&&d(!c)}>
141
144
  ${e.content}
142
- ${b&&m`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
145
+ ${C&&m`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
143
146
  </span>
144
- ${c&&b&&m`
145
- <pre class="cw-tool-details">${B(P(C?e.metadata.arguments:e.metadata.result))}</pre>
147
+ ${c&&C&&m`
148
+ <pre class="cw-tool-details">${B(x(k?e.metadata.arguments:e.metadata.result))}</pre>
146
149
  `}
147
150
  ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
148
151
  </div>
149
- `}let V=["cw-message",p&&"cw-message-user",y&&"cw-message-error"].filter(Boolean).join(" "),O=`cw-message-row ${p?"cw-message-row-user":""}`,j=e.role==="assistant"?mt(e.content,n):B(e.content),J=e.files&&e.files.length>0,K=()=>J?m`
152
+ `}let V=["cw-message",f&&"cw-message-user",y&&"cw-message-error"].filter(Boolean).join(" "),F=`cw-message-row ${f?"cw-message-row-user":""}`,j=e.role==="assistant"?mt(e.content,n):B(e.content),J=e.files&&e.files.length>0,K=()=>J?m`
150
153
  <div class="cw-message-attachments">
151
- ${e.files.map(b=>b.type&&b.type.startsWith("image/")?m`
152
- <a class="cw-attachment-thumbnail" href=${b.url} target="_blank" title=${b.name}>
153
- <img src=${b.url} alt=${b.name} />
154
+ ${e.files.map(C=>C.type&&C.type.startsWith("image/")?m`
155
+ <a class="cw-attachment-thumbnail" href=${C.url} target="_blank" title=${C.name}>
156
+ <img src=${C.url} alt=${C.name} />
154
157
  </a>
155
158
  `:m`
156
- <a class="cw-attachment-file" href=${b.url} target="_blank" title=${b.name}>
157
- <span class="cw-attachment-icon">${$e(b.type)}</span>
159
+ <a class="cw-attachment-file" href=${C.url} target="_blank" title=${C.name}>
160
+ <span class="cw-attachment-icon">${$e(C.type)}</span>
158
161
  <span class="cw-attachment-info">
159
- <span class="cw-attachment-name">${b.name}</span>
160
- <span class="cw-attachment-size">${we(b.size)}</span>
162
+ <span class="cw-attachment-name">${C.name}</span>
163
+ <span class="cw-attachment-size">${we(C.size)}</span>
161
164
  </span>
162
165
  </a>
163
166
  `)}
164
167
  </div>
165
- `:null,k=b=>{_(!1),o&&b!==e.content&&o(i,b)},H=()=>{r&&r(i)};if(p&&a)return m`
166
- <div class=${O} style="position: relative;">
168
+ `:null,b=C=>{p(!1),o&&o(i,C)},N=()=>{r&&r(i)};if(f&&a)return m`
169
+ <div class=${F} style="position: relative;">
167
170
  ${K()}
168
171
  <${Xt}
169
172
  initialContent=${e.content}
170
- onSave=${k}
171
- onCancel=${()=>_(!1)}
173
+ onSave=${b}
174
+ onCancel=${()=>p(!1)}
172
175
  />
173
176
  </div>
174
- `;let v=p&&o&&r;return m`
175
- <div class="${O} ${v?"cw-message-row-with-actions":""}" style="position: relative;">
177
+ `;let v=f&&o&&r,H=e.role==="assistant"&&r&&!s;return m`
178
+ <div class="${F} ${v||H?"cw-message-row-with-actions":""}">
176
179
  ${K()}
177
- <div class=${V} dangerouslySetInnerHTML=${{__html:j}} />
178
- ${v&&m`
179
- <${Gt}
180
- onEdit=${()=>_(!0)}
181
- onRetry=${H}
182
- isLoading=${s}
183
- />
184
- `}
180
+ <div class="cw-message-wrapper">
181
+ <div class=${V} dangerouslySetInnerHTML=${{__html:j}} />
182
+ ${v&&m`
183
+ <${wt}
184
+ onEdit=${()=>p(!0)}
185
+ onRetry=${N}
186
+ isLoading=${s}
187
+ position="left"
188
+ showEdit=${!0}
189
+ />
190
+ `}
191
+ ${H&&m`
192
+ <${wt}
193
+ onRetry=${N}
194
+ isLoading=${s}
195
+ position="right"
196
+ showEdit=${!1}
197
+ />
198
+ `}
199
+ </div>
185
200
  ${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
186
201
  </div>
187
- `}function $t({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:o,onLoadMore:r,onEditMessage:s,onRetryMessage:i,debugMode:c,markdownParser:d,emptyStateTitle:l,emptyStateMessage:u}){let a=G(null),_=G(!0),p=C=>{let g=C.target,y=g.scrollHeight-g.scrollTop-g.clientHeight<100;if(_.current=y,g.scrollTop<50&&n&&!o){let w=g.scrollHeight;r().then(()=>{let I=g.scrollHeight;g.scrollTop=I-w+g.scrollTop})}};L(()=>{let C=a.current;C&&_.current&&requestAnimationFrame(()=>{C.scrollTop=C.scrollHeight})},[e,t]),L(()=>{let C=a.current;C&&e.length<=2&&(_.current=!0,requestAnimationFrame(()=>{C.scrollTop=C.scrollHeight}))},[e.length]);let $=e.length===0;return m`
188
- <div class="cw-messages" ref=${a} onScroll=${p}>
202
+ `}function bt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:o,onLoadMore:r,onEditMessage:s,onRetryMessage:i,debugMode:c,markdownParser:d,emptyStateTitle:l,emptyStateMessage:u}){let a=G(null),p=G(!0),f=k=>{let g=k.target,y=g.scrollHeight-g.scrollTop-g.clientHeight<100;if(p.current=y,g.scrollTop<50&&n&&!o){let w=g.scrollHeight;r().then(()=>{let A=g.scrollHeight;g.scrollTop=A-w+g.scrollTop})}};L(()=>{let k=a.current;k&&p.current&&requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight})},[e,t]),L(()=>{let k=a.current;k&&e.length<=2&&(p.current=!0,requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight}))},[e.length]);let $=e.length===0;return m`
203
+ <div class="cw-messages" ref=${a} onScroll=${f}>
189
204
  ${$&&m`
190
205
  <div class="cw-empty-state">
191
206
  <svg class="cw-empty-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -202,10 +217,10 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
202
217
  </div>
203
218
  `}
204
219
 
205
- ${e.map((C,g)=>m`
206
- <${wt}
207
- key=${C.id}
208
- msg=${C}
220
+ ${e.map((k,g)=>m`
221
+ <${$t}
222
+ key=${k.id}
223
+ msg=${k}
209
224
  messageIndex=${g}
210
225
  debugMode=${c}
211
226
  markdownParser=${d}
@@ -224,23 +239,23 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
224
239
  </div>
225
240
  `}
226
241
  </div>
227
- `}var Oe=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function bt({onSend:e,onCancel:t,isLoading:n,placeholder:o,primaryColor:r,enableVoice:s=!0,enableFiles:i=!0}){let[c,d]=M(""),[l,u]=M([]),[a,_]=M(!1),[p,$]=M(!1),[C]=M(()=>!!Oe),g=G(null),y=G(null),w=G(null),I=G(!1);L(()=>{!n&&g.current&&g.current.focus()},[n]),L(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=Math.min(g.current.scrollHeight,150)+"px")},[c]),L(()=>()=>{I.current=!1,w.current&&w.current.abort()},[]);let N=f=>{f.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),d(""),u([]),g.current&&(g.current.style.height="auto"),y.current&&(y.current.value=""))},V=f=>{let x=Array.from(f.target.files||[]);x.length>0&&u(S=>[...S,...x])},O=f=>{u(x=>x.filter((S,h)=>h!==f))},j=f=>{f.preventDefault(),y.current&&!n&&y.current.click()},J=f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),N(f))},K=f=>{n&&t&&(f.preventDefault(),t())},k=()=>{if(!Oe||n)return;I.current=!0;let f=new Oe;f.continuous=!0,f.interimResults=!0,f.lang=navigator.language||"en-US";let x=c,S="";f.onstart=()=>{$(!0)},f.onresult=h=>{S="";for(let R=h.resultIndex;R<h.results.length;R++){let q=h.results[R][0].transcript;h.results[R].isFinal?x+=(x?" ":"")+q:S+=q}d(x+(S?" "+S:""))},f.onerror=h=>{if(h.error==="no-speech"||h.error==="aborted"){console.log("[ChatWidget] Speech recognition:",h.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",h.error),I.current=!1,$(!1),d(x||c)},f.onend=()=>{if(I.current){console.log("[ChatWidget] Recognition paused, restarting...");try{f.start();return}catch(h){console.warn("[ChatWidget] Could not restart recognition:",h)}}$(!1),x&&d(x),w.current=null},w.current=f,f.start()},H=()=>{I.current=!1,w.current&&w.current.stop()},v=f=>{f.preventDefault(),p?H():k()},b=m`
242
+ `}var Oe=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function kt({onSend:e,onCancel:t,isLoading:n,placeholder:o,primaryColor:r,enableVoice:s=!0,enableFiles:i=!0}){let[c,d]=M(""),[l,u]=M([]),[a,p]=M(!1),[f,$]=M(!1),[k]=M(()=>!!Oe),g=G(null),y=G(null),w=G(null),A=G(!1);L(()=>{!n&&g.current&&g.current.focus()},[n]),L(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=Math.min(g.current.scrollHeight,150)+"px")},[c]),L(()=>()=>{A.current=!1,w.current&&w.current.abort()},[]);let O=_=>{_.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),d(""),u([]),g.current&&(g.current.style.height="auto"),y.current&&(y.current.value=""))},V=_=>{let T=Array.from(_.target.files||[]);T.length>0&&u(S=>[...S,...T])},F=_=>{u(T=>T.filter((S,h)=>h!==_))},j=_=>{_.preventDefault(),y.current&&!n&&y.current.click()},J=_=>{_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),O(_))},K=_=>{n&&t&&(_.preventDefault(),t())},b=()=>{if(!Oe||n)return;A.current=!0;let _=new Oe;_.continuous=!0,_.interimResults=!0,_.lang=navigator.language||"en-US";let T=c,S="";_.onstart=()=>{$(!0)},_.onresult=h=>{S="";for(let R=h.resultIndex;R<h.results.length;R++){let q=h.results[R][0].transcript;h.results[R].isFinal?T+=(T?" ":"")+q:S+=q}d(T+(S?" "+S:""))},_.onerror=h=>{if(h.error==="no-speech"||h.error==="aborted"){console.log("[ChatWidget] Speech recognition:",h.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",h.error),A.current=!1,$(!1),d(T||c)},_.onend=()=>{if(A.current){console.log("[ChatWidget] Recognition paused, restarting...");try{_.start();return}catch(h){console.warn("[ChatWidget] Could not restart recognition:",h)}}$(!1),T&&d(T),w.current=null},w.current=_,_.start()},N=()=>{A.current=!1,w.current&&w.current.stop()},v=_=>{_.preventDefault(),f?N():b()},I=m`
228
243
  <svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
229
244
  <rect x="2" y="2" width="10" height="10" rx="1" />
230
245
  </svg>
231
- `,P=m`
246
+ `,H=m`
232
247
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
233
248
  <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
234
249
  <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
235
250
  <line x1="12" y1="19" x2="12" y2="23"></line>
236
251
  <line x1="8" y1="23" x2="16" y2="23"></line>
237
252
  </svg>
238
- `,T=m`
253
+ `,E=m`
239
254
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
240
255
  <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>
241
256
  </svg>
242
- `,F=s&&C,E=i;return m`
243
- <form class="cw-input-form" onSubmit=${N}>
257
+ `,C=s&&k,x=i;return m`
258
+ <form class="cw-input-form" onSubmit=${O}>
244
259
  <input
245
260
  type="file"
246
261
  ref=${y}
@@ -250,15 +265,15 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
250
265
  />
251
266
  ${l.length>0&&m`
252
267
  <div class="cw-file-chips">
253
- ${l.map((f,x)=>m`
254
- <div class="cw-file-chip" key=${x}>
255
- <span class="cw-file-chip-icon">${$e(f.type)}</span>
256
- <span class="cw-file-chip-name" title=${f.name}>${f.name.length>20?f.name.substring(0,17)+"...":f.name}</span>
257
- <span class="cw-file-chip-size">(${we(f.size)})</span>
268
+ ${l.map((_,T)=>m`
269
+ <div class="cw-file-chip" key=${T}>
270
+ <span class="cw-file-chip-icon">${$e(_.type)}</span>
271
+ <span class="cw-file-chip-name" title=${_.name}>${_.name.length>20?_.name.substring(0,17)+"...":_.name}</span>
272
+ <span class="cw-file-chip-size">(${we(_.size)})</span>
258
273
  <button
259
274
  type="button"
260
275
  class="cw-file-chip-remove"
261
- onClick=${()=>O(x)}
276
+ onClick=${()=>F(T)}
262
277
  title="Remove file"
263
278
  >×</button>
264
279
  </div>
@@ -270,12 +285,12 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
270
285
  class="cw-input"
271
286
  placeholder=${B(o)}
272
287
  value=${c}
273
- onInput=${f=>d(f.target.value)}
288
+ onInput=${_=>d(_.target.value)}
274
289
  onKeyDown=${J}
275
290
  disabled=${n}
276
291
  rows="1"
277
292
  />
278
- ${E&&m`
293
+ ${x&&m`
279
294
  <button
280
295
  type="button"
281
296
  class="cw-attach-btn"
@@ -283,18 +298,18 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
283
298
  disabled=${n}
284
299
  title="Attach files"
285
300
  >
286
- ${T}
301
+ ${E}
287
302
  </button>
288
303
  `}
289
- ${F&&m`
304
+ ${C&&m`
290
305
  <button
291
306
  type="button"
292
- class=${`cw-voice-btn ${p?"cw-voice-btn-recording":""}`}
307
+ class=${`cw-voice-btn ${f?"cw-voice-btn-recording":""}`}
293
308
  onClick=${v}
294
309
  disabled=${n}
295
- title=${p?"Stop recording":"Voice input"}
310
+ title=${f?"Stop recording":"Voice input"}
296
311
  >
297
- ${P}
312
+ ${H}
298
313
  </button>
299
314
  `}
300
315
  <button
@@ -302,14 +317,14 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
302
317
  class=${`cw-send-btn ${n?"cw-send-btn-loading":""} ${n&&a?"cw-send-btn-stop":""}`}
303
318
  style=${{backgroundColor:n&&a?"#dc2626":r}}
304
319
  onClick=${K}
305
- onMouseEnter=${()=>_(!0)}
306
- onMouseLeave=${()=>_(!1)}
320
+ onMouseEnter=${()=>p(!0)}
321
+ onMouseLeave=${()=>p(!1)}
307
322
  title=${n?"Stop":"Send"}
308
323
  >
309
- ${n?a?b:m`<span class="cw-spinner"></span>`:"\u27A4"}
324
+ ${n?a?I:m`<span class="cw-spinner"></span>`:"\u27A4"}
310
325
  </button>
311
326
  </form>
312
- `}function kt({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return m`
327
+ `}function Ct({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return m`
313
328
  <div class="cw-sidebar ${e?"cw-sidebar-open":""}">
314
329
  <div class="cw-sidebar-header">
315
330
  <span>Conversations</span>
@@ -348,7 +363,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
348
363
  class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
349
364
  onClick=${r}
350
365
  />
351
- `}function Ct({availableModels:e,selectedModel:t,onSelectModel:n,disabled:o}){let[r,s]=M(!1);if(!e||e.length===0)return null;let c=e.find(u=>u.id===t)?.name||"Select Model",d=()=>{o||s(!r)},l=u=>{n(u),s(!1)};return m`
366
+ `}function St({availableModels:e,selectedModel:t,onSelectModel:n,disabled:o}){let[r,s]=M(!1);if(!e||e.length===0)return null;let c=e.find(u=>u.id===t)?.name||"Select Model",d=()=>{o||s(!r)},l=u=>{n(u),s(!1)};return m`
352
367
  <div class="cw-model-selector">
353
368
  <button
354
369
  class="cw-model-btn"
@@ -379,7 +394,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
379
394
  </div>
380
395
  `}
381
396
  </div>
382
- `}function St(e,t,n){let[o,r]=M([]),[s,i]=M(!1),[c,d]=M(null),[l,u]=M(()=>n?.get(e.conversationIdKey)||null),[a,_]=M(!1),[p,$]=M(!1),[C,g]=M(0),y=G(null),w=G(null);L(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let I=z(async(v,b,P)=>{y.current&&y.current.close();let T=e.apiPaths.runEvents.replace("{runId}",v),F=`${e.backendUrl}${T}`;b&&(F+=`?anonymous_token=${encodeURIComponent(b)}`);let E=new EventSource(F);y.current=E;let f="";E.addEventListener("assistant.message",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let R=h.payload.content;R&&(f+=R,r(q=>{let X=q[q.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...q.slice(0,-1),{...X,content:f}]:[...q,{id:"assistant-stream-"+Date.now(),role:"assistant",content:f,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),E.addEventListener("tool.call",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.call",h.payload),r(R=>[...R,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${h.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:h.payload.name,arguments:h.payload.arguments,toolCallId:h.payload.id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),E.addEventListener("tool.result",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.result",h.payload);let R=h.payload.result,q=R?.error;r(X=>[...X,{id:"tool-result-"+Date.now(),role:"system",content:q?`\u274C ${R.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:R,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),E.addEventListener("custom",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("custom",h.payload),h.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(h.payload),h.payload?.type==="agent_context"&&r(R=>[...R,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${h.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:h.payload.agent_key,agentName:h.payload.agent_name,action:h.payload.action}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),E.addEventListener("sub_agent.start",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),r(R=>[...R,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${h.payload.agent_name||h.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name,invocationMode:h.payload.invocation_mode}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),E.addEventListener("sub_agent.end",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),r(R=>[...R,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${h.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}});let x=S=>{try{let h=JSON.parse(S.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let R=h.payload.error||"Agent run failed";d(R),r(q=>[...q,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${R}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}i(!1),E.close(),y.current=null,f&&P&&P(f)};E.addEventListener("run.succeeded",x),E.addEventListener("run.failed",x),E.addEventListener("run.cancelled",x),E.addEventListener("run.timed_out",x),E.onerror=()=>{i(!1),E.close(),y.current=null}},[e]),N=z(async(v,b={},P={})=>{if(!v.trim()||s)return;let T=[],F={};typeof b=="function"?F={onAssistantMessage:b}:Array.isArray(b)?(T=b,F=P):F=b||{};let{model:E,onAssistantMessage:f}=F;i(!0),d(null);let x={id:ve(),role:"user",content:v.trim(),timestamp:new Date,type:"message",files:T.length>0?T.map(S=>({name:S.name,size:S.size,type:S.type})):void 0};r(S=>[...S,x]);try{let S=await t.getOrCreateSession(),h;if(T.length>0){let ee=e.apiCaseStyle!=="camel",We=ie=>ee?He(ie):ie,Z=new FormData;Z.append(We("agentKey"),e.agentKey),l&&Z.append(We("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:v.trim()}])),Z.append("metadata",JSON.stringify(ee?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),E&&Z.append("model",E),T.forEach(ie=>{Z.append("files",ie)}),h=t.getFetchOptions({method:"POST",body:Z},S)}else{let ee=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:v.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...E&&{model:E}});h=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},S)}let R=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,h);if(!R.ok){let ee=await R.json().catch(()=>({}));throw new Error(ee.error||`HTTP ${R.status}`)}let q=await R.json(),X=t.transformResponse(q);w.current=X.id,!l&&X.conversationId&&u(X.conversationId),await I(X.id,S,f)}catch(S){d(S.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,I]),V=z(async()=>{let v=w.current;if(!(!v||!s))try{let b=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",v):`${e.apiPaths.runs}${v}/cancel/`;(await fetch(`${e.backendUrl}${b}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(y.current&&(y.current.close(),y.current=null),i(!1),w.current=null,r(T=>[...T,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(b){console.error("[ChatWidget] Failed to cancel run:",b)}},[e,t,s]),O=z(()=>{r([]),u(null),d(null),_(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),j=v=>{let b={id:ve(),role:v.role,timestamp:v.timestamp?new Date(v.timestamp):new Date};if(v.role==="tool")return{...b,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:v.content,toolCallId:v.toolCallId}};if(v.role==="assistant"&&v.toolCalls&&v.toolCalls.length>0)return v.toolCalls.map(T=>({id:ve(),role:"assistant",content:`\u{1F527} ${T.function?.name||T.name||"tool"}`,timestamp:b.timestamp,type:"tool_call",metadata:{toolName:T.function?.name||T.name,arguments:T.function?.arguments||T.arguments,toolCallId:T.id}}));let P=typeof v.content=="string"?v.content:JSON.stringify(v.content);return v.role==="assistant"&&!P?.trim()?null:{...b,content:P,type:"message"}},J=z(async v=>{i(!0),r([]),u(v);try{let b=await t.getOrCreateSession(),T=`${e.backendUrl}${e.apiPaths.conversations}${v}/?limit=10&offset=0`,F=await fetch(T,t.getFetchOptions({method:"GET"},b));if(F.ok){let E=await F.json(),f=t.transformResponse(E);f.messages&&r(f.messages.flatMap(j).filter(Boolean)),_(f.hasMore||!1),g(f.messages?.length||0)}else F.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(b){console.error("[ChatWidget] Failed to load conversation:",b)}finally{i(!1)}},[e,t,n]),K=z(async()=>{if(!(!l||p||!a)){$(!0);try{let v=await t.getOrCreateSession(),P=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${C}`,T=await fetch(P,t.getFetchOptions({method:"GET"},v));if(T.ok){let F=await T.json(),E=t.transformResponse(F);if(E.messages?.length>0){let f=E.messages.flatMap(j).filter(Boolean);r(x=>[...f,...x]),g(x=>x+E.messages.length),_(E.hasMore||!1)}else _(!1)}}catch(v){console.error("[ChatWidget] Failed to load more messages:",v)}finally{$(!1)}}},[e,t,l,C,p,a]),k=z(async(v,b,P={})=>{if(s)return;let T=o[v];if(!T||T.role!=="user")return;let F=o.slice(0,v);r(F),await N(b,P)},[o,s,N]),H=z(async(v,b={})=>{if(s)return;let P=o[v];if(!P||P.role!=="user")return;let T=o.slice(0,v);r(T),await N(P.content,b)},[o,s,N]);return L(()=>()=>{y.current&&y.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:p,sendMessage:N,cancelRun:V,clearMessages:O,loadConversation:J,loadMoreMessages:K,setConversationId:u,editMessage:k,retryMessage:H}}function Mt(e,t,n){let[o,r]=M([]),[s,i]=M(null),[c,d]=M(null),[l,u]=M(!1);L(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let $=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if($.ok){let C=await $.json(),g=C.models||[];r(g),d(C.default);let y=n?.get(e.modelKey);y&&g.some(w=>w.id===y)?i(y):i(C.default)}}catch($){console.warn("[ChatWidget] Failed to load models:",$)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=z(p=>{i(p),n?.set(e.modelKey,p)},[e.modelKey,n]),_=z(()=>o.find(p=>p.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:_}}function Tt(e,t,n){let o=l=>!l||typeof l!="object"||e.apiCaseStyle==="camel"?l:ye(l),r=l=>!l||typeof l!="object"||e.apiCaseStyle==="snake"?l:ge(l),s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(l=null)=>{let u=s(),a={},_=l||e.authToken||t().authToken;if(u==="token"&&_){let p=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";a[p]=$?`${$} ${_}`:_}else if(u==="jwt"&&_){let p=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";a[p]=$?`${$} ${_}`:_}else if(u==="anonymous"&&_){let p=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";a[p]=_}if(u==="session"){let p=yt(e.csrfCookieName);p&&(a["X-CSRFToken"]=p)}return a};return{getAuthStrategy:s,getAuthHeaders:i,getFetchOptions:(l={},u=null)=>{let a=s(),_={...l};return _.headers={..._.headers,...i(u)},a==="session"&&(_.credentials="include"),_},getOrCreateSession:async()=>{let l=s(),u=t();if(l!=="anonymous")return e.authToken||u.authToken;if(u.authToken)return u.authToken;let a=e.anonymousTokenKey||e.sessionTokenKey,_=u.storage?.get(a);if(_)return n(p=>({...p,authToken:_})),_;try{let p=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${p}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let C=await $.json();return n(g=>({...g,authToken:C.token})),u.storage?.set(a,C.token),C.token}}catch(p){console.warn("[ChatWidget] Failed to create session:",p)}return null},transformRequest:o,transformResponse:r}}function xt({config:e,onStateChange:t,markdownParser:n,apiRef:o}){let[r,s]=M(e.embedded||e.forceOpen===!0),[i,c]=M(!1),[d,l]=M(!1),[u,a]=M(!1),[_,p]=M([]),[$,C]=M(!1),[g,y]=M(e.enableTTS),[w,I]=M(!1),[N,V]=M(null);L(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let O=ae(()=>gt(e.containerId),[e.containerId]),[j,J]=M(e.authToken||null),K=ae(()=>Tt(e,()=>({authToken:j,storage:O}),S=>{let h=S({authToken:j,storage:O});h.authToken!==j&&J(h.authToken)}),[e,j,O]),k=St(e,K,O),H=Mt(e,K,O);L(()=>{for(let f=k.messages.length-1;f>=0;f--){let x=k.messages[f];if(x.type==="sub_agent_start"){V({key:x.metadata?.subAgentKey,name:x.metadata?.agentName});return}if(x.type==="sub_agent_end"){V(null);return}}},[k.messages]),L(()=>{let f=O.get(e.conversationIdKey);f&&k.loadConversation(f)},[]),L(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:k.messages,conversationId:k.conversationId,isLoading:k.isLoading,error:k.error})},[r,i,d,k.messages,k.conversationId,k.isLoading,k.error]);let v=z(async()=>{if(e.showConversationSidebar){C(!0);try{let f=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,x=await fetch(f,K.getFetchOptions({method:"GET"}));if(x.ok){let S=await x.json();p(S.results||S)}}catch(f){console.error("[ChatWidget] Failed to load conversations:",f),p([])}finally{C(!1)}}},[e,K]),b=z(()=>{let f=!u;a(f),f&&v()},[u,v]),P=z(f=>{f!==k.conversationId&&k.loadConversation(f),a(!1)},[k]),T=z(()=>{k.clearMessages(),a(!1)},[k]),F=z(f=>{k.sendMessage(f,{model:H.selectedModel,onAssistantMessage:x=>{}})},[k,g,H.selectedModel]);if(L(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:f=>F(f),clearMessages:()=>k.clearMessages(),toggleTTS:()=>y(f=>!f),stopSpeech:()=>I(!1),setAuth:f=>{f.token!==void 0&&J(f.token)},clearAuth:()=>J(null)})},[k,o,F]),!e.embedded&&!r)return m`
397
+ `}function Mt(e,t,n){let[o,r]=M([]),[s,i]=M(!1),[c,d]=M(null),[l,u]=M(()=>n?.get(e.conversationIdKey)||null),[a,p]=M(!1),[f,$]=M(!1),[k,g]=M(0),y=G(null),w=G(null);L(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let A=z(async(v,I,H)=>{y.current&&y.current.close();let E=e.apiPaths.runEvents.replace("{runId}",v),C=`${e.backendUrl}${E}`;I&&(C+=`?anonymous_token=${encodeURIComponent(I)}`);let x=new EventSource(C);y.current=x;let _="";x.addEventListener("assistant.message",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let R=h.payload.content;R&&(_+=R,r(q=>{let X=q[q.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...q.slice(0,-1),{...X,content:_}]:[...q,{id:"assistant-stream-"+Date.now(),role:"assistant",content:_,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("tool.call",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.call",h.payload),r(R=>[...R,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${h.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:h.payload.name,arguments:h.payload.arguments,toolCallId:h.payload.id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("tool.result",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.result",h.payload);let R=h.payload.result,q=R?.error;r(X=>[...X,{id:"tool-result-"+Date.now(),role:"system",content:q?`\u274C ${R.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:R,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("custom",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("custom",h.payload),h.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(h.payload),h.payload?.type==="agent_context"&&r(R=>[...R,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${h.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:h.payload.agent_key,agentName:h.payload.agent_name,action:h.payload.action}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("sub_agent.start",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),r(R=>[...R,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${h.payload.agent_name||h.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name,invocationMode:h.payload.invocation_mode}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("sub_agent.end",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),r(R=>[...R,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${h.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}});let T=S=>{try{let h=JSON.parse(S.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let R=h.payload.error||"Agent run failed";d(R),r(q=>[...q,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${R}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}i(!1),x.close(),y.current=null,_&&H&&H(_)};x.addEventListener("run.succeeded",T),x.addEventListener("run.failed",T),x.addEventListener("run.cancelled",T),x.addEventListener("run.timed_out",T),x.onerror=()=>{i(!1),x.close(),y.current=null}},[e]),O=z(async(v,I={},H={})=>{if(!v.trim()||s)return;let E=[],C={};typeof I=="function"?C={onAssistantMessage:I}:Array.isArray(I)?(E=I,C=H):C=I||{};let{model:x,onAssistantMessage:_}=C;i(!0),d(null);let T={id:ve(),role:"user",content:v.trim(),timestamp:new Date,type:"message",files:E.length>0?E.map(S=>({name:S.name,size:S.size,type:S.type})):void 0};r(S=>[...S,T]);try{let S=await t.getOrCreateSession(),h;if(E.length>0){let ee=e.apiCaseStyle!=="camel",Ue=ie=>ee?He(ie):ie,Z=new FormData;Z.append(Ue("agentKey"),e.agentKey),l&&Z.append(Ue("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:v.trim()}])),Z.append("metadata",JSON.stringify(ee?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),x&&Z.append("model",x),E.forEach(ie=>{Z.append("files",ie)}),h=t.getFetchOptions({method:"POST",body:Z},S)}else{let ee=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:v.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...x&&{model:x}});h=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},S)}let R=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,h);if(!R.ok){let ee=await R.json().catch(()=>({}));throw new Error(ee.error||`HTTP ${R.status}`)}let q=await R.json(),X=t.transformResponse(q);w.current=X.id,!l&&X.conversationId&&u(X.conversationId),await A(X.id,S,_)}catch(S){d(S.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,A]),V=z(async()=>{let v=w.current;if(!(!v||!s))try{let I=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",v):`${e.apiPaths.runs}${v}/cancel/`;(await fetch(`${e.backendUrl}${I}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(y.current&&(y.current.close(),y.current=null),i(!1),w.current=null,r(E=>[...E,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(I){console.error("[ChatWidget] Failed to cancel run:",I)}},[e,t,s]),F=z(()=>{r([]),u(null),d(null),p(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),j=v=>{let I={id:ve(),role:v.role,timestamp:v.timestamp?new Date(v.timestamp):new Date};if(v.role==="tool")return{...I,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:v.content,toolCallId:v.toolCallId}};if(v.role==="assistant"&&v.toolCalls&&v.toolCalls.length>0)return v.toolCalls.map(E=>({id:ve(),role:"assistant",content:`\u{1F527} ${E.function?.name||E.name||"tool"}`,timestamp:I.timestamp,type:"tool_call",metadata:{toolName:E.function?.name||E.name,arguments:E.function?.arguments||E.arguments,toolCallId:E.id}}));let H=typeof v.content=="string"?v.content:JSON.stringify(v.content);return v.role==="assistant"&&!H?.trim()?null:{...I,content:H,type:"message"}},J=z(async v=>{i(!0),r([]),u(v);try{let I=await t.getOrCreateSession(),E=`${e.backendUrl}${e.apiPaths.conversations}${v}/?limit=10&offset=0`,C=await fetch(E,t.getFetchOptions({method:"GET"},I));if(C.ok){let x=await C.json(),_=t.transformResponse(x);_.messages&&r(_.messages.flatMap(j).filter(Boolean)),p(_.hasMore||!1),g(_.messages?.length||0)}else C.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(I){console.error("[ChatWidget] Failed to load conversation:",I)}finally{i(!1)}},[e,t,n]),K=z(async()=>{if(!(!l||f||!a)){$(!0);try{let v=await t.getOrCreateSession(),H=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${k}`,E=await fetch(H,t.getFetchOptions({method:"GET"},v));if(E.ok){let C=await E.json(),x=t.transformResponse(C);if(x.messages?.length>0){let _=x.messages.flatMap(j).filter(Boolean);r(T=>[..._,...T]),g(T=>T+x.messages.length),p(x.hasMore||!1)}else p(!1)}}catch(v){console.error("[ChatWidget] Failed to load more messages:",v)}finally{$(!1)}}},[e,t,l,k,f,a]),b=z(async(v,I,H={})=>{if(s)return;let E=o[v];if(!E||E.role!=="user")return;let C=o.slice(0,v);r(C),await O(I,H)},[o,s,O]),N=z(async(v,I={})=>{if(s)return;let H=o[v];if(!H)return;let E=v,C=H;if(H.role==="assistant"){for(let _=v-1;_>=0;_--)if(o[_].role==="user"){E=_,C=o[_];break}if(C.role!=="user")return}else if(H.role!=="user")return;let x=o.slice(0,E);r(x),await O(C.content,I)},[o,s,O]);return L(()=>()=>{y.current&&y.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:f,sendMessage:O,cancelRun:V,clearMessages:F,loadConversation:J,loadMoreMessages:K,setConversationId:u,editMessage:b,retryMessage:N}}function Tt(e,t,n){let[o,r]=M([]),[s,i]=M(null),[c,d]=M(null),[l,u]=M(!1);L(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let $=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if($.ok){let k=await $.json(),g=k.models||[];r(g),d(k.default);let y=n?.get(e.modelKey);y&&g.some(w=>w.id===y)?i(y):i(k.default)}}catch($){console.warn("[ChatWidget] Failed to load models:",$)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=z(f=>{i(f),n?.set(e.modelKey,f)},[e.modelKey,n]),p=z(()=>o.find(f=>f.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:p}}function xt(e,t,n){let o=l=>!l||typeof l!="object"||e.apiCaseStyle==="camel"?l:ye(l),r=l=>!l||typeof l!="object"||e.apiCaseStyle==="snake"?l:ge(l),s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(l=null)=>{let u=s(),a={},p=l||e.authToken||t().authToken;if(u==="token"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";a[f]=$?`${$} ${p}`:p}else if(u==="jwt"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";a[f]=$?`${$} ${p}`:p}else if(u==="anonymous"&&p){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";a[f]=p}if(u==="session"){let f=yt(e.csrfCookieName);f&&(a["X-CSRFToken"]=f)}return a};return{getAuthStrategy:s,getAuthHeaders:i,getFetchOptions:(l={},u=null)=>{let a=s(),p={...l};return p.headers={...p.headers,...i(u)},a==="session"&&(p.credentials="include"),p},getOrCreateSession:async()=>{let l=s(),u=t();if(l!=="anonymous")return e.authToken||u.authToken;if(u.authToken)return u.authToken;let a=e.anonymousTokenKey||e.sessionTokenKey,p=u.storage?.get(a);if(p)return n(f=>({...f,authToken:p})),p;try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let k=await $.json();return n(g=>({...g,authToken:k.token})),u.storage?.set(a,k.token),k.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},transformRequest:o,transformResponse:r}}function Et({config:e,onStateChange:t,markdownParser:n,apiRef:o}){let[r,s]=M(e.embedded||e.forceOpen===!0),[i,c]=M(!1),[d,l]=M(!1),[u,a]=M(!1),[p,f]=M([]),[$,k]=M(!1),[g,y]=M(e.enableTTS),[w,A]=M(!1),[O,V]=M(null);L(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let F=ae(()=>gt(e.containerId),[e.containerId]),[j,J]=M(e.authToken||null),K=ae(()=>xt(e,()=>({authToken:j,storage:F}),S=>{let h=S({authToken:j,storage:F});h.authToken!==j&&J(h.authToken)}),[e,j,F]),b=Mt(e,K,F),N=Tt(e,K,F);L(()=>{for(let _=b.messages.length-1;_>=0;_--){let T=b.messages[_];if(T.type==="sub_agent_start"){V({key:T.metadata?.subAgentKey,name:T.metadata?.agentName});return}if(T.type==="sub_agent_end"){V(null);return}}},[b.messages]),L(()=>{let _=F.get(e.conversationIdKey);_&&b.loadConversation(_)},[]),L(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:b.messages,conversationId:b.conversationId,isLoading:b.isLoading,error:b.error})},[r,i,d,b.messages,b.conversationId,b.isLoading,b.error]);let v=z(async()=>{if(e.showConversationSidebar){k(!0);try{let _=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,T=await fetch(_,K.getFetchOptions({method:"GET"}));if(T.ok){let S=await T.json();f(S.results||S)}}catch(_){console.error("[ChatWidget] Failed to load conversations:",_),f([])}finally{k(!1)}}},[e,K]),I=z(()=>{let _=!u;a(_),_&&v()},[u,v]),H=z(_=>{_!==b.conversationId&&b.loadConversation(_),a(!1)},[b]),E=z(()=>{b.clearMessages(),a(!1)},[b]),C=z(_=>{b.sendMessage(_,{model:N.selectedModel,onAssistantMessage:T=>{}})},[b,g,N.selectedModel]);if(L(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:_=>C(_),clearMessages:()=>b.clearMessages(),toggleTTS:()=>y(_=>!_),stopSpeech:()=>A(!1),setAuth:_=>{_.token!==void 0&&J(_.token)},clearAuth:()=>J(null)})},[b,o,C]),!e.embedded&&!r)return m`
383
398
  <button
384
399
  class="cw-fab"
385
400
  style=${{backgroundColor:e.primaryColor}}
@@ -389,17 +404,17 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
389
404
  <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>
390
405
  </svg>
391
406
  </button>
392
- `;let E=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
393
- <div class=${E} style=${{"--cw-primary":e.primaryColor}}>
407
+ `;let x=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
408
+ <div class=${x} style=${{"--cw-primary":e.primaryColor}}>
394
409
  ${e.showConversationSidebar&&m`
395
- <${kt}
410
+ <${Ct}
396
411
  isOpen=${u}
397
- conversations=${_}
412
+ conversations=${p}
398
413
  conversationsLoading=${$}
399
- currentConversationId=${k.conversationId}
414
+ currentConversationId=${b.conversationId}
400
415
  onClose=${()=>a(!1)}
401
- onNewConversation=${T}
402
- onSwitchConversation=${P}
416
+ onNewConversation=${E}
417
+ onSwitchConversation=${H}
403
418
  />
404
419
  `}
405
420
 
@@ -408,56 +423,56 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var At=Object.getOwnProp
408
423
  debugMode=${d}
409
424
  isExpanded=${i}
410
425
  isSpeaking=${w}
411
- messagesCount=${k.messages.length}
412
- isLoading=${k.isLoading}
413
- currentAgent=${N}
426
+ messagesCount=${b.messages.length}
427
+ isLoading=${b.isLoading}
428
+ currentAgent=${O}
414
429
  onClose=${()=>s(!1)}
415
430
  onToggleExpand=${()=>c(!i)}
416
431
  onToggleDebug=${()=>l(!d)}
417
432
  onToggleTTS=${()=>y(!g)}
418
- onClear=${k.clearMessages}
419
- onToggleSidebar=${b}
433
+ onClear=${b.clearMessages}
434
+ onToggleSidebar=${I}
420
435
  />
421
436
 
422
437
  ${d&&m`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
423
438
 
424
- <${$t}
425
- messages=${k.messages}
426
- isLoading=${k.isLoading}
427
- hasMoreMessages=${k.hasMoreMessages}
428
- loadingMoreMessages=${k.loadingMoreMessages}
429
- onLoadMore=${k.loadMoreMessages}
430
- onEditMessage=${k.editMessage}
431
- onRetryMessage=${k.retryMessage}
439
+ <${bt}
440
+ messages=${b.messages}
441
+ isLoading=${b.isLoading}
442
+ hasMoreMessages=${b.hasMoreMessages}
443
+ loadingMoreMessages=${b.loadingMoreMessages}
444
+ onLoadMore=${b.loadMoreMessages}
445
+ onEditMessage=${b.editMessage}
446
+ onRetryMessage=${b.retryMessage}
432
447
  debugMode=${d}
433
448
  markdownParser=${n}
434
449
  emptyStateTitle=${e.emptyStateTitle}
435
450
  emptyStateMessage=${e.emptyStateMessage}
436
451
  />
437
452
 
438
- ${k.error&&m`<div class="cw-error-bar">${k.error}</div>`}
453
+ ${b.error&&m`<div class="cw-error-bar">${b.error}</div>`}
439
454
 
440
- ${e.showModelSelector&&H.availableModels.length>0&&m`
441
- <${Ct}
442
- availableModels=${H.availableModels}
443
- selectedModel=${H.selectedModel}
444
- onSelectModel=${H.selectModel}
445
- disabled=${k.isLoading}
455
+ ${e.showModelSelector&&N.availableModels.length>0&&m`
456
+ <${St}
457
+ availableModels=${N.availableModels}
458
+ selectedModel=${N.selectedModel}
459
+ onSelectModel=${N.selectModel}
460
+ disabled=${b.isLoading}
446
461
  />
447
462
  `}
448
463
 
449
- <${bt}
450
- onSend=${F}
451
- onCancel=${k.cancelRun}
452
- isLoading=${k.isLoading}
464
+ <${kt}
465
+ onSend=${C}
466
+ onCancel=${b.cancelRun}
467
+ isLoading=${b.isLoading}
453
468
  placeholder=${e.placeholder}
454
469
  primaryColor=${e.primaryColor}
455
470
  enableVoice=${e.enableVoice}
456
471
  />
457
472
  </div>
458
- `}var Et={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 It(e){let t={...Et.apiPaths,...e.apiPaths||{}};return{...Et,...e,apiPaths:t}}var be=new Map,Qt=0,A=null,Fe=class{constructor(t={}){this.instanceId=`cw-${++Qt}`,this.config=It(t),this.container=null,this._state={},this._apiRef={current:null},be.set(this.instanceId,this)}_handleStateChange=t=>{this._state=t};init(){if(this.config.containerId){if(this.container=document.getElementById(this.config.containerId),!this.container)return console.error(`[ChatWidget] Container not found: ${this.config.containerId}`),this;this.container.classList.add("cw-container-embedded")}else this.container=document.createElement("div"),this.container.id=this.instanceId,this.container.className=`cw-container cw-position-${this.config.position}`,document.body.appendChild(this.container);return this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_render(t={}){this.container&&he(m`<${xt}
473
+ `}var It={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 At(e){let t={...It.apiPaths,...e.apiPaths||{}};return{...It,...e,apiPaths:t}}var be=new Map,Qt=0,D=null,Fe=class{constructor(t={}){this.instanceId=`cw-${++Qt}`,this.config=At(t),this.container=null,this._state={},this._apiRef={current:null},be.set(this.instanceId,this)}_handleStateChange=t=>{this._state=t};init(){if(this.config.containerId){if(this.container=document.getElementById(this.config.containerId),!this.container)return console.error(`[ChatWidget] Container not found: ${this.config.containerId}`),this;this.container.classList.add("cw-container-embedded")}else this.container=document.createElement("div"),this.container.id=this.instanceId,this.container.className=`cw-container cw-position-${this.config.position}`,document.body.appendChild(this.container);return this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_render(t={}){this.container&&he(m`<${Et}
459
474
  config=${{...this.config,...t}}
460
475
  onStateChange=${this._handleStateChange}
461
476
  markdownParser=${ke._enhancedMarkdownParser}
462
477
  apiRef=${this._apiRef}
463
- />`,this.container)}destroy(){this.container&&(he(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),be.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 Rt(e={}){return new Fe(e).init()}function Zt(e={}){return A&&A.destroy(),A=Rt(e),A}function Yt(){A&&(A.destroy(),A=null)}function en(){A&&A.open()}function tn(){A&&A.close()}function nn(e){A&&A.send(e)}function on(){A&&A.clearMessages()}function sn(){A&&A.toggleTTS()}function rn(){A&&A.stopSpeech()}function an(e){A&&A.setAuth(e)}function ln(){A&&A.clearAuth()}function cn(){return A?A.getState():null}function un(){return A?A.getConfig():null}var ke={createInstance:Rt,getInstance:e=>be.get(e),getAllInstances:()=>Array.from(be.values()),init:Zt,destroy:Yt,open:en,close:tn,send:nn,clearMessages:on,toggleTTS:sn,stopSpeech:rn,setAuth:an,clearAuth:ln,getState:cn,getConfig:un,_enhancedMarkdownParser:null};var dn=ke;typeof window<"u"&&(window.ChatWidget=ke);return Ot(_n);})();
478
+ />`,this.container)}destroy(){this.container&&(he(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),be.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 Rt(e={}){return new Fe(e).init()}function Zt(e={}){return D&&D.destroy(),D=Rt(e),D}function Yt(){D&&(D.destroy(),D=null)}function en(){D&&D.open()}function tn(){D&&D.close()}function nn(e){D&&D.send(e)}function on(){D&&D.clearMessages()}function sn(){D&&D.toggleTTS()}function rn(){D&&D.stopSpeech()}function an(e){D&&D.setAuth(e)}function ln(){D&&D.clearAuth()}function cn(){return D?D.getState():null}function un(){return D?D.getConfig():null}var ke={createInstance:Rt,getInstance:e=>be.get(e),getAllInstances:()=>Array.from(be.values()),init:Zt,destroy:Yt,open:en,close:tn,send:nn,clearMessages:on,toggleTTS:sn,stopSpeech:rn,setAuth:an,clearAuth:ln,getState:cn,getConfig:un,_enhancedMarkdownParser:null};var dn=ke;typeof window<"u"&&(window.ChatWidget=ke);return Ft(_n);})();
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-agent-studio
3
- Version: 0.2.1
3
+ Version: 0.2.5
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
@@ -19,8 +19,8 @@ django_agent_studio/models/permissions.py,sha256=NepltvQzeehv5EwcOTqULj8n3N5XGVT
19
19
  django_agent_studio/services/__init__.py,sha256=06cc1eLnAbROTKFxBgvkeCpsYV5cQsyJVGXaE_rcp3M,244
20
20
  django_agent_studio/services/permissions.py,sha256=-cwe0YZCFBFYh_ScXKncsPwEkCfEyIrtOzp8Wt9GSco,7785
21
21
  django_agent_studio/static/agent-frontend/chat-widget-markdown.js,sha256=_TQCux4HPRynCiLKydITO-docIRoi454jLpX0fegAFM,3722
22
- django_agent_studio/static/agent-frontend/chat-widget.css,sha256=1YgakWDe1MDlS30sKelHxDYRjvX8UY2AL1BmBE_ZilY,32785
23
- django_agent_studio/static/agent-frontend/chat-widget.js,sha256=xvgTTgHLDjA6NvXePkhbSBvDplVdwI7QBm-xQTRxAK4,53313
22
+ django_agent_studio/static/agent-frontend/chat-widget.css,sha256=bC3SH7Atn6Wbcwcm8ZCgHeF6UZD_QO6NeSu6j7No26M,33164
23
+ django_agent_studio/static/agent-frontend/chat-widget.js,sha256=G-0PFv0bvQkAFi-falYTwhxiTMu1dfo9Rgaff0gqs-M,53862
24
24
  django_agent_studio/static/django_agent_studio/js/builder.js,sha256=eEUw2z-pNdoU3xv3NhLQ-uDZV7tsf8Bawseg7B7dpCo,413948
25
25
  django_agent_studio/static/django_agent_studio/js/builder.js.map,sha256=sVkeGyZsBWEr4MKhqAfd3B4JL5n7D6eKc_4ZYUsbKO8,1633363
26
26
  django_agent_studio/static/django_agent_studio/js/style.css,sha256=rigQJy_oHIhgb1_7DwAQ_8G002gQnT0AXUtwxImWj1o,1626515
@@ -29,8 +29,8 @@ django_agent_studio/templates/django_agent_studio/base.html,sha256=wSgwaqK1DAIIy
29
29
  django_agent_studio/templates/django_agent_studio/builder.html,sha256=05thhHGdHaytyD1c15s5SMMWeNVKE8ERLEUp8qdv7Mc,1524
30
30
  django_agent_studio/templates/django_agent_studio/home.html,sha256=pgwKPjiQe9UxYYLGSsKT-6erEPDUdW9MZ5D-MOjIxK4,4385
31
31
  django_agent_studio/templates/django_agent_studio/test.html,sha256=h9aTtTD1eYcgG-n410qMSryHdpXyKny0hjiKYAoGsic,3779
32
- django_agent_studio-0.2.1.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
33
- django_agent_studio-0.2.1.dist-info/METADATA,sha256=-M9e4haGYBsi6s_US2k6nmU0XUn-5rhkwYCxVZas7Yc,16272
34
- django_agent_studio-0.2.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
35
- django_agent_studio-0.2.1.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
36
- django_agent_studio-0.2.1.dist-info/RECORD,,
32
+ django_agent_studio-0.2.5.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
33
+ django_agent_studio-0.2.5.dist-info/METADATA,sha256=SebEfBdv3SoAyR4Xdnc2MCAY01SMdQ-g-ff21hc06qM,16272
34
+ django_agent_studio-0.2.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
35
+ django_agent_studio-0.2.5.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
36
+ django_agent_studio-0.2.5.dist-info/RECORD,,