django-agent-studio 0.2.6__tar.gz → 0.2.8__tar.gz
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-0.2.6 → django_agent_studio-0.2.8}/PKG-INFO +1 -1
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/PKG-INFO +1 -1
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/pyproject.toml +1 -1
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/agent-frontend/chat-widget.css +8 -11
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/agent-frontend/chat-widget.js +78 -75
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/LICENSE +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/README.md +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/agents/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/agents/builder.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/agents/dynamic.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/api/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/api/permissions.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/api/serializers.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/api/urls.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/api/views.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/apps.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/SOURCES.txt +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/dependency_links.txt +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/requires.txt +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/top_level.txt +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/management/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/management/commands/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/migrations/0001_initial.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/migrations/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/models/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/models/permissions.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/services/__init__.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/services/permissions.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/setup.cfg +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/agent-frontend/chat-widget-markdown.js +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/django_agent_studio/js/builder.js +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/django_agent_studio/js/builder.js.map +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/django_agent_studio/js/style.css +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/agent_list.html +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/base.html +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/builder.html +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/home.html +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/test.html +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/urls.py +0 -0
- {django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/views.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "django-agent-studio"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.8"
|
|
8
8
|
description = "Visual agent builder and management studio for Django - build custom GPTs with a two-pane interface"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {file = "LICENSE"}
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/agent-frontend/chat-widget.css
RENAMED
|
@@ -1693,10 +1693,11 @@
|
|
|
1693
1693
|
Edit/Retry Message Actions
|
|
1694
1694
|
========================================== */
|
|
1695
1695
|
|
|
1696
|
-
/* Wrapper for message bubble + action buttons */
|
|
1697
|
-
.cw-
|
|
1698
|
-
|
|
1699
|
-
|
|
1696
|
+
/* Wrapper for user message bubble + action buttons (inline, buttons on left) */
|
|
1697
|
+
.cw-user-actions-wrapper {
|
|
1698
|
+
display: inline-flex;
|
|
1699
|
+
align-items: center;
|
|
1700
|
+
gap: 6px;
|
|
1700
1701
|
max-width: 80%;
|
|
1701
1702
|
}
|
|
1702
1703
|
|
|
@@ -1706,16 +1707,12 @@
|
|
|
1706
1707
|
gap: 4px;
|
|
1707
1708
|
opacity: 0;
|
|
1708
1709
|
transition: opacity 0.15s ease;
|
|
1710
|
+
flex-shrink: 0;
|
|
1709
1711
|
}
|
|
1710
1712
|
|
|
1711
|
-
/*
|
|
1712
|
-
/* Use absolute positioning to place buttons to the left of the bubble */
|
|
1713
|
+
/* Buttons on left side for user messages - no special positioning needed, they're first in DOM */
|
|
1713
1714
|
.cw-message-actions-left {
|
|
1714
|
-
|
|
1715
|
-
right: 100%;
|
|
1716
|
-
top: 50%;
|
|
1717
|
-
transform: translateY(-50%);
|
|
1718
|
-
margin-right: 6px;
|
|
1715
|
+
/* Already positioned correctly via flexbox */
|
|
1719
1716
|
}
|
|
1720
1717
|
|
|
1721
1718
|
/* Position below for assistant messages */
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/agent-frontend/chat-widget.js
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var Pt=Object.getOwnPropertyNames;var Ht=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var n in t)Ce(e,n,{get:t[n],enumerable:!0})},Ot=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Pt(t))!Ht.call(e,r)&&r!==n&&Ce(e,r,{get:()=>t[r],enumerable:!(o=Dt(t,r))||o.enumerable});return e};var Ft=e=>Ot(Ce({},"__esModule",{value:!0}),e);var _n={};Nt(_n,{ChatWidget:()=>ke,default:()=>dn});var de,P,ze,Ut,Y,We,je,Je,Ve,xe,Se,Me,Wt,oe={},qe=[],Lt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_e=Array.isArray;function Q(e,t){for(var n in t)e[n]=t[n];return e}function Ee(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function pe(e,t,n){var o,r,s,i={};for(s in t)s=="key"?o=t[s]:s=="ref"?r=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?de.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)i[s]===void 0&&(i[s]=e.defaultProps[s]);return ce(e,i,o,r,null)}function ce(e,t,n,o,r){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++ze,__i:-1,__u:0};return r==null&&P.vnode!=null&&P.vnode(s),s}function fe(e){return e.children}function ne(e,t){this.props=e,this.context=t}function te(e,t){if(t==null)return e.__?te(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?te(e):null}function Ge(e){var t,n;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null){e.__e=e.__c.base=n.__e;break}return Ge(e)}}function Le(e){(!e.__d&&(e.__d=!0)&&Y.push(e)&&!ue.__r++||We!=P.debounceRendering)&&((We=P.debounceRendering)||je)(ue)}function ue(){for(var e,t,n,o,r,s,i,c=1;Y.length;)Y.length>c&&Y.sort(Je),e=Y.shift(),c=Y.length,e.__d&&(n=void 0,o=void 0,r=(o=(t=e).__v).__e,s=[],i=[],t.__P&&((n=Q({},o)).__v=o.__v+1,P.vnode&&P.vnode(n),Ie(t.__P,n,o,t.__n,t.__P.namespaceURI,32&o.__u?[r]:null,s,r??te(o),!!(32&o.__u),i),n.__v=o.__v,n.__.__k[n.__i]=n,Ze(s,n,i),o.__e=o.__=null,n.__e!=r&&Ge(n)));ue.__r=0}function Xe(e,t,n,o,r,s,i,c,d,l,u){var a,p,f,$,k,g,y,w=o&&o.__k||qe,A=t.length;for(d=Kt(n,t,w,d,A),a=0;a<A;a++)(f=n.__k[a])!=null&&(p=f.__i==-1?oe:w[f.__i]||oe,f.__i=a,g=Ie(e,f,p,r,s,i,c,d,l,u),$=f.__e,f.ref&&p.ref!=f.ref&&(p.ref&&Ae(p.ref,null,f),u.push(f.ref,f.__c||$,f)),k==null&&$!=null&&(k=$),(y=!!(4&f.__u))||p.__k===f.__k?d=Qe(f,d,e,y):typeof f.type=="function"&&g!==void 0?d=g:$&&(d=$.nextSibling),f.__u&=-7);return n.__e=k,d}function Kt(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,p=0;for(e.__k=new Array(r),s=0;s<r;s++)(i=t[s])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[s]=ce(null,i,null,null,null):_e(i)?i=e.__k[s]=ce(fe,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[s]=ce(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,d=s+p,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=Bt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?p--:r<u&&p++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?p--:l==d+1?p++:(l>d?p--:p++,i.__u|=4))):e.__k[s]=null;if(a)for(s=0;s<u;s++)(c=n[s])!=null&&!(2&c.__u)&&(c.__e==o&&(o=te(c)),et(c,c));return o}function Qe(e,t,n,o){var r,s;if(typeof e.type=="function"){for(r=e.__k,s=0;r&&s<r.length;s++)r[s]&&(r[s].__=e,t=Qe(r[s],t,n,o));return t}e.__e!=t&&(o&&(t&&e.type&&!t.parentNode&&(t=te(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Bt(e,t,n,o){var r,s,i,c=e.key,d=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&c==null||u&&c==l.key&&d==l.type)return n;if(o>(u?1:0)){for(r=n-1,s=n+1;r>=0||s<t.length;)if((l=t[i=r>=0?r--:s++])!=null&&!(2&l.__u)&&c==l.key&&d==l.type)return i}return-1}function Ke(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Lt.test(t)?n:n+"px"}function le(e,t,n,o,r){var s,i;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||Ke(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Ke(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=t!=(t=t.replace(Ve,"$1")),i=t.toLowerCase(),t=i in e||t=="onFocusOut"||t=="onFocusIn"?i.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+s]=n,n?o?n.u=o.u:(n.u=xe,e.addEventListener(t,s?Me:Se,s)):e.removeEventListener(t,s?Me:Se,s);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Be(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=xe++;else if(t.t<n.u)return;return n(P.event?P.event(t):t)}}}function Ie(e,t,n,o,r,s,i,c,d,l){var u,a,p,f,$,k,g,y,w,A,O,V,F,j,J,K,b,N=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=P.__b)&&u(t);e:if(typeof N=="function")try{if(y=t.props,w="prototype"in N&&N.prototype.render,A=(u=N.contextType)&&o[u.__c],O=u?A?A.props.value:u.__:o,n.__c?g=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new N(y,O):(t.__c=a=new ne(y,O),a.constructor=N,a.render=jt),A&&A.sub(a),a.state||(a.state={}),a.__n=o,p=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&N.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=Q({},a.__s)),Q(a.__s,N.getDerivedStateFromProps(y,a.__s))),f=a.props,$=a.state,a.__v=t,p)w&&N.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&N.getDerivedStateFromProps==null&&y!==f&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(y,O),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(y,a.__s,O)===!1){for(t.__v!=n.__v&&(a.props=y,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(v){v&&(v.__=t)}),V=0;V<a._sb.length;V++)a.__h.push(a._sb[V]);a._sb=[],a.__h.length&&i.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(y,a.__s,O),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(f,$,k)})}if(a.context=O,a.props=y,a.__P=e,a.__e=!1,F=P.__r,j=0,w){for(a.state=a.__s,a.__d=!1,F&&F(t),u=a.render(a.props,a.state,a.context),J=0;J<a._sb.length;J++)a.__h.push(a._sb[J]);a._sb=[]}else do a.__d=!1,F&&F(t),u=a.render(a.props,a.state,a.context),a.state=a.__s;while(a.__d&&++j<25);a.state=a.__s,a.getChildContext!=null&&(o=Q(Q({},o),a.getChildContext())),w&&!p&&a.getSnapshotBeforeUpdate!=null&&(k=a.getSnapshotBeforeUpdate(f,$)),K=u,u!=null&&u.type===fe&&u.key==null&&(K=Ye(u.props.children)),c=Xe(e,_e(K)?K:[K],t,n,o,r,s,i,c,d,l),a.base=t.__e,t.__u&=-161,a.__h.length&&i.push(a),g&&(a.__E=a.__=null)}catch(v){if(t.__v=null,d||s!=null)if(v.then){for(t.__u|=d?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;s[s.indexOf(c)]=null,t.__e=c}else{for(b=s.length;b--;)Ee(s[b]);Te(t)}else t.__e=n.__e,t.__k=n.__k,v.then||Te(t);P.__e(v,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=zt(n.__e,t,n,o,r,s,i,d,l);return(u=P.diffed)&&u(t),128&t.__u?void 0:c}function Te(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Te)}function Ze(e,t,n){for(var o=0;o<n.length;o++)Ae(n[o],n[++o],n[++o]);P.__c&&P.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){P.__e(s,r.__v)}})}function Ye(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:_e(e)?e.map(Ye):Q({},e)}function zt(e,t,n,o,r,s,i,c,d){var l,u,a,p,f,$,k,g=n.props||oe,y=t.props,w=t.type;if(w=="svg"?r="http://www.w3.org/2000/svg":w=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),s!=null){for(l=0;l<s.length;l++)if((f=s[l])&&"setAttribute"in f==!!w&&(w?f.localName==w:f.nodeType==3)){e=f,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(y);e=document.createElementNS(r,w,y.is&&y),c&&(P.__m&&P.__m(t,s),c=!1),s=null}if(w==null)g===y||c&&e.data==y||(e.data=y);else{if(s=s&&de.call(e.childNodes),!c&&s!=null)for(g={},l=0;l<e.attributes.length;l++)g[(f=e.attributes[l]).name]=f.value;for(l in g)if(f=g[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=f;else if(!(l in y)){if(l=="value"&&"defaultValue"in y||l=="checked"&&"defaultChecked"in y)continue;le(e,l,null,f,r)}}for(l in y)f=y[l],l=="children"?p=f:l=="dangerouslySetInnerHTML"?u=f:l=="value"?$=f:l=="checked"?k=f:c&&typeof f!="function"||g[l]===f||le(e,l,f,g[l],r);if(u)c||a&&(u.__html==a.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(a&&(e.innerHTML=""),Xe(t.type=="template"?e.content:e,_e(p)?p:[p],t,n,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,i,s?s[0]:n.__k&&te(n,0),c,d),s!=null)for(l=s.length;l--;)Ee(s[l]);c||(l="value",w=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[l]||w=="progress"&&!$||w=="option"&&$!=g[l])&&le(e,l,$,g[l],r),l="checked",k!=null&&k!=e[l]&&le(e,l,k,g[l],r))}return e}function Ae(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){P.__e(r,n)}}function et(e,t,n){var o,r;if(P.unmount&&P.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Ae(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){P.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&et(o[r],t,n||typeof e.type!="function");n||Ee(e.__e),e.__c=e.__=e.__e=void 0}function jt(e,t,n){return this.constructor(e,n)}function he(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),P.__&&P.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],Ie(t,e=(!o&&n||t).__k=pe(fe,null,[e]),r||oe,oe,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?de.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,i),Ze(s,e,i)}de=qe.slice,P={__e:function(e,t,n,o){for(var r,s,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},ze=0,Ut=function(e){return e!=null&&e.constructor===void 0},ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Q({},this.state),typeof e=="function"&&(e=e(Q({},n),this.props)),e&&Q(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Le(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Le(this))},ne.prototype.render=fe,Y=[],je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Je=function(e,t){return e.__v.__b-t.__v.__b},ue.__r=0,Ve=/(PointerCapture)$|Capture$/i,xe=0,Se=Be(!1),Me=Be(!0),Wt=0;var nt=function(e,t,n,o){var r;t[0]=0;for(var s=1;s<t.length;s++){var i=t[s++],c=t[s]?(t[0]|=i?1:2,n[t[s++]]):t[++s];i===3?o[0]=c:i===4?o[1]=Object.assign(o[1]||{},c):i===5?(o[1]=o[1]||{})[t[++s]]=c:i===6?o[1][t[++s]]+=c+"":i?(r=e.apply(c,nt(e,c,n,["",null])),o.push(r),c[0]?t[0]|=2:(t[s-2]=0,t[s]=r)):o.push(c)}return o},tt=new Map;function ot(e){var t=tt.get(this);return t||(t=new Map,tt.set(this,t)),(t=nt(this,t.get(e)||(t.set(e,t=function(n){for(var o,r,s=1,i="",c="",d=[0],l=function(p){s===1&&(p||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,p,i):s===3&&(p||i)?(d.push(3,p,i),s=2):s===2&&i==="..."&&p?d.push(4,p,0):s===2&&i&&!p?d.push(5,0,!0,i):s>=5&&((i||!p&&s===5)&&(d.push(s,0,i,r),s=6),p&&(d.push(s,p,0,r),s=6)),i=""},u=0;u<n.length;u++){u&&(s===1&&l(),l(u));for(var a=0;a<n[u].length;a++)o=n[u][a],s===1?o==="<"?(l(),d=[d],s=3):i+=o:s===4?i==="--"&&o===">"?(s=1,i=""):i=o+i[0]:c?o===c?c="":i+=o:o==='"'||o==="'"?c=o:o===">"?(l(),s=1):s&&(o==="="?(s=5,r=i,i=""):o==="/"&&(s<5||n[u][a+1]===">")?(l(),s===3&&(d=d[0]),s=d,(d=d[0]).push(2,0,s),s=0):o===" "||o===" "||o===`
|
|
2
|
-
`||o==="\r"?(l(),s=2):i+=o),s===3&&i==="!--"&&(s=4,d=d[0])}return l(),d}(e)),t),arguments,[])).length>1?t:t[0]}var m=
|
|
1
|
+
var ChatWidgetModule=(()=>{var Se=Object.defineProperty;var Pt=Object.getOwnPropertyDescriptor;var Ht=Object.getOwnPropertyNames;var Ft=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var n in t)Se(e,n,{get:t[n],enumerable:!0})},Ot=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ht(t))!Ft.call(e,r)&&r!==n&&Se(e,r,{get:()=>t[r],enumerable:!(o=Pt(t,r))||o.enumerable});return e};var Ut=e=>Ot(Se({},"__esModule",{value:!0}),e);var pn={};Nt(pn,{ChatWidget:()=>Ce,default:()=>_n});var _e,P,je,Wt,Y,Le,Je,Ve,qe,Ee,Me,Te,Lt,oe={},Ge=[],Kt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,pe=Array.isArray;function X(e,t){for(var n in t)e[n]=t[n];return e}function Ie(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function fe(e,t,n){var o,r,s,i={};for(s in t)s=="key"?o=t[s]:s=="ref"?r=t[s]:i[s]=t[s];if(arguments.length>2&&(i.children=arguments.length>3?_e.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)i[s]===void 0&&(i[s]=e.defaultProps[s]);return ue(e,i,o,r,null)}function ue(e,t,n,o,r){var s={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++je,__i:-1,__u:0};return r==null&&P.vnode!=null&&P.vnode(s),s}function he(e){return e.children}function ne(e,t){this.props=e,this.context=t}function te(e,t){if(t==null)return e.__?te(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?te(e):null}function Xe(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 Xe(e)}}function Ke(e){(!e.__d&&(e.__d=!0)&&Y.push(e)&&!de.__r++||Le!=P.debounceRendering)&&((Le=P.debounceRendering)||Je)(de)}function de(){for(var e,t,n,o,r,s,i,c=1;Y.length;)Y.length>c&&Y.sort(Ve),e=Y.shift(),c=Y.length,e.__d&&(n=void 0,o=void 0,r=(o=(t=e).__v).__e,s=[],i=[],t.__P&&((n=X({},o)).__v=o.__v+1,P.vnode&&P.vnode(n),Ae(t.__P,n,o,t.__n,t.__P.namespaceURI,32&o.__u?[r]:null,s,r??te(o),!!(32&o.__u),i),n.__v=o.__v,n.__.__k[n.__i]=n,Ye(s,n,i),o.__e=o.__=null,n.__e!=r&&Xe(n)));de.__r=0}function Qe(e,t,n,o,r,s,i,c,d,l,u){var a,p,f,$,k,g,v,w=o&&o.__k||Ge,A=t.length;for(d=Bt(n,t,w,d,A),a=0;a<A;a++)(f=n.__k[a])!=null&&(p=f.__i==-1?oe:w[f.__i]||oe,f.__i=a,g=Ae(e,f,p,r,s,i,c,d,l,u),$=f.__e,f.ref&&p.ref!=f.ref&&(p.ref&&Re(p.ref,null,f),u.push(f.ref,f.__c||$,f)),k==null&&$!=null&&(k=$),(v=!!(4&f.__u))||p.__k===f.__k?d=Ze(f,d,e,v):typeof f.type=="function"&&g!==void 0?d=g:$&&(d=$.nextSibling),f.__u&=-7);return n.__e=k,d}function Bt(e,t,n,o,r){var s,i,c,d,l,u=n.length,a=u,p=0;for(e.__k=new Array(r),s=0;s<r;s++)(i=t[s])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[s]=ue(null,i,null,null,null):pe(i)?i=e.__k[s]=ue(he,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[s]=ue(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[s]=i,d=s+p,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=zt(i,n,d,a))!=-1&&(a--,(c=n[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(r>u?p--:r<u&&p++),typeof i.type!="function"&&(i.__u|=4)):l!=d&&(l==d-1?p--:l==d+1?p++:(l>d?p--:p++,i.__u|=4))):e.__k[s]=null;if(a)for(s=0;s<u;s++)(c=n[s])!=null&&!(2&c.__u)&&(c.__e==o&&(o=te(c)),tt(c,c));return o}function Ze(e,t,n,o){var r,s;if(typeof e.type=="function"){for(r=e.__k,s=0;r&&s<r.length;s++)r[s]&&(r[s].__=e,t=Ze(r[s],t,n,o));return t}e.__e!=t&&(o&&(t&&e.type&&!t.parentNode&&(t=te(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function zt(e,t,n,o){var r,s,i,c=e.key,d=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&c==null||u&&c==l.key&&d==l.type)return n;if(o>(u?1:0)){for(r=n-1,s=n+1;r>=0||s<t.length;)if((l=t[i=r>=0?r--:s++])!=null&&!(2&l.__u)&&c==l.key&&d==l.type)return i}return-1}function Be(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Kt.test(t)?n:n+"px"}function ce(e,t,n,o,r){var s,i;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||Be(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||Be(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")s=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+s]=n,n?o?n.u=o.u:(n.u=Ee,e.addEventListener(t,s?Te:Me,s)):e.removeEventListener(t,s?Te:Me,s);else{if(r=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function ze(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Ee++;else if(t.t<n.u)return;return n(P.event?P.event(t):t)}}}function Ae(e,t,n,o,r,s,i,c,d,l){var u,a,p,f,$,k,g,v,w,A,N,J,O,j,V,K,b,F=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(d=!!(32&n.__u),s=[c=t.__e=n.__e]),(u=P.__b)&&u(t);e:if(typeof F=="function")try{if(v=t.props,w="prototype"in F&&F.prototype.render,A=(u=F.contextType)&&o[u.__c],N=u?A?A.props.value:u.__:o,n.__c?g=(a=t.__c=n.__c).__=a.__E:(w?t.__c=a=new F(v,N):(t.__c=a=new ne(v,N),a.constructor=F,a.render=Jt),A&&A.sub(a),a.state||(a.state={}),a.__n=o,p=a.__d=!0,a.__h=[],a._sb=[]),w&&a.__s==null&&(a.__s=a.state),w&&F.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=X({},a.__s)),X(a.__s,F.getDerivedStateFromProps(v,a.__s))),f=a.props,$=a.state,a.__v=t,p)w&&F.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),w&&a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(w&&F.getDerivedStateFromProps==null&&v!==f&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(v,N),t.__v==n.__v||!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(v,a.__s,N)===!1){for(t.__v!=n.__v&&(a.props=v,a.state=a.__s,a.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(y){y&&(y.__=t)}),J=0;J<a._sb.length;J++)a.__h.push(a._sb[J]);a._sb=[],a.__h.length&&i.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(v,a.__s,N),w&&a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(f,$,k)})}if(a.context=N,a.props=v,a.__P=e,a.__e=!1,O=P.__r,j=0,w){for(a.state=a.__s,a.__d=!1,O&&O(t),u=a.render(a.props,a.state,a.context),V=0;V<a._sb.length;V++)a.__h.push(a._sb[V]);a._sb=[]}else do a.__d=!1,O&&O(t),u=a.render(a.props,a.state,a.context),a.state=a.__s;while(a.__d&&++j<25);a.state=a.__s,a.getChildContext!=null&&(o=X(X({},o),a.getChildContext())),w&&!p&&a.getSnapshotBeforeUpdate!=null&&(k=a.getSnapshotBeforeUpdate(f,$)),K=u,u!=null&&u.type===he&&u.key==null&&(K=et(u.props.children)),c=Qe(e,pe(K)?K:[K],t,n,o,r,s,i,c,d,l),a.base=t.__e,t.__u&=-161,a.__h.length&&i.push(a),g&&(a.__E=a.__=null)}catch(y){if(t.__v=null,d||s!=null)if(y.then){for(t.__u|=d?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;s[s.indexOf(c)]=null,t.__e=c}else{for(b=s.length;b--;)Ie(s[b]);xe(t)}else t.__e=n.__e,t.__k=n.__k,y.then||xe(t);P.__e(y,t,n)}else s==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):c=t.__e=jt(n.__e,t,n,o,r,s,i,d,l);return(u=P.diffed)&&u(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 Ye(e,t,n){for(var o=0;o<n.length;o++)Re(n[o],n[++o],n[++o]);P.__c&&P.__c(t,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(s){s.call(r)})}catch(s){P.__e(s,r.__v)}})}function et(e){return typeof e!="object"||e==null||e.__b&&e.__b>0?e:pe(e)?e.map(et):X({},e)}function jt(e,t,n,o,r,s,i,c,d){var l,u,a,p,f,$,k,g=n.props||oe,v=t.props,w=t.type;if(w=="svg"?r="http://www.w3.org/2000/svg":w=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),s!=null){for(l=0;l<s.length;l++)if((f=s[l])&&"setAttribute"in f==!!w&&(w?f.localName==w:f.nodeType==3)){e=f,s[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(v);e=document.createElementNS(r,w,v.is&&v),c&&(P.__m&&P.__m(t,s),c=!1),s=null}if(w==null)g===v||c&&e.data==v||(e.data=v);else{if(s=s&&_e.call(e.childNodes),!c&&s!=null)for(g={},l=0;l<e.attributes.length;l++)g[(f=e.attributes[l]).name]=f.value;for(l in g)if(f=g[l],l!="children"){if(l=="dangerouslySetInnerHTML")a=f;else if(!(l in v)){if(l=="value"&&"defaultValue"in v||l=="checked"&&"defaultChecked"in v)continue;ce(e,l,null,f,r)}}for(l in v)f=v[l],l=="children"?p=f:l=="dangerouslySetInnerHTML"?u=f:l=="value"?$=f:l=="checked"?k=f:c&&typeof f!="function"||g[l]===f||ce(e,l,f,g[l],r);if(u)c||a&&(u.__html==a.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(a&&(e.innerHTML=""),Qe(t.type=="template"?e.content:e,pe(p)?p:[p],t,n,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":r,s,i,s?s[0]:n.__k&&te(n,0),c,d),s!=null)for(l=s.length;l--;)Ie(s[l]);c||(l="value",w=="progress"&&$==null?e.removeAttribute("value"):$!=null&&($!==e[l]||w=="progress"&&!$||w=="option"&&$!=g[l])&&ce(e,l,$,g[l],r),l="checked",k!=null&&k!=e[l]&&ce(e,l,k,g[l],r))}return e}function Re(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(r){P.__e(r,n)}}function tt(e,t,n){var o,r;if(P.unmount&&P.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||Re(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(s){P.__e(s,t)}o.base=o.__P=null}if(o=e.__k)for(r=0;r<o.length;r++)o[r]&&tt(o[r],t,n||typeof e.type!="function");n||Ie(e.__e),e.__c=e.__=e.__e=void 0}function Jt(e,t,n){return this.constructor(e,n)}function me(e,t,n){var o,r,s,i;t==document&&(t=document.documentElement),P.__&&P.__(e,t),r=(o=typeof n=="function")?null:n&&n.__k||t.__k,s=[],i=[],Ae(t,e=(!o&&n||t).__k=fe(he,null,[e]),r||oe,oe,t.namespaceURI,!o&&n?[n]:r?null:t.firstChild?_e.call(t.childNodes):null,s,!o&&n?n:r?r.__e:t.firstChild,o,i),Ye(s,e,i)}_e=Ge.slice,P={__e:function(e,t,n,o){for(var r,s,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(e)),i=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,o||{}),i=r.__d),i)return r.__E=r}catch(c){e=c}throw e}},je=0,Wt=function(e){return e!=null&&e.constructor===void 0},ne.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=X({},this.state),typeof e=="function"&&(e=e(X({},n),this.props)),e&&X(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ke(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ke(this))},ne.prototype.render=he,Y=[],Je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ve=function(e,t){return e.__v.__b-t.__v.__b},de.__r=0,qe=/(PointerCapture)$|Capture$/i,Ee=0,Me=ze(!1),Te=ze(!0),Lt=0;var ot=function(e,t,n,o){var r;t[0]=0;for(var s=1;s<t.length;s++){var i=t[s++],c=t[s]?(t[0]|=i?1:2,n[t[s++]]):t[++s];i===3?o[0]=c:i===4?o[1]=Object.assign(o[1]||{},c):i===5?(o[1]=o[1]||{})[t[++s]]=c:i===6?o[1][t[++s]]+=c+"":i?(r=e.apply(c,ot(e,c,n,["",null])),o.push(r),c[0]?t[0]|=2:(t[s-2]=0,t[s]=r)):o.push(c)}return o},nt=new Map;function st(e){var t=nt.get(this);return t||(t=new Map,nt.set(this,t)),(t=ot(this,t.get(e)||(t.set(e,t=function(n){for(var o,r,s=1,i="",c="",d=[0],l=function(p){s===1&&(p||(i=i.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?d.push(0,p,i):s===3&&(p||i)?(d.push(3,p,i),s=2):s===2&&i==="..."&&p?d.push(4,p,0):s===2&&i&&!p?d.push(5,0,!0,i):s>=5&&((i||!p&&s===5)&&(d.push(s,0,i,r),s=6),p&&(d.push(s,p,0,r),s=6)),i=""},u=0;u<n.length;u++){u&&(s===1&&l(),l(u));for(var a=0;a<n[u].length;a++)o=n[u][a],s===1?o==="<"?(l(),d=[d],s=3):i+=o:s===4?i==="--"&&o===">"?(s=1,i=""):i=o+i[0]:c?o===c?c="":i+=o:o==='"'||o==="'"?c=o:o===">"?(l(),s=1):s&&(o==="="?(s=5,r=i,i=""):o==="/"&&(s<5||n[u][a+1]===">")?(l(),s===3&&(d=d[0]),s=d,(d=d[0]).push(2,0,s),s=0):o===" "||o===" "||o===`
|
|
2
|
+
`||o==="\r"?(l(),s=2):i+=o),s===3&&i==="!--"&&(s=4,d=d[0])}return l(),d}(e)),t),arguments,[])).length>1?t:t[0]}var m=st.bind(fe);var se,U,De,rt,re=0,pt=[],W=P,at=W.__b,it=W.__r,lt=W.diffed,ct=W.__c,ut=W.unmount,dt=W.__;function He(e,t){W.__h&&W.__h(U,e,re||t),re=0;var n=U.__H||(U.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function M(e){return re=1,Vt(ht,e)}function Vt(e,t,n){var o=He(se++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):ht(void 0,t),function(c){var d=o.__N?o.__N[0]:o.__[0],l=o.t(d,c);d!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=U,!U.__f)){var r=function(c,d,l){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(p){return!!p.__c});if(u.every(function(p){return!p.__N}))return!s||s.call(this,c,d,l);var a=o.__c.props!==c;return u.forEach(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(a=!0)}}),s&&s.call(this,c,d,l)||a};U.__f=!0;var s=U.shouldComponentUpdate,i=U.componentWillUpdate;U.componentWillUpdate=function(c,d,l){if(this.__e){var u=s;s=void 0,r(c,d,l),s=u}i&&i.call(this,c,d,l)},U.shouldComponentUpdate=r}return o.__N||o.__}function L(e,t){var n=He(se++,3);!W.__s&&ft(n.__H,t)&&(n.__=e,n.u=t,U.__H.__h.push(n))}function G(e){return re=5,ae(function(){return{current:e}},[])}function ae(e,t){var n=He(se++,7);return ft(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function z(e,t){return re=8,ae(function(){return e},t)}function qt(){for(var e;e=pt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ge),e.__H.__h.forEach(Pe),e.__H.__h=[]}catch(t){e.__H.__h=[],W.__e(t,e.__v)}}W.__b=function(e){U=null,at&&at(e)},W.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),dt&&dt(e,t)},W.__r=function(e){it&&it(e),se=0;var t=(U=e.__c).__H;t&&(De===U?(t.__h=[],U.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(ge),t.__h.forEach(Pe),t.__h=[],se=0)),De=U},W.diffed=function(e){lt&<(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(pt.push(t)!==1&&rt===W.requestAnimationFrame||((rt=W.requestAnimationFrame)||Gt)(qt)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),De=U=null},W.__c=function(e,t){t.some(function(n){try{n.__h.forEach(ge),n.__h=n.__h.filter(function(o){return!o.__||Pe(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],W.__e(o,n.__v)}}),ct&&ct(e,t)},W.unmount=function(e){ut&&ut(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{ge(o)}catch(r){t=r}}),n.__H=void 0,t&&W.__e(t,n.__v))};var _t=typeof requestAnimationFrame=="function";function Gt(e){var t,n=function(){clearTimeout(o),_t&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);_t&&(t=requestAnimationFrame(n))}function ge(e){var t=U,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),U=t}function Pe(e){var t=U;e.__c=e.__(),U=t}function ft(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function ht(e,t){return typeof t=="function"?t(e):t}function Xt(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}function Fe(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function ye(e){return Array.isArray(e)?e.map(ye):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Xt(t),ye(n)])):e}function ve(e){return Array.isArray(e)?e.map(ve):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[Fe(t),ve(n)])):e}function we(){return"msg-"+Date.now()+"-"+Math.random().toString(36).substr(2,9)}function B(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}function mt(e){if(!e)return"";try{let t=new Date(e),o=new Date-t,r=Math.floor(o/6e4),s=Math.floor(o/36e5),i=Math.floor(o/864e5);return r<1?"Just now":r<60?`${r}m ago`:s<24?`${s}h ago`:i<7?`${i}d ago`:t.toLocaleDateString()}catch{return""}}function gt(e,t=null){if(t)return t(e);let n=B(e);return n=n.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),n=n.replace(/__(.+?)__/g,"<strong>$1</strong>"),n=n.replace(/\*(.+?)\*/g,"<em>$1</em>"),n=n.replace(/_(.+?)_/g,"<em>$1</em>"),n=n.replace(/`(.+?)`/g,"<code>$1</code>"),n=n.replace(/\[(.+?)\]\((.+?)\)/g,'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'),n=n.replace(/\n/g,"<br>"),n}function yt(e=""){let t=n=>e?`${n}_${e}`:n;return{get(n){try{return localStorage.getItem(t(n))}catch{return null}},set(n,o){try{let r=t(n);o===null?localStorage.removeItem(r):localStorage.setItem(r,o)}catch{}}}}function vt(e="csrftoken"){let t=document.cookie.split(";");for(let o of t){let[r,s]=o.trim().split("=");if(r===e)return decodeURIComponent(s)}let n=document.querySelector('meta[name="csrf-token"]');return n?n.getAttribute("content"):null}function $e(e){if(e===0)return"0 B";let t=1024,n=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,o)).toFixed(1))+" "+n[o]}function be(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 wt({config:e,debugMode:t,isExpanded:n,isSpeaking:o,messagesCount:r,isLoading:s,currentAgent:i,onClose:c,onToggleExpand:d,onToggleDebug:l,onToggleTTS:u,onClear:a,onToggleSidebar:p}){let{title:f,primaryColor:$,embedded:k,showConversationSidebar:g,showClearButton:v,showDebugButton:w,enableDebugMode:A,showTTSButton:N,showExpandButton:J,enableTTS:O,elevenLabsApiKey:j,ttsProxyUrl:V}=e,K=j||V;return m`
|
|
3
3
|
<div class="cw-header" style=${{backgroundColor:$}}>
|
|
4
4
|
${g&&m`
|
|
5
5
|
<button
|
|
@@ -26,7 +26,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="cw-header-actions">
|
|
29
|
-
${
|
|
29
|
+
${v&&m`
|
|
30
30
|
<button
|
|
31
31
|
class="cw-header-btn"
|
|
32
32
|
onClick=${a}
|
|
@@ -43,15 +43,15 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
43
43
|
>🐛</button>
|
|
44
44
|
`}
|
|
45
45
|
|
|
46
|
-
${
|
|
46
|
+
${N&&K&&m`
|
|
47
47
|
<button
|
|
48
|
-
class="cw-header-btn ${
|
|
48
|
+
class="cw-header-btn ${O?"cw-btn-active":""}"
|
|
49
49
|
onClick=${u}
|
|
50
50
|
title="TTS"
|
|
51
|
-
>${
|
|
51
|
+
>${O?"\u{1F50A}":"\u{1F507}"}</button>
|
|
52
52
|
`}
|
|
53
53
|
|
|
54
|
-
${
|
|
54
|
+
${J&&!k&&m`
|
|
55
55
|
<button
|
|
56
56
|
class="cw-header-btn"
|
|
57
57
|
onClick=${d}
|
|
@@ -79,7 +79,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
79
79
|
onClick=${n}
|
|
80
80
|
title="Show message payload"
|
|
81
81
|
>{ }</button>
|
|
82
|
-
`}function
|
|
82
|
+
`}function $t({onEdit:e,onRetry:t,isLoading:n,position:o,showEdit:r=!0}){return n?null:m`
|
|
83
83
|
<div class="cw-message-actions cw-message-actions-${o||"left"}">
|
|
84
84
|
${r&&m`
|
|
85
85
|
<button
|
|
@@ -105,7 +105,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
105
105
|
</svg>
|
|
106
106
|
</button>
|
|
107
107
|
</div>
|
|
108
|
-
`}function
|
|
108
|
+
`}function Qt({initialContent:e,onSave:t,onCancel:n}){let[o,r]=M(e),s=G(null);return L(()=>{s.current&&(s.current.focus(),s.current.setSelectionRange(o.length,o.length),s.current.style.height="auto",s.current.style.height=s.current.scrollHeight+"px")},[]),m`
|
|
109
109
|
<div class="cw-inline-edit">
|
|
110
110
|
<textarea
|
|
111
111
|
ref=${s}
|
|
@@ -129,7 +129,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
129
129
|
>Save & Send</button>
|
|
130
130
|
</div>
|
|
131
131
|
</div>
|
|
132
|
-
`}function
|
|
132
|
+
`}function bt({msg:e,debugMode:t,markdownParser:n,onEdit:o,onRetry:r,isLoading:s,messageIndex:i}){let[c,d]=M(!1),[l,u]=M(!1),[a,p]=M(!1),f=e.role==="user",$=e.role==="system",k=e.type==="tool_call",g=e.type==="tool_result",v=e.type==="error",w=e.type==="sub_agent_start",A=e.type==="sub_agent_end",N=e.type==="agent_context";if($&&!t)return null;if(w||A||N)return m`
|
|
133
133
|
<div class="cw-agent-context ${w?"cw-agent-delegating":""} ${A?"cw-agent-returned":""}" style="position: relative;">
|
|
134
134
|
<span class="cw-agent-context-icon">${w?"\u{1F517}":A?"\u2713":"\u{1F916}"}</span>
|
|
135
135
|
<span class="cw-agent-context-text">${e.content}</span>
|
|
@@ -138,18 +138,18 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
138
138
|
`}
|
|
139
139
|
${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
|
|
140
140
|
</div>
|
|
141
|
-
`;if(k||g){let C=e.metadata?.arguments||e.metadata?.result,
|
|
141
|
+
`;if(k||g){let C=e.metadata?.arguments||e.metadata?.result,T=_=>{if(typeof _=="string")try{return JSON.stringify(JSON.parse(_),null,2)}catch{return _}return JSON.stringify(_,null,2)};return m`
|
|
142
142
|
<div class="cw-tool-message ${g?"cw-tool-result":"cw-tool-call"}" style="position: relative;">
|
|
143
143
|
<span class="cw-tool-label" onClick=${()=>C&&d(!c)}>
|
|
144
144
|
${e.content}
|
|
145
145
|
${C&&m`<span class="cw-tool-expand">${c?"\u25BC":"\u25B6"}</span>`}
|
|
146
146
|
</span>
|
|
147
147
|
${c&&C&&m`
|
|
148
|
-
<pre class="cw-tool-details">${B(
|
|
148
|
+
<pre class="cw-tool-details">${B(T(k?e.metadata.arguments:e.metadata.result))}</pre>
|
|
149
149
|
`}
|
|
150
150
|
${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
|
|
151
151
|
</div>
|
|
152
|
-
`}let
|
|
152
|
+
`}let J=["cw-message",f&&"cw-message-user",v&&"cw-message-error"].filter(Boolean).join(" "),O=`cw-message-row ${f?"cw-message-row-user":""}`,j=e.role==="assistant"?gt(e.content,n):B(e.content),V=e.files&&e.files.length>0,K=()=>V?m`
|
|
153
153
|
<div class="cw-message-attachments">
|
|
154
154
|
${e.files.map(C=>C.type&&C.type.startsWith("image/")?m`
|
|
155
155
|
<a class="cw-attachment-thumbnail" href=${C.url} target="_blank" title=${C.name}>
|
|
@@ -157,49 +157,52 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
157
157
|
</a>
|
|
158
158
|
`:m`
|
|
159
159
|
<a class="cw-attachment-file" href=${C.url} target="_blank" title=${C.name}>
|
|
160
|
-
<span class="cw-attachment-icon">${
|
|
160
|
+
<span class="cw-attachment-icon">${be(C.type)}</span>
|
|
161
161
|
<span class="cw-attachment-info">
|
|
162
162
|
<span class="cw-attachment-name">${C.name}</span>
|
|
163
|
-
<span class="cw-attachment-size">${
|
|
163
|
+
<span class="cw-attachment-size">${$e(C.size)}</span>
|
|
164
164
|
</span>
|
|
165
165
|
</a>
|
|
166
166
|
`)}
|
|
167
167
|
</div>
|
|
168
|
-
`:null,b=C=>{p(!1),o&&o(i,C)},
|
|
169
|
-
<div class=${
|
|
168
|
+
`:null,b=C=>{p(!1),o&&o(i,C)},F=()=>{r&&r(i)};if(f&&a)return m`
|
|
169
|
+
<div class=${O} style="position: relative;">
|
|
170
170
|
${K()}
|
|
171
|
-
<${
|
|
171
|
+
<${Qt}
|
|
172
172
|
initialContent=${e.content}
|
|
173
173
|
onSave=${b}
|
|
174
174
|
onCancel=${()=>p(!1)}
|
|
175
175
|
/>
|
|
176
176
|
</div>
|
|
177
|
-
`;let
|
|
178
|
-
<div class="${
|
|
177
|
+
`;let y=f&&o&&r,H=e.role==="assistant"&&r&&!s;return m`
|
|
178
|
+
<div class="${O} ${y||H?"cw-message-row-with-actions":""}">
|
|
179
179
|
${K()}
|
|
180
|
-
|
|
181
|
-
<div class
|
|
182
|
-
|
|
183
|
-
<${wt}
|
|
180
|
+
${y&&m`
|
|
181
|
+
<div class="cw-user-actions-wrapper">
|
|
182
|
+
<${$t}
|
|
184
183
|
onEdit=${()=>p(!0)}
|
|
185
|
-
onRetry=${
|
|
184
|
+
onRetry=${F}
|
|
186
185
|
isLoading=${s}
|
|
187
186
|
position="left"
|
|
188
187
|
showEdit=${!0}
|
|
189
188
|
/>
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
189
|
+
<div class=${J} dangerouslySetInnerHTML=${{__html:j}} />
|
|
190
|
+
</div>
|
|
191
|
+
`}
|
|
192
|
+
${!y&&m`
|
|
193
|
+
<div class=${J} dangerouslySetInnerHTML=${{__html:j}} />
|
|
194
|
+
`}
|
|
195
|
+
${H&&m`
|
|
196
|
+
<${$t}
|
|
197
|
+
onRetry=${F}
|
|
198
|
+
isLoading=${s}
|
|
199
|
+
position="right"
|
|
200
|
+
showEdit=${!1}
|
|
201
|
+
/>
|
|
202
|
+
`}
|
|
200
203
|
${t&&m`<${Ne} msg=${e} show=${l} onToggle=${()=>u(!l)} />`}
|
|
201
204
|
</div>
|
|
202
|
-
`}function
|
|
205
|
+
`}function kt({messages:e,isLoading:t,hasMoreMessages:n,loadingMoreMessages:o,onLoadMore:r,onEditMessage:s,onRetryMessage:i,debugMode:c,markdownParser:d,emptyStateTitle:l,emptyStateMessage:u}){let a=G(null),p=G(!0),f=k=>{let g=k.target,v=g.scrollHeight-g.scrollTop-g.clientHeight<100;if(p.current=v,g.scrollTop<50&&n&&!o){let w=g.scrollHeight;r().then(()=>{let A=g.scrollHeight;g.scrollTop=A-w+g.scrollTop})}};L(()=>{let k=a.current;k&&p.current&&requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight})},[e,t]),L(()=>{let k=a.current;k&&e.length<=2&&(p.current=!0,requestAnimationFrame(()=>{k.scrollTop=k.scrollHeight}))},[e.length]);let $=e.length===0;return m`
|
|
203
206
|
<div class="cw-messages" ref=${a} onScroll=${f}>
|
|
204
207
|
${$&&m`
|
|
205
208
|
<div class="cw-empty-state">
|
|
@@ -218,7 +221,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
218
221
|
`}
|
|
219
222
|
|
|
220
223
|
${e.map((k,g)=>m`
|
|
221
|
-
<${
|
|
224
|
+
<${bt}
|
|
222
225
|
key=${k.id}
|
|
223
226
|
msg=${k}
|
|
224
227
|
messageIndex=${g}
|
|
@@ -239,7 +242,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
239
242
|
</div>
|
|
240
243
|
`}
|
|
241
244
|
</div>
|
|
242
|
-
`}var Oe=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function
|
|
245
|
+
`}var Oe=typeof window<"u"?window.SpeechRecognition||window.webkitSpeechRecognition:null;function Ct({onSend:e,onCancel:t,isLoading:n,placeholder:o,primaryColor:r,enableVoice:s=!0,enableFiles:i=!0}){let[c,d]=M(""),[l,u]=M([]),[a,p]=M(!1),[f,$]=M(!1),[k]=M(()=>!!Oe),g=G(null),v=G(null),w=G(null),A=G(!1);L(()=>{!n&&g.current&&g.current.focus()},[n]),L(()=>{g.current&&(g.current.style.height="auto",g.current.style.height=Math.min(g.current.scrollHeight,150)+"px")},[c]),L(()=>()=>{A.current=!1,w.current&&w.current.abort()},[]);let N=_=>{_.preventDefault(),(c.trim()||l.length>0)&&!n&&(e(c,l),d(""),u([]),g.current&&(g.current.style.height="auto"),v.current&&(v.current.value=""))},J=_=>{let S=Array.from(_.target.files||[]);S.length>0&&u(I=>[...I,...S])},O=_=>{u(S=>S.filter((I,h)=>h!==_))},j=_=>{_.preventDefault(),v.current&&!n&&v.current.click()},V=_=>{_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),N(_))},K=_=>{n&&t&&(_.preventDefault(),t())},b=()=>{if(!Oe||n)return;A.current=!0;let _=new Oe;_.continuous=!0,_.interimResults=!0,_.lang=navigator.language||"en-US";let S=c,I="";_.onstart=()=>{$(!0)},_.onresult=h=>{I="";for(let D=h.resultIndex;D<h.results.length;D++){let q=h.results[D][0].transcript;h.results[D].isFinal?S+=(S?" ":"")+q:I+=q}d(S+(I?" "+I:""))},_.onerror=h=>{if(h.error==="no-speech"||h.error==="aborted"){console.log("[ChatWidget] Speech recognition:",h.error,"- continuing...");return}console.warn("[ChatWidget] Speech recognition error:",h.error),A.current=!1,$(!1),d(S||c)},_.onend=()=>{if(A.current){console.log("[ChatWidget] Recognition paused, restarting...");try{_.start();return}catch(h){console.warn("[ChatWidget] Could not restart recognition:",h)}}$(!1),S&&d(S),w.current=null},w.current=_,_.start()},F=()=>{A.current=!1,w.current&&w.current.stop()},y=_=>{_.preventDefault(),f?F():b()},E=m`
|
|
243
246
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor">
|
|
244
247
|
<rect x="2" y="2" width="10" height="10" rx="1" />
|
|
245
248
|
</svg>
|
|
@@ -250,30 +253,30 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
250
253
|
<line x1="12" y1="19" x2="12" y2="23"></line>
|
|
251
254
|
<line x1="8" y1="23" x2="16" y2="23"></line>
|
|
252
255
|
</svg>
|
|
253
|
-
`,
|
|
256
|
+
`,x=m`
|
|
254
257
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
255
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>
|
|
256
259
|
</svg>
|
|
257
|
-
`,C=s&&k,
|
|
258
|
-
<form class="cw-input-form" onSubmit=${
|
|
260
|
+
`,C=s&&k,T=i;return m`
|
|
261
|
+
<form class="cw-input-form" onSubmit=${N}>
|
|
259
262
|
<input
|
|
260
263
|
type="file"
|
|
261
|
-
ref=${
|
|
264
|
+
ref=${v}
|
|
262
265
|
style="display: none"
|
|
263
266
|
multiple
|
|
264
|
-
onChange=${
|
|
267
|
+
onChange=${J}
|
|
265
268
|
/>
|
|
266
269
|
${l.length>0&&m`
|
|
267
270
|
<div class="cw-file-chips">
|
|
268
|
-
${l.map((_,
|
|
269
|
-
<div class="cw-file-chip" key=${
|
|
270
|
-
<span class="cw-file-chip-icon">${
|
|
271
|
+
${l.map((_,S)=>m`
|
|
272
|
+
<div class="cw-file-chip" key=${S}>
|
|
273
|
+
<span class="cw-file-chip-icon">${be(_.type)}</span>
|
|
271
274
|
<span class="cw-file-chip-name" title=${_.name}>${_.name.length>20?_.name.substring(0,17)+"...":_.name}</span>
|
|
272
|
-
<span class="cw-file-chip-size">(${
|
|
275
|
+
<span class="cw-file-chip-size">(${$e(_.size)})</span>
|
|
273
276
|
<button
|
|
274
277
|
type="button"
|
|
275
278
|
class="cw-file-chip-remove"
|
|
276
|
-
onClick=${()=>
|
|
279
|
+
onClick=${()=>O(S)}
|
|
277
280
|
title="Remove file"
|
|
278
281
|
>×</button>
|
|
279
282
|
</div>
|
|
@@ -286,11 +289,11 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
286
289
|
placeholder=${B(o)}
|
|
287
290
|
value=${c}
|
|
288
291
|
onInput=${_=>d(_.target.value)}
|
|
289
|
-
onKeyDown=${
|
|
292
|
+
onKeyDown=${V}
|
|
290
293
|
disabled=${n}
|
|
291
294
|
rows="1"
|
|
292
295
|
/>
|
|
293
|
-
${
|
|
296
|
+
${T&&m`
|
|
294
297
|
<button
|
|
295
298
|
type="button"
|
|
296
299
|
class="cw-attach-btn"
|
|
@@ -298,14 +301,14 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
298
301
|
disabled=${n}
|
|
299
302
|
title="Attach files"
|
|
300
303
|
>
|
|
301
|
-
${
|
|
304
|
+
${x}
|
|
302
305
|
</button>
|
|
303
306
|
`}
|
|
304
307
|
${C&&m`
|
|
305
308
|
<button
|
|
306
309
|
type="button"
|
|
307
310
|
class=${`cw-voice-btn ${f?"cw-voice-btn-recording":""}`}
|
|
308
|
-
onClick=${
|
|
311
|
+
onClick=${y}
|
|
309
312
|
disabled=${n}
|
|
310
313
|
title=${f?"Stop recording":"Voice input"}
|
|
311
314
|
>
|
|
@@ -321,10 +324,10 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
321
324
|
onMouseLeave=${()=>p(!1)}
|
|
322
325
|
title=${n?"Stop":"Send"}
|
|
323
326
|
>
|
|
324
|
-
${n?a?
|
|
327
|
+
${n?a?E:m`<span class="cw-spinner"></span>`:"\u27A4"}
|
|
325
328
|
</button>
|
|
326
329
|
</form>
|
|
327
|
-
`}function
|
|
330
|
+
`}function St({isOpen:e,conversations:t,conversationsLoading:n,currentConversationId:o,onClose:r,onNewConversation:s,onSwitchConversation:i}){return m`
|
|
328
331
|
<div class="cw-sidebar ${e?"cw-sidebar-open":""}">
|
|
329
332
|
<div class="cw-sidebar-header">
|
|
330
333
|
<span>Conversations</span>
|
|
@@ -353,7 +356,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
353
356
|
onClick=${()=>i(c.id)}
|
|
354
357
|
>
|
|
355
358
|
<div class="cw-conversation-title">${B(c.title||"Untitled")}</div>
|
|
356
|
-
<div class="cw-conversation-date">${
|
|
359
|
+
<div class="cw-conversation-date">${mt(c.updatedAt||c.createdAt)}</div>
|
|
357
360
|
</div>
|
|
358
361
|
`)}
|
|
359
362
|
</div>
|
|
@@ -363,7 +366,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
363
366
|
class="cw-sidebar-overlay ${e?"cw-sidebar-overlay-visible":""}"
|
|
364
367
|
onClick=${r}
|
|
365
368
|
/>
|
|
366
|
-
`}function
|
|
369
|
+
`}function Mt({availableModels:e,selectedModel:t,onSelectModel:n,disabled:o}){let[r,s]=M(!1);if(!e||e.length===0)return null;let c=e.find(u=>u.id===t)?.name||"Select Model",d=()=>{o||s(!r)},l=u=>{n(u),s(!1)};return m`
|
|
367
370
|
<div class="cw-model-selector">
|
|
368
371
|
<button
|
|
369
372
|
class="cw-model-btn"
|
|
@@ -394,7 +397,7 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
394
397
|
</div>
|
|
395
398
|
`}
|
|
396
399
|
</div>
|
|
397
|
-
`}function Mt(e,t,n){let[o,r]=M([]),[s,i]=M(!1),[c,d]=M(null),[l,u]=M(()=>n?.get(e.conversationIdKey)||null),[a,p]=M(!1),[f,$]=M(!1),[k,g]=M(0),y=G(null),w=G(null);L(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let A=z(async(v,I,H)=>{y.current&&y.current.close();let E=e.apiPaths.runEvents.replace("{runId}",v),C=`${e.backendUrl}${E}`;I&&(C+=`?anonymous_token=${encodeURIComponent(I)}`);let x=new EventSource(C);y.current=x;let _="";x.addEventListener("assistant.message",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let R=h.payload.content;R&&(_+=R,r(q=>{let X=q[q.length-1];return X?.role==="assistant"&&X.id.startsWith("assistant-stream-")?[...q.slice(0,-1),{...X,content:_}]:[...q,{id:"assistant-stream-"+Date.now(),role:"assistant",content:_,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("tool.call",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.call",h.payload),r(R=>[...R,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${h.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:h.payload.name,arguments:h.payload.arguments,toolCallId:h.payload.id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("tool.result",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("tool.result",h.payload);let R=h.payload.result,q=R?.error;r(X=>[...X,{id:"tool-result-"+Date.now(),role:"system",content:q?`\u274C ${R.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:R,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("custom",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("custom",h.payload),h.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(h.payload),h.payload?.type==="agent_context"&&r(R=>[...R,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${h.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:h.payload.agent_key,agentName:h.payload.agent_name,action:h.payload.action}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("sub_agent.start",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),r(R=>[...R,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${h.payload.agent_name||h.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name,invocationMode:h.payload.invocation_mode}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),x.addEventListener("sub_agent.end",S=>{try{let h=JSON.parse(S.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),r(R=>[...R,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${h.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}});let T=S=>{try{let h=JSON.parse(S.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let R=h.payload.error||"Agent run failed";d(R),r(q=>[...q,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${R}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}i(!1),x.close(),y.current=null,_&&H&&H(_)};x.addEventListener("run.succeeded",T),x.addEventListener("run.failed",T),x.addEventListener("run.cancelled",T),x.addEventListener("run.timed_out",T),x.onerror=()=>{i(!1),x.close(),y.current=null}},[e]),O=z(async(v,I={},H={})=>{if(!v.trim()||s)return;let E=[],C={};typeof I=="function"?C={onAssistantMessage:I}:Array.isArray(I)?(E=I,C=H):C=I||{};let{model:x,onAssistantMessage:_}=C;i(!0),d(null);let T={id:ve(),role:"user",content:v.trim(),timestamp:new Date,type:"message",files:E.length>0?E.map(S=>({name:S.name,size:S.size,type:S.type})):void 0};r(S=>[...S,T]);try{let S=await t.getOrCreateSession(),h;if(E.length>0){let ee=e.apiCaseStyle!=="camel",Ue=ie=>ee?He(ie):ie,Z=new FormData;Z.append(Ue("agentKey"),e.agentKey),l&&Z.append(Ue("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:v.trim()}])),Z.append("metadata",JSON.stringify(ee?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),x&&Z.append("model",x),E.forEach(ie=>{Z.append("files",ie)}),h=t.getFetchOptions({method:"POST",body:Z},S)}else{let ee=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:v.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...x&&{model:x}});h=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},S)}let R=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,h);if(!R.ok){let ee=await R.json().catch(()=>({}));throw new Error(ee.error||`HTTP ${R.status}`)}let q=await R.json(),X=t.transformResponse(q);w.current=X.id,!l&&X.conversationId&&u(X.conversationId),await A(X.id,S,_)}catch(S){d(S.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,A]),V=z(async()=>{let v=w.current;if(!(!v||!s))try{let I=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",v):`${e.apiPaths.runs}${v}/cancel/`;(await fetch(`${e.backendUrl}${I}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(y.current&&(y.current.close(),y.current=null),i(!1),w.current=null,r(E=>[...E,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(I){console.error("[ChatWidget] Failed to cancel run:",I)}},[e,t,s]),F=z(()=>{r([]),u(null),d(null),p(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),j=v=>{let I={id:ve(),role:v.role,timestamp:v.timestamp?new Date(v.timestamp):new Date};if(v.role==="tool")return{...I,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:v.content,toolCallId:v.toolCallId}};if(v.role==="assistant"&&v.toolCalls&&v.toolCalls.length>0)return v.toolCalls.map(E=>({id:ve(),role:"assistant",content:`\u{1F527} ${E.function?.name||E.name||"tool"}`,timestamp:I.timestamp,type:"tool_call",metadata:{toolName:E.function?.name||E.name,arguments:E.function?.arguments||E.arguments,toolCallId:E.id}}));let H=typeof v.content=="string"?v.content:JSON.stringify(v.content);return v.role==="assistant"&&!H?.trim()?null:{...I,content:H,type:"message"}},J=z(async v=>{i(!0),r([]),u(v);try{let I=await t.getOrCreateSession(),E=`${e.backendUrl}${e.apiPaths.conversations}${v}/?limit=10&offset=0`,C=await fetch(E,t.getFetchOptions({method:"GET"},I));if(C.ok){let x=await C.json(),_=t.transformResponse(x);_.messages&&r(_.messages.flatMap(j).filter(Boolean)),p(_.hasMore||!1),g(_.messages?.length||0)}else C.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(I){console.error("[ChatWidget] Failed to load conversation:",I)}finally{i(!1)}},[e,t,n]),K=z(async()=>{if(!(!l||f||!a)){$(!0);try{let v=await t.getOrCreateSession(),H=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${k}`,E=await fetch(H,t.getFetchOptions({method:"GET"},v));if(E.ok){let C=await E.json(),x=t.transformResponse(C);if(x.messages?.length>0){let _=x.messages.flatMap(j).filter(Boolean);r(T=>[..._,...T]),g(T=>T+x.messages.length),p(x.hasMore||!1)}else p(!1)}}catch(v){console.error("[ChatWidget] Failed to load more messages:",v)}finally{$(!1)}}},[e,t,l,k,f,a]),b=z(async(v,I,H={})=>{if(s)return;let E=o[v];if(!E||E.role!=="user")return;let C=o.slice(0,v);r(C),await O(I,H)},[o,s,O]),N=z(async(v,I={})=>{if(s)return;let H=o[v];if(!H)return;let E=v,C=H;if(H.role==="assistant"){for(let _=v-1;_>=0;_--)if(o[_].role==="user"){E=_,C=o[_];break}if(C.role!=="user")return}else if(H.role!=="user")return;let x=o.slice(0,E);r(x),await O(C.content,I)},[o,s,O]);return L(()=>()=>{y.current&&y.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:f,sendMessage:O,cancelRun:V,clearMessages:F,loadConversation:J,loadMoreMessages:K,setConversationId:u,editMessage:b,retryMessage:N}}function Tt(e,t,n){let[o,r]=M([]),[s,i]=M(null),[c,d]=M(null),[l,u]=M(!1);L(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let $=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if($.ok){let k=await $.json(),g=k.models||[];r(g),d(k.default);let y=n?.get(e.modelKey);y&&g.some(w=>w.id===y)?i(y):i(k.default)}}catch($){console.warn("[ChatWidget] Failed to load models:",$)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=z(f=>{i(f),n?.set(e.modelKey,f)},[e.modelKey,n]),p=z(()=>o.find(f=>f.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:p}}function xt(e,t,n){let o=l=>!l||typeof l!="object"||e.apiCaseStyle==="camel"?l:ye(l),r=l=>!l||typeof l!="object"||e.apiCaseStyle==="snake"?l:ge(l),s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(l=null)=>{let u=s(),a={},p=l||e.authToken||t().authToken;if(u==="token"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";a[f]=$?`${$} ${p}`:p}else if(u==="jwt"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";a[f]=$?`${$} ${p}`:p}else if(u==="anonymous"&&p){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";a[f]=p}if(u==="session"){let f=yt(e.csrfCookieName);f&&(a["X-CSRFToken"]=f)}return a};return{getAuthStrategy:s,getAuthHeaders:i,getFetchOptions:(l={},u=null)=>{let a=s(),p={...l};return p.headers={...p.headers,...i(u)},a==="session"&&(p.credentials="include"),p},getOrCreateSession:async()=>{let l=s(),u=t();if(l!=="anonymous")return e.authToken||u.authToken;if(u.authToken)return u.authToken;let a=e.anonymousTokenKey||e.sessionTokenKey,p=u.storage?.get(a);if(p)return n(f=>({...f,authToken:p})),p;try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let k=await $.json();return n(g=>({...g,authToken:k.token})),u.storage?.set(a,k.token),k.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},transformRequest:o,transformResponse:r}}function Et({config:e,onStateChange:t,markdownParser:n,apiRef:o}){let[r,s]=M(e.embedded||e.forceOpen===!0),[i,c]=M(!1),[d,l]=M(!1),[u,a]=M(!1),[p,f]=M([]),[$,k]=M(!1),[g,y]=M(e.enableTTS),[w,A]=M(!1),[O,V]=M(null);L(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let F=ae(()=>gt(e.containerId),[e.containerId]),[j,J]=M(e.authToken||null),K=ae(()=>xt(e,()=>({authToken:j,storage:F}),S=>{let h=S({authToken:j,storage:F});h.authToken!==j&&J(h.authToken)}),[e,j,F]),b=Mt(e,K,F),N=Tt(e,K,F);L(()=>{for(let _=b.messages.length-1;_>=0;_--){let T=b.messages[_];if(T.type==="sub_agent_start"){V({key:T.metadata?.subAgentKey,name:T.metadata?.agentName});return}if(T.type==="sub_agent_end"){V(null);return}}},[b.messages]),L(()=>{let _=F.get(e.conversationIdKey);_&&b.loadConversation(_)},[]),L(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:b.messages,conversationId:b.conversationId,isLoading:b.isLoading,error:b.error})},[r,i,d,b.messages,b.conversationId,b.isLoading,b.error]);let v=z(async()=>{if(e.showConversationSidebar){k(!0);try{let _=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,T=await fetch(_,K.getFetchOptions({method:"GET"}));if(T.ok){let S=await T.json();f(S.results||S)}}catch(_){console.error("[ChatWidget] Failed to load conversations:",_),f([])}finally{k(!1)}}},[e,K]),I=z(()=>{let _=!u;a(_),_&&v()},[u,v]),H=z(_=>{_!==b.conversationId&&b.loadConversation(_),a(!1)},[b]),E=z(()=>{b.clearMessages(),a(!1)},[b]),C=z(_=>{b.sendMessage(_,{model:N.selectedModel,onAssistantMessage:T=>{}})},[b,g,N.selectedModel]);if(L(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:_=>C(_),clearMessages:()=>b.clearMessages(),toggleTTS:()=>y(_=>!_),stopSpeech:()=>A(!1),setAuth:_=>{_.token!==void 0&&J(_.token)},clearAuth:()=>J(null)})},[b,o,C]),!e.embedded&&!r)return m`
|
|
400
|
+
`}function Tt(e,t,n){let[o,r]=M([]),[s,i]=M(!1),[c,d]=M(null),[l,u]=M(()=>n?.get(e.conversationIdKey)||null),[a,p]=M(!1),[f,$]=M(!1),[k,g]=M(0),v=G(null),w=G(null);L(()=>{l&&n?.set(e.conversationIdKey,l)},[l,e.conversationIdKey,n]);let A=z(async(y,E,H)=>{v.current&&v.current.close();let x=e.apiPaths.runEvents.replace("{runId}",y),C=`${e.backendUrl}${x}`;E&&(C+=`?anonymous_token=${encodeURIComponent(E)}`);let T=new EventSource(C);v.current=T;let _="";T.addEventListener("assistant.message",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("assistant.message",h.payload);let D=h.payload.content;D&&(_+=D,r(q=>{let Q=q[q.length-1];return Q?.role==="assistant"&&Q.id.startsWith("assistant-stream-")?[...q.slice(0,-1),{...Q,content:_}]:[...q,{id:"assistant-stream-"+Date.now(),role:"assistant",content:_,timestamp:new Date,type:"message"}]}))}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("tool.call",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("tool.call",h.payload),r(D=>[...D,{id:"tool-call-"+Date.now(),role:"assistant",content:`\u{1F527} ${h.payload.name}`,timestamp:new Date,type:"tool_call",metadata:{toolName:h.payload.name,arguments:h.payload.arguments,toolCallId:h.payload.id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("tool.result",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("tool.result",h.payload);let D=h.payload.result,q=D?.error;r(Q=>[...Q,{id:"tool-result-"+Date.now(),role:"system",content:q?`\u274C ${D.error}`:"\u2713 Done",timestamp:new Date,type:"tool_result",metadata:{toolName:h.payload.name,result:D,toolCallId:h.payload.tool_call_id}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("custom",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("custom",h.payload),h.payload?.type==="ui_control"&&e.onUIControl&&e.onUIControl(h.payload),h.payload?.type==="agent_context"&&r(D=>[...D,{id:"agent-context-"+Date.now(),role:"system",content:`\u{1F517} ${h.payload.agent_name||"Sub-agent"} is now handling this request`,timestamp:new Date,type:"agent_context",metadata:{agentKey:h.payload.agent_key,agentName:h.payload.agent_name,action:h.payload.action}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("sub_agent.start",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("sub_agent.start",h.payload),r(D=>[...D,{id:"sub-agent-start-"+Date.now(),role:"system",content:`\u{1F517} Delegating to ${h.payload.agent_name||h.payload.sub_agent_key||"sub-agent"}...`,timestamp:new Date,type:"sub_agent_start",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name,invocationMode:h.payload.invocation_mode}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}}),T.addEventListener("sub_agent.end",I=>{try{let h=JSON.parse(I.data);e.onEvent&&e.onEvent("sub_agent.end",h.payload),r(D=>[...D,{id:"sub-agent-end-"+Date.now(),role:"system",content:`\u2713 ${h.payload.agent_name||"Sub-agent"} completed`,timestamp:new Date,type:"sub_agent_end",metadata:{subAgentKey:h.payload.sub_agent_key,agentName:h.payload.agent_name}}])}catch(h){console.error("[ChatWidget] Parse error:",h)}});let S=I=>{try{let h=JSON.parse(I.data);if(e.onEvent&&e.onEvent(h.type,h.payload),h.type==="run.failed"){let D=h.payload.error||"Agent run failed";d(D),r(q=>[...q,{id:"error-"+Date.now(),role:"system",content:`\u274C Error: ${D}`,timestamp:new Date,type:"error"}])}}catch(h){console.error("[ChatWidget] Parse error:",h)}i(!1),T.close(),v.current=null,_&&H&&H(_)};T.addEventListener("run.succeeded",S),T.addEventListener("run.failed",S),T.addEventListener("run.cancelled",S),T.addEventListener("run.timed_out",S),T.onerror=()=>{i(!1),T.close(),v.current=null}},[e]),N=z(async(y,E={},H={})=>{if(!y.trim()||s)return;let x=[],C={};typeof E=="function"?C={onAssistantMessage:E}:Array.isArray(E)?(x=E,C=H):C=E||{};let{model:T,onAssistantMessage:_,supersedeFromMessageIndex:S}=C;i(!0),d(null);let I={id:we(),role:"user",content:y.trim(),timestamp:new Date,type:"message",files:x.length>0?x.map(h=>({name:h.name,size:h.size,type:h.type})):void 0};r(h=>[...h,I]);try{let h=await t.getOrCreateSession(),D;if(x.length>0){let ee=e.apiCaseStyle!=="camel",We=le=>ee?Fe(le):le,Z=new FormData;Z.append(We("agentKey"),e.agentKey),l&&Z.append(We("conversationId"),l),Z.append("messages",JSON.stringify([{role:"user",content:y.trim()}])),Z.append("metadata",JSON.stringify(ee?{...e.metadata,journey_type:e.defaultJourneyType}:{...e.metadata,journeyType:e.defaultJourneyType})),T&&Z.append("model",T),x.forEach(le=>{Z.append("files",le)}),D=t.getFetchOptions({method:"POST",body:Z},h)}else{let ee=t.transformRequest({agentKey:e.agentKey,conversationId:l,messages:[{role:"user",content:y.trim()}],metadata:{...e.metadata,journeyType:e.defaultJourneyType},...T&&{model:T},...S!==void 0&&{supersedeFromMessageIndex:S}});D=t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)},h)}let q=await fetch(`${e.backendUrl}${e.apiPaths.runs}`,D);if(!q.ok){let ee=await q.json().catch(()=>({}));throw new Error(ee.error||`HTTP ${q.status}`)}let Q=await q.json(),ie=t.transformResponse(Q);w.current=ie.id,!l&&ie.conversationId&&u(ie.conversationId),await A(ie.id,h,_)}catch(h){d(h.message||"Failed to send message"),i(!1)}finally{w.current=null}},[e,t,l,s,A]),J=z(async()=>{let y=w.current;if(!(!y||!s))try{let E=e.apiPaths.cancelRun?e.apiPaths.cancelRun.replace("{runId}",y):`${e.apiPaths.runs}${y}/cancel/`;(await fetch(`${e.backendUrl}${E}`,t.getFetchOptions({method:"POST",headers:{"Content-Type":"application/json"}}))).ok&&(v.current&&(v.current.close(),v.current=null),i(!1),w.current=null,r(x=>[...x,{id:"cancelled-"+Date.now(),role:"system",content:"\u23F9 Run cancelled",timestamp:new Date,type:"cancelled"}]))}catch(E){console.error("[ChatWidget] Failed to cancel run:",E)}},[e,t,s]),O=z(()=>{r([]),u(null),d(null),p(!1),g(0),n?.set(e.conversationIdKey,null)},[e.conversationIdKey,n]),j=y=>{let E={id:we(),role:y.role,timestamp:y.timestamp?new Date(y.timestamp):new Date};if(y.role==="tool")return{...E,role:"system",content:"\u2713 Done",type:"tool_result",metadata:{result:y.content,toolCallId:y.toolCallId}};if(y.role==="assistant"&&y.toolCalls&&y.toolCalls.length>0)return y.toolCalls.map(x=>({id:we(),role:"assistant",content:`\u{1F527} ${x.function?.name||x.name||"tool"}`,timestamp:E.timestamp,type:"tool_call",metadata:{toolName:x.function?.name||x.name,arguments:x.function?.arguments||x.arguments,toolCallId:x.id}}));let H=typeof y.content=="string"?y.content:JSON.stringify(y.content);return y.role==="assistant"&&!H?.trim()?null:{...E,content:H,type:"message"}},V=z(async y=>{i(!0),r([]),u(y);try{let E=await t.getOrCreateSession(),x=`${e.backendUrl}${e.apiPaths.conversations}${y}/?limit=10&offset=0`,C=await fetch(x,t.getFetchOptions({method:"GET"},E));if(C.ok){let T=await C.json(),_=t.transformResponse(T);_.messages&&r(_.messages.flatMap(j).filter(Boolean)),p(_.hasMore||!1),g(_.messages?.length||0)}else C.status===404&&(u(null),n?.set(e.conversationIdKey,null))}catch(E){console.error("[ChatWidget] Failed to load conversation:",E)}finally{i(!1)}},[e,t,n]),K=z(async()=>{if(!(!l||f||!a)){$(!0);try{let y=await t.getOrCreateSession(),H=`${e.backendUrl}${e.apiPaths.conversations}${l}/?limit=10&offset=${k}`,x=await fetch(H,t.getFetchOptions({method:"GET"},y));if(x.ok){let C=await x.json(),T=t.transformResponse(C);if(T.messages?.length>0){let _=T.messages.flatMap(j).filter(Boolean);r(S=>[..._,...S]),g(S=>S+T.messages.length),p(T.hasMore||!1)}else p(!1)}}catch(y){console.error("[ChatWidget] Failed to load more messages:",y)}finally{$(!1)}}},[e,t,l,k,f,a]),b=z(async(y,E,H={})=>{if(s)return;let x=o[y];if(!x||x.role!=="user")return;let C=o.slice(0,y);r(C),await N(E,{...H,supersedeFromMessageIndex:y})},[o,s,N]),F=z(async(y,E={})=>{if(s)return;let H=o[y];if(!H)return;let x=y,C=H;if(H.role==="assistant"){for(let _=y-1;_>=0;_--)if(o[_].role==="user"){x=_,C=o[_];break}if(C.role!=="user")return}else if(H.role!=="user")return;let T=o.slice(0,x);r(T),await N(C.content,{...E,supersedeFromMessageIndex:x})},[o,s,N]);return L(()=>()=>{v.current&&v.current.close()},[]),{messages:o,isLoading:s,error:c,conversationId:l,hasMoreMessages:a,loadingMoreMessages:f,sendMessage:N,cancelRun:J,clearMessages:O,loadConversation:V,loadMoreMessages:K,setConversationId:u,editMessage:b,retryMessage:F}}function xt(e,t,n){let[o,r]=M([]),[s,i]=M(null),[c,d]=M(null),[l,u]=M(!1);L(()=>{(async()=>{if(e.showModelSelector){u(!0);try{let $=await fetch(`${e.backendUrl}${e.apiPaths.models}`,t.getFetchOptions({method:"GET"}));if($.ok){let k=await $.json(),g=k.models||[];r(g),d(k.default);let v=n?.get(e.modelKey);v&&g.some(w=>w.id===v)?i(v):i(k.default)}}catch($){console.warn("[ChatWidget] Failed to load models:",$)}finally{u(!1)}}})()},[e.backendUrl,e.apiPaths.models,e.showModelSelector,e.modelKey,t,n]);let a=z(f=>{i(f),n?.set(e.modelKey,f)},[e.modelKey,n]),p=z(()=>o.find(f=>f.id===s)||null,[o,s]);return{availableModels:o,selectedModel:s,defaultModel:c,isLoading:l,selectModel:a,getSelectedModelInfo:p}}function Et(e,t,n){let o=l=>!l||typeof l!="object"||e.apiCaseStyle==="camel"?l:ve(l),r=l=>!l||typeof l!="object"||e.apiCaseStyle==="snake"?l:ye(l),s=()=>e.authStrategy?e.authStrategy:e.authToken?"token":e.apiPaths.anonymousSession||e.anonymousSessionEndpoint?"anonymous":"none",i=(l=null)=>{let u=s(),a={},p=l||e.authToken||t().authToken;if(u==="token"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Token";a[f]=$?`${$} ${p}`:p}else if(u==="jwt"&&p){let f=e.authHeader||"Authorization",$=e.authTokenPrefix!==void 0?e.authTokenPrefix:"Bearer";a[f]=$?`${$} ${p}`:p}else if(u==="anonymous"&&p){let f=e.authHeader||e.anonymousTokenHeader||"X-Anonymous-Token";a[f]=p}if(u==="session"){let f=vt(e.csrfCookieName);f&&(a["X-CSRFToken"]=f)}return a};return{getAuthStrategy:s,getAuthHeaders:i,getFetchOptions:(l={},u=null)=>{let a=s(),p={...l};return p.headers={...p.headers,...i(u)},a==="session"&&(p.credentials="include"),p},getOrCreateSession:async()=>{let l=s(),u=t();if(l!=="anonymous")return e.authToken||u.authToken;if(u.authToken)return u.authToken;let a=e.anonymousTokenKey||e.sessionTokenKey,p=u.storage?.get(a);if(p)return n(f=>({...f,authToken:p})),p;try{let f=e.anonymousSessionEndpoint||e.apiPaths.anonymousSession,$=await fetch(`${e.backendUrl}${f}`,{method:"POST",headers:{"Content-Type":"application/json"}});if($.ok){let k=await $.json();return n(g=>({...g,authToken:k.token})),u.storage?.set(a,k.token),k.token}}catch(f){console.warn("[ChatWidget] Failed to create session:",f)}return null},transformRequest:o,transformResponse:r}}function It({config:e,onStateChange:t,markdownParser:n,apiRef:o}){let[r,s]=M(e.embedded||e.forceOpen===!0),[i,c]=M(!1),[d,l]=M(!1),[u,a]=M(!1),[p,f]=M([]),[$,k]=M(!1),[g,v]=M(e.enableTTS),[w,A]=M(!1),[N,J]=M(null);L(()=>{e.forceOpen!==void 0&&s(e.forceOpen)},[e.forceOpen]);let O=ae(()=>yt(e.containerId),[e.containerId]),[j,V]=M(e.authToken||null),K=ae(()=>Et(e,()=>({authToken:j,storage:O}),I=>{let h=I({authToken:j,storage:O});h.authToken!==j&&V(h.authToken)}),[e,j,O]),b=Tt(e,K,O),F=xt(e,K,O);L(()=>{for(let _=b.messages.length-1;_>=0;_--){let S=b.messages[_];if(S.type==="sub_agent_start"){J({key:S.metadata?.subAgentKey,name:S.metadata?.agentName});return}if(S.type==="sub_agent_end"){J(null);return}}},[b.messages]),L(()=>{let _=O.get(e.conversationIdKey);_&&b.loadConversation(_)},[]),L(()=>{t&&t({isOpen:r,isExpanded:i,debugMode:d,messages:b.messages,conversationId:b.conversationId,isLoading:b.isLoading,error:b.error})},[r,i,d,b.messages,b.conversationId,b.isLoading,b.error]);let y=z(async()=>{if(e.showConversationSidebar){k(!0);try{let _=`${e.backendUrl}${e.apiPaths.conversations}?agent_key=${encodeURIComponent(e.agentKey)}`,S=await fetch(_,K.getFetchOptions({method:"GET"}));if(S.ok){let I=await S.json();f(I.results||I)}}catch(_){console.error("[ChatWidget] Failed to load conversations:",_),f([])}finally{k(!1)}}},[e,K]),E=z(()=>{let _=!u;a(_),_&&y()},[u,y]),H=z(_=>{_!==b.conversationId&&b.loadConversation(_),a(!1)},[b]),x=z(()=>{b.clearMessages(),a(!1)},[b]),C=z(_=>{b.sendMessage(_,{model:F.selectedModel,onAssistantMessage:S=>{}})},[b,g,F.selectedModel]);if(L(()=>{o&&(o.current={open:()=>s(!0),close:()=>s(!1),send:_=>C(_),clearMessages:()=>b.clearMessages(),toggleTTS:()=>v(_=>!_),stopSpeech:()=>A(!1),setAuth:_=>{_.token!==void 0&&V(_.token)},clearAuth:()=>V(null)})},[b,o,C]),!e.embedded&&!r)return m`
|
|
398
401
|
<button
|
|
399
402
|
class="cw-fab"
|
|
400
403
|
style=${{backgroundColor:e.primaryColor}}
|
|
@@ -404,39 +407,39 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
404
407
|
<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>
|
|
405
408
|
</svg>
|
|
406
409
|
</button>
|
|
407
|
-
`;let
|
|
408
|
-
<div class=${
|
|
410
|
+
`;let T=["cw-widget",i&&"cw-widget-expanded",e.embedded&&"cw-widget-embedded"].filter(Boolean).join(" ");return m`
|
|
411
|
+
<div class=${T} style=${{"--cw-primary":e.primaryColor}}>
|
|
409
412
|
${e.showConversationSidebar&&m`
|
|
410
|
-
<${
|
|
413
|
+
<${St}
|
|
411
414
|
isOpen=${u}
|
|
412
415
|
conversations=${p}
|
|
413
416
|
conversationsLoading=${$}
|
|
414
417
|
currentConversationId=${b.conversationId}
|
|
415
418
|
onClose=${()=>a(!1)}
|
|
416
|
-
onNewConversation=${
|
|
419
|
+
onNewConversation=${x}
|
|
417
420
|
onSwitchConversation=${H}
|
|
418
421
|
/>
|
|
419
422
|
`}
|
|
420
423
|
|
|
421
|
-
<${
|
|
424
|
+
<${wt}
|
|
422
425
|
config=${e}
|
|
423
426
|
debugMode=${d}
|
|
424
427
|
isExpanded=${i}
|
|
425
428
|
isSpeaking=${w}
|
|
426
429
|
messagesCount=${b.messages.length}
|
|
427
430
|
isLoading=${b.isLoading}
|
|
428
|
-
currentAgent=${
|
|
431
|
+
currentAgent=${N}
|
|
429
432
|
onClose=${()=>s(!1)}
|
|
430
433
|
onToggleExpand=${()=>c(!i)}
|
|
431
434
|
onToggleDebug=${()=>l(!d)}
|
|
432
|
-
onToggleTTS=${()=>
|
|
435
|
+
onToggleTTS=${()=>v(!g)}
|
|
433
436
|
onClear=${b.clearMessages}
|
|
434
|
-
onToggleSidebar=${
|
|
437
|
+
onToggleSidebar=${E}
|
|
435
438
|
/>
|
|
436
439
|
|
|
437
440
|
${d&&m`<div class="cw-status-bar"><span>🐛 Debug</span></div>`}
|
|
438
441
|
|
|
439
|
-
<${
|
|
442
|
+
<${kt}
|
|
440
443
|
messages=${b.messages}
|
|
441
444
|
isLoading=${b.isLoading}
|
|
442
445
|
hasMoreMessages=${b.hasMoreMessages}
|
|
@@ -452,16 +455,16 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
452
455
|
|
|
453
456
|
${b.error&&m`<div class="cw-error-bar">${b.error}</div>`}
|
|
454
457
|
|
|
455
|
-
${e.showModelSelector&&
|
|
456
|
-
<${
|
|
457
|
-
availableModels=${
|
|
458
|
-
selectedModel=${
|
|
459
|
-
onSelectModel=${
|
|
458
|
+
${e.showModelSelector&&F.availableModels.length>0&&m`
|
|
459
|
+
<${Mt}
|
|
460
|
+
availableModels=${F.availableModels}
|
|
461
|
+
selectedModel=${F.selectedModel}
|
|
462
|
+
onSelectModel=${F.selectModel}
|
|
460
463
|
disabled=${b.isLoading}
|
|
461
464
|
/>
|
|
462
465
|
`}
|
|
463
466
|
|
|
464
|
-
<${
|
|
467
|
+
<${Ct}
|
|
465
468
|
onSend=${C}
|
|
466
469
|
onCancel=${b.cancelRun}
|
|
467
470
|
isLoading=${b.isLoading}
|
|
@@ -470,9 +473,9 @@ var ChatWidgetModule=(()=>{var Ce=Object.defineProperty;var Dt=Object.getOwnProp
|
|
|
470
473
|
enableVoice=${e.enableVoice}
|
|
471
474
|
/>
|
|
472
475
|
</div>
|
|
473
|
-
`}var
|
|
476
|
+
`}var At={backendUrl:"http://localhost:8000",agentKey:"default-agent",title:"Chat Assistant",subtitle:"How can we help you today?",primaryColor:"#0066cc",position:"bottom-right",defaultJourneyType:"general",enableDebugMode:!0,enableAutoRun:!0,journeyTypes:{},customerPrompts:{},placeholder:"Type your message...",emptyStateTitle:"Start a Conversation",emptyStateMessage:"Send a message to get started.",authStrategy:null,authToken:null,authHeader:null,authTokenPrefix:null,anonymousSessionEndpoint:null,anonymousTokenKey:"chat_widget_anonymous_token",onAuthError:null,anonymousTokenHeader:"X-Anonymous-Token",conversationIdKey:"chat_widget_conversation_id",sessionTokenKey:"chat_widget_session_token",apiPaths:{anonymousSession:"/api/accounts/anonymous-session/",conversations:"/api/agent-runtime/conversations/",runs:"/api/agent-runtime/runs/",runEvents:"/api/agent-runtime/runs/{runId}/events/",simulateCustomer:"/api/agent-runtime/simulate-customer/",ttsVoices:"/api/tts/voices/",ttsSetVoice:"/api/tts/set-voice/",models:"/api/agent-runtime/models/"},apiCaseStyle:"auto",showConversationSidebar:!0,showClearButton:!0,showDebugButton:!0,showTTSButton:!0,showVoiceSettings:!0,showExpandButton:!0,showModelSelector:!1,enableVoice:!0,modelKey:"chat_widget_selected_model",autoRunDelay:1e3,autoRunMode:"automatic",enableTTS:!1,ttsProxyUrl:null,elevenLabsApiKey:null,ttsVoices:{assistant:null,user:null},ttsModel:"eleven_turbo_v2_5",ttsSettings:{stability:.5,similarity_boost:.75,style:0,use_speaker_boost:!0},availableVoices:[],onEvent:null,containerId:null,embedded:!1,metadata:{}};function Rt(e){let t={...At.apiPaths,...e.apiPaths||{}};return{...At,...e,apiPaths:t}}var ke=new Map,Zt=0,R=null,Ue=class{constructor(t={}){this.instanceId=`cw-${++Zt}`,this.config=Rt(t),this.container=null,this._state={},this._apiRef={current:null},ke.set(this.instanceId,this)}_handleStateChange=t=>{this._state=t};init(){if(this.config.containerId){if(this.container=document.getElementById(this.config.containerId),!this.container)return console.error(`[ChatWidget] Container not found: ${this.config.containerId}`),this;this.container.classList.add("cw-container-embedded")}else this.container=document.createElement("div"),this.container.id=this.instanceId,this.container.className=`cw-container cw-position-${this.config.position}`,document.body.appendChild(this.container);return this._render(),console.log(`[ChatWidget] Instance ${this.instanceId} initialized`),this}_render(t={}){this.container&&me(m`<${It}
|
|
474
477
|
config=${{...this.config,...t}}
|
|
475
478
|
onStateChange=${this._handleStateChange}
|
|
476
|
-
markdownParser=${
|
|
479
|
+
markdownParser=${Ce._enhancedMarkdownParser}
|
|
477
480
|
apiRef=${this._apiRef}
|
|
478
|
-
/>`,this.container)}destroy(){this.container&&(
|
|
481
|
+
/>`,this.container)}destroy(){this.container&&(me(null,this.container),this.config.containerId?this.container.classList.remove("cw-container-embedded"):this.container.remove(),this.container=null),ke.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 Dt(e={}){return new Ue(e).init()}function Yt(e={}){return R&&R.destroy(),R=Dt(e),R}function en(){R&&(R.destroy(),R=null)}function tn(){R&&R.open()}function nn(){R&&R.close()}function on(e){R&&R.send(e)}function sn(){R&&R.clearMessages()}function rn(){R&&R.toggleTTS()}function an(){R&&R.stopSpeech()}function ln(e){R&&R.setAuth(e)}function cn(){R&&R.clearAuth()}function un(){return R?R.getState():null}function dn(){return R?R.getConfig():null}var Ce={createInstance:Dt,getInstance:e=>ke.get(e),getAllInstances:()=>Array.from(ke.values()),init:Yt,destroy:en,open:tn,close:nn,send:on,clearMessages:sn,toggleTTS:rn,stopSpeech:an,setAuth:ln,clearAuth:cn,getState:un,getConfig:dn,_enhancedMarkdownParser:null};var _n=Ce;typeof window<"u"&&(window.ChatWidget=Ce);return Ut(pn);})();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/requires.txt
RENAMED
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/django_agent_studio.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/django_agent_studio/js/builder.js
RENAMED
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/django_agent_studio/js/builder.js.map
RENAMED
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/static/django_agent_studio/js/style.css
RENAMED
|
File without changes
|
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/base.html
RENAMED
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/builder.html
RENAMED
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/home.html
RENAMED
|
File without changes
|
{django_agent_studio-0.2.6 → django_agent_studio-0.2.8}/templates/django_agent_studio/test.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|