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