@rubytech/taskmaster 1.0.74 → 1.0.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,23 @@
1
- var Mu=Object.defineProperty;var Pu=(e,t,n)=>t in e?Mu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var U=(e,t,n)=>Pu(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=n(s);fetch(s.href,r)}})();const Lu="modulepreload",Iu=function(e,t){return new URL(e,t).href},ao={},ie=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){let u=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const o=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=u(n.map(l=>{if(l=Iu(l,i),l in ao)return;ao[l]=!0;const d=l.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(i)for(let y=o.length-1;y>=0;y--){const b=o[y];if(b.href===l&&(!d||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${h}`))return;const v=document.createElement("link");if(v.rel=d?"stylesheet":Lu,d||(v.as="script"),v.crossOrigin="",v.href=l,c&&v.setAttribute("nonce",c),document.head.appendChild(v),d)return new Promise((y,b)=>{v.addEventListener("load",y),v.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${l}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return s.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return t().catch(r)})};const qn=globalThis,Xs=qn.ShadowRoot&&(qn.ShadyCSS===void 0||qn.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Zs=Symbol(),lo=new WeakMap;let Ja=class{constructor(t,n,i){if(this._$cssResult$=!0,i!==Zs)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=n}get styleSheet(){let t=this.o;const n=this.t;if(Xs&&t===void 0){const i=n!==void 0&&n.length===1;i&&(t=lo.get(n)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&lo.set(n,t))}return t}toString(){return this.cssText}};const Ru=e=>new Ja(typeof e=="string"?e:e+"",void 0,Zs),Nu=(e,...t)=>{const n=e.length===1?e[0]:t.reduce((i,s,r)=>i+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[r+1],e[0]);return new Ja(n,e,Zs)},Du=(e,t)=>{if(Xs)e.adoptedStyleSheets=t.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of t){const i=document.createElement("style"),s=qn.litNonce;s!==void 0&&i.setAttribute("nonce",s),i.textContent=n.cssText,e.appendChild(i)}},co=Xs?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let n="";for(const i of t.cssRules)n+=i.cssText;return Ru(n)})(e):e;const{is:Ou,defineProperty:Bu,getOwnPropertyDescriptor:Fu,getOwnPropertyNames:Uu,getOwnPropertySymbols:Wu,getPrototypeOf:Ku}=Object,Ke=globalThis,uo=Ke.trustedTypes,zu=uo?uo.emptyScript:"",Ki=Ke.reactiveElementPolyfillSupport,en=(e,t)=>e,Xn={toAttribute(e,t){switch(t){case Boolean:e=e?zu:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Js=(e,t)=>!Ou(e,t),po={attribute:!0,type:String,converter:Xn,reflect:!1,useDefault:!1,hasChanged:Js};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Ke.litPropertyMetadata??(Ke.litPropertyMetadata=new WeakMap);let St=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,n=po){if(n.state&&(n.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((n=Object.create(n)).wrapped=!0),this.elementProperties.set(t,n),!n.noAccessor){const i=Symbol(),s=this.getPropertyDescriptor(t,i,n);s!==void 0&&Bu(this.prototype,t,s)}}static getPropertyDescriptor(t,n,i){const{get:s,set:r}=Fu(this.prototype,t)??{get(){return this[n]},set(o){this[n]=o}};return{get:s,set(o){const a=s==null?void 0:s.call(this);r==null||r.call(this,o),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??po}static _$Ei(){if(this.hasOwnProperty(en("elementProperties")))return;const t=Ku(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(en("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(en("properties"))){const n=this.properties,i=[...Uu(n),...Wu(n)];for(const s of i)this.createProperty(s,n[s])}const t=this[Symbol.metadata];if(t!==null){const n=litPropertyMetadata.get(t);if(n!==void 0)for(const[i,s]of n)this.elementProperties.set(i,s)}this._$Eh=new Map;for(const[n,i]of this.elementProperties){const s=this._$Eu(n,i);s!==void 0&&this._$Eh.set(s,n)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const n=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const s of i)n.unshift(co(s))}else t!==void 0&&n.push(co(t));return n}static _$Eu(t,n){const i=n.attribute;return i===!1?void 0:typeof i=="string"?i:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(n=>n(this))}addController(t){var n;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((n=t.hostConnected)==null||n.call(t))}removeController(t){var n;(n=this._$EO)==null||n.delete(t)}_$E_(){const t=new Map,n=this.constructor.elementProperties;for(const i of n.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Du(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostConnected)==null?void 0:i.call(n)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostDisconnected)==null?void 0:i.call(n)})}attributeChangedCallback(t,n,i){this._$AK(t,i)}_$ET(t,n){var r;const i=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,i);if(s!==void 0&&i.reflect===!0){const o=(((r=i.converter)==null?void 0:r.toAttribute)!==void 0?i.converter:Xn).toAttribute(n,i.type);this._$Em=t,o==null?this.removeAttribute(s):this.setAttribute(s,o),this._$Em=null}}_$AK(t,n){var r,o;const i=this.constructor,s=i._$Eh.get(t);if(s!==void 0&&this._$Em!==s){const a=i.getPropertyOptions(s),c=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)==null?void 0:r.fromAttribute)!==void 0?a.converter:Xn;this._$Em=s;const u=c.fromAttribute(n,a.type);this[s]=u??((o=this._$Ej)==null?void 0:o.get(s))??u,this._$Em=null}}requestUpdate(t,n,i,s=!1,r){var o;if(t!==void 0){const a=this.constructor;if(s===!1&&(r=this[t]),i??(i=a.getPropertyOptions(t)),!((i.hasChanged??Js)(r,n)||i.useDefault&&i.reflect&&r===((o=this._$Ej)==null?void 0:o.get(t))&&!this.hasAttribute(a._$Eu(t,i))))return;this.C(t,n,i)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,n,{useDefault:i,reflect:s,wrapped:r},o){i&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,o??n??this[t]),r!==!0||o!==void 0)||(this._$AL.has(t)||(this.hasUpdated||i||(n=void 0),this._$AL.set(t,n)),s===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(n){Promise.reject(n)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[r,o]of this._$Ep)this[r]=o;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[r,o]of s){const{wrapped:a}=o,c=this[r];a!==!0||this._$AL.has(r)||c===void 0||this.C(r,void 0,o,c)}}let t=!1;const n=this._$AL;try{t=this.shouldUpdate(n),t?(this.willUpdate(n),(i=this._$EO)==null||i.forEach(s=>{var r;return(r=s.hostUpdate)==null?void 0:r.call(s)}),this.update(n)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(n)}willUpdate(t){}_$AE(t){var n;(n=this._$EO)==null||n.forEach(i=>{var s;return(s=i.hostUpdated)==null?void 0:s.call(i)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(n=>this._$ET(n,this[n]))),this._$EM()}updated(t){}firstUpdated(t){}};St.elementStyles=[],St.shadowRootOptions={mode:"open"},St[en("elementProperties")]=new Map,St[en("finalized")]=new Map,Ki==null||Ki({ReactiveElement:St}),(Ke.reactiveElementVersions??(Ke.reactiveElementVersions=[])).push("2.1.2");const tn=globalThis,ho=e=>e,Zn=tn.trustedTypes,fo=Zn?Zn.createPolicy("lit-html",{createHTML:e=>e}):void 0,el="$lit$",We=`lit$${Math.random().toFixed(9).slice(2)}$`,tl="?"+We,ju=`<${tl}>`,it=document,un=()=>it.createComment(""),dn=e=>e===null||typeof e!="object"&&typeof e!="function",er=Array.isArray,Hu=e=>er(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",zi=`[
2
- \f\r]`,Ut=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,go=/-->/g,mo=/>/g,Xe=RegExp(`>|${zi}(?:([^\\s"'>=/]+)(${zi}*=${zi}*(?:[^
3
- \f\r"'\`<>=]|("|')|))|$)`,"g"),yo=/'/g,vo=/"/g,nl=/^(?:script|style|textarea|title)$/i,qu=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),p=qu(1),je=Symbol.for("lit-noChange"),k=Symbol.for("lit-nothing"),bo=new WeakMap,et=it.createTreeWalker(it,129);function il(e,t){if(!er(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return fo!==void 0?fo.createHTML(t):t}const Vu=(e,t)=>{const n=e.length-1,i=[];let s,r=t===2?"<svg>":t===3?"<math>":"",o=Ut;for(let a=0;a<n;a++){const c=e[a];let u,l,d=-1,h=0;for(;h<c.length&&(o.lastIndex=h,l=o.exec(c),l!==null);)h=o.lastIndex,o===Ut?l[1]==="!--"?o=go:l[1]!==void 0?o=mo:l[2]!==void 0?(nl.test(l[2])&&(s=RegExp("</"+l[2],"g")),o=Xe):l[3]!==void 0&&(o=Xe):o===Xe?l[0]===">"?(o=s??Ut,d=-1):l[1]===void 0?d=-2:(d=o.lastIndex-l[2].length,u=l[1],o=l[3]===void 0?Xe:l[3]==='"'?vo:yo):o===vo||o===yo?o=Xe:o===go||o===mo?o=Ut:(o=Xe,s=void 0);const v=o===Xe&&e[a+1].startsWith("/>")?" ":"";r+=o===Ut?c+ju:d>=0?(i.push(u),c.slice(0,d)+el+c.slice(d)+We+v):c+We+(d===-2?a:v)}return[il(e,r+(e[n]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),i]};let As=class sl{constructor({strings:t,_$litType$:n},i){let s;this.parts=[];let r=0,o=0;const a=t.length-1,c=this.parts,[u,l]=Vu(t,n);if(this.el=sl.createElement(u,i),et.currentNode=this.el.content,n===2||n===3){const d=this.el.content.firstChild;d.replaceWith(...d.childNodes)}for(;(s=et.nextNode())!==null&&c.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(const d of s.getAttributeNames())if(d.endsWith(el)){const h=l[o++],v=s.getAttribute(d).split(We),y=/([.?@])?(.*)/.exec(h);c.push({type:1,index:r,name:y[2],strings:v,ctor:y[1]==="."?Qu:y[1]==="?"?Yu:y[1]==="@"?Xu:vi}),s.removeAttribute(d)}else d.startsWith(We)&&(c.push({type:6,index:r}),s.removeAttribute(d));if(nl.test(s.tagName)){const d=s.textContent.split(We),h=d.length-1;if(h>0){s.textContent=Zn?Zn.emptyScript:"";for(let v=0;v<h;v++)s.append(d[v],un()),et.nextNode(),c.push({type:2,index:++r});s.append(d[h],un())}}}else if(s.nodeType===8)if(s.data===tl)c.push({type:2,index:r});else{let d=-1;for(;(d=s.data.indexOf(We,d+1))!==-1;)c.push({type:7,index:r}),d+=We.length-1}r++}}static createElement(t,n){const i=it.createElement("template");return i.innerHTML=t,i}};function Tt(e,t,n=e,i){var o,a;if(t===je)return t;let s=i!==void 0?(o=n._$Co)==null?void 0:o[i]:n._$Cl;const r=dn(t)?void 0:t._$litDirective$;return(s==null?void 0:s.constructor)!==r&&((a=s==null?void 0:s._$AO)==null||a.call(s,!1),r===void 0?s=void 0:(s=new r(e),s._$AT(e,n,i)),i!==void 0?(n._$Co??(n._$Co=[]))[i]=s:n._$Cl=s),s!==void 0&&(t=Tt(e,s._$AS(e,t.values),s,i)),t}class Gu{constructor(t,n){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:n},parts:i}=this._$AD,s=((t==null?void 0:t.creationScope)??it).importNode(n,!0);et.currentNode=s;let r=et.nextNode(),o=0,a=0,c=i[0];for(;c!==void 0;){if(o===c.index){let u;c.type===2?u=new yi(r,r.nextSibling,this,t):c.type===1?u=new c.ctor(r,c.name,c.strings,this,t):c.type===6&&(u=new Zu(r,this,t)),this._$AV.push(u),c=i[++a]}o!==(c==null?void 0:c.index)&&(r=et.nextNode(),o++)}return et.currentNode=it,s}p(t){let n=0;for(const i of this._$AV)i!==void 0&&(i.strings!==void 0?(i._$AI(t,i,n),n+=i.strings.length-2):i._$AI(t[n])),n++}}let yi=class rl{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,n,i,s){this.type=2,this._$AH=k,this._$AN=void 0,this._$AA=t,this._$AB=n,this._$AM=i,this.options=s,this._$Cv=(s==null?void 0:s.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=n.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,n=this){t=Tt(this,t,n),dn(t)?t===k||t==null||t===""?(this._$AH!==k&&this._$AR(),this._$AH=k):t!==this._$AH&&t!==je&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):Hu(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==k&&dn(this._$AH)?this._$AA.nextSibling.data=t:this.T(it.createTextNode(t)),this._$AH=t}$(t){var r;const{values:n,_$litType$:i}=t,s=typeof i=="number"?this._$AC(t):(i.el===void 0&&(i.el=As.createElement(il(i.h,i.h[0]),this.options)),i);if(((r=this._$AH)==null?void 0:r._$AD)===s)this._$AH.p(n);else{const o=new Gu(s,this),a=o.u(this.options);o.p(n),this.T(a),this._$AH=o}}_$AC(t){let n=bo.get(t.strings);return n===void 0&&bo.set(t.strings,n=new As(t)),n}k(t){er(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let i,s=0;for(const r of t)s===n.length?n.push(i=new rl(this.O(un()),this.O(un()),this,this.options)):i=n[s],i._$AI(r),s++;s<n.length&&(this._$AR(i&&i._$AB.nextSibling,s),n.length=s)}_$AR(t=this._$AA.nextSibling,n){var i;for((i=this._$AP)==null?void 0:i.call(this,!1,!0,n);t!==this._$AB;){const s=ho(t).nextSibling;ho(t).remove(),t=s}}setConnected(t){var n;this._$AM===void 0&&(this._$Cv=t,(n=this._$AP)==null||n.call(this,t))}};class vi{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,n,i,s,r){this.type=1,this._$AH=k,this._$AN=void 0,this.element=t,this.name=n,this._$AM=s,this.options=r,i.length>2||i[0]!==""||i[1]!==""?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=k}_$AI(t,n=this,i,s){const r=this.strings;let o=!1;if(r===void 0)t=Tt(this,t,n,0),o=!dn(t)||t!==this._$AH&&t!==je,o&&(this._$AH=t);else{const a=t;let c,u;for(t=r[0],c=0;c<r.length-1;c++)u=Tt(this,a[i+c],n,c),u===je&&(u=this._$AH[c]),o||(o=!dn(u)||u!==this._$AH[c]),u===k?t=k:t!==k&&(t+=(u??"")+r[c+1]),this._$AH[c]=u}o&&!s&&this.j(t)}j(t){t===k?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}let Qu=class extends vi{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===k?void 0:t}},Yu=class extends vi{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==k)}},Xu=class extends vi{constructor(t,n,i,s,r){super(t,n,i,s,r),this.type=5}_$AI(t,n=this){if((t=Tt(this,t,n,0)??k)===je)return;const i=this._$AH,s=t===k&&i!==k||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,r=t!==k&&(i===k||s);s&&this.element.removeEventListener(this.name,this,i),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var n;typeof this._$AH=="function"?this._$AH.call(((n=this.options)==null?void 0:n.host)??this.element,t):this._$AH.handleEvent(t)}},Zu=class{constructor(t,n,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=n,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){Tt(this,t)}};const Ju={I:yi},ji=tn.litHtmlPolyfillSupport;ji==null||ji(As,yi),(tn.litHtmlVersions??(tn.litHtmlVersions=[])).push("3.3.2");const ed=(e,t,n)=>{const i=(n==null?void 0:n.renderBefore)??t;let s=i._$litPart$;if(s===void 0){const r=(n==null?void 0:n.renderBefore)??null;i._$litPart$=s=new yi(t.insertBefore(un(),r),r,void 0,n??{})}return s._$AI(e),s};const nt=globalThis;let $t=class extends St{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var n;const t=super.createRenderRoot();return(n=this.renderOptions).renderBefore??(n.renderBefore=t.firstChild),t}update(t){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=ed(n,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return je}};var Za;$t._$litElement$=!0,$t.finalized=!0,(Za=nt.litElementHydrateSupport)==null||Za.call(nt,{LitElement:$t});const Hi=nt.litElementPolyfillSupport;Hi==null||Hi({LitElement:$t});(nt.litElementVersions??(nt.litElementVersions=[])).push("4.2.2");const ol=e=>(t,n)=>{n!==void 0?n.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)};const td={attribute:!0,type:String,converter:Xn,reflect:!1,hasChanged:Js},nd=(e=td,t,n)=>{const{kind:i,metadata:s}=n;let r=globalThis.litPropertyMetadata.get(s);if(r===void 0&&globalThis.litPropertyMetadata.set(s,r=new Map),i==="setter"&&((e=Object.create(e)).wrapped=!0),r.set(n.name,e),i==="accessor"){const{name:o}=n;return{set(a){const c=t.get.call(this);t.set.call(this,a),this.requestUpdate(o,c,e,!0,a)},init(a){return a!==void 0&&this.C(o,void 0,e,a),a}}}if(i==="setter"){const{name:o}=n;return function(a){const c=this[o];t.call(this,a),this.requestUpdate(o,c,e,!0,a)}}throw Error("Unsupported decorator location: "+i)};function bi(e){return(t,n)=>typeof n=="object"?nd(e,t,n):((i,s,r)=>{const o=s.hasOwnProperty(r);return s.constructor.createProperty(r,i),o?Object.getOwnPropertyDescriptor(s,r):void 0})(e,t,n)}function m(e){return bi({...e,state:!0,attribute:!1})}const id=50,sd=200,rd="Assistant";function wo(e,t){if(typeof e!="string")return;const n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}function xs(e){const t=wo(e==null?void 0:e.name,id)??rd,n=wo((e==null?void 0:e.avatar)??void 0,sd)??null;return{agentId:typeof(e==null?void 0:e.agentId)=="string"&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}function od(){return xs(typeof window>"u"?{}:{name:window.__TASKMASTER_ASSISTANT_NAME__,avatar:window.__TASKMASTER_ASSISTANT_AVATAR__})}const Jn="taskmaster.control.settings.v1",al="taskmaster.account.settings.";function nn(){return`${location.protocol==="https:"?"wss":"ws"}://${location.host}`}const kt={gatewayUrl:nn(),token:"",theme:"system",navCollapsed:!1,navGroupsCollapsed:{}},Ue={sessionKey:"main",lastActiveSessionKey:"main",chatFocusMode:!1,chatShowThinking:!1,splitRatio:.6};function ad(){try{const e=localStorage.getItem(Jn);if(!e)return{...kt,gatewayUrl:nn()};const t=JSON.parse(e);return{gatewayUrl:typeof t.gatewayUrl=="string"&&t.gatewayUrl.trim()?t.gatewayUrl.trim():nn(),token:typeof t.token=="string"?t.token:kt.token,theme:t.theme==="light"||t.theme==="dark"||t.theme==="system"?t.theme:kt.theme,navCollapsed:typeof t.navCollapsed=="boolean"?t.navCollapsed:kt.navCollapsed,navGroupsCollapsed:typeof t.navGroupsCollapsed=="object"&&t.navGroupsCollapsed!==null?t.navGroupsCollapsed:kt.navGroupsCollapsed}}catch{return{...kt,gatewayUrl:nn()}}}function ld(e){if(!e)return{...Ue};try{const t=localStorage.getItem(al+e);if(!t)return{...Ue};const n=JSON.parse(t);return{sessionKey:typeof n.sessionKey=="string"&&n.sessionKey.trim()?n.sessionKey.trim():Ue.sessionKey,lastActiveSessionKey:typeof n.lastActiveSessionKey=="string"&&n.lastActiveSessionKey.trim()?n.lastActiveSessionKey.trim():typeof n.sessionKey=="string"&&n.sessionKey.trim()||Ue.lastActiveSessionKey,chatFocusMode:typeof n.chatFocusMode=="boolean"?n.chatFocusMode:Ue.chatFocusMode,chatShowThinking:typeof n.chatShowThinking=="boolean"?n.chatShowThinking:Ue.chatShowThinking,splitRatio:typeof n.splitRatio=="number"&&n.splitRatio>=.4&&n.splitRatio<=.7?n.splitRatio:Ue.splitRatio}}catch{return{...Ue}}}let ei=null;function ko(e){ei=e}function qi(){return{...ad(),...ld(ei)}}function cd(e){const t={gatewayUrl:e.gatewayUrl,token:e.token,theme:e.theme,navCollapsed:e.navCollapsed,navGroupsCollapsed:e.navGroupsCollapsed};if(localStorage.setItem(Jn,JSON.stringify(t)),ei){const n={sessionKey:e.sessionKey,lastActiveSessionKey:e.lastActiveSessionKey,chatFocusMode:e.chatFocusMode,chatShowThinking:e.chatShowThinking,splitRatio:e.splitRatio};localStorage.setItem(al+ei,JSON.stringify(n))}}(function(){try{const t=localStorage.getItem(Jn);if(!t)return;const n=JSON.parse(t);if(!("sessionKey"in n))return;const i={gatewayUrl:typeof n.gatewayUrl=="string"?n.gatewayUrl:nn(),token:typeof n.token=="string"?n.token:"",theme:n.theme==="light"||n.theme==="dark"||n.theme==="system"?n.theme:"system",navCollapsed:typeof n.navCollapsed=="boolean"?n.navCollapsed:!1,navGroupsCollapsed:typeof n.navGroupsCollapsed=="object"&&n.navGroupsCollapsed!==null?n.navGroupsCollapsed:{}};localStorage.setItem(Jn,JSON.stringify(i))}catch{}})();function ll(e){var r;const t=(e??"").trim();if(!t)return null;const n=t.split(":").filter(Boolean);if(n.length<3||n[0]!=="agent")return null;const i=(r=n[1])==null?void 0:r.trim(),s=n.slice(2).join(":");return!i||!s?null:{agentId:i,rest:s}}const ud=/<\s*\/?\s*(?:think(?:ing)?|thought|antthinking|final)\b/i,Pn=/<\s*\/?\s*final\b[^>]*>/gi,So=/<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\b[^>]*>/gi;function dd(e,t){return e.trimStart()}function pd(e,t){if(!e||!ud.test(e))return e;let n=e;Pn.test(n)?(Pn.lastIndex=0,n=n.replace(Pn,"")):Pn.lastIndex=0,So.lastIndex=0;let i="",s=0,r=!1;for(const o of n.matchAll(So)){const a=o.index??0,c=o[1]==="/";r?c&&(r=!1):(i+=n.slice(s,a),c||(r=!0)),s=a+o[0].length}return i+=n.slice(s),dd(i)}function cl(e){return!e&&e!==0?"n/a":new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"})}function wi(e){if(!e&&e!==0)return"n/a";const t=Date.now()-e;if(t<0){const o=-t,a=Math.round(o/1e3);if(a<60)return`in ${a}s`;const c=Math.round(a/60);if(c<60)return`in ${c}m`;const u=Math.round(c/60);return u<48?`in ${u}h`:`in ${Math.round(u/24)}d`}const n=Math.round(t/1e3);if(n<60)return`${n}s ago`;const i=Math.round(n/60);if(i<60)return`${i}m ago`;const s=Math.round(i/60);return s<48?`${s}h ago`:`${Math.round(s/24)}d ago`}function ul(e){if(!e&&e!==0)return"n/a";if(e<1e3)return`${e}ms`;const t=Math.round(e/1e3);if(t<60)return`${t}s`;const n=Math.round(t/60);if(n<60)return`${n}m`;const i=Math.round(n/60);return i<48?`${i}h`:`${Math.round(i/24)}d`}function hd(e,t=120){return e.length<=t?e:`${e.slice(0,Math.max(0,t-1))}…`}function dl(e,t){return e.length<=t?{text:e,truncated:!1,total:e.length}:{text:e.slice(0,Math.max(0,t)),truncated:!0,total:e.length}}function ti(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function Vi(e){return pd(e)}const fd=/^\[([^\]]+)\]\s*/,gd=["WebChat","WhatsApp","Telegram","Signal","Slack","Discord","iMessage","Teams","Matrix","Zalo","Zalo Personal","BlueBubbles"],Gi=new WeakMap,Qi=new WeakMap;function md(e){return/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}Z\b/.test(e)||/\d{4}-\d{2}-\d{2} \d{2}:\d{2}\b/.test(e)?!0:gd.some(t=>e.startsWith(`${t} `))}function Yi(e){const t=e.match(fd);if(!t)return e;const n=t[1]??"";return md(n)?e.slice(t[0].length):e}function sn(e){const t=e,n=typeof t.role=="string"?t.role:"",i=t.content;if(typeof i=="string")return n==="assistant"?Vi(i):Yi(i);if(Array.isArray(i)){const s=i.map(r=>{const o=r;return o.type==="text"&&typeof o.text=="string"?o.text:null}).filter(r=>typeof r=="string");if(s.length>0){const r=s.join(`
1
+ var Pu=Object.defineProperty;var Lu=(e,t,n)=>t in e?Pu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var U=(e,t,n)=>Lu(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=n(s);fetch(s.href,r)}})();const Iu="modulepreload",Ru=function(e,t){return new URL(e,t).href},ao={},se=function(t,n,i){let s=Promise.resolve();if(n&&n.length>0){let u=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const o=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=u(n.map(l=>{if(l=Ru(l,i),l in ao)return;ao[l]=!0;const d=l.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(i)for(let f=o.length-1;f>=0;f--){const b=o[f];if(b.href===l&&(!d||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${h}`))return;const v=document.createElement("link");if(v.rel=d?"stylesheet":Iu,d||(v.as="script"),v.crossOrigin="",v.href=l,c&&v.setAttribute("nonce",c),document.head.appendChild(v),d)return new Promise((f,b)=>{v.addEventListener("load",f),v.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${l}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return s.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return t().catch(r)})};const qn=globalThis,Xs=qn.ShadowRoot&&(qn.ShadyCSS===void 0||qn.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Zs=Symbol(),lo=new WeakMap;let Ja=class{constructor(t,n,i){if(this._$cssResult$=!0,i!==Zs)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=n}get styleSheet(){let t=this.o;const n=this.t;if(Xs&&t===void 0){const i=n!==void 0&&n.length===1;i&&(t=lo.get(n)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&lo.set(n,t))}return t}toString(){return this.cssText}};const Nu=e=>new Ja(typeof e=="string"?e:e+"",void 0,Zs),Du=(e,...t)=>{const n=e.length===1?e[0]:t.reduce((i,s,r)=>i+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[r+1],e[0]);return new Ja(n,e,Zs)},Ou=(e,t)=>{if(Xs)e.adoptedStyleSheets=t.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of t){const i=document.createElement("style"),s=qn.litNonce;s!==void 0&&i.setAttribute("nonce",s),i.textContent=n.cssText,e.appendChild(i)}},co=Xs?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let n="";for(const i of t.cssRules)n+=i.cssText;return Nu(n)})(e):e;const{is:Bu,defineProperty:Fu,getOwnPropertyDescriptor:Uu,getOwnPropertyNames:Wu,getOwnPropertySymbols:Ku,getPrototypeOf:zu}=Object,ze=globalThis,uo=ze.trustedTypes,ju=uo?uo.emptyScript:"",Ki=ze.reactiveElementPolyfillSupport,en=(e,t)=>e,Xn={toAttribute(e,t){switch(t){case Boolean:e=e?ju:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Js=(e,t)=>!Bu(e,t),po={attribute:!0,type:String,converter:Xn,reflect:!1,useDefault:!1,hasChanged:Js};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),ze.litPropertyMetadata??(ze.litPropertyMetadata=new WeakMap);let At=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,n=po){if(n.state&&(n.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((n=Object.create(n)).wrapped=!0),this.elementProperties.set(t,n),!n.noAccessor){const i=Symbol(),s=this.getPropertyDescriptor(t,i,n);s!==void 0&&Fu(this.prototype,t,s)}}static getPropertyDescriptor(t,n,i){const{get:s,set:r}=Uu(this.prototype,t)??{get(){return this[n]},set(o){this[n]=o}};return{get:s,set(o){const a=s==null?void 0:s.call(this);r==null||r.call(this,o),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??po}static _$Ei(){if(this.hasOwnProperty(en("elementProperties")))return;const t=zu(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(en("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(en("properties"))){const n=this.properties,i=[...Wu(n),...Ku(n)];for(const s of i)this.createProperty(s,n[s])}const t=this[Symbol.metadata];if(t!==null){const n=litPropertyMetadata.get(t);if(n!==void 0)for(const[i,s]of n)this.elementProperties.set(i,s)}this._$Eh=new Map;for(const[n,i]of this.elementProperties){const s=this._$Eu(n,i);s!==void 0&&this._$Eh.set(s,n)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const n=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const s of i)n.unshift(co(s))}else t!==void 0&&n.push(co(t));return n}static _$Eu(t,n){const i=n.attribute;return i===!1?void 0:typeof i=="string"?i:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(n=>n(this))}addController(t){var n;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((n=t.hostConnected)==null||n.call(t))}removeController(t){var n;(n=this._$EO)==null||n.delete(t)}_$E_(){const t=new Map,n=this.constructor.elementProperties;for(const i of n.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Ou(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostConnected)==null?void 0:i.call(n)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(n=>{var i;return(i=n.hostDisconnected)==null?void 0:i.call(n)})}attributeChangedCallback(t,n,i){this._$AK(t,i)}_$ET(t,n){var r;const i=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,i);if(s!==void 0&&i.reflect===!0){const o=(((r=i.converter)==null?void 0:r.toAttribute)!==void 0?i.converter:Xn).toAttribute(n,i.type);this._$Em=t,o==null?this.removeAttribute(s):this.setAttribute(s,o),this._$Em=null}}_$AK(t,n){var r,o;const i=this.constructor,s=i._$Eh.get(t);if(s!==void 0&&this._$Em!==s){const a=i.getPropertyOptions(s),c=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)==null?void 0:r.fromAttribute)!==void 0?a.converter:Xn;this._$Em=s;const u=c.fromAttribute(n,a.type);this[s]=u??((o=this._$Ej)==null?void 0:o.get(s))??u,this._$Em=null}}requestUpdate(t,n,i,s=!1,r){var o;if(t!==void 0){const a=this.constructor;if(s===!1&&(r=this[t]),i??(i=a.getPropertyOptions(t)),!((i.hasChanged??Js)(r,n)||i.useDefault&&i.reflect&&r===((o=this._$Ej)==null?void 0:o.get(t))&&!this.hasAttribute(a._$Eu(t,i))))return;this.C(t,n,i)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,n,{useDefault:i,reflect:s,wrapped:r},o){i&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,o??n??this[t]),r!==!0||o!==void 0)||(this._$AL.has(t)||(this.hasUpdated||i||(n=void 0),this._$AL.set(t,n)),s===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(n){Promise.reject(n)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[r,o]of this._$Ep)this[r]=o;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[r,o]of s){const{wrapped:a}=o,c=this[r];a!==!0||this._$AL.has(r)||c===void 0||this.C(r,void 0,o,c)}}let t=!1;const n=this._$AL;try{t=this.shouldUpdate(n),t?(this.willUpdate(n),(i=this._$EO)==null||i.forEach(s=>{var r;return(r=s.hostUpdate)==null?void 0:r.call(s)}),this.update(n)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(n)}willUpdate(t){}_$AE(t){var n;(n=this._$EO)==null||n.forEach(i=>{var s;return(s=i.hostUpdated)==null?void 0:s.call(i)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(n=>this._$ET(n,this[n]))),this._$EM()}updated(t){}firstUpdated(t){}};At.elementStyles=[],At.shadowRootOptions={mode:"open"},At[en("elementProperties")]=new Map,At[en("finalized")]=new Map,Ki==null||Ki({ReactiveElement:At}),(ze.reactiveElementVersions??(ze.reactiveElementVersions=[])).push("2.1.2");const tn=globalThis,ho=e=>e,Zn=tn.trustedTypes,fo=Zn?Zn.createPolicy("lit-html",{createHTML:e=>e}):void 0,el="$lit$",Ke=`lit$${Math.random().toFixed(9).slice(2)}$`,tl="?"+Ke,Hu=`<${tl}>`,st=document,un=()=>st.createComment(""),dn=e=>e===null||typeof e!="object"&&typeof e!="function",er=Array.isArray,qu=e=>er(e)||typeof(e==null?void 0:e[Symbol.iterator])=="function",zi=`[
2
+ \f\r]`,Ut=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,go=/-->/g,mo=/>/g,Ze=RegExp(`>|${zi}(?:([^\\s"'>=/]+)(${zi}*=${zi}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),yo=/'/g,vo=/"/g,nl=/^(?:script|style|textarea|title)$/i,Vu=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),p=Vu(1),He=Symbol.for("lit-noChange"),S=Symbol.for("lit-nothing"),bo=new WeakMap,tt=st.createTreeWalker(st,129);function il(e,t){if(!er(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return fo!==void 0?fo.createHTML(t):t}const Gu=(e,t)=>{const n=e.length-1,i=[];let s,r=t===2?"<svg>":t===3?"<math>":"",o=Ut;for(let a=0;a<n;a++){const c=e[a];let u,l,d=-1,h=0;for(;h<c.length&&(o.lastIndex=h,l=o.exec(c),l!==null);)h=o.lastIndex,o===Ut?l[1]==="!--"?o=go:l[1]!==void 0?o=mo:l[2]!==void 0?(nl.test(l[2])&&(s=RegExp("</"+l[2],"g")),o=Ze):l[3]!==void 0&&(o=Ze):o===Ze?l[0]===">"?(o=s??Ut,d=-1):l[1]===void 0?d=-2:(d=o.lastIndex-l[2].length,u=l[1],o=l[3]===void 0?Ze:l[3]==='"'?vo:yo):o===vo||o===yo?o=Ze:o===go||o===mo?o=Ut:(o=Ze,s=void 0);const v=o===Ze&&e[a+1].startsWith("/>")?" ":"";r+=o===Ut?c+Hu:d>=0?(i.push(u),c.slice(0,d)+el+c.slice(d)+Ke+v):c+Ke+(d===-2?a:v)}return[il(e,r+(e[n]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),i]};let As=class sl{constructor({strings:t,_$litType$:n},i){let s;this.parts=[];let r=0,o=0;const a=t.length-1,c=this.parts,[u,l]=Gu(t,n);if(this.el=sl.createElement(u,i),tt.currentNode=this.el.content,n===2||n===3){const d=this.el.content.firstChild;d.replaceWith(...d.childNodes)}for(;(s=tt.nextNode())!==null&&c.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(const d of s.getAttributeNames())if(d.endsWith(el)){const h=l[o++],v=s.getAttribute(d).split(Ke),f=/([.?@])?(.*)/.exec(h);c.push({type:1,index:r,name:f[2],strings:v,ctor:f[1]==="."?Yu:f[1]==="?"?Xu:f[1]==="@"?Zu:vi}),s.removeAttribute(d)}else d.startsWith(Ke)&&(c.push({type:6,index:r}),s.removeAttribute(d));if(nl.test(s.tagName)){const d=s.textContent.split(Ke),h=d.length-1;if(h>0){s.textContent=Zn?Zn.emptyScript:"";for(let v=0;v<h;v++)s.append(d[v],un()),tt.nextNode(),c.push({type:2,index:++r});s.append(d[h],un())}}}else if(s.nodeType===8)if(s.data===tl)c.push({type:2,index:r});else{let d=-1;for(;(d=s.data.indexOf(Ke,d+1))!==-1;)c.push({type:7,index:r}),d+=Ke.length-1}r++}}static createElement(t,n){const i=st.createElement("template");return i.innerHTML=t,i}};function _t(e,t,n=e,i){var o,a;if(t===He)return t;let s=i!==void 0?(o=n._$Co)==null?void 0:o[i]:n._$Cl;const r=dn(t)?void 0:t._$litDirective$;return(s==null?void 0:s.constructor)!==r&&((a=s==null?void 0:s._$AO)==null||a.call(s,!1),r===void 0?s=void 0:(s=new r(e),s._$AT(e,n,i)),i!==void 0?(n._$Co??(n._$Co=[]))[i]=s:n._$Cl=s),s!==void 0&&(t=_t(e,s._$AS(e,t.values),s,i)),t}class Qu{constructor(t,n){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:n},parts:i}=this._$AD,s=((t==null?void 0:t.creationScope)??st).importNode(n,!0);tt.currentNode=s;let r=tt.nextNode(),o=0,a=0,c=i[0];for(;c!==void 0;){if(o===c.index){let u;c.type===2?u=new yi(r,r.nextSibling,this,t):c.type===1?u=new c.ctor(r,c.name,c.strings,this,t):c.type===6&&(u=new Ju(r,this,t)),this._$AV.push(u),c=i[++a]}o!==(c==null?void 0:c.index)&&(r=tt.nextNode(),o++)}return tt.currentNode=st,s}p(t){let n=0;for(const i of this._$AV)i!==void 0&&(i.strings!==void 0?(i._$AI(t,i,n),n+=i.strings.length-2):i._$AI(t[n])),n++}}let yi=class rl{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,n,i,s){this.type=2,this._$AH=S,this._$AN=void 0,this._$AA=t,this._$AB=n,this._$AM=i,this.options=s,this._$Cv=(s==null?void 0:s.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=n.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,n=this){t=_t(this,t,n),dn(t)?t===S||t==null||t===""?(this._$AH!==S&&this._$AR(),this._$AH=S):t!==this._$AH&&t!==He&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):qu(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==S&&dn(this._$AH)?this._$AA.nextSibling.data=t:this.T(st.createTextNode(t)),this._$AH=t}$(t){var r;const{values:n,_$litType$:i}=t,s=typeof i=="number"?this._$AC(t):(i.el===void 0&&(i.el=As.createElement(il(i.h,i.h[0]),this.options)),i);if(((r=this._$AH)==null?void 0:r._$AD)===s)this._$AH.p(n);else{const o=new Qu(s,this),a=o.u(this.options);o.p(n),this.T(a),this._$AH=o}}_$AC(t){let n=bo.get(t.strings);return n===void 0&&bo.set(t.strings,n=new As(t)),n}k(t){er(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let i,s=0;for(const r of t)s===n.length?n.push(i=new rl(this.O(un()),this.O(un()),this,this.options)):i=n[s],i._$AI(r),s++;s<n.length&&(this._$AR(i&&i._$AB.nextSibling,s),n.length=s)}_$AR(t=this._$AA.nextSibling,n){var i;for((i=this._$AP)==null?void 0:i.call(this,!1,!0,n);t!==this._$AB;){const s=ho(t).nextSibling;ho(t).remove(),t=s}}setConnected(t){var n;this._$AM===void 0&&(this._$Cv=t,(n=this._$AP)==null||n.call(this,t))}};class vi{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,n,i,s,r){this.type=1,this._$AH=S,this._$AN=void 0,this.element=t,this.name=n,this._$AM=s,this.options=r,i.length>2||i[0]!==""||i[1]!==""?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=S}_$AI(t,n=this,i,s){const r=this.strings;let o=!1;if(r===void 0)t=_t(this,t,n,0),o=!dn(t)||t!==this._$AH&&t!==He,o&&(this._$AH=t);else{const a=t;let c,u;for(t=r[0],c=0;c<r.length-1;c++)u=_t(this,a[i+c],n,c),u===He&&(u=this._$AH[c]),o||(o=!dn(u)||u!==this._$AH[c]),u===S?t=S:t!==S&&(t+=(u??"")+r[c+1]),this._$AH[c]=u}o&&!s&&this.j(t)}j(t){t===S?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}let Yu=class extends vi{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===S?void 0:t}},Xu=class extends vi{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==S)}},Zu=class extends vi{constructor(t,n,i,s,r){super(t,n,i,s,r),this.type=5}_$AI(t,n=this){if((t=_t(this,t,n,0)??S)===He)return;const i=this._$AH,s=t===S&&i!==S||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,r=t!==S&&(i===S||s);s&&this.element.removeEventListener(this.name,this,i),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var n;typeof this._$AH=="function"?this._$AH.call(((n=this.options)==null?void 0:n.host)??this.element,t):this._$AH.handleEvent(t)}},Ju=class{constructor(t,n,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=n,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){_t(this,t)}};const ed={I:yi},ji=tn.litHtmlPolyfillSupport;ji==null||ji(As,yi),(tn.litHtmlVersions??(tn.litHtmlVersions=[])).push("3.3.2");const td=(e,t,n)=>{const i=(n==null?void 0:n.renderBefore)??t;let s=i._$litPart$;if(s===void 0){const r=(n==null?void 0:n.renderBefore)??null;i._$litPart$=s=new yi(t.insertBefore(un(),r),r,void 0,n??{})}return s._$AI(e),s};const it=globalThis;let Et=class extends At{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var n;const t=super.createRenderRoot();return(n=this.renderOptions).renderBefore??(n.renderBefore=t.firstChild),t}update(t){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=td(n,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return He}};var Za;Et._$litElement$=!0,Et.finalized=!0,(Za=it.litElementHydrateSupport)==null||Za.call(it,{LitElement:Et});const Hi=it.litElementPolyfillSupport;Hi==null||Hi({LitElement:Et});(it.litElementVersions??(it.litElementVersions=[])).push("4.2.2");const ol=e=>(t,n)=>{n!==void 0?n.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)};const nd={attribute:!0,type:String,converter:Xn,reflect:!1,hasChanged:Js},id=(e=nd,t,n)=>{const{kind:i,metadata:s}=n;let r=globalThis.litPropertyMetadata.get(s);if(r===void 0&&globalThis.litPropertyMetadata.set(s,r=new Map),i==="setter"&&((e=Object.create(e)).wrapped=!0),r.set(n.name,e),i==="accessor"){const{name:o}=n;return{set(a){const c=t.get.call(this);t.set.call(this,a),this.requestUpdate(o,c,e,!0,a)},init(a){return a!==void 0&&this.C(o,void 0,e,a),a}}}if(i==="setter"){const{name:o}=n;return function(a){const c=this[o];t.call(this,a),this.requestUpdate(o,c,e,!0,a)}}throw Error("Unsupported decorator location: "+i)};function bi(e){return(t,n)=>typeof n=="object"?id(e,t,n):((i,s,r)=>{const o=s.hasOwnProperty(r);return s.constructor.createProperty(r,i),o?Object.getOwnPropertyDescriptor(s,r):void 0})(e,t,n)}function y(e){return bi({...e,state:!0,attribute:!1})}const sd=50,rd=200,od="Assistant";function wo(e,t){if(typeof e!="string")return;const n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}function xs(e){const t=wo(e==null?void 0:e.name,sd)??od,n=wo((e==null?void 0:e.avatar)??void 0,rd)??null;return{agentId:typeof(e==null?void 0:e.agentId)=="string"&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}function ad(){return xs(typeof window>"u"?{}:{name:window.__TASKMASTER_ASSISTANT_NAME__,avatar:window.__TASKMASTER_ASSISTANT_AVATAR__})}const Jn="taskmaster.control.settings.v1",al="taskmaster.account.settings.";function nn(){return`${location.protocol==="https:"?"wss":"ws"}://${location.host}`}const St={gatewayUrl:nn(),token:"",theme:"system",navCollapsed:!1,navGroupsCollapsed:{}},We={sessionKey:"main",lastActiveSessionKey:"main",chatFocusMode:!1,chatShowThinking:!1,splitRatio:.6};function ld(){try{const e=localStorage.getItem(Jn);if(!e)return{...St,gatewayUrl:nn()};const t=JSON.parse(e);return{gatewayUrl:typeof t.gatewayUrl=="string"&&t.gatewayUrl.trim()?t.gatewayUrl.trim():nn(),token:typeof t.token=="string"?t.token:St.token,theme:t.theme==="light"||t.theme==="dark"||t.theme==="system"?t.theme:St.theme,navCollapsed:typeof t.navCollapsed=="boolean"?t.navCollapsed:St.navCollapsed,navGroupsCollapsed:typeof t.navGroupsCollapsed=="object"&&t.navGroupsCollapsed!==null?t.navGroupsCollapsed:St.navGroupsCollapsed}}catch{return{...St,gatewayUrl:nn()}}}function cd(e){if(!e)return{...We};try{const t=localStorage.getItem(al+e);if(!t)return{...We};const n=JSON.parse(t);return{sessionKey:typeof n.sessionKey=="string"&&n.sessionKey.trim()?n.sessionKey.trim():We.sessionKey,lastActiveSessionKey:typeof n.lastActiveSessionKey=="string"&&n.lastActiveSessionKey.trim()?n.lastActiveSessionKey.trim():typeof n.sessionKey=="string"&&n.sessionKey.trim()||We.lastActiveSessionKey,chatFocusMode:typeof n.chatFocusMode=="boolean"?n.chatFocusMode:We.chatFocusMode,chatShowThinking:typeof n.chatShowThinking=="boolean"?n.chatShowThinking:We.chatShowThinking,splitRatio:typeof n.splitRatio=="number"&&n.splitRatio>=.4&&n.splitRatio<=.7?n.splitRatio:We.splitRatio}}catch{return{...We}}}let ei=null;function ko(e){ei=e}function qi(){return{...ld(),...cd(ei)}}function ud(e){const t={gatewayUrl:e.gatewayUrl,token:e.token,theme:e.theme,navCollapsed:e.navCollapsed,navGroupsCollapsed:e.navGroupsCollapsed};if(localStorage.setItem(Jn,JSON.stringify(t)),ei){const n={sessionKey:e.sessionKey,lastActiveSessionKey:e.lastActiveSessionKey,chatFocusMode:e.chatFocusMode,chatShowThinking:e.chatShowThinking,splitRatio:e.splitRatio};localStorage.setItem(al+ei,JSON.stringify(n))}}(function(){try{const t=localStorage.getItem(Jn);if(!t)return;const n=JSON.parse(t);if(!("sessionKey"in n))return;const i={gatewayUrl:typeof n.gatewayUrl=="string"?n.gatewayUrl:nn(),token:typeof n.token=="string"?n.token:"",theme:n.theme==="light"||n.theme==="dark"||n.theme==="system"?n.theme:"system",navCollapsed:typeof n.navCollapsed=="boolean"?n.navCollapsed:!1,navGroupsCollapsed:typeof n.navGroupsCollapsed=="object"&&n.navGroupsCollapsed!==null?n.navGroupsCollapsed:{}};localStorage.setItem(Jn,JSON.stringify(i))}catch{}})();function ll(e){var r;const t=(e??"").trim();if(!t)return null;const n=t.split(":").filter(Boolean);if(n.length<3||n[0]!=="agent")return null;const i=(r=n[1])==null?void 0:r.trim(),s=n.slice(2).join(":");return!i||!s?null:{agentId:i,rest:s}}const dd=/<\s*\/?\s*(?:think(?:ing)?|thought|antthinking|final)\b/i,Pn=/<\s*\/?\s*final\b[^>]*>/gi,So=/<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\b[^>]*>/gi;function pd(e,t){return e.trimStart()}function hd(e,t){if(!e||!dd.test(e))return e;let n=e;Pn.test(n)?(Pn.lastIndex=0,n=n.replace(Pn,"")):Pn.lastIndex=0,So.lastIndex=0;let i="",s=0,r=!1;for(const o of n.matchAll(So)){const a=o.index??0,c=o[1]==="/";r?c&&(r=!1):(i+=n.slice(s,a),c||(r=!0)),s=a+o[0].length}return i+=n.slice(s),pd(i)}function cl(e){return!e&&e!==0?"n/a":new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"})}function wi(e){if(!e&&e!==0)return"n/a";const t=Date.now()-e;if(t<0){const o=-t,a=Math.round(o/1e3);if(a<60)return`in ${a}s`;const c=Math.round(a/60);if(c<60)return`in ${c}m`;const u=Math.round(c/60);return u<48?`in ${u}h`:`in ${Math.round(u/24)}d`}const n=Math.round(t/1e3);if(n<60)return`${n}s ago`;const i=Math.round(n/60);if(i<60)return`${i}m ago`;const s=Math.round(i/60);return s<48?`${s}h ago`:`${Math.round(s/24)}d ago`}function ul(e){if(!e&&e!==0)return"n/a";if(e<1e3)return`${e}ms`;const t=Math.round(e/1e3);if(t<60)return`${t}s`;const n=Math.round(t/60);if(n<60)return`${n}m`;const i=Math.round(n/60);return i<48?`${i}h`:`${Math.round(i/24)}d`}function fd(e,t=120){return e.length<=t?e:`${e.slice(0,Math.max(0,t-1))}…`}function dl(e,t){return e.length<=t?{text:e,truncated:!1,total:e.length}:{text:e.slice(0,Math.max(0,t)),truncated:!0,total:e.length}}function ti(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function Vi(e){return hd(e)}const gd=/^\[([^\]]+)\]\s*/,md=["WebChat","WhatsApp","Telegram","Signal","Slack","Discord","iMessage","Teams","Matrix","Zalo","Zalo Personal","BlueBubbles"],Gi=new WeakMap,Qi=new WeakMap;function yd(e){return/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}Z\b/.test(e)||/\d{4}-\d{2}-\d{2} \d{2}:\d{2}\b/.test(e)?!0:md.some(t=>e.startsWith(`${t} `))}function Yi(e){const t=e.match(gd);if(!t)return e;const n=t[1]??"";return yd(n)?e.slice(t[0].length):e}function sn(e){const t=e,n=typeof t.role=="string"?t.role:"",i=t.content;if(typeof i=="string")return n==="assistant"?Vi(i):Yi(i);if(Array.isArray(i)){const s=i.map(r=>{const o=r;return o.type==="text"&&typeof o.text=="string"?o.text:null}).filter(r=>typeof r=="string");if(s.length>0){const r=s.join(`
4
4
  `);return n==="assistant"?Vi(r):Yi(r)}}return typeof t.text=="string"?n==="assistant"?Vi(t.text):Yi(t.text):null}function pl(e){if(!e||typeof e!="object")return sn(e);const t=e;if(Gi.has(t))return Gi.get(t)??null;const n=sn(e);return Gi.set(t,n),n}function Ao(e){const n=e.content,i=[];if(Array.isArray(n))for(const a of n){const c=a;if(c.type==="thinking"&&typeof c.thinking=="string"){const u=c.thinking.trim();u&&i.push(u)}}if(i.length>0)return i.join(`
5
- `);const s=vd(e);if(!s)return null;const o=[...s.matchAll(/<\s*think(?:ing)?\s*>([\s\S]*?)<\s*\/\s*think(?:ing)?\s*>/gi)].map(a=>(a[1]??"").trim()).filter(Boolean);return o.length>0?o.join(`
6
- `):null}function yd(e){if(!e||typeof e!="object")return Ao(e);const t=e;if(Qi.has(t))return Qi.get(t)??null;const n=Ao(e);return Qi.set(t,n),n}function vd(e){const t=e,n=t.content;if(typeof n=="string")return n;if(Array.isArray(n)){const i=n.map(s=>{const r=s;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(s=>typeof s=="string");if(i.length>0)return i.join(`
7
- `)}return typeof t.text=="string"?t.text:null}function bd(e){const t=e.trim();if(!t)return"";const n=t.split(/\r?\n/).map(i=>i.trim()).filter(Boolean).map(i=>`_${i}_`);return n.length?["_Reasoning:_",...n].join(`
8
- `):""}const wd=/Read HEARTBEAT\.md if it exists|reply HEARTBEAT_OK/i,kd=/^[\s*`_]*HEARTBEAT_OK[\s*`_]*$/i,Sd=/^[\s*`_]*NO_REPLY[\s*`_]*$/i,Ad=/^A new session was started via \/new or \/reset\./;function xd(e){const t=e,n=typeof t.role=="string"?t.role:"";let i="";typeof t.content=="string"?i=t.content:Array.isArray(t.content)?i=t.content.filter(r=>typeof r=="object"&&r!==null).map(r=>r.text??"").join(" "):typeof t.text=="string"&&(i=t.text);const s=i.trim();return s?!!(n==="user"&&wd.test(s)||n==="assistant"&&kd.test(s)||n==="user"&&Ad.test(s)||n==="assistant"&&Sd.test(s)):!1}function $d(e){return e.filter(t=>!xd(t))}function hl(e){const t=e;let n=typeof t.role=="string"?t.role:"unknown";const i=typeof t.toolCallId=="string"||typeof t.tool_call_id=="string",s=t.content,r=Array.isArray(s)?s:null,o=Array.isArray(r)&&r.some(d=>{const v=String(d.type??"").toLowerCase();return v==="toolresult"||v==="tool_result"}),a=typeof t.toolName=="string"||typeof t.tool_name=="string";(i||o||a)&&(n="toolResult");let c=[];typeof t.content=="string"?c=[{type:"text",text:t.content}]:Array.isArray(t.content)?c=t.content.map(d=>({type:d.type||"text",text:d.text,name:d.name,args:d.args||d.arguments})):typeof t.text=="string"&&(c=[{type:"text",text:t.text}]);const u=typeof t.timestamp=="number"?t.timestamp:Date.now(),l=typeof t.id=="string"?t.id:void 0;return{role:n,content:c,timestamp:u,id:l}}function fl(e){const t=e.toLowerCase();return e==="user"||e==="User"?e:e==="assistant"?"assistant":e==="system"?"system":t==="toolresult"||t==="tool_result"||t==="tool"||t==="function"?"tool":e}function gl(e){const t=e,n=typeof t.role=="string"?t.role.toLowerCase():"";return n==="toolresult"||n==="tool_result"}function xo(e){e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t="";for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,"0");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}function Ed(){const e=new Uint8Array(16),t=Date.now();for(let n=0;n<e.length;n++)e[n]=Math.floor(Math.random()*256);return e[0]^=t&255,e[1]^=t>>>8&255,e[2]^=t>>>16&255,e[3]^=t>>>24&255,e}function tr(e=globalThis.crypto){if(e&&typeof e.randomUUID=="function")return e.randomUUID();if(e&&typeof e.getRandomValues=="function"){const t=new Uint8Array(16);return e.getRandomValues(t),xo(t)}return xo(Ed())}async function Te(e){if(!(!e.client||!e.connected)){e.chatLoading=!0,e.lastError=null;try{const t=await e.client.request("chat.history",{sessionKey:e.sessionKey,limit:5e3}),n=Array.isArray(t.messages)?t.messages:[];e.chatMessages=$d(n),e.chatThinkingLevel=t.thinkingLevel??null,e.chatModelProvider=typeof t.modelProvider=="string"?t.modelProvider:null,e.chatModel=typeof t.model=="string"?t.model:null,e.chatVerboseLevel=typeof t.verboseLevel=="string"?t.verboseLevel:null,e.chatFillerEnabled=typeof t.fillerEnabled=="boolean"?t.fillerEnabled:null}catch(t){e.lastError=String(t)}finally{e.chatLoading=!1}}}function Cd(e){const t=/^data:([^;]+);base64,(.+)$/.exec(e);return t?{mimeType:t[1],content:t[2]}:null}async function ml(e,t,n){if(e.chatSuggestion=null,!e.client||!e.connected)return!1;const i=t.trim(),s=n&&n.length>0;if(!i&&!s)return!1;const r=Date.now(),o=(n??[]).filter(v=>!v.fileName),a=(n??[]).filter(v=>v.fileName),c=[],u=a.map(v=>v.fileName).filter(Boolean);if(u.length>0){const v=i?`${u.join(", ")}
5
+ `);const s=bd(e);if(!s)return null;const o=[...s.matchAll(/<\s*think(?:ing)?\s*>([\s\S]*?)<\s*\/\s*think(?:ing)?\s*>/gi)].map(a=>(a[1]??"").trim()).filter(Boolean);return o.length>0?o.join(`
6
+ `):null}function vd(e){if(!e||typeof e!="object")return Ao(e);const t=e;if(Qi.has(t))return Qi.get(t)??null;const n=Ao(e);return Qi.set(t,n),n}function bd(e){const t=e,n=t.content;if(typeof n=="string")return n;if(Array.isArray(n)){const i=n.map(s=>{const r=s;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(s=>typeof s=="string");if(i.length>0)return i.join(`
7
+ `)}return typeof t.text=="string"?t.text:null}function wd(e){const t=e.trim();if(!t)return"";const n=t.split(/\r?\n/).map(i=>i.trim()).filter(Boolean).map(i=>`_${i}_`);return n.length?["_Reasoning:_",...n].join(`
8
+ `):""}const kd=/Read HEARTBEAT\.md if it exists|reply HEARTBEAT_OK/i,Sd=/^[\s*`_]*HEARTBEAT_OK[\s*`_]*$/i,Ad=/^[\s*`_]*NO_REPLY[\s*`_]*$/i,xd=/^A new session was started via \/new or \/reset\./;function $d(e){const t=e,n=typeof t.role=="string"?t.role:"";let i="";typeof t.content=="string"?i=t.content:Array.isArray(t.content)?i=t.content.filter(r=>typeof r=="object"&&r!==null).map(r=>r.text??"").join(" "):typeof t.text=="string"&&(i=t.text);const s=i.trim();return s?!!(n==="user"&&kd.test(s)||n==="assistant"&&Sd.test(s)||n==="user"&&xd.test(s)||n==="assistant"&&Ad.test(s)):!1}function Ed(e){return e.filter(t=>!$d(t))}function hl(e){const t=e;let n=typeof t.role=="string"?t.role:"unknown";const i=typeof t.toolCallId=="string"||typeof t.tool_call_id=="string",s=t.content,r=Array.isArray(s)?s:null,o=Array.isArray(r)&&r.some(d=>{const v=String(d.type??"").toLowerCase();return v==="toolresult"||v==="tool_result"}),a=typeof t.toolName=="string"||typeof t.tool_name=="string";(i||o||a)&&(n="toolResult");let c=[];typeof t.content=="string"?c=[{type:"text",text:t.content}]:Array.isArray(t.content)?c=t.content.map(d=>({type:d.type||"text",text:d.text,name:d.name,args:d.args||d.arguments})):typeof t.text=="string"&&(c=[{type:"text",text:t.text}]);const u=typeof t.timestamp=="number"?t.timestamp:Date.now(),l=typeof t.id=="string"?t.id:void 0;return{role:n,content:c,timestamp:u,id:l}}function fl(e){const t=e.toLowerCase();return e==="user"||e==="User"?e:e==="assistant"?"assistant":e==="system"?"system":t==="toolresult"||t==="tool_result"||t==="tool"||t==="function"?"tool":e}function gl(e){const t=e,n=typeof t.role=="string"?t.role.toLowerCase():"";return n==="toolresult"||n==="tool_result"}function xo(e){e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t="";for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,"0");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}function Td(){const e=new Uint8Array(16),t=Date.now();for(let n=0;n<e.length;n++)e[n]=Math.floor(Math.random()*256);return e[0]^=t&255,e[1]^=t>>>8&255,e[2]^=t>>>16&255,e[3]^=t>>>24&255,e}function tr(e=globalThis.crypto){if(e&&typeof e.randomUUID=="function")return e.randomUUID();if(e&&typeof e.getRandomValues=="function"){const t=new Uint8Array(16);return e.getRandomValues(t),xo(t)}return xo(Td())}async function _e(e){if(!(!e.client||!e.connected)){e.chatLoading=!0,e.lastError=null;try{const t=await e.client.request("chat.history",{sessionKey:e.sessionKey,limit:5e3}),n=Array.isArray(t.messages)?t.messages:[];e.chatMessages=Ed(n),e.chatThinkingLevel=t.thinkingLevel??null,e.chatModelProvider=typeof t.modelProvider=="string"?t.modelProvider:null,e.chatModel=typeof t.model=="string"?t.model:null,e.chatVerboseLevel=typeof t.verboseLevel=="string"?t.verboseLevel:null,e.chatFillerEnabled=typeof t.fillerEnabled=="boolean"?t.fillerEnabled:null}catch(t){e.lastError=String(t)}finally{e.chatLoading=!1}}}function Cd(e){const t=/^data:([^;]+);base64,(.+)$/.exec(e);return t?{mimeType:t[1],content:t[2]}:null}async function ml(e,t,n){if(e.chatSuggestion=null,!e.client||!e.connected)return!1;const i=t.trim(),s=n&&n.length>0;if(!i&&!s)return!1;const r=Date.now(),o=(n??[]).filter(v=>!v.fileName),a=(n??[]).filter(v=>v.fileName),c=[],u=a.map(v=>v.fileName).filter(Boolean);if(u.length>0){const v=i?`${u.join(", ")}
9
9
 
10
- ${i}`:u.join(", ");c.push({type:"text",text:v})}else i&&c.push({type:"text",text:i});for(const v of o)c.push({type:"image",source:{type:"base64",media_type:v.mimeType,data:v.dataUrl}});e.chatMessages=[...e.chatMessages,{role:"user",content:c,timestamp:r}],e.chatSending=!0,e.lastError=null;const l=tr();e.chatRunId=l,e.chatStream="",e.chatStreamStartedAt=r;const d=[...o,...a],h=d.length>0?d.map(v=>{if(v.textContent)return{type:"document",mimeType:v.mimeType||"text/plain",fileName:v.fileName,content:btoa(unescape(encodeURIComponent(v.textContent)))};const y=Cd(v.dataUrl);return y?{type:v.fileName?"document":"image",mimeType:y.mimeType,fileName:v.fileName,content:y.content}:null}).filter(v=>v!==null):void 0;try{return await e.client.request("chat.send",{sessionKey:e.sessionKey,message:i,deliver:!1,idempotencyKey:l,attachments:h}),!0}catch(v){const y=String(v);return e.chatRunId=null,e.chatStream=null,e.chatStreamStartedAt=null,e.lastError=y,e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:"Error: "+y}],timestamp:Date.now()}],!1}finally{e.chatSending=!1}}async function yl(e){if(!e.client||!e.connected)return!1;const t=e.chatRunId;try{return await e.client.request("chat.abort",t?{sessionKey:e.sessionKey,runId:t}:{sessionKey:e.sessionKey}),!0}catch(n){return e.lastError=String(n),!1}}function vl(e,t){var n,i;if(!t||t.sessionKey!==e.sessionKey)return null;if(t.runId&&e.chatRunId&&t.runId!==e.chatRunId)return t.state==="final"?"final":null;if(t.state==="working"){const r=(t.message?(n=sn(t.message))==null?void 0:n.trim():void 0)||((i=e.chatStream)==null?void 0:i.trim());return r&&(e.chatInterimText=e.chatInterimText?`${e.chatInterimText}
10
+ ${i}`:u.join(", ");c.push({type:"text",text:v})}else i&&c.push({type:"text",text:i});for(const v of o)c.push({type:"image",source:{type:"base64",media_type:v.mimeType,data:v.dataUrl}});e.chatMessages=[...e.chatMessages,{role:"user",content:c,timestamp:r}],e.chatSending=!0,e.lastError=null;const l=tr();e.chatRunId=l,e.chatStream="",e.chatStreamStartedAt=r;const d=[...o,...a],h=d.length>0?d.map(v=>{if(v.textContent)return{type:"document",mimeType:v.mimeType||"text/plain",fileName:v.fileName,content:btoa(unescape(encodeURIComponent(v.textContent)))};const f=Cd(v.dataUrl);return f?{type:v.fileName?"document":"image",mimeType:f.mimeType,fileName:v.fileName,content:f.content}:null}).filter(v=>v!==null):void 0;try{return await e.client.request("chat.send",{sessionKey:e.sessionKey,message:i,deliver:!1,idempotencyKey:l,attachments:h}),!0}catch(v){const f=String(v);return e.chatRunId=null,e.chatStream=null,e.chatStreamStartedAt=null,e.lastError=f,e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:"Error: "+f}],timestamp:Date.now()}],!1}finally{e.chatSending=!1}}async function yl(e){if(!e.client||!e.connected)return!1;const t=e.chatRunId;try{return await e.client.request("chat.abort",t?{sessionKey:e.sessionKey,runId:t}:{sessionKey:e.sessionKey}),!0}catch(n){return e.lastError=String(n),!1}}function vl(e,t){var n,i;if(!t||t.sessionKey!==e.sessionKey)return null;if(t.runId&&e.chatRunId&&t.runId!==e.chatRunId)return t.state==="final"?"final":null;if(t.state==="working"){const r=(t.message?(n=sn(t.message))==null?void 0:n.trim():void 0)||((i=e.chatStream)==null?void 0:i.trim());return r&&(e.chatInterimText=e.chatInterimText?`${e.chatInterimText}
11
11
 
12
- ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.message);return typeof s=="string"&&s.trim()&&(e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:s.trim()}],timestamp:Date.now(),filler:!0}]),"block"}else if(t.state==="delta"){e.chatSuggestion=null;const s=sn(t.message);if(typeof s=="string"){if(s.trim()==="NO_REPLY")return null;const r=e.chatStream??"";(!r||s.length>=r.length)&&(e.chatStream=s)}}else t.state==="final"||t.state==="aborted"?(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null):t.state==="error"&&(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null,e.lastError=t.errorMessage??"chat error");return t.state}const $s=Object.freeze(Object.defineProperty({__proto__:null,abortChatRun:yl,handleChatEvent:vl,loadChatHistory:Te,sendChatMessage:ml},Symbol.toStringTag,{value:"Module"}));async function nr(e){if(!(!e.client||!e.connected)&&!e.sessionsLoading){e.sessionsLoading=!0,e.sessionsError=null;try{const t={includeGlobal:e.sessionsIncludeGlobal??!0,includeUnknown:e.sessionsIncludeUnknown??!1},n=ti(e.sessionsFilterActive??"",0),i=ti(e.sessionsFilterLimit??"",0);n>0&&(t.activeMinutes=n),i>0&&(t.limit=i);const s=await e.client.request("sessions.list",t);s&&(e.sessionsResult=s)}catch(t){e.sessionsError=String(t)}finally{e.sessionsLoading=!1}}}async function Ln(e,t,n){if(!e.client||!e.connected)return;const i={key:t};"label"in n&&(i.label=n.label),"thinkingLevel"in n&&(i.thinkingLevel=n.thinkingLevel),"verboseLevel"in n&&(i.verboseLevel=n.verboseLevel),"reasoningLevel"in n&&(i.reasoningLevel=n.reasoningLevel),"model"in n&&(i.model=n.model),"fillerEnabled"in n&&(i.fillerEnabled=n.fillerEnabled);try{await e.client.request("sessions.patch",i),await nr(e)}catch(s){e.sessionsError=String(s)}}const $o=50,Td=80,_d=12e4;function Md(e){if(!e||typeof e!="object")return null;const t=e;if(typeof t.text=="string")return t.text;const n=t.content;if(!Array.isArray(n))return null;const i=n.map(s=>{if(!s||typeof s!="object")return null;const r=s;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(s=>!!s);return i.length===0?null:i.join(`
13
- `)}function Eo(e){if(e==null)return null;if(typeof e=="number"||typeof e=="boolean")return String(e);const t=Md(e);let n;if(typeof e=="string")n=e;else if(t)n=t;else try{n=JSON.stringify(e,null,2)}catch{n=String(e)}const i=dl(n,_d);return i.truncated?`${i.text}
12
+ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.message);return typeof s=="string"&&s.trim()&&(e.chatMessages=[...e.chatMessages,{role:"assistant",content:[{type:"text",text:s.trim()}],timestamp:Date.now(),filler:!0}]),"block"}else if(t.state==="delta"){e.chatSuggestion=null;const s=sn(t.message);if(typeof s=="string"){if(s.trim()==="NO_REPLY")return null;const r=e.chatStream??"";(!r||s.length>=r.length)&&(e.chatStream=s)}}else t.state==="final"||t.state==="aborted"?(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null):t.state==="error"&&(e.chatStream=null,e.chatRunId=null,e.chatStreamStartedAt=null,e.chatInterimText=null,e.lastError=t.errorMessage??"chat error");return t.state}const $s=Object.freeze(Object.defineProperty({__proto__:null,abortChatRun:yl,handleChatEvent:vl,loadChatHistory:_e,sendChatMessage:ml},Symbol.toStringTag,{value:"Module"}));async function nr(e){if(!(!e.client||!e.connected)&&!e.sessionsLoading){e.sessionsLoading=!0,e.sessionsError=null;try{const t={includeGlobal:e.sessionsIncludeGlobal??!0,includeUnknown:e.sessionsIncludeUnknown??!1},n=ti(e.sessionsFilterActive??"",0),i=ti(e.sessionsFilterLimit??"",0);n>0&&(t.activeMinutes=n),i>0&&(t.limit=i);const s=await e.client.request("sessions.list",t);s&&(e.sessionsResult=s)}catch(t){e.sessionsError=String(t)}finally{e.sessionsLoading=!1}}}async function Ln(e,t,n){if(!e.client||!e.connected)return;const i={key:t};"label"in n&&(i.label=n.label),"thinkingLevel"in n&&(i.thinkingLevel=n.thinkingLevel),"verboseLevel"in n&&(i.verboseLevel=n.verboseLevel),"reasoningLevel"in n&&(i.reasoningLevel=n.reasoningLevel),"model"in n&&(i.model=n.model),"fillerEnabled"in n&&(i.fillerEnabled=n.fillerEnabled);try{await e.client.request("sessions.patch",i),await nr(e)}catch(s){e.sessionsError=String(s)}}const $o=50,_d=80,Md=12e4;function Pd(e){if(!e||typeof e!="object")return null;const t=e;if(typeof t.text=="string")return t.text;const n=t.content;if(!Array.isArray(n))return null;const i=n.map(s=>{if(!s||typeof s!="object")return null;const r=s;return r.type==="text"&&typeof r.text=="string"?r.text:null}).filter(s=>!!s);return i.length===0?null:i.join(`
13
+ `)}function Eo(e){if(e==null)return null;if(typeof e=="number"||typeof e=="boolean")return String(e);const t=Pd(e);let n;if(typeof e=="string")n=e;else if(t)n=t;else try{n=JSON.stringify(e,null,2)}catch{n=String(e)}const i=dl(n,Md);return i.truncated?`${i.text}
14
14
 
15
- … truncated (${i.total} chars, showing first ${i.text.length}).`:i.text}function Pd(e){const t=[];return t.push({type:"toolcall",name:e.name,arguments:e.args??{}}),e.output&&t.push({type:"toolresult",name:e.name,text:e.output}),{role:"assistant",toolCallId:e.toolCallId,runId:e.runId,content:t,timestamp:e.startedAt}}function Ld(e){if(e.toolStreamOrder.length<=$o)return;const t=e.toolStreamOrder.length-$o,n=e.toolStreamOrder.splice(0,t);for(const i of n)e.toolStreamById.delete(i)}function Id(e){e.chatToolMessages=e.toolStreamOrder.map(t=>{var n;return(n=e.toolStreamById.get(t))==null?void 0:n.message}).filter(t=>!!t)}function Es(e){e.toolStreamSyncTimer!=null&&(clearTimeout(e.toolStreamSyncTimer),e.toolStreamSyncTimer=null),Id(e)}function Rd(e,t=!1){if(t){Es(e);return}e.toolStreamSyncTimer==null&&(e.toolStreamSyncTimer=window.setTimeout(()=>Es(e),Td))}function ir(e){e.toolStreamById.clear(),e.toolStreamOrder=[],e.chatToolMessages=[],Es(e)}const Nd=5e3;function Dd(e,t){var s;const n=t.data??{},i=typeof n.phase=="string"?n.phase:"";e.compactionClearTimer!=null&&(window.clearTimeout(e.compactionClearTimer),e.compactionClearTimer=null),i==="start"?e.compactionStatus={active:!0,startedAt:Date.now(),completedAt:null}:i==="end"&&(e.compactionStatus={active:!1,startedAt:((s=e.compactionStatus)==null?void 0:s.startedAt)??null,completedAt:Date.now()},e.compactionClearTimer=window.setTimeout(()=>{e.compactionStatus=null,e.compactionClearTimer=null},Nd))}function Od(e,t){if(!t)return;if(t.stream==="compaction"){Dd(e,t);return}if(t.stream!=="tool")return;const n=typeof t.sessionKey=="string"?t.sessionKey:void 0;if(n&&n!==e.sessionKey||!n&&e.chatRunId&&t.runId!==e.chatRunId||e.chatRunId&&t.runId!==e.chatRunId||!e.chatRunId)return;const i=t.data??{},s=typeof i.toolCallId=="string"?i.toolCallId:"";if(!s)return;const r=typeof i.name=="string"?i.name:"tool",o=typeof i.phase=="string"?i.phase:"",a=o==="start"?i.args:void 0,c=o==="update"?Eo(i.partialResult):o==="result"?Eo(i.result):void 0,u=Date.now();let l=e.toolStreamById.get(s);l?(l.name=r,a!==void 0&&(l.args=a),c!==void 0&&(l.output=c),l.updatedAt=u):(l={toolCallId:s,runId:t.runId,sessionKey:n,name:r,args:a,output:c,startedAt:typeof t.ts=="number"?t.ts:u,updatedAt:u,message:{}},e.toolStreamById.set(s,l),e.toolStreamOrder.push(s)),l.message=Pd(l),Ld(e),Rd(e,o==="result")}function fn(e,t=!1){e.chatScrollFrame&&cancelAnimationFrame(e.chatScrollFrame),e.chatScrollTimeout!=null&&(clearTimeout(e.chatScrollTimeout),e.chatScrollTimeout=null);const n=()=>{const i=e.querySelector(".chat-thread");if(i){const s=getComputedStyle(i).overflowY;if(s==="auto"||s==="scroll"||i.scrollHeight-i.clientHeight>1)return i}return document.scrollingElement??document.documentElement};e.updateComplete.then(()=>{e.chatScrollFrame=requestAnimationFrame(()=>{e.chatScrollFrame=null;const i=n();if(!i)return;const s=i.scrollHeight-i.scrollTop-i.clientHeight;if(!(t||e.chatUserNearBottom||s<200))return;t&&(e.chatHasAutoScrolled=!0),i.scrollTop=i.scrollHeight,e.chatUserNearBottom=!0;const o=t?150:120;e.chatScrollTimeout=window.setTimeout(()=>{e.chatScrollTimeout=null;const a=n();if(!a)return;const c=a.scrollHeight-a.scrollTop-a.clientHeight;(t||e.chatUserNearBottom||c<200)&&(a.scrollTop=a.scrollHeight,e.chatUserNearBottom=!0)},o)})})}function bl(e,t=!1){e.logsScrollFrame&&cancelAnimationFrame(e.logsScrollFrame),e.updateComplete.then(()=>{e.logsScrollFrame=requestAnimationFrame(()=>{e.logsScrollFrame=null;const n=e.querySelector(".log-stream");!n||!(t||n.scrollTop<80)||(n.scrollTop=0)})})}function Bd(e,t){const n=t.currentTarget;if(!n)return;const i=n.scrollHeight-n.scrollTop-n.clientHeight;e.chatUserNearBottom=i<200}function Fd(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function Ud(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function Wd(e){e.chatHasAutoScrolled=!1,e.chatUserNearBottom=!0}function Kd(e,t){if(e.length===0)return;const n=new Blob([`${e.join(`
15
+ … truncated (${i.total} chars, showing first ${i.text.length}).`:i.text}function Ld(e){const t=[];return t.push({type:"toolcall",name:e.name,arguments:e.args??{}}),e.output&&t.push({type:"toolresult",name:e.name,text:e.output}),{role:"assistant",toolCallId:e.toolCallId,runId:e.runId,content:t,timestamp:e.startedAt}}function Id(e){if(e.toolStreamOrder.length<=$o)return;const t=e.toolStreamOrder.length-$o,n=e.toolStreamOrder.splice(0,t);for(const i of n)e.toolStreamById.delete(i)}function Rd(e){e.chatToolMessages=e.toolStreamOrder.map(t=>{var n;return(n=e.toolStreamById.get(t))==null?void 0:n.message}).filter(t=>!!t)}function Es(e){e.toolStreamSyncTimer!=null&&(clearTimeout(e.toolStreamSyncTimer),e.toolStreamSyncTimer=null),Rd(e)}function Nd(e,t=!1){if(t){Es(e);return}e.toolStreamSyncTimer==null&&(e.toolStreamSyncTimer=window.setTimeout(()=>Es(e),_d))}function ir(e){e.toolStreamById.clear(),e.toolStreamOrder=[],e.chatToolMessages=[],Es(e)}const Dd=5e3;function Od(e,t){var s;const n=t.data??{},i=typeof n.phase=="string"?n.phase:"";e.compactionClearTimer!=null&&(window.clearTimeout(e.compactionClearTimer),e.compactionClearTimer=null),i==="start"?e.compactionStatus={active:!0,startedAt:Date.now(),completedAt:null}:i==="end"&&(e.compactionStatus={active:!1,startedAt:((s=e.compactionStatus)==null?void 0:s.startedAt)??null,completedAt:Date.now()},e.compactionClearTimer=window.setTimeout(()=>{e.compactionStatus=null,e.compactionClearTimer=null},Dd))}function Bd(e,t){if(!t)return;if(t.stream==="compaction"){Od(e,t);return}if(t.stream!=="tool")return;const n=typeof t.sessionKey=="string"?t.sessionKey:void 0;if(n&&n!==e.sessionKey||!n&&e.chatRunId&&t.runId!==e.chatRunId||e.chatRunId&&t.runId!==e.chatRunId||!e.chatRunId)return;const i=t.data??{},s=typeof i.toolCallId=="string"?i.toolCallId:"";if(!s)return;const r=typeof i.name=="string"?i.name:"tool",o=typeof i.phase=="string"?i.phase:"",a=o==="start"?i.args:void 0,c=o==="update"?Eo(i.partialResult):o==="result"?Eo(i.result):void 0,u=Date.now();let l=e.toolStreamById.get(s);l?(l.name=r,a!==void 0&&(l.args=a),c!==void 0&&(l.output=c),l.updatedAt=u):(l={toolCallId:s,runId:t.runId,sessionKey:n,name:r,args:a,output:c,startedAt:typeof t.ts=="number"?t.ts:u,updatedAt:u,message:{}},e.toolStreamById.set(s,l),e.toolStreamOrder.push(s)),l.message=Ld(l),Id(e),Nd(e,o==="result")}function fn(e,t=!1){e.chatScrollFrame&&cancelAnimationFrame(e.chatScrollFrame),e.chatScrollTimeout!=null&&(clearTimeout(e.chatScrollTimeout),e.chatScrollTimeout=null);const n=()=>{const i=e.querySelector(".chat-thread");if(i){const s=getComputedStyle(i).overflowY;if(s==="auto"||s==="scroll"||i.scrollHeight-i.clientHeight>1)return i}return document.scrollingElement??document.documentElement};e.updateComplete.then(()=>{e.chatScrollFrame=requestAnimationFrame(()=>{e.chatScrollFrame=null;const i=n();if(!i)return;const s=i.scrollHeight-i.scrollTop-i.clientHeight;if(!(t||e.chatUserNearBottom||s<200))return;t&&(e.chatHasAutoScrolled=!0),i.scrollTop=i.scrollHeight,e.chatUserNearBottom=!0;const o=t?150:120;e.chatScrollTimeout=window.setTimeout(()=>{e.chatScrollTimeout=null;const a=n();if(!a)return;const c=a.scrollHeight-a.scrollTop-a.clientHeight;(t||e.chatUserNearBottom||c<200)&&(a.scrollTop=a.scrollHeight,e.chatUserNearBottom=!0)},o)})})}function bl(e,t=!1){e.logsScrollFrame&&cancelAnimationFrame(e.logsScrollFrame),e.updateComplete.then(()=>{e.logsScrollFrame=requestAnimationFrame(()=>{e.logsScrollFrame=null;const n=e.querySelector(".log-stream");!n||!(t||n.scrollTop<80)||(n.scrollTop=0)})})}function Fd(e,t){const n=t.currentTarget;if(!n)return;const i=n.scrollHeight-n.scrollTop-n.clientHeight;e.chatUserNearBottom=i<200}function Ud(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function Wd(e,t){const n=t.currentTarget;n&&(e.logsAtBottom=n.scrollTop<80)}function Kd(e){e.chatHasAutoScrolled=!1,e.chatUserNearBottom=!0}function zd(e,t){if(e.length===0)return;const n=new Blob([`${e.join(`
16
16
  `)}
17
- `],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function zd(e,t){if(e.length===0)return;const n=new Blob([`${e.join(`
17
+ `],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function jd(e,t){if(e.length===0)return;const n=new Blob([`${e.join(`
18
18
  `)}
19
- `],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-session-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function jd(e){if(typeof ResizeObserver>"u")return;const t=e.querySelector(".topbar");if(!t)return;const n=()=>{const{height:i}=t.getBoundingClientRect();e.style.setProperty("--topbar-height",`${i}px`)};n(),e.topbarObserver=new ResizeObserver(()=>n()),e.topbarObserver.observe(t)}function He(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function st(e){return`${JSON.stringify(e,null,2).trimEnd()}
20
- `}function wl(e,t,n){if(t.length===0)return;let i=e;for(let r=0;r<t.length-1;r+=1){const o=t[r],a=t[r+1];if(typeof o=="number"){if(!Array.isArray(i))return;i[o]==null&&(i[o]=typeof a=="number"?[]:{}),i=i[o]}else{if(typeof i!="object"||i==null)return;const c=i;c[o]==null&&(c[o]=typeof a=="number"?[]:{}),i=c[o]}}const s=t[t.length-1];if(typeof s=="number"){Array.isArray(i)&&(i[s]=n);return}typeof i=="object"&&i!=null&&(i[s]=n)}async function _e(e){if(!(!e.client||!e.connected)){e.configLoading=!0,e.lastError=null;try{const t=await e.client.request("config.get",{});qd(e,t)}catch(t){e.lastError=String(t)}finally{e.configLoading=!1}}}async function kl(e){if(!(!e.client||!e.connected)&&!e.configSchemaLoading){e.configSchemaLoading=!0;try{const t=await e.client.request("config.schema",{});Hd(e,t)}catch(t){e.lastError=String(t)}finally{e.configSchemaLoading=!1}}}function Hd(e,t){e.configSchema=t.schema??null,e.configUiHints=t.uiHints??{},e.configSchemaVersion=t.version??null}function qd(e,t){e.configSnapshot=t;const n=typeof t.raw=="string"?t.raw:t.config&&typeof t.config=="object"?st(t.config):e.configRaw;!e.configFormDirty||e.configFormMode==="raw"?e.configRaw=n:e.configForm?e.configRaw=st(e.configForm):e.configRaw=n,e.configValid=typeof t.valid=="boolean"?t.valid:null,e.configIssues=Array.isArray(t.issues)?t.issues:[],e.configFormDirty||(e.configForm=He(t.config??{}),e.configFormOriginal=He(t.config??{}),e.configRawOriginal=n)}async function Vd(e){var t;if(!(!e.client||!e.connected)){e.configSaving=!0,e.lastError=null;try{const n=e.configFormMode==="form"&&e.configForm?st(e.configForm):e.configRaw,i=(t=e.configSnapshot)==null?void 0:t.hash;if(!i){e.lastError="Config hash missing; reload and retry.";return}await e.client.request("config.set",{raw:n,baseHash:i}),e.configFormDirty=!1,await _e(e)}catch(n){e.lastError=String(n)}finally{e.configSaving=!1}}}async function gn(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("cron.status",{});e.cronStatus=t}catch(t){e.cronError=String(t)}}async function ki(e){if(!(!e.client||!e.connected)&&!e.cronLoading){e.cronLoading=!0,e.cronError=null;try{const t={includeDisabled:!0};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(t.agentIds=e.workspaceAgentIds);const n=await e.client.request("cron.list",t);e.cronJobs=Array.isArray(n.jobs)?n.jobs:[]}catch(t){e.cronError=String(t)}finally{e.cronLoading=!1}}}function Gd(e){if(e.scheduleKind==="at"){const n=Date.parse(e.scheduleAt);if(!Number.isFinite(n))throw new Error("Invalid run time.");return{kind:"at",atMs:n}}if(e.scheduleKind==="every"){const n=ti(e.everyAmount,0);if(n<=0)throw new Error("Invalid interval amount.");const i=e.everyUnit;return{kind:"every",everyMs:n*(i==="minutes"?6e4:i==="hours"?36e5:864e5)}}const t=e.cronExpr.trim();if(!t)throw new Error("Cron expression required.");return{kind:"cron",expr:t,tz:e.cronTz.trim()||void 0}}function Qd(e){if(e.payloadKind==="systemEvent"){const s=e.payloadText.trim();if(!s)throw new Error("System event text required.");return{kind:"systemEvent",text:s}}const t=e.payloadText.trim();if(!t)throw new Error("Agent message required.");const n={kind:"agentTurn",message:t};e.deliver&&(n.deliver=!0),e.channel&&(n.channel=e.channel),e.to.trim()&&(n.to=e.to.trim());const i=ti(e.timeoutSeconds,0);return i>0&&(n.timeoutSeconds=i),n}async function Yd(e){var t;if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=Gd(e.cronForm),i=Qd(e.cronForm),s=e.cronForm.agentId.trim(),r=(t=e.cronForm.accountId)==null?void 0:t.trim(),o={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:s||void 0,accountId:r||void 0,enabled:e.cronForm.enabled,schedule:n,sessionTarget:e.cronForm.sessionTarget,wakeMode:e.cronForm.wakeMode,payload:i,isolation:e.cronForm.postToMainPrefix.trim()&&e.cronForm.sessionTarget==="isolated"?{postToMainPrefix:e.cronForm.postToMainPrefix.trim()}:void 0};if(!o.name)throw new Error("Name required.");await e.client.request("cron.add",o),e.cronForm={...e.cronForm,name:"",description:"",payloadText:""},await ki(e),await gn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Xd(e,t,n){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.update",{id:t.id,patch:{enabled:n}}),await ki(e),await gn(e)}catch(i){e.cronError=String(i)}finally{e.cronBusy=!1}}}async function Zd(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.run",{id:t.id,mode:"force"}),await Cs(e,t.id)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Jd(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.remove",{id:t.id}),e.cronRunsJobId===t.id&&(e.cronRunsJobId=null,e.cronRuns=[]),await ki(e),await gn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Cs(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("cron.runs",{id:t,limit:50});e.cronRunsJobId=t,e.cronRuns=Array.isArray(n.entries)?n.entries:[]}catch(n){e.cronError=String(n)}}async function V(e,t){if(!(!e.client||!e.connected)&&!e.channelsLoading){e.channelsLoading=!0,e.channelsError=null;try{const n=await e.client.request("channels.status",{probe:t,timeoutMs:8e3});e.channelsSnapshot=n,e.channelsLastSuccess=Date.now()}catch(n){e.channelsError=String(n)}finally{e.channelsLoading=!1}}}async function sr(e,t,n){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0,e.whatsappActiveQrAccountId=n??null;try{const i=await e.client.request("web.login.start",{force:t,timeoutMs:3e4,accountId:n});e.whatsappLoginMessage=i.message??null,e.whatsappLoginQrDataUrl=i.qrDataUrl??null,e.whatsappLoginConnected=null}catch(i){e.whatsappLoginMessage=String(i),e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function Sl(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{const n=await e.client.request("web.login.wait",{timeoutMs:12e4,accountId:t});e.whatsappLoginMessage=n.message??null,e.whatsappLoginConnected=n.connected??null,n.connected&&(e.whatsappLoginQrDataUrl=null,e.whatsappActiveQrAccountId=null,e.whatsappPairedPhone=n.selfPhone??null)}catch(n){e.whatsappLoginMessage=String(n),e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function Al(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t}),e.whatsappLoginMessage="Logged out.",e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null}catch(n){e.whatsappLoginMessage=String(n)}finally{e.whatsappBusy=!1}}}async function xl(e,t){if(!e.client||!e.connected||e.whatsappAccountSaving)return;const n=t.trim();if(!n){e.whatsappAccountError="Account name is required.";return}const i=n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");if(!i){e.whatsappAccountError="Invalid account name.";return}e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const s=await e.client.request("config.get",{});e.configSnapshot=s;const r=He(s.config??{});(!r.channels||typeof r.channels!="object")&&(r.channels={});const o=r.channels;(!o.whatsapp||typeof o.whatsapp!="object")&&(o.whatsapp={});const a=o.whatsapp;(!a.accounts||typeof a.accounts!="object")&&(a.accounts={});const c=a.accounts;if(c[i]){e.whatsappAccountError=`Account "${i}" already exists.`;return}c[i]={name:n,provider:"baileys"};const u=s.hash;if(!u){e.whatsappAccountError="Config hash missing; reload and retry.";return}const l=st(r);await e.client.request("config.set",{raw:l,baseHash:u}),e.addingWhatsAppAccount=!1,e.newWhatsAppAccountName="",await V(e,!0),await sr(e,!0,i)}catch(s){e.whatsappAccountError=String(s)}finally{e.whatsappAccountSaving=!1}}async function $l(e,t){if(!(!e.client||!e.connected)&&!e.whatsappAccountSaving){e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=He(n.config??{}),s=i.channels,r=s==null?void 0:s.whatsapp,o=r==null?void 0:r.accounts;if(!o){e.whatsappAccountError="No accounts found in config.";return}if(Object.keys(o).length<=1){e.whatsappAccountError="Cannot remove the last account.";return}if(!o[t]){e.whatsappAccountError=`Account "${t}" not found.`;return}try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t})}catch{}delete o[t],Array.isArray(i.bindings)&&(i.bindings=i.bindings.filter(l=>{const d=l.match;return!d||d.channel!=="whatsapp"?!0:d.accountId!==t}));const c=n.hash;if(!c){e.whatsappAccountError="Config hash missing; reload and retry.";return}const u=st(i);await e.client.request("config.set",{raw:u,baseHash:c}),e.whatsappActiveQrAccountId===t&&(e.whatsappActiveQrAccountId=null,e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null),await V(e,!0)}catch(n){e.whatsappAccountError=String(n)}finally{e.whatsappAccountSaving=!1}}}const ep=Object.freeze(Object.defineProperty({__proto__:null,addWhatsAppAccount:xl,loadChannels:V,logoutWhatsApp:Al,removeWhatsAppAccount:$l,startWhatsAppLogin:sr,waitWhatsAppLogin:Sl},Symbol.toStringTag,{value:"Module"}));async function rr(e){if(!(!e.client||!e.connected)&&!e.debugLoading){e.debugLoading=!0;try{const[t,n,i,s]=await Promise.all([e.client.request("status",{}),e.client.request("health",{}),e.client.request("models.list",{}),e.client.request("last-heartbeat",{})]);e.debugStatus=t,e.debugHealth=n;const r=i;e.debugModels=Array.isArray(r==null?void 0:r.models)?r==null?void 0:r.models:[],e.debugHeartbeat=s}catch(t){e.debugCallError=String(t)}finally{e.debugLoading=!1}}}const tp=2e3,np=new Set(["trace","debug","info","warn","error","fatal"]);function ip(e){if(typeof e!="string")return null;const t=e.trim();if(!t.startsWith("{")||!t.endsWith("}"))return null;try{const n=JSON.parse(t);return!n||typeof n!="object"?null:n}catch{return null}}function sp(e){if(typeof e!="string")return null;const t=e.toLowerCase();return np.has(t)?t:null}function El(e){if(!e.trim())return{raw:e,message:e};try{const t=JSON.parse(e),n=t&&typeof t._meta=="object"&&t._meta!==null?t._meta:null,i=typeof t.time=="string"?t.time:typeof(n==null?void 0:n.date)=="string"?n==null?void 0:n.date:null,s=sp((n==null?void 0:n.logLevelName)??(n==null?void 0:n.level)),r=typeof t[0]=="string"?t[0]:typeof(n==null?void 0:n.name)=="string"?n==null?void 0:n.name:null,o=ip(r);let a=null;o&&(typeof o.subsystem=="string"?a=o.subsystem:typeof o.module=="string"&&(a=o.module)),!a&&r&&r.length<120&&(a=r);let c=null;return typeof t[1]=="string"?c=t[1]:!o&&typeof t[0]=="string"?c=t[0]:typeof t.message=="string"&&(c=t.message),{raw:e,time:i,level:s,subsystem:a,message:c??e,meta:n??void 0}}catch{return{raw:e,message:e}}}async function Et(e,t){if(!(!e.client||!e.connected)&&!(e.logsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.logsLoading=!0),e.logsError=null;try{const i=await e.client.request("logs.tail",{cursor:t!=null&&t.reset?void 0:e.logsCursor??void 0,limit:e.logsLimit,maxBytes:e.logsMaxBytes}),r=(Array.isArray(i.lines)?i.lines.filter(a=>typeof a=="string"):[]).map(El),o=!!(t!=null&&t.reset||i.reset||e.logsCursor==null);e.logsEntries=o?r:[...e.logsEntries,...r].slice(-tp),typeof i.cursor=="number"&&(e.logsCursor=i.cursor),typeof i.file=="string"&&(e.logsFile=i.file),e.logsTruncated=!!i.truncated,e.logsLastFetchAt=Date.now()}catch(n){e.logsError=String(n)}finally{t!=null&&t.quiet||(e.logsLoading=!1)}}}const rp=Object.freeze(Object.defineProperty({__proto__:null,loadLogs:Et,parseLogLine:El},Symbol.toStringTag,{value:"Module"}));const Cl={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:re,n:Vn,Gx:Co,Gy:To,a:Xi,d:Zi,h:op}=Cl,rt=32,or=64,ap=(...e)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...e)},ee=(e="")=>{const t=new Error(e);throw ap(t,ee),t},lp=e=>typeof e=="bigint",cp=e=>typeof e=="string",up=e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array",Ve=(e,t,n="")=>{const i=up(e),s=e==null?void 0:e.length,r=t!==void 0;if(!i||r&&s!==t){const o=n&&`"${n}" `,a=r?` of length ${t}`:"",c=i?`length=${s}`:`type=${typeof e}`;ee(o+"expected Uint8Array"+a+", got "+c)}return e},Si=e=>new Uint8Array(e),Tl=e=>Uint8Array.from(e),_l=(e,t)=>e.toString(16).padStart(t,"0"),Ml=e=>Array.from(Ve(e)).map(t=>_l(t,2)).join(""),Ie={_0:48,_9:57,A:65,F:70,a:97,f:102},_o=e=>{if(e>=Ie._0&&e<=Ie._9)return e-Ie._0;if(e>=Ie.A&&e<=Ie.F)return e-(Ie.A-10);if(e>=Ie.a&&e<=Ie.f)return e-(Ie.a-10)},Pl=e=>{const t="hex invalid";if(!cp(e))return ee(t);const n=e.length,i=n/2;if(n%2)return ee(t);const s=Si(i);for(let r=0,o=0;r<i;r++,o+=2){const a=_o(e.charCodeAt(o)),c=_o(e.charCodeAt(o+1));if(a===void 0||c===void 0)return ee(t);s[r]=a*16+c}return s},Ll=()=>globalThis==null?void 0:globalThis.crypto,dp=()=>{var e;return((e=Ll())==null?void 0:e.subtle)??ee("crypto.subtle must be defined, consider polyfill")},pn=(...e)=>{const t=Si(e.reduce((i,s)=>i+Ve(s).length,0));let n=0;return e.forEach(i=>{t.set(i,n),n+=i.length}),t},pp=(e=rt)=>Ll().getRandomValues(Si(e)),ni=BigInt,Je=(e,t,n,i="bad number: out of range")=>lp(e)&&t<=e&&e<n?e:ee(i),P=(e,t=re)=>{const n=e%t;return n>=0n?n:t+n},Il=e=>P(e,Vn),hp=(e,t)=>{(e===0n||t<=0n)&&ee("no inverse n="+e+" mod="+t);let n=P(e,t),i=t,s=0n,r=1n;for(;n!==0n;){const o=i/n,a=i%n,c=s-r*o;i=n,n=a,s=r,r=c}return i===1n?P(s,t):ee("no inverse")},fp=e=>{const t=Ol[e];return typeof t!="function"&&ee("hashes."+e+" not set"),t},Ji=e=>e instanceof ot?e:ee("Point expected"),Ts=2n**256n,Ce=class Ce{constructor(t,n,i,s){U(this,"X");U(this,"Y");U(this,"Z");U(this,"T");const r=Ts;this.X=Je(t,0n,r),this.Y=Je(n,0n,r),this.Z=Je(i,1n,r),this.T=Je(s,0n,r),Object.freeze(this)}static CURVE(){return Cl}static fromAffine(t){return new Ce(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){const i=Zi,s=Tl(Ve(t,rt)),r=t[31];s[31]=r&-129;const o=Nl(s);Je(o,0n,n?Ts:re);const c=P(o*o),u=P(c-1n),l=P(i*c+1n);let{isValid:d,value:h}=mp(u,l);d||ee("bad point: y not sqrt");const v=(h&1n)===1n,y=(r&128)!==0;return!n&&h===0n&&y&&ee("bad point: x==0, isLastByteOdd"),y!==v&&(h=P(-h)),new Ce(h,o,1n,P(h*o))}static fromHex(t,n){return Ce.fromBytes(Pl(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){const t=Xi,n=Zi,i=this;if(i.is0())return ee("bad point: ZERO");const{X:s,Y:r,Z:o,T:a}=i,c=P(s*s),u=P(r*r),l=P(o*o),d=P(l*l),h=P(c*t),v=P(l*P(h+u)),y=P(d+P(n*P(c*u)));if(v!==y)return ee("bad point: equation left != right (1)");const b=P(s*r),S=P(o*a);return b!==S?ee("bad point: equation left != right (2)"):this}equals(t){const{X:n,Y:i,Z:s}=this,{X:r,Y:o,Z:a}=Ji(t),c=P(n*a),u=P(r*s),l=P(i*a),d=P(o*s);return c===u&&l===d}is0(){return this.equals(xt)}negate(){return new Ce(P(-this.X),this.Y,this.Z,P(-this.T))}double(){const{X:t,Y:n,Z:i}=this,s=Xi,r=P(t*t),o=P(n*n),a=P(2n*P(i*i)),c=P(s*r),u=t+n,l=P(P(u*u)-r-o),d=c+o,h=d-a,v=c-o,y=P(l*h),b=P(d*v),S=P(l*v),x=P(h*d);return new Ce(y,b,x,S)}add(t){const{X:n,Y:i,Z:s,T:r}=this,{X:o,Y:a,Z:c,T:u}=Ji(t),l=Xi,d=Zi,h=P(n*o),v=P(i*a),y=P(r*d*u),b=P(s*c),S=P((n+i)*(o+a)-h-v),x=P(b-y),$=P(b+y),C=P(v-l*h),T=P(S*x),M=P($*C),R=P(S*C),B=P(x*$);return new Ce(T,M,B,R)}subtract(t){return this.add(Ji(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return xt;if(Je(t,1n,Vn),t===1n)return this;if(this.equals(at))return Cp(t).p;let i=xt,s=at;for(let r=this;t>0n;r=r.double(),t>>=1n)t&1n?i=i.add(r):n&&(s=s.add(r));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){const{X:t,Y:n,Z:i}=this;if(this.equals(xt))return{x:0n,y:1n};const s=hp(i,re);P(i*s)!==1n&&ee("invalid inverse");const r=P(t*s),o=P(n*s);return{x:r,y:o}}toBytes(){const{x:t,y:n}=this.assertValidity().toAffine(),i=Rl(n);return i[31]|=t&1n?128:0,i}toHex(){return Ml(this.toBytes())}clearCofactor(){return this.multiply(ni(op),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Vn/2n,!1).double();return Vn%2n&&(t=t.add(this)),t.is0()}};U(Ce,"BASE"),U(Ce,"ZERO");let ot=Ce;const at=new ot(Co,To,1n,P(Co*To)),xt=new ot(0n,1n,1n,0n);ot.BASE=at;ot.ZERO=xt;const Rl=e=>Pl(_l(Je(e,0n,Ts),or)).reverse(),Nl=e=>ni("0x"+Ml(Tl(Ve(e)).reverse())),Ae=(e,t)=>{let n=e;for(;t-- >0n;)n*=n,n%=re;return n},gp=e=>{const n=e*e%re*e%re,i=Ae(n,2n)*n%re,s=Ae(i,1n)*e%re,r=Ae(s,5n)*s%re,o=Ae(r,10n)*r%re,a=Ae(o,20n)*o%re,c=Ae(a,40n)*a%re,u=Ae(c,80n)*c%re,l=Ae(u,80n)*c%re,d=Ae(l,10n)*r%re;return{pow_p_5_8:Ae(d,2n)*e%re,b2:n}},Mo=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,mp=(e,t)=>{const n=P(t*t*t),i=P(n*n*t),s=gp(e*i).pow_p_5_8;let r=P(e*n*s);const o=P(t*r*r),a=r,c=P(r*Mo),u=o===e,l=o===P(-e),d=o===P(-e*Mo);return u&&(r=a),(l||d)&&(r=c),(P(r)&1n)===1n&&(r=P(-r)),{isValid:u||l,value:r}},_s=e=>Il(Nl(e)),ar=(...e)=>Ol.sha512Async(pn(...e)),yp=(...e)=>fp("sha512")(pn(...e)),Dl=e=>{const t=e.slice(0,rt);t[0]&=248,t[31]&=127,t[31]|=64;const n=e.slice(rt,or),i=_s(t),s=at.multiply(i),r=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:r}},lr=e=>ar(Ve(e,rt)).then(Dl),vp=e=>Dl(yp(Ve(e,rt))),bp=e=>lr(e).then(t=>t.pointBytes),wp=e=>ar(e.hashable).then(e.finish),kp=(e,t,n)=>{const{pointBytes:i,scalar:s}=e,r=_s(t),o=at.multiply(r).toBytes();return{hashable:pn(o,i,n),finish:u=>{const l=Il(r+_s(u)*s);return Ve(pn(o,Rl(l)),or)}}},Sp=async(e,t)=>{const n=Ve(e),i=await lr(t),s=await ar(i.prefix,n);return wp(kp(i,s,n))},Ol={sha512Async:async e=>{const t=dp(),n=pn(e);return Si(await t.digest("SHA-512",n.buffer))},sha512:void 0},Ap=(e=pp(rt))=>e,xp={getExtendedPublicKeyAsync:lr,getExtendedPublicKey:vp,randomSecretKey:Ap},ii=8,$p=256,Bl=Math.ceil($p/ii)+1,Ms=2**(ii-1),Ep=()=>{const e=[];let t=at,n=t;for(let i=0;i<Bl;i++){n=t,e.push(n);for(let s=1;s<Ms;s++)n=n.add(t),e.push(n);t=n.double()}return e};let Po;const Lo=(e,t)=>{const n=t.negate();return e?n:t},Cp=e=>{const t=Po||(Po=Ep());let n=xt,i=at;const s=2**ii,r=s,o=ni(s-1),a=ni(ii);for(let c=0;c<Bl;c++){let u=Number(e&o);e>>=a,u>Ms&&(u-=r,e+=1n);const l=c*Ms,d=l,h=l+Math.abs(u)-1,v=c%2!==0,y=u<0;u===0?i=i.add(Lo(v,t[d])):n=n.add(Lo(y,t[h]))}return e!==0n&&ee("invalid wnaf"),{p:n,f:i}},es="taskmaster-device-identity-v1";function Ps(e){let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function Fl(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),i=atob(n),s=new Uint8Array(i.length);for(let r=0;r<i.length;r+=1)s[r]=i.charCodeAt(r);return s}function Tp(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Ul(e){const t=await crypto.subtle.digest("SHA-256",e);return Tp(new Uint8Array(t))}async function _p(){const e=xp.randomSecretKey(),t=await bp(e);return{deviceId:await Ul(t),publicKey:Ps(t),privateKey:Ps(e)}}async function Mp(){try{const n=localStorage.getItem(es);if(n){const i=JSON.parse(n);if((i==null?void 0:i.version)===1&&typeof i.deviceId=="string"&&typeof i.publicKey=="string"&&typeof i.privateKey=="string"){const s=await Ul(Fl(i.publicKey));if(s!==i.deviceId){const r={...i,deviceId:s};return localStorage.setItem(es,JSON.stringify(r)),{deviceId:s,publicKey:i.publicKey,privateKey:i.privateKey}}return{deviceId:i.deviceId,publicKey:i.publicKey,privateKey:i.privateKey}}}}catch{}const e=await _p(),t={version:1,deviceId:e.deviceId,publicKey:e.publicKey,privateKey:e.privateKey,createdAtMs:Date.now()};return localStorage.setItem(es,JSON.stringify(t)),e}async function Pp(e,t){const n=Fl(e),i=new TextEncoder().encode(t),s=await Sp(i,n);return Ps(s)}const Wl="taskmaster.device.auth.v1";function cr(e){return e.trim()}function Lp(e){if(!Array.isArray(e))return[];const t=new Set;for(const n of e){const i=n.trim();i&&t.add(i)}return[...t].sort()}function ur(){try{const e=window.localStorage.getItem(Wl);if(!e)return null;const t=JSON.parse(e);return!t||t.version!==1||!t.deviceId||typeof t.deviceId!="string"||!t.tokens||typeof t.tokens!="object"?null:t}catch{return null}}function Kl(e){try{window.localStorage.setItem(Wl,JSON.stringify(e))}catch{}}function Ip(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return null;const n=cr(e.role),i=t.tokens[n];return!i||typeof i.token!="string"?null:i}function Rp(e){const t=cr(e.role),n={version:1,deviceId:e.deviceId,tokens:{}},i=ur();i&&i.deviceId===e.deviceId&&(n.tokens={...i.tokens});const s={token:e.token,role:t,scopes:Lp(e.scopes),updatedAtMs:Date.now()};return n.tokens[t]=s,Kl(n),s}function Np(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return;const n=cr(e.role);if(!t.tokens[n])return;const i={...t,tokens:{...t.tokens}};delete i.tokens[n],Kl(i)}async function dr(e,t){if(!(!e.client||!e.connected)&&!e.devicesLoading){e.devicesLoading=!0,t!=null&&t.quiet||(e.devicesError=null);try{const n=await e.client.request("device.pair.list",{});e.devicesList={pending:Array.isArray(n==null?void 0:n.pending)?n.pending:[],paired:Array.isArray(n==null?void 0:n.paired)?n.paired:[]}}catch(n){t!=null&&t.quiet||(e.devicesError=String(n))}finally{e.devicesLoading=!1}}}async function pr(e,t){if(!(!e.client||!e.connected)&&!e.nodesLoading){e.nodesLoading=!0,t!=null&&t.quiet||(e.lastError=null);try{const n=await e.client.request("node.list",{});e.nodes=Array.isArray(n.nodes)?n.nodes:[]}catch(n){t!=null&&t.quiet||(e.lastError=String(n))}finally{e.nodesLoading=!1}}}function Dp(e){return{method:"exec.approvals.get",params:{}}}async function Op(e,t){if(!(!e.client||!e.connected)&&!e.execApprovalsLoading){e.execApprovalsLoading=!0,e.lastError=null;try{const n=Dp(t);if(!n){e.lastError="Select a node before loading exec approvals.";return}const i=await e.client.request(n.method,n.params);Bp(e,i)}catch(n){e.lastError=String(n)}finally{e.execApprovalsLoading=!1}}}function Bp(e,t){e.execApprovalsSnapshot=t,e.execApprovalsDirty||(e.execApprovalsForm=He(t.file??{}))}async function zl(e){if(!(!e.client||!e.connected)&&!e.presenceLoading){e.presenceLoading=!0,e.presenceError=null,e.presenceStatus=null;try{const t=await e.client.request("system-presence",{});Array.isArray(t)?(e.presenceEntries=t,e.presenceStatus=t.length===0?"No instances yet.":null):(e.presenceEntries=[],e.presenceStatus="No presence payload.")}catch(t){e.presenceError=String(t)}finally{e.presenceLoading=!1}}}function _t(e,t,n){if(!t.trim())return;const i={...e.skillMessages};n?i[t]=n:delete i[t],e.skillMessages=i}function Ai(e){return e instanceof Error?e.message:String(e)}async function lt(e,t){if(t!=null&&t.clearMessages&&Object.keys(e.skillMessages).length>0&&(e.skillMessages={}),!(!e.client||!e.connected)&&!e.skillsLoading){e.skillsLoading=!0,e.skillsError=null;try{const n=await e.client.request("skills.status",{});n&&(e.skillsReport=n)}catch(n){e.skillsError=Ai(n)}finally{e.skillsLoading=!1}}}function jl(e,t,n){e.skillEdits={...e.skillEdits,[t]:n}}async function Hl(e,t,n){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{await e.client.request("skills.update",{skillKey:t,enabled:n}),await lt(e),_t(e,t,{kind:"success",message:n?"Skill enabled":"Skill disabled"})}catch(i){const s=Ai(i);e.skillsError=s,_t(e,t,{kind:"error",message:s})}finally{e.skillsBusyKey=null}}}async function ql(e,t){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const n=e.skillEdits[t]??"";await e.client.request("skills.update",{skillKey:t,apiKey:n}),await lt(e),_t(e,t,{kind:"success",message:"API key saved"})}catch(n){const i=Ai(n);e.skillsError=i,_t(e,t,{kind:"error",message:i})}finally{e.skillsBusyKey=null}}}async function Vl(e,t,n,i){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const s=await e.client.request("skills.install",{name:n,installId:i,timeoutMs:12e4});await lt(e),_t(e,t,{kind:"success",message:(s==null?void 0:s.message)??"Installed"})}catch(s){const r=Ai(s);e.skillsError=r,_t(e,t,{kind:"error",message:r})}finally{e.skillsBusyKey=null}}}const Fp=Object.freeze(Object.defineProperty({__proto__:null,installSkill:Vl,loadSkills:lt,saveSkillApiKey:ql,updateSkillEdit:jl,updateSkillEnabled:Hl},Symbol.toStringTag,{value:"Module"})),Gl={overview:"/overview",channels:"/channels",instances:"/instances",cron:"/cron",skills:"/skills",nodes:"/nodes",chat:"/chat",admins:"/admins",config:"/config",debug:"/debug",logs:"/logs"},Ql=new Map(Object.entries(Gl).map(([e,t])=>[t,e]));function xi(e){if(!e)return"";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t==="/"?"":(t.endsWith("/")&&(t=t.slice(0,-1)),t)}function hn(e){if(!e)return"/";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t}function Up(e,t=""){const n=xi(t),i=Gl[e];return n?`${n}${i}`:i}function Yl(e,t=""){const n=xi(t);let i=e||"/";n&&(i===n?i="/":i.startsWith(`${n}/`)&&(i=i.slice(n.length)));let s=hn(i).toLowerCase();return s.endsWith("/index.html")&&(s="/"),s==="/"?"chat":Ql.get(s)??null}function Wp(e){let t=hn(e);if(t.endsWith("/index.html")&&(t=hn(t.slice(0,-11))),t==="/")return"";const n=t.split("/").filter(Boolean);if(n.length===0)return"";for(let i=0;i<n.length;i++){const s=`/${n.slice(i).join("/")}`.toLowerCase();if(Ql.has(s)){const r=n.slice(0,i);return r.length?`/${r.join("/")}`:""}}return`/${n.join("/")}`}function Kp(){return typeof window>"u"||typeof window.matchMedia!="function"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function hr(e){return e==="system"?Kp():e}const In=e=>Number.isNaN(e)?.5:e<=0?0:e>=1?1:e,zp=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches??!1,Rn=e=>{e.classList.remove("theme-transition"),e.style.removeProperty("--theme-switch-x"),e.style.removeProperty("--theme-switch-y")},jp=({nextTheme:e,applyTheme:t,context:n,currentTheme:i})=>{var u;if(i===e)return;const s=globalThis.document??null;if(!s){t();return}const r=s.documentElement,o=s,a=zp();if(!!o.startViewTransition&&!a){let l=.5,d=.5;if((n==null?void 0:n.pointerClientX)!==void 0&&(n==null?void 0:n.pointerClientY)!==void 0&&typeof window<"u")l=In(n.pointerClientX/window.innerWidth),d=In(n.pointerClientY/window.innerHeight);else if(n!=null&&n.element){const h=n.element.getBoundingClientRect();h.width>0&&h.height>0&&typeof window<"u"&&(l=In((h.left+h.width/2)/window.innerWidth),d=In((h.top+h.height/2)/window.innerHeight))}r.style.setProperty("--theme-switch-x",`${l*100}%`),r.style.setProperty("--theme-switch-y",`${d*100}%`),r.classList.add("theme-transition");try{const h=(u=o.startViewTransition)==null?void 0:u.call(o,()=>{t()});h!=null&&h.finished?h.finished.finally(()=>Rn(r)):Rn(r)}catch{Rn(r),t()}return}t(),Rn(r)},Hp=2e3;async function rn(e,t){if(!(!e.client||!e.connected)&&!(e.sessionLogsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.sessionLogsLoading=!0),e.sessionLogsError=null;try{const n={cursors:t!=null&&t.reset?void 0:e.sessionLogsCursors,limit:500};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(n.agents=e.workspaceAgentIds);const s=await e.client.request("sessions.transcript",n),r=Array.isArray(s.entries)?s.entries:[],o=!!(t!=null&&t.reset||Object.keys(e.sessionLogsCursors).length===0);e.sessionLogsEntries=o?r:[...e.sessionLogsEntries,...r].slice(-Hp),s.cursors&&(e.sessionLogsCursors=s.cursors),Array.isArray(s.agents)&&(e.sessionLogsAgents=s.agents),e.sessionLogsLastFetchAt=Date.now()}catch(n){e.sessionLogsError=String(n)}finally{t!=null&&t.quiet||(e.sessionLogsLoading=!1)}}}const Xl=Object.freeze(Object.defineProperty({__proto__:null,loadSessionLogs:rn},Symbol.toStringTag,{value:"Module"}));async function Zl(e,t){if(!(!e.client||!e.connected))try{const n={},i=await e.client.request("memory.audit",n);i!=null&&i.ok&&(e.auditEntries=i.entries??[])}catch{}}async function qp(e,t){if(!(!e.client||!e.connected))try{const n={};await e.client.request("memory.auditClear",n),e.auditEntries=[]}catch{}}function Ne(e){return e instanceof Error?e.message:String(e)}let Nn=null;function mn(e,t){Nn&&clearTimeout(Nn),e.filesMessage={kind:"success",text:t},Nn=setTimeout(()=>{e.filesMessage=null,Nn=null},3e3)}async function yn(e,t){if(!(!e.client||!e.connected)){if(!t){e.filesTree=[],e.filesRoot="";return}if(!e.filesLoading){e.filesLoading=!0,e.filesError=null;try{const n={};t&&(n.agentId=t);const i=await e.client.request("files.tree",n);i!=null&&i.tree&&(e.filesTree=i.tree,e.filesRoot=i.root??"")}catch(n){e.filesError=Ne(n)}finally{e.filesLoading=!1}}}}async function Vp(e,t,n){e.filesSelectedPaths=new Set([t]),await Jl(e,t,n)}async function Gp(e,t,n){const i=new Set(e.filesSelectedPaths);if(i.has(t)?i.delete(t):i.add(t),e.filesSelectedPaths=i,i.size===1){const s=[...i][0];await Jl(e,s,n)}else e.filesSelectedPath=null,e.filesPreviewContent=null,e.filesPreviewSize=null,e.filesPreviewBinary=!1}async function Qp(e,t){if(!e.client||!e.connected)return;const n=[...e.filesSelectedPaths];if(n.length===0)return;let i=0,s="";for(const r of n)try{await ec(e,r,t),i++}catch(o){s=Ne(o)}s?e.filesMessage={kind:"error",text:`${i} downloaded, error: ${s}`}:mn(e,`${i} file${i!==1?"s":""} downloaded`)}async function Yp(e,t,n,i){const s=t.split("/").pop()??t,r=n==="."?s:`${n}/${s}`;r!==t&&await tc(e,t,r,i)}async function Jl(e,t,n){if(!(!e.client||!e.connected)){e.filesSelectedPath=t,e.filesPreviewLoading=!0,e.filesPreviewContent=null,e.filesPreviewBinary=!1,e.filesPreviewSize=null;try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.read",i);e.filesPreviewContent=(s==null?void 0:s.content)??null,e.filesPreviewBinary=(s==null?void 0:s.binary)??!1,e.filesPreviewSize=(s==null?void 0:s.size)??null}catch(i){e.filesError=Ne(i)}finally{e.filesPreviewLoading=!1}}}async function ec(e,t,n){if(!(!e.client||!e.connected))try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.download",i);if(!(s!=null&&s.base64)){e.filesMessage={kind:"error",text:"Download failed: no data"};return}const r=Uint8Array.from(atob(s.base64),u=>u.charCodeAt(0)),o=new Blob([r]),a=URL.createObjectURL(o),c=document.createElement("a");c.href=a,c.download=s.name??t.split("/").pop()??"download",document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(a)}catch(i){e.filesMessage={kind:"error",text:Ne(i)}}}async function Xp(e,t,n,i){if(!e.client||!e.connected)return;e.filesUploadBusy=!0,e.filesMessage=null;let s=0,r="";for(const o of n)try{const a=await o.arrayBuffer(),c=btoa(new Uint8Array(a).reduce((l,d)=>l+String.fromCharCode(d),"")),u={path:t,name:o.name,data:c};i&&(u.agentId=i),await e.client.request("files.upload",u),s++}catch(a){r=Ne(a)}e.filesUploadBusy=!1,r?e.filesMessage={kind:"error",text:s>0?`${s} uploaded, error: ${r}`:r}:mn(e,`${s} file${s!==1?"s":""} uploaded`),await yn(e,i)}async function Zp(e,t,n){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const i={path:t};n&&(i.agentId=n),await e.client.request("files.delete",i),mn(e,"File deleted"),e.filesSelectedPath===t&&(e.filesSelectedPath=null,e.filesPreviewContent=null),await yn(e,n)}catch(i){e.filesMessage={kind:"error",text:Ne(i)}}}}async function tc(e,t,n,i){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const s={from:t,to:n};i&&(s.agentId=i),await e.client.request("files.move",s),mn(e,"File moved"),e.filesSelectedPath===t&&(e.filesSelectedPath=n),await yn(e,i)}catch(s){e.filesMessage={kind:"error",text:Ne(s)}}}}async function fr(e,t){if(!(!e.client||!e.connected))try{const n={};t&&(n.agentId=t);const i=await e.client.request("memory.status",n);i!=null&&i.ok&&(e.filesMemoryStatus={dirty:i.dirty??!1,syncing:i.syncing,syncProgress:i.syncProgress,files:i.files??0,chunks:i.chunks??0,model:i.model,embeddingState:i.embeddingState})}catch{}}async function Jp(e,t){if(!(!e.client||!e.connected)&&!e.filesReindexBusy){e.filesReindexBusy=!0,e.filesMessage=null;try{const n={force:!0};t&&(n.agentId=t);const i=await e.client.request("memory.reindex",n),s=(i==null?void 0:i.files)??0,r=(i==null?void 0:i.chunks)??0;mn(e,`Re-indexed: ${s} files, ${r} chunks`),await fr(e,t)}catch(n){e.filesMessage={kind:"error",text:Ne(n)}}finally{e.filesReindexBusy=!1}}}function eh(e,t){const n=new Set(e.filesExpandedDirs);n.has(t)?n.delete(t):n.add(t),e.filesExpandedDirs=n}async function th(e,t,n){if(!(!e.client||!e.connected)){if(!t.trim()){e.filesSearchResults=null;return}e.filesSearchLoading=!0,e.filesSearchResults=null;try{const i={query:t.trim(),maxResults:20};n&&(i.agentId=n);const s=await e.client.request("memory.search",i);e.filesSearchResults=(s==null?void 0:s.results)??[]}catch(i){e.filesMessage={kind:"error",text:Ne(i)},e.filesSearchResults=null}finally{e.filesSearchLoading=!1}}}function nh(e){e.filesSearchQuery="",e.filesSearchResults=null}function ih(e){e.nodesPollInterval==null&&(e.nodesPollInterval=window.setInterval(()=>{pr(e,{quiet:!0})},5e3))}function sh(e){e.nodesPollInterval!=null&&(clearInterval(e.nodesPollInterval),e.nodesPollInterval=null)}function gr(e){e.logsPollInterval==null&&(e.logsPollInterval=window.setInterval(()=>{e.tab==="logs"&&Et(e,{quiet:!0})},2e3))}function mr(e){e.logsPollInterval!=null&&(clearInterval(e.logsPollInterval),e.logsPollInterval=null)}function yr(e){e.sessionLogsPollInterval==null&&(e.sessionLogsPollInterval=window.setInterval(()=>{!(e.advancedPage?e.advancedTab==="logs":e.tab==="logs")||e.logsSubTab!=="session"||rn(e,{quiet:!0})},2e3))}function vr(e){e.sessionLogsPollInterval!=null&&(clearInterval(e.sessionLogsPollInterval),e.sessionLogsPollInterval=null)}function br(e){e.debugPollInterval==null&&(e.debugPollInterval=window.setInterval(()=>{e.tab==="debug"&&rr(e)},3e3))}function wr(e){e.debugPollInterval!=null&&(clearInterval(e.debugPollInterval),e.debugPollInterval=null)}function rh(e){e.auditPollInterval==null&&(e.auditPollInterval=window.setInterval(()=>{Zl(e)},3e4))}function oh(e){e.auditPollInterval!=null&&(clearInterval(e.auditPollInterval),e.auditPollInterval=null)}function ah(e){e.memoryStatusPollInterval==null&&(e.memoryStatusPollInterval=window.setInterval(()=>{e.tab==="files"&&fr(e)},3e3))}function lh(e){e.memoryStatusPollInterval!=null&&(clearInterval(e.memoryStatusPollInterval),e.memoryStatusPollInterval=null)}function ze(e,t){var i;const n={...t,lastActiveSessionKey:((i=t.lastActiveSessionKey)==null?void 0:i.trim())||t.sessionKey.trim()||"main"};e.settings=n,cd(n),t.theme!==e.theme&&(e.theme=t.theme,$i(e,hr(t.theme))),e.applySessionKey=e.settings.lastActiveSessionKey}function nc(e,t){const n=t.trim();n&&e.settings.lastActiveSessionKey!==n&&ze(e,{...e.settings,lastActiveSessionKey:n})}function ch(e){if(!window.location.search)return;const t=new URLSearchParams(window.location.search),n=t.get("token"),i=t.get("password"),s=t.get("session"),r=t.get("gatewayUrl");let o=!1;if(n!=null){const c=n.trim();c&&c!==e.settings.token&&ze(e,{...e.settings,token:c}),t.delete("token"),o=!0}if(i!=null){const c=i.trim();c&&(e.password=c),t.delete("password"),o=!0}if(s!=null){const c=s.trim();c&&(e.sessionKey=c,ze(e,{...e.settings,sessionKey:c,lastActiveSessionKey:c}))}if(r!=null){const c=r.trim();c&&c!==e.settings.gatewayUrl&&ze(e,{...e.settings,gatewayUrl:c}),t.delete("gatewayUrl"),o=!0}if(!o)return;const a=new URL(window.location.href);a.search=t.toString(),window.history.replaceState({},"",a.toString())}function uh(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),si(e),sc(e,t,!1)}function dh(e,t,n){jp({nextTheme:t,applyTheme:()=>{e.theme=t,ze(e,{...e.settings,theme:t}),$i(e,hr(t))},context:n,currentTheme:e.theme})}async function si(e){if(e.tab==="overview"&&await rc(e),e.tab==="channels"&&await vh(e),e.tab==="instances"&&await zl(e),e.tab==="cron"&&await kr(e),e.tab==="skills"&&await lt(e),e.tab==="nodes"&&(await pr(e),await dr(e),await _e(e),await Op(e)),e.tab==="chat"&&!e.advancedPage&&!e.chatPage&&(await Ah(e),fn(e,!e.chatHasAutoScrolled)),e.tab==="config"&&(await kl(e),await _e(e)),e.tab==="debug"&&(await rr(e),e.eventLog=e.eventLogBuffer),e.tab==="logs"){if(e.logsAtBottom=!0,e.logsSubTab==="session"){const{loadSessionLogs:n}=await ie(async()=>{const{loadSessionLogs:i}=await Promise.resolve().then(()=>Xl);return{loadSessionLogs:i}},void 0,import.meta.url);await n(e,{reset:!0})}else await Et(e,{reset:!0});bl(e,!0)}}function ph(){if(typeof window>"u")return"";const e=window.__TASKMASTER_CONTROL_UI_BASE_PATH__;return typeof e=="string"&&e.trim()?xi(e):Wp(window.location.pathname)}function hh(e){e.theme=e.settings.theme??"system",$i(e,hr(e.theme))}function $i(e,t){if(e.themeResolved=t,typeof document>"u")return;const n=document.documentElement;n.dataset.theme=t,n.style.colorScheme=t}function fh(e){if(typeof window>"u"||typeof window.matchMedia!="function")return;if(e.themeMedia=window.matchMedia("(prefers-color-scheme: dark)"),e.themeMediaHandler=n=>{e.theme==="system"&&$i(e,n.matches?"dark":"light")},typeof e.themeMedia.addEventListener=="function"){e.themeMedia.addEventListener("change",e.themeMediaHandler);return}e.themeMedia.addListener(e.themeMediaHandler)}function gh(e){if(!e.themeMedia||!e.themeMediaHandler)return;if(typeof e.themeMedia.removeEventListener=="function"){e.themeMedia.removeEventListener("change",e.themeMediaHandler);return}e.themeMedia.removeListener(e.themeMediaHandler),e.themeMedia=null,e.themeMediaHandler=null}function mh(e,t){if(typeof window>"u")return;const n=Yl(window.location.pathname,e.basePath)??"chat";ic(e,n),sc(e,n,t)}function yh(e){var s;if(typeof window>"u")return;const t=Yl(window.location.pathname,e.basePath);if(!t)return;const i=(s=new URL(window.location.href).searchParams.get("session"))==null?void 0:s.trim();i&&(e.sessionKey=i,ze(e,{...e.settings,sessionKey:i,lastActiveSessionKey:i})),ic(e,t)}function ic(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),e.connected&&si(e)}function sc(e,t,n){if(typeof window>"u")return;const i=hn(Up(t,e.basePath)),s=hn(window.location.pathname),r=new URL(window.location.href);t==="chat"&&e.sessionKey?r.searchParams.set("session",e.sessionKey):r.searchParams.delete("session"),s!==i&&(r.pathname=i),n?window.history.replaceState({},"",r.toString()):window.history.pushState({},"",r.toString())}async function rc(e){await Promise.all([V(e,!1),zl(e),nr(e),gn(e),rr(e)])}async function vh(e){await Promise.all([V(e,!0),kl(e),_e(e)])}async function kr(e){await Promise.all([V(e,!1),gn(e),ki(e)])}function oc(e){return e.chatSending||!!e.chatRunId}function bh(e){const t=e.trim();if(!t)return!1;const n=t.toLowerCase();return n==="/stop"?!0:n==="stop"||n==="esc"||n==="abort"||n==="wait"||n==="exit"}async function ac(e){e.connected&&(e.chatMessage="",await yl(e))}function wh(e,t,n){const i=t.trim(),s=!!(n&&n.length>0);!i&&!s||(e.chatQueue=[...e.chatQueue,{id:tr(),text:i,createdAt:Date.now(),attachments:s?n==null?void 0:n.map(r=>({...r})):void 0}],fn(e))}async function lc(e,t,n){var s,r;ir(e);const i=await ml(e,t,n==null?void 0:n.attachments);return!i&&(n==null?void 0:n.previousDraft)!=null&&(e.chatMessage=n.previousDraft),!i&&(n!=null&&n.previousAttachments)&&(e.chatAttachments=n.previousAttachments),i&&nc(e,e.sessionKey),i&&(n!=null&&n.restoreDraft)&&((s=n.previousDraft)!=null&&s.trim())&&(e.chatMessage=n.previousDraft),i&&(n!=null&&n.restoreAttachments)&&((r=n.previousAttachments)!=null&&r.length)&&(e.chatAttachments=n.previousAttachments),fn(e),i&&!e.chatRunId&&cc(e),i}async function cc(e){if(!e.connected||oc(e))return;const[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n,await lc(e,t.text,{attachments:t.attachments})||(e.chatQueue=[t,...e.chatQueue])}function kh(e,t){e.chatQueue=e.chatQueue.filter(n=>n.id!==t)}async function Sh(e,t,n){if(!e.connected)return;const i=e.chatMessage,s=(t??e.chatMessage).trim(),r=e.chatAttachments??[],o=t==null?r:[],a=o.length>0;if(!(!s&&!a)){if(bh(s)){await ac(e);return}if(t==null&&(e.chatMessage="",e.chatAttachments=[]),oc(e)){wh(e,s,o);return}await lc(e,s,{previousDraft:t==null?i:void 0,restoreDraft:!!(t&&(n!=null&&n.restoreDraft)),attachments:a?o:void 0,previousAttachments:t==null?r:void 0,restoreAttachments:!!(t&&(n!=null&&n.restoreDraft))})}}async function Ah(e){await Promise.all([Te(e),nr(e),Ls(e)]),fn(e,!0)}const xh=cc;function $h(e){var s,r,o;const t=ll(e.sessionKey);if(t!=null&&t.agentId)return t.agentId;const n=(s=e.hello)==null?void 0:s.snapshot;return((o=(r=n==null?void 0:n.sessionDefaults)==null?void 0:r.defaultAgentId)==null?void 0:o.trim())||"main"}function Eh(e,t){const n=xi(e),i=encodeURIComponent(t);return n?`${n}/avatar/${i}?meta=1`:`/avatar/${i}?meta=1`}async function Ls(e){if(!e.connected){e.chatAvatarUrl=null;return}const t=$h(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;const n=Eh(e.basePath,t);try{const i=await fetch(n,{method:"GET"});if(!i.ok){e.chatAvatarUrl=null;return}const s=await i.json(),r=typeof s.avatarUrl=="string"?s.avatarUrl.trim():"";e.chatAvatarUrl=r||null}catch{e.chatAvatarUrl=null}}const O={messageSquare:p`<svg viewBox="0 0 24 24"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>`,barChart:p`<svg viewBox="0 0 24 24"><line x1="12" x2="12" y1="20" y2="10"/><line x1="18" x2="18" y1="20" y2="4"/><line x1="6" x2="6" y1="20" y2="16"/></svg>`,link:p`<svg viewBox="0 0 24 24"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>`,radio:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="2"/><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"/></svg>`,fileText:p`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><line x1="16" x2="8" y1="13" y2="13"/><line x1="16" x2="8" y1="17" y2="17"/><line x1="10" x2="8" y1="9" y2="9"/></svg>`,zap:p`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,monitor:p`<svg viewBox="0 0 24 24"><rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/></svg>`,settings:p`<svg viewBox="0 0 24 24"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>`,bug:p`<svg viewBox="0 0 24 24"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>`,scrollText:p`<svg viewBox="0 0 24 24"><path d="M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4"/><path d="M19 17V5a2 2 0 0 0-2-2H4"/><path d="M15 8h-5"/><path d="M15 12h-5"/></svg>`,folder:p`<svg viewBox="0 0 24 24"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/></svg>`,users:p`<svg viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>`,menu:p`<svg viewBox="0 0 24 24"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>`,x:p`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,check:p`<svg viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>`,copy:p`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`,search:p`<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`,brain:p`<svg viewBox="0 0 24 24"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"/><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"/><path d="M3.477 10.896a4 4 0 0 1 .585-.396"/><path d="M19.938 10.5a4 4 0 0 1 .585.396"/><path d="M6 18a4 4 0 0 1-1.967-.516"/><path d="M19.967 17.484A4 4 0 0 1 18 18"/></svg>`,book:p`<svg viewBox="0 0 24 24"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/></svg>`,loader:p`<svg viewBox="0 0 24 24"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></svg>`,rotateCw:p`<svg viewBox="0 0 24 24"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/></svg>`,download:p`<svg viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/></svg>`,wrench:p`<svg viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>`,fileCode:p`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><path d="m10 13-2 2 2 2"/><path d="m14 17 2-2-2-2"/></svg>`,edit:p`<svg viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>`,penLine:p`<svg viewBox="0 0 24 24"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>`,paperclip:p`<svg viewBox="0 0 24 24"><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/></svg>`,globe:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg>`,image:p`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/></svg>`,smartphone:p`<svg viewBox="0 0 24 24"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"/><path d="M12 18h.01"/></svg>`,plug:p`<svg viewBox="0 0 24 24"><path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/></svg>`,circle:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>`,circleCheck:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>`,circleX:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>`,puzzle:p`<svg viewBox="0 0 24 24"><path d="M19.439 7.85c-.049.322.059.648.289.878l1.568 1.568c.47.47.706 1.087.706 1.704s-.235 1.233-.706 1.704l-1.611 1.611a.98.98 0 0 1-.837.276c-.47-.07-.802-.48-.968-.925a2.501 2.501 0 1 0-3.214 3.214c.446.166.855.497.925.968a.979.979 0 0 1-.276.837l-1.61 1.61a2.404 2.404 0 0 1-1.705.707 2.402 2.402 0 0 1-1.704-.706l-1.568-1.568a1.026 1.026 0 0 0-.877-.29c-.493.074-.84.504-1.02.968a2.5 2.5 0 1 1-3.237-3.237c.464-.18.894-.527.967-1.02a1.026 1.026 0 0 0-.289-.877l-1.568-1.568A2.402 2.402 0 0 1 1.998 12c0-.617.236-1.234.706-1.704L4.23 8.77c.24-.24.581-.353.917-.303.515.076.874.54 1.02 1.02a2.5 2.5 0 1 0 3.237-3.237c-.48-.146-.944-.505-1.02-1.02a.98.98 0 0 1 .303-.917l1.526-1.526A2.402 2.402 0 0 1 11.998 2c.617 0 1.234.236 1.704.706l1.568 1.568c.23.23.556.338.877.29.493-.074.84-.504 1.02-.968a2.5 2.5 0 1 1 3.236 3.236c-.464.18-.894.527-.967 1.02Z"/></svg>`,info:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>`,send:p`<svg viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></svg>`,smile:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg>`,slidersHorizontal:p`<svg viewBox="0 0 24 24"><line x1="21" x2="14" y1="4" y2="4"/><line x1="10" x2="3" y1="4" y2="4"/><line x1="21" x2="12" y1="12" y2="12"/><line x1="8" x2="3" y1="12" y2="12"/><line x1="21" x2="16" y1="20" y2="20"/><line x1="12" x2="3" y1="20" y2="20"/><line x1="14" x2="14" y1="2" y2="6"/><line x1="8" x2="8" y1="10" y2="14"/><line x1="16" x2="16" y1="18" y2="22"/></svg>`,square:p`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" rx="2"/></svg>`,eye:p`<svg viewBox="0 0 24 24"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></svg>`,eyeOff:p`<svg viewBox="0 0 24 24"><path d="M9.88 9.88a3 3 0 1 0 4.24 4.24"/><path d="M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"/><path d="M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61"/><line x1="2" x2="22" y1="2" y2="22"/></svg>`,trash:p`<svg viewBox="0 0 24 24"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/></svg>`,chevronDown:p`<svg viewBox="0 0 24 24"><path d="m6 9 6 6 6-6"/></svg>`,film:p`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2"/><path d="M7 3v18"/><path d="M3 7.5h4"/><path d="M3 12h18"/><path d="M3 16.5h4"/><path d="M17 3v18"/><path d="M17 7.5h4"/><path d="M17 16.5h4"/></svg>`},Ch="Taskmaster",Th="/taskmaster-icon.png",uc="#00d4ff";let Dn=null;function qe(){return Dn||(Dn={name:window.__TASKMASTER_BRAND_NAME__||Ch,iconUrl:window.__TASKMASTER_BRAND_ICON_URL__||Th,accentColor:window.__TASKMASTER_ACCENT_COLOR__||uc},Dn)}function _h(e){const t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);return t?`${parseInt(t[1],16)}, ${parseInt(t[2],16)}, ${parseInt(t[3],16)}`:null}function Mh(e){if(e===uc)return;const t=_h(e);if(!t)return;const n=document.documentElement;n.style.setProperty("--accent",e),n.style.setProperty("--accent-hover",e),n.style.setProperty("--accent-muted",e),n.style.setProperty("--primary",e),n.style.setProperty("--ring",e),n.style.setProperty("--accent-subtle",`rgba(${t}, 0.15)`),n.style.setProperty("--accent-glow",`rgba(${t}, 0.25)`),n.style.setProperty("--tasker-orange",e),n.style.setProperty("--tasker-orange-hover",e),n.style.setProperty("--tasker-orange-glow",`rgba(${t}, 0.25)`)}const Ph=p`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>`,Lh=p`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>`;let Io=!1;function Ih(){Io||(Io=!0,document.addEventListener("click",e=>{const t=document.getElementById("nav-burger-toggle");if(!(t!=null&&t.checked))return;const n=t.closest(".setup-header");n!=null&&n.contains(e.target)||(t.checked=!1)}))}function pt(e,t){const n=(l,d)=>l===e?p`<span class="sp-page-nav-current">${l}</span>`:p`<a href=${d}>${l}</a>`,i=p`
19
+ `],{type:"text/plain"}),i=URL.createObjectURL(n),s=document.createElement("a"),r=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-");s.href=i,s.download=`taskmaster-session-logs-${t}-${r}.log`,s.click(),URL.revokeObjectURL(i)}function Hd(e){if(typeof ResizeObserver>"u")return;const t=e.querySelector(".topbar");if(!t)return;const n=()=>{const{height:i}=t.getBoundingClientRect();e.style.setProperty("--topbar-height",`${i}px`)};n(),e.topbarObserver=new ResizeObserver(()=>n()),e.topbarObserver.observe(t)}function qe(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function rt(e){return`${JSON.stringify(e,null,2).trimEnd()}
20
+ `}function wl(e,t,n){if(t.length===0)return;let i=e;for(let r=0;r<t.length-1;r+=1){const o=t[r],a=t[r+1];if(typeof o=="number"){if(!Array.isArray(i))return;i[o]==null&&(i[o]=typeof a=="number"?[]:{}),i=i[o]}else{if(typeof i!="object"||i==null)return;const c=i;c[o]==null&&(c[o]=typeof a=="number"?[]:{}),i=c[o]}}const s=t[t.length-1];if(typeof s=="number"){Array.isArray(i)&&(i[s]=n);return}typeof i=="object"&&i!=null&&(i[s]=n)}async function Me(e){if(!(!e.client||!e.connected)){e.configLoading=!0,e.lastError=null;try{const t=await e.client.request("config.get",{});Vd(e,t)}catch(t){e.lastError=String(t)}finally{e.configLoading=!1}}}async function kl(e){if(!(!e.client||!e.connected)&&!e.configSchemaLoading){e.configSchemaLoading=!0;try{const t=await e.client.request("config.schema",{});qd(e,t)}catch(t){e.lastError=String(t)}finally{e.configSchemaLoading=!1}}}function qd(e,t){e.configSchema=t.schema??null,e.configUiHints=t.uiHints??{},e.configSchemaVersion=t.version??null}function Vd(e,t){e.configSnapshot=t;const n=typeof t.raw=="string"?t.raw:t.config&&typeof t.config=="object"?rt(t.config):e.configRaw;!e.configFormDirty||e.configFormMode==="raw"?e.configRaw=n:e.configForm?e.configRaw=rt(e.configForm):e.configRaw=n,e.configValid=typeof t.valid=="boolean"?t.valid:null,e.configIssues=Array.isArray(t.issues)?t.issues:[],e.configFormDirty||(e.configForm=qe(t.config??{}),e.configFormOriginal=qe(t.config??{}),e.configRawOriginal=n)}async function Gd(e){var t;if(!(!e.client||!e.connected)){e.configSaving=!0,e.lastError=null;try{const n=e.configFormMode==="form"&&e.configForm?rt(e.configForm):e.configRaw,i=(t=e.configSnapshot)==null?void 0:t.hash;if(!i){e.lastError="Config hash missing; reload and retry.";return}await e.client.request("config.set",{raw:n,baseHash:i}),e.configFormDirty=!1,await Me(e)}catch(n){e.lastError=String(n)}finally{e.configSaving=!1}}}async function gn(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("cron.status",{});e.cronStatus=t}catch(t){e.cronError=String(t)}}async function ki(e){if(!(!e.client||!e.connected)&&!e.cronLoading){e.cronLoading=!0,e.cronError=null;try{const t={includeDisabled:!0};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(t.agentIds=e.workspaceAgentIds);const n=await e.client.request("cron.list",t);e.cronJobs=Array.isArray(n.jobs)?n.jobs:[]}catch(t){e.cronError=String(t)}finally{e.cronLoading=!1}}}function Qd(e){if(e.scheduleKind==="at"){const n=Date.parse(e.scheduleAt);if(!Number.isFinite(n))throw new Error("Invalid run time.");return{kind:"at",atMs:n}}if(e.scheduleKind==="every"){const n=ti(e.everyAmount,0);if(n<=0)throw new Error("Invalid interval amount.");const i=e.everyUnit;return{kind:"every",everyMs:n*(i==="minutes"?6e4:i==="hours"?36e5:864e5)}}const t=e.cronExpr.trim();if(!t)throw new Error("Cron expression required.");return{kind:"cron",expr:t,tz:e.cronTz.trim()||void 0}}function Yd(e){if(e.payloadKind==="systemEvent"){const s=e.payloadText.trim();if(!s)throw new Error("System event text required.");return{kind:"systemEvent",text:s}}const t=e.payloadText.trim();if(!t)throw new Error("Agent message required.");const n={kind:"agentTurn",message:t};e.deliver&&(n.deliver=!0),e.channel&&(n.channel=e.channel),e.to.trim()&&(n.to=e.to.trim());const i=ti(e.timeoutSeconds,0);return i>0&&(n.timeoutSeconds=i),n}async function Xd(e){var t;if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{const n=Qd(e.cronForm),i=Yd(e.cronForm),s=e.cronForm.agentId.trim(),r=(t=e.cronForm.accountId)==null?void 0:t.trim(),o={name:e.cronForm.name.trim(),description:e.cronForm.description.trim()||void 0,agentId:s||void 0,accountId:r||void 0,enabled:e.cronForm.enabled,schedule:n,sessionTarget:e.cronForm.sessionTarget,wakeMode:e.cronForm.wakeMode,payload:i,isolation:e.cronForm.postToMainPrefix.trim()&&e.cronForm.sessionTarget==="isolated"?{postToMainPrefix:e.cronForm.postToMainPrefix.trim()}:void 0};if(!o.name)throw new Error("Name required.");await e.client.request("cron.add",o),e.cronForm={...e.cronForm,name:"",description:"",payloadText:""},await ki(e),await gn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Zd(e,t,n){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.update",{id:t.id,patch:{enabled:n}}),await ki(e),await gn(e)}catch(i){e.cronError=String(i)}finally{e.cronBusy=!1}}}async function Jd(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.run",{id:t.id,mode:"force"}),await Ts(e,t.id)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function ep(e,t){if(!(!e.client||!e.connected||e.cronBusy)){e.cronBusy=!0,e.cronError=null;try{await e.client.request("cron.remove",{id:t.id}),e.cronRunsJobId===t.id&&(e.cronRunsJobId=null,e.cronRuns=[]),await ki(e),await gn(e)}catch(n){e.cronError=String(n)}finally{e.cronBusy=!1}}}async function Ts(e,t){if(!(!e.client||!e.connected))try{const n=await e.client.request("cron.runs",{id:t,limit:50});e.cronRunsJobId=t,e.cronRuns=Array.isArray(n.entries)?n.entries:[]}catch(n){e.cronError=String(n)}}async function V(e,t){if(!(!e.client||!e.connected)&&!e.channelsLoading){e.channelsLoading=!0,e.channelsError=null;try{const n=await e.client.request("channels.status",{probe:t,timeoutMs:8e3});e.channelsSnapshot=n,e.channelsLastSuccess=Date.now()}catch(n){e.channelsError=String(n)}finally{e.channelsLoading=!1}}}async function sr(e,t,n){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0,e.whatsappActiveQrAccountId=n??null;try{const i=await e.client.request("web.login.start",{force:t,timeoutMs:3e4,accountId:n});e.whatsappLoginMessage=i.message??null,e.whatsappLoginQrDataUrl=i.qrDataUrl??null,e.whatsappLoginConnected=null}catch(i){e.whatsappLoginMessage=String(i),e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function Sl(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{const n=await e.client.request("web.login.wait",{timeoutMs:12e4,accountId:t});e.whatsappLoginMessage=n.message??null,e.whatsappLoginConnected=n.connected??null,n.connected&&(e.whatsappLoginQrDataUrl=null,e.whatsappActiveQrAccountId=null,e.whatsappPairedPhone=n.selfPhone??null)}catch(n){e.whatsappLoginMessage=String(n),e.whatsappLoginConnected=null}finally{e.whatsappBusy=!1}}}async function Al(e,t){if(!(!e.client||!e.connected||e.whatsappBusy)){e.whatsappBusy=!0;try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t}),e.whatsappLoginMessage="Logged out.",e.whatsappLoginQrDataUrl=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null}catch(n){e.whatsappLoginMessage=String(n)}finally{e.whatsappBusy=!1}}}async function xl(e,t){if(!e.client||!e.connected||e.whatsappAccountSaving)return;const n=t.trim();if(!n){e.whatsappAccountError="Account name is required.";return}const i=n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");if(!i){e.whatsappAccountError="Invalid account name.";return}e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const s=await e.client.request("config.get",{});e.configSnapshot=s;const r=qe(s.config??{});(!r.channels||typeof r.channels!="object")&&(r.channels={});const o=r.channels;(!o.whatsapp||typeof o.whatsapp!="object")&&(o.whatsapp={});const a=o.whatsapp;(!a.accounts||typeof a.accounts!="object")&&(a.accounts={});const c=a.accounts;if(c[i]){e.whatsappAccountError=`Account "${i}" already exists.`;return}c[i]={name:n,provider:"baileys"};const u=s.hash;if(!u){e.whatsappAccountError="Config hash missing; reload and retry.";return}const l=rt(r);await e.client.request("config.set",{raw:l,baseHash:u}),e.addingWhatsAppAccount=!1,e.newWhatsAppAccountName="",await V(e,!0),await sr(e,!0,i)}catch(s){e.whatsappAccountError=String(s)}finally{e.whatsappAccountSaving=!1}}async function $l(e,t){if(!(!e.client||!e.connected)&&!e.whatsappAccountSaving){e.whatsappAccountSaving=!0,e.whatsappAccountError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=qe(n.config??{}),s=i.channels,r=s==null?void 0:s.whatsapp,o=r==null?void 0:r.accounts;if(!o){e.whatsappAccountError="No accounts found in config.";return}if(Object.keys(o).length<=1){e.whatsappAccountError="Cannot remove the last account.";return}if(!o[t]){e.whatsappAccountError=`Account "${t}" not found.`;return}try{await e.client.request("channels.logout",{channel:"whatsapp",accountId:t})}catch{}delete o[t],Array.isArray(i.bindings)&&(i.bindings=i.bindings.filter(l=>{const d=l.match;return!d||d.channel!=="whatsapp"?!0:d.accountId!==t}));const c=n.hash;if(!c){e.whatsappAccountError="Config hash missing; reload and retry.";return}const u=rt(i);await e.client.request("config.set",{raw:u,baseHash:c}),e.whatsappActiveQrAccountId===t&&(e.whatsappActiveQrAccountId=null,e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null),await V(e,!0)}catch(n){e.whatsappAccountError=String(n)}finally{e.whatsappAccountSaving=!1}}}const tp=Object.freeze(Object.defineProperty({__proto__:null,addWhatsAppAccount:xl,loadChannels:V,logoutWhatsApp:Al,removeWhatsAppAccount:$l,startWhatsAppLogin:sr,waitWhatsAppLogin:Sl},Symbol.toStringTag,{value:"Module"}));async function rr(e){if(!(!e.client||!e.connected)&&!e.debugLoading){e.debugLoading=!0;try{const[t,n,i,s]=await Promise.all([e.client.request("status",{}),e.client.request("health",{}),e.client.request("models.list",{}),e.client.request("last-heartbeat",{})]);e.debugStatus=t,e.debugHealth=n;const r=i;e.debugModels=Array.isArray(r==null?void 0:r.models)?r==null?void 0:r.models:[],e.debugHeartbeat=s}catch(t){e.debugCallError=String(t)}finally{e.debugLoading=!1}}}const np=2e3,ip=new Set(["trace","debug","info","warn","error","fatal"]);function sp(e){if(typeof e!="string")return null;const t=e.trim();if(!t.startsWith("{")||!t.endsWith("}"))return null;try{const n=JSON.parse(t);return!n||typeof n!="object"?null:n}catch{return null}}function rp(e){if(typeof e!="string")return null;const t=e.toLowerCase();return ip.has(t)?t:null}function El(e){if(!e.trim())return{raw:e,message:e};try{const t=JSON.parse(e),n=t&&typeof t._meta=="object"&&t._meta!==null?t._meta:null,i=typeof t.time=="string"?t.time:typeof(n==null?void 0:n.date)=="string"?n==null?void 0:n.date:null,s=rp((n==null?void 0:n.logLevelName)??(n==null?void 0:n.level)),r=typeof t[0]=="string"?t[0]:typeof(n==null?void 0:n.name)=="string"?n==null?void 0:n.name:null,o=sp(r);let a=null;o&&(typeof o.subsystem=="string"?a=o.subsystem:typeof o.module=="string"&&(a=o.module)),!a&&r&&r.length<120&&(a=r);let c=null;return typeof t[1]=="string"?c=t[1]:!o&&typeof t[0]=="string"?c=t[0]:typeof t.message=="string"&&(c=t.message),{raw:e,time:i,level:s,subsystem:a,message:c??e,meta:n??void 0}}catch{return{raw:e,message:e}}}async function Tt(e,t){if(!(!e.client||!e.connected)&&!(e.logsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.logsLoading=!0),e.logsError=null;try{const i=await e.client.request("logs.tail",{cursor:t!=null&&t.reset?void 0:e.logsCursor??void 0,limit:e.logsLimit,maxBytes:e.logsMaxBytes}),r=(Array.isArray(i.lines)?i.lines.filter(a=>typeof a=="string"):[]).map(El),o=!!(t!=null&&t.reset||i.reset||e.logsCursor==null);e.logsEntries=o?r:[...e.logsEntries,...r].slice(-np),typeof i.cursor=="number"&&(e.logsCursor=i.cursor),typeof i.file=="string"&&(e.logsFile=i.file),e.logsTruncated=!!i.truncated,e.logsLastFetchAt=Date.now()}catch(n){e.logsError=String(n)}finally{t!=null&&t.quiet||(e.logsLoading=!1)}}}const op=Object.freeze(Object.defineProperty({__proto__:null,loadLogs:Tt,parseLogLine:El},Symbol.toStringTag,{value:"Module"}));const Tl={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:oe,n:Vn,Gx:To,Gy:Co,a:Xi,d:Zi,h:ap}=Tl,ot=32,or=64,lp=(...e)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...e)},te=(e="")=>{const t=new Error(e);throw lp(t,te),t},cp=e=>typeof e=="bigint",up=e=>typeof e=="string",dp=e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array",Ge=(e,t,n="")=>{const i=dp(e),s=e==null?void 0:e.length,r=t!==void 0;if(!i||r&&s!==t){const o=n&&`"${n}" `,a=r?` of length ${t}`:"",c=i?`length=${s}`:`type=${typeof e}`;te(o+"expected Uint8Array"+a+", got "+c)}return e},Si=e=>new Uint8Array(e),Cl=e=>Uint8Array.from(e),_l=(e,t)=>e.toString(16).padStart(t,"0"),Ml=e=>Array.from(Ge(e)).map(t=>_l(t,2)).join(""),Re={_0:48,_9:57,A:65,F:70,a:97,f:102},_o=e=>{if(e>=Re._0&&e<=Re._9)return e-Re._0;if(e>=Re.A&&e<=Re.F)return e-(Re.A-10);if(e>=Re.a&&e<=Re.f)return e-(Re.a-10)},Pl=e=>{const t="hex invalid";if(!up(e))return te(t);const n=e.length,i=n/2;if(n%2)return te(t);const s=Si(i);for(let r=0,o=0;r<i;r++,o+=2){const a=_o(e.charCodeAt(o)),c=_o(e.charCodeAt(o+1));if(a===void 0||c===void 0)return te(t);s[r]=a*16+c}return s},Ll=()=>globalThis==null?void 0:globalThis.crypto,pp=()=>{var e;return((e=Ll())==null?void 0:e.subtle)??te("crypto.subtle must be defined, consider polyfill")},pn=(...e)=>{const t=Si(e.reduce((i,s)=>i+Ge(s).length,0));let n=0;return e.forEach(i=>{t.set(i,n),n+=i.length}),t},hp=(e=ot)=>Ll().getRandomValues(Si(e)),ni=BigInt,et=(e,t,n,i="bad number: out of range")=>cp(e)&&t<=e&&e<n?e:te(i),P=(e,t=oe)=>{const n=e%t;return n>=0n?n:t+n},Il=e=>P(e,Vn),fp=(e,t)=>{(e===0n||t<=0n)&&te("no inverse n="+e+" mod="+t);let n=P(e,t),i=t,s=0n,r=1n;for(;n!==0n;){const o=i/n,a=i%n,c=s-r*o;i=n,n=a,s=r,r=c}return i===1n?P(s,t):te("no inverse")},gp=e=>{const t=Ol[e];return typeof t!="function"&&te("hashes."+e+" not set"),t},Ji=e=>e instanceof at?e:te("Point expected"),Cs=2n**256n,Ce=class Ce{constructor(t,n,i,s){U(this,"X");U(this,"Y");U(this,"Z");U(this,"T");const r=Cs;this.X=et(t,0n,r),this.Y=et(n,0n,r),this.Z=et(i,1n,r),this.T=et(s,0n,r),Object.freeze(this)}static CURVE(){return Tl}static fromAffine(t){return new Ce(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){const i=Zi,s=Cl(Ge(t,ot)),r=t[31];s[31]=r&-129;const o=Nl(s);et(o,0n,n?Cs:oe);const c=P(o*o),u=P(c-1n),l=P(i*c+1n);let{isValid:d,value:h}=yp(u,l);d||te("bad point: y not sqrt");const v=(h&1n)===1n,f=(r&128)!==0;return!n&&h===0n&&f&&te("bad point: x==0, isLastByteOdd"),f!==v&&(h=P(-h)),new Ce(h,o,1n,P(h*o))}static fromHex(t,n){return Ce.fromBytes(Pl(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){const t=Xi,n=Zi,i=this;if(i.is0())return te("bad point: ZERO");const{X:s,Y:r,Z:o,T:a}=i,c=P(s*s),u=P(r*r),l=P(o*o),d=P(l*l),h=P(c*t),v=P(l*P(h+u)),f=P(d+P(n*P(c*u)));if(v!==f)return te("bad point: equation left != right (1)");const b=P(s*r),k=P(o*a);return b!==k?te("bad point: equation left != right (2)"):this}equals(t){const{X:n,Y:i,Z:s}=this,{X:r,Y:o,Z:a}=Ji(t),c=P(n*a),u=P(r*s),l=P(i*a),d=P(o*s);return c===u&&l===d}is0(){return this.equals($t)}negate(){return new Ce(P(-this.X),this.Y,this.Z,P(-this.T))}double(){const{X:t,Y:n,Z:i}=this,s=Xi,r=P(t*t),o=P(n*n),a=P(2n*P(i*i)),c=P(s*r),u=t+n,l=P(P(u*u)-r-o),d=c+o,h=d-a,v=c-o,f=P(l*h),b=P(d*v),k=P(l*v),x=P(h*d);return new Ce(f,b,x,k)}add(t){const{X:n,Y:i,Z:s,T:r}=this,{X:o,Y:a,Z:c,T:u}=Ji(t),l=Xi,d=Zi,h=P(n*o),v=P(i*a),f=P(r*d*u),b=P(s*c),k=P((n+i)*(o+a)-h-v),x=P(b-f),$=P(b+f),T=P(v-l*h),C=P(k*x),M=P($*T),R=P(k*T),B=P(x*$);return new Ce(C,M,B,R)}subtract(t){return this.add(Ji(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return $t;if(et(t,1n,Vn),t===1n)return this;if(this.equals(lt))return Cp(t).p;let i=$t,s=lt;for(let r=this;t>0n;r=r.double(),t>>=1n)t&1n?i=i.add(r):n&&(s=s.add(r));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){const{X:t,Y:n,Z:i}=this;if(this.equals($t))return{x:0n,y:1n};const s=fp(i,oe);P(i*s)!==1n&&te("invalid inverse");const r=P(t*s),o=P(n*s);return{x:r,y:o}}toBytes(){const{x:t,y:n}=this.assertValidity().toAffine(),i=Rl(n);return i[31]|=t&1n?128:0,i}toHex(){return Ml(this.toBytes())}clearCofactor(){return this.multiply(ni(ap),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Vn/2n,!1).double();return Vn%2n&&(t=t.add(this)),t.is0()}};U(Ce,"BASE"),U(Ce,"ZERO");let at=Ce;const lt=new at(To,Co,1n,P(To*Co)),$t=new at(0n,1n,1n,0n);at.BASE=lt;at.ZERO=$t;const Rl=e=>Pl(_l(et(e,0n,Cs),or)).reverse(),Nl=e=>ni("0x"+Ml(Cl(Ge(e)).reverse())),xe=(e,t)=>{let n=e;for(;t-- >0n;)n*=n,n%=oe;return n},mp=e=>{const n=e*e%oe*e%oe,i=xe(n,2n)*n%oe,s=xe(i,1n)*e%oe,r=xe(s,5n)*s%oe,o=xe(r,10n)*r%oe,a=xe(o,20n)*o%oe,c=xe(a,40n)*a%oe,u=xe(c,80n)*c%oe,l=xe(u,80n)*c%oe,d=xe(l,10n)*r%oe;return{pow_p_5_8:xe(d,2n)*e%oe,b2:n}},Mo=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,yp=(e,t)=>{const n=P(t*t*t),i=P(n*n*t),s=mp(e*i).pow_p_5_8;let r=P(e*n*s);const o=P(t*r*r),a=r,c=P(r*Mo),u=o===e,l=o===P(-e),d=o===P(-e*Mo);return u&&(r=a),(l||d)&&(r=c),(P(r)&1n)===1n&&(r=P(-r)),{isValid:u||l,value:r}},_s=e=>Il(Nl(e)),ar=(...e)=>Ol.sha512Async(pn(...e)),vp=(...e)=>gp("sha512")(pn(...e)),Dl=e=>{const t=e.slice(0,ot);t[0]&=248,t[31]&=127,t[31]|=64;const n=e.slice(ot,or),i=_s(t),s=lt.multiply(i),r=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:r}},lr=e=>ar(Ge(e,ot)).then(Dl),bp=e=>Dl(vp(Ge(e,ot))),wp=e=>lr(e).then(t=>t.pointBytes),kp=e=>ar(e.hashable).then(e.finish),Sp=(e,t,n)=>{const{pointBytes:i,scalar:s}=e,r=_s(t),o=lt.multiply(r).toBytes();return{hashable:pn(o,i,n),finish:u=>{const l=Il(r+_s(u)*s);return Ge(pn(o,Rl(l)),or)}}},Ap=async(e,t)=>{const n=Ge(e),i=await lr(t),s=await ar(i.prefix,n);return kp(Sp(i,s,n))},Ol={sha512Async:async e=>{const t=pp(),n=pn(e);return Si(await t.digest("SHA-512",n.buffer))},sha512:void 0},xp=(e=hp(ot))=>e,$p={getExtendedPublicKeyAsync:lr,getExtendedPublicKey:bp,randomSecretKey:xp},ii=8,Ep=256,Bl=Math.ceil(Ep/ii)+1,Ms=2**(ii-1),Tp=()=>{const e=[];let t=lt,n=t;for(let i=0;i<Bl;i++){n=t,e.push(n);for(let s=1;s<Ms;s++)n=n.add(t),e.push(n);t=n.double()}return e};let Po;const Lo=(e,t)=>{const n=t.negate();return e?n:t},Cp=e=>{const t=Po||(Po=Tp());let n=$t,i=lt;const s=2**ii,r=s,o=ni(s-1),a=ni(ii);for(let c=0;c<Bl;c++){let u=Number(e&o);e>>=a,u>Ms&&(u-=r,e+=1n);const l=c*Ms,d=l,h=l+Math.abs(u)-1,v=c%2!==0,f=u<0;u===0?i=i.add(Lo(v,t[d])):n=n.add(Lo(f,t[h]))}return e!==0n&&te("invalid wnaf"),{p:n,f:i}},es="taskmaster-device-identity-v1";function Ps(e){let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function Fl(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"=".repeat((4-t.length%4)%4),i=atob(n),s=new Uint8Array(i.length);for(let r=0;r<i.length;r+=1)s[r]=i.charCodeAt(r);return s}function _p(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Ul(e){const t=await crypto.subtle.digest("SHA-256",e);return _p(new Uint8Array(t))}async function Mp(){const e=$p.randomSecretKey(),t=await wp(e);return{deviceId:await Ul(t),publicKey:Ps(t),privateKey:Ps(e)}}async function Pp(){try{const n=localStorage.getItem(es);if(n){const i=JSON.parse(n);if((i==null?void 0:i.version)===1&&typeof i.deviceId=="string"&&typeof i.publicKey=="string"&&typeof i.privateKey=="string"){const s=await Ul(Fl(i.publicKey));if(s!==i.deviceId){const r={...i,deviceId:s};return localStorage.setItem(es,JSON.stringify(r)),{deviceId:s,publicKey:i.publicKey,privateKey:i.privateKey}}return{deviceId:i.deviceId,publicKey:i.publicKey,privateKey:i.privateKey}}}}catch{}const e=await Mp(),t={version:1,deviceId:e.deviceId,publicKey:e.publicKey,privateKey:e.privateKey,createdAtMs:Date.now()};return localStorage.setItem(es,JSON.stringify(t)),e}async function Lp(e,t){const n=Fl(e),i=new TextEncoder().encode(t),s=await Ap(i,n);return Ps(s)}const Wl="taskmaster.device.auth.v1";function cr(e){return e.trim()}function Ip(e){if(!Array.isArray(e))return[];const t=new Set;for(const n of e){const i=n.trim();i&&t.add(i)}return[...t].sort()}function ur(){try{const e=window.localStorage.getItem(Wl);if(!e)return null;const t=JSON.parse(e);return!t||t.version!==1||!t.deviceId||typeof t.deviceId!="string"||!t.tokens||typeof t.tokens!="object"?null:t}catch{return null}}function Kl(e){try{window.localStorage.setItem(Wl,JSON.stringify(e))}catch{}}function Rp(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return null;const n=cr(e.role),i=t.tokens[n];return!i||typeof i.token!="string"?null:i}function Np(e){const t=cr(e.role),n={version:1,deviceId:e.deviceId,tokens:{}},i=ur();i&&i.deviceId===e.deviceId&&(n.tokens={...i.tokens});const s={token:e.token,role:t,scopes:Ip(e.scopes),updatedAtMs:Date.now()};return n.tokens[t]=s,Kl(n),s}function Dp(e){const t=ur();if(!t||t.deviceId!==e.deviceId)return;const n=cr(e.role);if(!t.tokens[n])return;const i={...t,tokens:{...t.tokens}};delete i.tokens[n],Kl(i)}async function dr(e,t){if(!(!e.client||!e.connected)&&!e.devicesLoading){e.devicesLoading=!0,t!=null&&t.quiet||(e.devicesError=null);try{const n=await e.client.request("device.pair.list",{});e.devicesList={pending:Array.isArray(n==null?void 0:n.pending)?n.pending:[],paired:Array.isArray(n==null?void 0:n.paired)?n.paired:[]}}catch(n){t!=null&&t.quiet||(e.devicesError=String(n))}finally{e.devicesLoading=!1}}}async function pr(e,t){if(!(!e.client||!e.connected)&&!e.nodesLoading){e.nodesLoading=!0,t!=null&&t.quiet||(e.lastError=null);try{const n=await e.client.request("node.list",{});e.nodes=Array.isArray(n.nodes)?n.nodes:[]}catch(n){t!=null&&t.quiet||(e.lastError=String(n))}finally{e.nodesLoading=!1}}}function Op(e){return{method:"exec.approvals.get",params:{}}}async function Bp(e,t){if(!(!e.client||!e.connected)&&!e.execApprovalsLoading){e.execApprovalsLoading=!0,e.lastError=null;try{const n=Op(t);if(!n){e.lastError="Select a node before loading exec approvals.";return}const i=await e.client.request(n.method,n.params);Fp(e,i)}catch(n){e.lastError=String(n)}finally{e.execApprovalsLoading=!1}}}function Fp(e,t){e.execApprovalsSnapshot=t,e.execApprovalsDirty||(e.execApprovalsForm=qe(t.file??{}))}async function zl(e){if(!(!e.client||!e.connected)&&!e.presenceLoading){e.presenceLoading=!0,e.presenceError=null,e.presenceStatus=null;try{const t=await e.client.request("system-presence",{});Array.isArray(t)?(e.presenceEntries=t,e.presenceStatus=t.length===0?"No instances yet.":null):(e.presenceEntries=[],e.presenceStatus="No presence payload.")}catch(t){e.presenceError=String(t)}finally{e.presenceLoading=!1}}}function Mt(e,t,n){if(!t.trim())return;const i={...e.skillMessages};n?i[t]=n:delete i[t],e.skillMessages=i}function Ai(e){return e instanceof Error?e.message:String(e)}async function ct(e,t){if(t!=null&&t.clearMessages&&Object.keys(e.skillMessages).length>0&&(e.skillMessages={}),!(!e.client||!e.connected)&&!e.skillsLoading){e.skillsLoading=!0,e.skillsError=null;try{const n=await e.client.request("skills.status",{});n&&(e.skillsReport=n)}catch(n){e.skillsError=Ai(n)}finally{e.skillsLoading=!1}}}function jl(e,t,n){e.skillEdits={...e.skillEdits,[t]:n}}async function Hl(e,t,n){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{await e.client.request("skills.update",{skillKey:t,enabled:n}),await ct(e),Mt(e,t,{kind:"success",message:n?"Skill enabled":"Skill disabled"})}catch(i){const s=Ai(i);e.skillsError=s,Mt(e,t,{kind:"error",message:s})}finally{e.skillsBusyKey=null}}}async function ql(e,t){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const n=e.skillEdits[t]??"";await e.client.request("skills.update",{skillKey:t,apiKey:n}),await ct(e),Mt(e,t,{kind:"success",message:"API key saved"})}catch(n){const i=Ai(n);e.skillsError=i,Mt(e,t,{kind:"error",message:i})}finally{e.skillsBusyKey=null}}}async function Vl(e,t,n,i){if(!(!e.client||!e.connected)){e.skillsBusyKey=t,e.skillsError=null;try{const s=await e.client.request("skills.install",{name:n,installId:i,timeoutMs:12e4});await ct(e),Mt(e,t,{kind:"success",message:(s==null?void 0:s.message)??"Installed"})}catch(s){const r=Ai(s);e.skillsError=r,Mt(e,t,{kind:"error",message:r})}finally{e.skillsBusyKey=null}}}const Up=Object.freeze(Object.defineProperty({__proto__:null,installSkill:Vl,loadSkills:ct,saveSkillApiKey:ql,updateSkillEdit:jl,updateSkillEnabled:Hl},Symbol.toStringTag,{value:"Module"})),Gl={overview:"/overview",channels:"/channels",instances:"/instances",cron:"/cron",skills:"/skills",nodes:"/nodes",chat:"/chat",admins:"/admins",config:"/config",debug:"/debug",logs:"/logs"},Ql=new Map(Object.entries(Gl).map(([e,t])=>[t,e]));function xi(e){if(!e)return"";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t==="/"?"":(t.endsWith("/")&&(t=t.slice(0,-1)),t)}function hn(e){if(!e)return"/";let t=e.trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t}function Wp(e,t=""){const n=xi(t),i=Gl[e];return n?`${n}${i}`:i}function Yl(e,t=""){const n=xi(t);let i=e||"/";n&&(i===n?i="/":i.startsWith(`${n}/`)&&(i=i.slice(n.length)));let s=hn(i).toLowerCase();return s.endsWith("/index.html")&&(s="/"),s==="/"?"chat":Ql.get(s)??null}function Kp(e){let t=hn(e);if(t.endsWith("/index.html")&&(t=hn(t.slice(0,-11))),t==="/")return"";const n=t.split("/").filter(Boolean);if(n.length===0)return"";for(let i=0;i<n.length;i++){const s=`/${n.slice(i).join("/")}`.toLowerCase();if(Ql.has(s)){const r=n.slice(0,i);return r.length?`/${r.join("/")}`:""}}return`/${n.join("/")}`}function zp(){return typeof window>"u"||typeof window.matchMedia!="function"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function hr(e){return e==="system"?zp():e}const In=e=>Number.isNaN(e)?.5:e<=0?0:e>=1?1:e,jp=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches??!1,Rn=e=>{e.classList.remove("theme-transition"),e.style.removeProperty("--theme-switch-x"),e.style.removeProperty("--theme-switch-y")},Hp=({nextTheme:e,applyTheme:t,context:n,currentTheme:i})=>{var u;if(i===e)return;const s=globalThis.document??null;if(!s){t();return}const r=s.documentElement,o=s,a=jp();if(!!o.startViewTransition&&!a){let l=.5,d=.5;if((n==null?void 0:n.pointerClientX)!==void 0&&(n==null?void 0:n.pointerClientY)!==void 0&&typeof window<"u")l=In(n.pointerClientX/window.innerWidth),d=In(n.pointerClientY/window.innerHeight);else if(n!=null&&n.element){const h=n.element.getBoundingClientRect();h.width>0&&h.height>0&&typeof window<"u"&&(l=In((h.left+h.width/2)/window.innerWidth),d=In((h.top+h.height/2)/window.innerHeight))}r.style.setProperty("--theme-switch-x",`${l*100}%`),r.style.setProperty("--theme-switch-y",`${d*100}%`),r.classList.add("theme-transition");try{const h=(u=o.startViewTransition)==null?void 0:u.call(o,()=>{t()});h!=null&&h.finished?h.finished.finally(()=>Rn(r)):Rn(r)}catch{Rn(r),t()}return}t(),Rn(r)},qp=2e3;async function rn(e,t){if(!(!e.client||!e.connected)&&!(e.sessionLogsLoading&&!(t!=null&&t.quiet))){t!=null&&t.quiet||(e.sessionLogsLoading=!0),e.sessionLogsError=null;try{const n={cursors:t!=null&&t.reset?void 0:e.sessionLogsCursors,limit:500};Array.isArray(e.workspaceAgentIds)&&e.workspaceAgentIds.length>0&&(n.agents=e.workspaceAgentIds);const s=await e.client.request("sessions.transcript",n),r=Array.isArray(s.entries)?s.entries:[],o=!!(t!=null&&t.reset||Object.keys(e.sessionLogsCursors).length===0);e.sessionLogsEntries=o?r:[...e.sessionLogsEntries,...r].slice(-qp),s.cursors&&(e.sessionLogsCursors=s.cursors),Array.isArray(s.agents)&&(e.sessionLogsAgents=s.agents),e.sessionLogsLastFetchAt=Date.now()}catch(n){e.sessionLogsError=String(n)}finally{t!=null&&t.quiet||(e.sessionLogsLoading=!1)}}}const Xl=Object.freeze(Object.defineProperty({__proto__:null,loadSessionLogs:rn},Symbol.toStringTag,{value:"Module"}));async function Zl(e,t){if(!(!e.client||!e.connected))try{const n={},i=await e.client.request("memory.audit",n);i!=null&&i.ok&&(e.auditEntries=i.entries??[])}catch{}}async function Vp(e,t){if(!(!e.client||!e.connected))try{const n={};await e.client.request("memory.auditClear",n),e.auditEntries=[]}catch{}}function De(e){return e instanceof Error?e.message:String(e)}let Nn=null;function mn(e,t){Nn&&clearTimeout(Nn),e.filesMessage={kind:"success",text:t},Nn=setTimeout(()=>{e.filesMessage=null,Nn=null},3e3)}async function yn(e,t){if(!(!e.client||!e.connected)){if(!t){e.filesTree=[],e.filesRoot="";return}if(!e.filesLoading){e.filesLoading=!0,e.filesError=null;try{const n={};t&&(n.agentId=t);const i=await e.client.request("files.tree",n);i!=null&&i.tree&&(e.filesTree=i.tree,e.filesRoot=i.root??"")}catch(n){e.filesError=De(n)}finally{e.filesLoading=!1}}}}async function Gp(e,t,n){e.filesSelectedPaths=new Set([t]),await Jl(e,t,n)}async function Qp(e,t,n){const i=new Set(e.filesSelectedPaths);if(i.has(t)?i.delete(t):i.add(t),e.filesSelectedPaths=i,i.size===1){const s=[...i][0];await Jl(e,s,n)}else e.filesSelectedPath=null,e.filesPreviewContent=null,e.filesPreviewSize=null,e.filesPreviewBinary=!1}async function Yp(e,t){if(!e.client||!e.connected)return;const n=[...e.filesSelectedPaths];if(n.length===0)return;let i=0,s="";for(const r of n)try{await ec(e,r,t),i++}catch(o){s=De(o)}s?e.filesMessage={kind:"error",text:`${i} downloaded, error: ${s}`}:mn(e,`${i} file${i!==1?"s":""} downloaded`)}async function Xp(e,t,n,i){const s=t.split("/").pop()??t,r=n==="."?s:`${n}/${s}`;r!==t&&await tc(e,t,r,i)}async function Jl(e,t,n){if(!(!e.client||!e.connected)){e.filesSelectedPath=t,e.filesPreviewLoading=!0,e.filesPreviewContent=null,e.filesPreviewBinary=!1,e.filesPreviewSize=null;try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.read",i);e.filesPreviewContent=(s==null?void 0:s.content)??null,e.filesPreviewBinary=(s==null?void 0:s.binary)??!1,e.filesPreviewSize=(s==null?void 0:s.size)??null}catch(i){e.filesError=De(i)}finally{e.filesPreviewLoading=!1}}}async function ec(e,t,n){if(!(!e.client||!e.connected))try{const i={path:t};n&&(i.agentId=n);const s=await e.client.request("files.download",i);if(!(s!=null&&s.base64)){e.filesMessage={kind:"error",text:"Download failed: no data"};return}const r=Uint8Array.from(atob(s.base64),u=>u.charCodeAt(0)),o=new Blob([r]),a=URL.createObjectURL(o),c=document.createElement("a");c.href=a,c.download=s.name??t.split("/").pop()??"download",document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(a)}catch(i){e.filesMessage={kind:"error",text:De(i)}}}async function Zp(e,t,n,i){if(!e.client||!e.connected)return;e.filesUploadBusy=!0,e.filesMessage=null;let s=0,r="";for(const o of n)try{const a=await o.arrayBuffer(),c=btoa(new Uint8Array(a).reduce((l,d)=>l+String.fromCharCode(d),"")),u={path:t,name:o.name,data:c};i&&(u.agentId=i),await e.client.request("files.upload",u),s++}catch(a){r=De(a)}e.filesUploadBusy=!1,r?e.filesMessage={kind:"error",text:s>0?`${s} uploaded, error: ${r}`:r}:mn(e,`${s} file${s!==1?"s":""} uploaded`),await yn(e,i)}async function Jp(e,t,n){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const i={path:t};n&&(i.agentId=n),await e.client.request("files.delete",i),mn(e,"File deleted"),e.filesSelectedPath===t&&(e.filesSelectedPath=null,e.filesPreviewContent=null),await yn(e,n)}catch(i){e.filesMessage={kind:"error",text:De(i)}}}}async function tc(e,t,n,i){if(!(!e.client||!e.connected)){e.filesMessage=null;try{const s={from:t,to:n};i&&(s.agentId=i),await e.client.request("files.move",s),mn(e,"File moved"),e.filesSelectedPath===t&&(e.filesSelectedPath=n),await yn(e,i)}catch(s){e.filesMessage={kind:"error",text:De(s)}}}}async function fr(e,t){if(!(!e.client||!e.connected))try{const n={};t&&(n.agentId=t);const i=await e.client.request("memory.status",n);i!=null&&i.ok&&(e.filesMemoryStatus={dirty:i.dirty??!1,syncing:i.syncing,syncProgress:i.syncProgress,files:i.files??0,chunks:i.chunks??0,model:i.model,embeddingState:i.embeddingState})}catch{}}async function eh(e,t){if(!(!e.client||!e.connected)&&!e.filesReindexBusy){e.filesReindexBusy=!0,e.filesMessage=null;try{const n={force:!0};t&&(n.agentId=t);const i=await e.client.request("memory.reindex",n),s=(i==null?void 0:i.files)??0,r=(i==null?void 0:i.chunks)??0;mn(e,`Re-indexed: ${s} files, ${r} chunks`),await fr(e,t)}catch(n){e.filesMessage={kind:"error",text:De(n)}}finally{e.filesReindexBusy=!1}}}function th(e,t){const n=new Set(e.filesExpandedDirs);n.has(t)?n.delete(t):n.add(t),e.filesExpandedDirs=n}async function nh(e,t,n){if(!(!e.client||!e.connected)){if(!t.trim()){e.filesSearchResults=null;return}e.filesSearchLoading=!0,e.filesSearchResults=null;try{const i={query:t.trim(),maxResults:20};n&&(i.agentId=n);const s=await e.client.request("memory.search",i);e.filesSearchResults=(s==null?void 0:s.results)??[]}catch(i){e.filesMessage={kind:"error",text:De(i)},e.filesSearchResults=null}finally{e.filesSearchLoading=!1}}}function ih(e){e.filesSearchQuery="",e.filesSearchResults=null}function sh(e){e.nodesPollInterval==null&&(e.nodesPollInterval=window.setInterval(()=>{pr(e,{quiet:!0})},5e3))}function rh(e){e.nodesPollInterval!=null&&(clearInterval(e.nodesPollInterval),e.nodesPollInterval=null)}function gr(e){e.logsPollInterval==null&&(e.logsPollInterval=window.setInterval(()=>{e.tab==="logs"&&Tt(e,{quiet:!0})},2e3))}function mr(e){e.logsPollInterval!=null&&(clearInterval(e.logsPollInterval),e.logsPollInterval=null)}function yr(e){e.sessionLogsPollInterval==null&&(e.sessionLogsPollInterval=window.setInterval(()=>{!(e.advancedPage?e.advancedTab==="logs":e.tab==="logs")||e.logsSubTab!=="session"||rn(e,{quiet:!0})},2e3))}function vr(e){e.sessionLogsPollInterval!=null&&(clearInterval(e.sessionLogsPollInterval),e.sessionLogsPollInterval=null)}function br(e){e.debugPollInterval==null&&(e.debugPollInterval=window.setInterval(()=>{e.tab==="debug"&&rr(e)},3e3))}function wr(e){e.debugPollInterval!=null&&(clearInterval(e.debugPollInterval),e.debugPollInterval=null)}function oh(e){e.auditPollInterval==null&&(e.auditPollInterval=window.setInterval(()=>{Zl(e)},3e4))}function ah(e){e.auditPollInterval!=null&&(clearInterval(e.auditPollInterval),e.auditPollInterval=null)}function lh(e){e.memoryStatusPollInterval==null&&(e.memoryStatusPollInterval=window.setInterval(()=>{e.tab==="files"&&fr(e)},3e3))}function ch(e){e.memoryStatusPollInterval!=null&&(clearInterval(e.memoryStatusPollInterval),e.memoryStatusPollInterval=null)}function je(e,t){var i;const n={...t,lastActiveSessionKey:((i=t.lastActiveSessionKey)==null?void 0:i.trim())||t.sessionKey.trim()||"main"};e.settings=n,ud(n),t.theme!==e.theme&&(e.theme=t.theme,$i(e,hr(t.theme))),e.applySessionKey=e.settings.lastActiveSessionKey}function nc(e,t){const n=t.trim();n&&e.settings.lastActiveSessionKey!==n&&je(e,{...e.settings,lastActiveSessionKey:n})}function uh(e){if(!window.location.search)return;const t=new URLSearchParams(window.location.search),n=t.get("token"),i=t.get("password"),s=t.get("session"),r=t.get("gatewayUrl");let o=!1;if(n!=null){const c=n.trim();c&&c!==e.settings.token&&je(e,{...e.settings,token:c}),t.delete("token"),o=!0}if(i!=null){const c=i.trim();c&&(e.password=c),t.delete("password"),o=!0}if(s!=null){const c=s.trim();c&&(e.sessionKey=c,je(e,{...e.settings,sessionKey:c,lastActiveSessionKey:c}))}if(r!=null){const c=r.trim();c&&c!==e.settings.gatewayUrl&&je(e,{...e.settings,gatewayUrl:c}),t.delete("gatewayUrl"),o=!0}if(!o)return;const a=new URL(window.location.href);a.search=t.toString(),window.history.replaceState({},"",a.toString())}function dh(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),si(e),sc(e,t,!1)}function ph(e,t,n){Hp({nextTheme:t,applyTheme:()=>{e.theme=t,je(e,{...e.settings,theme:t}),$i(e,hr(t))},context:n,currentTheme:e.theme})}async function si(e){if(e.tab==="overview"&&await rc(e),e.tab==="channels"&&await bh(e),e.tab==="instances"&&await zl(e),e.tab==="cron"&&await kr(e),e.tab==="skills"&&await ct(e),e.tab==="nodes"&&(await pr(e),await dr(e),await Me(e),await Bp(e)),e.tab==="chat"&&!e.advancedPage&&!e.chatPage&&(await xh(e),fn(e,!e.chatHasAutoScrolled)),e.tab==="config"&&(await kl(e),await Me(e)),e.tab==="debug"&&(await rr(e),e.eventLog=e.eventLogBuffer),e.tab==="logs"){if(e.logsAtBottom=!0,e.logsSubTab==="session"){const{loadSessionLogs:n}=await se(async()=>{const{loadSessionLogs:i}=await Promise.resolve().then(()=>Xl);return{loadSessionLogs:i}},void 0,import.meta.url);await n(e,{reset:!0})}else await Tt(e,{reset:!0});bl(e,!0)}}function hh(){if(typeof window>"u")return"";const e=window.__TASKMASTER_CONTROL_UI_BASE_PATH__;return typeof e=="string"&&e.trim()?xi(e):Kp(window.location.pathname)}function fh(e){e.theme=e.settings.theme??"system",$i(e,hr(e.theme))}function $i(e,t){if(e.themeResolved=t,typeof document>"u")return;const n=document.documentElement;n.dataset.theme=t,n.style.colorScheme=t}function gh(e){if(typeof window>"u"||typeof window.matchMedia!="function")return;if(e.themeMedia=window.matchMedia("(prefers-color-scheme: dark)"),e.themeMediaHandler=n=>{e.theme==="system"&&$i(e,n.matches?"dark":"light")},typeof e.themeMedia.addEventListener=="function"){e.themeMedia.addEventListener("change",e.themeMediaHandler);return}e.themeMedia.addListener(e.themeMediaHandler)}function mh(e){if(!e.themeMedia||!e.themeMediaHandler)return;if(typeof e.themeMedia.removeEventListener=="function"){e.themeMedia.removeEventListener("change",e.themeMediaHandler);return}e.themeMedia.removeListener(e.themeMediaHandler),e.themeMedia=null,e.themeMediaHandler=null}function yh(e,t){if(typeof window>"u")return;const n=Yl(window.location.pathname,e.basePath)??"chat";ic(e,n),sc(e,n,t)}function vh(e){var s;if(typeof window>"u")return;const t=Yl(window.location.pathname,e.basePath);if(!t)return;const i=(s=new URL(window.location.href).searchParams.get("session"))==null?void 0:s.trim();i&&(e.sessionKey=i,je(e,{...e.settings,sessionKey:i,lastActiveSessionKey:i})),ic(e,t)}function ic(e,t){e.tab!==t&&(e.tab=t),t==="chat"&&(e.chatHasAutoScrolled=!1),t==="logs"?e.logsSubTab==="session"?yr(e):gr(e):(mr(e),vr(e)),t==="debug"?br(e):wr(e),e.connected&&si(e)}function sc(e,t,n){if(typeof window>"u")return;const i=hn(Wp(t,e.basePath)),s=hn(window.location.pathname),r=new URL(window.location.href);t==="chat"&&e.sessionKey?r.searchParams.set("session",e.sessionKey):r.searchParams.delete("session"),s!==i&&(r.pathname=i),n?window.history.replaceState({},"",r.toString()):window.history.pushState({},"",r.toString())}async function rc(e){await Promise.all([V(e,!1),zl(e),nr(e),gn(e),rr(e)])}async function bh(e){await Promise.all([V(e,!0),kl(e),Me(e)])}async function kr(e){await Promise.all([V(e,!1),gn(e),ki(e)])}function oc(e){return e.chatSending||!!e.chatRunId}function wh(e){const t=e.trim();if(!t)return!1;const n=t.toLowerCase();return n==="/stop"?!0:n==="stop"||n==="esc"||n==="abort"||n==="wait"||n==="exit"}async function ac(e){e.connected&&(e.chatMessage="",await yl(e))}function kh(e,t,n){const i=t.trim(),s=!!(n&&n.length>0);!i&&!s||(e.chatQueue=[...e.chatQueue,{id:tr(),text:i,createdAt:Date.now(),attachments:s?n==null?void 0:n.map(r=>({...r})):void 0}],fn(e))}async function lc(e,t,n){var s,r;ir(e);const i=await ml(e,t,n==null?void 0:n.attachments);return!i&&(n==null?void 0:n.previousDraft)!=null&&(e.chatMessage=n.previousDraft),!i&&(n!=null&&n.previousAttachments)&&(e.chatAttachments=n.previousAttachments),i&&nc(e,e.sessionKey),i&&(n!=null&&n.restoreDraft)&&((s=n.previousDraft)!=null&&s.trim())&&(e.chatMessage=n.previousDraft),i&&(n!=null&&n.restoreAttachments)&&((r=n.previousAttachments)!=null&&r.length)&&(e.chatAttachments=n.previousAttachments),fn(e),i&&!e.chatRunId&&cc(e),i}async function cc(e){if(!e.connected||oc(e))return;const[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n,await lc(e,t.text,{attachments:t.attachments})||(e.chatQueue=[t,...e.chatQueue])}function Sh(e,t){e.chatQueue=e.chatQueue.filter(n=>n.id!==t)}async function Ah(e,t,n){if(!e.connected)return;const i=e.chatMessage,s=(t??e.chatMessage).trim(),r=e.chatAttachments??[],o=t==null?r:[],a=o.length>0;if(!(!s&&!a)){if(wh(s)){await ac(e);return}if(t==null&&(e.chatMessage="",e.chatAttachments=[]),oc(e)){kh(e,s,o);return}await lc(e,s,{previousDraft:t==null?i:void 0,restoreDraft:!!(t&&(n!=null&&n.restoreDraft)),attachments:a?o:void 0,previousAttachments:t==null?r:void 0,restoreAttachments:!!(t&&(n!=null&&n.restoreDraft))})}}async function xh(e){await Promise.all([_e(e),nr(e),Ls(e)]),fn(e,!0)}const $h=cc;function Eh(e){var s,r,o;const t=ll(e.sessionKey);if(t!=null&&t.agentId)return t.agentId;const n=(s=e.hello)==null?void 0:s.snapshot;return((o=(r=n==null?void 0:n.sessionDefaults)==null?void 0:r.defaultAgentId)==null?void 0:o.trim())||"main"}function Th(e,t){const n=xi(e),i=encodeURIComponent(t);return n?`${n}/avatar/${i}?meta=1`:`/avatar/${i}?meta=1`}async function Ls(e){if(!e.connected){e.chatAvatarUrl=null;return}const t=Eh(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;const n=Th(e.basePath,t);try{const i=await fetch(n,{method:"GET"});if(!i.ok){e.chatAvatarUrl=null;return}const s=await i.json(),r=typeof s.avatarUrl=="string"?s.avatarUrl.trim():"";e.chatAvatarUrl=r||null}catch{e.chatAvatarUrl=null}}const O={messageSquare:p`<svg viewBox="0 0 24 24"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>`,barChart:p`<svg viewBox="0 0 24 24"><line x1="12" x2="12" y1="20" y2="10"/><line x1="18" x2="18" y1="20" y2="4"/><line x1="6" x2="6" y1="20" y2="16"/></svg>`,link:p`<svg viewBox="0 0 24 24"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>`,unlink:p`<svg viewBox="0 0 24 24"><path d="m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"/><path d="m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"/><line x1="8" x2="8" y1="2" y2="5"/><line x1="2" x2="5" y1="8" y2="8"/><line x1="16" x2="16" y1="19" y2="22"/><line x1="19" x2="22" y1="16" y2="16"/></svg>`,radio:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="2"/><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"/></svg>`,fileText:p`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><line x1="16" x2="8" y1="13" y2="13"/><line x1="16" x2="8" y1="17" y2="17"/><line x1="10" x2="8" y1="9" y2="9"/></svg>`,zap:p`<svg viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>`,monitor:p`<svg viewBox="0 0 24 24"><rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/></svg>`,settings:p`<svg viewBox="0 0 24 24"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>`,bug:p`<svg viewBox="0 0 24 24"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>`,scrollText:p`<svg viewBox="0 0 24 24"><path d="M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4"/><path d="M19 17V5a2 2 0 0 0-2-2H4"/><path d="M15 8h-5"/><path d="M15 12h-5"/></svg>`,folder:p`<svg viewBox="0 0 24 24"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/></svg>`,users:p`<svg viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>`,menu:p`<svg viewBox="0 0 24 24"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>`,x:p`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,check:p`<svg viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>`,copy:p`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`,search:p`<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`,brain:p`<svg viewBox="0 0 24 24"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"/><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"/><path d="M3.477 10.896a4 4 0 0 1 .585-.396"/><path d="M19.938 10.5a4 4 0 0 1 .585.396"/><path d="M6 18a4 4 0 0 1-1.967-.516"/><path d="M19.967 17.484A4 4 0 0 1 18 18"/></svg>`,book:p`<svg viewBox="0 0 24 24"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/></svg>`,loader:p`<svg viewBox="0 0 24 24"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></svg>`,rotateCw:p`<svg viewBox="0 0 24 24"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/></svg>`,download:p`<svg viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/></svg>`,wrench:p`<svg viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>`,fileCode:p`<svg viewBox="0 0 24 24"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/><path d="m10 13-2 2 2 2"/><path d="m14 17 2-2-2-2"/></svg>`,edit:p`<svg viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>`,penLine:p`<svg viewBox="0 0 24 24"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>`,paperclip:p`<svg viewBox="0 0 24 24"><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/></svg>`,globe:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg>`,image:p`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/></svg>`,smartphone:p`<svg viewBox="0 0 24 24"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"/><path d="M12 18h.01"/></svg>`,plug:p`<svg viewBox="0 0 24 24"><path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/></svg>`,circle:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>`,circleCheck:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>`,circleX:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>`,puzzle:p`<svg viewBox="0 0 24 24"><path d="M19.439 7.85c-.049.322.059.648.289.878l1.568 1.568c.47.47.706 1.087.706 1.704s-.235 1.233-.706 1.704l-1.611 1.611a.98.98 0 0 1-.837.276c-.47-.07-.802-.48-.968-.925a2.501 2.501 0 1 0-3.214 3.214c.446.166.855.497.925.968a.979.979 0 0 1-.276.837l-1.61 1.61a2.404 2.404 0 0 1-1.705.707 2.402 2.402 0 0 1-1.704-.706l-1.568-1.568a1.026 1.026 0 0 0-.877-.29c-.493.074-.84.504-1.02.968a2.5 2.5 0 1 1-3.237-3.237c.464-.18.894-.527.967-1.02a1.026 1.026 0 0 0-.289-.877l-1.568-1.568A2.402 2.402 0 0 1 1.998 12c0-.617.236-1.234.706-1.704L4.23 8.77c.24-.24.581-.353.917-.303.515.076.874.54 1.02 1.02a2.5 2.5 0 1 0 3.237-3.237c-.48-.146-.944-.505-1.02-1.02a.98.98 0 0 1 .303-.917l1.526-1.526A2.402 2.402 0 0 1 11.998 2c.617 0 1.234.236 1.704.706l1.568 1.568c.23.23.556.338.877.29.493-.074.84-.504 1.02-.968a2.5 2.5 0 1 1 3.236 3.236c-.464.18-.894.527-.967 1.02Z"/></svg>`,info:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>`,send:p`<svg viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></svg>`,smile:p`<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg>`,slidersHorizontal:p`<svg viewBox="0 0 24 24"><line x1="21" x2="14" y1="4" y2="4"/><line x1="10" x2="3" y1="4" y2="4"/><line x1="21" x2="12" y1="12" y2="12"/><line x1="8" x2="3" y1="12" y2="12"/><line x1="21" x2="16" y1="20" y2="20"/><line x1="12" x2="3" y1="20" y2="20"/><line x1="14" x2="14" y1="2" y2="6"/><line x1="8" x2="8" y1="10" y2="14"/><line x1="16" x2="16" y1="18" y2="22"/></svg>`,square:p`<svg viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" rx="2"/></svg>`,eye:p`<svg viewBox="0 0 24 24"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></svg>`,eyeOff:p`<svg viewBox="0 0 24 24"><path d="M9.88 9.88a3 3 0 1 0 4.24 4.24"/><path d="M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"/><path d="M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61"/><line x1="2" x2="22" y1="2" y2="22"/></svg>`,trash:p`<svg viewBox="0 0 24 24"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/></svg>`,chevronDown:p`<svg viewBox="0 0 24 24"><path d="m6 9 6 6 6-6"/></svg>`,film:p`<svg viewBox="0 0 24 24"><rect width="18" height="18" x="3" y="3" rx="2"/><path d="M7 3v18"/><path d="M3 7.5h4"/><path d="M3 12h18"/><path d="M3 16.5h4"/><path d="M17 3v18"/><path d="M17 7.5h4"/><path d="M17 16.5h4"/></svg>`},Ch="Taskmaster",_h="/taskmaster-icon.png",uc="#00d4ff";let Dn=null;function Ve(){return Dn||(Dn={name:window.__TASKMASTER_BRAND_NAME__||Ch,iconUrl:window.__TASKMASTER_BRAND_ICON_URL__||_h,accentColor:window.__TASKMASTER_ACCENT_COLOR__||uc},Dn)}function Mh(e){const t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);return t?`${parseInt(t[1],16)}, ${parseInt(t[2],16)}, ${parseInt(t[3],16)}`:null}function Ph(e){if(e===uc)return;const t=Mh(e);if(!t)return;const n=document.documentElement;n.style.setProperty("--accent",e),n.style.setProperty("--accent-hover",e),n.style.setProperty("--accent-muted",e),n.style.setProperty("--primary",e),n.style.setProperty("--ring",e),n.style.setProperty("--accent-subtle",`rgba(${t}, 0.15)`),n.style.setProperty("--accent-glow",`rgba(${t}, 0.25)`),n.style.setProperty("--tasker-orange",e),n.style.setProperty("--tasker-orange-hover",e),n.style.setProperty("--tasker-orange-glow",`rgba(${t}, 0.25)`)}const Lh=p`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>`,Ih=p`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>`;let Io=!1;function Rh(){Io||(Io=!0,document.addEventListener("click",e=>{const t=document.getElementById("nav-burger-toggle");if(!(t!=null&&t.checked))return;const n=t.closest(".setup-header");n!=null&&n.contains(e.target)||(t.checked=!1)}))}function ht(e,t){const n=(l,d)=>l===e?p`<span class="sp-page-nav-current">${l}</span>`:p`<a href=${d}>${l}</a>`,i=p`
21
21
  ${n("Setup","/setup")}
22
22
  ${n("Chat","/chat")}
23
23
  ${n("Admins","/admins")}
@@ -25,19 +25,19 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
25
25
  ${n("Files","/files")}
26
26
  ${n("Browser","/browser")}
27
27
  ${n("Advanced","/advanced")}
28
- `,r=t&&(t.isMaster!==!1||!t.hasPins)?Rh(t):k,o=t!=null&&t.hasPins&&t.onLogout?p`<button class="nav-logout-btn" @click=${t.onLogout} title="Lock">${Ph}</button>`:k,a=(t==null?void 0:t.auditCount)??0,c=a>0&&(t!=null&&t.onAuditClick)?p`<button class="nav-audit-btn" @click=${t.onAuditClick} title="Memory writes to review">
29
- ${Lh}
28
+ `,r=t&&(t.isMaster!==!1||!t.hasPins)?Nh(t):S,o=t!=null&&t.hasPins&&t.onLogout?p`<button class="nav-logout-btn" @click=${t.onLogout} title="Lock">${Lh}</button>`:S,a=(t==null?void 0:t.auditCount)??0,c=a>0&&(t!=null&&t.onAuditClick)?p`<button class="nav-audit-btn" @click=${t.onAuditClick} title="Memory writes to review">
29
+ ${Ih}
30
30
  <span class="nav-audit-badge">${a>99?"99+":a}</span>
31
- </button>`:k,u=()=>{const l=document.getElementById("nav-burger-toggle");l&&(l.checked=!1)};return Ih(),p`
31
+ </button>`:S,u=()=>{const l=document.getElementById("nav-burger-toggle");l&&(l.checked=!1)};return Rh(),p`
32
32
  <div class="setup-header">
33
33
  <input type="checkbox" id="nav-burger-toggle" class="nav-burger-checkbox" />
34
34
  <div class="setup-header-inner">
35
- <img class="setup-header-logo" src="${qe().iconUrl}" alt="${qe().name}" />
35
+ <img class="setup-header-logo" src="${Ve().iconUrl}" alt="${Ve().name}" />
36
36
  <nav class="setup-header-nav">
37
37
  ${i}
38
38
  </nav>
39
39
  <div class="setup-header-right">
40
- ${r!==k?p`<span class="nav-selector-inline">${r}</span>`:k}
40
+ ${r!==S?p`<span class="nav-selector-inline">${r}</span>`:S}
41
41
  ${c}
42
42
  ${o}
43
43
  <label for="nav-burger-toggle" class="nav-burger-button" aria-label="Toggle menu">
@@ -46,11 +46,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
46
46
  </div>
47
47
  </div>
48
48
  <nav class="setup-header-dropdown" @click=${u}>
49
- ${r!==k?p`<div class="nav-selector-mobile">${r}</div>`:k}
49
+ ${r!==S?p`<div class="nav-selector-mobile">${r}</div>`:S}
50
50
  ${i}
51
51
  </nav>
52
52
  </div>
53
- `}function Rh(e){const{workspaces:t,selectedWorkspace:n,onWorkspaceSelect:i}=e;return p`
53
+ `}function Nh(e){const{workspaces:t,selectedWorkspace:n,onWorkspaceSelect:i}=e;return p`
54
54
  <select
55
55
  class="sp-workspace-selector"
56
56
  .value=${n??""}
@@ -64,7 +64,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
64
64
  <option disabled>───</option>
65
65
  <option value="__add__">+ Add Account</option>
66
66
  </select>
67
- `}function Nh(e){return e.connected?e.fullscreen&&e.active?p`
67
+ `}function Dh(e){return e.connected?e.fullscreen&&e.active?p`
68
68
  <div class="sp-fullscreen-overlay">
69
69
  <div class="sp-fullscreen-toolbar">
70
70
  <button
@@ -106,7 +106,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
106
106
  </div>
107
107
  `:p`
108
108
  <div class="setup-container">
109
- ${pt("Browser")}
109
+ ${ht("Browser")}
110
110
  <div class="setup-card sp-card-wide">
111
111
  <h1>Remote Browser</h1>
112
112
  <p style="margin-bottom: 16px;">Live view of the headless Chrome instance.</p>
@@ -147,7 +147,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
147
147
  `}
148
148
  </div>
149
149
 
150
- ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
150
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:S}
151
151
 
152
152
  ${e.handoffPending?p`
153
153
  <div class="setup-warning" style="margin-top: 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; text-align: left;">
@@ -158,7 +158,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
158
158
  Done
159
159
  </button>
160
160
  </div>
161
- `:k}
161
+ `:S}
162
162
 
163
163
  <div class="sp-canvas-area" style="margin-top: 16px;">
164
164
  ${e.active?p`
@@ -185,7 +185,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
185
185
 
186
186
  ${e.active&&e.inputMode?p`<p class="setup-hint" style="margin-top: 12px;">
187
187
  Click the canvas to focus, then interact with the browser. Mouse and keyboard input are forwarded.
188
- </p>`:k}
188
+ </p>`:S}
189
189
 
190
190
  </div>
191
191
  </div>
@@ -196,20 +196,20 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
196
196
  <p>Connecting to gateway...</p>
197
197
  </div>
198
198
  </div>
199
- `}const ri="application/x-taskmaster-file-path";function dc(e){return e==null?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function pc(e){const t=e.split("/");return t.length>1?t.slice(0,-1).join("/"):"."}function Dh(e,t,n){var r,o;e.preventDefault(),e.stopPropagation(),e.currentTarget.classList.remove("sp-drop-target");const i=(r=e.dataTransfer)==null?void 0:r.getData(ri);if(i){pc(i)!==t&&n.onMoveToDir(i,t);return}const s=(o=e.dataTransfer)==null?void 0:o.files;if(s&&s.length>0){const a=Array.from(s).filter(c=>c.name.toLowerCase().endsWith(".md"));a.length>0&&n.onUpload(t,a)}}function hc(e,t,n){const i=e.type==="directory"||e.type==="symlink"&&e.children!=null,s=t.expandedDirs.has(e.path),r=t.selectedPaths.has(e.path),o=n*20+12;return i?p`
199
+ `}const ri="application/x-taskmaster-file-path";function dc(e){return e==null?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function pc(e){const t=e.split("/");return t.length>1?t.slice(0,-1).join("/"):"."}function Oh(e,t,n){var r,o;e.preventDefault(),e.stopPropagation(),e.currentTarget.classList.remove("sp-drop-target");const i=(r=e.dataTransfer)==null?void 0:r.getData(ri);if(i){pc(i)!==t&&n.onMoveToDir(i,t);return}const s=(o=e.dataTransfer)==null?void 0:o.files;if(s&&s.length>0){const a=Array.from(s).filter(c=>c.name.toLowerCase().endsWith(".md"));a.length>0&&n.onUpload(t,a)}}function hc(e,t,n){const i=e.type==="directory"||e.type==="symlink"&&e.children!=null,s=t.expandedDirs.has(e.path),r=t.selectedPaths.has(e.path),o=n*20+12;return i?p`
200
200
  <div
201
201
  class="sp-tree-item sp-tree-dir ${s?"expanded":""}"
202
202
  style="padding-left: ${o}px;"
203
203
  @click=${()=>t.onToggleDir(e.path)}
204
204
  @dragover=${a=>{a.preventDefault(),a.stopPropagation(),a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.currentTarget.classList.add("sp-drop-target")}}
205
205
  @dragleave=${a=>{a.currentTarget.classList.remove("sp-drop-target")}}
206
- @drop=${a=>Dh(a,e.path,t)}
206
+ @drop=${a=>Oh(a,e.path,t)}
207
207
  >
208
208
  <span class="sp-tree-chevron">${s?"−":"+"}</span>
209
209
  <span class="sp-tree-icon">${O.folder}</span>
210
210
  <span class="sp-tree-name">${e.name}</span>
211
211
  </div>
212
- ${s&&e.children?e.children.map(a=>hc(a,t,n+1)):k}
212
+ ${s&&e.children?e.children.map(a=>hc(a,t,n+1)):S}
213
213
  `:p`
214
214
  <div
215
215
  class="sp-tree-item sp-tree-file ${r?"selected":""}"
@@ -222,7 +222,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
222
222
  <span class="sp-tree-name">${e.name}</span>
223
223
  <span class="sp-tree-size">${dc(e.size)}</span>
224
224
  </div>
225
- `}function Oh(e){const t=e.selectedPaths.size;return t<2?k:p`
225
+ `}function Bh(e){const t=e.selectedPaths.size;return t<2?S:p`
226
226
  <div class="sp-bulk-actions">
227
227
  <span style="color: var(--tasker-muted-grey); font-size: 13px;">${t} files selected</span>
228
228
  <button
@@ -233,7 +233,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
233
233
  Download ${t} files
234
234
  </button>
235
235
  </div>
236
- `}function Bh(e){if(e.selectedPaths.size!==1||!e.selectedPath)return k;if(e.previewLoading)return p`
236
+ `}function Fh(e){if(e.selectedPaths.size!==1||!e.selectedPath)return S;if(e.previewLoading)return p`
237
237
  <div class="sp-file-preview">
238
238
  <div class="setup-spinner" style="width: 32px; height: 32px; margin: 24px auto;"></div>
239
239
  </div>
@@ -260,7 +260,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
260
260
  </div>
261
261
  ${e.previewBinary?p`<div class="sp-file-preview-body"><p style="color: var(--tasker-muted-grey);">Binary file — use Download to view.</p></div>`:e.previewContent!=null?p`<div class="sp-file-preview-body"><pre class="sp-file-code">${e.previewContent}</pre></div>`:p`<div class="sp-file-preview-body"><p style="color: var(--tasker-muted-grey);">File too large for preview — use Download.</p></div>`}
262
262
  </div>
263
- `}function Fh(e){if(!e.selectedPath)return".";if(e.expandedDirs.has(e.selectedPath))return e.selectedPath;const t=e.selectedPath.split("/");return t.length>1?t.slice(0,-1).join("/"):"."}function Uh(e){return p`
263
+ `}function Uh(e){if(!e.selectedPath)return".";if(e.expandedDirs.has(e.selectedPath))return e.selectedPath;const t=e.selectedPath.split("/");return t.length>1?t.slice(0,-1).join("/"):"."}function Wh(e){return p`
264
264
  <div class="sp-search-bar">
265
265
  <input
266
266
  type="text"
@@ -275,7 +275,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
275
275
  @change=${t=>e.onSearchAgentChange(t.target.value)}
276
276
  >
277
277
  ${e.agentIds.map(t=>p`<option value=${t} ?selected=${t===e.searchAgentId}>${t}</option>`)}
278
- </select>`:k}
278
+ </select>`:S}
279
279
  <button
280
280
  class="setup-button secondary"
281
281
  style="padding: 8px 16px; font-size: 13px;"
@@ -290,9 +290,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
290
290
  @click=${e.onSearchClear}
291
291
  >
292
292
  Clear
293
- </button>`:k}
293
+ </button>`:S}
294
294
  </div>
295
- `}function Wh(e){return e.searchResults?e.searchResults.length===0?p`<div class="sp-search-results">
295
+ `}function Kh(e){return e.searchResults?e.searchResults.length===0?p`<div class="sp-search-results">
296
296
  <div style="padding: 24px; color: var(--tasker-muted-grey); text-align: center;">No results found.</div>
297
297
  </div>`:p`
298
298
  <div class="sp-search-results">
@@ -312,9 +312,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
312
312
  </div>
313
313
  `)}
314
314
  </div>
315
- `:k}function Kh(e){const t=Fh(e);return e.connected?p`
315
+ `:S}function zh(e){const t=Uh(e);return e.connected?p`
316
316
  <div class="setup-container">
317
- ${pt("Files",e.wsProps)}
317
+ ${ht("Files",e.wsProps)}
318
318
  <div class="setup-card sp-card-wide">
319
319
  <h1>Workspace Files</h1>
320
320
  <p style="margin-bottom: 16px;">Browse, upload, and manage files in your workspace. Drag files between folders to move them.</p>
@@ -358,20 +358,20 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
358
358
  style="width: 10px; height: 10px; background: ${e.memoryStatus.syncing?"#f59e0b":e.memoryStatus.dirty?"#ef4444":"#22c55e"}"
359
359
  ></span>
360
360
  ${(()=>{var c;if(e.memoryStatus.syncing&&e.memoryStatus.syncProgress){const{completed:u,total:l,label:d}=e.memoryStatus.syncProgress;return d||(l>0?`Indexing ${u}/${l} files…`:"Indexing…")}const n=e.memoryStatus.files,i=e.memoryStatus.chunks,s=`${n} file${n!==1?"s":""}, ${i} chunks`,r=(c=e.memoryStatus)==null?void 0:c.model;if(!r)return s;const a=(r.includes("/")?r.split("/").pop():r).replace(/[-_]Q\d.*$/i,"").replace(/\.gguf$/i,"");return`${s} · ${a}`})()}
361
- </span>`:k}
361
+ </span>`:S}
362
362
  </div>
363
363
 
364
- ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
364
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:S}
365
365
 
366
366
  ${e.message?p`<div class="${e.message.kind==="error"?"setup-error":"setup-success-message"}" style="margin-top: 12px;">
367
367
  ${e.message.text}
368
- </div>`:k}
368
+ </div>`:S}
369
369
 
370
- ${e.uploadBusy?p`<div style="margin-top: 12px; color: var(--tasker-orange); font-weight: 600; font-size: 14px;">Uploading...</div>`:k}
370
+ ${e.uploadBusy?p`<div style="margin-top: 12px; color: var(--tasker-orange); font-weight: 600; font-size: 14px;">Uploading...</div>`:S}
371
371
 
372
- ${Uh(e)}
372
+ ${Wh(e)}
373
373
 
374
- ${e.searchResults!==null?Wh(e):p`<div
374
+ ${e.searchResults!==null?Kh(e):p`<div
375
375
  class="sp-file-tree"
376
376
  @dragover=${n=>{n.preventDefault(),n.dataTransfer&&(n.dataTransfer.dropEffect=n.dataTransfer.types.includes(ri)?"move":"copy")}}
377
377
  @drop=${n=>{var r,o;n.preventDefault();const i=(r=n.dataTransfer)==null?void 0:r.getData(ri);if(i){pc(i)!=="."&&e.onMoveToDir(i,".");return}const s=(o=n.dataTransfer)==null?void 0:o.files;if(s&&s.length>0){const a=Array.from(s).filter(c=>c.name.toLowerCase().endsWith(".md"));a.length>0&&e.onUpload(t,a)}}}
@@ -379,8 +379,8 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
379
379
  ${e.tree.length===0&&!e.loading?p`<div style="padding: 24px; color: var(--tasker-muted-grey); text-align: center;">No files found. Drop .md files here to upload.</div>`:e.tree.map(n=>hc(n,e,0))}
380
380
  </div>`}
381
381
 
382
- ${Oh(e)}
383
382
  ${Bh(e)}
383
+ ${Fh(e)}
384
384
  </div>
385
385
  </div>
386
386
  `:p`
@@ -390,12 +390,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
390
390
  <p>Connecting to gateway...</p>
391
391
  </div>
392
392
  </div>
393
- `}const Sr="taskmaster_uninstall_done";async function zh(e){var t,n;if(!(!e.client||!e.connected)&&!e.uninstallBusy){e.uninstallBusy=!0,e.uninstallError=null,(t=e.requestUpdate)==null||t.call(e),jh();try{await e.client.request("system.uninstall",{scopes:["service","state","workspace"],purge:!0})}catch{}e.uninstallBusy=!1,e.uninstallDone=!0,(n=e.requestUpdate)==null||n.call(e)}}function oi(){try{return localStorage.getItem(Sr)==="1"}catch{return!1}}function Ar(){try{localStorage.removeItem(Sr)}catch{}}function jh(){try{localStorage.setItem(Sr,"1")}catch{}}const Ro=Object.freeze(Object.defineProperty({__proto__:null,checkUninstallDone:oi,clearUninstallDone:Ar,runUninstall:zh},Symbol.toStringTag,{value:"Module"}));function he(e){return p`
393
+ `}const Sr="taskmaster_uninstall_done";async function jh(e){var t,n;if(!(!e.client||!e.connected)&&!e.uninstallBusy){e.uninstallBusy=!0,e.uninstallError=null,(t=e.requestUpdate)==null||t.call(e),Hh();try{await e.client.request("system.uninstall",{scopes:["service","state","workspace"],purge:!0})}catch{}e.uninstallBusy=!1,e.uninstallDone=!0,(n=e.requestUpdate)==null||n.call(e)}}function oi(){try{return localStorage.getItem(Sr)==="1"}catch{return!1}}function Ar(){try{localStorage.removeItem(Sr)}catch{}}function Hh(){try{localStorage.setItem(Sr,"1")}catch{}}const Ro=Object.freeze(Object.defineProperty({__proto__:null,checkUninstallDone:oi,clearUninstallDone:Ar,runUninstall:jh},Symbol.toStringTag,{value:"Module"}));function X(e){return p`
394
394
  <span
395
395
  class="setup-status-light"
396
396
  style="background: ${{good:"#22c55e",bad:"#ef4444",partial:"#eab308",unknown:"#6b7280"}[e]}"
397
397
  ></span>
398
- `}function It(e,t){return p`
398
+ `}function ce(e,t){return p`
399
399
  <button
400
400
  class="setup-info-btn"
401
401
  @click=${()=>t.onInfoModalOpen(e)}
@@ -403,7 +403,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
403
403
  >
404
404
  ${O.info}
405
405
  </button>
406
- `}function Hh(e){var i;if(!e.infoModalOpen)return k;let t="",n=[];switch(e.infoModalOpen){case"gateway":{const s=typeof window<"u"?window.location.host:"unknown";t="Gateway",n=[{label:"Status",value:e.gatewayHealthy===!1?"Stopped":"Running"},{label:"Address",value:s},{label:"Health",value:e.gatewayHealthMessage||"OK"}];break}case"claude":{const s=e.authExpiresIn;let r="N/A";if(s!=null&&s>0)if(s>60){const o=Math.floor(s/60),a=s%60;r=a>0?`${o}h ${a}m`:`${o}h`}else r=`${s}m`;t="Claude",n=[{label:"Connected",value:e.authConnected?"Yes":"No"},{label:"Token Expiry",value:r},{label:"Renewal",value:"Automatic (tokens refresh on expiry)"},...e.authMessage?[{label:"Message",value:e.authMessage}]:[]];break}case"license":{const s=e.licenseStoredKey?`…${e.licenseStoredKey.slice(-12)}`:"N/A";t="License",n=[{label:"Status",value:e.licenseValid?"Active":"Inactive"},{label:"Key",value:s},{label:"Tier",value:e.licenseTier||"Standard"},{label:"Device ID",value:e.licenseDeviceId||"N/A"}];break}case"whatsapp":{const s=Rt(e),r=s?xr(s,e):null;t="WhatsApp",n=[{label:"Account",value:(r==null?void 0:r.name)||(r==null?void 0:r.accountId)||"Default"},{label:"Phone",value:((i=r==null?void 0:r.self)==null?void 0:i.e164)||"Not paired"},{label:"Connected",value:r!=null&&r.connected?"Yes":"No"},{label:"Linked",value:r!=null&&r.linked?"Yes":"No"},...r!=null&&r.lastError?[{label:"Last Error",value:r.lastError}]:[]];break}case"imessage":{const{thisWsOwns:s}=$r(e);t="iMessage",n=[{label:"Connected",value:s&&e.imessageConnected?"Yes":"No"},{label:"Assigned To",value:e.imessageOwnerWorkspace??"Not assigned"},{label:"Mode",value:"Self-chat only"},...e.imessageLastError?[{label:"Last Error",value:e.imessageLastError}]:[]];break}case"update":{t="Software Update",n=[{label:"Current",value:e.currentVersion?`v${e.currentVersion}`:"Unknown"},{label:"Latest",value:e.latestVersion?`v${e.latestVersion}`:"Unknown"},{label:"Status",value:e.updateAvailable===null?"Not checked":e.updateAvailable?"Update available":"Up to date"},...e.updateMessage?[{label:"Message",value:e.updateMessage}]:[]];break}default:return k}return p`
406
+ `}function qh(e){var i;if(!e.infoModalOpen)return S;let t="",n=[];switch(e.infoModalOpen){case"gateway":{const s=typeof window<"u"?window.location.host:"unknown";t="Gateway",n=[{label:"Status",value:e.gatewayHealthy===!1?"Stopped":"Running"},{label:"Address",value:s},{label:"Health",value:e.gatewayHealthMessage||"OK"}];break}case"claude":{const s=e.authExpiresIn;let r="N/A";if(s!=null&&s>0)if(s>60){const o=Math.floor(s/60),a=s%60;r=a>0?`${o}h ${a}m`:`${o}h`}else r=`${s}m`;t="Claude",n=[{label:"Connected",value:e.authConnected?"Yes":"No"},{label:"Token Expiry",value:r},{label:"Renewal",value:"Automatic (tokens refresh on expiry)"},...e.authMessage?[{label:"Message",value:e.authMessage}]:[]];break}case"license":{const s=e.licenseStoredKey?`…${e.licenseStoredKey.slice(-12)}`:"N/A";t="License",n=[{label:"Status",value:e.licenseValid?"Active":"Inactive"},{label:"Key",value:s},{label:"Tier",value:e.licenseTier||"Standard"},{label:"Device ID",value:e.licenseDeviceId||"N/A"}];break}case"whatsapp":{const s=Rt(e),r=s?xr(s,e):null;t="WhatsApp",n=[{label:"Account",value:(r==null?void 0:r.name)||(r==null?void 0:r.accountId)||"Default"},{label:"Phone",value:((i=r==null?void 0:r.self)==null?void 0:i.e164)||"Not paired"},{label:"Connected",value:r!=null&&r.connected?"Yes":"No"},{label:"Linked",value:r!=null&&r.linked?"Yes":"No"},...r!=null&&r.lastError?[{label:"Last Error",value:fc(r.lastError)}]:[]];break}case"imessage":{const{thisWsOwns:s}=$r(e);t="iMessage",n=[{label:"Connected",value:s&&e.imessageConnected?"Yes":"No"},{label:"Assigned To",value:e.imessageOwnerWorkspace??"Not assigned"},{label:"Mode",value:"Self-chat only"},...e.imessageLastError?[{label:"Last Error",value:e.imessageLastError}]:[]];break}case"update":{t="Software Update",n=[{label:"Current",value:e.currentVersion?`v${e.currentVersion}`:"Unknown"},{label:"Latest",value:e.latestVersion?`v${e.latestVersion}`:"Unknown"},{label:"Status",value:e.updateAvailable===null?"Not checked":e.updateAvailable?"Update available":"Up to date"},...e.updateMessage?[{label:"Message",value:e.updateMessage}]:[]];break}case"internet":{const s=e.tailscaleStatus,r=s?s.installed?s.loggedIn?s.funnelEnabled&&s.funnelActive?"Active":s.funnelEnabled&&!s.funnelActive?"Enabled but not active":"Connected (not public)":"Not connected":"Not installed":"Checking...";t="Internet Access",n=[{label:"Status",value:r},{label:"What",value:"Makes your public chat and API reachable from the internet, not just your local network"},{label:"How",value:"Uses Tailscale Funnel — a free, secure tunnel that gives your device a public HTTPS address"},{label:"Security",value:"Only the /public/* paths are exposed. The control panel stays LAN-only."},...s!=null&&s.publicUrl?[{label:"Public URL",value:s.publicUrl}]:[],...s!=null&&s.hostname?[{label:"Hostname",value:s.hostname}]:[]];break}case"public-chat":{t="Public Chat",n=[{label:"Status",value:e.publicChatEnabled?"Enabled":"Disabled"},{label:"What",value:"A chat widget anyone can use to message your business from a web browser"},{label:"Access mode",value:ef[e.publicChatAuthMode]??"Open access"},{label:"Open access",value:"Anyone can chat without identifying themselves"},{label:"WhatsApp OTP",value:"Visitors verify their phone number before chatting"},{label:"Visitor chooses",value:"Visitors can chat anonymously or verify via WhatsApp"}];break}case"account-pin":{t="Account PIN",n=[{label:"Status",value:e.accountHasPin?"Set":"Not set"},{label:"What",value:"A numeric PIN that protects this account on the control panel"},{label:"When needed",value:"Required when switching to this account or after the session expires"},{label:"Format",value:"4 to 6 digits"}];break}default:return S}return p`
407
407
  <div class="setup-info-overlay" @click=${s=>{s.target.classList.contains("setup-info-overlay")&&e.onInfoModalClose()}}>
408
408
  <div class="setup-info-card">
409
409
  <h3>${t}</h3>
@@ -422,7 +422,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
422
422
  </button>
423
423
  </div>
424
424
  </div>
425
- `}function be(e){const t=[{id:"license",label:"1. Activate License"},{id:"auth",label:"2. Connect Claude"},{id:"whatsapp",label:"3. Link WhatsApp"}],n=["license","auth","whatsapp","complete"],i=n.indexOf(e);return p`
425
+ `}function we(e){const t=[{id:"license",label:"1. Activate License"},{id:"auth",label:"2. Connect Claude"},{id:"whatsapp",label:"3. Link WhatsApp"}],n=["license","auth","whatsapp","complete"],i=n.indexOf(e);return p`
426
426
  <div class="setup-steps">
427
427
  ${t.map(s=>{const r=n.indexOf(s.id),o=e===s.id,a=i>r;return p`
428
428
  <div
@@ -436,9 +436,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
436
436
  `}function No(e){const{licenseKey:t,licenseBusy:n,licenseValid:i,licenseMessage:s,licenseDeviceId:r,onLicenseKeyChange:o,onLicenseActivate:a}=e;return i===!0?p`
437
437
  <div class="setup-container">
438
438
  <div class="setup-card setup-success">
439
- ${be("license")}
439
+ ${we("license")}
440
440
  <div class="setup-status-row">
441
- ${he("good")}
441
+ ${X("good")}
442
442
  <span>License Activated</span>
443
443
  </div>
444
444
  <p>${s??"Your license is active."}</p>
@@ -447,7 +447,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
447
447
  `:n&&!t?p`
448
448
  <div class="setup-container">
449
449
  <div class="setup-card">
450
- ${be("license")}
450
+ ${we("license")}
451
451
  <div class="setup-spinner"></div>
452
452
  <p>Checking license...</p>
453
453
  </div>
@@ -455,7 +455,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
455
455
  `:p`
456
456
  <div class="setup-container">
457
457
  <div class="setup-card">
458
- ${be("license")}
458
+ ${we("license")}
459
459
  <h1>Activate License</h1>
460
460
  <p>Enter your license key to get started.</p>
461
461
  ${r?p`
@@ -471,7 +471,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
471
471
  Send this ID along with your order number to our WhatsApp to receive your license key.
472
472
  </p>
473
473
  </div>
474
- `:k}
474
+ `:S}
475
475
  <div class="setup-code-input">
476
476
  <input
477
477
  type="text"
@@ -490,10 +490,10 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
490
490
  </div>
491
491
  ${i===!1&&s?p`
492
492
  <div class="setup-status-row" style="margin-top: 12px;">
493
- ${he("bad")}
493
+ ${X("bad")}
494
494
  <span class="setup-error">${s}</span>
495
495
  </div>
496
- `:k}
496
+ `:S}
497
497
  <p class="setup-hint">
498
498
  Need a license?
499
499
  <a href="https://taskmaster.bot" target="_blank" rel="noopener">
@@ -502,19 +502,19 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
502
502
  </p>
503
503
  </div>
504
504
  </div>
505
- `}function qh(e){const{authConnected:t,authBusy:n,authMessage:i,authUrl:s,authCodeInput:r,authExpiresIn:o,onStartAuth:a,onSubmitAuthCode:c,onAuthCodeChange:u,onSkipToWhatsApp:l}=e;return t===!0?p`
505
+ `}function Vh(e){const{authConnected:t,authBusy:n,authMessage:i,authUrl:s,authCodeInput:r,authExpiresIn:o,onStartAuth:a,onSubmitAuthCode:c,onAuthCodeChange:u,onSkipToWhatsApp:l}=e;return t===!0?p`
506
506
  <div class="setup-container">
507
507
  <div class="setup-card setup-success">
508
- ${be("auth")}
508
+ ${we("auth")}
509
509
  <div class="setup-status-row">
510
- ${he("good")}
510
+ ${X("good")}
511
511
  <span>Claude Connected</span>
512
512
  </div>
513
513
  <p>
514
514
  Your Claude Pro subscription is linked.
515
515
  ${o?p`<br /><span class="setup-hint"
516
516
  >Expires in ${o} minutes</span
517
- >`:k}
517
+ >`:S}
518
518
  </p>
519
519
  <p style="color: var(--tasker-text-grey); font-size: 14px;">
520
520
  Head to Chat to introduce yourself and finish setting up your assistant.
@@ -527,7 +527,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
527
527
  `:n&&!s?p`
528
528
  <div class="setup-container">
529
529
  <div class="setup-card">
530
- ${be("auth")}
530
+ ${we("auth")}
531
531
  <div class="setup-spinner"></div>
532
532
  <p>Starting Claude connection...</p>
533
533
  </div>
@@ -535,7 +535,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
535
535
  `:s?p`
536
536
  <div class="setup-container">
537
537
  <div class="setup-card">
538
- ${be("auth")}
538
+ ${we("auth")}
539
539
  <h1>Connect to Claude</h1>
540
540
  <p>Click the button below to sign in with your Claude Pro account.</p>
541
541
  <a
@@ -565,7 +565,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
565
565
  ${n?"Verifying...":"Submit"}
566
566
  </button>
567
567
  </div>
568
- ${i?p`<p class="setup-hint">${i}</p>`:k}
568
+ ${i?p`<p class="setup-hint">${i}</p>`:S}
569
569
  <p class="setup-hint" style="margin-top: 16px;">
570
570
  <a href="#" class="setup-link" @click=${d=>{d.preventDefault(),e.onAuthApiKeyToggle()}}>
571
571
  Or use an API key instead
@@ -576,7 +576,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
576
576
  `:e.authApiKeyMode?p`
577
577
  <div class="setup-container">
578
578
  <div class="setup-card">
579
- ${be("auth")}
579
+ ${we("auth")}
580
580
  <h1>Enter API Key</h1>
581
581
  <p>Paste your Anthropic API key below.</p>
582
582
  <div class="setup-code-input">
@@ -595,7 +595,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
595
595
  @click=${()=>e.onAuthApiKeySubmit()}
596
596
  >${e.authApiKeyBusy?"Saving...":"Save"}</button>
597
597
  </div>
598
- ${e.authApiKeyError?p`<p class="setup-error">${e.authApiKeyError}</p>`:k}
598
+ ${e.authApiKeyError?p`<p class="setup-error">${e.authApiKeyError}</p>`:S}
599
599
  <p class="setup-hint" style="margin-top: 16px;">
600
600
  <a href="#" class="setup-link" @click=${d=>{d.preventDefault(),e.onAuthApiKeyToggle()}}>
601
601
  Use OAuth instead
@@ -612,7 +612,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
612
612
  `:p`
613
613
  <div class="setup-container">
614
614
  <div class="setup-card">
615
- ${be("auth")}
615
+ ${we("auth")}
616
616
  <h1>Connect to Claude</h1>
617
617
  ${t===!1&&i?p`<p class="setup-error">${i}</p>`:p`<p>
618
618
  First, let's connect your Claude Pro subscription.<br />
@@ -634,7 +634,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
634
634
  </p>
635
635
  </div>
636
636
  </div>
637
- `}function xr(e,t){const n=new Map(t.whatsappAccounts.map(i=>[i.accountId,i]));return e.whatsappAccountId?n.get(e.whatsappAccountId)??null:e.isDefault&&t.whatsappAccounts.length===1?t.whatsappAccounts[0]??null:null}function Rt(e){var n;const t=(n=e.wsProps)==null?void 0:n.selectedWorkspace;return t?e.workspaces.find(i=>i.name===t)??null:e.workspaces[0]??null}function Do(e){const t=Rt(e),n=(t==null?void 0:t.displayName)??(t==null?void 0:t.name)??qe().name,i=e.whatsappBusy||e.gatewayHealthLoading;if(e.renamingWorkspace&&t){const s=()=>{const r=e.renameWorkspaceName.trim();r&&e.onWorkspaceRename(t.name,r)};return p`
637
+ `}function xr(e,t){const n=new Map(t.whatsappAccounts.map(i=>[i.accountId,i]));return e.whatsappAccountId?n.get(e.whatsappAccountId)??null:e.isDefault&&t.whatsappAccounts.length===1?t.whatsappAccounts[0]??null:null}function Rt(e){var n;const t=(n=e.wsProps)==null?void 0:n.selectedWorkspace;return t?e.workspaces.find(i=>i.name===t)??null:e.workspaces[0]??null}function Do(e){const t=Rt(e),n=(t==null?void 0:t.displayName)??(t==null?void 0:t.name)??Ve().name,i=e.whatsappBusy||e.gatewayHealthLoading;if(e.renamingWorkspace&&t){const s=()=>{const r=e.renameWorkspaceName.trim();r&&e.onWorkspaceRename(t.name,r)};return p`
638
638
  <div style="display: flex; align-items: center; gap: 6px; margin-bottom: 4px;">
639
639
  <input
640
640
  type="text"
@@ -678,12 +678,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
678
678
  </div>
679
679
  `}function Oo(e){return p`
680
680
  <div class="setup-status-item">
681
- ${he(e.gatewayHealthy===!1?"bad":"good")}
681
+ ${X(e.gatewayHealthy===!1?"bad":"good")}
682
682
  <div class="setup-status-info">
683
683
  <strong>Gateway</strong>
684
684
  <span>${e.gatewayHealthMessage||"Running"}</span>
685
685
  </div>
686
- ${It("gateway",e)}
686
+ ${ce("gateway",e)}
687
687
  <button
688
688
  class="setup-status-action ${e.gatewayRestartBusy?"spinning":""}"
689
689
  ?disabled=${e.gatewayRestartBusy}
@@ -695,14 +695,14 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
695
695
  </div>
696
696
  `}function Bo(e){const t=e.authConnected===!0;return p`
697
697
  <div class="setup-status-item">
698
- ${he(t?"good":"bad")}
698
+ ${X(t?"good":"bad")}
699
699
  <div class="setup-status-info">
700
700
  <strong>Claude</strong>
701
701
  <span>
702
- ${t?"Connected":"Not connected"}${t&&e.authExpiresIn?p` <span style="color: var(--tasker-text-grey); font-size: 12px;">(${e.authExpiresIn>60?`${Math.floor(e.authExpiresIn/60)}h ${e.authExpiresIn%60}m`:`${e.authExpiresIn}m`})</span>`:k}
702
+ ${t?"Connected":"Not connected"}${t&&e.authExpiresIn?p` <span style="color: var(--tasker-text-grey); font-size: 12px;">(${e.authExpiresIn>60?`${Math.floor(e.authExpiresIn/60)}h ${e.authExpiresIn%60}m`:`${e.authExpiresIn}m`})</span>`:S}
703
703
  </span>
704
704
  </div>
705
- ${It("claude",e)}
705
+ ${ce("claude",e)}
706
706
  ${t?p`
707
707
  <button
708
708
  class="setup-status-action ${e.authBusy?"spinning":""}"
@@ -724,12 +724,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
724
724
  </div>
725
725
  `}function Fo(e){return p`
726
726
  <div class="setup-status-item" style="flex-wrap: wrap;">
727
- ${he("good")}
727
+ ${X("good")}
728
728
  <div class="setup-status-info">
729
729
  <strong>License</strong>
730
730
  <span>Active</span>
731
731
  </div>
732
- ${It("license",e)}
732
+ ${ce("license",e)}
733
733
  <button
734
734
  class="setup-status-action"
735
735
  @click=${()=>{e.licenseRemoveConfirm?e.onLicenseRemoveCancel():e.onLicenseRemoveConfirm()}}
@@ -740,7 +740,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
740
740
  ${e.licenseRemoveConfirm?p`
741
741
  <div style="width: 100%; margin-top: 8px; margin-left: 30px;">
742
742
  <p style="color: var(--tasker-text-grey); font-size: 13px; margin: 0 0 8px;">
743
- Removing your license will disable ${qe().name} until you enter a new key.
743
+ Removing your license will disable ${Ve().name} until you enter a new key.
744
744
  </p>
745
745
  <div style="display: flex; gap: 8px;">
746
746
  <button
@@ -760,11 +760,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
760
760
  </button>
761
761
  </div>
762
762
  </div>
763
- `:k}
763
+ `:S}
764
764
  </div>
765
- `}function Uo(e){var d;const t=Rt(e);if(!t)return k;const n=xr(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected),s=(n==null?void 0:n.linked)&&!i,r=!!n,o=i?"good":s?"partial":r?"bad":"unknown",a=i?"Connected":s?"Linked, not connected":r?(n==null?void 0:n.lastError)||"Not connected":"Not paired",c=!(n!=null&&n.provider)||(n==null?void 0:n.provider)==="baileys",u=t.whatsappAccountId??(t.isDefault&&e.whatsappAccounts.length===1?(d=e.whatsappAccounts[0])==null?void 0:d.accountId:void 0),l=u!=null&&e.whatsappActiveQrAccountId===u;return p`
765
+ `}function fc(e){var t,n;try{const i=JSON.parse(e),s=(i==null?void 0:i.error)??i,r=((n=(t=s==null?void 0:s.output)==null?void 0:t.payload)==null?void 0:n.message)??(s==null?void 0:s.message)??(i==null?void 0:i.message);if(r&&typeof r=="string")return r}catch{}return e.length>80?e.slice(0,77)+"…":e}function Uo(e){var d;const t=Rt(e);if(!t)return S;const n=xr(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected),s=(n==null?void 0:n.linked)&&!i,r=!!n,o=i?"good":s?"partial":r?"bad":"unknown",a=i?"Connected":s?"Linked, not connected":r?n!=null&&n.lastError?fc(n.lastError):"Not connected":"Not paired",c=!(n!=null&&n.provider)||(n==null?void 0:n.provider)==="baileys",u=t.whatsappAccountId??(t.isDefault&&e.whatsappAccounts.length===1?(d=e.whatsappAccounts[0])==null?void 0:d.accountId:void 0),l=u!=null&&e.whatsappActiveQrAccountId===u;return p`
766
766
  <div class="setup-status-item" style="flex-wrap: wrap;">
767
- ${he(o)}
767
+ ${X(o)}
768
768
  <div class="setup-status-info">
769
769
  <div style="display: flex; align-items: center; gap: 4px;">
770
770
  <strong>WhatsApp</strong>
@@ -777,21 +777,39 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
777
777
  >
778
778
  ${O.settings}
779
779
  </button>
780
- `:k}
780
+ `:S}
781
781
  </div>
782
782
  <span>${a}</span>
783
783
  </div>
784
- ${It("whatsapp",e)}
784
+ ${ce("whatsapp",e)}
785
785
  ${c&&u?p`
786
786
  <button
787
- class="setup-status-action ${e.whatsappBusy&&l?"spinning":""}"
788
- ?disabled=${e.whatsappBusy}
789
- @click=${()=>e.onWhatsAppRelink(u)}
790
- title="${i?"Relink":"Link"} WhatsApp"
787
+ class="setup-status-action"
788
+ @click=${e.onRefreshStatus}
789
+ title="Refresh Status"
791
790
  >
792
791
  ${O.rotateCw}
793
792
  </button>
794
- `:k}
793
+ ${n!=null&&n.linked?p`
794
+ <button
795
+ class="setup-status-action"
796
+ ?disabled=${e.whatsappBusy}
797
+ @click=${()=>e.onWhatsAppUnlink(u)}
798
+ title="Unlink WhatsApp"
799
+ >
800
+ ${O.unlink}
801
+ </button>
802
+ `:p`
803
+ <button
804
+ class="setup-status-action ${e.whatsappBusy&&l?"spinning":""}"
805
+ ?disabled=${e.whatsappBusy}
806
+ @click=${()=>e.onWhatsAppRelink(u)}
807
+ title="Link WhatsApp"
808
+ >
809
+ ${O.link}
810
+ </button>
811
+ `}
812
+ `:S}
795
813
  ${l&&e.whatsappLoginQrDataUrl?p`
796
814
  <div style="width: 100%; margin-top: 8px; margin-left: 30px;">
797
815
  <div class="setup-qr" style="display: inline-flex;">
@@ -801,11 +819,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
801
819
  style="width: 140px; height: 140px;"
802
820
  />
803
821
  </div>
804
- ${e.whatsappLoginMessage?p`<p class="setup-hint" style="margin-top: 4px;">${e.whatsappLoginMessage}</p>`:k}
822
+ ${e.whatsappLoginMessage?p`<p class="setup-hint" style="margin-top: 4px;">${e.whatsappLoginMessage}</p>`:S}
805
823
  </div>
806
- `:k}
824
+ `:S}
807
825
  </div>
808
- `}const Vh=[{id:"claude-opus-4-6",shortName:"Opus"},{id:"claude-sonnet-4-5-20250929",shortName:"Sonnet"},{id:"claude-haiku-4-5-20251001",shortName:"Haiku"}],Gh="anthropic/claude-sonnet-4-5-20250929",Qh=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function Yh(e){if(!e.whatsappSettingsOpen)return k;const t=Rt(e);if(!t)return k;const n=xr(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected);if(!n||!i)return k;const s=()=>e.onWhatsAppSettingsClose(),r=e.whatsappModelCatalog??[],o=new Set(r.filter(l=>l.provider==="anthropic").map(l=>l.id)),a=Vh.filter(l=>o.has(l.id)),c=e.whatsappModel??Gh,u=e.whatsappThinkingLevel??"off";return p`
826
+ `}const Gh=[{id:"claude-opus-4-6",shortName:"Opus"},{id:"claude-sonnet-4-5-20250929",shortName:"Sonnet"},{id:"claude-haiku-4-5-20251001",shortName:"Haiku"}],Qh="anthropic/claude-sonnet-4-5-20250929",Yh=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function Xh(e){if(!e.whatsappSettingsOpen)return S;const t=Rt(e);if(!t)return S;const n=xr(t,e),i=(n==null?void 0:n.running)&&(n==null?void 0:n.connected);if(!n||!i)return S;const s=()=>e.onWhatsAppSettingsClose(),r=e.whatsappModelCatalog??[],o=new Set(r.filter(l=>l.provider==="anthropic").map(l=>l.id)),a=Gh.filter(l=>o.has(l.id)),c=e.whatsappModel??Qh,u=e.whatsappThinkingLevel??"off";return p`
809
827
  <div class="setup-info-overlay" @click=${l=>{l.target.classList.contains("setup-info-overlay")&&s()}}>
810
828
  <div class="setup-info-card" style="max-width: 360px;">
811
829
  <h3>Public Agent Settings</h3>
@@ -864,7 +882,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
864
882
  </div>
865
883
  </label>
866
884
  </div>
867
- `:k}
885
+ `:S}
868
886
  <div style="border-top: 1px solid rgba(255,255,255,0.08); margin: 4px 0;"></div>
869
887
  ${a.length>0?p`
870
888
  <div style="display: flex; align-items: center; gap: 8px;">
@@ -882,7 +900,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
882
900
  `)}
883
901
  </select>
884
902
  </div>
885
- `:k}
903
+ `:S}
886
904
  <div style="display: flex; align-items: center; gap: 8px;">
887
905
  <div style="font-size: 13px; color: var(--tasker-text-grey); min-width: 60px;">Thinking</div>
888
906
  <select
@@ -891,7 +909,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
891
909
  .value=${u}
892
910
  @change=${l=>{e.onWhatsAppThinkingChange(l.target.value)}}
893
911
  >
894
- ${Qh.map(l=>p`
912
+ ${Yh.map(l=>p`
895
913
  <option value=${l.value} ?selected=${u===l.value}>
896
914
  ${l.label}
897
915
  </option>
@@ -910,12 +928,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
910
928
  </div>
911
929
  `}function $r(e){const t=Rt(e),n=e.imessageOwnerWorkspace,i=!!(t&&n===t.name),s=!!(n&&t&&n!==t.name);return{selectedWs:t,ownerWs:n,thisWsOwns:i,anotherWsOwns:s}}function Wo(e){const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=$r(e);let s,r;return i?(s="partial",r=`Connected to ${t}`):n&&e.imessageConnected?(s="good",r="Connected"):n&&e.imessageRunning?(s="partial",r="Running, not connected"):n?(s="bad",r="Not running"):e.imessageConfigured?(s="unknown",r="Not connected"):(s="bad",r="Not configured"),p`
912
930
  <div class="setup-status-item" style="flex-wrap: wrap;">
913
- ${he(s)}
931
+ ${X(s)}
914
932
  <div class="setup-status-info">
915
933
  <strong>iMessage</strong>
916
934
  <span>${r}</span>
917
935
  </div>
918
- ${It("imessage",e)}
936
+ ${ce("imessage",e)}
919
937
  <button
920
938
  class="setup-status-action ${e.imessageEnabling?"spinning":""}"
921
939
  ?disabled=${e.imessageEnabling}
@@ -924,9 +942,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
924
942
  >
925
943
  ${O.rotateCw}
926
944
  </button>
927
- ${k}
945
+ ${S}
928
946
  </div>
929
- `}function Xh(e){if(!e.imessageEnableConfirm)return k;const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=$r(e),s=()=>{e.onIMessageEnableCancel()};return n?p`
947
+ `}function Zh(e){if(!e.imessageEnableConfirm)return S;const{ownerWs:t,thisWsOwns:n,anotherWsOwns:i}=$r(e),s=()=>{e.onIMessageEnableCancel()};return n?p`
930
948
  <div class="setup-info-overlay" @click=${r=>{r.target.classList.contains("setup-info-overlay")&&s()}}>
931
949
  <div class="setup-info-card" style="text-align: center;">
932
950
  <h3>iMessage</h3>
@@ -983,7 +1001,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
983
1001
  <div class="setup-info-card" style="text-align: center;">
984
1002
  <h3>Enable iMessage</h3>
985
1003
  <p style="color: var(--tasker-text-grey); font-size: 13px; margin: 8px 0 16px;">
986
- ${qe().name} will respond to messages in Messages.app for this business.
1004
+ ${Ve().name} will respond to messages in Messages.app for this business.
987
1005
  </p>
988
1006
  <button
989
1007
  class="setup-button primary"
@@ -1002,10 +1020,10 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1002
1020
  </button>
1003
1021
  </div>
1004
1022
  </div>
1005
- `}function Ko(e){if(!e.isMaster)return k;const n=e.apiKeyProviders.filter(i=>i.hasKey).length;return p`
1023
+ `}function Ko(e){if(!e.isMaster)return S;const n=e.apiKeyProviders.filter(i=>i.hasKey).length;return p`
1006
1024
  <div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
1007
1025
  <div class="setup-status-item">
1008
- ${he(n>0?"good":"bad")}
1026
+ ${X(n>0?"good":"bad")}
1009
1027
  <div class="setup-status-info">
1010
1028
  <strong>API Keys</strong>
1011
1029
  <span>${n} configured</span>
@@ -1016,14 +1034,14 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1016
1034
  >Manage</button>
1017
1035
  </div>
1018
1036
  </div>
1019
- ${Zh(e)}
1020
- `}function Zh(e){if(!e.apiKeyModalOpen)return k;const t=e.apiKeyProviders,n={};for(const u of t)u.key&&(n[u.id]=u.key);const i=(u,l)=>{const d=l==null?void 0:l.closest(".setup-apikey-input"),h=d==null?void 0:d.querySelector("input"),v=h==null?void 0:h.value.trim();!v||v===n[u]||e.onApiKeySave(u,v)},s=u=>{const l=u.currentTarget,d=l.closest(".setup-apikey-input"),h=d==null?void 0:d.querySelector("input");if(!h)return;const v=h.type==="text";h.type=v?"password":"text",l.classList.toggle("active",!v)},r=(u,l)=>{const d=l.target,h=d.closest(".setup-apikey-input"),v=d.value.trim(),y=v.length>0&&v!==n[u],b=h==null?void 0:h.querySelector(".setup-apikey-save");b&&(b.style.display=y?"":"none");const S=h==null?void 0:h.querySelector(".setup-apikey-eye");S&&(S.style.display=v.length>0?"":"none")},o=t.filter(u=>u.primary),a=t.filter(u=>!u.primary),c=u=>{const l=e.apiKeySavingProvider===u.id&&e.apiKeyBusy,d=!e.apiKeyBusy&&e.apiKeySuccess===`${u.id} key saved`,h=!e.apiKeyBusy&&e.apiKeySuccess===`${u.id} key removed`;return p`
1037
+ ${Jh(e)}
1038
+ `}function Jh(e){if(!e.apiKeyModalOpen)return S;const t=e.apiKeyProviders,n={};for(const u of t)u.key&&(n[u.id]=u.key);const i=(u,l)=>{const d=l==null?void 0:l.closest(".setup-apikey-input"),h=d==null?void 0:d.querySelector("input"),v=h==null?void 0:h.value.trim();!v||v===n[u]||e.onApiKeySave(u,v)},s=u=>{const l=u.currentTarget,d=l.closest(".setup-apikey-input"),h=d==null?void 0:d.querySelector("input");if(!h)return;const v=h.type==="text";h.type=v?"password":"text",l.classList.toggle("active",!v)},r=(u,l)=>{const d=l.target,h=d.closest(".setup-apikey-input"),v=d.value.trim(),f=v.length>0&&v!==n[u],b=h==null?void 0:h.querySelector(".setup-apikey-save");b&&(b.style.display=f?"":"none");const k=h==null?void 0:h.querySelector(".setup-apikey-eye");k&&(k.style.display=v.length>0?"":"none")},o=t.filter(u=>u.primary),a=t.filter(u=>!u.primary),c=u=>{const l=e.apiKeySavingProvider===u.id&&e.apiKeyBusy,d=!e.apiKeyBusy&&e.apiKeySuccess===`${u.id} key saved`,h=!e.apiKeyBusy&&e.apiKeySuccess===`${u.id} key removed`;return p`
1021
1039
  <div class="setup-apikey-row">
1022
1040
  <div class="setup-apikey-info">
1023
1041
  <strong>${u.name}</strong>
1024
1042
  <span class="setup-apikey-category">${u.category}</span>
1025
- ${d?p`<span class="setup-apikey-badge saved">Saved</span>`:k}
1026
- ${h?p`<span class="setup-apikey-badge removed">Removed</span>`:k}
1043
+ ${d?p`<span class="setup-apikey-badge saved">Saved</span>`:S}
1044
+ ${h?p`<span class="setup-apikey-badge removed">Removed</span>`:S}
1027
1045
  </div>
1028
1046
  <div class="setup-apikey-input">
1029
1047
  <input
@@ -1053,7 +1071,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1053
1071
  ?disabled=${e.apiKeyBusy}
1054
1072
  @click=${()=>e.onApiKeyRemove(u.id)}
1055
1073
  >${O.trash}</button>
1056
- `:k}
1074
+ `:S}
1057
1075
  </div>
1058
1076
  </div>
1059
1077
  `};return p`
@@ -1061,25 +1079,25 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1061
1079
  <div class="setup-info-card" style="max-width: 480px;">
1062
1080
  <h3 style="margin: 0 0 4px; text-align: center;">API Keys</h3>
1063
1081
  <div class="setup-apikey-list">
1064
- ${e.apiKeyError?p`<p class="setup-error" style="margin: 0;">${e.apiKeyError}</p>`:k}
1082
+ ${e.apiKeyError?p`<p class="setup-error" style="margin: 0;">${e.apiKeyError}</p>`:S}
1065
1083
  ${o.map(c)}
1066
1084
  ${a.length>0?p`
1067
1085
  <details class="setup-apikey-advanced">
1068
1086
  <summary>Additional keys</summary>
1069
1087
  ${a.map(c)}
1070
1088
  </details>
1071
- `:k}
1089
+ `:S}
1072
1090
  </div>
1073
1091
  </div>
1074
1092
  </div>
1075
1093
  `}function zo(e){const t=e.updateAvailable===null?"unknown":e.updateAvailable?"partial":"good",n=e.updateAvailable&&e.latestVersion?`v${e.currentVersion} → v${e.latestVersion}`:e.currentVersion?`v${e.currentVersion}`:"Unknown",i=e.updateChecking||e.updateRunning;return p`
1076
1094
  <div class="setup-status-item">
1077
- ${he(t)}
1095
+ ${X(t)}
1078
1096
  <div class="setup-status-info">
1079
1097
  <strong>Software</strong>
1080
1098
  <span>${n}</span>
1081
1099
  </div>
1082
- ${It("update",e)}
1100
+ ${ce("update",e)}
1083
1101
  ${e.updateAvailable?p`
1084
1102
  <button
1085
1103
  class="setup-status-action ${i?"spinning":""}"
@@ -1100,31 +1118,178 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1100
1118
  </button>
1101
1119
  `}
1102
1120
  </div>
1103
- `}const Jh={anonymous:"Open access",verified:"WhatsApp OTP",choice:"Visitor chooses"};function jo(e){const t=e.publicChatEnabled,n=t?"good":"unknown",i=Jh[e.publicChatAuthMode]??"Open access";return p`
1121
+ `}const ef={anonymous:"Open access",verified:"WhatsApp OTP",choice:"Visitor chooses"};function jo(e){const t=e.publicChatEnabled;return p`
1104
1122
  <div class="setup-status-item">
1105
- ${he(n)}
1123
+ ${X(t?"good":"unknown")}
1106
1124
  <div class="setup-status-info">
1107
1125
  <strong>Public Chat</strong>
1108
- <span>${t?i:"Disabled"}</span>
1126
+ ${t?p`
1127
+ <select
1128
+ class="setup-select-sm"
1129
+ ?disabled=${e.publicChatBusy}
1130
+ @change=${i=>{const s=i.target.value;e.onPublicChatAuthModeChange(s)}}
1131
+ >
1132
+ <option value="anonymous" ?selected=${e.publicChatAuthMode==="anonymous"}>Open access</option>
1133
+ <option value="verified" ?selected=${e.publicChatAuthMode==="verified"}>WhatsApp OTP</option>
1134
+ <option value="choice" ?selected=${e.publicChatAuthMode==="choice"}>Visitor chooses</option>
1135
+ </select>
1136
+ `:p`<span>Disabled</span>`}
1109
1137
  </div>
1110
- ${t?p`
1111
- <select
1112
- class="setup-select-sm"
1113
- ?disabled=${e.publicChatBusy}
1114
- @change=${s=>{const r=s.target.value;e.onPublicChatAuthModeChange(r)}}
1115
- >
1116
- <option value="anonymous" ?selected=${e.publicChatAuthMode==="anonymous"}>Open access</option>
1117
- <option value="verified" ?selected=${e.publicChatAuthMode==="verified"}>WhatsApp OTP</option>
1118
- <option value="choice" ?selected=${e.publicChatAuthMode==="choice"}>Visitor chooses</option>
1119
- </select>
1120
- `:k}
1138
+ ${ce("public-chat",e)}
1121
1139
  <button
1122
1140
  class="setup-link-btn"
1123
1141
  ?disabled=${e.publicChatBusy}
1124
1142
  @click=${e.onPublicChatToggle}
1125
1143
  >${e.publicChatBusy?"...":t?"Disable":"Enable"}</button>
1126
1144
  </div>
1127
- `}function ef(e){var i,s,r;const t=e.updateRunning,n=e.updateLastResult;if(!t&&!n)return k;if(t)return p`
1145
+ `}function tf(e){if(!e.isMaster)return S;const t=e.tailscaleStatus,n=e.tailscaleBusy,i=e.tailscaleAuthUrl;if(!t)return p`
1146
+ <div class="setup-status-item">
1147
+ ${X("unknown")}
1148
+ <div class="setup-status-info">
1149
+ <strong>Internet Access</strong>
1150
+ <span>Checking...</span>
1151
+ </div>
1152
+ ${ce("internet",e)}
1153
+ </div>
1154
+ `;if(!t.installed)return p`
1155
+ <div class="setup-status-item">
1156
+ ${X("unknown")}
1157
+ <div class="setup-status-info">
1158
+ <strong>Internet Access</strong>
1159
+ <span>Tailscale not installed</span>
1160
+ </div>
1161
+ ${ce("internet",e)}
1162
+ </div>
1163
+ `;if(i)return p`
1164
+ <div>
1165
+ <div class="setup-status-item">
1166
+ ${X("partial")}
1167
+ <div class="setup-status-info">
1168
+ <strong>Internet Access</strong>
1169
+ <span>Waiting for authentication...</span>
1170
+ </div>
1171
+ ${ce("internet",e)}
1172
+ </div>
1173
+ <div style="padding: 12px 0 4px 28px;">
1174
+ <p style="margin: 0 0 8px; font-size: 13px; opacity: 0.8;">
1175
+ Scan the QR code or open the link to log in with your Google or Microsoft account:
1176
+ </p>
1177
+ <div style="text-align: center; margin: 12px 0;">
1178
+ <img
1179
+ src="https://api.qrserver.com/v1/create-qr-code/?size=180x180&data=${encodeURIComponent(i)}"
1180
+ alt="Tailscale auth QR code"
1181
+ style="width: 180px; height: 180px; border-radius: 8px; background: #fff; padding: 8px;"
1182
+ />
1183
+ </div>
1184
+ <div style="text-align: center; margin-bottom: 8px;">
1185
+ <a
1186
+ href="${i}"
1187
+ target="_blank"
1188
+ rel="noopener"
1189
+ style="color: var(--tasker-link, #60a5fa); font-size: 13px; word-break: break-all;"
1190
+ >${i}</a>
1191
+ </div>
1192
+ </div>
1193
+ </div>
1194
+ `;if(!t.loggedIn)return p`
1195
+ <div class="setup-status-item">
1196
+ ${X("partial")}
1197
+ <div class="setup-status-info">
1198
+ <strong>Internet Access</strong>
1199
+ <span>Not connected</span>
1200
+ </div>
1201
+ ${ce("internet",e)}
1202
+ <button
1203
+ class="setup-link-btn"
1204
+ ?disabled=${n}
1205
+ @click=${e.onTailscaleEnable}
1206
+ >${n?"...":"Connect"}</button>
1207
+ </div>
1208
+ `;if(!t.funnelEnabled){const r=e.tailscaleFunnelEnableUrl;return p`
1209
+ <div>
1210
+ <div class="setup-status-item">
1211
+ ${X("partial")}
1212
+ <div class="setup-status-info">
1213
+ <strong>Internet Access</strong>
1214
+ <span>Connected (LAN only)</span>
1215
+ </div>
1216
+ ${ce("internet",e)}
1217
+ <button
1218
+ class="setup-link-btn"
1219
+ ?disabled=${n}
1220
+ @click=${e.onTailscaleFunnelEnable}
1221
+ >${n?"...":"Enable"}</button>
1222
+ </div>
1223
+ ${r?p`<div style="padding: 8px 0 4px 28px;">
1224
+ <p style="margin: 0 0 6px; font-size: 13px; color: #f59e0b;">
1225
+ Funnel must be enabled on your Tailscale account first.
1226
+ </p>
1227
+ <a
1228
+ href="${r}"
1229
+ target="_blank"
1230
+ rel="noopener"
1231
+ style="color: var(--tasker-link, #60a5fa); font-size: 13px; word-break: break-all;"
1232
+ >Open Tailscale admin to enable Funnel &rarr;</a>
1233
+ <p style="margin: 6px 0 0; font-size: 12px; opacity: 0.6;">
1234
+ After enabling, come back here and click Enable again.
1235
+ </p>
1236
+ </div>`:e.tailscaleError&&!r?p`<div style="padding: 8px 0 4px 28px;">
1237
+ <p style="margin: 0; font-size: 13px; color: #ef4444;">${e.tailscaleError}</p>
1238
+ </div>`:S}
1239
+ </div>
1240
+ `}if(!t.funnelActive)return p`
1241
+ <div>
1242
+ <div class="setup-status-item">
1243
+ ${X("error")}
1244
+ <div class="setup-status-info">
1245
+ <strong>Internet Access</strong>
1246
+ <span>Enabled but not active</span>
1247
+ </div>
1248
+ ${ce("internet",e)}
1249
+ <button
1250
+ class="setup-link-btn"
1251
+ ?disabled=${n}
1252
+ @click=${e.onTailscaleFunnelDisable}
1253
+ >${n?"...":"Disable"}</button>
1254
+ </div>
1255
+ <div style="padding: 8px 0 4px 28px;">
1256
+ <p style="margin: 0; font-size: 13px; color: #f59e0b;">
1257
+ Funnel is configured but not running. You may need to
1258
+ <a
1259
+ href="https://login.tailscale.com/admin/machines"
1260
+ target="_blank"
1261
+ rel="noopener"
1262
+ style="color: var(--tasker-link, #60a5fa);"
1263
+ >enable Funnel in Tailscale admin</a>,
1264
+ then disable and re-enable here.
1265
+ </p>
1266
+ </div>
1267
+ </div>
1268
+ `;const s=t.publicUrl??`https://${t.hostname}`;return p`
1269
+ <div class="setup-status-item">
1270
+ ${X("good")}
1271
+ <div class="setup-status-info">
1272
+ <strong>Internet Access</strong>
1273
+ <a
1274
+ href="${s}"
1275
+ target="_blank"
1276
+ rel="noopener"
1277
+ style="color: var(--tasker-link, #60a5fa); font-size: 12px; overflow-wrap: break-word; word-break: normal;"
1278
+ >${s}</a>
1279
+ </div>
1280
+ ${ce("internet",e)}
1281
+ <button
1282
+ class="setup-info-btn"
1283
+ title="Copy URL"
1284
+ @click=${r=>{const o=r.currentTarget;navigator.clipboard.writeText(s).then(()=>{o.classList.add("copied"),setTimeout(()=>o.classList.remove("copied"),1500)})}}
1285
+ >${O.copy}</button>
1286
+ <button
1287
+ class="setup-link-btn"
1288
+ ?disabled=${n}
1289
+ @click=${e.onTailscaleFunnelDisable}
1290
+ >${n?"...":"Disable"}</button>
1291
+ </div>
1292
+ `}function nf(e){var i,s,r;const t=e.updateRunning,n=e.updateLastResult;if(!t&&!n)return S;if(t)return p`
1128
1293
  <div class="setup-info-overlay">
1129
1294
  <div class="setup-info-card" style="max-width: 400px;">
1130
1295
  <h3>Software Update</h3>
@@ -1136,12 +1301,12 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1136
1301
  ${o.status==="running"?p`<span class="setup-update-spinner"></span>`:o.status==="done"?p`<span class="setup-update-icon-ok">${O.check}</span>`:p`<span class="setup-update-icon-fail">${O.x}</span>`}
1137
1302
  </span>
1138
1303
  <span class="setup-update-step-name">${o.name}</span>
1139
- ${o.durationMs!=null?p`<span class="setup-update-step-time">${Ho(o.durationMs)}</span>`:k}
1304
+ ${o.durationMs!=null?p`<span class="setup-update-step-time">${Ho(o.durationMs)}</span>`:S}
1140
1305
  </div>
1141
1306
  `)}
1142
1307
  </div>
1143
1308
  `:p`<div class="setup-spinner" style="margin: 16px auto;"></div>`}
1144
- ${e.updateMessage?p`<p style="text-align: center; color: var(--tasker-text-grey); font-size: 13px; margin: 12px 0 0;">${e.updateMessage}</p>`:k}
1309
+ ${e.updateMessage?p`<p style="text-align: center; color: var(--tasker-text-grey); font-size: 13px; margin: 12px 0 0;">${e.updateMessage}</p>`:S}
1145
1310
  </div>
1146
1311
  </div>
1147
1312
  `;if(n){const o=n.status==="ok";let a;if(o){const u=(i=n.before)==null?void 0:i.version,l=((s=n.after)==null?void 0:s.version)??n.currentVersion;a=u?`v${u} → v${l}`:`Updated to v${l}`}else a=n.reason??((r=n.failedStep)==null?void 0:r.name)??"unknown error";const c=n.durationMs!=null?Ho(n.durationMs):null;return p`
@@ -1154,7 +1319,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1154
1319
  <p style="color: var(--tasker-text-grey); font-size: 14px; margin: 8px 0;">
1155
1320
  ${a}
1156
1321
  </p>
1157
- ${c?p`<p style="color: rgba(255,255,255,0.3); font-size: 12px; margin: 4px 0 0;">${c}</p>`:k}
1322
+ ${c?p`<p style="color: rgba(255,255,255,0.3); font-size: 12px; margin: 4px 0 0;">${c}</p>`:S}
1158
1323
  <button
1159
1324
  class="setup-button secondary"
1160
1325
  style="margin-top: 20px; width: 100%; padding: 10px;"
@@ -1164,19 +1329,20 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1164
1329
  </button>
1165
1330
  </div>
1166
1331
  </div>
1167
- `}return k}function Ho(e){if(e<1e3)return`${e}ms`;const t=Math.round(e/1e3);if(t<60)return`${t}s`;const n=Math.floor(t/60),i=t%60;return i>0?`${n}m ${i}s`:`${n}m`}function qo(e){const t=e.accountHasPin;return p`
1332
+ `}return S}function Ho(e){if(e<1e3)return`${e}ms`;const t=Math.round(e/1e3);if(t<60)return`${t}s`;const n=Math.floor(t/60),i=t%60;return i>0?`${n}m ${i}s`:`${n}m`}function qo(e){const t=e.accountHasPin;return p`
1168
1333
  <div class="setup-status-item">
1169
- ${he(t?"good":"bad")}
1334
+ ${X(t?"good":"bad")}
1170
1335
  <div class="setup-status-info">
1171
1336
  <strong>Account PIN</strong>
1172
1337
  <span>${t?"Set":"Not set"}</span>
1173
1338
  </div>
1339
+ ${ce("account-pin",e)}
1174
1340
  <button
1175
1341
  class="setup-link-btn"
1176
1342
  @click=${()=>e.onAccountPinModalOpen()}
1177
1343
  >${t?"Change":"Set PIN"}</button>
1178
1344
  </div>
1179
- `}function Vo(e){if(!e.accountPinModalOpen)return k;const t=e.accountHasPin,n=e.accountPinBusy;let i="",s="",r="";const o=u=>l=>{const d=l.target;d.value=d.value.replace(/\D/g,"").slice(0,6),u(d.value)},a=(u,l)=>{var h;let d=u.querySelector(".pin-modal-validation");d||(d=document.createElement("p"),d.className="login-error pin-modal-validation",(h=u.querySelector("button[type=submit]"))==null||h.before(d)),d.textContent=l},c=u=>{u.preventDefault();const l=u.target;if(!n){if(t&&!i){a(l,"Enter your current PIN");return}if(!s){a(l,"Enter a new PIN");return}if(!r){a(l,"Confirm your new PIN");return}if(s!==r){a(l,"PINs do not match");return}if(s.length<4){a(l,"PIN must be 4–6 digits");return}e.onAccountPinSave(t?i:null,s)}};return p`
1345
+ `}function Vo(e){if(!e.accountPinModalOpen)return S;const t=e.accountHasPin,n=e.accountPinBusy;let i="",s="",r="";const o=u=>l=>{const d=l.target;d.value=d.value.replace(/\D/g,"").slice(0,6),u(d.value)},a=(u,l)=>{var h;let d=u.querySelector(".pin-modal-validation");d||(d=document.createElement("p"),d.className="login-error pin-modal-validation",(h=u.querySelector("button[type=submit]"))==null||h.before(d)),d.textContent=l},c=u=>{u.preventDefault();const l=u.target;if(!n){if(t&&!i){a(l,"Enter your current PIN");return}if(!s){a(l,"Enter a new PIN");return}if(!r){a(l,"Confirm your new PIN");return}if(s!==r){a(l,"PINs do not match");return}if(s.length<4){a(l,"PIN must be 4–6 digits");return}e.onAccountPinSave(t?i:null,s)}};return p`
1180
1346
  <div class="setup-info-overlay" @click=${u=>{u.target.classList.contains("setup-info-overlay")&&e.onAccountPinModalClose()}}>
1181
1347
  <div class="setup-info-card" style="max-width: 340px;">
1182
1348
  <div class="setup-info-header">
@@ -1199,7 +1365,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1199
1365
  @input=${o(u=>{i=u})}
1200
1366
  autofocus
1201
1367
  />
1202
- `:k}
1368
+ `:S}
1203
1369
  <input
1204
1370
  class="login-pin-input"
1205
1371
  type="password"
@@ -1210,7 +1376,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1210
1376
  placeholder="New PIN (4–6 digits)"
1211
1377
  ?disabled=${n}
1212
1378
  @input=${o(u=>{s=u})}
1213
- ${t?k:p`autofocus`}
1379
+ ${t?S:p`autofocus`}
1214
1380
  />
1215
1381
  <input
1216
1382
  class="login-pin-input"
@@ -1223,8 +1389,8 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1223
1389
  ?disabled=${n}
1224
1390
  @input=${o(u=>{r=u})}
1225
1391
  />
1226
- ${e.accountPinError?p`<p class="login-error">${e.accountPinError}</p>`:k}
1227
- ${e.accountPinSuccess?p`<p class="login-success">${e.accountPinSuccess}</p>`:k}
1392
+ ${e.accountPinError?p`<p class="login-error">${e.accountPinError}</p>`:S}
1393
+ ${e.accountPinSuccess?p`<p class="login-success">${e.accountPinSuccess}</p>`:S}
1228
1394
  <button
1229
1395
  class="login-submit"
1230
1396
  type="submit"
@@ -1233,7 +1399,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1233
1399
  </form>
1234
1400
  </div>
1235
1401
  </div>
1236
- `}function Go(e){if(!e.addingWorkspace)return k;const{workspaceSaving:t}=e;return p`
1402
+ `}function Go(e){if(!e.addingWorkspace)return S;const{workspaceSaving:t}=e;return p`
1237
1403
  <div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 16px;">
1238
1404
  <div class="setup-add-account">
1239
1405
  <strong>New Account</strong>
@@ -1286,7 +1452,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1286
1452
  </div>
1287
1453
  </div>
1288
1454
  </div>
1289
- `}function Qo(e){const t=Rt(e);return!t||t.isDefault?k:e.workspaceRemoveConfirm===t.name?p`
1455
+ `}function Qo(e){const t=Rt(e);return!t||t.isDefault?S:e.workspaceRemoveConfirm===t.name?p`
1290
1456
  <div style="margin-top: 16px; border-top: 1px solid var(--tasker-border, rgba(255,255,255,0.1)); padding-top: 12px;">
1291
1457
  <div style="font-size: 13px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
1292
1458
  <span style="color: var(--tasker-danger, #ef4444);">Remove "${t.displayName??t.name}" and its WhatsApp account?</span>
@@ -1360,7 +1526,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1360
1526
  Cancel
1361
1527
  </button>
1362
1528
  </div>
1363
- ${e.uninstallError?p`<p class="setup-error" style="margin-top: 8px; font-size: 12px;">${e.uninstallError}</p>`:k}
1529
+ ${e.uninstallError?p`<p class="setup-error" style="margin-top: 8px; font-size: 12px;">${e.uninstallError}</p>`:S}
1364
1530
  </div>
1365
1531
  `}return p`
1366
1532
  <p class="setup-hint" style="margin-top: 8px;">
@@ -1374,7 +1540,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1374
1540
  <p class="setup-hint" style="margin-top: 4px; font-size: 12px; opacity: 0.6;">
1375
1541
  Need help? <a href="https://wa.me/447591215452" target="_blank" rel="noopener" style="color: var(--tasker-orange);">Message Dave on WhatsApp</a>
1376
1542
  </p>
1377
- `}function tf(e){const{whatsappBusy:t,whatsappLoginMessage:n,whatsappLoginQrDataUrl:i,whatsappLoginConnected:s,whatsappChannelStatus:r}=e;if(i)return p`
1543
+ `}function sf(e){const{whatsappBusy:t,whatsappLoginMessage:n,whatsappLoginQrDataUrl:i,whatsappLoginConnected:s,whatsappChannelStatus:r}=e;if(i)return p`
1378
1544
  <div class="setup-container">
1379
1545
  <div class="setup-card">
1380
1546
  <h1>Scan with WhatsApp</h1>
@@ -1388,7 +1554,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1388
1554
  Scan the code above with your phone
1389
1555
  </p>`}
1390
1556
  <p class="setup-hint" style="margin-top: 16px;">
1391
- <strong>Important:</strong> If you see "${qe().name}" in your Linked
1557
+ <strong>Important:</strong> If you see "${Ve().name}" in your Linked
1392
1558
  Devices, remove it first before scanning.
1393
1559
  </p>
1394
1560
  <div class="setup-actions" style="margin-top: 24px;">
@@ -1417,10 +1583,11 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1417
1583
  ${Bo(e)}
1418
1584
  ${Fo(e)}
1419
1585
  ${Uo(e)}
1420
- ${e.serverPlatform==="darwin"?Wo(e):k}
1586
+ ${e.serverPlatform==="darwin"?Wo(e):S}
1421
1587
  ${qo(e)}
1422
1588
  ${zo(e)}
1423
1589
  ${jo(e)}
1590
+ ${tf(e)}
1424
1591
  </div>
1425
1592
 
1426
1593
  ${Vo(e)}
@@ -1429,7 +1596,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1429
1596
  ${Qo(e)}
1430
1597
  ${Yo(e)}
1431
1598
  ${Xo()}
1432
- ${e.workspacesError?p`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
1599
+ ${e.workspacesError?p`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:S}
1433
1600
  </div>
1434
1601
  </div>
1435
1602
  `:p`
@@ -1441,7 +1608,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1441
1608
  ${Bo(e)}
1442
1609
  ${Fo(e)}
1443
1610
  ${Uo(e)}
1444
- ${e.serverPlatform==="darwin"?Wo(e):k}
1611
+ ${e.serverPlatform==="darwin"?Wo(e):S}
1445
1612
  ${qo(e)}
1446
1613
  ${zo(e)}
1447
1614
  ${jo(e)}
@@ -1453,15 +1620,15 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1453
1620
  ${Qo(e)}
1454
1621
  ${Yo(e)}
1455
1622
  ${Xo()}
1456
- ${e.workspacesError?p`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:k}
1623
+ ${e.workspacesError?p`<p class="setup-error" style="margin-top: 8px;">${e.workspacesError}</p>`:S}
1457
1624
  </div>
1458
1625
  </div>
1459
1626
  `:r?s===!1&&n&&!t?p`
1460
1627
  <div class="setup-container">
1461
1628
  <div class="setup-card">
1462
- ${be("whatsapp")}
1629
+ ${we("whatsapp")}
1463
1630
  <div class="setup-status-row">
1464
- ${he("bad")}
1631
+ ${X("bad")}
1465
1632
  <span>Connection Failed</span>
1466
1633
  </div>
1467
1634
  <p class="setup-error">${n}</p>
@@ -1477,7 +1644,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1477
1644
  `:p`
1478
1645
  <div class="setup-container">
1479
1646
  <div class="setup-card">
1480
- ${be("whatsapp")}
1647
+ ${we("whatsapp")}
1481
1648
  ${n?p`<p class="setup-error">${n}</p>`:p`<div class="setup-spinner"></div>
1482
1649
  <p>Preparing...</p>`}
1483
1650
  </div>
@@ -1485,7 +1652,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1485
1652
  `:p`
1486
1653
  <div class="setup-container">
1487
1654
  <div class="setup-card">
1488
- ${be("whatsapp")}
1655
+ ${we("whatsapp")}
1489
1656
  <div class="setup-spinner"></div>
1490
1657
  <p>Checking connection status...</p>
1491
1658
  <button
@@ -1497,7 +1664,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1497
1664
  </button>
1498
1665
  </div>
1499
1666
  </div>
1500
- `}function nf(e){const{connected:t,currentStep:n}=e;if(t&&oi()&&Ar(),e.uninstallDone||!t&&oi())return p`
1667
+ `}function rf(e){const{connected:t,currentStep:n}=e;if(t&&oi()&&Ar(),e.uninstallDone||!t&&oi())return p`
1501
1668
  <div class="setup-container">
1502
1669
  <div class="setup-card">
1503
1670
  <p style="color: var(--tasker-danger, #ef4444); font-size: 16px; font-weight: 600; margin: 0 0 12px 0;">
@@ -1520,7 +1687,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1520
1687
  <p>${r?"Restarting gateway after update…":"Connecting to gateway..."}</p>
1521
1688
  </div>
1522
1689
  </div>
1523
- `}let i;switch(n){case"license":i=No(e);break;case"auth":i=qh(e);break;case"whatsapp":case"complete":i=tf(e);break;default:i=No(e)}const s=pt("Setup",e.wsProps);return p`${i}${Hh(e)}${Xh(e)}${Yh(e)}${ef(e)}${s}`}function sf(e,t){const n=e.paired?"Paired phone (used to link WhatsApp)":"Admin access via WhatsApp DM";return p`
1690
+ `}let i;switch(n){case"license":i=No(e);break;case"auth":i=Vh(e);break;case"whatsapp":case"complete":i=sf(e);break;default:i=No(e)}const s=ht("Setup",e.wsProps);return p`${i}${qh(e)}${Zh(e)}${Xh(e)}${nf(e)}${s}`}function of(e,t){const n=e.paired?"Paired phone (used to link WhatsApp)":"Admin access via WhatsApp DM";return p`
1524
1691
  <div class="sp-list-item">
1525
1692
  <div class="sp-list-item-main">
1526
1693
  <div class="sp-list-item-title">${e.phone}</div>
@@ -1535,7 +1702,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1535
1702
  Remove
1536
1703
  </button>`}
1537
1704
  </div>
1538
- `}function rf(e){if(!e.connected)return p`
1705
+ `}function af(e){if(!e.connected)return p`
1539
1706
  <div class="setup-container">
1540
1707
  <div class="setup-card">
1541
1708
  <div class="setup-spinner"></div>
@@ -1544,7 +1711,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1544
1711
  </div>
1545
1712
  `;const t=n=>{n.preventDefault(),e.newPhone.trim()&&e.onAdd(e.newPhone)};return p`
1546
1713
  <div class="setup-container">
1547
- ${pt("Admins",e.wsProps)}
1714
+ ${ht("Admins",e.wsProps)}
1548
1715
  <div class="setup-card" style="max-width: 520px;">
1549
1716
  <h1>Admin Phones</h1>
1550
1717
  <p style="margin-bottom: 16px;">
@@ -1562,7 +1729,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1562
1729
  </button>
1563
1730
  </div>
1564
1731
 
1565
- ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
1732
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:S}
1566
1733
 
1567
1734
  <form style="display: flex; flex-direction: row; gap: 12px; margin-top: 20px; align-items: stretch;" @submit=${t}>
1568
1735
  <input
@@ -1584,7 +1751,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1584
1751
  </form>
1585
1752
 
1586
1753
  <div class="sp-list" style="margin-top: 20px;">
1587
- ${e.phones.length===0?p`<div class="sp-list-empty">No admin phones configured yet.</div>`:e.phones.map(n=>sf(n,e))}
1754
+ ${e.phones.length===0?p`<div class="sp-list-empty">No admin phones configured yet.</div>`:e.phones.map(n=>of(n,e))}
1588
1755
  </div>
1589
1756
 
1590
1757
  <div class="setup-hint" style="margin-top: 20px; padding: 14px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; text-align: left;">
@@ -1595,7 +1762,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1595
1762
 
1596
1763
  </div>
1597
1764
  </div>
1598
- `}function of(e){return Object.keys(e.fields).length}function af(e,t){const n=Object.entries(e.fields);return p`
1765
+ `}function lf(e){return Object.keys(e.fields).length}function cf(e,t){const n=Object.entries(e.fields);return p`
1599
1766
  <div class="customers-record-fields">
1600
1767
  ${n.length===0?p`<div style="color: rgba(255,255,255,0.4); font-size: 13px; margin-top: 12px;">No fields yet. Add one below.</div>`:n.map(([i,s])=>p`
1601
1768
  <div class="customers-field-row">
@@ -1642,7 +1809,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1642
1809
  </button>
1643
1810
  </div>
1644
1811
  </div>
1645
- `}function lf(e,t){const n=t.editingId===e.id,i=of(e),s=i===0?"No fields":`${i} field${i>1?"s":""}`;return p`
1812
+ `}function uf(e,t){const n=t.editingId===e.id,i=lf(e),s=i===0?"No fields":`${i} field${i>1?"s":""}`;return p`
1646
1813
  <div class="customers-record">
1647
1814
  <div
1648
1815
  class="customers-record-header"
@@ -1654,9 +1821,9 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1654
1821
  </div>
1655
1822
  <span class="customers-record-meta">${s}</span>
1656
1823
  </div>
1657
- ${n?af(e,t):k}
1824
+ ${n?cf(e,t):S}
1658
1825
  </div>
1659
- `}function cf(e){if(!e.connected)return p`
1826
+ `}function df(e){if(!e.connected)return p`
1660
1827
  <div class="setup-container">
1661
1828
  <div class="setup-card">
1662
1829
  <div class="setup-spinner"></div>
@@ -1665,7 +1832,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1665
1832
  </div>
1666
1833
  `;const t=i=>{i.preventDefault(),e.onSearchSubmit()},n=i=>{i.preventDefault(),e.newRecordPhone.trim()&&e.newRecordName.trim()&&e.onAdd(e.newRecordPhone,e.newRecordName)};return p`
1667
1834
  <div class="setup-container">
1668
- ${pt("Customers",e.wsProps)}
1835
+ ${ht("Customers",e.wsProps)}
1669
1836
  <div class="setup-card" style="max-width: 620px;">
1670
1837
  <h1>Customer Records</h1>
1671
1838
  <p style="margin-bottom: 16px;">
@@ -1690,7 +1857,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1690
1857
  </button>
1691
1858
  </div>
1692
1859
 
1693
- ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:k}
1860
+ ${e.error?p`<div class="setup-error" style="margin-top: 16px;">${e.error}</div>`:S}
1694
1861
 
1695
1862
  ${e.showAddForm?p`
1696
1863
  <form class="customers-add-form" @submit=${n}>
@@ -1727,7 +1894,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1727
1894
  </button>
1728
1895
  </div>
1729
1896
  </form>
1730
- `:k}
1897
+ `:S}
1731
1898
 
1732
1899
  <form
1733
1900
  class="customers-search"
@@ -1752,7 +1919,7 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1752
1919
  <div style="margin-top: 16px;">
1753
1920
  ${e.records.length===0?p`<div class="customers-empty">
1754
1921
  ${e.searchQuery.trim()?`No records matching "${e.searchQuery}".`:"No customer records yet. Add one to get started."}
1755
- </div>`:e.records.map(i=>lf(i,e))}
1922
+ </div>`:e.records.map(i=>uf(i,e))}
1756
1923
  </div>
1757
1924
 
1758
1925
  <div class="setup-hint" style="margin-top: 20px; padding: 14px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; text-align: left;">
@@ -1763,34 +1930,34 @@ ${r}`:r),e.chatStream="","working"}else if(t.state==="block"){const s=sn(t.messa
1763
1930
  </div>
1764
1931
  </div>
1765
1932
  </div>
1766
- `}const fc={CHILD:2},gc=e=>(...t)=>({_$litDirective$:e,values:t});let mc=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,n,i){this._$Ct=t,this._$AM=n,this._$Ci=i}_$AS(t,n){return this.update(t,n)}update(t,n){return this.render(...n)}};const{I:uf}=Ju,Zo=e=>e,Jo=()=>document.createComment(""),Wt=(e,t,n)=>{var r;const i=e._$AA.parentNode,s=t===void 0?e._$AB:t._$AA;if(n===void 0){const o=i.insertBefore(Jo(),s),a=i.insertBefore(Jo(),s);n=new uf(o,a,e,e.options)}else{const o=n._$AB.nextSibling,a=n._$AM,c=a!==e;if(c){let u;(r=n._$AQ)==null||r.call(n,e),n._$AM=e,n._$AP!==void 0&&(u=e._$AU)!==a._$AU&&n._$AP(u)}if(o!==s||c){let u=n._$AA;for(;u!==o;){const l=Zo(u).nextSibling;Zo(i).insertBefore(u,s),u=l}}}return n},Ze=(e,t,n=e)=>(e._$AI(t,n),e),df={},pf=(e,t=df)=>e._$AH=t,hf=e=>e._$AH,ts=e=>{e._$AR(),e._$AA.remove()};const ea=(e,t,n)=>{const i=new Map;for(let s=t;s<=n;s++)i.set(e[s],s);return i},ff=gc(class extends mc{constructor(e){if(super(e),e.type!==fc.CHILD)throw Error("repeat() can only be used in text expressions")}dt(e,t,n){let i;n===void 0?n=t:t!==void 0&&(i=t);const s=[],r=[];let o=0;for(const a of e)s[o]=i?i(a,o):o,r[o]=n(a,o),o++;return{values:r,keys:s}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,i]){const s=hf(e),{values:r,keys:o}=this.dt(t,n,i);if(!Array.isArray(s))return this.ut=o,r;const a=this.ut??(this.ut=[]),c=[];let u,l,d=0,h=s.length-1,v=0,y=r.length-1;for(;d<=h&&v<=y;)if(s[d]===null)d++;else if(s[h]===null)h--;else if(a[d]===o[v])c[v]=Ze(s[d],r[v]),d++,v++;else if(a[h]===o[y])c[y]=Ze(s[h],r[y]),h--,y--;else if(a[d]===o[y])c[y]=Ze(s[d],r[y]),Wt(e,c[y+1],s[d]),d++,y--;else if(a[h]===o[v])c[v]=Ze(s[h],r[v]),Wt(e,s[d],s[h]),h--,v++;else if(u===void 0&&(u=ea(o,v,y),l=ea(a,d,h)),u.has(a[d]))if(u.has(a[h])){const b=l.get(o[v]),S=b!==void 0?s[b]:null;if(S===null){const x=Wt(e,s[d]);Ze(x,r[v]),c[v]=x}else c[v]=Ze(S,r[v]),Wt(e,s[d],S),s[b]=null;v++}else ts(s[h]),h--;else ts(s[d]),d++;for(;v<=y;){const b=Wt(e,c[y+1]);Ze(b,r[v]),c[v++]=b}for(;d<=h;){const b=s[d++];b!==null&&ts(b)}return this.ut=o,pf(e,c),je}});class Is extends mc{constructor(t){if(super(t),this.it=k,t.type!==fc.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===k||t==null)return this._t=void 0,this.it=t;if(t===je)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const n=[t];return n.raw=n,this._t={_$litType$:this.constructor.resultType,strings:n,values:[]}}}Is.directiveName="unsafeHTML",Is.resultType=1;const ai=gc(Is);const{entries:yc,setPrototypeOf:ta,isFrozen:gf,getPrototypeOf:mf,getOwnPropertyDescriptor:yf}=Object;let{freeze:ue,seal:fe,create:Rs}=Object,{apply:Ns,construct:Ds}=typeof Reflect<"u"&&Reflect;ue||(ue=function(t){return t});fe||(fe=function(t){return t});Ns||(Ns=function(t,n){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r<i;r++)s[r-2]=arguments[r];return t.apply(n,s)});Ds||(Ds=function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return new t(...i)});const On=de(Array.prototype.forEach),vf=de(Array.prototype.lastIndexOf),na=de(Array.prototype.pop),Kt=de(Array.prototype.push),bf=de(Array.prototype.splice),Gn=de(String.prototype.toLowerCase),ns=de(String.prototype.toString),is=de(String.prototype.match),zt=de(String.prototype.replace),wf=de(String.prototype.indexOf),kf=de(String.prototype.trim),me=de(Object.prototype.hasOwnProperty),ae=de(RegExp.prototype.test),jt=Sf(TypeError);function de(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return Ns(e,t,i)}}function Sf(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return Ds(e,n)}}function F(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Gn;ta&&ta(e,null);let i=t.length;for(;i--;){let s=t[i];if(typeof s=="string"){const r=n(s);r!==s&&(gf(t)||(t[i]=r),s=r)}e[s]=!0}return e}function Af(e){for(let t=0;t<e.length;t++)me(e,t)||(e[t]=null);return e}function $e(e){const t=Rs(null);for(const[n,i]of yc(e))me(e,n)&&(Array.isArray(i)?t[n]=Af(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=$e(i):t[n]=i);return t}function Ht(e,t){for(;e!==null;){const i=yf(e,t);if(i){if(i.get)return de(i.get);if(typeof i.value=="function")return de(i.value)}e=mf(e)}function n(){return null}return n}const ia=ue(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ss=ue(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),rs=ue(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),xf=ue(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),os=ue(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),$f=ue(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),sa=ue(["#text"]),ra=ue(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),as=ue(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),oa=ue(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Bn=ue(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Ef=fe(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Cf=fe(/<%[\w\W]*|[\w\W]*%>/gm),Tf=fe(/\$\{[\w\W]*/gm),_f=fe(/^data-[\-\w.\u00B7-\uFFFF]+$/),Mf=fe(/^aria-[\-\w]+$/),vc=fe(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Pf=fe(/^(?:\w+script|data):/i),Lf=fe(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),bc=fe(/^html$/i),If=fe(/^[a-z][.\w]*(-[.\w]+)+$/i);var aa=Object.freeze({__proto__:null,ARIA_ATTR:Mf,ATTR_WHITESPACE:Lf,CUSTOM_ELEMENT:If,DATA_ATTR:_f,DOCTYPE_NAME:bc,ERB_EXPR:Cf,IS_ALLOWED_URI:vc,IS_SCRIPT_OR_DATA:Pf,MUSTACHE_EXPR:Ef,TMPLIT_EXPR:Tf});const qt={element:1,text:3,progressingInstruction:7,comment:8,document:9},Rf=function(){return typeof window>"u"?null:window},Nf=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null;const s="data-tt-policy-suffix";n&&n.hasAttribute(s)&&(i=n.getAttribute(s));const r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},la=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function wc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Rf();const t=I=>wc(I);if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==qt.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e;const i=n,s=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:o,Node:a,Element:c,NodeFilter:u,NamedNodeMap:l=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:h,trustedTypes:v}=e,y=c.prototype,b=Ht(y,"cloneNode"),S=Ht(y,"remove"),x=Ht(y,"nextSibling"),$=Ht(y,"childNodes"),C=Ht(y,"parentNode");if(typeof o=="function"){const I=n.createElement("template");I.content&&I.content.ownerDocument&&(n=I.content.ownerDocument)}let T,M="";const{implementation:R,createNodeIterator:B,createDocumentFragment:J,getElementsByTagName:ge}=n,{importNode:Oe}=i;let X=la();t.isSupported=typeof yc=="function"&&typeof C=="function"&&R&&R.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Dt,ERB_EXPR:gt,TMPLIT_EXPR:Ge,DATA_ATTR:Mi,ARIA_ATTR:Pi,IS_SCRIPT_OR_DATA:Li,ATTR_WHITESPACE:wn,CUSTOM_ELEMENT:Ii}=aa;let{IS_ALLOWED_URI:kn}=aa,G=null;const Sn=F({},[...ia,...ss,...rs,...os,...sa]);let Q=null;const An=F({},[...ra,...as,...oa,...Bn]);let H=Object.seal(Rs(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Qe=null,Ot=null;const Be=Object.seal(Rs(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let xn=!0,A=!0,_=!1,N=!0,D=!1,q=!0,z=!1,oe=!1,Fe=!1,mt=!1,$n=!1,En=!1,jr=!0,Hr=!1;const Su="user-content-";let Ri=!0,Bt=!1,yt={},ke=null;const Ni=F({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let qr=null;const Vr=F({},["audio","video","img","source","image","track"]);let Di=null;const Gr=F({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cn="http://www.w3.org/1998/Math/MathML",Tn="http://www.w3.org/2000/svg",Me="http://www.w3.org/1999/xhtml";let vt=Me,Oi=!1,Bi=null;const Au=F({},[Cn,Tn,Me],ns);let _n=F({},["mi","mo","mn","ms","mtext"]),Mn=F({},["annotation-xml"]);const xu=F({},["title","style","font","a","script"]);let Ft=null;const $u=["application/xhtml+xml","text/html"],Eu="text/html";let Z=null,bt=null;const Cu=n.createElement("form"),Qr=function(w){return w instanceof RegExp||w instanceof Function},Fi=function(){let w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(bt&&bt===w)){if((!w||typeof w!="object")&&(w={}),w=$e(w),Ft=$u.indexOf(w.PARSER_MEDIA_TYPE)===-1?Eu:w.PARSER_MEDIA_TYPE,Z=Ft==="application/xhtml+xml"?ns:Gn,G=me(w,"ALLOWED_TAGS")?F({},w.ALLOWED_TAGS,Z):Sn,Q=me(w,"ALLOWED_ATTR")?F({},w.ALLOWED_ATTR,Z):An,Bi=me(w,"ALLOWED_NAMESPACES")?F({},w.ALLOWED_NAMESPACES,ns):Au,Di=me(w,"ADD_URI_SAFE_ATTR")?F($e(Gr),w.ADD_URI_SAFE_ATTR,Z):Gr,qr=me(w,"ADD_DATA_URI_TAGS")?F($e(Vr),w.ADD_DATA_URI_TAGS,Z):Vr,ke=me(w,"FORBID_CONTENTS")?F({},w.FORBID_CONTENTS,Z):Ni,Qe=me(w,"FORBID_TAGS")?F({},w.FORBID_TAGS,Z):$e({}),Ot=me(w,"FORBID_ATTR")?F({},w.FORBID_ATTR,Z):$e({}),yt=me(w,"USE_PROFILES")?w.USE_PROFILES:!1,xn=w.ALLOW_ARIA_ATTR!==!1,A=w.ALLOW_DATA_ATTR!==!1,_=w.ALLOW_UNKNOWN_PROTOCOLS||!1,N=w.ALLOW_SELF_CLOSE_IN_ATTR!==!1,D=w.SAFE_FOR_TEMPLATES||!1,q=w.SAFE_FOR_XML!==!1,z=w.WHOLE_DOCUMENT||!1,mt=w.RETURN_DOM||!1,$n=w.RETURN_DOM_FRAGMENT||!1,En=w.RETURN_TRUSTED_TYPE||!1,Fe=w.FORCE_BODY||!1,jr=w.SANITIZE_DOM!==!1,Hr=w.SANITIZE_NAMED_PROPS||!1,Ri=w.KEEP_CONTENT!==!1,Bt=w.IN_PLACE||!1,kn=w.ALLOWED_URI_REGEXP||vc,vt=w.NAMESPACE||Me,_n=w.MATHML_TEXT_INTEGRATION_POINTS||_n,Mn=w.HTML_INTEGRATION_POINTS||Mn,H=w.CUSTOM_ELEMENT_HANDLING||{},w.CUSTOM_ELEMENT_HANDLING&&Qr(w.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(H.tagNameCheck=w.CUSTOM_ELEMENT_HANDLING.tagNameCheck),w.CUSTOM_ELEMENT_HANDLING&&Qr(w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(H.attributeNameCheck=w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),w.CUSTOM_ELEMENT_HANDLING&&typeof w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(H.allowCustomizedBuiltInElements=w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),D&&(A=!1),$n&&(mt=!0),yt&&(G=F({},sa),Q=[],yt.html===!0&&(F(G,ia),F(Q,ra)),yt.svg===!0&&(F(G,ss),F(Q,as),F(Q,Bn)),yt.svgFilters===!0&&(F(G,rs),F(Q,as),F(Q,Bn)),yt.mathMl===!0&&(F(G,os),F(Q,oa),F(Q,Bn))),w.ADD_TAGS&&(typeof w.ADD_TAGS=="function"?Be.tagCheck=w.ADD_TAGS:(G===Sn&&(G=$e(G)),F(G,w.ADD_TAGS,Z))),w.ADD_ATTR&&(typeof w.ADD_ATTR=="function"?Be.attributeCheck=w.ADD_ATTR:(Q===An&&(Q=$e(Q)),F(Q,w.ADD_ATTR,Z))),w.ADD_URI_SAFE_ATTR&&F(Di,w.ADD_URI_SAFE_ATTR,Z),w.FORBID_CONTENTS&&(ke===Ni&&(ke=$e(ke)),F(ke,w.FORBID_CONTENTS,Z)),w.ADD_FORBID_CONTENTS&&(ke===Ni&&(ke=$e(ke)),F(ke,w.ADD_FORBID_CONTENTS,Z)),Ri&&(G["#text"]=!0),z&&F(G,["html","head","body"]),G.table&&(F(G,["tbody"]),delete Qe.tbody),w.TRUSTED_TYPES_POLICY){if(typeof w.TRUSTED_TYPES_POLICY.createHTML!="function")throw jt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof w.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw jt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');T=w.TRUSTED_TYPES_POLICY,M=T.createHTML("")}else T===void 0&&(T=Nf(v,s)),T!==null&&typeof M=="string"&&(M=T.createHTML(""));ue&&ue(w),bt=w}},Yr=F({},[...ss,...rs,...xf]),Xr=F({},[...os,...$f]),Tu=function(w){let E=C(w);(!E||!E.tagName)&&(E={namespaceURI:vt,tagName:"template"});const L=Gn(w.tagName),j=Gn(E.tagName);return Bi[w.namespaceURI]?w.namespaceURI===Tn?E.namespaceURI===Me?L==="svg":E.namespaceURI===Cn?L==="svg"&&(j==="annotation-xml"||_n[j]):!!Yr[L]:w.namespaceURI===Cn?E.namespaceURI===Me?L==="math":E.namespaceURI===Tn?L==="math"&&Mn[j]:!!Xr[L]:w.namespaceURI===Me?E.namespaceURI===Tn&&!Mn[j]||E.namespaceURI===Cn&&!_n[j]?!1:!Xr[L]&&(xu[L]||!Yr[L]):!!(Ft==="application/xhtml+xml"&&Bi[w.namespaceURI]):!1},Se=function(w){Kt(t.removed,{element:w});try{C(w).removeChild(w)}catch{S(w)}},Ye=function(w,E){try{Kt(t.removed,{attribute:E.getAttributeNode(w),from:E})}catch{Kt(t.removed,{attribute:null,from:E})}if(E.removeAttribute(w),w==="is")if(mt||$n)try{Se(E)}catch{}else try{E.setAttribute(w,"")}catch{}},Zr=function(w){let E=null,L=null;if(Fe)w="<remove></remove>"+w;else{const Y=is(w,/^[\r\n\t ]+/);L=Y&&Y[0]}Ft==="application/xhtml+xml"&&vt===Me&&(w='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+w+"</body></html>");const j=T?T.createHTML(w):w;if(vt===Me)try{E=new h().parseFromString(j,Ft)}catch{}if(!E||!E.documentElement){E=R.createDocument(vt,"template",null);try{E.documentElement.innerHTML=Oi?M:j}catch{}}const ne=E.body||E.documentElement;return w&&L&&ne.insertBefore(n.createTextNode(L),ne.childNodes[0]||null),vt===Me?ge.call(E,z?"html":"body")[0]:z?E.documentElement:ne},Jr=function(w){return B.call(w.ownerDocument||w,w,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},Ui=function(w){return w instanceof d&&(typeof w.nodeName!="string"||typeof w.textContent!="string"||typeof w.removeChild!="function"||!(w.attributes instanceof l)||typeof w.removeAttribute!="function"||typeof w.setAttribute!="function"||typeof w.namespaceURI!="string"||typeof w.insertBefore!="function"||typeof w.hasChildNodes!="function")},eo=function(w){return typeof a=="function"&&w instanceof a};function Pe(I,w,E){On(I,L=>{L.call(t,w,E,bt)})}const to=function(w){let E=null;if(Pe(X.beforeSanitizeElements,w,null),Ui(w))return Se(w),!0;const L=Z(w.nodeName);if(Pe(X.uponSanitizeElement,w,{tagName:L,allowedTags:G}),q&&w.hasChildNodes()&&!eo(w.firstElementChild)&&ae(/<[/\w!]/g,w.innerHTML)&&ae(/<[/\w!]/g,w.textContent)||w.nodeType===qt.progressingInstruction||q&&w.nodeType===qt.comment&&ae(/<[/\w]/g,w.data))return Se(w),!0;if(!(Be.tagCheck instanceof Function&&Be.tagCheck(L))&&(!G[L]||Qe[L])){if(!Qe[L]&&io(L)&&(H.tagNameCheck instanceof RegExp&&ae(H.tagNameCheck,L)||H.tagNameCheck instanceof Function&&H.tagNameCheck(L)))return!1;if(Ri&&!ke[L]){const j=C(w)||w.parentNode,ne=$(w)||w.childNodes;if(ne&&j){const Y=ne.length;for(let pe=Y-1;pe>=0;--pe){const Le=b(ne[pe],!0);Le.__removalCount=(w.__removalCount||0)+1,j.insertBefore(Le,x(w))}}}return Se(w),!0}return w instanceof c&&!Tu(w)||(L==="noscript"||L==="noembed"||L==="noframes")&&ae(/<\/no(script|embed|frames)/i,w.innerHTML)?(Se(w),!0):(D&&w.nodeType===qt.text&&(E=w.textContent,On([Dt,gt,Ge],j=>{E=zt(E,j," ")}),w.textContent!==E&&(Kt(t.removed,{element:w.cloneNode()}),w.textContent=E)),Pe(X.afterSanitizeElements,w,null),!1)},no=function(w,E,L){if(jr&&(E==="id"||E==="name")&&(L in n||L in Cu))return!1;if(!(A&&!Ot[E]&&ae(Mi,E))){if(!(xn&&ae(Pi,E))){if(!(Be.attributeCheck instanceof Function&&Be.attributeCheck(E,w))){if(!Q[E]||Ot[E]){if(!(io(w)&&(H.tagNameCheck instanceof RegExp&&ae(H.tagNameCheck,w)||H.tagNameCheck instanceof Function&&H.tagNameCheck(w))&&(H.attributeNameCheck instanceof RegExp&&ae(H.attributeNameCheck,E)||H.attributeNameCheck instanceof Function&&H.attributeNameCheck(E,w))||E==="is"&&H.allowCustomizedBuiltInElements&&(H.tagNameCheck instanceof RegExp&&ae(H.tagNameCheck,L)||H.tagNameCheck instanceof Function&&H.tagNameCheck(L))))return!1}else if(!Di[E]){if(!ae(kn,zt(L,wn,""))){if(!((E==="src"||E==="xlink:href"||E==="href")&&w!=="script"&&wf(L,"data:")===0&&qr[w])){if(!(_&&!ae(Li,zt(L,wn,"")))){if(L)return!1}}}}}}}return!0},io=function(w){return w!=="annotation-xml"&&is(w,Ii)},so=function(w){Pe(X.beforeSanitizeAttributes,w,null);const{attributes:E}=w;if(!E||Ui(w))return;const L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Q,forceKeepAttr:void 0};let j=E.length;for(;j--;){const ne=E[j],{name:Y,namespaceURI:pe,value:Le}=ne,wt=Z(Y),Wi=Le;let te=Y==="value"?Wi:kf(Wi);if(L.attrName=wt,L.attrValue=te,L.keepAttr=!0,L.forceKeepAttr=void 0,Pe(X.uponSanitizeAttribute,w,L),te=L.attrValue,Hr&&(wt==="id"||wt==="name")&&(Ye(Y,w),te=Su+te),q&&ae(/((--!?|])>)|<\/(style|title|textarea)/i,te)){Ye(Y,w);continue}if(wt==="attributename"&&is(te,"href")){Ye(Y,w);continue}if(L.forceKeepAttr)continue;if(!L.keepAttr){Ye(Y,w);continue}if(!N&&ae(/\/>/i,te)){Ye(Y,w);continue}D&&On([Dt,gt,Ge],oo=>{te=zt(te,oo," ")});const ro=Z(w.nodeName);if(!no(ro,wt,te)){Ye(Y,w);continue}if(T&&typeof v=="object"&&typeof v.getAttributeType=="function"&&!pe)switch(v.getAttributeType(ro,wt)){case"TrustedHTML":{te=T.createHTML(te);break}case"TrustedScriptURL":{te=T.createScriptURL(te);break}}if(te!==Wi)try{pe?w.setAttributeNS(pe,Y,te):w.setAttribute(Y,te),Ui(w)?Se(w):na(t.removed)}catch{Ye(Y,w)}}Pe(X.afterSanitizeAttributes,w,null)},_u=function I(w){let E=null;const L=Jr(w);for(Pe(X.beforeSanitizeShadowDOM,w,null);E=L.nextNode();)Pe(X.uponSanitizeShadowNode,E,null),to(E),so(E),E.content instanceof r&&I(E.content);Pe(X.afterSanitizeShadowDOM,w,null)};return t.sanitize=function(I){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},E=null,L=null,j=null,ne=null;if(Oi=!I,Oi&&(I="<!-->"),typeof I!="string"&&!eo(I))if(typeof I.toString=="function"){if(I=I.toString(),typeof I!="string")throw jt("dirty is not a string, aborting")}else throw jt("toString is not a function");if(!t.isSupported)return I;if(oe||Fi(w),t.removed=[],typeof I=="string"&&(Bt=!1),Bt){if(I.nodeName){const Le=Z(I.nodeName);if(!G[Le]||Qe[Le])throw jt("root node is forbidden and cannot be sanitized in-place")}}else if(I instanceof a)E=Zr("<!---->"),L=E.ownerDocument.importNode(I,!0),L.nodeType===qt.element&&L.nodeName==="BODY"||L.nodeName==="HTML"?E=L:E.appendChild(L);else{if(!mt&&!D&&!z&&I.indexOf("<")===-1)return T&&En?T.createHTML(I):I;if(E=Zr(I),!E)return mt?null:En?M:""}E&&Fe&&Se(E.firstChild);const Y=Jr(Bt?I:E);for(;j=Y.nextNode();)to(j),so(j),j.content instanceof r&&_u(j.content);if(Bt)return I;if(mt){if($n)for(ne=J.call(E.ownerDocument);E.firstChild;)ne.appendChild(E.firstChild);else ne=E;return(Q.shadowroot||Q.shadowrootmode)&&(ne=Oe.call(i,ne,!0)),ne}let pe=z?E.outerHTML:E.innerHTML;return z&&G["!doctype"]&&E.ownerDocument&&E.ownerDocument.doctype&&E.ownerDocument.doctype.name&&ae(bc,E.ownerDocument.doctype.name)&&(pe="<!DOCTYPE "+E.ownerDocument.doctype.name+`>
1767
- `+pe),D&&On([Dt,gt,Ge],Le=>{pe=zt(pe,Le," ")}),T&&En?T.createHTML(pe):pe},t.setConfig=function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Fi(I),oe=!0},t.clearConfig=function(){bt=null,oe=!1},t.isValidAttribute=function(I,w,E){bt||Fi({});const L=Z(I),j=Z(w);return no(L,j,E)},t.addHook=function(I,w){typeof w=="function"&&Kt(X[I],w)},t.removeHook=function(I,w){if(w!==void 0){const E=vf(X[I],w);return E===-1?void 0:bf(X[I],E,1)[0]}return na(X[I])},t.removeHooks=function(I){X[I]=[]},t.removeAllHooks=function(){X=la()},t}var Os=wc();function Er(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ht=Er();function kc(e){ht=e}var on={exec:()=>null};function W(e,t=""){let n=typeof e=="string"?e:e.source,i={replace:(s,r)=>{let o=typeof r=="string"?r:r.source;return o=o.replace(le.caret,"$1"),n=n.replace(s,o),i},getRegex:()=>new RegExp(n,t)};return i}var Df=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),le={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},Of=/^(?:[ \t]*(?:\n|$))+/,Bf=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ff=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,vn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Uf=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Cr=/(?:[*+-]|\d{1,9}[.)])/,Sc=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ac=W(Sc).replace(/bull/g,Cr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Wf=W(Sc).replace(/bull/g,Cr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Tr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Kf=/^[^\n]+/,_r=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,zf=W(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",_r).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),jf=W(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Cr).getRegex(),Ei="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Mr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Hf=W("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Mr).replace("tag",Ei).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),xc=W(Tr).replace("hr",vn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex(),qf=W(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",xc).getRegex(),Pr={blockquote:qf,code:Bf,def:zf,fences:Ff,heading:Uf,hr:vn,html:Hf,lheading:Ac,list:jf,newline:Of,paragraph:xc,table:on,text:Kf},ca=W("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",vn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex(),Vf={...Pr,lheading:Wf,table:ca,paragraph:W(Tr).replace("hr",vn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ca).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex()},Gf={...Pr,html:W(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Mr).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:on,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:W(Tr).replace("hr",vn).replace("heading",` *#{1,6} *[^
1768
- ]`).replace("lheading",Ac).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Qf=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Yf=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,$c=/^( {2,}|\\)\n(?!\s*$)/,Xf=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ci=/[\p{P}\p{S}]/u,Lr=/[\s\p{P}\p{S}]/u,Ec=/[^\s\p{P}\p{S}]/u,Zf=W(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Lr).getRegex(),Cc=/(?!~)[\p{P}\p{S}]/u,Jf=/(?!~)[\s\p{P}\p{S}]/u,eg=/(?:[^\s\p{P}\p{S}]|~)/u,tg=W(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Df?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Tc=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,ng=W(Tc,"u").replace(/punct/g,Ci).getRegex(),ig=W(Tc,"u").replace(/punct/g,Cc).getRegex(),_c="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",sg=W(_c,"gu").replace(/notPunctSpace/g,Ec).replace(/punctSpace/g,Lr).replace(/punct/g,Ci).getRegex(),rg=W(_c,"gu").replace(/notPunctSpace/g,eg).replace(/punctSpace/g,Jf).replace(/punct/g,Cc).getRegex(),og=W("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ec).replace(/punctSpace/g,Lr).replace(/punct/g,Ci).getRegex(),ag=W(/\\(punct)/,"gu").replace(/punct/g,Ci).getRegex(),lg=W(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),cg=W(Mr).replace("(?:-->|$)","-->").getRegex(),ug=W("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",cg).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),li=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,dg=W(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",li).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Mc=W(/^!?\[(label)\]\[(ref)\]/).replace("label",li).replace("ref",_r).getRegex(),Pc=W(/^!?\[(ref)\](?:\[\])?/).replace("ref",_r).getRegex(),pg=W("reflink|nolink(?!\\()","g").replace("reflink",Mc).replace("nolink",Pc).getRegex(),ua=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ir={_backpedal:on,anyPunctuation:ag,autolink:lg,blockSkip:tg,br:$c,code:Yf,del:on,emStrongLDelim:ng,emStrongRDelimAst:sg,emStrongRDelimUnd:og,escape:Qf,link:dg,nolink:Pc,punctuation:Zf,reflink:Mc,reflinkSearch:pg,tag:ug,text:Xf,url:on},hg={...Ir,link:W(/^!?\[(label)\]\((.*?)\)/).replace("label",li).getRegex(),reflink:W(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",li).getRegex()},Bs={...Ir,emStrongRDelimAst:rg,emStrongLDelim:ig,url:W(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ua).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:W(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",ua).getRegex()},fg={...Bs,br:W($c).replace("{2,}","*").getRegex(),text:W(Bs.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Fn={normal:Pr,gfm:Vf,pedantic:Gf},Vt={normal:Ir,gfm:Bs,breaks:fg,pedantic:hg},gg={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},da=e=>gg[e];function Re(e,t){if(t){if(le.escapeTest.test(e))return e.replace(le.escapeReplace,da)}else if(le.escapeTestNoEncode.test(e))return e.replace(le.escapeReplaceNoEncode,da);return e}function pa(e){try{e=encodeURI(e).replace(le.percentDecode,"%")}catch{return null}return e}function ha(e,t){var r;let n=e.replace(le.findPipe,(o,a,c)=>{let u=!1,l=a;for(;--l>=0&&c[l]==="\\";)u=!u;return u?"|":" |"}),i=n.split(le.splitPipe),s=0;if(i[0].trim()||i.shift(),i.length>0&&!((r=i.at(-1))!=null&&r.trim())&&i.pop(),t)if(i.length>t)i.splice(t);else for(;i.length<t;)i.push("");for(;s<i.length;s++)i[s]=i[s].trim().replace(le.slashPipe,"|");return i}function Gt(e,t,n){let i=e.length;if(i===0)return"";let s=0;for(;s<i&&e.charAt(i-s-1)===t;)s++;return e.slice(0,i-s)}function mg(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let i=0;i<e.length;i++)if(e[i]==="\\")i++;else if(e[i]===t[0])n++;else if(e[i]===t[1]&&(n--,n<0))return i;return n>0?-2:-1}function fa(e,t,n,i,s){let r=t.href,o=t.title||null,a=e[1].replace(s.other.outputLinkReplace,"$1");i.state.inLink=!0;let c={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:r,title:o,text:a,tokens:i.inlineTokens(a)};return i.state.inLink=!1,c}function yg(e,t,n){let i=e.match(n.other.indentCodeCompensation);if(i===null)return t;let s=i[1];return t.split(`
1933
+ `}const gc={CHILD:2},mc=e=>(...t)=>({_$litDirective$:e,values:t});let yc=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,n,i){this._$Ct=t,this._$AM=n,this._$Ci=i}_$AS(t,n){return this.update(t,n)}update(t,n){return this.render(...n)}};const{I:pf}=ed,Zo=e=>e,Jo=()=>document.createComment(""),Wt=(e,t,n)=>{var r;const i=e._$AA.parentNode,s=t===void 0?e._$AB:t._$AA;if(n===void 0){const o=i.insertBefore(Jo(),s),a=i.insertBefore(Jo(),s);n=new pf(o,a,e,e.options)}else{const o=n._$AB.nextSibling,a=n._$AM,c=a!==e;if(c){let u;(r=n._$AQ)==null||r.call(n,e),n._$AM=e,n._$AP!==void 0&&(u=e._$AU)!==a._$AU&&n._$AP(u)}if(o!==s||c){let u=n._$AA;for(;u!==o;){const l=Zo(u).nextSibling;Zo(i).insertBefore(u,s),u=l}}}return n},Je=(e,t,n=e)=>(e._$AI(t,n),e),hf={},ff=(e,t=hf)=>e._$AH=t,gf=e=>e._$AH,ts=e=>{e._$AR(),e._$AA.remove()};const ea=(e,t,n)=>{const i=new Map;for(let s=t;s<=n;s++)i.set(e[s],s);return i},mf=mc(class extends yc{constructor(e){if(super(e),e.type!==gc.CHILD)throw Error("repeat() can only be used in text expressions")}dt(e,t,n){let i;n===void 0?n=t:t!==void 0&&(i=t);const s=[],r=[];let o=0;for(const a of e)s[o]=i?i(a,o):o,r[o]=n(a,o),o++;return{values:r,keys:s}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,i]){const s=gf(e),{values:r,keys:o}=this.dt(t,n,i);if(!Array.isArray(s))return this.ut=o,r;const a=this.ut??(this.ut=[]),c=[];let u,l,d=0,h=s.length-1,v=0,f=r.length-1;for(;d<=h&&v<=f;)if(s[d]===null)d++;else if(s[h]===null)h--;else if(a[d]===o[v])c[v]=Je(s[d],r[v]),d++,v++;else if(a[h]===o[f])c[f]=Je(s[h],r[f]),h--,f--;else if(a[d]===o[f])c[f]=Je(s[d],r[f]),Wt(e,c[f+1],s[d]),d++,f--;else if(a[h]===o[v])c[v]=Je(s[h],r[v]),Wt(e,s[d],s[h]),h--,v++;else if(u===void 0&&(u=ea(o,v,f),l=ea(a,d,h)),u.has(a[d]))if(u.has(a[h])){const b=l.get(o[v]),k=b!==void 0?s[b]:null;if(k===null){const x=Wt(e,s[d]);Je(x,r[v]),c[v]=x}else c[v]=Je(k,r[v]),Wt(e,s[d],k),s[b]=null;v++}else ts(s[h]),h--;else ts(s[d]),d++;for(;v<=f;){const b=Wt(e,c[f+1]);Je(b,r[v]),c[v++]=b}for(;d<=h;){const b=s[d++];b!==null&&ts(b)}return this.ut=o,ff(e,c),He}});class Is extends yc{constructor(t){if(super(t),this.it=S,t.type!==gc.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===S||t==null)return this._t=void 0,this.it=t;if(t===He)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;const n=[t];return n.raw=n,this._t={_$litType$:this.constructor.resultType,strings:n,values:[]}}}Is.directiveName="unsafeHTML",Is.resultType=1;const ai=mc(Is);const{entries:vc,setPrototypeOf:ta,isFrozen:yf,getPrototypeOf:vf,getOwnPropertyDescriptor:bf}=Object;let{freeze:pe,seal:ge,create:Rs}=Object,{apply:Ns,construct:Ds}=typeof Reflect<"u"&&Reflect;pe||(pe=function(t){return t});ge||(ge=function(t){return t});Ns||(Ns=function(t,n){for(var i=arguments.length,s=new Array(i>2?i-2:0),r=2;r<i;r++)s[r-2]=arguments[r];return t.apply(n,s)});Ds||(Ds=function(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return new t(...i)});const On=he(Array.prototype.forEach),wf=he(Array.prototype.lastIndexOf),na=he(Array.prototype.pop),Kt=he(Array.prototype.push),kf=he(Array.prototype.splice),Gn=he(String.prototype.toLowerCase),ns=he(String.prototype.toString),is=he(String.prototype.match),zt=he(String.prototype.replace),Sf=he(String.prototype.indexOf),Af=he(String.prototype.trim),ye=he(Object.prototype.hasOwnProperty),le=he(RegExp.prototype.test),jt=xf(TypeError);function he(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];return Ns(e,t,i)}}function xf(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return Ds(e,n)}}function F(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Gn;ta&&ta(e,null);let i=t.length;for(;i--;){let s=t[i];if(typeof s=="string"){const r=n(s);r!==s&&(yf(t)||(t[i]=r),s=r)}e[s]=!0}return e}function $f(e){for(let t=0;t<e.length;t++)ye(e,t)||(e[t]=null);return e}function Ee(e){const t=Rs(null);for(const[n,i]of vc(e))ye(e,n)&&(Array.isArray(i)?t[n]=$f(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=Ee(i):t[n]=i);return t}function Ht(e,t){for(;e!==null;){const i=bf(e,t);if(i){if(i.get)return he(i.get);if(typeof i.value=="function")return he(i.value)}e=vf(e)}function n(){return null}return n}const ia=pe(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ss=pe(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),rs=pe(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Ef=pe(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),os=pe(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Tf=pe(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),sa=pe(["#text"]),ra=pe(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),as=pe(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),oa=pe(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Bn=pe(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Cf=ge(/\{\{[\w\W]*|[\w\W]*\}\}/gm),_f=ge(/<%[\w\W]*|[\w\W]*%>/gm),Mf=ge(/\$\{[\w\W]*/gm),Pf=ge(/^data-[\-\w.\u00B7-\uFFFF]+$/),Lf=ge(/^aria-[\-\w]+$/),bc=ge(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),If=ge(/^(?:\w+script|data):/i),Rf=ge(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),wc=ge(/^html$/i),Nf=ge(/^[a-z][.\w]*(-[.\w]+)+$/i);var aa=Object.freeze({__proto__:null,ARIA_ATTR:Lf,ATTR_WHITESPACE:Rf,CUSTOM_ELEMENT:Nf,DATA_ATTR:Pf,DOCTYPE_NAME:wc,ERB_EXPR:_f,IS_ALLOWED_URI:bc,IS_SCRIPT_OR_DATA:If,MUSTACHE_EXPR:Cf,TMPLIT_EXPR:Mf});const qt={element:1,text:3,progressingInstruction:7,comment:8,document:9},Df=function(){return typeof window>"u"?null:window},Of=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null;const s="data-tt-policy-suffix";n&&n.hasAttribute(s)&&(i=n.getAttribute(s));const r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},la=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function kc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Df();const t=I=>kc(I);if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==qt.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e;const i=n,s=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:o,Node:a,Element:c,NodeFilter:u,NamedNodeMap:l=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:h,trustedTypes:v}=e,f=c.prototype,b=Ht(f,"cloneNode"),k=Ht(f,"remove"),x=Ht(f,"nextSibling"),$=Ht(f,"childNodes"),T=Ht(f,"parentNode");if(typeof o=="function"){const I=n.createElement("template");I.content&&I.content.ownerDocument&&(n=I.content.ownerDocument)}let C,M="";const{implementation:R,createNodeIterator:B,createDocumentFragment:ee,getElementsByTagName:me}=n,{importNode:Be}=i;let Z=la();t.isSupported=typeof vc=="function"&&typeof T=="function"&&R&&R.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Dt,ERB_EXPR:mt,TMPLIT_EXPR:Qe,DATA_ATTR:Mi,ARIA_ATTR:Pi,IS_SCRIPT_OR_DATA:Li,ATTR_WHITESPACE:wn,CUSTOM_ELEMENT:Ii}=aa;let{IS_ALLOWED_URI:kn}=aa,G=null;const Sn=F({},[...ia,...ss,...rs,...os,...sa]);let Q=null;const An=F({},[...ra,...as,...oa,...Bn]);let H=Object.seal(Rs(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ye=null,Ot=null;const Fe=Object.seal(Rs(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let xn=!0,A=!0,_=!1,N=!0,D=!1,q=!0,z=!1,ae=!1,Ue=!1,yt=!1,$n=!1,En=!1,jr=!0,Hr=!1;const Au="user-content-";let Ri=!0,Bt=!1,vt={},Se=null;const Ni=F({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let qr=null;const Vr=F({},["audio","video","img","source","image","track"]);let Di=null;const Gr=F({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Tn="http://www.w3.org/1998/Math/MathML",Cn="http://www.w3.org/2000/svg",Pe="http://www.w3.org/1999/xhtml";let bt=Pe,Oi=!1,Bi=null;const xu=F({},[Tn,Cn,Pe],ns);let _n=F({},["mi","mo","mn","ms","mtext"]),Mn=F({},["annotation-xml"]);const $u=F({},["title","style","font","a","script"]);let Ft=null;const Eu=["application/xhtml+xml","text/html"],Tu="text/html";let J=null,wt=null;const Cu=n.createElement("form"),Qr=function(w){return w instanceof RegExp||w instanceof Function},Fi=function(){let w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(wt&&wt===w)){if((!w||typeof w!="object")&&(w={}),w=Ee(w),Ft=Eu.indexOf(w.PARSER_MEDIA_TYPE)===-1?Tu:w.PARSER_MEDIA_TYPE,J=Ft==="application/xhtml+xml"?ns:Gn,G=ye(w,"ALLOWED_TAGS")?F({},w.ALLOWED_TAGS,J):Sn,Q=ye(w,"ALLOWED_ATTR")?F({},w.ALLOWED_ATTR,J):An,Bi=ye(w,"ALLOWED_NAMESPACES")?F({},w.ALLOWED_NAMESPACES,ns):xu,Di=ye(w,"ADD_URI_SAFE_ATTR")?F(Ee(Gr),w.ADD_URI_SAFE_ATTR,J):Gr,qr=ye(w,"ADD_DATA_URI_TAGS")?F(Ee(Vr),w.ADD_DATA_URI_TAGS,J):Vr,Se=ye(w,"FORBID_CONTENTS")?F({},w.FORBID_CONTENTS,J):Ni,Ye=ye(w,"FORBID_TAGS")?F({},w.FORBID_TAGS,J):Ee({}),Ot=ye(w,"FORBID_ATTR")?F({},w.FORBID_ATTR,J):Ee({}),vt=ye(w,"USE_PROFILES")?w.USE_PROFILES:!1,xn=w.ALLOW_ARIA_ATTR!==!1,A=w.ALLOW_DATA_ATTR!==!1,_=w.ALLOW_UNKNOWN_PROTOCOLS||!1,N=w.ALLOW_SELF_CLOSE_IN_ATTR!==!1,D=w.SAFE_FOR_TEMPLATES||!1,q=w.SAFE_FOR_XML!==!1,z=w.WHOLE_DOCUMENT||!1,yt=w.RETURN_DOM||!1,$n=w.RETURN_DOM_FRAGMENT||!1,En=w.RETURN_TRUSTED_TYPE||!1,Ue=w.FORCE_BODY||!1,jr=w.SANITIZE_DOM!==!1,Hr=w.SANITIZE_NAMED_PROPS||!1,Ri=w.KEEP_CONTENT!==!1,Bt=w.IN_PLACE||!1,kn=w.ALLOWED_URI_REGEXP||bc,bt=w.NAMESPACE||Pe,_n=w.MATHML_TEXT_INTEGRATION_POINTS||_n,Mn=w.HTML_INTEGRATION_POINTS||Mn,H=w.CUSTOM_ELEMENT_HANDLING||{},w.CUSTOM_ELEMENT_HANDLING&&Qr(w.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(H.tagNameCheck=w.CUSTOM_ELEMENT_HANDLING.tagNameCheck),w.CUSTOM_ELEMENT_HANDLING&&Qr(w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(H.attributeNameCheck=w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),w.CUSTOM_ELEMENT_HANDLING&&typeof w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(H.allowCustomizedBuiltInElements=w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),D&&(A=!1),$n&&(yt=!0),vt&&(G=F({},sa),Q=[],vt.html===!0&&(F(G,ia),F(Q,ra)),vt.svg===!0&&(F(G,ss),F(Q,as),F(Q,Bn)),vt.svgFilters===!0&&(F(G,rs),F(Q,as),F(Q,Bn)),vt.mathMl===!0&&(F(G,os),F(Q,oa),F(Q,Bn))),w.ADD_TAGS&&(typeof w.ADD_TAGS=="function"?Fe.tagCheck=w.ADD_TAGS:(G===Sn&&(G=Ee(G)),F(G,w.ADD_TAGS,J))),w.ADD_ATTR&&(typeof w.ADD_ATTR=="function"?Fe.attributeCheck=w.ADD_ATTR:(Q===An&&(Q=Ee(Q)),F(Q,w.ADD_ATTR,J))),w.ADD_URI_SAFE_ATTR&&F(Di,w.ADD_URI_SAFE_ATTR,J),w.FORBID_CONTENTS&&(Se===Ni&&(Se=Ee(Se)),F(Se,w.FORBID_CONTENTS,J)),w.ADD_FORBID_CONTENTS&&(Se===Ni&&(Se=Ee(Se)),F(Se,w.ADD_FORBID_CONTENTS,J)),Ri&&(G["#text"]=!0),z&&F(G,["html","head","body"]),G.table&&(F(G,["tbody"]),delete Ye.tbody),w.TRUSTED_TYPES_POLICY){if(typeof w.TRUSTED_TYPES_POLICY.createHTML!="function")throw jt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof w.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw jt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');C=w.TRUSTED_TYPES_POLICY,M=C.createHTML("")}else C===void 0&&(C=Of(v,s)),C!==null&&typeof M=="string"&&(M=C.createHTML(""));pe&&pe(w),wt=w}},Yr=F({},[...ss,...rs,...Ef]),Xr=F({},[...os,...Tf]),_u=function(w){let E=T(w);(!E||!E.tagName)&&(E={namespaceURI:bt,tagName:"template"});const L=Gn(w.tagName),j=Gn(E.tagName);return Bi[w.namespaceURI]?w.namespaceURI===Cn?E.namespaceURI===Pe?L==="svg":E.namespaceURI===Tn?L==="svg"&&(j==="annotation-xml"||_n[j]):!!Yr[L]:w.namespaceURI===Tn?E.namespaceURI===Pe?L==="math":E.namespaceURI===Cn?L==="math"&&Mn[j]:!!Xr[L]:w.namespaceURI===Pe?E.namespaceURI===Cn&&!Mn[j]||E.namespaceURI===Tn&&!_n[j]?!1:!Xr[L]&&($u[L]||!Yr[L]):!!(Ft==="application/xhtml+xml"&&Bi[w.namespaceURI]):!1},Ae=function(w){Kt(t.removed,{element:w});try{T(w).removeChild(w)}catch{k(w)}},Xe=function(w,E){try{Kt(t.removed,{attribute:E.getAttributeNode(w),from:E})}catch{Kt(t.removed,{attribute:null,from:E})}if(E.removeAttribute(w),w==="is")if(yt||$n)try{Ae(E)}catch{}else try{E.setAttribute(w,"")}catch{}},Zr=function(w){let E=null,L=null;if(Ue)w="<remove></remove>"+w;else{const Y=is(w,/^[\r\n\t ]+/);L=Y&&Y[0]}Ft==="application/xhtml+xml"&&bt===Pe&&(w='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+w+"</body></html>");const j=C?C.createHTML(w):w;if(bt===Pe)try{E=new h().parseFromString(j,Ft)}catch{}if(!E||!E.documentElement){E=R.createDocument(bt,"template",null);try{E.documentElement.innerHTML=Oi?M:j}catch{}}const ie=E.body||E.documentElement;return w&&L&&ie.insertBefore(n.createTextNode(L),ie.childNodes[0]||null),bt===Pe?me.call(E,z?"html":"body")[0]:z?E.documentElement:ie},Jr=function(w){return B.call(w.ownerDocument||w,w,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},Ui=function(w){return w instanceof d&&(typeof w.nodeName!="string"||typeof w.textContent!="string"||typeof w.removeChild!="function"||!(w.attributes instanceof l)||typeof w.removeAttribute!="function"||typeof w.setAttribute!="function"||typeof w.namespaceURI!="string"||typeof w.insertBefore!="function"||typeof w.hasChildNodes!="function")},eo=function(w){return typeof a=="function"&&w instanceof a};function Le(I,w,E){On(I,L=>{L.call(t,w,E,wt)})}const to=function(w){let E=null;if(Le(Z.beforeSanitizeElements,w,null),Ui(w))return Ae(w),!0;const L=J(w.nodeName);if(Le(Z.uponSanitizeElement,w,{tagName:L,allowedTags:G}),q&&w.hasChildNodes()&&!eo(w.firstElementChild)&&le(/<[/\w!]/g,w.innerHTML)&&le(/<[/\w!]/g,w.textContent)||w.nodeType===qt.progressingInstruction||q&&w.nodeType===qt.comment&&le(/<[/\w]/g,w.data))return Ae(w),!0;if(!(Fe.tagCheck instanceof Function&&Fe.tagCheck(L))&&(!G[L]||Ye[L])){if(!Ye[L]&&io(L)&&(H.tagNameCheck instanceof RegExp&&le(H.tagNameCheck,L)||H.tagNameCheck instanceof Function&&H.tagNameCheck(L)))return!1;if(Ri&&!Se[L]){const j=T(w)||w.parentNode,ie=$(w)||w.childNodes;if(ie&&j){const Y=ie.length;for(let fe=Y-1;fe>=0;--fe){const Ie=b(ie[fe],!0);Ie.__removalCount=(w.__removalCount||0)+1,j.insertBefore(Ie,x(w))}}}return Ae(w),!0}return w instanceof c&&!_u(w)||(L==="noscript"||L==="noembed"||L==="noframes")&&le(/<\/no(script|embed|frames)/i,w.innerHTML)?(Ae(w),!0):(D&&w.nodeType===qt.text&&(E=w.textContent,On([Dt,mt,Qe],j=>{E=zt(E,j," ")}),w.textContent!==E&&(Kt(t.removed,{element:w.cloneNode()}),w.textContent=E)),Le(Z.afterSanitizeElements,w,null),!1)},no=function(w,E,L){if(jr&&(E==="id"||E==="name")&&(L in n||L in Cu))return!1;if(!(A&&!Ot[E]&&le(Mi,E))){if(!(xn&&le(Pi,E))){if(!(Fe.attributeCheck instanceof Function&&Fe.attributeCheck(E,w))){if(!Q[E]||Ot[E]){if(!(io(w)&&(H.tagNameCheck instanceof RegExp&&le(H.tagNameCheck,w)||H.tagNameCheck instanceof Function&&H.tagNameCheck(w))&&(H.attributeNameCheck instanceof RegExp&&le(H.attributeNameCheck,E)||H.attributeNameCheck instanceof Function&&H.attributeNameCheck(E,w))||E==="is"&&H.allowCustomizedBuiltInElements&&(H.tagNameCheck instanceof RegExp&&le(H.tagNameCheck,L)||H.tagNameCheck instanceof Function&&H.tagNameCheck(L))))return!1}else if(!Di[E]){if(!le(kn,zt(L,wn,""))){if(!((E==="src"||E==="xlink:href"||E==="href")&&w!=="script"&&Sf(L,"data:")===0&&qr[w])){if(!(_&&!le(Li,zt(L,wn,"")))){if(L)return!1}}}}}}}return!0},io=function(w){return w!=="annotation-xml"&&is(w,Ii)},so=function(w){Le(Z.beforeSanitizeAttributes,w,null);const{attributes:E}=w;if(!E||Ui(w))return;const L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Q,forceKeepAttr:void 0};let j=E.length;for(;j--;){const ie=E[j],{name:Y,namespaceURI:fe,value:Ie}=ie,kt=J(Y),Wi=Ie;let ne=Y==="value"?Wi:Af(Wi);if(L.attrName=kt,L.attrValue=ne,L.keepAttr=!0,L.forceKeepAttr=void 0,Le(Z.uponSanitizeAttribute,w,L),ne=L.attrValue,Hr&&(kt==="id"||kt==="name")&&(Xe(Y,w),ne=Au+ne),q&&le(/((--!?|])>)|<\/(style|title|textarea)/i,ne)){Xe(Y,w);continue}if(kt==="attributename"&&is(ne,"href")){Xe(Y,w);continue}if(L.forceKeepAttr)continue;if(!L.keepAttr){Xe(Y,w);continue}if(!N&&le(/\/>/i,ne)){Xe(Y,w);continue}D&&On([Dt,mt,Qe],oo=>{ne=zt(ne,oo," ")});const ro=J(w.nodeName);if(!no(ro,kt,ne)){Xe(Y,w);continue}if(C&&typeof v=="object"&&typeof v.getAttributeType=="function"&&!fe)switch(v.getAttributeType(ro,kt)){case"TrustedHTML":{ne=C.createHTML(ne);break}case"TrustedScriptURL":{ne=C.createScriptURL(ne);break}}if(ne!==Wi)try{fe?w.setAttributeNS(fe,Y,ne):w.setAttribute(Y,ne),Ui(w)?Ae(w):na(t.removed)}catch{Xe(Y,w)}}Le(Z.afterSanitizeAttributes,w,null)},Mu=function I(w){let E=null;const L=Jr(w);for(Le(Z.beforeSanitizeShadowDOM,w,null);E=L.nextNode();)Le(Z.uponSanitizeShadowNode,E,null),to(E),so(E),E.content instanceof r&&I(E.content);Le(Z.afterSanitizeShadowDOM,w,null)};return t.sanitize=function(I){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},E=null,L=null,j=null,ie=null;if(Oi=!I,Oi&&(I="<!-->"),typeof I!="string"&&!eo(I))if(typeof I.toString=="function"){if(I=I.toString(),typeof I!="string")throw jt("dirty is not a string, aborting")}else throw jt("toString is not a function");if(!t.isSupported)return I;if(ae||Fi(w),t.removed=[],typeof I=="string"&&(Bt=!1),Bt){if(I.nodeName){const Ie=J(I.nodeName);if(!G[Ie]||Ye[Ie])throw jt("root node is forbidden and cannot be sanitized in-place")}}else if(I instanceof a)E=Zr("<!---->"),L=E.ownerDocument.importNode(I,!0),L.nodeType===qt.element&&L.nodeName==="BODY"||L.nodeName==="HTML"?E=L:E.appendChild(L);else{if(!yt&&!D&&!z&&I.indexOf("<")===-1)return C&&En?C.createHTML(I):I;if(E=Zr(I),!E)return yt?null:En?M:""}E&&Ue&&Ae(E.firstChild);const Y=Jr(Bt?I:E);for(;j=Y.nextNode();)to(j),so(j),j.content instanceof r&&Mu(j.content);if(Bt)return I;if(yt){if($n)for(ie=ee.call(E.ownerDocument);E.firstChild;)ie.appendChild(E.firstChild);else ie=E;return(Q.shadowroot||Q.shadowrootmode)&&(ie=Be.call(i,ie,!0)),ie}let fe=z?E.outerHTML:E.innerHTML;return z&&G["!doctype"]&&E.ownerDocument&&E.ownerDocument.doctype&&E.ownerDocument.doctype.name&&le(wc,E.ownerDocument.doctype.name)&&(fe="<!DOCTYPE "+E.ownerDocument.doctype.name+`>
1934
+ `+fe),D&&On([Dt,mt,Qe],Ie=>{fe=zt(fe,Ie," ")}),C&&En?C.createHTML(fe):fe},t.setConfig=function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Fi(I),ae=!0},t.clearConfig=function(){wt=null,ae=!1},t.isValidAttribute=function(I,w,E){wt||Fi({});const L=J(I),j=J(w);return no(L,j,E)},t.addHook=function(I,w){typeof w=="function"&&Kt(Z[I],w)},t.removeHook=function(I,w){if(w!==void 0){const E=wf(Z[I],w);return E===-1?void 0:kf(Z[I],E,1)[0]}return na(Z[I])},t.removeHooks=function(I){Z[I]=[]},t.removeAllHooks=function(){Z=la()},t}var Os=kc();function Er(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ft=Er();function Sc(e){ft=e}var on={exec:()=>null};function W(e,t=""){let n=typeof e=="string"?e:e.source,i={replace:(s,r)=>{let o=typeof r=="string"?r:r.source;return o=o.replace(ue.caret,"$1"),n=n.replace(s,o),i},getRegex:()=>new RegExp(n,t)};return i}var Bf=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),ue={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},Ff=/^(?:[ \t]*(?:\n|$))+/,Uf=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Wf=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,vn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Kf=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Tr=/(?:[*+-]|\d{1,9}[.)])/,Ac=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,xc=W(Ac).replace(/bull/g,Tr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),zf=W(Ac).replace(/bull/g,Tr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Cr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,jf=/^[^\n]+/,_r=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Hf=W(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",_r).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),qf=W(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Tr).getRegex(),Ei="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Mr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Vf=W("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Mr).replace("tag",Ei).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),$c=W(Cr).replace("hr",vn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex(),Gf=W(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",$c).getRegex(),Pr={blockquote:Gf,code:Uf,def:Hf,fences:Wf,heading:Kf,hr:vn,html:Vf,lheading:xc,list:qf,newline:Ff,paragraph:$c,table:on,text:jf},ca=W("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",vn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex(),Qf={...Pr,lheading:zf,table:ca,paragraph:W(Cr).replace("hr",vn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ca).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ei).getRegex()},Yf={...Pr,html:W(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Mr).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:on,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:W(Cr).replace("hr",vn).replace("heading",` *#{1,6} *[^
1935
+ ]`).replace("lheading",xc).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Xf=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Zf=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ec=/^( {2,}|\\)\n(?!\s*$)/,Jf=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ti=/[\p{P}\p{S}]/u,Lr=/[\s\p{P}\p{S}]/u,Tc=/[^\s\p{P}\p{S}]/u,eg=W(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Lr).getRegex(),Cc=/(?!~)[\p{P}\p{S}]/u,tg=/(?!~)[\s\p{P}\p{S}]/u,ng=/(?:[^\s\p{P}\p{S}]|~)/u,ig=W(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Bf?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),_c=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,sg=W(_c,"u").replace(/punct/g,Ti).getRegex(),rg=W(_c,"u").replace(/punct/g,Cc).getRegex(),Mc="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",og=W(Mc,"gu").replace(/notPunctSpace/g,Tc).replace(/punctSpace/g,Lr).replace(/punct/g,Ti).getRegex(),ag=W(Mc,"gu").replace(/notPunctSpace/g,ng).replace(/punctSpace/g,tg).replace(/punct/g,Cc).getRegex(),lg=W("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Tc).replace(/punctSpace/g,Lr).replace(/punct/g,Ti).getRegex(),cg=W(/\\(punct)/,"gu").replace(/punct/g,Ti).getRegex(),ug=W(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),dg=W(Mr).replace("(?:-->|$)","-->").getRegex(),pg=W("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",dg).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),li=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,hg=W(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",li).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Pc=W(/^!?\[(label)\]\[(ref)\]/).replace("label",li).replace("ref",_r).getRegex(),Lc=W(/^!?\[(ref)\](?:\[\])?/).replace("ref",_r).getRegex(),fg=W("reflink|nolink(?!\\()","g").replace("reflink",Pc).replace("nolink",Lc).getRegex(),ua=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ir={_backpedal:on,anyPunctuation:cg,autolink:ug,blockSkip:ig,br:Ec,code:Zf,del:on,emStrongLDelim:sg,emStrongRDelimAst:og,emStrongRDelimUnd:lg,escape:Xf,link:hg,nolink:Lc,punctuation:eg,reflink:Pc,reflinkSearch:fg,tag:pg,text:Jf,url:on},gg={...Ir,link:W(/^!?\[(label)\]\((.*?)\)/).replace("label",li).getRegex(),reflink:W(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",li).getRegex()},Bs={...Ir,emStrongRDelimAst:ag,emStrongLDelim:rg,url:W(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ua).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:W(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",ua).getRegex()},mg={...Bs,br:W(Ec).replace("{2,}","*").getRegex(),text:W(Bs.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Fn={normal:Pr,gfm:Qf,pedantic:Yf},Vt={normal:Ir,gfm:Bs,breaks:mg,pedantic:gg},yg={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},da=e=>yg[e];function Ne(e,t){if(t){if(ue.escapeTest.test(e))return e.replace(ue.escapeReplace,da)}else if(ue.escapeTestNoEncode.test(e))return e.replace(ue.escapeReplaceNoEncode,da);return e}function pa(e){try{e=encodeURI(e).replace(ue.percentDecode,"%")}catch{return null}return e}function ha(e,t){var r;let n=e.replace(ue.findPipe,(o,a,c)=>{let u=!1,l=a;for(;--l>=0&&c[l]==="\\";)u=!u;return u?"|":" |"}),i=n.split(ue.splitPipe),s=0;if(i[0].trim()||i.shift(),i.length>0&&!((r=i.at(-1))!=null&&r.trim())&&i.pop(),t)if(i.length>t)i.splice(t);else for(;i.length<t;)i.push("");for(;s<i.length;s++)i[s]=i[s].trim().replace(ue.slashPipe,"|");return i}function Gt(e,t,n){let i=e.length;if(i===0)return"";let s=0;for(;s<i&&e.charAt(i-s-1)===t;)s++;return e.slice(0,i-s)}function vg(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let i=0;i<e.length;i++)if(e[i]==="\\")i++;else if(e[i]===t[0])n++;else if(e[i]===t[1]&&(n--,n<0))return i;return n>0?-2:-1}function fa(e,t,n,i,s){let r=t.href,o=t.title||null,a=e[1].replace(s.other.outputLinkReplace,"$1");i.state.inLink=!0;let c={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:r,title:o,text:a,tokens:i.inlineTokens(a)};return i.state.inLink=!1,c}function bg(e,t,n){let i=e.match(n.other.indentCodeCompensation);if(i===null)return t;let s=i[1];return t.split(`
1769
1936
  `).map(r=>{let o=r.match(n.other.beginningSpace);if(o===null)return r;let[a]=o;return a.length>=s.length?r.slice(s.length):r}).join(`
1770
- `)}var ci=class{constructor(e){U(this,"options");U(this,"rules");U(this,"lexer");this.options=e||ht}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Gt(n,`
1771
- `)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=yg(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:i}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let i=Gt(n,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(n=i.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Gt(t[0],`
1937
+ `)}var ci=class{constructor(e){U(this,"options");U(this,"rules");U(this,"lexer");this.options=e||ft}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Gt(n,`
1938
+ `)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=bg(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:i}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let i=Gt(n,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(n=i.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Gt(t[0],`
1772
1939
  `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Gt(t[0],`
1773
1940
  `).split(`
1774
1941
  `),i="",s="",r=[];for(;n.length>0;){let o=!1,a=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))a.push(n[c]),o=!0;else if(!o)a.push(n[c]);else break;n=n.slice(c);let u=a.join(`
1775
1942
  `),l=u.replace(this.rules.other.blockquoteSetextReplace,`
1776
1943
  $1`).replace(this.rules.other.blockquoteSetextReplace2,"");i=i?`${i}
1777
1944
  ${u}`:u,s=s?`${s}
1778
- ${l}`:l;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,r,!0),this.lexer.state.top=d,n.length===0)break;let h=r.at(-1);if((h==null?void 0:h.type)==="code")break;if((h==null?void 0:h.type)==="blockquote"){let v=h,y=v.raw+`
1945
+ ${l}`:l;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,r,!0),this.lexer.state.top=d,n.length===0)break;let h=r.at(-1);if((h==null?void 0:h.type)==="code")break;if((h==null?void 0:h.type)==="blockquote"){let v=h,f=v.raw+`
1779
1946
  `+n.join(`
1780
- `),b=this.blockquote(y);r[r.length-1]=b,i=i.substring(0,i.length-v.raw.length)+b.raw,s=s.substring(0,s.length-v.text.length)+b.text;break}else if((h==null?void 0:h.type)==="list"){let v=h,y=v.raw+`
1947
+ `),b=this.blockquote(f);r[r.length-1]=b,i=i.substring(0,i.length-v.raw.length)+b.raw,s=s.substring(0,s.length-v.text.length)+b.text;break}else if((h==null?void 0:h.type)==="list"){let v=h,f=v.raw+`
1781
1948
  `+n.join(`
1782
- `),b=this.list(y);r[r.length-1]=b,i=i.substring(0,i.length-h.raw.length)+b.raw,s=s.substring(0,s.length-v.raw.length)+b.raw,n=y.substring(r.at(-1).raw.length).split(`
1949
+ `),b=this.list(f);r[r.length-1]=b,i=i.substring(0,i.length-h.raw.length)+b.raw,s=s.substring(0,s.length-v.raw.length)+b.raw,n=f.substring(r.at(-1).raw.length).split(`
1783
1950
  `);continue}}return{type:"blockquote",raw:i,tokens:r,text:s}}}list(e){var n,i;let t=this.rules.block.list.exec(e);if(t){let s=t[1].trim(),r=s.length>1,o={type:"list",raw:"",ordered:r,start:r?+s.slice(0,-1):"",loose:!1,items:[]};s=r?`\\d{1,9}\\${s.slice(-1)}`:`\\${s}`,this.options.pedantic&&(s=r?s:"[*+-]");let a=this.rules.other.listItemRegex(s),c=!1;for(;e;){let l=!1,d="",h="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let v=t[2].split(`
1784
- `,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),y=e.split(`
1785
- `,1)[0],b=!v.trim(),S=0;if(this.options.pedantic?(S=2,h=v.trimStart()):b?S=t[1].length+1:(S=t[2].search(this.rules.other.nonSpaceChar),S=S>4?1:S,h=v.slice(S),S+=t[1].length),b&&this.rules.other.blankLine.test(y)&&(d+=y+`
1786
- `,e=e.substring(y.length+1),l=!0),!l){let x=this.rules.other.nextBulletRegex(S),$=this.rules.other.hrRegex(S),C=this.rules.other.fencesBeginRegex(S),T=this.rules.other.headingBeginRegex(S),M=this.rules.other.htmlBeginRegex(S);for(;e;){let R=e.split(`
1787
- `,1)[0],B;if(y=R,this.options.pedantic?(y=y.replace(this.rules.other.listReplaceNesting," "),B=y):B=y.replace(this.rules.other.tabCharGlobal," "),C.test(y)||T.test(y)||M.test(y)||x.test(y)||$.test(y))break;if(B.search(this.rules.other.nonSpaceChar)>=S||!y.trim())h+=`
1788
- `+B.slice(S);else{if(b||v.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||C.test(v)||T.test(v)||$.test(v))break;h+=`
1789
- `+y}!b&&!y.trim()&&(b=!0),d+=R+`
1790
- `,e=e.substring(R.length+1),v=B.slice(S)}}o.loose||(c?o.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(c=!0)),o.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]}),o.raw+=d}let u=o.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let l of o.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,""),((n=l.tokens[0])==null?void 0:n.type)==="text"||((i=l.tokens[0])==null?void 0:i.type)==="paragraph"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,o.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}if(!o.loose){let d=l.tokens.filter(v=>v.type==="space"),h=d.length>0&&d.some(v=>this.rules.other.anyLine.test(v.raw));o.loose=h}}if(o.loose)for(let l of o.items){l.loose=!0;for(let d of l.tokens)d.type==="text"&&(d.type="paragraph")}return o}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),i=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:i,title:s}}}table(e){var o;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=ha(t[1]),i=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=(o=t[3])!=null&&o.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
1951
+ `,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),f=e.split(`
1952
+ `,1)[0],b=!v.trim(),k=0;if(this.options.pedantic?(k=2,h=v.trimStart()):b?k=t[1].length+1:(k=t[2].search(this.rules.other.nonSpaceChar),k=k>4?1:k,h=v.slice(k),k+=t[1].length),b&&this.rules.other.blankLine.test(f)&&(d+=f+`
1953
+ `,e=e.substring(f.length+1),l=!0),!l){let x=this.rules.other.nextBulletRegex(k),$=this.rules.other.hrRegex(k),T=this.rules.other.fencesBeginRegex(k),C=this.rules.other.headingBeginRegex(k),M=this.rules.other.htmlBeginRegex(k);for(;e;){let R=e.split(`
1954
+ `,1)[0],B;if(f=R,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),B=f):B=f.replace(this.rules.other.tabCharGlobal," "),T.test(f)||C.test(f)||M.test(f)||x.test(f)||$.test(f))break;if(B.search(this.rules.other.nonSpaceChar)>=k||!f.trim())h+=`
1955
+ `+B.slice(k);else{if(b||v.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(v)||C.test(v)||$.test(v))break;h+=`
1956
+ `+f}!b&&!f.trim()&&(b=!0),d+=R+`
1957
+ `,e=e.substring(R.length+1),v=B.slice(k)}}o.loose||(c?o.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(c=!0)),o.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]}),o.raw+=d}let u=o.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let l of o.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,""),((n=l.tokens[0])==null?void 0:n.type)==="text"||((i=l.tokens[0])==null?void 0:i.type)==="paragraph"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let h={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=h.checked,o.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}if(!o.loose){let d=l.tokens.filter(v=>v.type==="space"),h=d.length>0&&d.some(v=>this.rules.other.anyLine.test(v.raw));o.loose=h}}if(o.loose)for(let l of o.items){l.loose=!0;for(let d of l.tokens)d.type==="text"&&(d.type="paragraph")}return o}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),i=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:i,title:s}}}table(e){var o;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=ha(t[1]),i=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=(o=t[3])!=null&&o.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
1791
1958
  `):[],r={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let a of i)this.rules.other.tableAlignRight.test(a)?r.align.push("right"):this.rules.other.tableAlignCenter.test(a)?r.align.push("center"):this.rules.other.tableAlignLeft.test(a)?r.align.push("left"):r.align.push(null);for(let a=0;a<n.length;a++)r.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:r.align[a]});for(let a of s)r.rows.push(ha(a,r.header.length).map((c,u)=>({text:c,tokens:this.lexer.inline(c),header:!1,align:r.align[u]})));return r}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
1792
- `?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let r=Gt(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{let r=mg(t[2],"()");if(r===-2)return;if(r>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let i=t[2],s="";if(this.options.pedantic){let r=this.rules.other.pedanticHrefTitle.exec(i);r&&(i=r[1],s=r[3])}else s=t[3]?t[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i=i.slice(1):i=i.slice(1,-1)),fa(t,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:s&&s.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=t[i.toLowerCase()];if(!s){let r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return fa(n,s,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!(!i||i[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(i[1]||i[2])||!n||this.rules.inline.punctuation.exec(n))){let s=[...i[0]].length-1,r,o,a=s,c=0,u=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+s);(i=u.exec(t))!=null;){if(r=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!r)continue;if(o=[...r].length,i[3]||i[4]){a+=o;continue}else if((i[5]||i[6])&&s%3&&!((s+o)%3)){c+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a+c);let l=[...i[0]][0].length,d=e.slice(0,s+i.index+l+o);if(Math.min(s,o)%2){let v=d.slice(1,-1);return{type:"em",raw:d,text:v,tokens:this.lexer.inlineTokens(v)}}let h=d.slice(2,-2);return{type:"strong",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(n),s=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&s&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,i;return t[2]==="@"?(n=t[1],i="mailto:"+n):(n=t[1],i=n),{type:"link",raw:t[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n;let t;if(t=this.rules.inline.url.exec(e)){let i,s;if(t[2]==="@")i=t[0],s="mailto:"+i;else{let r;do r=t[0],t[0]=((n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])??"";while(r!==t[0]);i=t[0],t[1]==="www."?s="http://"+t[0]:s=t[0]}return{type:"link",raw:t[0],text:i,href:s,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},ye=class Fs{constructor(t){U(this,"tokens");U(this,"options");U(this,"state");U(this,"inlineQueue");U(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||ht,this.options.tokenizer=this.options.tokenizer||new ci,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:le,block:Fn.normal,inline:Vt.normal};this.options.pedantic?(n.block=Fn.pedantic,n.inline=Vt.pedantic):this.options.gfm&&(n.block=Fn.gfm,this.options.breaks?n.inline=Vt.breaks:n.inline=Vt.gfm),this.tokenizer.rules=n}static get rules(){return{block:Fn,inline:Vt}}static lex(t,n){return new Fs(n).lex(t)}static lexInline(t,n){return new Fs(n).inlineTokens(t)}lex(t){t=t.replace(le.carriageReturn,`
1793
- `),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let i=this.inlineQueue[n];this.inlineTokens(i.src,i.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],i=!1){var s,r,o;for(this.options.pedantic&&(t=t.replace(le.tabCharGlobal," ").replace(le.spaceLine,""));t;){let a;if((r=(s=this.options.extensions)==null?void 0:s.block)!=null&&r.some(u=>(a=u.call({lexer:this},t,n))?(t=t.substring(a.raw.length),n.push(a),!0):!1))continue;if(a=this.tokenizer.space(t)){t=t.substring(a.raw.length);let u=n.at(-1);a.raw.length===1&&u!==void 0?u.raw+=`
1959
+ `?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let r=Gt(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{let r=vg(t[2],"()");if(r===-2)return;if(r>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let i=t[2],s="";if(this.options.pedantic){let r=this.rules.other.pedanticHrefTitle.exec(i);r&&(i=r[1],s=r[3])}else s=t[3]?t[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i=i.slice(1):i=i.slice(1,-1)),fa(t,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:s&&s.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=t[i.toLowerCase()];if(!s){let r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return fa(n,s,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!(!i||i[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(i[1]||i[2])||!n||this.rules.inline.punctuation.exec(n))){let s=[...i[0]].length-1,r,o,a=s,c=0,u=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+s);(i=u.exec(t))!=null;){if(r=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!r)continue;if(o=[...r].length,i[3]||i[4]){a+=o;continue}else if((i[5]||i[6])&&s%3&&!((s+o)%3)){c+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a+c);let l=[...i[0]][0].length,d=e.slice(0,s+i.index+l+o);if(Math.min(s,o)%2){let v=d.slice(1,-1);return{type:"em",raw:d,text:v,tokens:this.lexer.inlineTokens(v)}}let h=d.slice(2,-2);return{type:"strong",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(n),s=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&s&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,i;return t[2]==="@"?(n=t[1],i="mailto:"+n):(n=t[1],i=n),{type:"link",raw:t[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n;let t;if(t=this.rules.inline.url.exec(e)){let i,s;if(t[2]==="@")i=t[0],s="mailto:"+i;else{let r;do r=t[0],t[0]=((n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])??"";while(r!==t[0]);i=t[0],t[1]==="www."?s="http://"+t[0]:s=t[0]}return{type:"link",raw:t[0],text:i,href:s,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},ve=class Fs{constructor(t){U(this,"tokens");U(this,"options");U(this,"state");U(this,"inlineQueue");U(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||ft,this.options.tokenizer=this.options.tokenizer||new ci,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:ue,block:Fn.normal,inline:Vt.normal};this.options.pedantic?(n.block=Fn.pedantic,n.inline=Vt.pedantic):this.options.gfm&&(n.block=Fn.gfm,this.options.breaks?n.inline=Vt.breaks:n.inline=Vt.gfm),this.tokenizer.rules=n}static get rules(){return{block:Fn,inline:Vt}}static lex(t,n){return new Fs(n).lex(t)}static lexInline(t,n){return new Fs(n).inlineTokens(t)}lex(t){t=t.replace(ue.carriageReturn,`
1960
+ `),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let i=this.inlineQueue[n];this.inlineTokens(i.src,i.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],i=!1){var s,r,o;for(this.options.pedantic&&(t=t.replace(ue.tabCharGlobal," ").replace(ue.spaceLine,""));t;){let a;if((r=(s=this.options.extensions)==null?void 0:s.block)!=null&&r.some(u=>(a=u.call({lexer:this},t,n))?(t=t.substring(a.raw.length),n.push(a),!0):!1))continue;if(a=this.tokenizer.space(t)){t=t.substring(a.raw.length);let u=n.at(-1);a.raw.length===1&&u!==void 0?u.raw+=`
1794
1961
  `:n.push(a);continue}if(a=this.tokenizer.code(t)){t=t.substring(a.raw.length);let u=n.at(-1);(u==null?void 0:u.type)==="paragraph"||(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(`
1795
1962
  `)?"":`
1796
1963
  `)+a.raw,u.text+=`
@@ -1803,9 +1970,9 @@ ${l}`:l;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
1803
1970
  `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=u.text):n.push(a),i=c.length!==t.length,t=t.substring(a.raw.length);continue}if(a=this.tokenizer.text(t)){t=t.substring(a.raw.length);let u=n.at(-1);(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(`
1804
1971
  `)?"":`
1805
1972
  `)+a.raw,u.text+=`
1806
- `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=u.text):n.push(a);continue}if(t){let u="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var c,u,l,d,h;let i=t,s=null;if(this.tokens.links){let v=Object.keys(this.tokens.links);if(v.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)v.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(i))!=null;)i=i.slice(0,s.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)r=s[2]?s[2].length:0,i=i.slice(0,s.index+r)+"["+"a".repeat(s[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=((u=(c=this.options.hooks)==null?void 0:c.emStrongMask)==null?void 0:u.call({lexer:this},i))??i;let o=!1,a="";for(;t;){o||(a=""),o=!1;let v;if((d=(l=this.options.extensions)==null?void 0:l.inline)!=null&&d.some(b=>(v=b.call({lexer:this},t,n))?(t=t.substring(v.raw.length),n.push(v),!0):!1))continue;if(v=this.tokenizer.escape(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.tag(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.link(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(v.raw.length);let b=n.at(-1);v.type==="text"&&(b==null?void 0:b.type)==="text"?(b.raw+=v.raw,b.text+=v.text):n.push(v);continue}if(v=this.tokenizer.emStrong(t,i,a)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.codespan(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.br(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.del(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.autolink(t)){t=t.substring(v.raw.length),n.push(v);continue}if(!this.state.inLink&&(v=this.tokenizer.url(t))){t=t.substring(v.raw.length),n.push(v);continue}let y=t;if((h=this.options.extensions)!=null&&h.startInline){let b=1/0,S=t.slice(1),x;this.options.extensions.startInline.forEach($=>{x=$.call({lexer:this},S),typeof x=="number"&&x>=0&&(b=Math.min(b,x))}),b<1/0&&b>=0&&(y=t.substring(0,b+1))}if(v=this.tokenizer.inlineText(y)){t=t.substring(v.raw.length),v.raw.slice(-1)!=="_"&&(a=v.raw.slice(-1)),o=!0;let b=n.at(-1);(b==null?void 0:b.type)==="text"?(b.raw+=v.raw,b.text+=v.text):n.push(v);continue}if(t){let b="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(b);break}else throw new Error(b)}}return n}},ui=class{constructor(e){U(this,"options");U(this,"parser");this.options=e||ht}space(e){return""}code({text:e,lang:t,escaped:n}){var r;let i=(r=(t||"").match(le.notSpaceStart))==null?void 0:r[0],s=e.replace(le.endingNewline,"")+`
1807
- `;return i?'<pre><code class="language-'+Re(i)+'">'+(n?s:Re(s,!0))+`</code></pre>
1808
- `:"<pre><code>"+(n?s:Re(s,!0))+`</code></pre>
1973
+ `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=u.text):n.push(a);continue}if(t){let u="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var c,u,l,d,h;let i=t,s=null;if(this.tokens.links){let v=Object.keys(this.tokens.links);if(v.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)v.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(i))!=null;)i=i.slice(0,s.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)r=s[2]?s[2].length:0,i=i.slice(0,s.index+r)+"["+"a".repeat(s[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=((u=(c=this.options.hooks)==null?void 0:c.emStrongMask)==null?void 0:u.call({lexer:this},i))??i;let o=!1,a="";for(;t;){o||(a=""),o=!1;let v;if((d=(l=this.options.extensions)==null?void 0:l.inline)!=null&&d.some(b=>(v=b.call({lexer:this},t,n))?(t=t.substring(v.raw.length),n.push(v),!0):!1))continue;if(v=this.tokenizer.escape(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.tag(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.link(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(v.raw.length);let b=n.at(-1);v.type==="text"&&(b==null?void 0:b.type)==="text"?(b.raw+=v.raw,b.text+=v.text):n.push(v);continue}if(v=this.tokenizer.emStrong(t,i,a)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.codespan(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.br(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.del(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.autolink(t)){t=t.substring(v.raw.length),n.push(v);continue}if(!this.state.inLink&&(v=this.tokenizer.url(t))){t=t.substring(v.raw.length),n.push(v);continue}let f=t;if((h=this.options.extensions)!=null&&h.startInline){let b=1/0,k=t.slice(1),x;this.options.extensions.startInline.forEach($=>{x=$.call({lexer:this},k),typeof x=="number"&&x>=0&&(b=Math.min(b,x))}),b<1/0&&b>=0&&(f=t.substring(0,b+1))}if(v=this.tokenizer.inlineText(f)){t=t.substring(v.raw.length),v.raw.slice(-1)!=="_"&&(a=v.raw.slice(-1)),o=!0;let b=n.at(-1);(b==null?void 0:b.type)==="text"?(b.raw+=v.raw,b.text+=v.text):n.push(v);continue}if(t){let b="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(b);break}else throw new Error(b)}}return n}},ui=class{constructor(e){U(this,"options");U(this,"parser");this.options=e||ft}space(e){return""}code({text:e,lang:t,escaped:n}){var r;let i=(r=(t||"").match(ue.notSpaceStart))==null?void 0:r[0],s=e.replace(ue.endingNewline,"")+`
1974
+ `;return i?'<pre><code class="language-'+Ne(i)+'">'+(n?s:Ne(s,!0))+`</code></pre>
1975
+ `:"<pre><code>"+(n?s:Ne(s,!0))+`</code></pre>
1809
1976
  `}blockquote({tokens:e}){return`<blockquote>
1810
1977
  ${this.parser.parse(e)}</blockquote>
1811
1978
  `}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
@@ -1821,23 +1988,23 @@ ${this.parser.parse(e)}</blockquote>
1821
1988
  `}tablerow({text:e}){return`<tr>
1822
1989
  ${e}</tr>
1823
1990
  `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
1824
- `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Re(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let i=this.parser.parseInline(n),s=pa(e);if(s===null)return i;e=s;let r='<a href="'+e+'"';return t&&(r+=' title="'+Re(t)+'"'),r+=">"+i+"</a>",r}image({href:e,title:t,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let s=pa(e);if(s===null)return Re(n);e=s;let r=`<img src="${e}" alt="${n}"`;return t&&(r+=` title="${Re(t)}"`),r+=">",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Re(e.text)}},Rr=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},ve=class Us{constructor(t){U(this,"options");U(this,"renderer");U(this,"textRenderer");this.options=t||ht,this.options.renderer=this.options.renderer||new ui,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Rr}static parse(t,n){return new Us(n).parse(t)}static parseInline(t,n){return new Us(n).parseInline(t)}parse(t){var i,s;let n="";for(let r=0;r<t.length;r++){let o=t[r];if((s=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&s[o.type]){let c=o,u=this.options.extensions.renderers[c.type].call({parser:this},c);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(c.type)){n+=u||"";continue}}let a=o;switch(a.type){case"space":{n+=this.renderer.space(a);break}case"hr":{n+=this.renderer.hr(a);break}case"heading":{n+=this.renderer.heading(a);break}case"code":{n+=this.renderer.code(a);break}case"table":{n+=this.renderer.table(a);break}case"blockquote":{n+=this.renderer.blockquote(a);break}case"list":{n+=this.renderer.list(a);break}case"checkbox":{n+=this.renderer.checkbox(a);break}case"html":{n+=this.renderer.html(a);break}case"def":{n+=this.renderer.def(a);break}case"paragraph":{n+=this.renderer.paragraph(a);break}case"text":{n+=this.renderer.text(a);break}default:{let c='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return n}parseInline(t,n=this.renderer){var s,r;let i="";for(let o=0;o<t.length;o++){let a=t[o];if((r=(s=this.options.extensions)==null?void 0:s.renderers)!=null&&r[a.type]){let u=this.options.extensions.renderers[a.type].call({parser:this},a);if(u!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){i+=u||"";continue}}let c=a;switch(c.type){case"escape":{i+=n.text(c);break}case"html":{i+=n.html(c);break}case"link":{i+=n.link(c);break}case"image":{i+=n.image(c);break}case"checkbox":{i+=n.checkbox(c);break}case"strong":{i+=n.strong(c);break}case"em":{i+=n.em(c);break}case"codespan":{i+=n.codespan(c);break}case"br":{i+=n.br(c);break}case"del":{i+=n.del(c);break}case"text":{i+=n.text(c);break}default:{let u='Token with "'+c.type+'" type was not found.';if(this.options.silent)return console.error(u),"";throw new Error(u)}}}return i}},Hn,Xt=(Hn=class{constructor(e){U(this,"options");U(this,"block");this.options=e||ht}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?ye.lex:ye.lexInline}provideParser(){return this.block?ve.parse:ve.parseInline}},U(Hn,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),U(Hn,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Hn),vg=class{constructor(...e){U(this,"defaults",Er());U(this,"options",this.setOptions);U(this,"parse",this.parseMarkdown(!0));U(this,"parseInline",this.parseMarkdown(!1));U(this,"Parser",ve);U(this,"Renderer",ui);U(this,"TextRenderer",Rr);U(this,"Lexer",ye);U(this,"Tokenizer",ci);U(this,"Hooks",Xt);this.use(...e)}walkTokens(e,t){var i,s;let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let o=r;for(let a of o.header)n=n.concat(this.walkTokens(a.tokens,t));for(let a of o.rows)for(let c of a)n=n.concat(this.walkTokens(c.tokens,t));break}case"list":{let o=r;n=n.concat(this.walkTokens(o.items,t));break}default:{let o=r;(s=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&s[o.type]?this.defaults.extensions.childTokens[o.type].forEach(a=>{let c=o[a].flat(1/0);n=n.concat(this.walkTokens(c,t))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let r=t.renderers[s.name];r?t.renderers[s.name]=function(...o){let a=s.renderer.apply(this,o);return a===!1&&(a=r.apply(this,o)),a}:t.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=t[s.level];r?r.unshift(s.tokenizer):t[s.level]=[s.tokenizer],s.start&&(s.level==="block"?t.startBlock?t.startBlock.push(s.start):t.startBlock=[s.start]:s.level==="inline"&&(t.startInline?t.startInline.push(s.start):t.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(t.childTokens[s.name]=s.childTokens)}),i.extensions=t),n.renderer){let s=this.defaults.renderer||new ui(this.defaults);for(let r in n.renderer){if(!(r in s))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let o=r,a=n.renderer[o],c=s[o];s[o]=(...u)=>{let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l||""}}i.renderer=s}if(n.tokenizer){let s=this.defaults.tokenizer||new ci(this.defaults);for(let r in n.tokenizer){if(!(r in s))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let o=r,a=n.tokenizer[o],c=s[o];s[o]=(...u)=>{let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l}}i.tokenizer=s}if(n.hooks){let s=this.defaults.hooks||new Xt;for(let r in n.hooks){if(!(r in s))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let o=r,a=n.hooks[o],c=s[o];Xt.passThroughHooks.has(r)?s[o]=u=>{if(this.defaults.async&&Xt.passThroughHooksRespectAsync.has(r))return(async()=>{let d=await a.call(s,u);return c.call(s,d)})();let l=a.call(s,u);return c.call(s,l)}:s[o]=(...u)=>{if(this.defaults.async)return(async()=>{let d=await a.apply(s,u);return d===!1&&(d=await c.apply(s,u)),d})();let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l}}i.hooks=s}if(n.walkTokens){let s=this.defaults.walkTokens,r=n.walkTokens;i.walkTokens=function(o){let a=[];return a.push(r.call(this,o)),s&&(a=a.concat(s.call(this,o))),a}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ye.lex(e,t??this.defaults)}parser(e,t){return ve.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let i={...n},s={...this.defaults,...i},r=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(t):t,a=await(s.hooks?await s.hooks.provideLexer():e?ye.lex:ye.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(a):a;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let u=await(s.hooks?await s.hooks.provideParser():e?ve.parse:ve.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(u):u})().catch(r);try{s.hooks&&(t=s.hooks.preprocess(t));let o=(s.hooks?s.hooks.provideLexer():e?ye.lex:ye.lexInline)(t,s);s.hooks&&(o=s.hooks.processAllTokens(o)),s.walkTokens&&this.walkTokens(o,s.walkTokens);let a=(s.hooks?s.hooks.provideParser():e?ve.parse:ve.parseInline)(o,s);return s.hooks&&(a=s.hooks.postprocess(a)),a}catch(o){return r(o)}}}onError(e,t){return n=>{if(n.message+=`
1825
- Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+Re(n.message+"",!0)+"</pre>";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}},ct=new vg;function K(e,t){return ct.parse(e,t)}K.options=K.setOptions=function(e){return ct.setOptions(e),K.defaults=ct.defaults,kc(K.defaults),K};K.getDefaults=Er;K.defaults=ht;K.use=function(...e){return ct.use(...e),K.defaults=ct.defaults,kc(K.defaults),K};K.walkTokens=function(e,t){return ct.walkTokens(e,t)};K.parseInline=ct.parseInline;K.Parser=ve;K.parser=ve.parse;K.Renderer=ui;K.TextRenderer=Rr;K.Lexer=ye;K.lexer=ye.lex;K.Tokenizer=ci;K.Hooks=Xt;K.parse=K;K.options;K.setOptions;K.use;K.walkTokens;K.parseInline;ve.parse;ye.lex;K.setOptions({gfm:!0,breaks:!0,mangle:!1});const ga=["a","b","blockquote","br","code","del","em","h1","h2","h3","h4","hr","i","li","ol","p","pre","strong","table","tbody","td","th","thead","tr","ul"],ma=["class","href","rel","target","title","start"];let ya=!1;const bg=14e4,wg=4e4,kg=200,ls=5e4,tt=new Map;function Sg(e){const t=tt.get(e);return t===void 0?null:(tt.delete(e),tt.set(e,t),t)}function va(e,t){if(tt.set(e,t),tt.size<=kg)return;const n=tt.keys().next().value;n&&tt.delete(n)}function Ag(){ya||(ya=!0,Os.addHook("afterSanitizeAttributes",e=>{!(e instanceof HTMLAnchorElement)||!e.getAttribute("href")||(e.setAttribute("rel","noreferrer noopener"),e.setAttribute("target","_blank"))}))}function di(e){const t=e.trim();if(!t)return"";if(Ag(),t.length<=ls){const o=Sg(t);if(o!==null)return o}const n=dl(t,bg),i=n.truncated?`
1991
+ `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Ne(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let i=this.parser.parseInline(n),s=pa(e);if(s===null)return i;e=s;let r='<a href="'+e+'"';return t&&(r+=' title="'+Ne(t)+'"'),r+=">"+i+"</a>",r}image({href:e,title:t,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let s=pa(e);if(s===null)return Ne(n);e=s;let r=`<img src="${e}" alt="${n}"`;return t&&(r+=` title="${Ne(t)}"`),r+=">",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Ne(e.text)}},Rr=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},be=class Us{constructor(t){U(this,"options");U(this,"renderer");U(this,"textRenderer");this.options=t||ft,this.options.renderer=this.options.renderer||new ui,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Rr}static parse(t,n){return new Us(n).parse(t)}static parseInline(t,n){return new Us(n).parseInline(t)}parse(t){var i,s;let n="";for(let r=0;r<t.length;r++){let o=t[r];if((s=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&s[o.type]){let c=o,u=this.options.extensions.renderers[c.type].call({parser:this},c);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(c.type)){n+=u||"";continue}}let a=o;switch(a.type){case"space":{n+=this.renderer.space(a);break}case"hr":{n+=this.renderer.hr(a);break}case"heading":{n+=this.renderer.heading(a);break}case"code":{n+=this.renderer.code(a);break}case"table":{n+=this.renderer.table(a);break}case"blockquote":{n+=this.renderer.blockquote(a);break}case"list":{n+=this.renderer.list(a);break}case"checkbox":{n+=this.renderer.checkbox(a);break}case"html":{n+=this.renderer.html(a);break}case"def":{n+=this.renderer.def(a);break}case"paragraph":{n+=this.renderer.paragraph(a);break}case"text":{n+=this.renderer.text(a);break}default:{let c='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return n}parseInline(t,n=this.renderer){var s,r;let i="";for(let o=0;o<t.length;o++){let a=t[o];if((r=(s=this.options.extensions)==null?void 0:s.renderers)!=null&&r[a.type]){let u=this.options.extensions.renderers[a.type].call({parser:this},a);if(u!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){i+=u||"";continue}}let c=a;switch(c.type){case"escape":{i+=n.text(c);break}case"html":{i+=n.html(c);break}case"link":{i+=n.link(c);break}case"image":{i+=n.image(c);break}case"checkbox":{i+=n.checkbox(c);break}case"strong":{i+=n.strong(c);break}case"em":{i+=n.em(c);break}case"codespan":{i+=n.codespan(c);break}case"br":{i+=n.br(c);break}case"del":{i+=n.del(c);break}case"text":{i+=n.text(c);break}default:{let u='Token with "'+c.type+'" type was not found.';if(this.options.silent)return console.error(u),"";throw new Error(u)}}}return i}},Hn,Xt=(Hn=class{constructor(e){U(this,"options");U(this,"block");this.options=e||ft}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?ve.lex:ve.lexInline}provideParser(){return this.block?be.parse:be.parseInline}},U(Hn,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),U(Hn,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Hn),wg=class{constructor(...e){U(this,"defaults",Er());U(this,"options",this.setOptions);U(this,"parse",this.parseMarkdown(!0));U(this,"parseInline",this.parseMarkdown(!1));U(this,"Parser",be);U(this,"Renderer",ui);U(this,"TextRenderer",Rr);U(this,"Lexer",ve);U(this,"Tokenizer",ci);U(this,"Hooks",Xt);this.use(...e)}walkTokens(e,t){var i,s;let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let o=r;for(let a of o.header)n=n.concat(this.walkTokens(a.tokens,t));for(let a of o.rows)for(let c of a)n=n.concat(this.walkTokens(c.tokens,t));break}case"list":{let o=r;n=n.concat(this.walkTokens(o.items,t));break}default:{let o=r;(s=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&s[o.type]?this.defaults.extensions.childTokens[o.type].forEach(a=>{let c=o[a].flat(1/0);n=n.concat(this.walkTokens(c,t))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let r=t.renderers[s.name];r?t.renderers[s.name]=function(...o){let a=s.renderer.apply(this,o);return a===!1&&(a=r.apply(this,o)),a}:t.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=t[s.level];r?r.unshift(s.tokenizer):t[s.level]=[s.tokenizer],s.start&&(s.level==="block"?t.startBlock?t.startBlock.push(s.start):t.startBlock=[s.start]:s.level==="inline"&&(t.startInline?t.startInline.push(s.start):t.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(t.childTokens[s.name]=s.childTokens)}),i.extensions=t),n.renderer){let s=this.defaults.renderer||new ui(this.defaults);for(let r in n.renderer){if(!(r in s))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let o=r,a=n.renderer[o],c=s[o];s[o]=(...u)=>{let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l||""}}i.renderer=s}if(n.tokenizer){let s=this.defaults.tokenizer||new ci(this.defaults);for(let r in n.tokenizer){if(!(r in s))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let o=r,a=n.tokenizer[o],c=s[o];s[o]=(...u)=>{let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l}}i.tokenizer=s}if(n.hooks){let s=this.defaults.hooks||new Xt;for(let r in n.hooks){if(!(r in s))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let o=r,a=n.hooks[o],c=s[o];Xt.passThroughHooks.has(r)?s[o]=u=>{if(this.defaults.async&&Xt.passThroughHooksRespectAsync.has(r))return(async()=>{let d=await a.call(s,u);return c.call(s,d)})();let l=a.call(s,u);return c.call(s,l)}:s[o]=(...u)=>{if(this.defaults.async)return(async()=>{let d=await a.apply(s,u);return d===!1&&(d=await c.apply(s,u)),d})();let l=a.apply(s,u);return l===!1&&(l=c.apply(s,u)),l}}i.hooks=s}if(n.walkTokens){let s=this.defaults.walkTokens,r=n.walkTokens;i.walkTokens=function(o){let a=[];return a.push(r.call(this,o)),s&&(a=a.concat(s.call(this,o))),a}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ve.lex(e,t??this.defaults)}parser(e,t){return be.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let i={...n},s={...this.defaults,...i},r=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(t):t,a=await(s.hooks?await s.hooks.provideLexer():e?ve.lex:ve.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(a):a;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let u=await(s.hooks?await s.hooks.provideParser():e?be.parse:be.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(u):u})().catch(r);try{s.hooks&&(t=s.hooks.preprocess(t));let o=(s.hooks?s.hooks.provideLexer():e?ve.lex:ve.lexInline)(t,s);s.hooks&&(o=s.hooks.processAllTokens(o)),s.walkTokens&&this.walkTokens(o,s.walkTokens);let a=(s.hooks?s.hooks.provideParser():e?be.parse:be.parseInline)(o,s);return s.hooks&&(a=s.hooks.postprocess(a)),a}catch(o){return r(o)}}}onError(e,t){return n=>{if(n.message+=`
1992
+ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+Ne(n.message+"",!0)+"</pre>";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}},ut=new wg;function K(e,t){return ut.parse(e,t)}K.options=K.setOptions=function(e){return ut.setOptions(e),K.defaults=ut.defaults,Sc(K.defaults),K};K.getDefaults=Er;K.defaults=ft;K.use=function(...e){return ut.use(...e),K.defaults=ut.defaults,Sc(K.defaults),K};K.walkTokens=function(e,t){return ut.walkTokens(e,t)};K.parseInline=ut.parseInline;K.Parser=be;K.parser=be.parse;K.Renderer=ui;K.TextRenderer=Rr;K.Lexer=ve;K.lexer=ve.lex;K.Tokenizer=ci;K.Hooks=Xt;K.parse=K;K.options;K.setOptions;K.use;K.walkTokens;K.parseInline;be.parse;ve.lex;K.setOptions({gfm:!0,breaks:!0,mangle:!1});const ga=["a","b","blockquote","br","code","del","em","h1","h2","h3","h4","hr","i","li","ol","p","pre","strong","table","tbody","td","th","thead","tr","ul"],ma=["class","href","rel","target","title","start"];let ya=!1;const kg=14e4,Sg=4e4,Ag=200,ls=5e4,nt=new Map;function xg(e){const t=nt.get(e);return t===void 0?null:(nt.delete(e),nt.set(e,t),t)}function va(e,t){if(nt.set(e,t),nt.size<=Ag)return;const n=nt.keys().next().value;n&&nt.delete(n)}function $g(){ya||(ya=!0,Os.addHook("afterSanitizeAttributes",e=>{!(e instanceof HTMLAnchorElement)||!e.getAttribute("href")||(e.setAttribute("rel","noreferrer noopener"),e.setAttribute("target","_blank"))}))}function di(e){const t=e.trim();if(!t)return"";if($g(),t.length<=ls){const o=xg(t);if(o!==null)return o}const n=dl(t,kg),i=n.truncated?`
1826
1993
 
1827
- … truncated (${n.total} chars, showing first ${n.text.length}).`:"";if(n.text.length>wg){const a=`<pre class="code-block">${xg(`${n.text}${i}`)}</pre>`,c=Os.sanitize(a,{ALLOWED_TAGS:ga,ALLOWED_ATTR:ma});return t.length<=ls&&va(t,c),c}const s=K.parse(`${n.text}${i}`),r=Os.sanitize(s,{ALLOWED_TAGS:ga,ALLOWED_ATTR:ma});return t.length<=ls&&va(t,r),r}function xg(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}const $g=1500,Eg=2e3,Lc="Copy as markdown",Cg="Copied",Tg="Copy failed";async function _g(e){if(!e)return!1;try{return await navigator.clipboard.writeText(e),!0}catch{try{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();const n=document.execCommand("copy");return document.body.removeChild(t),n}catch{return!1}}}function Un(e,t){e.title=t,e.setAttribute("aria-label",t)}function Mg(e){const t=e.label??Lc;return p`
1994
+ … truncated (${n.total} chars, showing first ${n.text.length}).`:"";if(n.text.length>Sg){const a=`<pre class="code-block">${Eg(`${n.text}${i}`)}</pre>`,c=Os.sanitize(a,{ALLOWED_TAGS:ga,ALLOWED_ATTR:ma});return t.length<=ls&&va(t,c),c}const s=K.parse(`${n.text}${i}`),r=Os.sanitize(s,{ALLOWED_TAGS:ga,ALLOWED_ATTR:ma});return t.length<=ls&&va(t,r),r}function Eg(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}const Tg=1500,Cg=2e3,Ic="Copy as markdown",_g="Copied",Mg="Copy failed";async function Pg(e){if(!e)return!1;try{return await navigator.clipboard.writeText(e),!0}catch{try{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();const n=document.execCommand("copy");return document.body.removeChild(t),n}catch{return!1}}}function Un(e,t){e.title=t,e.setAttribute("aria-label",t)}function Lg(e){const t=e.label??Ic;return p`
1828
1995
  <button
1829
1996
  class="chat-copy-btn"
1830
1997
  type="button"
1831
1998
  title=${t}
1832
1999
  aria-label=${t}
1833
- @click=${async n=>{const i=n.currentTarget;if(i==null||i.querySelector(".chat-copy-btn__icon"),!i||i.dataset.copying==="1")return;i.dataset.copying="1",i.setAttribute("aria-busy","true"),i.disabled=!0;const s=await _g(e.text());if(i.isConnected){if(delete i.dataset.copying,i.removeAttribute("aria-busy"),i.disabled=!1,!s){i.dataset.error="1",Un(i,Tg),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.error,Un(i,t))},Eg);return}i.dataset.copied="1",Un(i,Cg),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.copied,Un(i,t))},$g)}}}
2000
+ @click=${async n=>{const i=n.currentTarget;if(i==null||i.querySelector(".chat-copy-btn__icon"),!i||i.dataset.copying==="1")return;i.dataset.copying="1",i.setAttribute("aria-busy","true"),i.disabled=!0;const s=await Pg(e.text());if(i.isConnected){if(delete i.dataset.copying,i.removeAttribute("aria-busy"),i.disabled=!1,!s){i.dataset.error="1",Un(i,Mg),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.error,Un(i,t))},Cg);return}i.dataset.copied="1",Un(i,_g),window.setTimeout(()=>{i.isConnected&&(delete i.dataset.copied,Un(i,t))},Tg)}}}
1834
2001
  >
1835
2002
  <span class="chat-copy-btn__icon" aria-hidden="true">
1836
2003
  <span class="chat-copy-btn__icon-copy">${O.copy}</span>
1837
2004
  <span class="chat-copy-btn__icon-check">${O.check}</span>
1838
2005
  </span>
1839
2006
  </button>
1840
- `}function Pg(e){return Mg({text:()=>e,label:Lc})}function Lg(e){const t=e,n=Ig(t.content),i=[];for(const s of n){const r=String(s.type??"").toLowerCase();(["toolcall","tool_call","tooluse","tool_use"].includes(r)||typeof s.name=="string"&&s.arguments!=null)&&i.push({kind:"call",name:s.name??"tool",args:Rg(s.arguments??s.args)})}for(const s of n){const r=String(s.type??"").toLowerCase();if(r!=="toolresult"&&r!=="tool_result")continue;const o=Ng(s),a=typeof s.name=="string"?s.name:"tool";i.push({kind:"result",name:a,text:o})}if(gl(e)&&!i.some(s=>s.kind==="result")){const s=typeof t.toolName=="string"&&t.toolName||typeof t.tool_name=="string"&&t.tool_name||"tool",r=pl(e)??void 0;i.push({kind:"result",name:s,text:r})}return i}function Ig(e){return Array.isArray(e)?e.filter(Boolean):[]}function Rg(e){if(typeof e!="string")return e;const t=e.trim();if(!t||!t.startsWith("{")&&!t.startsWith("["))return e;try{return JSON.parse(t)}catch{return e}}function Ng(e){if(typeof e.text=="string")return e.text;if(typeof e.content=="string")return e.content}function Dg(e){var s;const n=e.content,i=[];if(Array.isArray(n))for(const r of n){if(typeof r!="object"||r===null)continue;const o=r;if(o.type==="image")if(((s=o.source)==null?void 0:s.type)==="base64"){const a=o.source,c=a.data,u=a.media_type||"image/png",l=c.startsWith("data:")?c:`data:${u};base64,${c}`;i.push({url:l})}else if(typeof o.data=="string"&&o.data){const a=o.data,c=o.mimeType||o.media_type||"image/png",u=a.startsWith("data:")?a:`data:${c};base64,${a}`;i.push({url:u})}else typeof o.url=="string"&&i.push({url:o.url});else if(o.type==="image_url"){const a=o.image_url;typeof(a==null?void 0:a.url)=="string"&&i.push({url:a.url})}}return i}function Og(e){return p`
2007
+ `}function Ig(e){return Lg({text:()=>e,label:Ic})}function Rg(e){const t=e,n=Ng(t.content),i=[];for(const s of n){const r=String(s.type??"").toLowerCase();(["toolcall","tool_call","tooluse","tool_use"].includes(r)||typeof s.name=="string"&&s.arguments!=null)&&i.push({kind:"call",name:s.name??"tool",args:Dg(s.arguments??s.args)})}for(const s of n){const r=String(s.type??"").toLowerCase();if(r!=="toolresult"&&r!=="tool_result")continue;const o=Og(s),a=typeof s.name=="string"?s.name:"tool";i.push({kind:"result",name:a,text:o})}if(gl(e)&&!i.some(s=>s.kind==="result")){const s=typeof t.toolName=="string"&&t.toolName||typeof t.tool_name=="string"&&t.tool_name||"tool",r=pl(e)??void 0;i.push({kind:"result",name:s,text:r})}return i}function Ng(e){return Array.isArray(e)?e.filter(Boolean):[]}function Dg(e){if(typeof e!="string")return e;const t=e.trim();if(!t||!t.startsWith("{")&&!t.startsWith("["))return e;try{return JSON.parse(t)}catch{return e}}function Og(e){if(typeof e.text=="string")return e.text;if(typeof e.content=="string")return e.content}function Bg(e){var s;const n=e.content,i=[];if(Array.isArray(n))for(const r of n){if(typeof r!="object"||r===null)continue;const o=r;if(o.type==="image")if(((s=o.source)==null?void 0:s.type)==="base64"){const a=o.source,c=a.data,u=a.media_type||"image/png",l=c.startsWith("data:")?c:`data:${u};base64,${c}`;i.push({url:l})}else if(typeof o.data=="string"&&o.data){const a=o.data,c=o.mimeType||o.media_type||"image/png",u=a.startsWith("data:")?a:`data:${c};base64,${a}`;i.push({url:u})}else typeof o.url=="string"&&i.push({url:o.url});else if(o.type==="image_url"){const a=o.image_url;typeof(a==null?void 0:a.url)=="string"&&i.push({url:a.url})}}return i}function Fg(e){return p`
1841
2008
  <div class="chat-group assistant">
1842
2009
  <div class="chat-group-messages">
1843
2010
  <div class="chat-bubble chat-reading-indicator" aria-hidden="true">
@@ -1847,7 +2014,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
1847
2014
  </div>
1848
2015
  </div>
1849
2016
  </div>
1850
- `}function Bg(e){return p`
2017
+ `}function Ug(e){return p`
1851
2018
  <div class="chat-group assistant">
1852
2019
  <div class="chat-group-messages">
1853
2020
  <div class="chat-interim fade-in">
@@ -1855,22 +2022,22 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
1855
2022
  </div>
1856
2023
  </div>
1857
2024
  </div>
1858
- `}function Fg(e,t,n,i){return p`
2025
+ `}function Wg(e,t,n,i){return p`
1859
2026
  <div class="chat-group assistant">
1860
2027
  <div class="chat-group-messages">
1861
- ${Ic({role:"assistant",content:[{type:"text",text:e}],timestamp:t},{isStreaming:!1,showReasoning:!1})}
2028
+ ${Rc({role:"assistant",content:[{type:"text",text:e}],timestamp:t},{isStreaming:!1,showReasoning:!1})}
1862
2029
  </div>
1863
2030
  </div>
1864
- `}function Ug(e,t){const n=fl(e.role),i=n==="user"?"user":n==="assistant"?"assistant":"other",s=new Date(e.timestamp).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"});return p`
2031
+ `}function Kg(e,t){const n=fl(e.role),i=n==="user"?"user":n==="assistant"?"assistant":"other",s=new Date(e.timestamp).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"medium"});return p`
1865
2032
  <div class="chat-group ${i}">
1866
2033
  <div class="chat-group-messages">
1867
- ${e.messages.map((r,o)=>Ic(r.message,{isStreaming:e.isStreaming&&o===e.messages.length-1,showReasoning:t.showReasoning}))}
2034
+ ${e.messages.map((r,o)=>Rc(r.message,{isStreaming:e.isStreaming&&o===e.messages.length-1,showReasoning:t.showReasoning}))}
1868
2035
  <div class="chat-group-footer">
1869
2036
  <span class="chat-group-timestamp">${s}</span>
1870
2037
  </div>
1871
2038
  </div>
1872
2039
  </div>
1873
- `}function Wg(e){return e.length===0?k:p`
2040
+ `}function zg(e){return e.length===0?S:p`
1874
2041
  <div class="chat-message-images">
1875
2042
  ${e.map(t=>p`
1876
2043
  <img
@@ -1881,14 +2048,14 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
1881
2048
  />
1882
2049
  `)}
1883
2050
  </div>
1884
- `}function Ic(e,t,n){const i=e,s=typeof i.role=="string"?i.role:"unknown",r=gl(e)||s.toLowerCase()==="toolresult"||s.toLowerCase()==="tool_result"||typeof i.toolCallId=="string"||typeof i.tool_call_id=="string",a=Lg(e).length>0,c=Dg(e),u=c.length>0,l=pl(e),d=t.showReasoning&&s==="assistant"?yd(e):null,h=l!=null&&l.trim()?l:null,v=d?bd(d):null,y=h,b=(s==="assistant"||s==="user")&&!!(y!=null&&y.trim()),S=["chat-bubble",b?"has-copy":"",t.isStreaming?"streaming":"","fade-in"].filter(Boolean).join(" ");return!y&&(a||r)||!y&&!u?k:p`
1885
- <div class="${S}">
1886
- ${b?Pg(y):k}
1887
- ${Wg(c)}
1888
- ${v?p`<div class="chat-thinking">${ai(di(v))}</div>`:k}
1889
- ${y?p`<div class="chat-text">${ai(di(y))}</div>`:k}
2051
+ `}function Rc(e,t,n){const i=e,s=typeof i.role=="string"?i.role:"unknown",r=gl(e)||s.toLowerCase()==="toolresult"||s.toLowerCase()==="tool_result"||typeof i.toolCallId=="string"||typeof i.tool_call_id=="string",a=Rg(e).length>0,c=Bg(e),u=c.length>0,l=pl(e),d=t.showReasoning&&s==="assistant"?vd(e):null,h=l!=null&&l.trim()?l:null,v=d?wd(d):null,f=h,b=(s==="assistant"||s==="user")&&!!(f!=null&&f.trim()),k=["chat-bubble",b?"has-copy":"",t.isStreaming?"streaming":"","fade-in"].filter(Boolean).join(" ");return!f&&(a||r)||!f&&!u?S:p`
2052
+ <div class="${k}">
2053
+ ${b?Ig(f):S}
2054
+ ${zg(c)}
2055
+ ${v?p`<div class="chat-thinking">${ai(di(v))}</div>`:S}
2056
+ ${f?p`<div class="chat-text">${ai(di(f))}</div>`:S}
1890
2057
  </div>
1891
- `}function Kg(e){return p`
2058
+ `}function jg(e){return p`
1892
2059
  <div class="sidebar-panel">
1893
2060
  <div class="sidebar-header">
1894
2061
  <div class="sidebar-title">Tool Output</div>
@@ -1905,7 +2072,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
1905
2072
  `:e.content?p`<div class="sidebar-markdown">${ai(di(e.content))}</div>`:p`<div class="muted">No content available</div>`}
1906
2073
  </div>
1907
2074
  </div>
1908
- `}var zg=Object.defineProperty,jg=Object.getOwnPropertyDescriptor,Ti=(e,t,n,i)=>{for(var s=i>1?void 0:i?jg(t,n):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(s=(i?o(t,n,s):o(s))||s);return i&&s&&zg(t,n,s),s};let Mt=class extends $t{constructor(){super(...arguments),this.splitRatio=.6,this.minRatio=.4,this.maxRatio=.7,this.isDragging=!1,this.startX=0,this.startRatio=0,this.handleMouseDown=e=>{this.isDragging=!0,this.startX=e.clientX,this.startRatio=this.splitRatio,this.classList.add("dragging"),document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),e.preventDefault()},this.handleMouseMove=e=>{if(!this.isDragging)return;const t=this.parentElement;if(!t)return;const n=t.getBoundingClientRect().width,s=(e.clientX-this.startX)/n;let r=this.startRatio+s;r=Math.max(this.minRatio,Math.min(this.maxRatio,r)),this.dispatchEvent(new CustomEvent("resize",{detail:{splitRatio:r},bubbles:!0,composed:!0}))},this.handleMouseUp=()=>{this.isDragging=!1,this.classList.remove("dragging"),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}}render(){return p``}connectedCallback(){super.connectedCallback(),this.addEventListener("mousedown",this.handleMouseDown)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("mousedown",this.handleMouseDown),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}};Mt.styles=Nu`
2075
+ `}var Hg=Object.defineProperty,qg=Object.getOwnPropertyDescriptor,Ci=(e,t,n,i)=>{for(var s=i>1?void 0:i?qg(t,n):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(s=(i?o(t,n,s):o(s))||s);return i&&s&&Hg(t,n,s),s};let Pt=class extends Et{constructor(){super(...arguments),this.splitRatio=.6,this.minRatio=.4,this.maxRatio=.7,this.isDragging=!1,this.startX=0,this.startRatio=0,this.handleMouseDown=e=>{this.isDragging=!0,this.startX=e.clientX,this.startRatio=this.splitRatio,this.classList.add("dragging"),document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),e.preventDefault()},this.handleMouseMove=e=>{if(!this.isDragging)return;const t=this.parentElement;if(!t)return;const n=t.getBoundingClientRect().width,s=(e.clientX-this.startX)/n;let r=this.startRatio+s;r=Math.max(this.minRatio,Math.min(this.maxRatio,r)),this.dispatchEvent(new CustomEvent("resize",{detail:{splitRatio:r},bubbles:!0,composed:!0}))},this.handleMouseUp=()=>{this.isDragging=!1,this.classList.remove("dragging"),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}}render(){return p``}connectedCallback(){super.connectedCallback(),this.addEventListener("mousedown",this.handleMouseDown)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("mousedown",this.handleMouseDown),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}};Pt.styles=Du`
1909
2076
  :host {
1910
2077
  width: 4px;
1911
2078
  cursor: col-resize;
@@ -1931,21 +2098,21 @@ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error
1931
2098
  :host(.dragging) {
1932
2099
  background: var(--accent, #007bff);
1933
2100
  }
1934
- `;Ti([bi({type:Number})],Mt.prototype,"splitRatio",2);Ti([bi({type:Number})],Mt.prototype,"minRatio",2);Ti([bi({type:Number})],Mt.prototype,"maxRatio",2);Mt=Ti([ol("resizable-divider")],Mt);function Wn(e){if(typeof e!="string"||!e)throw new Error("expected a non-empty string, got: "+e)}function cs(e){if(typeof e!="number")throw new Error("expected a number, got: "+e)}const Hg=1,qg=1,ft="emoji",Pt="keyvalue",Nr="favorites",Vg="tokens",Rc="tokens",Gg="unicode",Nc="count",Qg="group",Yg="order",Dc="group-order",Ws="eTag",pi="url",ba="skinTone",Nt="readonly",Dr="readwrite",Oc="skinUnicodes",Xg="skinUnicodes",Zg="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",Jg="en";function em(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function wa(e){return em(e,t=>t.unicode)}function tm(e){function t(n,i,s){const r=i?e.createObjectStore(n,{keyPath:i}):e.createObjectStore(n);if(s)for(const[o,[a,c]]of Object.entries(s))r.createIndex(o,a,{multiEntry:c});return r}t(Pt),t(ft,Gg,{[Rc]:[Vg,!0],[Dc]:[[Qg,Yg]],[Oc]:[Xg,!0]}),t(Nr,void 0,{[Nc]:[""]})}const Ks={},Qn={},hi={};function Bc(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function nm(e){const t=await new Promise((n,i)=>{const s=indexedDB.open(e,Hg);Ks[e]=s,s.onupgradeneeded=r=>{r.oldVersion<qg&&tm(s.result)},Bc(n,i,s)});return t.onclose=()=>Or(e),t}function im(e){return Qn[e]||(Qn[e]=nm(e)),Qn[e]}function De(e,t,n,i){return new Promise((s,r)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a=typeof t=="string"?o.objectStore(t):t.map(u=>o.objectStore(u));let c;i(a,o,u=>{c=u}),o.oncomplete=()=>s(c),o.onerror=()=>r(o.error)})}function Or(e){const t=Ks[e],n=t&&t.result;if(n){n.close();const i=hi[e];if(i)for(const s of i)s()}delete Ks[e],delete Qn[e],delete hi[e]}function sm(e){return new Promise((t,n)=>{Or(e);const i=indexedDB.deleteDatabase(e);Bc(t,n,i)})}function rm(e,t){let n=hi[e];n||(n=hi[e]=[]),n.push(t)}const om=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","</3","<3","\\M/",":E","8#"]);function Ct(e){return e.split(/[\s_]+/).map(t=>!t.match(/\w/)||om.has(t)?t.toLowerCase():t.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}const am=2;function Fc(e){return e.filter(Boolean).map(t=>t.toLowerCase()).filter(t=>t.length>=am)}function lm(e){return e.map(({annotation:n,emoticon:i,group:s,order:r,shortcodes:o,skins:a,tags:c,emoji:u,version:l})=>{const d=[...new Set(Fc([...(o||[]).map(Ct).flat(),...(c||[]).map(Ct).flat(),...Ct(n),i]))].sort(),h={annotation:n,group:s,order:r,tags:c,tokens:d,unicode:u,version:l};if(i&&(h.emoticon=i),o&&(h.shortcodes=o),a){h.skinTones=[],h.skinUnicodes=[],h.skinVersions=[];for(const{tone:v,emoji:y,version:b}of a)h.skinTones.push(v),h.skinUnicodes.push(y),h.skinVersions.push(b)}return h})}function Uc(e,t,n,i){e[t](n).onsuccess=s=>i&&i(s.target.result)}function ut(e,t,n){Uc(e,"get",t,n)}function Wc(e,t,n){Uc(e,"getAll",t,n)}function Br(e){e.commit&&e.commit()}function cm(e,t){let n=e[0];for(let i=1;i<e.length;i++){const s=e[i];t(n)>t(s)&&(n=s)}return n}function Kc(e,t){const n=cm(e,s=>s.length),i=[];for(const s of n)e.some(r=>r.findIndex(o=>t(o)===t(s))===-1)||i.push(s);return i}async function um(e){return!await Fr(e,Pt,pi)}async function dm(e,t,n){const[i,s]=await Promise.all([Ws,pi].map(r=>Fr(e,Pt,r)));return i===n&&s===t}async function pm(e,t){return De(e,ft,Nt,(i,s,r)=>{let o;const a=()=>{i.getAll(o&&IDBKeyRange.lowerBound(o,!0),50).onsuccess=c=>{const u=c.target.result;for(const l of u)if(o=l.unicode,t(l))return r(l);if(u.length<50)return r();a()}};a()})}async function zc(e,t,n,i){{const s=lm(t);await De(e,[ft,Pt],Dr,([r,o],a)=>{let c,u,l=0;function d(){++l===2&&h()}function h(){if(!(c===i&&u===n)){r.clear();for(const v of s)r.put(v);o.put(i,Ws),o.put(n,pi),Br(a)}}ut(o,Ws,v=>{c=v,d()}),ut(o,pi,v=>{u=v,d()})})}}async function hm(e,t){return De(e,ft,Nt,(n,i,s)=>{const r=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);Wc(n.index(Dc),r,s)})}async function jc(e,t){const n=Fc(Ct(t));return n.length?De(e,ft,Nt,(i,s,r)=>{const o=[],a=()=>{o.length===n.length&&c()},c=()=>{const u=Kc(o,l=>l.unicode);r(u.sort((l,d)=>l.order<d.order?-1:1))};for(let u=0;u<n.length;u++){const l=n[u],d=u===n.length-1?IDBKeyRange.bound(l,l+"￿",!1,!0):IDBKeyRange.only(l);Wc(i.index(Rc),d,h=>{o.push(h),a()})}}):[]}async function fm(e,t){const n=await jc(e,t);return n.length?n.filter(i=>(i.shortcodes||[]).map(r=>r.toLowerCase()).includes(t.toLowerCase()))[0]||null:await pm(e,s=>(s.shortcodes||[]).includes(t.toLowerCase()))||null}async function gm(e,t){return De(e,ft,Nt,(n,i,s)=>ut(n,t,r=>{if(r)return s(r);ut(n.index(Oc),t,o=>s(o||null))}))}function Fr(e,t,n){return De(e,t,Nt,(i,s,r)=>ut(i,n,r))}function mm(e,t,n,i){return De(e,t,Dr,(s,r)=>{s.put(i,n),Br(r)})}function ym(e,t){return De(e,Nr,Dr,(n,i)=>ut(n,t,s=>{n.put((s||0)+1,t),Br(i)}))}function vm(e,t,n){return n===0?[]:De(e,[Nr,ft],Nt,([i,s],r,o)=>{const a=[];i.index(Nc).openCursor(void 0,"prev").onsuccess=c=>{const u=c.target.result;if(!u)return o(a);function l(v){if(a.push(v),a.length===n)return o(a);u.continue()}const d=u.primaryKey,h=t.byName(d);if(h)return l(h);ut(s,d,v=>{if(v)return l(v);u.continue()})}})}const Kn="";function bm(e,t){const n=new Map;for(const s of e){const r=t(s);for(const o of r){let a=n;for(let u=0;u<o.length;u++){const l=o.charAt(u);let d=a.get(l);d||(d=new Map,a.set(l,d)),a=d}let c=a.get(Kn);c||(c=[],a.set(Kn,c)),c.push(s)}}return(s,r)=>{let o=n;for(let u=0;u<s.length;u++){const l=s.charAt(u),d=o.get(l);if(d)o=d;else return[]}if(r)return o.get(Kn)||[];const a=[],c=[o];for(;c.length;){const l=[...c.shift().entries()].sort((d,h)=>d[0]<h[0]?-1:1);for(const[d,h]of l)d===Kn?a.push(...h):c.push(h)}return a}}const wm=["name","url"];function km(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||wm.some(i=>!(i in e[0])));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function ka(e){km(e);const t=(h,v)=>h.name.toLowerCase()<v.name.toLowerCase()?-1:1,n=e.sort(t),s=bm(e,h=>{const v=new Set;if(h.shortcodes)for(const y of h.shortcodes)for(const b of Ct(y))v.add(b);return v}),r=h=>s(h,!0),o=h=>s(h,!1),a=h=>{const v=Ct(h),y=v.map((b,S)=>(S<v.length-1?r:o)(b));return Kc(y,b=>b.name).sort(t)},c=new Map,u=new Map;for(const h of e){u.set(h.name.toLowerCase(),h);for(const v of h.shortcodes||[])c.set(v.toLowerCase(),h)}return{all:n,search:a,byShortcode:h=>c.get(h.toLowerCase()),byName:h=>u.get(h.toLowerCase())}}const Sm=typeof wrappedJSObject<"u";function Qt(e){if(!e)return e;if(Sm&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n<t;n++)e.skins[n]={tone:e.skinTones[n],unicode:e.skinUnicodes[n],version:e.skinVersions[n]};delete e.skinTones,delete e.skinUnicodes,delete e.skinVersions}return e}function Hc(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const Am=["annotation","emoji","group","order","version"];function xm(e){if(!e||!Array.isArray(e)||!e[0]||typeof e[0]!="object"||Am.some(t=>!(t in e[0])))throw new Error("Emoji data is in the wrong format")}function qc(e,t){if(Math.floor(e.status/100)!==2)throw new Error("Failed to fetch: "+t+": "+e.status)}async function $m(e){const t=await fetch(e,{method:"HEAD"});qc(t,e);const n=t.headers.get("etag");return Hc(n),n}async function zs(e){const t=await fetch(e);qc(t,e);const n=t.headers.get("etag");Hc(n);const i=await t.json();return xm(i),[n,i]}function Em(e){for(var t="",n=new Uint8Array(e),i=n.byteLength,s=-1;++s<i;)t+=String.fromCharCode(n[s]);return t}function Cm(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),s=-1;++s<t;)i[s]=e.charCodeAt(s);return n}async function Vc(e){const t=JSON.stringify(e);let n=Cm(t);const i=await crypto.subtle.digest("SHA-1",n),s=Em(i);return btoa(s)}async function Tm(e,t){let n,i=await $m(t);if(!i){const s=await zs(t);i=s[0],n=s[1],i||(i=await Vc(n))}await dm(e,t,i)||(n||(n=(await zs(t))[1]),await zc(e,n,t,i))}async function _m(e,t){let[n,i]=await zs(t);n||(n=await Vc(i)),await zc(e,i,t,n)}async function Mm(e,t){try{await Tm(e,t)}catch(n){if(n.name!=="InvalidStateError")throw n}}class Pm{constructor({dataSource:t=Zg,locale:n=Jg,customEmoji:i=[]}={}){this.dataSource=t,this.locale=n,this._dbName=`emoji-picker-element-${this.locale}`,this._db=void 0,this._lazyUpdate=void 0,this._custom=ka(i),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const t=this._db=await im(this._dbName);rm(this._dbName,this._clear);const n=this.dataSource;await um(t)?await _m(t,n):this._lazyUpdate=Mm(t,n)}async ready(){const t=async()=>(this._ready||(this._ready=this._init()),this._ready);await t(),this._db||await t()}async getEmojiByGroup(t){return cs(t),await this.ready(),wa(await hm(this._db,t)).map(Qt)}async getEmojiBySearchQuery(t){Wn(t),await this.ready();const n=this._custom.search(t),i=wa(await jc(this._db,t)).map(Qt);return[...n,...i]}async getEmojiByShortcode(t){Wn(t),await this.ready();const n=this._custom.byShortcode(t);return n||Qt(await fm(this._db,t))}async getEmojiByUnicodeOrName(t){Wn(t),await this.ready();const n=this._custom.byName(t);return n||Qt(await gm(this._db,t))}async getPreferredSkinTone(){return await this.ready(),await Fr(this._db,Pt,ba)||0}async setPreferredSkinTone(t){return cs(t),await this.ready(),mm(this._db,Pt,ba,t)}async incrementFavoriteEmojiCount(t){return Wn(t),await this.ready(),ym(this._db,t)}async getTopFavoriteEmoji(t){return cs(t),await this.ready(),(await vm(this._db,this._custom,t)).map(Qt)}set customEmoji(t){this._custom=ka(t)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch{}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Or(this._dbName)}async delete(){await this._shutdown(),await sm(this._dbName)}}const js=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map(([e,t,n])=>({id:e,emoji:t,name:n})),us=js.slice(1),Lm=2,Sa=6,Gc=typeof requestIdleCallback=="function"?requestIdleCallback:setTimeout;function Aa(e){return e.unicode.includes("‍")}const Im={"🫪":17,"🫩":16,"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},Rm=1e3,Nm="🖐️",Dm=8,Om=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Qc='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Bm=(e,t)=>e<t?-1:e>t?1:0,xa=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const i=n.getContext("2d",{willReadFrequently:!0});return i.textBaseline="top",i.font=`100px ${Qc}`,i.fillStyle=t,i.scale(.01,.01),i.fillText(e,0,0),i.getImageData(0,0,1,1).data},Fm=(e,t)=>{const n=[...e].join(","),i=[...t].join(",");return n===i&&!n.startsWith("0,0,0,")};function Um(e){const t=xa(e,"#000"),n=xa(e,"#fff");return t&&n&&Fm(t,n)}function Wm(){const e=Object.entries(Im);try{for(const[t,n]of e)if(Um(t))return n}catch{}return e[0][1]}let ds;const ps=()=>(ds||(ds=new Promise(e=>Gc(()=>e(Wm())))),ds),Hs=new Map,Km="️",zm="\uD83C",jm="‍",Hm=127995,qm=57339;function Vm(e,t){if(t===0)return e;const n=e.indexOf(jm);return n!==-1?e.substring(0,n)+String.fromCodePoint(Hm+t-1)+e.substring(n):(e.endsWith(Km)&&(e=e.substring(0,e.length-1)),e+zm+String.fromCodePoint(qm+t-1))}function xe(e){e.preventDefault(),e.stopPropagation()}function hs(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function Yc(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function Gm(e,t){const n=i=>{const s={};for(const r of i)typeof r.tone=="number"&&r.version<=t&&(s[r.tone]=r.unicode);return s};return e.map(({unicode:i,skins:s,shortcodes:r,url:o,name:a,category:c,annotation:u})=>({unicode:i,name:a,shortcodes:r,url:o,category:c,annotation:u,id:i||a,skins:s&&n(s)}))}const Yn=requestAnimationFrame;let Qm=typeof ResizeObserver=="function";function Ym(e,t,n){let i;Qm?(i=new ResizeObserver(n),i.observe(e)):Yn(n),t.addEventListener("abort",()=>{i&&i.disconnect()})}function $a(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let fs;function Xm(e,t,n){let i=!0,s=!1;for(const r of e){const o=n(r);if(!o)continue;const a=$a(o);a===0&&(s=!0),typeof fs>"u"&&(fs=$a(t));const c=a/1.8<fs;Hs.set(r.unicode,c),c||(i=!1)}return s&&console.warn(`Emoji support detection failed - emoji character is 0 width.
2101
+ `;Ci([bi({type:Number})],Pt.prototype,"splitRatio",2);Ci([bi({type:Number})],Pt.prototype,"minRatio",2);Ci([bi({type:Number})],Pt.prototype,"maxRatio",2);Pt=Ci([ol("resizable-divider")],Pt);function Wn(e){if(typeof e!="string"||!e)throw new Error("expected a non-empty string, got: "+e)}function cs(e){if(typeof e!="number")throw new Error("expected a number, got: "+e)}const Vg=1,Gg=1,gt="emoji",Lt="keyvalue",Nr="favorites",Qg="tokens",Nc="tokens",Yg="unicode",Dc="count",Xg="group",Zg="order",Oc="group-order",Ws="eTag",pi="url",ba="skinTone",Nt="readonly",Dr="readwrite",Bc="skinUnicodes",Jg="skinUnicodes",em="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",tm="en";function nm(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function wa(e){return nm(e,t=>t.unicode)}function im(e){function t(n,i,s){const r=i?e.createObjectStore(n,{keyPath:i}):e.createObjectStore(n);if(s)for(const[o,[a,c]]of Object.entries(s))r.createIndex(o,a,{multiEntry:c});return r}t(Lt),t(gt,Yg,{[Nc]:[Qg,!0],[Oc]:[[Xg,Zg]],[Bc]:[Jg,!0]}),t(Nr,void 0,{[Dc]:[""]})}const Ks={},Qn={},hi={};function Fc(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function sm(e){const t=await new Promise((n,i)=>{const s=indexedDB.open(e,Vg);Ks[e]=s,s.onupgradeneeded=r=>{r.oldVersion<Gg&&im(s.result)},Fc(n,i,s)});return t.onclose=()=>Or(e),t}function rm(e){return Qn[e]||(Qn[e]=sm(e)),Qn[e]}function Oe(e,t,n,i){return new Promise((s,r)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a=typeof t=="string"?o.objectStore(t):t.map(u=>o.objectStore(u));let c;i(a,o,u=>{c=u}),o.oncomplete=()=>s(c),o.onerror=()=>r(o.error)})}function Or(e){const t=Ks[e],n=t&&t.result;if(n){n.close();const i=hi[e];if(i)for(const s of i)s()}delete Ks[e],delete Qn[e],delete hi[e]}function om(e){return new Promise((t,n)=>{Or(e);const i=indexedDB.deleteDatabase(e);Fc(t,n,i)})}function am(e,t){let n=hi[e];n||(n=hi[e]=[]),n.push(t)}const lm=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","</3","<3","\\M/",":E","8#"]);function Ct(e){return e.split(/[\s_]+/).map(t=>!t.match(/\w/)||lm.has(t)?t.toLowerCase():t.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}const cm=2;function Uc(e){return e.filter(Boolean).map(t=>t.toLowerCase()).filter(t=>t.length>=cm)}function um(e){return e.map(({annotation:n,emoticon:i,group:s,order:r,shortcodes:o,skins:a,tags:c,emoji:u,version:l})=>{const d=[...new Set(Uc([...(o||[]).map(Ct).flat(),...(c||[]).map(Ct).flat(),...Ct(n),i]))].sort(),h={annotation:n,group:s,order:r,tags:c,tokens:d,unicode:u,version:l};if(i&&(h.emoticon=i),o&&(h.shortcodes=o),a){h.skinTones=[],h.skinUnicodes=[],h.skinVersions=[];for(const{tone:v,emoji:f,version:b}of a)h.skinTones.push(v),h.skinUnicodes.push(f),h.skinVersions.push(b)}return h})}function Wc(e,t,n,i){e[t](n).onsuccess=s=>i&&i(s.target.result)}function dt(e,t,n){Wc(e,"get",t,n)}function Kc(e,t,n){Wc(e,"getAll",t,n)}function Br(e){e.commit&&e.commit()}function dm(e,t){let n=e[0];for(let i=1;i<e.length;i++){const s=e[i];t(n)>t(s)&&(n=s)}return n}function zc(e,t){const n=dm(e,s=>s.length),i=[];for(const s of n)e.some(r=>r.findIndex(o=>t(o)===t(s))===-1)||i.push(s);return i}async function pm(e){return!await Fr(e,Lt,pi)}async function hm(e,t,n){const[i,s]=await Promise.all([Ws,pi].map(r=>Fr(e,Lt,r)));return i===n&&s===t}async function fm(e,t){return Oe(e,gt,Nt,(i,s,r)=>{let o;const a=()=>{i.getAll(o&&IDBKeyRange.lowerBound(o,!0),50).onsuccess=c=>{const u=c.target.result;for(const l of u)if(o=l.unicode,t(l))return r(l);if(u.length<50)return r();a()}};a()})}async function jc(e,t,n,i){{const s=um(t);await Oe(e,[gt,Lt],Dr,([r,o],a)=>{let c,u,l=0;function d(){++l===2&&h()}function h(){if(!(c===i&&u===n)){r.clear();for(const v of s)r.put(v);o.put(i,Ws),o.put(n,pi),Br(a)}}dt(o,Ws,v=>{c=v,d()}),dt(o,pi,v=>{u=v,d()})})}}async function gm(e,t){return Oe(e,gt,Nt,(n,i,s)=>{const r=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);Kc(n.index(Oc),r,s)})}async function Hc(e,t){const n=Uc(Ct(t));return n.length?Oe(e,gt,Nt,(i,s,r)=>{const o=[],a=()=>{o.length===n.length&&c()},c=()=>{const u=zc(o,l=>l.unicode);r(u.sort((l,d)=>l.order<d.order?-1:1))};for(let u=0;u<n.length;u++){const l=n[u],d=u===n.length-1?IDBKeyRange.bound(l,l+"￿",!1,!0):IDBKeyRange.only(l);Kc(i.index(Nc),d,h=>{o.push(h),a()})}}):[]}async function mm(e,t){const n=await Hc(e,t);return n.length?n.filter(i=>(i.shortcodes||[]).map(r=>r.toLowerCase()).includes(t.toLowerCase()))[0]||null:await fm(e,s=>(s.shortcodes||[]).includes(t.toLowerCase()))||null}async function ym(e,t){return Oe(e,gt,Nt,(n,i,s)=>dt(n,t,r=>{if(r)return s(r);dt(n.index(Bc),t,o=>s(o||null))}))}function Fr(e,t,n){return Oe(e,t,Nt,(i,s,r)=>dt(i,n,r))}function vm(e,t,n,i){return Oe(e,t,Dr,(s,r)=>{s.put(i,n),Br(r)})}function bm(e,t){return Oe(e,Nr,Dr,(n,i)=>dt(n,t,s=>{n.put((s||0)+1,t),Br(i)}))}function wm(e,t,n){return n===0?[]:Oe(e,[Nr,gt],Nt,([i,s],r,o)=>{const a=[];i.index(Dc).openCursor(void 0,"prev").onsuccess=c=>{const u=c.target.result;if(!u)return o(a);function l(v){if(a.push(v),a.length===n)return o(a);u.continue()}const d=u.primaryKey,h=t.byName(d);if(h)return l(h);dt(s,d,v=>{if(v)return l(v);u.continue()})}})}const Kn="";function km(e,t){const n=new Map;for(const s of e){const r=t(s);for(const o of r){let a=n;for(let u=0;u<o.length;u++){const l=o.charAt(u);let d=a.get(l);d||(d=new Map,a.set(l,d)),a=d}let c=a.get(Kn);c||(c=[],a.set(Kn,c)),c.push(s)}}return(s,r)=>{let o=n;for(let u=0;u<s.length;u++){const l=s.charAt(u),d=o.get(l);if(d)o=d;else return[]}if(r)return o.get(Kn)||[];const a=[],c=[o];for(;c.length;){const l=[...c.shift().entries()].sort((d,h)=>d[0]<h[0]?-1:1);for(const[d,h]of l)d===Kn?a.push(...h):c.push(h)}return a}}const Sm=["name","url"];function Am(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||Sm.some(i=>!(i in e[0])));if(!t||n)throw new Error("Custom emojis are in the wrong format")}function ka(e){Am(e);const t=(h,v)=>h.name.toLowerCase()<v.name.toLowerCase()?-1:1,n=e.sort(t),s=km(e,h=>{const v=new Set;if(h.shortcodes)for(const f of h.shortcodes)for(const b of Ct(f))v.add(b);return v}),r=h=>s(h,!0),o=h=>s(h,!1),a=h=>{const v=Ct(h),f=v.map((b,k)=>(k<v.length-1?r:o)(b));return zc(f,b=>b.name).sort(t)},c=new Map,u=new Map;for(const h of e){u.set(h.name.toLowerCase(),h);for(const v of h.shortcodes||[])c.set(v.toLowerCase(),h)}return{all:n,search:a,byShortcode:h=>c.get(h.toLowerCase()),byName:h=>u.get(h.toLowerCase())}}const xm=typeof wrappedJSObject<"u";function Qt(e){if(!e)return e;if(xm&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n<t;n++)e.skins[n]={tone:e.skinTones[n],unicode:e.skinUnicodes[n],version:e.skinVersions[n]};delete e.skinTones,delete e.skinUnicodes,delete e.skinVersions}return e}function qc(e){e||console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.")}const $m=["annotation","emoji","group","order","version"];function Em(e){if(!e||!Array.isArray(e)||!e[0]||typeof e[0]!="object"||$m.some(t=>!(t in e[0])))throw new Error("Emoji data is in the wrong format")}function Vc(e,t){if(Math.floor(e.status/100)!==2)throw new Error("Failed to fetch: "+t+": "+e.status)}async function Tm(e){const t=await fetch(e,{method:"HEAD"});Vc(t,e);const n=t.headers.get("etag");return qc(n),n}async function zs(e){const t=await fetch(e);Vc(t,e);const n=t.headers.get("etag");qc(n);const i=await t.json();return Em(i),[n,i]}function Cm(e){for(var t="",n=new Uint8Array(e),i=n.byteLength,s=-1;++s<i;)t+=String.fromCharCode(n[s]);return t}function _m(e){for(var t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n),s=-1;++s<t;)i[s]=e.charCodeAt(s);return n}async function Gc(e){const t=JSON.stringify(e);let n=_m(t);const i=await crypto.subtle.digest("SHA-1",n),s=Cm(i);return btoa(s)}async function Mm(e,t){let n,i=await Tm(t);if(!i){const s=await zs(t);i=s[0],n=s[1],i||(i=await Gc(n))}await hm(e,t,i)||(n||(n=(await zs(t))[1]),await jc(e,n,t,i))}async function Pm(e,t){let[n,i]=await zs(t);n||(n=await Gc(i)),await jc(e,i,t,n)}async function Lm(e,t){try{await Mm(e,t)}catch(n){if(n.name!=="InvalidStateError")throw n}}class Im{constructor({dataSource:t=em,locale:n=tm,customEmoji:i=[]}={}){this.dataSource=t,this.locale=n,this._dbName=`emoji-picker-element-${this.locale}`,this._db=void 0,this._lazyUpdate=void 0,this._custom=ka(i),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const t=this._db=await rm(this._dbName);am(this._dbName,this._clear);const n=this.dataSource;await pm(t)?await Pm(t,n):this._lazyUpdate=Lm(t,n)}async ready(){const t=async()=>(this._ready||(this._ready=this._init()),this._ready);await t(),this._db||await t()}async getEmojiByGroup(t){return cs(t),await this.ready(),wa(await gm(this._db,t)).map(Qt)}async getEmojiBySearchQuery(t){Wn(t),await this.ready();const n=this._custom.search(t),i=wa(await Hc(this._db,t)).map(Qt);return[...n,...i]}async getEmojiByShortcode(t){Wn(t),await this.ready();const n=this._custom.byShortcode(t);return n||Qt(await mm(this._db,t))}async getEmojiByUnicodeOrName(t){Wn(t),await this.ready();const n=this._custom.byName(t);return n||Qt(await ym(this._db,t))}async getPreferredSkinTone(){return await this.ready(),await Fr(this._db,Lt,ba)||0}async setPreferredSkinTone(t){return cs(t),await this.ready(),vm(this._db,Lt,ba,t)}async incrementFavoriteEmojiCount(t){return Wn(t),await this.ready(),bm(this._db,t)}async getTopFavoriteEmoji(t){return cs(t),await this.ready(),(await wm(this._db,this._custom,t)).map(Qt)}set customEmoji(t){this._custom=ka(t)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch{}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Or(this._dbName)}async delete(){await this._shutdown(),await om(this._dbName)}}const js=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map(([e,t,n])=>({id:e,emoji:t,name:n})),us=js.slice(1),Rm=2,Sa=6,Qc=typeof requestIdleCallback=="function"?requestIdleCallback:setTimeout;function Aa(e){return e.unicode.includes("‍")}const Nm={"🫪":17,"🫩":16,"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},Dm=1e3,Om="🖐️",Bm=8,Fm=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Yc='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Um=(e,t)=>e<t?-1:e>t?1:0,xa=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const i=n.getContext("2d",{willReadFrequently:!0});return i.textBaseline="top",i.font=`100px ${Yc}`,i.fillStyle=t,i.scale(.01,.01),i.fillText(e,0,0),i.getImageData(0,0,1,1).data},Wm=(e,t)=>{const n=[...e].join(","),i=[...t].join(",");return n===i&&!n.startsWith("0,0,0,")};function Km(e){const t=xa(e,"#000"),n=xa(e,"#fff");return t&&n&&Wm(t,n)}function zm(){const e=Object.entries(Nm);try{for(const[t,n]of e)if(Km(t))return n}catch{}return e[0][1]}let ds;const ps=()=>(ds||(ds=new Promise(e=>Qc(()=>e(zm())))),ds),Hs=new Map,jm="️",Hm="\uD83C",qm="‍",Vm=127995,Gm=57339;function Qm(e,t){if(t===0)return e;const n=e.indexOf(qm);return n!==-1?e.substring(0,n)+String.fromCodePoint(Vm+t-1)+e.substring(n):(e.endsWith(jm)&&(e=e.substring(0,e.length-1)),e+Hm+String.fromCodePoint(Gm+t-1))}function $e(e){e.preventDefault(),e.stopPropagation()}function hs(e,t,n){return t+=e?-1:1,t<0?t=n.length-1:t>=n.length&&(t=0),t}function Xc(e,t){const n=new Set,i=[];for(const s of e){const r=t(s);n.has(r)||(n.add(r),i.push(s))}return i}function Ym(e,t){const n=i=>{const s={};for(const r of i)typeof r.tone=="number"&&r.version<=t&&(s[r.tone]=r.unicode);return s};return e.map(({unicode:i,skins:s,shortcodes:r,url:o,name:a,category:c,annotation:u})=>({unicode:i,name:a,shortcodes:r,url:o,category:c,annotation:u,id:i||a,skins:s&&n(s)}))}const Yn=requestAnimationFrame;let Xm=typeof ResizeObserver=="function";function Zm(e,t,n){let i;Xm?(i=new ResizeObserver(n),i.observe(e)):Yn(n),t.addEventListener("abort",()=>{i&&i.disconnect()})}function $a(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let fs;function Jm(e,t,n){let i=!0,s=!1;for(const r of e){const o=n(r);if(!o)continue;const a=$a(o);a===0&&(s=!0),typeof fs>"u"&&(fs=$a(t));const c=a/1.8<fs;Hs.set(r.unicode,c),c||(i=!1)}return s&&console.warn(`Emoji support detection failed - emoji character is 0 width.
1935
2102
  This is likely due to using \`display:none\` which is unsupported.
1936
2103
  If this is a Jest/Vitest environment, you can ignore this warning.
1937
- For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`),i}function Zm(e){return Yc(e,t=>t)}function Jm(e){e&&(e.scrollTop=0)}function an(e,t,n){let i=e.get(t);return i||(i=n(),e.set(t,i)),i}function Ea(e){return""+e}function ey(e){const t=document.createElement("template");return t.innerHTML=e,t}const ty=new WeakMap,ny=new WeakMap,iy=Symbol("un-keyed"),sy="replaceChildren"in Element.prototype;function ry(e,t){sy?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}function oy(e,t){let n=e.firstChild,i=0;for(;n;){if(t[i]!==n)return!0;n=n.nextSibling,i++}return i!==t.length}function ay(e,t){const{targetNode:n}=t;let{targetParentNode:i}=t,s=!1;i?s=oy(i,e):(s=!0,t.targetNode=void 0,t.targetParentNode=i=n.parentNode),s&&ry(i,e)}function ly(e,t){for(const n of t){const{targetNode:i,currentExpression:s,binding:{expressionIndex:r,attributeName:o,attributeValuePre:a,attributeValuePost:c}}=n,u=e[r];if(s!==u)if(n.currentExpression=u,o)if(u===null)i.removeAttribute(o);else{const l=a+Ea(u)+c;i.setAttribute(o,l)}else{let l;Array.isArray(u)?ay(u,n):u instanceof Element?(l=u,i.replaceWith(l)):i.nodeValue=Ea(u),l&&(n.targetNode=l)}}}function cy(e){let t="",n=!1,i=!1,s=-1;const r=new Map,o=[];let a=0;for(let u=0,l=e.length;u<l;u++){const d=e[u];if(t+=d.slice(a),u===l-1)break;for(let $=0;$<d.length;$++)switch(d.charAt($)){case"<":{d.charAt($+1)==="/"?o.pop():(n=!0,o.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const h=o[o.length-1],v=an(r,h,()=>[]);let y,b,S;if(i){const $=/(\S+)="?([^"=]*)$/.exec(d);y=$[1],b=$[2];const C=/^([^">]*)("?)/.exec(e[u+1]);S=C[1],t=t.slice(0,-1*$[0].length),a=C[0].length}else a=0;const x={attributeName:y,attributeValuePre:b,attributeValuePost:S,expressionIndex:u};v.push(x),!n&&!i&&(t+=" ")}return{template:ey(t),elementsToBindings:r}}function Ca(e,t,n){for(let i=0;i<e.length;i++){const s=e[i],r=s.attributeName?t:t.firstChild,o={binding:s,targetNode:r,targetParentNode:void 0,currentExpression:void 0};n.push(o)}}function uy(e,t){const n=[];let i;if(t.size===1&&(i=t.get(0)))Ca(i,e,n);else{const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let r=e,o=-1;do{const a=t.get(++o);a&&Ca(a,r,n)}while(r=s.nextNode())}return n}function dy(e){const{template:t,elementsToBindings:n}=an(ty,e,()=>cy(e)),i=t.cloneNode(!0).content.firstElementChild,s=uy(i,n);return function(o){return ly(o,s),i}}function py(e){const t=an(ny,e,()=>new Map);let n=iy;function i(r,...o){const a=an(t,r,()=>new Map);return an(a,n,()=>dy(r))(o)}function s(r,o,a){return r.map((c,u)=>{const l=n;n=a(c);try{return o(c,u)}finally{n=l}})}return{map:s,html:i}}function hy(e,t,n,i,s,r,o,a,c){const{labelWithSkin:u,titleForEmoji:l,unicodeWithSkin:d}=n,{html:h,map:v}=py(t);function y($,C,T){return v($,(M,R)=>h`<button role="${C?"option":"menuitem"}" aria-selected="${C?R===t.activeSearchItem:null}" aria-label="${u(M,t.currentSkinTone)}" title="${l(M)}" class="${"emoji"+(C&&R===t.activeSearchItem?" active":"")+(M.unicode?"":" custom-emoji")}" id="${`${T}-${M.id}`}" style="${M.unicode?null:`--custom-emoji-background: url(${JSON.stringify(M.url)})`}">${M.unicode?d(M,t.currentSkinTone):""}</button>`,M=>`${T}-${M.id}`)}const S=h`<section data-ref="rootElement" class="picker" aria-label="${t.i18n.regionLabel}" style="${t.pickerStyle||""}"><div class="pad-top"></div><div class="search-row"><div class="search-wrapper"><input id="search" class="search" type="search" role="combobox" enterkeyhint="search" placeholder="${t.i18n.searchLabel}" autocapitalize="none" autocomplete="off" spellcheck="true" aria-expanded="${!!(t.searchMode&&t.currentEmojis.length)}" aria-controls="search-results" aria-describedby="search-description" aria-autocomplete="list" aria-activedescendant="${t.activeSearchItemId?`emo-${t.activeSearchItemId}`:null}" data-ref="searchElement" data-on-input="onSearchInput" data-on-keydown="onSearchKeydown"><label class="sr-only" for="search">${t.i18n.searchLabel}</label> <span id="search-description" class="sr-only">${t.i18n.searchDescription}</span></div><div class="skintone-button-wrapper ${t.skinTonePickerExpandedAfterAnimation?"expanded":""}"><button id="skintone-button" class="emoji ${t.skinTonePickerExpanded?"hide-focus":""}" aria-label="${t.skinToneButtonLabel}" title="${t.skinToneButtonLabel}" aria-describedby="skintone-description" aria-haspopup="listbox" aria-expanded="${t.skinTonePickerExpanded}" aria-controls="skintone-list" data-on-click="onClickSkinToneButton">${t.skinToneButtonText||""}</button></div><span id="skintone-description" class="sr-only">${t.i18n.skinToneDescription}</span><div data-ref="skinToneDropdown" id="skintone-list" class="skintone-list hide-focus ${t.skinTonePickerExpanded?"":"hidden no-animate"}" style="transform:translateY(${t.skinTonePickerExpanded?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))"})" role="listbox" aria-label="${t.i18n.skinTonesLabel}" aria-activedescendant="skintone-${t.activeSkinTone}" aria-hidden="${!t.skinTonePickerExpanded}" tabIndex="-1" data-on-focusout="onSkinToneOptionsFocusOut" data-on-click="onSkinToneOptionsClick" data-on-keydown="onSkinToneOptionsKeydown" data-on-keyup="onSkinToneOptionsKeyup">${v(t.skinTones,($,C)=>h`<div id="skintone-${C}" class="emoji ${C===t.activeSkinTone?"active":""}" aria-selected="${C===t.activeSkinTone}" role="option" title="${t.i18n.skinTones[C]}" aria-label="${t.i18n.skinTones[C]}">${$}</div>`,$=>$)}</div></div><div class="nav" role="tablist" style="grid-template-columns:repeat(${t.groups.length},1fr)" aria-label="${t.i18n.categoriesLabel}" data-on-keydown="onNavKeydown" data-on-click="onNavClick">${v(t.groups,$=>h`<button role="tab" class="nav-button" aria-controls="tab-${$.id}" aria-label="${t.i18n.categories[$.name]}" aria-selected="${!t.searchMode&&t.currentGroup.id===$.id}" title="${t.i18n.categories[$.name]}" data-group-id="${$.id}"><div class="nav-emoji emoji">${$.emoji}</div></button>`,$=>$.id)}</div><div class="indicator-wrapper"><div class="indicator" style="transform:translateX(${(t.isRtl?-1:1)*t.currentGroupIndex*100}%)"></div></div><div class="message ${t.message?"":"gone"}" role="alert" aria-live="polite">${t.message||""}</div><div data-ref="tabpanelElement" class="tabpanel ${!t.databaseLoaded||t.message?"gone":""}" role="${t.searchMode?"region":"tabpanel"}" aria-label="${t.searchMode?t.i18n.searchResultsLabel:t.i18n.categories[t.currentGroup.name]}" id="${t.searchMode?null:`tab-${t.currentGroup.id}`}" tabIndex="0" data-on-click="onEmojiClick"><div data-action="calculateEmojiGridStyle">${v(t.currentEmojisWithCategories,($,C)=>h`<div><div id="menu-label-${C}" class="category ${t.currentEmojisWithCategories.length===1&&t.currentEmojisWithCategories[0].category===""?"gone":""}" aria-hidden="true">${t.searchMode?t.i18n.searchResultsLabel:$.category?$.category:t.currentEmojisWithCategories.length>1?t.i18n.categories.custom:t.i18n.categories[t.currentGroup.name]}</div><div class="emoji-menu ${C!==0&&!t.searchMode&&t.currentGroup.id===-1?"visibility-auto":""}" style="${`--num-rows: ${Math.ceil($.emojis.length/t.numColumns)}`}" data-action="updateOnIntersection" role="${t.searchMode?"listbox":"menu"}" aria-labelledby="menu-label-${C}" id="${t.searchMode?"search-results":null}">${y($.emojis,t.searchMode,"emo")}</div></div>`,$=>$.category)}</div></div><div class="favorites onscreen emoji-menu ${t.message?"gone":""}" role="menu" aria-label="${t.i18n.favoritesLabel}" data-on-click="onEmojiClick">${y(t.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,x=($,C)=>{for(const T of e.querySelectorAll(`[${$}]`))C(T,T.getAttribute($))};if(c){e.appendChild(S);for(const $ of["click","focusout","input","keydown","keyup"])x(`data-on-${$}`,(C,T)=>{C.addEventListener($,i[T])});x("data-ref",($,C)=>{r[C]=$}),o.addEventListener("abort",()=>{e.removeChild(S)})}x("data-action",($,C)=>{let T=a.get(C);T||a.set(C,T=new WeakSet),T.has($)||(T.add($),s[C]($))})}const fi=typeof queueMicrotask=="function"?queueMicrotask:e=>Promise.resolve().then(e);function fy(e){let t=!1,n;const i=new Map,s=new Set;let r;const o=()=>{if(t)return;const u=[...s];s.clear();try{for(const l of u)l()}finally{r=!1,s.size&&(r=!0,fi(o))}},a=new Proxy({},{get(u,l){if(n){let d=i.get(l);d||(d=new Set,i.set(l,d)),d.add(n)}return u[l]},set(u,l,d){if(u[l]!==d){u[l]=d;const h=i.get(l);if(h){for(const v of h)s.add(v);r||(r=!0,fi(o))}}return!0}}),c=u=>{const l=()=>{const d=n;n=l;try{return u()}finally{n=d}};return l()};return e.addEventListener("abort",()=>{t=!0}),{state:a,createEffect:c}}function gs(e,t,n){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!n(e[i],t[i]))return!1;return!0}const Ta=new WeakMap;function gy(e,t,n){{const i=e.closest(".tabpanel");let s=Ta.get(i);s||(s=new IntersectionObserver(n,{root:i,rootMargin:"50% 0px 50% 0px",threshold:0}),Ta.set(i,s),t.addEventListener("abort",()=>{s.disconnect()})),s.observe(e)}}const ms=[],{assign:zn}=Object;function my(e,t){const n={},i=new AbortController,s=i.signal,{state:r,createEffect:o}=fy(s),a=new Map;zn(r,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),zn(r,t),zn(r,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:Dm,isRtl:!1,currentGroupIndex:0,groups:us,databaseLoaded:!1,activeSearchItemId:void 0}),o(()=>{r.currentGroup!==r.groups[r.currentGroupIndex]&&(r.currentGroup=r.groups[r.currentGroupIndex])});const c=A=>{e.getElementById(A).focus()},u=A=>e.getElementById(`emo-${A.id}`),l=(A,_)=>{n.rootElement.dispatchEvent(new CustomEvent(A,{detail:_,bubbles:!0,composed:!0}))},d=(A,_)=>A.id===_.id,h=(A,_)=>{const{category:N,emojis:D}=A,{category:q,emojis:z}=_;return N!==q?!1:gs(D,z,d)},v=A=>{gs(r.currentEmojis,A,d)||(r.currentEmojis=A)},y=A=>{r.searchMode!==A&&(r.searchMode=A)},b=A=>{gs(r.currentEmojisWithCategories,A,h)||(r.currentEmojisWithCategories=A)},S=(A,_)=>_&&A.skins&&A.skins[_]||A.unicode,C={labelWithSkin:(A,_)=>Zm([A.name||S(A,_),A.annotation,...A.shortcodes||ms].filter(Boolean)).join(", "),titleForEmoji:A=>A.annotation||(A.shortcodes||ms).join(", "),unicodeWithSkin:S},T={onClickSkinToneButton:H,onEmojiClick:Sn,onNavClick:wn,onNavKeydown:Ii,onSearchKeydown:Li,onSkinToneOptionsClick:An,onSkinToneOptionsFocusOut:Be,onSkinToneOptionsKeydown:Qe,onSkinToneOptionsKeyup:Ot,onSearchInput:xn},M={calculateEmojiGridStyle:J,updateOnIntersection:ge};let R=!0;o(()=>{hy(e,r,C,T,M,n,s,a,R),R=!1}),r.emojiVersion||ps().then(A=>{A||(r.message=r.i18n.emojiUnsupportedMessage)}),o(()=>{async function A(){let _=!1;const N=setTimeout(()=>{_=!0,r.message=r.i18n.loadingMessage},Rm);try{await r.database.ready(),r.databaseLoaded=!0}catch(D){console.error(D),r.message=r.i18n.networkErrorMessage}finally{clearTimeout(N),_&&(_=!1,r.message="")}}r.database&&A()}),o(()=>{r.pickerStyle=`
2104
+ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`),i}function ey(e){return Xc(e,t=>t)}function ty(e){e&&(e.scrollTop=0)}function an(e,t,n){let i=e.get(t);return i||(i=n(),e.set(t,i)),i}function Ea(e){return""+e}function ny(e){const t=document.createElement("template");return t.innerHTML=e,t}const iy=new WeakMap,sy=new WeakMap,ry=Symbol("un-keyed"),oy="replaceChildren"in Element.prototype;function ay(e,t){oy?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}function ly(e,t){let n=e.firstChild,i=0;for(;n;){if(t[i]!==n)return!0;n=n.nextSibling,i++}return i!==t.length}function cy(e,t){const{targetNode:n}=t;let{targetParentNode:i}=t,s=!1;i?s=ly(i,e):(s=!0,t.targetNode=void 0,t.targetParentNode=i=n.parentNode),s&&ay(i,e)}function uy(e,t){for(const n of t){const{targetNode:i,currentExpression:s,binding:{expressionIndex:r,attributeName:o,attributeValuePre:a,attributeValuePost:c}}=n,u=e[r];if(s!==u)if(n.currentExpression=u,o)if(u===null)i.removeAttribute(o);else{const l=a+Ea(u)+c;i.setAttribute(o,l)}else{let l;Array.isArray(u)?cy(u,n):u instanceof Element?(l=u,i.replaceWith(l)):i.nodeValue=Ea(u),l&&(n.targetNode=l)}}}function dy(e){let t="",n=!1,i=!1,s=-1;const r=new Map,o=[];let a=0;for(let u=0,l=e.length;u<l;u++){const d=e[u];if(t+=d.slice(a),u===l-1)break;for(let $=0;$<d.length;$++)switch(d.charAt($)){case"<":{d.charAt($+1)==="/"?o.pop():(n=!0,o.push(++s));break}case">":{n=!1,i=!1;break}case"=":{i=!0;break}}const h=o[o.length-1],v=an(r,h,()=>[]);let f,b,k;if(i){const $=/(\S+)="?([^"=]*)$/.exec(d);f=$[1],b=$[2];const T=/^([^">]*)("?)/.exec(e[u+1]);k=T[1],t=t.slice(0,-1*$[0].length),a=T[0].length}else a=0;const x={attributeName:f,attributeValuePre:b,attributeValuePost:k,expressionIndex:u};v.push(x),!n&&!i&&(t+=" ")}return{template:ny(t),elementsToBindings:r}}function Ta(e,t,n){for(let i=0;i<e.length;i++){const s=e[i],r=s.attributeName?t:t.firstChild,o={binding:s,targetNode:r,targetParentNode:void 0,currentExpression:void 0};n.push(o)}}function py(e,t){const n=[];let i;if(t.size===1&&(i=t.get(0)))Ta(i,e,n);else{const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let r=e,o=-1;do{const a=t.get(++o);a&&Ta(a,r,n)}while(r=s.nextNode())}return n}function hy(e){const{template:t,elementsToBindings:n}=an(iy,e,()=>dy(e)),i=t.cloneNode(!0).content.firstElementChild,s=py(i,n);return function(o){return uy(o,s),i}}function fy(e){const t=an(sy,e,()=>new Map);let n=ry;function i(r,...o){const a=an(t,r,()=>new Map);return an(a,n,()=>hy(r))(o)}function s(r,o,a){return r.map((c,u)=>{const l=n;n=a(c);try{return o(c,u)}finally{n=l}})}return{map:s,html:i}}function gy(e,t,n,i,s,r,o,a,c){const{labelWithSkin:u,titleForEmoji:l,unicodeWithSkin:d}=n,{html:h,map:v}=fy(t);function f($,T,C){return v($,(M,R)=>h`<button role="${T?"option":"menuitem"}" aria-selected="${T?R===t.activeSearchItem:null}" aria-label="${u(M,t.currentSkinTone)}" title="${l(M)}" class="${"emoji"+(T&&R===t.activeSearchItem?" active":"")+(M.unicode?"":" custom-emoji")}" id="${`${C}-${M.id}`}" style="${M.unicode?null:`--custom-emoji-background: url(${JSON.stringify(M.url)})`}">${M.unicode?d(M,t.currentSkinTone):""}</button>`,M=>`${C}-${M.id}`)}const k=h`<section data-ref="rootElement" class="picker" aria-label="${t.i18n.regionLabel}" style="${t.pickerStyle||""}"><div class="pad-top"></div><div class="search-row"><div class="search-wrapper"><input id="search" class="search" type="search" role="combobox" enterkeyhint="search" placeholder="${t.i18n.searchLabel}" autocapitalize="none" autocomplete="off" spellcheck="true" aria-expanded="${!!(t.searchMode&&t.currentEmojis.length)}" aria-controls="search-results" aria-describedby="search-description" aria-autocomplete="list" aria-activedescendant="${t.activeSearchItemId?`emo-${t.activeSearchItemId}`:null}" data-ref="searchElement" data-on-input="onSearchInput" data-on-keydown="onSearchKeydown"><label class="sr-only" for="search">${t.i18n.searchLabel}</label> <span id="search-description" class="sr-only">${t.i18n.searchDescription}</span></div><div class="skintone-button-wrapper ${t.skinTonePickerExpandedAfterAnimation?"expanded":""}"><button id="skintone-button" class="emoji ${t.skinTonePickerExpanded?"hide-focus":""}" aria-label="${t.skinToneButtonLabel}" title="${t.skinToneButtonLabel}" aria-describedby="skintone-description" aria-haspopup="listbox" aria-expanded="${t.skinTonePickerExpanded}" aria-controls="skintone-list" data-on-click="onClickSkinToneButton">${t.skinToneButtonText||""}</button></div><span id="skintone-description" class="sr-only">${t.i18n.skinToneDescription}</span><div data-ref="skinToneDropdown" id="skintone-list" class="skintone-list hide-focus ${t.skinTonePickerExpanded?"":"hidden no-animate"}" style="transform:translateY(${t.skinTonePickerExpanded?0:"calc(-1 * var(--num-skintones) * var(--total-emoji-size))"})" role="listbox" aria-label="${t.i18n.skinTonesLabel}" aria-activedescendant="skintone-${t.activeSkinTone}" aria-hidden="${!t.skinTonePickerExpanded}" tabIndex="-1" data-on-focusout="onSkinToneOptionsFocusOut" data-on-click="onSkinToneOptionsClick" data-on-keydown="onSkinToneOptionsKeydown" data-on-keyup="onSkinToneOptionsKeyup">${v(t.skinTones,($,T)=>h`<div id="skintone-${T}" class="emoji ${T===t.activeSkinTone?"active":""}" aria-selected="${T===t.activeSkinTone}" role="option" title="${t.i18n.skinTones[T]}" aria-label="${t.i18n.skinTones[T]}">${$}</div>`,$=>$)}</div></div><div class="nav" role="tablist" style="grid-template-columns:repeat(${t.groups.length},1fr)" aria-label="${t.i18n.categoriesLabel}" data-on-keydown="onNavKeydown" data-on-click="onNavClick">${v(t.groups,$=>h`<button role="tab" class="nav-button" aria-controls="tab-${$.id}" aria-label="${t.i18n.categories[$.name]}" aria-selected="${!t.searchMode&&t.currentGroup.id===$.id}" title="${t.i18n.categories[$.name]}" data-group-id="${$.id}"><div class="nav-emoji emoji">${$.emoji}</div></button>`,$=>$.id)}</div><div class="indicator-wrapper"><div class="indicator" style="transform:translateX(${(t.isRtl?-1:1)*t.currentGroupIndex*100}%)"></div></div><div class="message ${t.message?"":"gone"}" role="alert" aria-live="polite">${t.message||""}</div><div data-ref="tabpanelElement" class="tabpanel ${!t.databaseLoaded||t.message?"gone":""}" role="${t.searchMode?"region":"tabpanel"}" aria-label="${t.searchMode?t.i18n.searchResultsLabel:t.i18n.categories[t.currentGroup.name]}" id="${t.searchMode?null:`tab-${t.currentGroup.id}`}" tabIndex="0" data-on-click="onEmojiClick"><div data-action="calculateEmojiGridStyle">${v(t.currentEmojisWithCategories,($,T)=>h`<div><div id="menu-label-${T}" class="category ${t.currentEmojisWithCategories.length===1&&t.currentEmojisWithCategories[0].category===""?"gone":""}" aria-hidden="true">${t.searchMode?t.i18n.searchResultsLabel:$.category?$.category:t.currentEmojisWithCategories.length>1?t.i18n.categories.custom:t.i18n.categories[t.currentGroup.name]}</div><div class="emoji-menu ${T!==0&&!t.searchMode&&t.currentGroup.id===-1?"visibility-auto":""}" style="${`--num-rows: ${Math.ceil($.emojis.length/t.numColumns)}`}" data-action="updateOnIntersection" role="${t.searchMode?"listbox":"menu"}" aria-labelledby="menu-label-${T}" id="${t.searchMode?"search-results":null}">${f($.emojis,t.searchMode,"emo")}</div></div>`,$=>$.category)}</div></div><div class="favorites onscreen emoji-menu ${t.message?"gone":""}" role="menu" aria-label="${t.i18n.favoritesLabel}" data-on-click="onEmojiClick">${f(t.currentFavorites,!1,"fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`,x=($,T)=>{for(const C of e.querySelectorAll(`[${$}]`))T(C,C.getAttribute($))};if(c){e.appendChild(k);for(const $ of["click","focusout","input","keydown","keyup"])x(`data-on-${$}`,(T,C)=>{T.addEventListener($,i[C])});x("data-ref",($,T)=>{r[T]=$}),o.addEventListener("abort",()=>{e.removeChild(k)})}x("data-action",($,T)=>{let C=a.get(T);C||a.set(T,C=new WeakSet),C.has($)||(C.add($),s[T]($))})}const fi=typeof queueMicrotask=="function"?queueMicrotask:e=>Promise.resolve().then(e);function my(e){let t=!1,n;const i=new Map,s=new Set;let r;const o=()=>{if(t)return;const u=[...s];s.clear();try{for(const l of u)l()}finally{r=!1,s.size&&(r=!0,fi(o))}},a=new Proxy({},{get(u,l){if(n){let d=i.get(l);d||(d=new Set,i.set(l,d)),d.add(n)}return u[l]},set(u,l,d){if(u[l]!==d){u[l]=d;const h=i.get(l);if(h){for(const v of h)s.add(v);r||(r=!0,fi(o))}}return!0}}),c=u=>{const l=()=>{const d=n;n=l;try{return u()}finally{n=d}};return l()};return e.addEventListener("abort",()=>{t=!0}),{state:a,createEffect:c}}function gs(e,t,n){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!n(e[i],t[i]))return!1;return!0}const Ca=new WeakMap;function yy(e,t,n){{const i=e.closest(".tabpanel");let s=Ca.get(i);s||(s=new IntersectionObserver(n,{root:i,rootMargin:"50% 0px 50% 0px",threshold:0}),Ca.set(i,s),t.addEventListener("abort",()=>{s.disconnect()})),s.observe(e)}}const ms=[],{assign:zn}=Object;function vy(e,t){const n={},i=new AbortController,s=i.signal,{state:r,createEffect:o}=my(s),a=new Map;zn(r,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),zn(r,t),zn(r,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:Bm,isRtl:!1,currentGroupIndex:0,groups:us,databaseLoaded:!1,activeSearchItemId:void 0}),o(()=>{r.currentGroup!==r.groups[r.currentGroupIndex]&&(r.currentGroup=r.groups[r.currentGroupIndex])});const c=A=>{e.getElementById(A).focus()},u=A=>e.getElementById(`emo-${A.id}`),l=(A,_)=>{n.rootElement.dispatchEvent(new CustomEvent(A,{detail:_,bubbles:!0,composed:!0}))},d=(A,_)=>A.id===_.id,h=(A,_)=>{const{category:N,emojis:D}=A,{category:q,emojis:z}=_;return N!==q?!1:gs(D,z,d)},v=A=>{gs(r.currentEmojis,A,d)||(r.currentEmojis=A)},f=A=>{r.searchMode!==A&&(r.searchMode=A)},b=A=>{gs(r.currentEmojisWithCategories,A,h)||(r.currentEmojisWithCategories=A)},k=(A,_)=>_&&A.skins&&A.skins[_]||A.unicode,T={labelWithSkin:(A,_)=>ey([A.name||k(A,_),A.annotation,...A.shortcodes||ms].filter(Boolean)).join(", "),titleForEmoji:A=>A.annotation||(A.shortcodes||ms).join(", "),unicodeWithSkin:k},C={onClickSkinToneButton:H,onEmojiClick:Sn,onNavClick:wn,onNavKeydown:Ii,onSearchKeydown:Li,onSkinToneOptionsClick:An,onSkinToneOptionsFocusOut:Fe,onSkinToneOptionsKeydown:Ye,onSkinToneOptionsKeyup:Ot,onSearchInput:xn},M={calculateEmojiGridStyle:ee,updateOnIntersection:me};let R=!0;o(()=>{gy(e,r,T,C,M,n,s,a,R),R=!1}),r.emojiVersion||ps().then(A=>{A||(r.message=r.i18n.emojiUnsupportedMessage)}),o(()=>{async function A(){let _=!1;const N=setTimeout(()=>{_=!0,r.message=r.i18n.loadingMessage},Dm);try{await r.database.ready(),r.databaseLoaded=!0}catch(D){console.error(D),r.message=r.i18n.networkErrorMessage}finally{clearTimeout(N),_&&(_=!1,r.message="")}}r.database&&A()}),o(()=>{r.pickerStyle=`
1938
2105
  --num-groups: ${r.groups.length};
1939
2106
  --indicator-opacity: ${r.searchMode?0:1};
1940
- --num-skintones: ${Sa};`}),o(()=>{r.customEmoji&&r.database&&B()}),o(()=>{r.customEmoji&&r.customEmoji.length?r.groups!==js&&(r.groups=js):r.groups!==us&&(r.currentGroupIndex&&r.currentGroupIndex--,r.groups=us)}),o(()=>{async function A(){r.databaseLoaded&&(r.currentSkinTone=await r.database.getPreferredSkinTone())}A()}),o(()=>{r.skinTones=Array(Sa).fill().map((A,_)=>Vm(r.skinToneEmoji,_))}),o(()=>{r.skinToneButtonText=r.skinTones[r.currentSkinTone]}),o(()=>{r.skinToneButtonLabel=r.i18n.skinToneLabel.replace("{skinTone}",r.i18n.skinTones[r.currentSkinTone])}),o(()=>{async function A(){const{database:_}=r,N=(await Promise.all(Om.map(D=>_.getEmojiByUnicodeOrName(D)))).filter(Boolean);r.defaultFavoriteEmojis=N}r.databaseLoaded&&A()});function B(){const{customEmoji:A,database:_}=r,N=A||ms;_.customEmoji!==N&&(_.customEmoji=N)}o(()=>{async function A(){B();const{database:_,defaultFavoriteEmojis:N,numColumns:D}=r,q=await _.getTopFavoriteEmoji(D),z=await Ge(Yc([...q,...N],oe=>oe.unicode||oe.name).slice(0,D));r.currentFavorites=z}r.databaseLoaded&&r.defaultFavoriteEmojis&&A()});function J(A){Ym(A,s,()=>{{const _=getComputedStyle(n.rootElement),N=parseInt(_.getPropertyValue("--num-columns"),10),D=_.getPropertyValue("direction")==="rtl";r.numColumns=N,r.isRtl=D}})}function ge(A){gy(A,s,_=>{for(const{target:N,isIntersecting:D}of _)N.classList.toggle("onscreen",D)})}o(()=>{async function A(){const{searchText:_,currentGroup:N,databaseLoaded:D,customEmoji:q}=r;if(!D)r.currentEmojis=[],r.searchMode=!1;else if(_.length>=Lm){const z=await Pi(_);r.searchText===_&&(v(z),y(!0))}else{const{id:z}=N;if(z!==-1||q&&q.length){const oe=await Mi(z);r.currentGroup.id===z&&(v(oe),y(!1))}}}A()});const Oe=()=>{Yn(()=>Jm(n.tabpanelElement))};o(()=>{const{currentEmojis:A,emojiVersion:_}=r,N=A.filter(D=>D.unicode).filter(D=>Aa(D)&&!Hs.has(D.unicode));if(!_&&N.length)v(A),Yn(()=>X(N));else{const D=_?A:A.filter(Dt);v(D),Oe()}});function X(A){Xm(A,n.baselineEmoji,u)?Oe():r.currentEmojis=[...r.currentEmojis]}function Dt(A){return!A.unicode||!Aa(A)||Hs.get(A.unicode)}async function gt(A){const _=r.emojiVersion||await ps();return A.filter(({version:N})=>!N||N<=_)}async function Ge(A){return Gm(A,r.emojiVersion||await ps())}async function Mi(A){const _=A===-1?r.customEmoji:await r.database.getEmojiByGroup(A);return Ge(await gt(_))}async function Pi(A){return Ge(await gt(await r.database.getEmojiBySearchQuery(A)))}o(()=>{}),o(()=>{function A(){const{searchMode:N,currentEmojis:D}=r;if(N)return[{category:"",emojis:D}];const q=new Map;for(const z of D){const oe=z.category||"";let Fe=q.get(oe);Fe||(Fe=[],q.set(oe,Fe)),Fe.push(z)}return[...q.entries()].map(([z,oe])=>({category:z,emojis:oe})).sort((z,oe)=>r.customCategorySorting(z.category,oe.category))}const _=A();b(_)}),o(()=>{r.activeSearchItemId=r.activeSearchItem!==-1&&r.currentEmojis[r.activeSearchItem].id}),o(()=>{const{rawSearchText:A}=r;Gc(()=>{r.searchText=(A||"").trim(),r.activeSearchItem=-1})});function Li(A){if(!r.searchMode||!r.currentEmojis.length)return;const _=N=>{xe(A),r.activeSearchItem=hs(N,r.activeSearchItem,r.currentEmojis)};switch(A.key){case"ArrowDown":return _(!1);case"ArrowUp":return _(!0);case"Enter":if(r.activeSearchItem===-1)r.activeSearchItem=0;else return xe(A),G(r.currentEmojis[r.activeSearchItem].id)}}function wn(A){const{target:_}=A,N=_.closest(".nav-button");if(!N)return;const D=parseInt(N.dataset.groupId,10);n.searchElement.value="",r.rawSearchText="",r.searchText="",r.activeSearchItem=-1,r.currentGroupIndex=r.groups.findIndex(q=>q.id===D)}function Ii(A){const{target:_,key:N}=A,D=q=>{q&&(xe(A),q.focus())};switch(N){case"ArrowLeft":return D(_.previousElementSibling);case"ArrowRight":return D(_.nextElementSibling);case"Home":return D(_.parentElement.firstElementChild);case"End":return D(_.parentElement.lastElementChild)}}async function kn(A){const _=await r.database.getEmojiByUnicodeOrName(A),N=[...r.currentEmojis,...r.currentFavorites].find(q=>q.id===A),D=N.unicode&&S(N,r.currentSkinTone);return await r.database.incrementFavoriteEmojiCount(A),{emoji:_,skinTone:r.currentSkinTone,...D&&{unicode:D},...N.name&&{name:N.name}}}async function G(A){const _=kn(A);l("emoji-click-sync",_),l("emoji-click",await _)}function Sn(A){const{target:_}=A;if(!_.classList.contains("emoji"))return;xe(A);const N=_.id.substring(4);G(N)}function Q(A){r.currentSkinTone=A,r.skinTonePickerExpanded=!1,c("skintone-button"),l("skin-tone-change",{skinTone:A}),r.database.setPreferredSkinTone(A)}function An(A){const{target:{id:_}}=A,N=_&&_.match(/^skintone-(\d)/);if(!N)return;xe(A);const D=parseInt(N[1],10);Q(D)}function H(A){r.skinTonePickerExpanded=!r.skinTonePickerExpanded,r.activeSkinTone=r.currentSkinTone,r.skinTonePickerExpanded&&(xe(A),Yn(()=>c("skintone-list")))}o(()=>{r.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{r.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):r.skinTonePickerExpandedAfterAnimation=!1});function Qe(A){if(!r.skinTonePickerExpanded)return;const _=async N=>{xe(A),r.activeSkinTone=N};switch(A.key){case"ArrowUp":return _(hs(!0,r.activeSkinTone,r.skinTones));case"ArrowDown":return _(hs(!1,r.activeSkinTone,r.skinTones));case"Home":return _(0);case"End":return _(r.skinTones.length-1);case"Enter":return xe(A),Q(r.activeSkinTone);case"Escape":return xe(A),r.skinTonePickerExpanded=!1,c("skintone-button")}}function Ot(A){if(r.skinTonePickerExpanded&&A.key===" ")return xe(A),Q(r.activeSkinTone)}async function Be(A){const{relatedTarget:_}=A;(!_||_.id!=="skintone-list")&&(r.skinTonePickerExpanded=!1)}function xn(A){r.rawSearchText=A.target.value}return{$set(A){zn(r,A)},$destroy(){i.abort()}}}const yy="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",vy="en";var by={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}},wy=':host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:"";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}';const Xc=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],ky=`:host{--emoji-font-family:${Qc}}`;class Ur extends HTMLElement{constructor(t){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=wy+ky,this.shadowRoot.appendChild(n),this._ctx={locale:vy,dataSource:yy,skinToneEmoji:Nm,customCategorySorting:Bm,customEmoji:null,i18n:by,emojiVersion:null,...t};for(const i of Xc)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){_a(this),this._cmp||(this._cmp=my(this.shadowRoot,this._ctx))}disconnectedCallback(){_a(this),fi(()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:t}=this._ctx;t.close().catch(n=>console.error(n))}})}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(t,n,i){this._set(t.replace(/-([a-z])/g,(s,r)=>r.toUpperCase()),t==="emoji-version"?parseFloat(i):i)}_set(t,n){this._ctx[t]=n,this._cmp&&this._cmp.$set({[t]:n}),["locale","dataSource"].includes(t)&&this._dbFlush()}_dbCreate(){const{locale:t,dataSource:n,database:i}=this._ctx;(!i||i.locale!==t||i.dataSource!==n)&&this._set("database",new Pm({locale:t,dataSource:n}))}_dbFlush(){fi(()=>this._dbCreate())}}const Zc={};for(const e of Xc)Zc[e]={get(){return e==="database"&&this._dbCreate(),this._ctx[e]},set(t){if(e==="database")throw new Error("database is read-only");this._set(e,t)}};Object.defineProperties(Ur.prototype,Zc);function _a(e){e instanceof Ur||Object.setPrototypeOf(e,customElements.get(e.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",Ur);function Sy(e){e.style.height="0";const t=Math.max(e.scrollHeight,44);e.style.height=`${t}px`,e.style.overflowY=e.scrollHeight>e.offsetHeight?"auto":"hidden"}function Ma(e){e.style.height="44px",e.style.overflowY="hidden"}const Ay=5e3;function xy(e){return e?e.active?p`
2107
+ --num-skintones: ${Sa};`}),o(()=>{r.customEmoji&&r.database&&B()}),o(()=>{r.customEmoji&&r.customEmoji.length?r.groups!==js&&(r.groups=js):r.groups!==us&&(r.currentGroupIndex&&r.currentGroupIndex--,r.groups=us)}),o(()=>{async function A(){r.databaseLoaded&&(r.currentSkinTone=await r.database.getPreferredSkinTone())}A()}),o(()=>{r.skinTones=Array(Sa).fill().map((A,_)=>Qm(r.skinToneEmoji,_))}),o(()=>{r.skinToneButtonText=r.skinTones[r.currentSkinTone]}),o(()=>{r.skinToneButtonLabel=r.i18n.skinToneLabel.replace("{skinTone}",r.i18n.skinTones[r.currentSkinTone])}),o(()=>{async function A(){const{database:_}=r,N=(await Promise.all(Fm.map(D=>_.getEmojiByUnicodeOrName(D)))).filter(Boolean);r.defaultFavoriteEmojis=N}r.databaseLoaded&&A()});function B(){const{customEmoji:A,database:_}=r,N=A||ms;_.customEmoji!==N&&(_.customEmoji=N)}o(()=>{async function A(){B();const{database:_,defaultFavoriteEmojis:N,numColumns:D}=r,q=await _.getTopFavoriteEmoji(D),z=await Qe(Xc([...q,...N],ae=>ae.unicode||ae.name).slice(0,D));r.currentFavorites=z}r.databaseLoaded&&r.defaultFavoriteEmojis&&A()});function ee(A){Zm(A,s,()=>{{const _=getComputedStyle(n.rootElement),N=parseInt(_.getPropertyValue("--num-columns"),10),D=_.getPropertyValue("direction")==="rtl";r.numColumns=N,r.isRtl=D}})}function me(A){yy(A,s,_=>{for(const{target:N,isIntersecting:D}of _)N.classList.toggle("onscreen",D)})}o(()=>{async function A(){const{searchText:_,currentGroup:N,databaseLoaded:D,customEmoji:q}=r;if(!D)r.currentEmojis=[],r.searchMode=!1;else if(_.length>=Rm){const z=await Pi(_);r.searchText===_&&(v(z),f(!0))}else{const{id:z}=N;if(z!==-1||q&&q.length){const ae=await Mi(z);r.currentGroup.id===z&&(v(ae),f(!1))}}}A()});const Be=()=>{Yn(()=>ty(n.tabpanelElement))};o(()=>{const{currentEmojis:A,emojiVersion:_}=r,N=A.filter(D=>D.unicode).filter(D=>Aa(D)&&!Hs.has(D.unicode));if(!_&&N.length)v(A),Yn(()=>Z(N));else{const D=_?A:A.filter(Dt);v(D),Be()}});function Z(A){Jm(A,n.baselineEmoji,u)?Be():r.currentEmojis=[...r.currentEmojis]}function Dt(A){return!A.unicode||!Aa(A)||Hs.get(A.unicode)}async function mt(A){const _=r.emojiVersion||await ps();return A.filter(({version:N})=>!N||N<=_)}async function Qe(A){return Ym(A,r.emojiVersion||await ps())}async function Mi(A){const _=A===-1?r.customEmoji:await r.database.getEmojiByGroup(A);return Qe(await mt(_))}async function Pi(A){return Qe(await mt(await r.database.getEmojiBySearchQuery(A)))}o(()=>{}),o(()=>{function A(){const{searchMode:N,currentEmojis:D}=r;if(N)return[{category:"",emojis:D}];const q=new Map;for(const z of D){const ae=z.category||"";let Ue=q.get(ae);Ue||(Ue=[],q.set(ae,Ue)),Ue.push(z)}return[...q.entries()].map(([z,ae])=>({category:z,emojis:ae})).sort((z,ae)=>r.customCategorySorting(z.category,ae.category))}const _=A();b(_)}),o(()=>{r.activeSearchItemId=r.activeSearchItem!==-1&&r.currentEmojis[r.activeSearchItem].id}),o(()=>{const{rawSearchText:A}=r;Qc(()=>{r.searchText=(A||"").trim(),r.activeSearchItem=-1})});function Li(A){if(!r.searchMode||!r.currentEmojis.length)return;const _=N=>{$e(A),r.activeSearchItem=hs(N,r.activeSearchItem,r.currentEmojis)};switch(A.key){case"ArrowDown":return _(!1);case"ArrowUp":return _(!0);case"Enter":if(r.activeSearchItem===-1)r.activeSearchItem=0;else return $e(A),G(r.currentEmojis[r.activeSearchItem].id)}}function wn(A){const{target:_}=A,N=_.closest(".nav-button");if(!N)return;const D=parseInt(N.dataset.groupId,10);n.searchElement.value="",r.rawSearchText="",r.searchText="",r.activeSearchItem=-1,r.currentGroupIndex=r.groups.findIndex(q=>q.id===D)}function Ii(A){const{target:_,key:N}=A,D=q=>{q&&($e(A),q.focus())};switch(N){case"ArrowLeft":return D(_.previousElementSibling);case"ArrowRight":return D(_.nextElementSibling);case"Home":return D(_.parentElement.firstElementChild);case"End":return D(_.parentElement.lastElementChild)}}async function kn(A){const _=await r.database.getEmojiByUnicodeOrName(A),N=[...r.currentEmojis,...r.currentFavorites].find(q=>q.id===A),D=N.unicode&&k(N,r.currentSkinTone);return await r.database.incrementFavoriteEmojiCount(A),{emoji:_,skinTone:r.currentSkinTone,...D&&{unicode:D},...N.name&&{name:N.name}}}async function G(A){const _=kn(A);l("emoji-click-sync",_),l("emoji-click",await _)}function Sn(A){const{target:_}=A;if(!_.classList.contains("emoji"))return;$e(A);const N=_.id.substring(4);G(N)}function Q(A){r.currentSkinTone=A,r.skinTonePickerExpanded=!1,c("skintone-button"),l("skin-tone-change",{skinTone:A}),r.database.setPreferredSkinTone(A)}function An(A){const{target:{id:_}}=A,N=_&&_.match(/^skintone-(\d)/);if(!N)return;$e(A);const D=parseInt(N[1],10);Q(D)}function H(A){r.skinTonePickerExpanded=!r.skinTonePickerExpanded,r.activeSkinTone=r.currentSkinTone,r.skinTonePickerExpanded&&($e(A),Yn(()=>c("skintone-list")))}o(()=>{r.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",()=>{r.skinTonePickerExpandedAfterAnimation=!0},{once:!0}):r.skinTonePickerExpandedAfterAnimation=!1});function Ye(A){if(!r.skinTonePickerExpanded)return;const _=async N=>{$e(A),r.activeSkinTone=N};switch(A.key){case"ArrowUp":return _(hs(!0,r.activeSkinTone,r.skinTones));case"ArrowDown":return _(hs(!1,r.activeSkinTone,r.skinTones));case"Home":return _(0);case"End":return _(r.skinTones.length-1);case"Enter":return $e(A),Q(r.activeSkinTone);case"Escape":return $e(A),r.skinTonePickerExpanded=!1,c("skintone-button")}}function Ot(A){if(r.skinTonePickerExpanded&&A.key===" ")return $e(A),Q(r.activeSkinTone)}async function Fe(A){const{relatedTarget:_}=A;(!_||_.id!=="skintone-list")&&(r.skinTonePickerExpanded=!1)}function xn(A){r.rawSearchText=A.target.value}return{$set(A){zn(r,A)},$destroy(){i.abort()}}}const by="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",wy="en";var ky={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}},Sy=':host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:"";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}';const Zc=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],Ay=`:host{--emoji-font-family:${Yc}}`;class Ur extends HTMLElement{constructor(t){super(),this.attachShadow({mode:"open"});const n=document.createElement("style");n.textContent=Sy+Ay,this.shadowRoot.appendChild(n),this._ctx={locale:wy,dataSource:by,skinToneEmoji:Om,customCategorySorting:Um,customEmoji:null,i18n:ky,emojiVersion:null,...t};for(const i of Zc)i!=="database"&&Object.prototype.hasOwnProperty.call(this,i)&&(this._ctx[i]=this[i],delete this[i]);this._dbFlush()}connectedCallback(){_a(this),this._cmp||(this._cmp=vy(this.shadowRoot,this._ctx))}disconnectedCallback(){_a(this),fi(()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:t}=this._ctx;t.close().catch(n=>console.error(n))}})}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(t,n,i){this._set(t.replace(/-([a-z])/g,(s,r)=>r.toUpperCase()),t==="emoji-version"?parseFloat(i):i)}_set(t,n){this._ctx[t]=n,this._cmp&&this._cmp.$set({[t]:n}),["locale","dataSource"].includes(t)&&this._dbFlush()}_dbCreate(){const{locale:t,dataSource:n,database:i}=this._ctx;(!i||i.locale!==t||i.dataSource!==n)&&this._set("database",new Im({locale:t,dataSource:n}))}_dbFlush(){fi(()=>this._dbCreate())}}const Jc={};for(const e of Zc)Jc[e]={get(){return e==="database"&&this._dbCreate(),this._ctx[e]},set(t){if(e==="database")throw new Error("database is read-only");this._set(e,t)}};Object.defineProperties(Ur.prototype,Jc);function _a(e){e instanceof Ur||Object.setPrototypeOf(e,customElements.get(e.tagName.toLowerCase()).prototype)}customElements.get("emoji-picker")||customElements.define("emoji-picker",Ur);function xy(e){e.style.height="0";const t=Math.max(e.scrollHeight,44);e.style.height=`${t}px`,e.style.overflowY=e.scrollHeight>e.offsetHeight?"auto":"hidden"}function Ma(e){e.style.height="44px",e.style.overflowY="hidden"}const $y=5e3;function Ey(e){return e?e.active?p`
1941
2108
  <div class="callout info compaction-indicator compaction-indicator--active">
1942
2109
  ${O.loader} Compacting context...
1943
2110
  </div>
1944
- `:e.completedAt&&Date.now()-e.completedAt<Ay?p`
2111
+ `:e.completedAt&&Date.now()-e.completedAt<$y?p`
1945
2112
  <div class="callout success compaction-indicator compaction-indicator--complete">
1946
2113
  ${O.check} Context compacted
1947
2114
  </div>
1948
- `:k:k}const Zt=5*1024*1024;function Jt(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function At(e,t){var i,s,r;let n=(i=e.closest(".chat"))==null?void 0:i.querySelector(".chat-attachment-error");if(!n){n=document.createElement("div"),n.className="callout danger chat-attachment-error",n.style.cssText="margin: 8px 4px; animation: fade-in 200ms ease-out;";const o=(s=e.closest(".chat"))==null?void 0:s.querySelector(".chat-compose");(r=o==null?void 0:o.parentElement)==null||r.insertBefore(n,o)}n.textContent=t,setTimeout(()=>n==null?void 0:n.remove(),4e3)}const $y=/\.(md|txt|csv|json|xml|html|css|js|ts|py|sh|yaml|yml|toml|ini|cfg|log|sql)$/i;function Ey(e){return e.type.startsWith("image/")||/\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(e.name)}function Cy(e){return e.type.startsWith("text/")||e.type==="application/json"||e.type==="application/xml"||$y.test(e.name)}function Ty(e){return e.type==="application/pdf"||/\.pdf$/i.test(e.name)}function _y(e){return e.type.startsWith("video/")||/\.(mp4|webm|mov|avi|mkv|m4v)$/i.test(e.name)}function My(e,t){var s;e.preventDefault(),e.stopPropagation();const n=e.currentTarget;n.classList.remove("chat--dragover");const i=(s=e.dataTransfer)==null?void 0:s.files;if(!(!i||i.length===0))for(let r=0;r<i.length;r++){const o=i[r];if(Ey(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){At(n,`Image too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:o.type},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else if(Cy(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){At(n,`File too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:"",mimeType:o.type||"text/plain",fileName:o.name,textContent:c},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsText(o)}else if(Ty(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){At(n,`PDF too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:"application/pdf",fileName:o.name},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else if(_y(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){At(n,`Video too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:o.type||"video/mp4",fileName:o.name},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else At(n,`Unsupported file type: ${o.name}. Use the Files page to upload to workspace.`)}}function Py(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect="copy"),e.currentTarget.classList.add("chat--dragover")}function Ly(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget,n=e.relatedTarget;(!n||!t.contains(n))&&t.classList.remove("chat--dragover")}function Iy(e,t){var s,r,o;const n=(s=e.clipboardData)==null?void 0:s.items;if(!n||!t.onAttachmentsChange)return;const i=[];for(let a=0;a<n.length;a++){const c=n[a];(c.type.startsWith("image/")||c.type.startsWith("video/"))&&i.push(c)}if(i.length!==0){e.preventDefault();for(const a of i){const c=a.getAsFile();if(!c)continue;const u=c.type.startsWith("video/")?"Video":"Image";if(c.size>Zt){const d=((o=(r=e.target)==null?void 0:r.closest)==null?void 0:o.call(r,".chat"))??document.querySelector(".chat");d&&At(d,`${u} too large (${(c.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const l=new FileReader;l.onload=()=>{var b;const d=l.result,h=c.type.startsWith("video/"),v={id:Jt(),dataUrl:d,mimeType:c.type,fileName:h?c.name||"video.mp4":void 0},y=t.attachments??[];(b=t.onAttachmentsChange)==null||b.call(t,[...y,v])},l.readAsDataURL(c)}}}function Ry(e){const t=e.currentTarget,n=t.closest(".chat-compose"),i=n==null?void 0:n.querySelector(".emoji-picker-popup");if(!i)return;const s=i.classList.toggle("active");if(t.classList.toggle("active",s),s){const r=o=>{i.contains(o.target)||t.contains(o.target)||(i.classList.remove("active"),t.classList.remove("active"),document.removeEventListener("click",r,!0))};requestAnimationFrame(()=>document.addEventListener("click",r,!0))}}function Ny(e,t){const n=e.detail,i=n==null?void 0:n.unicode;if(!i)return;const s=e.currentTarget.closest(".chat-compose"),r=s==null?void 0:s.querySelector("textarea");if(!r)return;const o=r.selectionStart??t.draft.length,a=r.selectionEnd??o,c=t.draft.slice(0,o),u=t.draft.slice(a);t.onDraftChange(c+i+u);const l=s==null?void 0:s.querySelector(".emoji-picker-popup"),d=s==null?void 0:s.querySelector(".chat-compose__emoji");l==null||l.classList.remove("active"),d==null||d.classList.remove("active"),requestAnimationFrame(()=>{r.focus();const h=o+i.length;r.setSelectionRange(h,h)})}function Dy(e){const t=e.attachments??[];return t.length===0?k:p`
2115
+ `:S:S}const Zt=5*1024*1024;function Jt(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function xt(e,t){var i,s,r;let n=(i=e.closest(".chat"))==null?void 0:i.querySelector(".chat-attachment-error");if(!n){n=document.createElement("div"),n.className="callout danger chat-attachment-error",n.style.cssText="margin: 8px 4px; animation: fade-in 200ms ease-out;";const o=(s=e.closest(".chat"))==null?void 0:s.querySelector(".chat-compose");(r=o==null?void 0:o.parentElement)==null||r.insertBefore(n,o)}n.textContent=t,setTimeout(()=>n==null?void 0:n.remove(),4e3)}const Ty=/\.(md|txt|csv|json|xml|html|css|js|ts|py|sh|yaml|yml|toml|ini|cfg|log|sql)$/i;function Cy(e){return e.type.startsWith("image/")||/\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(e.name)}function _y(e){return e.type.startsWith("text/")||e.type==="application/json"||e.type==="application/xml"||Ty.test(e.name)}function My(e){return e.type==="application/pdf"||/\.pdf$/i.test(e.name)}function Py(e){return e.type.startsWith("video/")||/\.(mp4|webm|mov|avi|mkv|m4v)$/i.test(e.name)}function Ly(e,t){var s;e.preventDefault(),e.stopPropagation();const n=e.currentTarget;n.classList.remove("chat--dragover");const i=(s=e.dataTransfer)==null?void 0:s.files;if(!(!i||i.length===0))for(let r=0;r<i.length;r++){const o=i[r];if(Cy(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){xt(n,`Image too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:o.type},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else if(_y(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){xt(n,`File too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:"",mimeType:o.type||"text/plain",fileName:o.name,textContent:c},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsText(o)}else if(My(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){xt(n,`PDF too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:"application/pdf",fileName:o.name},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else if(Py(o)){if(!t.onAttachmentsChange)continue;if(o.size>Zt){xt(n,`Video too large (${(o.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const a=new FileReader;a.onload=()=>{var d;const c=a.result,u={id:Jt(),dataUrl:c,mimeType:o.type||"video/mp4",fileName:o.name},l=t.attachments??[];(d=t.onAttachmentsChange)==null||d.call(t,[...l,u])},a.readAsDataURL(o)}else xt(n,`Unsupported file type: ${o.name}. Use the Files page to upload to workspace.`)}}function Iy(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect="copy"),e.currentTarget.classList.add("chat--dragover")}function Ry(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget,n=e.relatedTarget;(!n||!t.contains(n))&&t.classList.remove("chat--dragover")}function Ny(e,t){var s,r,o;const n=(s=e.clipboardData)==null?void 0:s.items;if(!n||!t.onAttachmentsChange)return;const i=[];for(let a=0;a<n.length;a++){const c=n[a];(c.type.startsWith("image/")||c.type.startsWith("video/"))&&i.push(c)}if(i.length!==0){e.preventDefault();for(const a of i){const c=a.getAsFile();if(!c)continue;const u=c.type.startsWith("video/")?"Video":"Image";if(c.size>Zt){const d=((o=(r=e.target)==null?void 0:r.closest)==null?void 0:o.call(r,".chat"))??document.querySelector(".chat");d&&xt(d,`${u} too large (${(c.size/1024/1024).toFixed(1)} MB). Maximum is 5 MB.`);continue}const l=new FileReader;l.onload=()=>{var b;const d=l.result,h=c.type.startsWith("video/"),v={id:Jt(),dataUrl:d,mimeType:c.type,fileName:h?c.name||"video.mp4":void 0},f=t.attachments??[];(b=t.onAttachmentsChange)==null||b.call(t,[...f,v])},l.readAsDataURL(c)}}}function Dy(e){const t=e.currentTarget,n=t.closest(".chat-compose"),i=n==null?void 0:n.querySelector(".emoji-picker-popup");if(!i)return;const s=i.classList.toggle("active");if(t.classList.toggle("active",s),s){const r=o=>{i.contains(o.target)||t.contains(o.target)||(i.classList.remove("active"),t.classList.remove("active"),document.removeEventListener("click",r,!0))};requestAnimationFrame(()=>document.addEventListener("click",r,!0))}}function Oy(e,t){const n=e.detail,i=n==null?void 0:n.unicode;if(!i)return;const s=e.currentTarget.closest(".chat-compose"),r=s==null?void 0:s.querySelector("textarea");if(!r)return;const o=r.selectionStart??t.draft.length,a=r.selectionEnd??o,c=t.draft.slice(0,o),u=t.draft.slice(a);t.onDraftChange(c+i+u);const l=s==null?void 0:s.querySelector(".emoji-picker-popup"),d=s==null?void 0:s.querySelector(".chat-compose__emoji");l==null||l.classList.remove("active"),d==null||d.classList.remove("active"),requestAnimationFrame(()=>{r.focus();const h=o+i.length;r.setSelectionRange(h,h)})}function By(e){const t=e.attachments??[];return t.length===0?S:p`
1949
2116
  <div class="chat-attachments">
1950
2117
  ${t.map(n=>{var i;return n.fileName?p`
1951
2118
  <div class="chat-attachment chat-attachment--file">
@@ -1978,28 +2145,28 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
1978
2145
  </div>
1979
2146
  `})}
1980
2147
  </div>
1981
- `}function Jc(e){var h,v,y;const t=e.connected,n=e.sending||e.stream!==null,i=!!(e.canAbort&&e.onAbort),s=(v=(h=e.sessions)==null?void 0:h.sessions)==null?void 0:v.find(b=>b.key===e.sessionKey),r=(s==null?void 0:s.reasoningLevel)??"off",o=e.showThinking&&r!=="off";e.assistantName,e.assistantAvatar??e.assistantAvatarUrl;const a=(((y=e.attachments)==null?void 0:y.length)??0)>0,c=e.connected?a?"Add a message...":"Message...":"Connecting…",u=e.splitRatio??.6,l=!!(e.sidebarOpen&&e.onCloseSidebar),d=p`
2148
+ `}function eu(e){var h,v,f;const t=e.connected,n=e.sending||e.stream!==null,i=!!(e.canAbort&&e.onAbort),s=(v=(h=e.sessions)==null?void 0:h.sessions)==null?void 0:v.find(b=>b.key===e.sessionKey),r=(s==null?void 0:s.reasoningLevel)??"off",o=e.showThinking&&r!=="off";e.assistantName,e.assistantAvatar??e.assistantAvatarUrl;const a=(((f=e.attachments)==null?void 0:f.length)??0)>0,c=e.connected?a?"Add a message...":"Message...":"Connecting…",u=e.splitRatio??.6,l=!!(e.sidebarOpen&&e.onCloseSidebar),d=p`
1982
2149
  <div
1983
2150
  class="chat-thread"
1984
2151
  role="log"
1985
2152
  aria-live="polite"
1986
2153
  @scroll=${e.onChatScroll}
1987
2154
  >
1988
- ${e.loading?p`<div class="muted">Loading chat…</div>`:k}
1989
- ${ff(zy(e),b=>b.key,b=>b.kind==="interim"?Bg(b.text):b.kind==="reading-indicator"?Og():b.kind==="stream"?Fg(b.text,b.startedAt,e.onOpenSidebar):b.kind==="group"?Ug(b,{onOpenSidebar:e.onOpenSidebar,showReasoning:o,assistantName:e.assistantName}):k)}
2155
+ ${e.loading?p`<div class="muted">Loading chat…</div>`:S}
2156
+ ${mf(Hy(e),b=>b.key,b=>b.kind==="interim"?Ug(b.text):b.kind==="reading-indicator"?Fg():b.kind==="stream"?Wg(b.text,b.startedAt,e.onOpenSidebar):b.kind==="group"?Kg(b,{onOpenSidebar:e.onOpenSidebar,showReasoning:o,assistantName:e.assistantName}):S)}
1990
2157
  </div>
1991
2158
  `;return p`
1992
2159
  <section
1993
2160
  class="card chat"
1994
- @drop=${b=>My(b,e)}
1995
- @dragover=${Py}
1996
- @dragleave=${Ly}
2161
+ @drop=${b=>Ly(b,e)}
2162
+ @dragover=${Iy}
2163
+ @dragleave=${Ry}
1997
2164
  >
1998
- ${e.disabledReason?p`<div class="callout">${e.disabledReason}</div>`:k}
2165
+ ${e.disabledReason?p`<div class="callout">${e.disabledReason}</div>`:S}
1999
2166
 
2000
- ${e.error?p`<div class="callout danger">${e.error}</div>`:k}
2167
+ ${e.error?p`<div class="callout danger">${e.error}</div>`:S}
2001
2168
 
2002
- ${xy(e.compactionStatus)}
2169
+ ${Ey(e.compactionStatus)}
2003
2170
 
2004
2171
  ${e.focusMode?p`
2005
2172
  <button
@@ -2011,7 +2178,7 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
2011
2178
  >
2012
2179
  ${O.x}
2013
2180
  </button>
2014
- `:k}
2181
+ `:S}
2015
2182
 
2016
2183
  <div
2017
2184
  class="chat-split-container ${l?"chat-split-container--open":""}"
@@ -2025,26 +2192,26 @@ For details see: https://github.com/nolanlawson/emoji-picker-element/issues/514`
2025
2192
  <button
2026
2193
  class="chat-scroll-bottom"
2027
2194
  type="button"
2028
- @click=${b=>{const S=b.currentTarget.closest(".chat-main"),x=S==null?void 0:S.querySelector(".chat-thread");x&&x.scrollTo({top:x.scrollHeight,behavior:"smooth"})}}
2195
+ @click=${b=>{const k=b.currentTarget.closest(".chat-main"),x=k==null?void 0:k.querySelector(".chat-thread");x&&x.scrollTo({top:x.scrollHeight,behavior:"smooth"})}}
2029
2196
  aria-label="Scroll to bottom"
2030
2197
  title="Scroll to bottom"
2031
2198
  >
2032
2199
  ${O.chevronDown}
2033
2200
  </button>
2034
- `:k}
2201
+ `:S}
2035
2202
  </div>
2036
2203
 
2037
2204
  ${l?p`
2038
2205
  <resizable-divider
2039
2206
  .splitRatio=${u}
2040
- @resize=${b=>{var S;return(S=e.onSplitRatioChange)==null?void 0:S.call(e,b.detail.splitRatio)}}
2207
+ @resize=${b=>{var k;return(k=e.onSplitRatioChange)==null?void 0:k.call(e,b.detail.splitRatio)}}
2041
2208
  ></resizable-divider>
2042
2209
  <div class="chat-sidebar">
2043
- ${Kg({content:e.sidebarContent??null,error:e.sidebarError??null,onClose:e.onCloseSidebar,onViewRawText:()=>{!e.sidebarContent||!e.onOpenSidebar||e.onOpenSidebar(`\`\`\`
2210
+ ${jg({content:e.sidebarContent??null,error:e.sidebarError??null,onClose:e.onCloseSidebar,onViewRawText:()=>{!e.sidebarContent||!e.onOpenSidebar||e.onOpenSidebar(`\`\`\`
2044
2211
  ${e.sidebarContent}
2045
2212
  \`\`\``)}})}
2046
2213
  </div>
2047
- `:k}
2214
+ `:S}
2048
2215
  </div>
2049
2216
 
2050
2217
  ${e.suggestion?p`
@@ -2057,15 +2224,15 @@ ${e.sidebarContent}
2057
2224
  ${e.suggestion}
2058
2225
  </button>
2059
2226
  </div>
2060
- `:k}
2227
+ `:S}
2061
2228
 
2062
2229
  <div class="chat-compose">
2063
- ${Dy(e)}
2230
+ ${By(e)}
2064
2231
  <div class="chat-compose__row">
2065
2232
  <button
2066
2233
  class="chat-compose__emoji"
2067
2234
  type="button"
2068
- @click=${Ry}
2235
+ @click=${Dy}
2069
2236
  aria-label="Emoji"
2070
2237
  title="Emoji"
2071
2238
  >
@@ -2077,8 +2244,8 @@ ${e.sidebarContent}
2077
2244
  .value=${e.draft}
2078
2245
  ?disabled=${!e.connected}
2079
2246
  @keydown=${b=>{b.key==="Enter"&&(b.isComposing||b.keyCode===229||b.shiftKey||e.connected&&(b.preventDefault(),t&&(e.onSend(),Ma(b.target))))}}
2080
- @input=${b=>{const S=b.target;e.onDraftChange(S.value),Sy(S)}}
2081
- @paste=${b=>Iy(b,e)}
2247
+ @input=${b=>{const k=b.target;e.onDraftChange(k.value),xy(k)}}
2248
+ @paste=${b=>Ny(b,e)}
2082
2249
  placeholder=${c}
2083
2250
  ></textarea>
2084
2251
  </label>
@@ -2091,11 +2258,11 @@ ${e.sidebarContent}
2091
2258
  >
2092
2259
  ${O.square}
2093
2260
  </button>
2094
- `:k}
2261
+ `:S}
2095
2262
  <button
2096
2263
  class="btn btn--icon chat-compose__send primary"
2097
2264
  ?disabled=${!e.connected}
2098
- @click=${b=>{var x;e.onSend();const S=(x=b.target.closest(".chat-compose"))==null?void 0:x.querySelector("textarea");S&&Ma(S)}}
2265
+ @click=${b=>{var x;e.onSend();const k=(x=b.target.closest(".chat-compose"))==null?void 0:x.querySelector("textarea");k&&Ma(k)}}
2099
2266
  aria-label="${n?"Queue":"Send"}"
2100
2267
  title="${n?"Queue message":"Send (Enter)"}"
2101
2268
  >
@@ -2104,13 +2271,13 @@ ${e.sidebarContent}
2104
2271
  </div>
2105
2272
  <div class="emoji-picker-popup">
2106
2273
  <emoji-picker
2107
- @emoji-click=${b=>Ny(b,e)}
2274
+ @emoji-click=${b=>Oy(b,e)}
2108
2275
  ></emoji-picker>
2109
2276
  </div>
2110
- ${e.publicMode?k:Wy(e)}
2277
+ ${e.publicMode?S:zy(e)}
2111
2278
  </div>
2112
2279
  </section>
2113
- `}const Oy=[{id:"claude-opus-4-6",shortName:"Opus",description:"Most capable"},{id:"claude-sonnet-4-5-20250929",shortName:"Sonnet",description:"Fast & capable"},{id:"claude-haiku-4-5-20251001",shortName:"Haiku",description:"Fastest"}];function By(e){const t=new Set(e.filter(n=>n.provider==="anthropic").map(n=>n.id));return Oy.filter(n=>t.has(n.id)).map(n=>({key:`anthropic/${n.id}`,...n}))}const Fy=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function Uy(e){var s;const t=e.currentTarget,n=(s=t.closest(".chat-model-bar"))==null?void 0:s.querySelector(".chat-settings-menu");if(!n)return;const i=n.classList.contains("active");if(document.querySelectorAll(".chat-settings-menu.active").forEach(r=>r.classList.remove("active")),!i){n.classList.add("active");const r=o=>{!n.contains(o.target)&&o.target!==t&&!t.contains(o.target)&&(n.classList.remove("active"),document.removeEventListener("click",r))};requestAnimationFrame(()=>document.addEventListener("click",r))}}function Wy(e){if(!e.connected)return k;const t=e.modelCatalog??[],n=By(t);if(n.length===0)return k;const i=e.modelProvider&&e.model?`${e.modelProvider}/${e.model}`:null,s=e.thinkingLevel??"off",r=e.verboseLevel==="on"||e.verboseLevel==="full",o=e.fillerEnabled===!0;return p`
2280
+ `}const Fy=[{id:"claude-opus-4-6",shortName:"Opus",description:"Most capable"},{id:"claude-sonnet-4-5-20250929",shortName:"Sonnet",description:"Fast & capable"},{id:"claude-haiku-4-5-20251001",shortName:"Haiku",description:"Fastest"}];function Uy(e){const t=new Set(e.filter(n=>n.provider==="anthropic").map(n=>n.id));return Fy.filter(n=>t.has(n.id)).map(n=>({key:`anthropic/${n.id}`,...n}))}const Wy=[{value:"off",label:"Off"},{value:"minimal",label:"Minimal"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}];function Ky(e){var s;const t=e.currentTarget,n=(s=t.closest(".chat-model-bar"))==null?void 0:s.querySelector(".chat-settings-menu");if(!n)return;const i=n.classList.contains("active");if(document.querySelectorAll(".chat-settings-menu.active").forEach(r=>r.classList.remove("active")),!i){n.classList.add("active");const r=o=>{!n.contains(o.target)&&o.target!==t&&!t.contains(o.target)&&(n.classList.remove("active"),document.removeEventListener("click",r))};requestAnimationFrame(()=>document.addEventListener("click",r))}}function zy(e){if(!e.connected)return S;const t=e.modelCatalog??[],n=Uy(t);if(n.length===0)return S;const i=e.modelProvider&&e.model?`${e.modelProvider}/${e.model}`:null,s=e.thinkingLevel??"off",r=e.verboseLevel==="on"||e.verboseLevel==="full",o=e.fillerEnabled===!0;return p`
2114
2281
  <div class="chat-model-bar">
2115
2282
  <div class="chat-model-bar__select">
2116
2283
  <select
@@ -2131,7 +2298,7 @@ ${e.sidebarContent}
2131
2298
  .value=${s}
2132
2299
  @change=${a=>{const c=a.target.value;e.onThinkingLevelChange&&e.onThinkingLevelChange(c)}}
2133
2300
  >
2134
- ${Fy.map(a=>p`
2301
+ ${Wy.map(a=>p`
2135
2302
  <option value=${a.value} ?selected=${a.value===s}>
2136
2303
  Thinking: ${a.label}
2137
2304
  </option>
@@ -2141,7 +2308,7 @@ ${e.sidebarContent}
2141
2308
  <button
2142
2309
  class="chat-model-bar__settings-btn"
2143
2310
  type="button"
2144
- @click=${Uy}
2311
+ @click=${Ky}
2145
2312
  aria-label="Message settings"
2146
2313
  title="Message settings"
2147
2314
  >
@@ -2168,9 +2335,9 @@ ${e.sidebarContent}
2168
2335
  </label>
2169
2336
  </div>
2170
2337
  </div>
2171
- `}const Pa=200;function Ky(e){const t=[];let n=null;for(const i of e){if(i.kind!=="message"){n&&(t.push(n),n=null),t.push(i);continue}const s=hl(i.message),r=fl(s.role),o=s.timestamp||Date.now();!n||n.role!==r?(n&&t.push(n),n={kind:"group",key:`group:${r}:${i.key}`,role:r,messages:[{message:i.message,key:i.key}],timestamp:o,isStreaming:!1}):n.messages.push({message:i.message,key:i.key})}return n&&t.push(n),t}function zy(e){var o;const t=[],n=Array.isArray(e.messages)?e.messages:[],i=Array.isArray(e.toolMessages)?e.toolMessages:[],s=e.showThinking||e.verboseLevel==="on"||e.verboseLevel==="full",r=Math.max(0,n.length-Pa);r>0&&t.push({kind:"message",key:"chat:history:notice",message:{role:"system",content:`Showing last ${Pa} messages (${r} hidden).`,timestamp:Date.now()}});for(let a=r;a<n.length;a++){const c=n[a],u=hl(c);!s&&u.role.toLowerCase()==="toolresult"||t.push({kind:"message",key:La(c,a),message:c})}if(s)for(let a=0;a<i.length;a++)t.push({kind:"message",key:La(i[a],a+n.length),message:i[a]});if(e.interimText&&t.push({kind:"interim",key:"interim:thinking",text:e.interimText}),e.stream!==null){const a=`stream:${e.sessionKey}:${e.streamStartedAt??"live"}`;e.stream.trim().length>0?t.push({kind:"stream",key:a,text:e.stream,startedAt:e.streamStartedAt??Date.now()}):t.push({kind:"reading-indicator",key:a})}for(const a of e.queue){const c=((o=a.attachments)==null?void 0:o.filter(l=>l.fileName).map(l=>l.fileName))??[],u=c.length>0?a.text?`${c.join(", ")}
2338
+ `}const Pa=200;function jy(e){const t=[];let n=null;for(const i of e){if(i.kind!=="message"){n&&(t.push(n),n=null),t.push(i);continue}const s=hl(i.message),r=fl(s.role),o=s.timestamp||Date.now();!n||n.role!==r?(n&&t.push(n),n={kind:"group",key:`group:${r}:${i.key}`,role:r,messages:[{message:i.message,key:i.key}],timestamp:o,isStreaming:!1}):n.messages.push({message:i.message,key:i.key})}return n&&t.push(n),t}function Hy(e){var o;const t=[],n=Array.isArray(e.messages)?e.messages:[],i=Array.isArray(e.toolMessages)?e.toolMessages:[],s=e.showThinking||e.verboseLevel==="on"||e.verboseLevel==="full",r=Math.max(0,n.length-Pa);r>0&&t.push({kind:"message",key:"chat:history:notice",message:{role:"system",content:`Showing last ${Pa} messages (${r} hidden).`,timestamp:Date.now()}});for(let a=r;a<n.length;a++){const c=n[a],u=hl(c);!s&&u.role.toLowerCase()==="toolresult"||t.push({kind:"message",key:La(c,a),message:c})}if(s)for(let a=0;a<i.length;a++)t.push({kind:"message",key:La(i[a],a+n.length),message:i[a]});if(e.interimText&&t.push({kind:"interim",key:"interim:thinking",text:e.interimText}),e.stream!==null){const a=`stream:${e.sessionKey}:${e.streamStartedAt??"live"}`;e.stream.trim().length>0?t.push({kind:"stream",key:a,text:e.stream,startedAt:e.streamStartedAt??Date.now()}):t.push({kind:"reading-indicator",key:a})}for(const a of e.queue){const c=((o=a.attachments)==null?void 0:o.filter(l=>l.fileName).map(l=>l.fileName))??[],u=c.length>0?a.text?`${c.join(", ")}
2172
2339
 
2173
- ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,message:{role:"user",content:[{type:"text",text:u}],timestamp:a.createdAt}})}return Ky(t)}function La(e,t){const n=e,i=typeof n.toolCallId=="string"?n.toolCallId:"";if(i)return`tool:${i}`;const s=typeof n.id=="string"?n.id:"";if(s)return`msg:${s}`;const r=typeof n.messageId=="string"?n.messageId:"";if(r)return`msg:${r}`;const o=typeof n.timestamp=="number"?n.timestamp:null,a=typeof n.role=="string"?n.role:"unknown";return o!=null?`msg:${a}:${o}:${t}`:`msg:${a}:${t}`}const jy=p`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>`;function Hy(e){if(!e.connected)return p`
2340
+ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,message:{role:"user",content:[{type:"text",text:u}],timestamp:a.createdAt}})}return jy(t)}function La(e,t){const n=e,i=typeof n.toolCallId=="string"?n.toolCallId:"";if(i)return`tool:${i}`;const s=typeof n.id=="string"?n.id:"";if(s)return`msg:${s}`;const r=typeof n.messageId=="string"?n.messageId:"";if(r)return`msg:${r}`;const o=typeof n.timestamp=="number"?n.timestamp:null,a=typeof n.role=="string"?n.role:"unknown";return o!=null?`msg:${a}:${o}:${t}`:`msg:${a}:${t}`}const qy=p`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>`;function Vy(e){if(!e.connected)return p`
2174
2341
  <div class="setup-container">
2175
2342
  <div class="setup-card">
2176
2343
  <div class="setup-spinner"></div>
@@ -2183,20 +2350,20 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2183
2350
  target="_blank"
2184
2351
  rel="noopener"
2185
2352
  title="Open public chat in new tab"
2186
- >Public ${jy}</a>`:k;return p`
2353
+ >Public ${qy}</a>`:S;return p`
2187
2354
  <div class="setup-container setup-container--full chat-page">
2188
- ${pt("Chat",e.wsProps)}
2355
+ ${ht("Chat",e.wsProps)}
2189
2356
  ${t}
2190
2357
  <div class="chat-viewport">
2191
- ${Jc(e)}
2358
+ ${eu(e)}
2192
2359
  </div>
2193
2360
  </div>
2194
- `}function qy(e){return e?`${cl(e)} (${wi(e)})`:"n/a"}function eu(e){const t=e.state??{},n=t.lastStatus??"n/a",i=t.lastRunAtMs?wi(t.lastRunAtMs):"never";return`${n} · last ${i}`}function tu(e){const t=e.schedule;return t.kind==="at"?`One-time: ${cl(t.atMs)}`:t.kind==="every"?`Every ${ul(t.everyMs)}`:Vy(t.expr,t.tz)}function Vy(e,t){const n=e.trim().split(/\s+/);if(n.length!==5)return e;const[i,s,r,o,a]=n,c=t?` (${t.replace(/^.*\//,"").replace(/_/g," ")})`:"",u=(b,S)=>new Date(2e3,0,1,b,S).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),l=/^\d{1,2}$/.test(i)?parseInt(i,10):null,d=Ia(s);if(l===null||!d)return`${e}${t?` (${t})`:""}`;const h=d.map(b=>u(b,l)),v=h.length<=3?h.join(" & "):`${h.slice(0,-1).join(", ")} & ${h[h.length-1]}`,y=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];if(r==="*"&&o==="*"){if(a==="*")return`Daily at ${v}${c}`;if(a==="1-5")return`Weekdays at ${v}${c}`;if(a==="0,6"||a==="6,0")return`Weekends at ${v}${c}`;const b=Ia(a);if(b)return`${b.map(x=>y[x%7]??String(x)).join(", ")} at ${v}${c}`}return`${e}${t?` (${t})`:""}`}function Ia(e){if(e==="*")return null;if(/^\d+(,\d+)*$/.test(e))return e.split(",").map(Number);if(/^\d+-\d+$/.test(e)){const[t,n]=e.split("-").map(Number);if(t>n)return null;const i=[];for(let s=t;s<=n;s++)i.push(s);return i}return null}function Gy(e,t=!0){const n=e.payload;return n.kind==="systemEvent"?`Task: ${t&&n.text.length>60?`${n.text.slice(0,57)}…`:n.text}`:`Message: ${t&&n.message.length>60?`${n.message.slice(0,57)}…`:n.message}`}function Ra(e){const t=e.payload;if(t.kind!=="agentTurn")return null;const n=t.channel??t.provider,i=t.to;if(!i&&!n)return null;const s=[];return i&&s.push(i),n&&n!=="last"&&s.push(`via ${n}`),s.join(" ")||null}function Qy(e){var s;const t=["last",...e.channels.filter(Boolean)],n=(s=e.form.channel)==null?void 0:s.trim();n&&!t.includes(n)&&t.push(n);const i=new Set;return t.filter(r=>i.has(r)?!1:(i.add(r),!0))}function Yy(e,t){var i,s;if(t==="last")return"last";const n=(i=e.channelMeta)==null?void 0:i.find(r=>r.id===t);return n!=null&&n.label?n.label:((s=e.channelLabels)==null?void 0:s[t])??t}function Xy(e){return e||"Default"}const Na=p`<svg viewBox="0 0 24 24"><polygon points="5 3 19 12 5 21 5 3"/></svg>`,Zy=p`<svg viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></svg>`,Jy=p`<svg viewBox="0 0 24 24"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/></svg>`,nu=p`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,ev=p`<svg viewBox="0 0 24 24"><path d="M12 5v14"/><path d="M5 12h14"/></svg>`;function Da(e){const t=e.detailJobId?e.jobs.find(n=>n.id===e.detailJobId)??null:null;return p`
2195
- ${tv(e)}
2196
- ${nv(e)}
2197
- ${e.newEventModalOpen?sv(e):k}
2198
- ${t?ov(t,e):k}
2199
- `}function tv(e){const t=e.status,n=(t==null?void 0:t.enabled)??!1,i=(t==null?void 0:t.jobs)??0,s=t==null?void 0:t.nextWakeAtMs;return p`
2361
+ `}function Gy(e){return e?`${cl(e)} (${wi(e)})`:"n/a"}function tu(e){const t=e.state??{},n=t.lastStatus??"n/a",i=t.lastRunAtMs?wi(t.lastRunAtMs):"never";return`${n} · last ${i}`}function nu(e){const t=e.schedule;return t.kind==="at"?`One-time: ${cl(t.atMs)}`:t.kind==="every"?`Every ${ul(t.everyMs)}`:Qy(t.expr,t.tz)}function Qy(e,t){const n=e.trim().split(/\s+/);if(n.length!==5)return e;const[i,s,r,o,a]=n,c=t?` (${t.replace(/^.*\//,"").replace(/_/g," ")})`:"",u=(b,k)=>new Date(2e3,0,1,b,k).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),l=/^\d{1,2}$/.test(i)?parseInt(i,10):null,d=Ia(s);if(l===null||!d)return`${e}${t?` (${t})`:""}`;const h=d.map(b=>u(b,l)),v=h.length<=3?h.join(" & "):`${h.slice(0,-1).join(", ")} & ${h[h.length-1]}`,f=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];if(r==="*"&&o==="*"){if(a==="*")return`Daily at ${v}${c}`;if(a==="1-5")return`Weekdays at ${v}${c}`;if(a==="0,6"||a==="6,0")return`Weekends at ${v}${c}`;const b=Ia(a);if(b)return`${b.map(x=>f[x%7]??String(x)).join(", ")} at ${v}${c}`}return`${e}${t?` (${t})`:""}`}function Ia(e){if(e==="*")return null;if(/^\d+(,\d+)*$/.test(e))return e.split(",").map(Number);if(/^\d+-\d+$/.test(e)){const[t,n]=e.split("-").map(Number);if(t>n)return null;const i=[];for(let s=t;s<=n;s++)i.push(s);return i}return null}function Yy(e,t=!0){const n=e.payload;return n.kind==="systemEvent"?`Task: ${t&&n.text.length>60?`${n.text.slice(0,57)}…`:n.text}`:`Message: ${t&&n.message.length>60?`${n.message.slice(0,57)}…`:n.message}`}function Ra(e){const t=e.payload;if(t.kind!=="agentTurn")return null;const n=t.channel??t.provider,i=t.to;if(!i&&!n)return null;const s=[];return i&&s.push(i),n&&n!=="last"&&s.push(`via ${n}`),s.join(" ")||null}function Xy(e){var s;const t=["last",...e.channels.filter(Boolean)],n=(s=e.form.channel)==null?void 0:s.trim();n&&!t.includes(n)&&t.push(n);const i=new Set;return t.filter(r=>i.has(r)?!1:(i.add(r),!0))}function Zy(e,t){var i,s;if(t==="last")return"last";const n=(i=e.channelMeta)==null?void 0:i.find(r=>r.id===t);return n!=null&&n.label?n.label:((s=e.channelLabels)==null?void 0:s[t])??t}function Jy(e){return e||"Default"}const Na=p`<svg viewBox="0 0 24 24"><polygon points="5 3 19 12 5 21 5 3"/></svg>`,ev=p`<svg viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></svg>`,tv=p`<svg viewBox="0 0 24 24"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/></svg>`,iu=p`<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,nv=p`<svg viewBox="0 0 24 24"><path d="M12 5v14"/><path d="M5 12h14"/></svg>`;function Da(e){const t=e.detailJobId?e.jobs.find(n=>n.id===e.detailJobId)??null:null;return p`
2362
+ ${iv(e)}
2363
+ ${sv(e)}
2364
+ ${e.newEventModalOpen?ov(e):S}
2365
+ ${t?lv(t,e):S}
2366
+ `}function iv(e){const t=e.status,n=(t==null?void 0:t.enabled)??!1,i=(t==null?void 0:t.jobs)??0,s=t==null?void 0:t.nextWakeAtMs;return p`
2200
2367
  <div class="event-status-bar">
2201
2368
  <div class="event-status-bar__info">
2202
2369
  <span class="statusDot ${n?"ok":""}"></span>
@@ -2206,7 +2373,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2206
2373
  ${s?p`
2207
2374
  <span class="event-status-bar__sep">\u00b7</span>
2208
2375
  <span>Next: ${wi(s)}</span>
2209
- `:k}
2376
+ `:S}
2210
2377
  <button
2211
2378
  class="btn btn--sm"
2212
2379
  ?disabled=${e.loading}
@@ -2215,17 +2382,17 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2215
2382
  >
2216
2383
  ${e.loading?"Refreshing…":"Refresh"}
2217
2384
  </button>
2218
- ${e.error?p`<span class="muted">${e.error}</span>`:k}
2385
+ ${e.error?p`<span class="muted">${e.error}</span>`:S}
2219
2386
  </div>
2220
2387
  <button class="btn primary btn--sm" @click=${e.onNewEventModalOpen}>
2221
- ${ev} New Event
2388
+ ${nv} New Event
2222
2389
  </button>
2223
2390
  </div>
2224
- `}function nv(e){return e.jobs.length===0?p`<div class="muted" style="padding: 20px 0;">No events yet. Create one to get started.</div>`:p`
2391
+ `}function sv(e){return e.jobs.length===0?p`<div class="muted" style="padding: 20px 0;">No events yet. Create one to get started.</div>`:p`
2225
2392
  <div class="event-grid">
2226
- ${e.jobs.map(t=>iv(t,e))}
2393
+ ${e.jobs.map(t=>rv(t,e))}
2227
2394
  </div>
2228
- `}function iv(e,t){return p`
2395
+ `}function rv(e,t){return p`
2229
2396
  <div
2230
2397
  class="event-card ${e.enabled?"":"disabled"}"
2231
2398
  @click=${()=>t.onDetailOpen(e)}
@@ -2236,12 +2403,12 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2236
2403
  ${e.enabled?"On":"Off"}
2237
2404
  </span>
2238
2405
  </div>
2239
- <div class="event-card__schedule">${tu(e)}</div>
2240
- ${e.agentId?p`<div class="event-card__agent">${Xy(e.agentId)}</div>`:k}
2241
- ${Ra(e)?p`<div class="event-card__agent muted" style="font-size: 11px;">\u2192 ${Ra(e)}</div>`:k}
2406
+ <div class="event-card__schedule">${nu(e)}</div>
2407
+ ${e.agentId?p`<div class="event-card__agent">${Jy(e.agentId)}</div>`:S}
2408
+ ${Ra(e)?p`<div class="event-card__agent muted" style="font-size: 11px;">\u2192 ${Ra(e)}</div>`:S}
2242
2409
  <div class="event-card__footer">
2243
2410
  <div class="event-card__status">
2244
- <span class="muted" style="font-size: 11px;">${eu(e)}</span>
2411
+ <span class="muted" style="font-size: 11px;">${tu(e)}</span>
2245
2412
  </div>
2246
2413
  <div class="event-card__actions" @click=${n=>n.stopPropagation()}>
2247
2414
  <button
@@ -2250,7 +2417,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2250
2417
  ?disabled=${t.busy}
2251
2418
  @click=${()=>t.onToggle(e,!e.enabled)}
2252
2419
  >
2253
- ${e.enabled?Zy:Na}
2420
+ ${e.enabled?ev:Na}
2254
2421
  </button>
2255
2422
  <button
2256
2423
  class="btn-icon"
@@ -2266,18 +2433,18 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2266
2433
  ?disabled=${t.busy}
2267
2434
  @click=${()=>t.onRemove(e)}
2268
2435
  >
2269
- ${Jy}
2436
+ ${tv}
2270
2437
  </button>
2271
2438
  </div>
2272
2439
  </div>
2273
2440
  </div>
2274
- `}function sv(e){const t=Qy(e);return p`
2441
+ `}function ov(e){const t=Xy(e);return p`
2275
2442
  <div class="event-modal-overlay" @click=${e.onNewEventModalClose}>
2276
2443
  <div class="event-modal" @click=${n=>n.stopPropagation()}>
2277
2444
  <div class="event-modal__header">
2278
2445
  <div class="event-modal__title">New Event</div>
2279
2446
  <button class="event-modal__close" @click=${e.onNewEventModalClose}>
2280
- ${nu}
2447
+ ${iu}
2281
2448
  </button>
2282
2449
  </div>
2283
2450
 
@@ -2329,7 +2496,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2329
2496
  </label>
2330
2497
  </div>
2331
2498
 
2332
- ${rv(e)}
2499
+ ${av(e)}
2333
2500
 
2334
2501
  <div class="form-grid" style="margin-top: 12px;">
2335
2502
  <label class="field">
@@ -2391,7 +2558,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2391
2558
  @change=${n=>e.onFormChange({channel:n.target.value})}
2392
2559
  >
2393
2560
  ${t.map(n=>p`<option value=${n}>
2394
- ${Yy(e,n)}
2561
+ ${Zy(e,n)}
2395
2562
  </option>`)}
2396
2563
  </select>
2397
2564
  </label>
@@ -2418,9 +2585,9 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2418
2585
  @input=${n=>e.onFormChange({postToMainPrefix:n.target.value})}
2419
2586
  />
2420
2587
  </label>
2421
- `:k}
2588
+ `:S}
2422
2589
  </div>
2423
- `:k}
2590
+ `:S}
2424
2591
 
2425
2592
  <div class="row" style="margin-top: 16px; justify-content: flex-end;">
2426
2593
  <button class="btn" @click=${e.onNewEventModalClose}>Cancel</button>
@@ -2430,7 +2597,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2430
2597
  </div>
2431
2598
  </div>
2432
2599
  </div>
2433
- `}function rv(e){const t=e.form;return t.scheduleKind==="at"?p`
2600
+ `}function av(e){const t=e.form;return t.scheduleKind==="at"?p`
2434
2601
  <label class="field" style="margin-top: 12px;">
2435
2602
  <span>Run at</span>
2436
2603
  <input
@@ -2479,17 +2646,17 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2479
2646
  />
2480
2647
  </label>
2481
2648
  </div>
2482
- `}function ov(e,t){var n;return p`
2649
+ `}function lv(e,t){var n;return p`
2483
2650
  <div class="event-modal-overlay" @click=${t.onDetailClose}>
2484
2651
  <div class="event-modal" @click=${i=>i.stopPropagation()}>
2485
2652
  <div class="event-modal__header">
2486
2653
  <div class="event-modal__title">${e.name||"Untitled Event"}</div>
2487
2654
  <button class="event-modal__close" @click=${t.onDetailClose}>
2488
- ${nu}
2655
+ ${iu}
2489
2656
  </button>
2490
2657
  </div>
2491
2658
 
2492
- ${e.description?p`<div style="color: var(--muted); font-size: 13px; margin-bottom: 16px;">${e.description}</div>`:k}
2659
+ ${e.description?p`<div style="color: var(--muted); font-size: 13px; margin-bottom: 16px;">${e.description}</div>`:S}
2493
2660
 
2494
2661
  <div class="event-detail-section">
2495
2662
  <div class="event-detail-row">
@@ -2502,14 +2669,14 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2502
2669
  </div>
2503
2670
  <div class="event-detail-row">
2504
2671
  <span class="event-detail-label">Schedule</span>
2505
- <span class="event-detail-value">${tu(e)}</span>
2672
+ <span class="event-detail-value">${nu(e)}</span>
2506
2673
  </div>
2507
2674
  ${e.agentId?p`
2508
2675
  <div class="event-detail-row">
2509
2676
  <span class="event-detail-label">Agent</span>
2510
2677
  <span class="event-detail-value mono">${e.agentId}</span>
2511
2678
  </div>
2512
- `:k}
2679
+ `:S}
2513
2680
  <div class="event-detail-row">
2514
2681
  <span class="event-detail-label">Session</span>
2515
2682
  <span class="event-detail-value">
@@ -2524,39 +2691,39 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2524
2691
  </div>
2525
2692
  <div class="event-detail-row" style="flex-direction: column; align-items: stretch; gap: 4px;">
2526
2693
  <span class="event-detail-label">Action</span>
2527
- <span class="event-detail-value" style="text-align: left; white-space: pre-wrap; font-size: 12px; color: var(--muted); line-height: 1.5;">${Gy(e,!1)}</span>
2694
+ <span class="event-detail-value" style="text-align: left; white-space: pre-wrap; font-size: 12px; color: var(--muted); line-height: 1.5;">${Yy(e,!1)}</span>
2528
2695
  </div>
2529
2696
  ${e.payload.kind==="agentTurn"&&e.payload.to?p`
2530
2697
  <div class="event-detail-row">
2531
2698
  <span class="event-detail-label">Send to</span>
2532
2699
  <span class="event-detail-value mono">${e.payload.to}</span>
2533
2700
  </div>
2534
- `:k}
2701
+ `:S}
2535
2702
  ${e.payload.kind==="agentTurn"&&(e.payload.channel??e.payload.provider)?p`
2536
2703
  <div class="event-detail-row">
2537
2704
  <span class="event-detail-label">Channel</span>
2538
2705
  <span class="event-detail-value">${e.payload.channel??e.payload.provider}</span>
2539
2706
  </div>
2540
- `:k}
2707
+ `:S}
2541
2708
  ${e.payload.kind==="agentTurn"?p`
2542
2709
  <div class="event-detail-row">
2543
2710
  <span class="event-detail-label">Auto-deliver</span>
2544
2711
  <span class="event-detail-value">${e.payload.deliver?"Yes":"No"}</span>
2545
2712
  </div>
2546
- `:k}
2713
+ `:S}
2547
2714
  </div>
2548
2715
 
2549
2716
  <div class="event-detail-section">
2550
2717
  <div class="event-detail-row">
2551
2718
  <span class="event-detail-label">Last run</span>
2552
- <span class="event-detail-value">${eu(e)}</span>
2719
+ <span class="event-detail-value">${tu(e)}</span>
2553
2720
  </div>
2554
2721
  ${(n=e.state)!=null&&n.nextRunAtMs?p`
2555
2722
  <div class="event-detail-row">
2556
2723
  <span class="event-detail-label">Next run</span>
2557
- <span class="event-detail-value">${qy(e.state.nextRunAtMs)}</span>
2724
+ <span class="event-detail-value">${Gy(e.state.nextRunAtMs)}</span>
2558
2725
  </div>
2559
- `:k}
2726
+ `:S}
2560
2727
  </div>
2561
2728
 
2562
2729
  <div class="event-detail-section">
@@ -2565,7 +2732,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2565
2732
  </div>
2566
2733
  ${t.runs.length===0?p`<div class="muted" style="font-size: 13px;">No runs recorded yet.</div>`:p`
2567
2734
  <div class="list">
2568
- ${[...t.runs].sort((i,s)=>s.ts-i.ts).map(i=>lv(i))}
2735
+ ${[...t.runs].sort((i,s)=>s.ts-i.ts).map(i=>uv(i))}
2569
2736
  </div>
2570
2737
  `}
2571
2738
  </div>
@@ -2595,24 +2762,24 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2595
2762
  </div>
2596
2763
  </div>
2597
2764
  </div>
2598
- `}function av(e){const t=e.toLowerCase();return t==="ok"||t==="success"?"chip chip-ok":t==="error"||t==="fail"||t==="failed"?"chip chip-warn":"chip"}function lv(e){return p`
2765
+ `}function cv(e){const t=e.toLowerCase();return t==="ok"||t==="success"?"chip chip-ok":t==="error"||t==="fail"||t==="failed"?"chip chip-warn":"chip"}function uv(e){return p`
2599
2766
  <div class="list-item" style="grid-template-columns: 1fr; gap: 6px;">
2600
2767
  <div style="display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
2601
- <span class=${av(e.status)} style="font-size: 11px; padding: 2px 8px;">
2768
+ <span class=${cv(e.status)} style="font-size: 11px; padding: 2px 8px;">
2602
2769
  ${e.status}
2603
2770
  </span>
2604
2771
  <span class="muted" style="font-size: 12px;">${wi(e.ts)}</span>
2605
2772
  <span class="muted" style="font-size: 12px;">${ul(e.durationMs)}</span>
2606
2773
  </div>
2607
- ${e.summary?p`<div class="muted" style="font-size: 12px;">${e.summary}</div>`:k}
2774
+ ${e.summary?p`<div class="muted" style="font-size: 12px;">${e.summary}</div>`:S}
2608
2775
  ${e.error?p`
2609
2776
  <details style="margin-top: 2px;">
2610
2777
  <summary class="muted" style="cursor: pointer; font-size: 12px;">Error details</summary>
2611
2778
  <div class="muted" style="margin-top: 4px; white-space: pre-wrap; font-size: 12px;">${e.error}</div>
2612
2779
  </details>
2613
- `:k}
2780
+ `:S}
2614
2781
  </div>
2615
- `}function cv(e){var s;const t=((s=e.report)==null?void 0:s.skills)??[],n=e.filter.trim().toLowerCase(),i=n?t.filter(r=>[r.name,r.description,r.source].join(" ").toLowerCase().includes(n)):t;return p`
2782
+ `}function dv(e){var s;const t=((s=e.report)==null?void 0:s.skills)??[],n=e.filter.trim().toLowerCase(),i=n?t.filter(r=>[r.name,r.description,r.source].join(" ").toLowerCase().includes(n)):t;return p`
2616
2783
  <section class="card">
2617
2784
  <div class="row" style="justify-content: space-between;">
2618
2785
  <div>
@@ -2636,38 +2803,38 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2636
2803
  <div class="muted">${i.length} shown</div>
2637
2804
  </div>
2638
2805
 
2639
- ${e.error?p`<div class="callout danger" style="margin-top: 12px;">${e.error}</div>`:k}
2806
+ ${e.error?p`<div class="callout danger" style="margin-top: 12px;">${e.error}</div>`:S}
2640
2807
 
2641
2808
  ${i.length===0?p`<div class="muted" style="margin-top: 16px;">No skills found.</div>`:p`
2642
2809
  <div class="list" style="margin-top: 16px;">
2643
- ${i.map(r=>uv(r,e))}
2810
+ ${i.map(r=>pv(r,e))}
2644
2811
  </div>
2645
2812
  `}
2646
2813
  </section>
2647
- `}function uv(e,t){const n=t.busyKey===e.skillKey,i=t.edits[e.skillKey]??"",s=t.messages[e.skillKey]??null,r=e.install.length>0&&e.missing.bins.length>0,o=[...e.missing.bins.map(c=>`bin:${c}`),...e.missing.env.map(c=>`env:${c}`),...e.missing.config.map(c=>`config:${c}`),...e.missing.os.map(c=>`os:${c}`)],a=[];return e.disabled&&a.push("disabled"),e.blockedByAllowlist&&a.push("blocked by allowlist"),p`
2814
+ `}function pv(e,t){const n=t.busyKey===e.skillKey,i=t.edits[e.skillKey]??"",s=t.messages[e.skillKey]??null,r=e.install.length>0&&e.missing.bins.length>0,o=[...e.missing.bins.map(c=>`bin:${c}`),...e.missing.env.map(c=>`env:${c}`),...e.missing.config.map(c=>`config:${c}`),...e.missing.os.map(c=>`os:${c}`)],a=[];return e.disabled&&a.push("disabled"),e.blockedByAllowlist&&a.push("blocked by allowlist"),p`
2648
2815
  <div class="list-item">
2649
2816
  <div class="list-main">
2650
2817
  <div class="list-title">
2651
2818
  ${e.emoji?`${e.emoji} `:""}${e.name}
2652
2819
  </div>
2653
- <div class="list-sub">${hd(e.description,140)}</div>
2820
+ <div class="list-sub">${fd(e.description,140)}</div>
2654
2821
  <div class="chip-row" style="margin-top: 6px;">
2655
2822
  <span class="chip">${e.source}</span>
2656
2823
  <span class="chip ${e.eligible?"chip-ok":"chip-warn"}">
2657
2824
  ${e.eligible?"eligible":"blocked"}
2658
2825
  </span>
2659
- ${e.disabled?p`<span class="chip chip-warn">disabled</span>`:k}
2826
+ ${e.disabled?p`<span class="chip chip-warn">disabled</span>`:S}
2660
2827
  </div>
2661
2828
  ${o.length>0?p`
2662
2829
  <div class="muted" style="margin-top: 6px;">
2663
2830
  Missing: ${o.join(", ")}
2664
2831
  </div>
2665
- `:k}
2832
+ `:S}
2666
2833
  ${a.length>0?p`
2667
2834
  <div class="muted" style="margin-top: 6px;">
2668
2835
  Reason: ${a.join(", ")}
2669
2836
  </div>
2670
- `:k}
2837
+ `:S}
2671
2838
  </div>
2672
2839
  <div class="list-meta">
2673
2840
  <div class="row" style="justify-content: flex-end; flex-wrap: wrap;">
@@ -2684,14 +2851,14 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2684
2851
  @click=${()=>t.onInstall(e.skillKey,e.name,e.install[0].id)}
2685
2852
  >
2686
2853
  ${n?"Installing…":e.install[0].label}
2687
- </button>`:k}
2854
+ </button>`:S}
2688
2855
  </div>
2689
2856
  ${s?p`<div
2690
2857
  class="muted"
2691
2858
  style="margin-top: 8px; color: ${s.kind==="error"?"var(--danger-color, #d14343)":"var(--success-color, #0a7f5a)"};"
2692
2859
  >
2693
2860
  ${s.message}
2694
- </div>`:k}
2861
+ </div>`:S}
2695
2862
  ${e.primaryEnv?p`
2696
2863
  <div class="field" style="margin-top: 10px;">
2697
2864
  <span>API key</span>
@@ -2709,10 +2876,10 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2709
2876
  >
2710
2877
  Save key
2711
2878
  </button>
2712
- `:k}
2879
+ `:S}
2713
2880
  </div>
2714
2881
  </div>
2715
- `}const Oa=["user","assistant","tool","thinking","error"],Ba={user:"User",assistant:"Assistant",tool:"Tool",thinking:"Thinking",error:"Error",system:"System"};function dv(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function pv(e){return e.split(":").slice(2).join(":")||e}function hv(e,t){return t?[e.content,e.agentId,e.sessionKey,e.sessionId,e.toolName].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function fv(e,t=500){return e.length<=t?e:e.slice(0,t)+"..."}function gv(e){const t=e.filterText.trim().toLowerCase();Oa.some(i=>!e.typeFilters[i]),e.agents.some(i=>!e.agentFilters[i]);const n=e.entries.filter(i=>!e.typeFilters[i.type]||e.agents.length>0&&!(e.agentFilters[i.agentId]??!0)?!1:hv(i,t));return p`
2882
+ `}const Oa=["user","assistant","tool","thinking","error"],Ba={user:"User",assistant:"Assistant",tool:"Tool",thinking:"Thinking",error:"Error",system:"System"};function hv(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function fv(e){return e.split(":").slice(2).join(":")||e}function gv(e,t){return t?[e.content,e.agentId,e.sessionKey,e.sessionId,e.toolName].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function mv(e,t=500){return e.length<=t?e:e.slice(0,t)+"..."}function yv(e){const t=e.filterText.trim().toLowerCase();Oa.some(i=>!e.typeFilters[i]),e.agents.some(i=>!e.agentFilters[i]);const n=e.entries.filter(i=>!e.typeFilters[i.type]||e.agents.length>0&&!(e.agentFilters[i.agentId]??!0)?!1:gv(i,t));return p`
2716
2883
  <div>
2717
2884
  <div class="filters" style="margin-top: 14px;">
2718
2885
  <label class="field" style="min-width: 220px;">
@@ -2759,25 +2926,25 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2759
2926
  </label>
2760
2927
  </div>
2761
2928
 
2762
- ${e.error?p`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:k}
2929
+ ${e.error?p`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:S}
2763
2930
 
2764
2931
  <div class="log-stream" style="margin-top: 12px;" @scroll=${e.onScroll}>
2765
2932
  ${n.length===0?p`<div class="muted" style="padding: 12px;">No session log entries.</div>`:n.map(i=>p`
2766
2933
  <div class="log-row session-entry ${i.type}">
2767
2934
  <div class="log-row-header">
2768
- <span class="log-time mono">${dv(i.timestamp)}</span>
2935
+ <span class="log-time mono">${hv(i.timestamp)}</span>
2769
2936
  <span class="session-log-type ${i.type}">${Ba[i.type]}</span>
2770
2937
  <span class="log-subsystem mono">${i.agentId}</span>
2771
- <span class="session-label mono">${pv(i.sessionKey)}</span>
2772
- ${i.toolName?p`<span class="session-tool mono">${i.toolName}</span>`:k}
2773
- ${i.model?p`<span class="session-model mono">${i.model}</span>`:k}
2938
+ <span class="session-label mono">${fv(i.sessionKey)}</span>
2939
+ ${i.toolName?p`<span class="session-tool mono">${i.toolName}</span>`:S}
2940
+ ${i.model?p`<span class="session-model mono">${i.model}</span>`:S}
2774
2941
  </div>
2775
- <div class="log-message mono">${fv(i.content)}</div>
2942
+ <div class="log-message mono">${mv(i.content)}</div>
2776
2943
  </div>
2777
2944
  `)}
2778
2945
  </div>
2779
2946
  </div>
2780
- `}const qs=["trace","debug","info","warn","error","fatal"];function mv(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function iu(e,t){return t?[e.message,e.subsystem,e.raw].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function yv(e){return p`
2947
+ `}const qs=["trace","debug","info","warn","error","fatal"];function vv(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function su(e,t){return t?[e.message,e.subsystem,e.raw].filter(Boolean).join(" ").toLowerCase().includes(t):!0}function bv(e){return p`
2781
2948
  <section class="card">
2782
2949
  <div class="row" style="justify-content: space-between;">
2783
2950
  <div>
@@ -2792,7 +2959,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2792
2959
  <button
2793
2960
  class="btn"
2794
2961
  ?disabled=${e.entries.length===0}
2795
- @click=${()=>{const t=e.filterText.trim().toLowerCase(),n=qs.some(r=>!e.levelFilters[r]),i=e.entries.filter(r=>r.level&&!e.levelFilters[r.level]?!1:iu(r,t)),s=t||n?"filtered":"visible";e.onExport(i.map(r=>r.raw),s)}}
2962
+ @click=${()=>{const t=e.filterText.trim().toLowerCase(),n=qs.some(r=>!e.levelFilters[r]),i=e.entries.filter(r=>r.level&&!e.levelFilters[r.level]?!1:su(r,t)),s=t||n?"filtered":"visible";e.onExport(i.map(r=>r.raw),s)}}
2796
2963
  >
2797
2964
  Export
2798
2965
  </button>
@@ -2822,9 +2989,9 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2822
2989
  </button>
2823
2990
  </div>
2824
2991
 
2825
- ${e.logsSubTab==="session"?gv(e.sessionLogsProps):vv(e)}
2992
+ ${e.logsSubTab==="session"?yv(e.sessionLogsProps):wv(e)}
2826
2993
  </section>
2827
- `}function vv(e){const t=e.filterText.trim().toLowerCase();qs.some(i=>!e.levelFilters[i]);const n=e.entries.filter(i=>i.level&&!e.levelFilters[i.level]?!1:iu(i,t));return p`
2994
+ `}function wv(e){const t=e.filterText.trim().toLowerCase();qs.some(i=>!e.levelFilters[i]);const n=e.entries.filter(i=>i.level&&!e.levelFilters[i.level]?!1:su(i,t));return p`
2828
2995
  <div class="filters" style="margin-top: 14px;">
2829
2996
  <label class="field" style="min-width: 220px;">
2830
2997
  <span>Filter</span>
@@ -2857,17 +3024,17 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2857
3024
  `)}
2858
3025
  </div>
2859
3026
 
2860
- ${e.file?p`<div class="muted" style="margin-top: 10px;">File: ${e.file}</div>`:k}
3027
+ ${e.file?p`<div class="muted" style="margin-top: 10px;">File: ${e.file}</div>`:S}
2861
3028
  ${e.truncated?p`<div class="callout" style="margin-top: 10px;">
2862
3029
  Log output truncated; showing latest chunk.
2863
- </div>`:k}
2864
- ${e.error?p`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:k}
3030
+ </div>`:S}
3031
+ ${e.error?p`<div class="callout danger" style="margin-top: 10px;">${e.error}</div>`:S}
2865
3032
 
2866
3033
  <div class="log-stream" style="margin-top: 12px;" @scroll=${e.onScroll}>
2867
3034
  ${n.length===0?p`<div class="muted" style="padding: 12px;">No log entries.</div>`:[...n].reverse().map(i=>p`
2868
3035
  <div class="log-row">
2869
3036
  <div class="log-row-header">
2870
- <span class="log-time mono">${mv(i.time)}</span>
3037
+ <span class="log-time mono">${vv(i.time)}</span>
2871
3038
  <span class="log-level ${i.level??""}">${i.level??""}</span>
2872
3039
  <span class="log-subsystem mono">${i.subsystem??""}</span>
2873
3040
  </div>
@@ -2875,13 +3042,13 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2875
3042
  </div>
2876
3043
  `)}
2877
3044
  </div>
2878
- `}const bv=[{id:"cron",label:"Events"},{id:"skills",label:"Skills"},{id:"logs",label:"Logs"}];function wv(e){switch(e.activeTab){case"cron":return Da(e.cronProps);case"skills":return cv(e.skillsProps);case"logs":return yv(e.logsProps);default:return Da(e.cronProps)}}function kv(e){return e.connected?p`
3045
+ `}const kv=[{id:"cron",label:"Events"},{id:"skills",label:"Skills"},{id:"logs",label:"Logs"}];function Sv(e){switch(e.activeTab){case"cron":return Da(e.cronProps);case"skills":return dv(e.skillsProps);case"logs":return bv(e.logsProps);default:return Da(e.cronProps)}}function Av(e){return e.connected?p`
2879
3046
  <div class="setup-container">
2880
- ${pt("Advanced",e.wsProps)}
3047
+ ${ht("Advanced",e.wsProps)}
2881
3048
  <div class="setup-card sp-card-advanced" style="text-align: left;">
2882
3049
  <h1>Advanced</h1>
2883
3050
  <div class="sp-tabs">
2884
- ${bv.map(t=>p`
3051
+ ${kv.map(t=>p`
2885
3052
  <button
2886
3053
  class="sp-tab ${e.activeTab===t.id?"active":""}"
2887
3054
  @click=${()=>e.onTabChange(t.id)}
@@ -2890,7 +3057,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2890
3057
  </button>
2891
3058
  `)}
2892
3059
  </div>
2893
- ${wv(e)}
3060
+ ${Sv(e)}
2894
3061
  </div>
2895
3062
  </div>
2896
3063
  `:p`
@@ -2900,7 +3067,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2900
3067
  <p>Connecting to gateway...</p>
2901
3068
  </div>
2902
3069
  </div>
2903
- `}function Fa(e){if(!e.show)return k;const t=qe(),n=e.isFirstTime,i=e.changePinMode===!0&&!n,s=e.changePinBusy===!0;let r=e.accounts.length>0?e.accounts[0].id:"";const o=h=>{var y;r=h.target.value;const v=(y=h.target.closest(".login-card"))==null?void 0:y.querySelector(".login-change-pin");v&&(v.style.display=r==="__master__"?"":"none")},a=h=>v=>{const y=v.target;y.value=y.value.replace(/\D/g,"").slice(0,6),h(y.value)},c=!n&&e.accounts.length>1?p`
3070
+ `}function Fa(e){if(!e.show)return S;const t=Ve(),n=e.isFirstTime,i=e.changePinMode===!0&&!n,s=e.changePinBusy===!0;let r=e.accounts.length>0?e.accounts[0].id:"";const o=h=>{var f;r=h.target.value;const v=(f=h.target.closest(".login-card"))==null?void 0:f.querySelector(".login-change-pin");v&&(v.style.display=r==="__master__"?"":"none")},a=h=>v=>{const f=v.target;f.value=f.value.replace(/\D/g,"").slice(0,6),h(f.value)},c=!n&&e.accounts.length>1?p`
2904
3071
  <select
2905
3072
  class="login-account-select"
2906
3073
  @change=${o}
@@ -2912,7 +3079,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2912
3079
  </option>
2913
3080
  `)}
2914
3081
  </select>
2915
- `:k;if(i){let h="",v="",y="";const b=S=>{var x;S.preventDefault(),!s&&(!h||!v||!y||v===y&&r&&((x=e.onChangePin)==null||x.call(e,r,h,v)))};return p`
3082
+ `:S;if(i){let h="",v="",f="";const b=k=>{var x;k.preventDefault(),!s&&(!h||!v||!f||v===f&&r&&((x=e.onChangePin)==null||x.call(e,r,h,v)))};return p`
2916
3083
  <div class="login-overlay">
2917
3084
  <div class="login-card">
2918
3085
  <img class="login-logo" src="${t.iconUrl}" alt="${t.name}" />
@@ -2929,7 +3096,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2929
3096
  maxlength="6"
2930
3097
  placeholder="Current PIN"
2931
3098
  ?disabled=${s}
2932
- @input=${a(S=>{h=S})}
3099
+ @input=${a(k=>{h=k})}
2933
3100
  autofocus
2934
3101
  />
2935
3102
  <input
@@ -2941,7 +3108,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2941
3108
  maxlength="6"
2942
3109
  placeholder="New PIN (4-6 digits)"
2943
3110
  ?disabled=${s}
2944
- @input=${a(S=>{v=S})}
3111
+ @input=${a(k=>{v=k})}
2945
3112
  />
2946
3113
  <input
2947
3114
  class="login-pin-input"
@@ -2952,10 +3119,10 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2952
3119
  maxlength="6"
2953
3120
  placeholder="Confirm new PIN"
2954
3121
  ?disabled=${s}
2955
- @input=${a(S=>{y=S})}
3122
+ @input=${a(k=>{f=k})}
2956
3123
  />
2957
- ${e.changePinError?p`<p class="login-error">${e.changePinError}</p>`:k}
2958
- ${e.changePinSuccess?p`<p class="login-success">${e.changePinSuccess}</p>`:k}
3124
+ ${e.changePinError?p`<p class="login-error">${e.changePinError}</p>`:S}
3125
+ ${e.changePinSuccess?p`<p class="login-success">${e.changePinSuccess}</p>`:S}
2959
3126
  <button
2960
3127
  class="login-submit"
2961
3128
  type="submit"
@@ -2966,7 +3133,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
2966
3133
  <a
2967
3134
  class="login-link"
2968
3135
  href="#"
2969
- @click=${S=>{var x;S.preventDefault(),(x=e.onToggleChangePinMode)==null||x.call(e)}}
3136
+ @click=${k=>{var x;k.preventDefault(),(x=e.onToggleChangePinMode)==null||x.call(e)}}
2970
3137
  >Back to login</a>
2971
3138
  </p>
2972
3139
  </div>
@@ -3005,8 +3172,8 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3005
3172
  ?disabled=${e.busy}
3006
3173
  @input=${a(h=>{l=h})}
3007
3174
  />
3008
- `:k}
3009
- ${e.error?p`<p class="login-error">${e.error}</p>`:k}
3175
+ `:S}
3176
+ ${e.error?p`<p class="login-error">${e.error}</p>`:S}
3010
3177
  <button
3011
3178
  class="login-submit"
3012
3179
  type="submit"
@@ -3021,10 +3188,10 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3021
3188
  href="#"
3022
3189
  @click=${h=>{var v;h.preventDefault(),(v=e.onToggleChangePinMode)==null||v.call(e)}}
3023
3190
  >Change PIN</a>
3024
- </p>`:k}
3191
+ </p>`:S}
3025
3192
  </div>
3026
3193
  </div>
3027
- `}function Sv(e){if(!e.connected)return p`
3194
+ `}function xv(e){if(!e.connected)return p`
3028
3195
  <div class="setup-container">
3029
3196
  <div class="setup-card">
3030
3197
  <div class="setup-spinner"></div>
@@ -3037,10 +3204,10 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3037
3204
  <span class="public-chat-header__name">${n}</span>
3038
3205
  </div>
3039
3206
  <div class="chat-viewport">
3040
- ${Jc(t)}
3207
+ ${eu(t)}
3041
3208
  </div>
3042
3209
  </div>
3043
- `}async function Av(e){if(!(!e.client||!e.connected)&&!e.agentsLoading){e.agentsLoading=!0,e.agentsError=null;try{const t=await e.client.request("agents.list",{});t&&(e.agentsList=t)}catch(t){e.agentsError=String(t)}finally{e.agentsLoading=!1}}}async function bn(e){if(!(!e.client||!e.connected)&&!e.workspacesLoading){e.workspacesLoading=!0,e.workspacesError=null;try{const t=await e.client.request("workspaces.list",{});e.workspaces=t.workspaces}catch(t){e.workspacesError=String(t)}finally{e.workspacesLoading=!1}}}async function xv(e,t){var i,s;if(!e.client||!e.connected||e.workspaceSaving)return;const n=t.name.trim();if(!n){e.workspacesError="Account name is required.";return}e.workspaceSaving=!0,e.workspacesError=null;try{const r=await e.client.request("config.get",{});e.configSnapshot=r;const o=r.hash;if(!o){e.workspacesError="Config hash missing; reload and retry.";return}const a={name:n,baseHash:o,whatsappAccountName:n};(i=t.workspacePath)!=null&&i.trim()&&(a.workspaceDir=t.workspacePath.trim());const c=await e.client.request("workspaces.create",a);e.addingWorkspace=!1,e.newWorkspaceName="",e.newWorkspacePath="",await bn(e),(s=t.onCreated)==null||s.call(t,c)}catch(r){e.workspacesError=String(r)}finally{e.workspaceSaving=!1}}async function $v(e,t){if(!(!e.client||!e.connected)&&!e.workspaceSaving){e.workspaceSaving=!0,e.workspacesError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=n.hash;if(!i){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.remove",{name:t,baseHash:i}),e.workspaceRemoveConfirm=null,await bn(e)}catch(n){e.workspacesError=String(n)}finally{e.workspaceSaving=!1}}}async function Ev(e,t,n){if(!(!e.client||!e.connected)){e.workspacesError=null;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.hash;if(!s){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.rename",{name:t,displayName:n,baseHash:s}),await bn(e)}catch(i){e.workspacesError=String(i)}}}const jn=Object.freeze(Object.defineProperty({__proto__:null,createWorkspace:xv,loadWorkspaces:bn,removeWorkspace:$v,renameWorkspace:Ev},Symbol.toStringTag,{value:"Module"})),su={WEBCHAT_UI:"webchat-ui",CONTROL_UI:"taskmaster-control-ui",SETUP_UI:"setup-ui",WEBCHAT:"webchat",CLI:"cli",GATEWAY_CLIENT:"gateway-client",MACOS_APP:"taskmaster-macos",IOS_APP:"taskmaster-ios",ANDROID_APP:"taskmaster-android",NODE_HOST:"node-host",TEST:"test",FINGERPRINT:"fingerprint",PROBE:"taskmaster-probe",PUBLIC_CHAT:"public-chat"},Ua=su,Vs={WEBCHAT:"webchat",CLI:"cli",UI:"ui",BACKEND:"backend",NODE:"node",PROBE:"probe",TEST:"test"};new Set(Object.values(su));new Set(Object.values(Vs));function Cv(e){const t=e.version??(e.nonce?"v2":"v1"),n=e.scopes.join(","),i=e.token??"",s=[t,e.deviceId,e.clientId,e.clientMode,e.role,n,String(e.signedAtMs),i];return t==="v2"&&s.push(e.nonce??""),s.join("|")}const Tv=4008;class _v{constructor(t){this.opts=t,this.ws=null,this.pending=new Map,this.closed=!1,this.lastSeq=null,this.connectNonce=null,this.connectSent=!1,this.connectTimer=null,this.backoffMs=800}start(){this.closed=!1,this.connect()}stop(){var t;this.closed=!0,(t=this.ws)==null||t.close(),this.ws=null,this.flushPending(new Error("gateway client stopped"))}get connected(){var t;return((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN}connect(){this.closed||(this.ws=new WebSocket(this.opts.url),this.ws.onopen=()=>this.queueConnect(),this.ws.onmessage=t=>this.handleMessage(String(t.data??"")),this.ws.onclose=t=>{var i,s;const n=String(t.reason??"");this.ws=null,this.flushPending(new Error(`gateway closed (${t.code}): ${n}`)),(s=(i=this.opts).onClose)==null||s.call(i,{code:t.code,reason:n}),this.scheduleReconnect()},this.ws.onerror=()=>{})}scheduleReconnect(){if(this.closed)return;const t=this.backoffMs;this.backoffMs=Math.min(this.backoffMs*1.7,15e3),window.setTimeout(()=>this.connect(),t)}flushPending(t){for(const[,n]of this.pending)n.reject(t);this.pending.clear()}async sendConnect(){var d;if(this.connectSent)return;this.connectSent=!0,this.connectTimer!==null&&(window.clearTimeout(this.connectTimer),this.connectTimer=null);const t=this.opts.role??"operator",n=this.opts.scopes??["operator.admin","operator.approvals","operator.pairing"],s=!(t!=="operator")&&typeof crypto<"u"&&!!crypto.subtle;let r=null,o=!1,a=this.opts.token;if(s){r=await Mp();const h=(d=Ip({deviceId:r.deviceId,role:t}))==null?void 0:d.token;a=h??this.opts.token,o=!!(h&&this.opts.token)}const c=a||this.opts.password?{token:a,password:this.opts.password}:void 0;let u;if(s&&r){const h=Date.now(),v=this.connectNonce??void 0,y=Cv({deviceId:r.deviceId,clientId:this.opts.clientName??Ua.CONTROL_UI,clientMode:this.opts.mode??Vs.WEBCHAT,role:t,scopes:n,signedAtMs:h,token:a??null,nonce:v}),b=await Pp(r.privateKey,y);u={id:r.deviceId,publicKey:r.publicKey,signature:b,signedAt:h,nonce:v}}const l={minProtocol:3,maxProtocol:3,client:{id:this.opts.clientName??Ua.CONTROL_UI,version:this.opts.clientVersion??"dev",platform:this.opts.platform??navigator.platform??"web",mode:this.opts.mode??Vs.WEBCHAT,instanceId:this.opts.instanceId},role:t,scopes:n,device:u,caps:[],auth:c,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",l).then(h=>{var v,y,b;(v=h==null?void 0:h.auth)!=null&&v.deviceToken&&r&&Rp({deviceId:r.deviceId,role:h.auth.role??t,token:h.auth.deviceToken,scopes:h.auth.scopes??[]}),this.backoffMs=800,(b=(y=this.opts).onHello)==null||b.call(y,h)}).catch(()=>{var h;o&&r&&Np({deviceId:r.deviceId,role:t}),(h=this.ws)==null||h.close(Tv,"connect failed")})}handleMessage(t){var s,r,o,a,c;let n;try{n=JSON.parse(t)}catch{return}const i=n;if(i.type==="event"){const u=n;if(u.event==="connect.challenge"){const d=u.payload,h=d&&typeof d.nonce=="string"?d.nonce:null;h&&(this.connectNonce=h,this.sendConnect());return}const l=typeof u.seq=="number"?u.seq:null;l!==null&&(this.lastSeq!==null&&l>this.lastSeq+1&&((r=(s=this.opts).onGap)==null||r.call(s,{expected:this.lastSeq+1,received:l})),this.lastSeq=l);try{(a=(o=this.opts).onEvent)==null||a.call(o,u)}catch(d){console.error("[gateway] event handler error:",d)}return}if(i.type==="res"){const u=n,l=this.pending.get(u.id);if(!l)return;this.pending.delete(u.id),u.ok?l.resolve(u.payload):l.reject(new Error(((c=u.error)==null?void 0:c.message)??"request failed"));return}}request(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return Promise.reject(new Error("gateway not connected"));const i=tr(),s={type:"req",id:i,method:t,params:n},r=new Promise((o,a)=>{this.pending.set(i,{resolve:c=>o(c),reject:a})});return this.ws.send(JSON.stringify(s)),r}queueConnect(){this.connectNonce=null,this.connectSent=!1,this.connectTimer!==null&&window.clearTimeout(this.connectTimer),this.connectTimer=window.setTimeout(()=>{this.sendConnect()},750)}}function Gs(e){return typeof e=="object"&&e!==null}function Mv(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"",n=e.request;if(!t||!Gs(n))return null;const i=typeof n.command=="string"?n.command.trim():"";if(!i)return null;const s=typeof e.createdAtMs=="number"?e.createdAtMs:0,r=typeof e.expiresAtMs=="number"?e.expiresAtMs:0;return!s||!r?null:{id:t,request:{command:i,cwd:typeof n.cwd=="string"?n.cwd:null,host:typeof n.host=="string"?n.host:null,security:typeof n.security=="string"?n.security:null,ask:typeof n.ask=="string"?n.ask:null,agentId:typeof n.agentId=="string"?n.agentId:null,resolvedPath:typeof n.resolvedPath=="string"?n.resolvedPath:null,sessionKey:typeof n.sessionKey=="string"?n.sessionKey:null},createdAtMs:s,expiresAtMs:r}}function Pv(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"";return t?{id:t,decision:typeof e.decision=="string"?e.decision:null,resolvedBy:typeof e.resolvedBy=="string"?e.resolvedBy:null,ts:typeof e.ts=="number"?e.ts:null}:null}function ru(e){const t=Date.now();return e.filter(n=>n.expiresAtMs>t)}function Lv(e,t){const n=ru(e).filter(i=>i.id!==t.id);return n.push(t),n}function Wa(e,t){return ru(e).filter(n=>n.id!==t)}class Iv{constructor(){this.canvas=null,this.ctx=null,this.img=new Image,this.pendingFrame=null,this.rafId=null,this.deviceWidth=1280,this.deviceHeight=720,this.lastMouseMoveAt=0,this.MOUSE_THROTTLE_MS=30}attach(t){this.canvas=t,this.ctx=t.getContext("2d")}detach(){this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.canvas=null,this.ctx=null,this.pendingFrame=null}updateFrame(t,n){if(n!=null&&n.deviceWidth&&(this.deviceWidth=n.deviceWidth),n!=null&&n.deviceHeight&&(this.deviceHeight=n.deviceHeight),this.pendingFrame=t,!this.canvas){const i=document.getElementById("browser-screencast-canvas");i&&this.attach(i)}this.rafId==null&&(this.rafId=requestAnimationFrame(()=>this.renderFrame()))}renderFrame(){this.rafId=null;const t=this.pendingFrame;!t||!this.canvas||!this.ctx||(this.pendingFrame=null,this.img.onload=()=>{!this.canvas||!this.ctx||((this.canvas.width!==this.img.width||this.canvas.height!==this.img.height)&&(this.canvas.width=this.img.width,this.canvas.height=this.img.height),this.ctx.drawImage(this.img,0,0))},this.img.src=`data:image/jpeg;base64,${t}`)}translateCoordinates(t,n){if(!this.canvas)return{x:t,y:n};const i=this.canvas.getBoundingClientRect(),s=this.canvas.width/i.width,r=this.canvas.height/i.height,o=this.deviceWidth/this.canvas.width,a=this.deviceHeight/this.canvas.height;return{x:Math.round(t*s*o),y:Math.round(n*r*a)}}shouldThrottleMouseMove(){const t=performance.now();return t-this.lastMouseMoveAt<this.MOUSE_THROTTLE_MS?!0:(this.lastMouseMoveAt=t,!1)}getDeviceDimensions(){return{width:this.deviceWidth,height:this.deviceHeight}}}let ys=null;function ln(){return ys||(ys=new Iv),ys}function Wr(e){return e instanceof Error?e.message:String(e)}async function Rv(e){if(!e.client){console.error("[browser] startScreencast: no client"),e.browserError="Not connected to gateway";return}if(!e.connected){console.error("[browser] startScreencast: client exists but not connected"),e.browserError="Not connected to gateway";return}console.log("[browser] startScreencast: sending request"),e.browserLoading=!0,e.browserError=null;try{const t=await e.client.request("browser.screencast.start",{quality:60,maxWidth:1280,maxHeight:720});console.log("[browser] startScreencast response:",t),t!=null&&t.ok?e.browserScreencastActive=!0:(console.warn("[browser] startScreencast: response did not have ok=true",t),e.browserError="Screencast start failed (no ok in response)")}catch(t){console.error("[browser] startScreencast error:",t),e.browserError=Wr(t)}finally{e.browserLoading=!1}}async function Nv(e){if(!(!e.client||!e.connected)){e.browserLoading=!0,e.browserFullscreen=!1;try{await e.client.request("browser.screencast.stop",{}),e.browserScreencastActive=!1,e.browserScreencastFrame=null,e.browserScreencastMetadata=null}catch(t){e.browserError=Wr(t)}finally{e.browserLoading=!1}}}async function vs(e,t,n,i,s){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"mouse",action:t,x:n,y:i,button:s??"left",clickCount:t==="mousePressed"?1:0})}catch{}}async function bs(e,t,n,i){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"key",action:t,key:n,...i!=null&&i.text?{text:i.text}:{},...i!=null&&i.code?{code:i.code}:{},...i!=null&&i.modifiers?{modifiers:i.modifiers}:{}})}catch{}}async function Dv(e){if(!(!e.client||!e.connected))try{await e.client.request("browser.handoff.complete",{}),e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}catch(t){e.browserError=Wr(t)}}function Ov(e){e.browserInputMode=!e.browserInputMode}function Bv(e){e.browserFullscreen=!e.browserFullscreen,ln().detach()}function Fv(e,t){if(!(t!=null&&t.data))return;e.browserScreencastFrame=t.data,e.browserScreencastMetadata=t.metadata??null,ln().updateFrame(t.data,t.metadata)}function Uv(e,t){t&&(e.browserHandoffPending=!0,e.browserHandoffReason=t.reason??"Action required",e.browserHandoffId=t.id??null)}function Wv(e){e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}async function Qs(e,t){if(!e.client||!e.connected)return;const n=e.sessionKey.trim(),i=n?{sessionKey:n}:{};try{const s=await e.client.request("agent.identity.get",i);if(!s)return;const r=xs(s);e.assistantName=r.name,e.assistantAvatar=r.avatar,e.assistantAgentId=r.agentId??null}catch{}}async function Ys(e){return(await e.request("apikeys.list")).providers??[]}async function Ka(e,t,n){await e.request("apikeys.set",{provider:t,apiKey:n})}async function Kv(e,t){await e.request("apikeys.remove",{provider:t})}const gi="taskmaster_update_pending";async function ou(e){var t,n;if(!(!e.client||!e.connected)&&!e.updateChecking){e.updateChecking=!0,e.updateMessage=null,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("update.status",{});e.currentVersion=i.current,e.latestVersion=i.latest,e.updateAvailable=i.updateAvailable,e.updateMessage=i.updateAvailable?`v${i.latest} available`:"Up to date"}catch(i){e.updateMessage=`Check failed: ${String(i)}`,e.updateAvailable=null}finally{e.updateChecking=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function zv(e){var t,n,i,s;if(!(!e.client||e.updateRunning)){e.updateRunning=!0,e.updateMessage="Starting update...",e.updateProgressSteps=[],e.updateLastResult=null,(t=e.requestUpdate)==null||t.call(e);try{localStorage.setItem(gi,String(Date.now())),localStorage.removeItem(Kr)}catch{}try{const r=await e.client.request("update.run",{restartDelayMs:2e3,note:"Update from setup page"});if(r.ok&&r.result.status==="ok")e.updateMessage="Updated — restarting gateway...",(n=e.requestUpdate)==null||n.call(e);else if(r.ok&&r.result.status==="skipped")cn(),e.updateMessage=r.result.reason||"Update skipped",e.updateRunning=!1,(i=e.requestUpdate)==null||i.call(e);else throw cn(),new Error(r.result.reason||"Update failed")}catch(r){cn(),e.updateMessage=`Update failed: ${String(r)}`,e.updateRunning=!1,e.updateProgressSteps=[],(s=e.requestUpdate)==null||s.call(e)}}}function jv(e,t){var i,s,r;const n=t.phase;if(n==="step-start"){const o=t.name,a=t.index,c=t.total;e.updateMessage=`Updating: ${o} (${a+1}/${c})`;const u=e.updateProgressSteps.find(l=>l.index===a);u?(u.status="running",u.name=o):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:c,status:"running"}],(i=e.requestUpdate)==null||i.call(e)}else if(n==="step-done"){const o=t.name,a=t.index,c=t.total,u=t.ok,l=t.durationMs,d=e.updateProgressSteps.find(v=>v.index===a);d?(d.status=u?"done":"failed",d.durationMs=l):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:c,status:u?"done":"failed",durationMs:l}];const h=!u&&t.error?`: ${t.error.slice(0,200)}`:"";e.updateMessage=u?`Updating: ${o} done (${a+1}/${c})`:`Update step failed: ${o}${h}`,(s=e.requestUpdate)==null||s.call(e)}else if(n==="complete"){if(t.status==="ok")e.updateMessage="Update complete — restarting gateway...";else{const a=t.reason;e.updateMessage=a?`Update failed: ${a}`:"Update failed",e.updateRunning=!1,cn()}(r=e.requestUpdate)==null||r.call(e)}}async function Hv(e){var n,i,s,r;if(!e.client||!e.connected)return;const t=Vv();cn();try{const o=await e.client.request("update.lastResult",{});if(!o.ok||!o.result)return;const a=5*6e4,c=Date.now()-o.result.ts<a;if(!t&&!c||Gv(o.result.ts))return;e.updateLastResult=o.result;const u=(n=o.result.after)==null?void 0:n.version;if(o.result.status==="ok"&&u&&(e.currentVersion=u),e.updateAvailable=!1,o.result.status==="ok"){const l=(i=o.result.before)==null?void 0:i.version,d=u??o.result.currentVersion;e.updateMessage=l?`Updated: v${l} → v${d}`:`Updated to v${d}`}else{const l=o.result.reason??((s=o.result.failedStep)==null?void 0:s.name)??"unknown error";e.updateMessage=`Update failed: ${l}`}}catch{}finally{e.updateRunning=!1,e.updateProgressSteps=[],(r=e.requestUpdate)==null||r.call(e)}}const Kr="taskmaster_update_dismissed";function qv(e){var t;e.updateLastResult=null,e.updateMessage=null;try{localStorage.setItem(Kr,String(Date.now()))}catch{}(t=e.requestUpdate)==null||t.call(e)}function Vv(){try{const e=localStorage.getItem(gi);return e?Date.now()-Number(e)>30*6e4?(localStorage.removeItem(gi),!1):!0:!1}catch{return!1}}function cn(){try{localStorage.removeItem(gi)}catch{}}function Gv(e){try{const t=localStorage.getItem(Kr);return t?Number(t)>=e:!1}catch{return!1}}function ws(e,t){var a,c,u;const n=(e??"").trim(),i=(a=t.mainSessionKey)==null?void 0:a.trim();if(!i)return n;if(!n)return i;const s=((c=t.mainKey)==null?void 0:c.trim())||"main",r=(u=t.defaultAgentId)==null?void 0:u.trim();return n==="main"||n===s||r&&(n===`agent:${r}:main`||n===`agent:${r}:${s}`)?i:n}function Qv(e,t){if(!(t!=null&&t.mainSessionKey))return;const n=ws(e.sessionKey,t),i=ws(e.settings.sessionKey,t),s=ws(e.settings.lastActiveSessionKey,t),r=n||i||e.sessionKey,o={...e.settings,sessionKey:i||r,lastActiveSessionKey:s||r},a=o.sessionKey!==e.settings.sessionKey||o.lastActiveSessionKey!==e.settings.lastActiveSessionKey;r!==e.sessionKey&&(e.sessionKey=r),a&&ze(e,o)}function Ee(e){var s;e.lastError=null,e.hello=null,e.connected=!1,e.execApprovalQueue=[],e.execApprovalError=null;const t=!!e.publicChat,n=e.setup||e.filesPage||e.browserPage||e.chatPage||e.adminsPage||e.customersPage||e.advancedPage,i=t?"public-chat":n?"setup-ui":"taskmaster-control-ui";(s=e.client)==null||s.stop(),e.client=new _v({url:e.settings.gatewayUrl,token:t?void 0:e.settings.token.trim()?e.settings.token:void 0,password:t?void 0:e.password.trim()?e.password:void 0,clientName:i,mode:"webchat",role:t?"public":void 0,scopes:t?[]:void 0,onHello:r=>{var o;if(e.connected=!0,e.lastError=null,e.hello=r,t){za(e,r),Qs(e),(((o=e.publicChatConfig)==null?void 0:o.auth)??"anonymous")==="anonymous"&&eb(e);return}oi()&&(Ar(),e.uninstallDone=!1),za(e,r),e.handleAccessCheck(),Hv(e).then(()=>{ou(e)}),Qs(e),Av(e),(e.chatPage||e.setup)&&Zv(e),pr(e,{quiet:!0}),dr(e,{quiet:!0}),bn(e).then(()=>{e.initWorkspaceSelection()}),e.startEmbeddingPoll(),(e.setup||e.chatPage)&&_e(e),e.setup&&Jv(e),si(e)},onClose:({code:r,reason:o})=>{e.connected=!1,r!==1012&&(e.lastError=`disconnected (${r}): ${o||"no reason"}`)},onEvent:r=>Yv(e,r),onGap:({expected:r,received:o})=>{console.warn(`[gateway] event gap: expected seq ${r}, got ${o}`),si(e)}}),e.client.start()}function Yv(e,t){try{Xv(e,t)}catch(n){console.error("[gateway] handleGatewayEvent error:",t.event,n)}}function Xv(e,t){if(e.eventLogBuffer=[{ts:Date.now(),event:t.event,payload:t.payload},...e.eventLogBuffer].slice(0,250),e.tab==="debug"&&(e.eventLog=e.eventLogBuffer),t.event==="agent"){if(e.onboarding)return;Od(e,t.payload);return}if(t.event==="chat"){const n=t.payload;n!=null&&n.sessionKey&&nc(e,n.sessionKey);const i=vl(e,n);(i==="final"||i==="error"||i==="aborted")&&(ir(e),xh(e)),i==="final"&&Te(e);return}if(t.event==="suggestions"){const n=t.payload;(n==null?void 0:n.sessionKey)===e.sessionKey&&Array.isArray(n.suggestions)&&n.suggestions.length>0&&(e.chatSuggestion=n.suggestions[0]);return}if(t.event==="presence"){const n=t.payload;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event==="cron"&&e.tab==="cron"&&kr(e),(t.event==="device.pair.requested"||t.event==="device.pair.resolved")&&dr(e,{quiet:!0}),t.event==="exec.approval.requested"){const n=Mv(t.payload);if(n){e.execApprovalQueue=Lv(e.execApprovalQueue,n),e.execApprovalError=null;const i=Math.max(0,n.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=Wa(e.execApprovalQueue,n.id)},i)}return}if(t.event==="browser.screencast.frame"){Fv(e,t.payload);return}if(t.event==="browser.handoff"){Uv(e,t.payload),e.browserPage||(window.location.href="/browser");return}if(t.event==="browser.handoff.resolved"){Wv(e);return}if(t.event==="exec.approval.resolved"){const n=Pv(t.payload);n&&(e.execApprovalQueue=Wa(e.execApprovalQueue,n.id));return}if(t.event==="update.progress"){jv(e,t.payload);return}}function za(e,t){const n=t.snapshot;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence),n!=null&&n.health&&(e.debugHealth=n.health),n!=null&&n.sessionDefaults&&Qv(e,n.sessionDefaults)}async function Zv(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("models.list",{});Array.isArray(t==null?void 0:t.models)&&(e.chatModelCatalog=t.models)}catch{}}async function Jv(e){if(!(!e.client||!e.connected))try{e.apiKeyProviders=await Ys(e.client)}catch{}}const ja="taskmaster_public_id";function au(e=30){var s;const t=document.cookie.split(";").map(r=>r.trim()).find(r=>r.startsWith(`${ja}=`));if(t)return t.split("=")[1];const n=`anon-${((s=crypto.randomUUID)==null?void 0:s.call(crypto))??Math.random().toString(36).slice(2)}`,i=new Date(Date.now()+e*864e5).toUTCString();return document.cookie=`${ja}=${n}; path=/; expires=${i}; SameSite=Lax`,n}async function eb(e){var n,i;if(!e.client||!e.connected)return;const t=au((n=e.publicChatConfig)==null?void 0:n.cookieTtlDays);try{const s=(i=e.publicChatConfig)==null?void 0:i.accountId,r=await e.client.request("public.session",{cookieId:t,accountId:s});r!=null&&r.sessionKey&&(e.publicChatSessionKey=r.sessionKey,e.sessionKey=r.sessionKey,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",Te(e))}catch(s){console.error("[public-chat] failed to resolve anonymous session:",s),e.lastError="Failed to start chat session"}}let we=!1,ce=null,Lt="",mi="";function lu(e){return e.replace(/[\s\-()]/g,"")}function cu(){we=!1,ce=null,Lt="",mi=""}async function tb(e){if(!e.client||!e.connected)return;const t=au(e.cookieTtlDays);try{const n=await e.client.request("public.session",{cookieId:t,accountId:e.accountId});n!=null&&n.sessionKey&&e.onAuthenticated(n.sessionKey)}catch(n){ce=n instanceof Error?n.message:"Failed to start session",e.requestUpdate()}}async function Ha(e){if(!e.client||we)return;const t=lu(Lt);if(!t){ce="Please enter your phone number",e.requestUpdate();return}we=!0,ce=null,e.requestUpdate();try{const n=await e.client.request("public.otp.request",{phone:t,name:mi.trim()||void 0});n!=null&&n.ok?e.onAuthStepChange("otp"):ce=(n==null?void 0:n.error)??"Failed to send verification code"}catch(n){ce=n instanceof Error?n.message:"Failed to send verification code"}finally{we=!1,e.requestUpdate()}}async function qa(e,t){if(!(!e.client||we)){if(!t.trim()){ce="Please enter the verification code",e.requestUpdate();return}we=!0,ce=null,e.requestUpdate();try{const n=await e.client.request("public.otp.verify",{phone:lu(Lt),code:t.trim(),accountId:e.accountId});n!=null&&n.ok&&n.sessionKey?(cu(),e.onAuthenticated(n.sessionKey)):ce=(n==null?void 0:n.error)??"Invalid verification code"}catch(n){ce=n instanceof Error?n.message:"Verification failed"}finally{we=!1,e.requestUpdate()}}}function ks(e){return k}function Va(e){return p`
3210
+ `}async function $v(e){if(!(!e.client||!e.connected)&&!e.agentsLoading){e.agentsLoading=!0,e.agentsError=null;try{const t=await e.client.request("agents.list",{});t&&(e.agentsList=t)}catch(t){e.agentsError=String(t)}finally{e.agentsLoading=!1}}}async function bn(e){if(!(!e.client||!e.connected)&&!e.workspacesLoading){e.workspacesLoading=!0,e.workspacesError=null;try{const t=await e.client.request("workspaces.list",{});e.workspaces=t.workspaces}catch(t){e.workspacesError=String(t)}finally{e.workspacesLoading=!1}}}async function Ev(e,t){var i,s;if(!e.client||!e.connected||e.workspaceSaving)return;const n=t.name.trim();if(!n){e.workspacesError="Account name is required.";return}e.workspaceSaving=!0,e.workspacesError=null;try{const r=await e.client.request("config.get",{});e.configSnapshot=r;const o=r.hash;if(!o){e.workspacesError="Config hash missing; reload and retry.";return}const a={name:n,baseHash:o,whatsappAccountName:n};(i=t.workspacePath)!=null&&i.trim()&&(a.workspaceDir=t.workspacePath.trim());const c=await e.client.request("workspaces.create",a);e.addingWorkspace=!1,e.newWorkspaceName="",e.newWorkspacePath="",await bn(e),(s=t.onCreated)==null||s.call(t,c)}catch(r){e.workspacesError=String(r)}finally{e.workspaceSaving=!1}}async function Tv(e,t){if(!(!e.client||!e.connected)&&!e.workspaceSaving){e.workspaceSaving=!0,e.workspacesError=null;try{const n=await e.client.request("config.get",{});e.configSnapshot=n;const i=n.hash;if(!i){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.remove",{name:t,baseHash:i}),e.workspaceRemoveConfirm=null,await bn(e)}catch(n){e.workspacesError=String(n)}finally{e.workspaceSaving=!1}}}async function Cv(e,t,n){if(!(!e.client||!e.connected)){e.workspacesError=null;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.hash;if(!s){e.workspacesError="Config hash missing; reload and retry.";return}await e.client.request("workspaces.rename",{name:t,displayName:n,baseHash:s}),await bn(e)}catch(i){e.workspacesError=String(i)}}}const jn=Object.freeze(Object.defineProperty({__proto__:null,createWorkspace:Ev,loadWorkspaces:bn,removeWorkspace:Tv,renameWorkspace:Cv},Symbol.toStringTag,{value:"Module"})),ru={WEBCHAT_UI:"webchat-ui",CONTROL_UI:"taskmaster-control-ui",SETUP_UI:"setup-ui",WEBCHAT:"webchat",CLI:"cli",GATEWAY_CLIENT:"gateway-client",MACOS_APP:"taskmaster-macos",IOS_APP:"taskmaster-ios",ANDROID_APP:"taskmaster-android",NODE_HOST:"node-host",TEST:"test",FINGERPRINT:"fingerprint",PROBE:"taskmaster-probe",PUBLIC_CHAT:"public-chat"},Ua=ru,Vs={WEBCHAT:"webchat",CLI:"cli",UI:"ui",BACKEND:"backend",NODE:"node",PROBE:"probe",TEST:"test"};new Set(Object.values(ru));new Set(Object.values(Vs));function _v(e){const t=e.version??(e.nonce?"v2":"v1"),n=e.scopes.join(","),i=e.token??"",s=[t,e.deviceId,e.clientId,e.clientMode,e.role,n,String(e.signedAtMs),i];return t==="v2"&&s.push(e.nonce??""),s.join("|")}const Mv=4008;class Pv{constructor(t){this.opts=t,this.ws=null,this.pending=new Map,this.closed=!1,this.lastSeq=null,this.connectNonce=null,this.connectSent=!1,this.connectTimer=null,this.backoffMs=800}start(){this.closed=!1,this.connect()}stop(){var t;this.closed=!0,(t=this.ws)==null||t.close(),this.ws=null,this.flushPending(new Error("gateway client stopped"))}get connected(){var t;return((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN}connect(){this.closed||(this.ws=new WebSocket(this.opts.url),this.ws.onopen=()=>this.queueConnect(),this.ws.onmessage=t=>this.handleMessage(String(t.data??"")),this.ws.onclose=t=>{var i,s;const n=String(t.reason??"");this.ws=null,this.flushPending(new Error(`gateway closed (${t.code}): ${n}`)),(s=(i=this.opts).onClose)==null||s.call(i,{code:t.code,reason:n}),this.scheduleReconnect()},this.ws.onerror=()=>{})}scheduleReconnect(){if(this.closed)return;const t=this.backoffMs;this.backoffMs=Math.min(this.backoffMs*1.7,15e3),window.setTimeout(()=>this.connect(),t)}flushPending(t){for(const[,n]of this.pending)n.reject(t);this.pending.clear()}async sendConnect(){var d;if(this.connectSent)return;this.connectSent=!0,this.connectTimer!==null&&(window.clearTimeout(this.connectTimer),this.connectTimer=null);const t=this.opts.role??"operator",n=this.opts.scopes??["operator.admin","operator.approvals","operator.pairing"],s=!(t!=="operator")&&typeof crypto<"u"&&!!crypto.subtle;let r=null,o=!1,a=this.opts.token;if(s){r=await Pp();const h=(d=Rp({deviceId:r.deviceId,role:t}))==null?void 0:d.token;a=h??this.opts.token,o=!!(h&&this.opts.token)}const c=a||this.opts.password?{token:a,password:this.opts.password}:void 0;let u;if(s&&r){const h=Date.now(),v=this.connectNonce??void 0,f=_v({deviceId:r.deviceId,clientId:this.opts.clientName??Ua.CONTROL_UI,clientMode:this.opts.mode??Vs.WEBCHAT,role:t,scopes:n,signedAtMs:h,token:a??null,nonce:v}),b=await Lp(r.privateKey,f);u={id:r.deviceId,publicKey:r.publicKey,signature:b,signedAt:h,nonce:v}}const l={minProtocol:3,maxProtocol:3,client:{id:this.opts.clientName??Ua.CONTROL_UI,version:this.opts.clientVersion??"dev",platform:this.opts.platform??navigator.platform??"web",mode:this.opts.mode??Vs.WEBCHAT,instanceId:this.opts.instanceId},role:t,scopes:n,device:u,caps:[],auth:c,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",l).then(h=>{var v,f,b;(v=h==null?void 0:h.auth)!=null&&v.deviceToken&&r&&Np({deviceId:r.deviceId,role:h.auth.role??t,token:h.auth.deviceToken,scopes:h.auth.scopes??[]}),this.backoffMs=800,(b=(f=this.opts).onHello)==null||b.call(f,h)}).catch(()=>{var h;o&&r&&Dp({deviceId:r.deviceId,role:t}),(h=this.ws)==null||h.close(Mv,"connect failed")})}handleMessage(t){var s,r,o,a,c,u;let n;try{n=JSON.parse(t)}catch{return}const i=n;if(i.type==="event"){const l=n;if(l.event==="connect.challenge"){const h=l.payload,v=h&&typeof h.nonce=="string"?h.nonce:null;v&&(this.connectNonce=v,this.sendConnect());return}const d=typeof l.seq=="number"?l.seq:null;d!==null&&(this.lastSeq!==null&&d>this.lastSeq+1&&((r=(s=this.opts).onGap)==null||r.call(s,{expected:this.lastSeq+1,received:d})),this.lastSeq=d);try{(a=(o=this.opts).onEvent)==null||a.call(o,l)}catch(h){console.error("[gateway] event handler error:",h)}return}if(i.type==="res"){const l=n,d=this.pending.get(l.id);if(!d)return;if(this.pending.delete(l.id),l.ok)d.resolve(l.payload);else{const h=new Error(((c=l.error)==null?void 0:c.message)??"request failed");h.payload=l.payload,h.details=(u=l.error)==null?void 0:u.details,d.reject(h)}return}}request(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return Promise.reject(new Error("gateway not connected"));const i=tr(),s={type:"req",id:i,method:t,params:n},r=new Promise((o,a)=>{this.pending.set(i,{resolve:c=>o(c),reject:a})});return this.ws.send(JSON.stringify(s)),r}queueConnect(){this.connectNonce=null,this.connectSent=!1,this.connectTimer!==null&&window.clearTimeout(this.connectTimer),this.connectTimer=window.setTimeout(()=>{this.sendConnect()},750)}}function Gs(e){return typeof e=="object"&&e!==null}function Lv(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"",n=e.request;if(!t||!Gs(n))return null;const i=typeof n.command=="string"?n.command.trim():"";if(!i)return null;const s=typeof e.createdAtMs=="number"?e.createdAtMs:0,r=typeof e.expiresAtMs=="number"?e.expiresAtMs:0;return!s||!r?null:{id:t,request:{command:i,cwd:typeof n.cwd=="string"?n.cwd:null,host:typeof n.host=="string"?n.host:null,security:typeof n.security=="string"?n.security:null,ask:typeof n.ask=="string"?n.ask:null,agentId:typeof n.agentId=="string"?n.agentId:null,resolvedPath:typeof n.resolvedPath=="string"?n.resolvedPath:null,sessionKey:typeof n.sessionKey=="string"?n.sessionKey:null},createdAtMs:s,expiresAtMs:r}}function Iv(e){if(!Gs(e))return null;const t=typeof e.id=="string"?e.id.trim():"";return t?{id:t,decision:typeof e.decision=="string"?e.decision:null,resolvedBy:typeof e.resolvedBy=="string"?e.resolvedBy:null,ts:typeof e.ts=="number"?e.ts:null}:null}function ou(e){const t=Date.now();return e.filter(n=>n.expiresAtMs>t)}function Rv(e,t){const n=ou(e).filter(i=>i.id!==t.id);return n.push(t),n}function Wa(e,t){return ou(e).filter(n=>n.id!==t)}class Nv{constructor(){this.canvas=null,this.ctx=null,this.img=new Image,this.pendingFrame=null,this.rafId=null,this.deviceWidth=1280,this.deviceHeight=720,this.lastMouseMoveAt=0,this.MOUSE_THROTTLE_MS=30}attach(t){this.canvas=t,this.ctx=t.getContext("2d")}detach(){this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.canvas=null,this.ctx=null,this.pendingFrame=null}updateFrame(t,n){if(n!=null&&n.deviceWidth&&(this.deviceWidth=n.deviceWidth),n!=null&&n.deviceHeight&&(this.deviceHeight=n.deviceHeight),this.pendingFrame=t,!this.canvas){const i=document.getElementById("browser-screencast-canvas");i&&this.attach(i)}this.rafId==null&&(this.rafId=requestAnimationFrame(()=>this.renderFrame()))}renderFrame(){this.rafId=null;const t=this.pendingFrame;!t||!this.canvas||!this.ctx||(this.pendingFrame=null,this.img.onload=()=>{!this.canvas||!this.ctx||((this.canvas.width!==this.img.width||this.canvas.height!==this.img.height)&&(this.canvas.width=this.img.width,this.canvas.height=this.img.height),this.ctx.drawImage(this.img,0,0))},this.img.src=`data:image/jpeg;base64,${t}`)}translateCoordinates(t,n){if(!this.canvas)return{x:t,y:n};const i=this.canvas.getBoundingClientRect(),s=this.canvas.width/i.width,r=this.canvas.height/i.height,o=this.deviceWidth/this.canvas.width,a=this.deviceHeight/this.canvas.height;return{x:Math.round(t*s*o),y:Math.round(n*r*a)}}shouldThrottleMouseMove(){const t=performance.now();return t-this.lastMouseMoveAt<this.MOUSE_THROTTLE_MS?!0:(this.lastMouseMoveAt=t,!1)}getDeviceDimensions(){return{width:this.deviceWidth,height:this.deviceHeight}}}let ys=null;function ln(){return ys||(ys=new Nv),ys}function Wr(e){return e instanceof Error?e.message:String(e)}async function Dv(e){if(!e.client){console.error("[browser] startScreencast: no client"),e.browserError="Not connected to gateway";return}if(!e.connected){console.error("[browser] startScreencast: client exists but not connected"),e.browserError="Not connected to gateway";return}console.log("[browser] startScreencast: sending request"),e.browserLoading=!0,e.browserError=null;try{const t=await e.client.request("browser.screencast.start",{quality:60,maxWidth:1280,maxHeight:720});console.log("[browser] startScreencast response:",t),t!=null&&t.ok?e.browserScreencastActive=!0:(console.warn("[browser] startScreencast: response did not have ok=true",t),e.browserError="Screencast start failed (no ok in response)")}catch(t){console.error("[browser] startScreencast error:",t),e.browserError=Wr(t)}finally{e.browserLoading=!1}}async function Ov(e){if(!(!e.client||!e.connected)){e.browserLoading=!0,e.browserFullscreen=!1;try{await e.client.request("browser.screencast.stop",{}),e.browserScreencastActive=!1,e.browserScreencastFrame=null,e.browserScreencastMetadata=null}catch(t){e.browserError=Wr(t)}finally{e.browserLoading=!1}}}async function vs(e,t,n,i,s){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"mouse",action:t,x:n,y:i,button:s??"left",clickCount:t==="mousePressed"?1:0})}catch{}}async function bs(e,t,n,i){if(!(!e.client||!e.connected||!e.browserInputMode))try{await e.client.request("browser.screencast.input",{type:"key",action:t,key:n,...i!=null&&i.text?{text:i.text}:{},...i!=null&&i.code?{code:i.code}:{},...i!=null&&i.modifiers?{modifiers:i.modifiers}:{}})}catch{}}async function Bv(e){if(!(!e.client||!e.connected))try{await e.client.request("browser.handoff.complete",{}),e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}catch(t){e.browserError=Wr(t)}}function Fv(e){e.browserInputMode=!e.browserInputMode}function Uv(e){e.browserFullscreen=!e.browserFullscreen,ln().detach()}function Wv(e,t){if(!(t!=null&&t.data))return;e.browserScreencastFrame=t.data,e.browserScreencastMetadata=t.metadata??null,ln().updateFrame(t.data,t.metadata)}function Kv(e,t){t&&(e.browserHandoffPending=!0,e.browserHandoffReason=t.reason??"Action required",e.browserHandoffId=t.id??null)}function zv(e){e.browserHandoffPending=!1,e.browserHandoffReason=null,e.browserHandoffId=null}async function Qs(e,t){if(!e.client||!e.connected)return;const n=e.sessionKey.trim(),i=n?{sessionKey:n}:{};try{const s=await e.client.request("agent.identity.get",i);if(!s)return;const r=xs(s);e.assistantName=r.name,e.assistantAvatar=r.avatar,e.assistantAgentId=r.agentId??null}catch{}}async function Ys(e){return(await e.request("apikeys.list")).providers??[]}async function Ka(e,t,n){await e.request("apikeys.set",{provider:t,apiKey:n})}async function jv(e,t){await e.request("apikeys.remove",{provider:t})}const gi="taskmaster_update_pending";async function au(e){var t,n;if(!(!e.client||!e.connected)&&!e.updateChecking){e.updateChecking=!0,e.updateMessage=null,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("update.status",{});e.currentVersion=i.current,e.latestVersion=i.latest,e.updateAvailable=i.updateAvailable,e.updateMessage=i.updateAvailable?`v${i.latest} available`:"Up to date"}catch(i){e.updateMessage=`Check failed: ${String(i)}`,e.updateAvailable=null}finally{e.updateChecking=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function Hv(e){var t,n,i,s;if(!(!e.client||e.updateRunning)){e.updateRunning=!0,e.updateMessage="Starting update...",e.updateProgressSteps=[],e.updateLastResult=null,(t=e.requestUpdate)==null||t.call(e);try{localStorage.setItem(gi,String(Date.now())),localStorage.removeItem(Kr)}catch{}try{const r=await e.client.request("update.run",{restartDelayMs:2e3,note:"Update from setup page"});if(r.ok&&r.result.status==="ok")e.updateMessage="Updated — restarting gateway...",(n=e.requestUpdate)==null||n.call(e);else if(r.ok&&r.result.status==="skipped")cn(),e.updateMessage=r.result.reason||"Update skipped",e.updateRunning=!1,(i=e.requestUpdate)==null||i.call(e);else throw cn(),new Error(r.result.reason||"Update failed")}catch(r){cn(),e.updateMessage=`Update failed: ${String(r)}`,e.updateRunning=!1,e.updateProgressSteps=[],(s=e.requestUpdate)==null||s.call(e)}}}function qv(e,t){var i,s,r;const n=t.phase;if(n==="step-start"){const o=t.name,a=t.index,c=t.total;e.updateMessage=`Updating: ${o} (${a+1}/${c})`;const u=e.updateProgressSteps.find(l=>l.index===a);u?(u.status="running",u.name=o):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:c,status:"running"}],(i=e.requestUpdate)==null||i.call(e)}else if(n==="step-done"){const o=t.name,a=t.index,c=t.total,u=t.ok,l=t.durationMs,d=e.updateProgressSteps.find(v=>v.index===a);d?(d.status=u?"done":"failed",d.durationMs=l):e.updateProgressSteps=[...e.updateProgressSteps,{name:o,index:a,total:c,status:u?"done":"failed",durationMs:l}];const h=!u&&t.error?`: ${t.error.slice(0,200)}`:"";e.updateMessage=u?`Updating: ${o} done (${a+1}/${c})`:`Update step failed: ${o}${h}`,(s=e.requestUpdate)==null||s.call(e)}else if(n==="complete"){if(t.status==="ok")e.updateMessage="Update complete — restarting gateway...";else{const a=t.reason;e.updateMessage=a?`Update failed: ${a}`:"Update failed",e.updateRunning=!1,cn()}(r=e.requestUpdate)==null||r.call(e)}}async function Vv(e){var n,i,s,r;if(!e.client||!e.connected)return;const t=Qv();cn();try{const o=await e.client.request("update.lastResult",{});if(!o.ok||!o.result)return;const a=5*6e4,c=Date.now()-o.result.ts<a;if(!t&&!c||Yv(o.result.ts))return;e.updateLastResult=o.result;const u=(n=o.result.after)==null?void 0:n.version;if(o.result.status==="ok"&&u&&(e.currentVersion=u),e.updateAvailable=!1,o.result.status==="ok"){const l=(i=o.result.before)==null?void 0:i.version,d=u??o.result.currentVersion;e.updateMessage=l?`Updated: v${l} → v${d}`:`Updated to v${d}`}else{const l=o.result.reason??((s=o.result.failedStep)==null?void 0:s.name)??"unknown error";e.updateMessage=`Update failed: ${l}`}}catch{}finally{e.updateRunning=!1,e.updateProgressSteps=[],(r=e.requestUpdate)==null||r.call(e)}}const Kr="taskmaster_update_dismissed";function Gv(e){var t;e.updateLastResult=null,e.updateMessage=null;try{localStorage.setItem(Kr,String(Date.now()))}catch{}(t=e.requestUpdate)==null||t.call(e)}function Qv(){try{const e=localStorage.getItem(gi);return e?Date.now()-Number(e)>30*6e4?(localStorage.removeItem(gi),!1):!0:!1}catch{return!1}}function cn(){try{localStorage.removeItem(gi)}catch{}}function Yv(e){try{const t=localStorage.getItem(Kr);return t?Number(t)>=e:!1}catch{return!1}}function ws(e,t){var a,c,u;const n=(e??"").trim(),i=(a=t.mainSessionKey)==null?void 0:a.trim();if(!i)return n;if(!n)return i;const s=((c=t.mainKey)==null?void 0:c.trim())||"main",r=(u=t.defaultAgentId)==null?void 0:u.trim();return n==="main"||n===s||r&&(n===`agent:${r}:main`||n===`agent:${r}:${s}`)?i:n}function Xv(e,t){if(!(t!=null&&t.mainSessionKey))return;const n=ws(e.sessionKey,t),i=ws(e.settings.sessionKey,t),s=ws(e.settings.lastActiveSessionKey,t),r=n||i||e.sessionKey,o={...e.settings,sessionKey:i||r,lastActiveSessionKey:s||r},a=o.sessionKey!==e.settings.sessionKey||o.lastActiveSessionKey!==e.settings.lastActiveSessionKey;r!==e.sessionKey&&(e.sessionKey=r),a&&je(e,o)}function Te(e){var s;e.lastError=null,e.hello=null,e.connected=!1,e.execApprovalQueue=[],e.execApprovalError=null;const t=!!e.publicChat,n=e.setup||e.filesPage||e.browserPage||e.chatPage||e.adminsPage||e.customersPage||e.advancedPage,i=t?"public-chat":n?"setup-ui":"taskmaster-control-ui";(s=e.client)==null||s.stop(),e.client=new Pv({url:e.settings.gatewayUrl,token:t?void 0:e.settings.token.trim()?e.settings.token:void 0,password:t?void 0:e.password.trim()?e.password:void 0,clientName:i,mode:"webchat",role:t?"public":void 0,scopes:t?[]:void 0,onHello:r=>{var o;if(e.connected=!0,e.lastError=null,e.hello=r,t){za(e,r),Qs(e),(((o=e.publicChatConfig)==null?void 0:o.auth)??"anonymous")==="anonymous"&&ib(e);return}oi()&&(Ar(),e.uninstallDone=!1),za(e,r),e.handleAccessCheck(),Vv(e).then(()=>{au(e)}),Qs(e),$v(e),(e.chatPage||e.setup)&&eb(e),pr(e,{quiet:!0}),dr(e,{quiet:!0}),bn(e).then(()=>{e.initWorkspaceSelection()}),e.startEmbeddingPoll(),(e.setup||e.chatPage)&&Me(e),e.setup&&(tb(e),nb(e)),si(e)},onClose:({code:r,reason:o})=>{e.connected=!1,r!==1012&&(e.lastError=`disconnected (${r}): ${o||"no reason"}`)},onEvent:r=>Zv(e,r),onGap:({expected:r,received:o})=>{console.warn(`[gateway] event gap: expected seq ${r}, got ${o}`),si(e)}}),e.client.start()}function Zv(e,t){try{Jv(e,t)}catch(n){console.error("[gateway] handleGatewayEvent error:",t.event,n)}}function Jv(e,t){if(e.eventLogBuffer=[{ts:Date.now(),event:t.event,payload:t.payload},...e.eventLogBuffer].slice(0,250),e.tab==="debug"&&(e.eventLog=e.eventLogBuffer),t.event==="agent"){if(e.onboarding)return;Bd(e,t.payload);return}if(t.event==="chat"){const n=t.payload;n!=null&&n.sessionKey&&nc(e,n.sessionKey);const i=vl(e,n);(i==="final"||i==="error"||i==="aborted")&&(ir(e),$h(e)),i==="final"&&_e(e);return}if(t.event==="suggestions"){const n=t.payload;(n==null?void 0:n.sessionKey)===e.sessionKey&&Array.isArray(n.suggestions)&&n.suggestions.length>0&&(e.chatSuggestion=n.suggestions[0]);return}if(t.event==="presence"){const n=t.payload;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event==="cron"&&e.tab==="cron"&&kr(e),(t.event==="device.pair.requested"||t.event==="device.pair.resolved")&&dr(e,{quiet:!0}),t.event==="exec.approval.requested"){const n=Lv(t.payload);if(n){e.execApprovalQueue=Rv(e.execApprovalQueue,n),e.execApprovalError=null;const i=Math.max(0,n.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=Wa(e.execApprovalQueue,n.id)},i)}return}if(t.event==="browser.screencast.frame"){Wv(e,t.payload);return}if(t.event==="browser.handoff"){Kv(e,t.payload),e.browserPage||(window.location.href="/browser");return}if(t.event==="browser.handoff.resolved"){zv(e);return}if(t.event==="exec.approval.resolved"){const n=Iv(t.payload);n&&(e.execApprovalQueue=Wa(e.execApprovalQueue,n.id));return}if(t.event==="update.progress"){qv(e,t.payload);return}}function za(e,t){const n=t.snapshot;n!=null&&n.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence),n!=null&&n.health&&(e.debugHealth=n.health),n!=null&&n.sessionDefaults&&Xv(e,n.sessionDefaults)}async function eb(e){if(!(!e.client||!e.connected))try{const t=await e.client.request("models.list",{});Array.isArray(t==null?void 0:t.models)&&(e.chatModelCatalog=t.models)}catch{}}async function tb(e){if(!(!e.client||!e.connected))try{e.apiKeyProviders=await Ys(e.client)}catch{}}async function nb(e){if(!(!e.client||!e.connected))try{e.tailscaleStatus=await e.client.request("tailscale.status")}catch{}}const ja="taskmaster_public_id";function lu(e=30){var s;const t=document.cookie.split(";").map(r=>r.trim()).find(r=>r.startsWith(`${ja}=`));if(t)return t.split("=")[1];const n=`anon-${((s=crypto.randomUUID)==null?void 0:s.call(crypto))??Math.random().toString(36).slice(2)}`,i=new Date(Date.now()+e*864e5).toUTCString();return document.cookie=`${ja}=${n}; path=/; expires=${i}; SameSite=Lax`,n}async function ib(e){var n,i;if(!e.client||!e.connected)return;const t=lu((n=e.publicChatConfig)==null?void 0:n.cookieTtlDays);try{const s=(i=e.publicChatConfig)==null?void 0:i.accountId,r=await e.client.request("public.session",{cookieId:t,accountId:s});r!=null&&r.sessionKey&&(e.publicChatSessionKey=r.sessionKey,e.sessionKey=r.sessionKey,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",_e(e))}catch(s){console.error("[public-chat] failed to resolve anonymous session:",s),e.lastError="Failed to start chat session"}}let ke=!1,de=null,It="",mi="";function cu(e){return e.replace(/[\s\-()]/g,"")}function uu(){ke=!1,de=null,It="",mi=""}async function sb(e){if(!e.client||!e.connected)return;const t=lu(e.cookieTtlDays);try{const n=await e.client.request("public.session",{cookieId:t,accountId:e.accountId});n!=null&&n.sessionKey&&e.onAuthenticated(n.sessionKey)}catch(n){de=n instanceof Error?n.message:"Failed to start session",e.requestUpdate()}}async function Ha(e){if(!e.client||ke)return;const t=cu(It);if(!t){de="Please enter your phone number",e.requestUpdate();return}ke=!0,de=null,e.requestUpdate();try{const n=await e.client.request("public.otp.request",{phone:t,name:mi.trim()||void 0});n!=null&&n.ok?e.onAuthStepChange("otp"):de=(n==null?void 0:n.error)??"Failed to send verification code"}catch(n){de=n instanceof Error?n.message:"Failed to send verification code"}finally{ke=!1,e.requestUpdate()}}async function qa(e,t){if(!(!e.client||ke)){if(!t.trim()){de="Please enter the verification code",e.requestUpdate();return}ke=!0,de=null,e.requestUpdate();try{const n=await e.client.request("public.otp.verify",{phone:cu(It),code:t.trim(),accountId:e.accountId});n!=null&&n.ok&&n.sessionKey?(uu(),e.onAuthenticated(n.sessionKey)):de=(n==null?void 0:n.error)??"Invalid verification code"}catch(n){de=n instanceof Error?n.message:"Verification failed"}finally{ke=!1,e.requestUpdate()}}}function ks(e){return S}function Va(e){return p`
3044
3211
  <div class="public-auth__form">
3045
3212
  <label class="field public-auth__field">
3046
3213
  <span>Your name (optional)</span>
@@ -3055,26 +3222,26 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3055
3222
  <span>WhatsApp number</span>
3056
3223
  <input
3057
3224
  type="tel"
3058
- .value=${Lt}
3059
- @input=${t=>{Lt=t.target.value}}
3225
+ .value=${It}
3226
+ @input=${t=>{It=t.target.value}}
3060
3227
  @keydown=${t=>{t.key==="Enter"&&(t.preventDefault(),Ha(e))}}
3061
3228
  placeholder="+44 7123 456789"
3062
3229
  required
3063
3230
  />
3064
3231
  </label>
3065
- ${ce?p`<div class="public-auth__error">${ce}</div>`:k}
3232
+ ${de?p`<div class="public-auth__error">${de}</div>`:S}
3066
3233
  <button
3067
3234
  class="btn primary public-auth__btn"
3068
- ?disabled=${we}
3235
+ ?disabled=${ke}
3069
3236
  @click=${()=>{Ha(e)}}
3070
3237
  >
3071
- ${we?"Sending...":"Send verification code"}
3238
+ ${ke?"Sending...":"Send verification code"}
3072
3239
  </button>
3073
3240
  </div>
3074
3241
  `}function Ga(e){let t="";return p`
3075
3242
  <div class="public-auth__form">
3076
3243
  <p class="public-auth__hint">
3077
- We sent a verification code to <strong>${Lt}</strong> via WhatsApp.
3244
+ We sent a verification code to <strong>${It}</strong> via WhatsApp.
3078
3245
  </p>
3079
3246
  <label class="field public-auth__field">
3080
3247
  <span>Verification code</span>
@@ -3088,22 +3255,22 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3088
3255
  required
3089
3256
  />
3090
3257
  </label>
3091
- ${ce?p`<div class="public-auth__error">${ce}</div>`:k}
3258
+ ${de?p`<div class="public-auth__error">${de}</div>`:S}
3092
3259
  <button
3093
3260
  class="btn primary public-auth__btn"
3094
- ?disabled=${we}
3261
+ ?disabled=${ke}
3095
3262
  @click=${()=>{qa(e,t)}}
3096
3263
  >
3097
- ${we?"Verifying...":"Verify"}
3264
+ ${ke?"Verifying...":"Verify"}
3098
3265
  </button>
3099
3266
  <button
3100
3267
  class="btn public-auth__btn public-auth__btn--link"
3101
- @click=${()=>{ce=null,e.onAuthStepChange("phone")}}
3268
+ @click=${()=>{de=null,e.onAuthStepChange("phone")}}
3102
3269
  >
3103
3270
  Use a different number
3104
3271
  </button>
3105
3272
  </div>
3106
- `}function nb(e){const{authMode:t,authStep:n}=e;return t==="anonymous"?p`
3273
+ `}function rb(e){const{authMode:t,authStep:n}=e;return t==="anonymous"?p`
3107
3274
  <div class="setup-container">
3108
3275
  <div class="setup-card">
3109
3276
  <div class="setup-spinner"></div>
@@ -3137,13 +3304,13 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3137
3304
  <div class="public-auth__choices">
3138
3305
  <button
3139
3306
  class="btn primary public-auth__btn"
3140
- @click=${()=>{tb(e)}}
3307
+ @click=${()=>{sb(e)}}
3141
3308
  >
3142
3309
  Chat now
3143
3310
  </button>
3144
3311
  <button
3145
3312
  class="btn public-auth__btn"
3146
- @click=${()=>{cu(),e.onAuthStepChange("phone")}}
3313
+ @click=${()=>{uu(),e.onAuthStepChange("phone")}}
3147
3314
  >
3148
3315
  Verify with WhatsApp
3149
3316
  </button>
@@ -3153,7 +3320,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3153
3320
  </p>
3154
3321
  </div>
3155
3322
  </div>
3156
- `}const zr="taskmaster-access-session",uu={checked:!1,hasPins:!1,hasMasterPin:!1,authenticated:!1,workspace:null,master:!1,accounts:[],error:null,busy:!1};function du(){try{return localStorage.getItem(zr)}catch{return null}}function pu(e){try{localStorage.setItem(zr,e)}catch{}}function ib(){try{localStorage.removeItem(zr)}catch{}}async function Qa(e){if(e.client)try{const t=du(),n=await e.client.request("access.status",{token:t});e.accessState={...e.accessState,checked:!0,hasPins:n.hasPins,hasMasterPin:n.hasMasterPin,accounts:n.accounts??[],authenticated:n.authenticated,workspace:n.workspace,master:n.master,error:null}}catch{e.accessState={...e.accessState,checked:!0,hasPins:!1,hasMasterPin:!1,accounts:[],authenticated:!0,error:null}}}async function sb(e,t,n){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const i=await e.client.request("access.verify",{account:t,pin:n});i.ok&&i.token?(pu(i.token),e.accessState={...e.accessState,authenticated:!0,workspace:i.workspace??null,master:i.master??!1,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:i.message??"Incorrect PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to verify PIN"}}}}async function rb(e,t){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const n=await e.client.request("access.setMasterPin",{pin:t});n.ok&&n.token?(pu(n.token),e.accessState={...e.accessState,checked:!0,hasPins:!0,hasMasterPin:!0,authenticated:!0,workspace:null,master:!0,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}}}async function ob(e,t,n){if(!e.client)return!1;try{return(await e.client.request("access.setAccountPin",{workspace:t,pin:n})).ok}catch{return!1}}async function ab(e){const t=du();if(e.client&&t)try{await e.client.request("access.logout",{token:t})}catch{}ib(),e.accessState={...uu,checked:!0,hasPins:!0,hasMasterPin:e.accessState.hasMasterPin,accounts:e.accessState.accounts}}function lb(e,t="admin"){var s;if(!e)return[];const n=e.bindings;if(!Array.isArray(n))return[];const i=[];for(const r of n){if(!r||typeof r!="object"||r.agentId!==t&&r.agentId!=="management")continue;const o=r.match;if(!o||typeof o!="object"||(o.channel??"").toLowerCase()!=="whatsapp")continue;const c=o.peer;if(!c||typeof c!="object"||c.kind!=="dm")continue;const u=c.id??"";u&&i.push({phone:u,paired:((s=r.meta)==null?void 0:s.paired)===!0})}return i.sort((r,o)=>r.paired&&!o.paired?-1:!r.paired&&o.paired?1:0),i}function hu(e,t,n="admin",i){const s=u=>u===n||u==="management",r=new Map,o=new Map;for(const u of e){if(!u||typeof u!="object"||!s(u.agentId))continue;const l=u.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")continue;const h=l.peer;if(!h||typeof h!="object"||h.kind!=="dm")continue;const v=h.id??"";v&&(u.meta&&r.set(v,u.meta),l.accountId&&o.set(v,l.accountId))}const a=e.filter(u=>{if(!u||typeof u!="object"||!s(u.agentId))return!0;const l=u.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")return!0;const h=l.peer;return!h||typeof h!="object"?!0:h.kind!=="dm"}),c=t.map(u=>{const l=i??o.get(u.phone),d={channel:"whatsapp",peer:{kind:"dm",id:u.phone}};l&&(d.accountId=l);const h={agentId:n,match:d},v=r.get(u.phone);return v?h.meta=v:u.paired&&(h.meta={paired:!0}),h});return[...a,...c]}async function _i(e,t){if(!e.client||!e.connected)return;if(!t){e.adminPhones=[];return}if(e.adminsLoading)return;e.adminsLoading=!0,e.adminsError=null;const n=t;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.config;e.configForm=He(s??{}),e.adminPhones=lb(s,n),e.configFormDirty=!1}catch(i){e.adminsError=String(i)}finally{e.adminsLoading=!1}}async function fu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n;let r=t.replace(/[\s\-\(\)]/g,"");if(!r){e.adminsError="Phone number is required";return}if(r.startsWith("+")||(r="+"+r),!/^\+[1-9]\d{6,14}$/.test(r)){e.adminsError="Invalid phone number. Use international format (e.g., +44 7504 472444)";return}if(e.adminPhones.some(c=>c.phone===r)){e.adminsError="Phone number already exists";return}e.adminsSaving=!0,e.adminsError=null;try{const c=He(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),u=c.bindings??[],l=[...e.adminPhones,{phone:r}],d=hu(u,l,s,i);wl(c,["bindings"],d);const h=(a=e.configSnapshot)==null?void 0:a.hash;if(!h){e.adminsError="Config hash missing; reload and retry.";return}const v=st(c);await e.client.request("config.set",{raw:v,baseHash:h}),await _i(e,n)}catch(c){e.adminsError=String(c)}finally{e.adminsSaving=!1}}async function gu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n,r=e.adminPhones.find(c=>c.phone===t);if(r!=null&&r.paired){e.adminsError="Cannot remove the paired phone. Unlink WhatsApp first.";return}e.adminsSaving=!0,e.adminsError=null;try{const c=He(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),u=c.bindings??[],l=e.adminPhones.filter(y=>y.phone!==t),d=hu(u,l,s,i);wl(c,["bindings"],d);const h=(a=e.configSnapshot)==null?void 0:a.hash;if(!h){e.adminsError="Config hash missing; reload and retry.";return}const v=st(c);await e.client.request("config.set",{raw:v,baseHash:h}),await _i(e,n)}catch(c){e.adminsError=String(c)}finally{e.adminsSaving=!1}}const cb=Object.freeze(Object.defineProperty({__proto__:null,addAdmin:fu,loadAdmins:_i,removeAdmin:gu},Symbol.toStringTag,{value:"Module"}));async function dt(e,t){if(!(!e.client||!e.connected)){if(!t){e.customersRecords=[];return}if(!e.customersLoading){e.customersLoading=!0,e.customersError=null;try{const n=e.customersSearchQuery.trim(),i=n?await e.client.request("records.search",{query:n,workspace:t}):await e.client.request("records.list",{workspace:t});e.customersRecords=i.records??[]}catch(n){e.customersError=String(n)}finally{e.customersLoading=!1}}}}async function mu(e,t,n,i){if(!e.client||!e.connected||e.customersSaving)return;let s=t.replace(/[\s\-\(\)]/g,"");const r=n.trim();if(!s){e.customersError="Phone number is required";return}if(!r){e.customersError="Name is required";return}if(s.startsWith("+")||(s="+"+s),!/^\+[1-9]\d{6,14}$/.test(s)){e.customersError="Invalid phone number. Use international format (e.g., +44 7490 553305)";return}e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.set",{id:s,name:r,fields:{},workspace:i}),e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName="",await dt(e,i)}catch(o){e.customersError=String(o)}finally{e.customersSaving=!1}}async function yu(e,t,n){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.delete",{id:t}),e.customersEditingId===t&&(e.customersEditingId=null),await dt(e,n)}catch(i){e.customersError=String(i)}finally{e.customersSaving=!1}}}async function vu(e,t,n,i,s){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.setField",{id:t,key:n,value:i}),await dt(e,s)}catch(r){e.customersError=String(r)}finally{e.customersSaving=!1}}}async function bu(e,t,n,i){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.deleteField",{id:t,key:n}),await dt(e,i)}catch(s){e.customersError=String(s)}finally{e.customersSaving=!1}}}const ub=Object.freeze(Object.defineProperty({__proto__:null,addCustomer:mu,deleteCustomer:yu,deleteCustomerField:bu,loadCustomers:dt,setCustomerField:vu},Symbol.toStringTag,{value:"Module"}));function Yt(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function db(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),onAddAccount:()=>{e.addingWorkspace=!0},hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function pb(e){const t=se(e);if(!t)return;const n=t.agents.find(i=>i.id.endsWith("-admin")||i.id==="admin");return n==null?void 0:n.id}function hb(e){const t=se(e);return(t==null?void 0:t.whatsappAccountId)??void 0}function fb(e){var n;const t=se(e);if(t)return(n=t.agents[0])==null?void 0:n.id}function gb(e){return e.selectedWorkspace??void 0}function se(e){return e.selectedWorkspace?e.workspaces.find(t=>t.name===e.selectedWorkspace)??null:null}const mb=/^data:/i,yb=/^https?:\/\//i;function Ya(e){var a,c;const t=((a=e.agentsList)==null?void 0:a.agents)??[],n=ll(e.sessionKey),i=(n==null?void 0:n.agentId)??((c=e.agentsList)==null?void 0:c.defaultId)??"main",s=t.find(u=>u.id===i),r=s==null?void 0:s.identity,o=(r==null?void 0:r.avatarUrl)??(r==null?void 0:r.avatar);if(o)return mb.test(o)||yb.test(o)?o:r==null?void 0:r.avatarUrl}function vb(e){var i;if(!e)return null;const t=(i=e.channelAccounts)==null?void 0:i.whatsapp;if(!t||t.length===0)return null;const n=t[0];return{running:n.running??!1,connected:n.connected??!1,linked:n.linked??!1,lastError:n.lastError}}function bb(e){var o;if(!e)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const t=(o=e.channelAccounts)==null?void 0:o.imessage;if(!t||t.length===0)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const n=t[0],i=n.running??!1,s=n.probe,r=s!=null?s.ok===!0:i;return{configured:n.configured??!1,running:i,connected:r,lastError:n.lastError??null,selfChatMode:n.mode==="self-chat"||!!n.selfChatMode,dmPolicy:n.dmPolicy??null,cliPath:n.cliPath??null}}function wb(e){var o;const t=(o=e.configSnapshot)==null?void 0:o.config;if(!t)return null;const n=t.bindings;if(!Array.isArray(n))return null;const i=n.find(a=>{var c,u;return((c=a.match)==null?void 0:c.channel)==="imessage"&&((u=a.meta)==null?void 0:u.imessageOwner)});if(!i)return null;const s=i.agentId;for(const a of e.workspaces)if(a.agents.some(c=>c.id===s))return a.name;if(s==="admin"||s==="public"){const a=e.workspaces.find(c=>c.isDefault);return(a==null?void 0:a.name)??null}const r=s.replace(/-(admin|public)$/,"");if(r!==s){const a=e.workspaces.find(c=>c.name===r);return(a==null?void 0:a.name)??null}return null}function kb(e){var t,n,i,s,r,o,a,c,u;if(e.embeddingDownloading&&!e.publicChat)return p`
3323
+ `}const zr="taskmaster-access-session",du={checked:!1,hasPins:!1,hasMasterPin:!1,authenticated:!1,workspace:null,master:!1,accounts:[],error:null,busy:!1};function pu(){try{return localStorage.getItem(zr)}catch{return null}}function hu(e){try{localStorage.setItem(zr,e)}catch{}}function ob(){try{localStorage.removeItem(zr)}catch{}}async function Qa(e){if(e.client)try{const t=pu(),n=await e.client.request("access.status",{token:t});e.accessState={...e.accessState,checked:!0,hasPins:n.hasPins,hasMasterPin:n.hasMasterPin,accounts:n.accounts??[],authenticated:n.authenticated,workspace:n.workspace,master:n.master,error:null}}catch{e.accessState={...e.accessState,checked:!0,hasPins:!1,hasMasterPin:!1,accounts:[],authenticated:!0,error:null}}}async function ab(e,t,n){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const i=await e.client.request("access.verify",{account:t,pin:n});i.ok&&i.token?(hu(i.token),e.accessState={...e.accessState,authenticated:!0,workspace:i.workspace??null,master:i.master??!1,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:i.message??"Incorrect PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to verify PIN"}}}}async function lb(e,t){if(e.client){e.accessState={...e.accessState,busy:!0,error:null};try{const n=await e.client.request("access.setMasterPin",{pin:t});n.ok&&n.token?(hu(n.token),e.accessState={...e.accessState,checked:!0,hasPins:!0,hasMasterPin:!0,authenticated:!0,workspace:null,master:!0,busy:!1,error:null}):e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}catch{e.accessState={...e.accessState,busy:!1,error:"Failed to set PIN"}}}}async function cb(e,t,n){if(!e.client)return!1;try{return(await e.client.request("access.setAccountPin",{workspace:t,pin:n})).ok}catch{return!1}}async function ub(e){const t=pu();if(e.client&&t)try{await e.client.request("access.logout",{token:t})}catch{}ob(),e.accessState={...du,checked:!0,hasPins:!0,hasMasterPin:e.accessState.hasMasterPin,accounts:e.accessState.accounts}}function db(e,t="admin"){var s;if(!e)return[];const n=e.bindings;if(!Array.isArray(n))return[];const i=[];for(const r of n){if(!r||typeof r!="object"||r.agentId!==t&&r.agentId!=="management")continue;const o=r.match;if(!o||typeof o!="object"||(o.channel??"").toLowerCase()!=="whatsapp")continue;const c=o.peer;if(!c||typeof c!="object"||c.kind!=="dm")continue;const u=c.id??"";u&&i.push({phone:u,paired:((s=r.meta)==null?void 0:s.paired)===!0})}return i.sort((r,o)=>r.paired&&!o.paired?-1:!r.paired&&o.paired?1:0),i}function fu(e,t,n="admin",i){const s=u=>u===n||u==="management",r=new Map,o=new Map;for(const u of e){if(!u||typeof u!="object"||!s(u.agentId))continue;const l=u.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")continue;const h=l.peer;if(!h||typeof h!="object"||h.kind!=="dm")continue;const v=h.id??"";v&&(u.meta&&r.set(v,u.meta),l.accountId&&o.set(v,l.accountId))}const a=e.filter(u=>{if(!u||typeof u!="object"||!s(u.agentId))return!0;const l=u.match;if(!l||typeof l!="object"||(l.channel??"").toLowerCase()!=="whatsapp")return!0;const h=l.peer;return!h||typeof h!="object"?!0:h.kind!=="dm"}),c=t.map(u=>{const l=i??o.get(u.phone),d={channel:"whatsapp",peer:{kind:"dm",id:u.phone}};l&&(d.accountId=l);const h={agentId:n,match:d},v=r.get(u.phone);return v?h.meta=v:u.paired&&(h.meta={paired:!0}),h});return[...a,...c]}async function _i(e,t){if(!e.client||!e.connected)return;if(!t){e.adminPhones=[];return}if(e.adminsLoading)return;e.adminsLoading=!0,e.adminsError=null;const n=t;try{const i=await e.client.request("config.get",{});e.configSnapshot=i;const s=i.config;e.configForm=qe(s??{}),e.adminPhones=db(s,n),e.configFormDirty=!1}catch(i){e.adminsError=String(i)}finally{e.adminsLoading=!1}}async function gu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n;let r=t.replace(/[\s\-\(\)]/g,"");if(!r){e.adminsError="Phone number is required";return}if(r.startsWith("+")||(r="+"+r),!/^\+[1-9]\d{6,14}$/.test(r)){e.adminsError="Invalid phone number. Use international format (e.g., +44 7504 472444)";return}if(e.adminPhones.some(c=>c.phone===r)){e.adminsError="Phone number already exists";return}e.adminsSaving=!0,e.adminsError=null;try{const c=qe(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),u=c.bindings??[],l=[...e.adminPhones,{phone:r}],d=fu(u,l,s,i);wl(c,["bindings"],d);const h=(a=e.configSnapshot)==null?void 0:a.hash;if(!h){e.adminsError="Config hash missing; reload and retry.";return}const v=rt(c);await e.client.request("config.set",{raw:v,baseHash:h}),await _i(e,n)}catch(c){e.adminsError=String(c)}finally{e.adminsSaving=!1}}async function mu(e,t,n,i){var o,a;if(!e.client||!e.connected)return;if(!n){e.adminsError="No business selected.";return}if(e.adminsSaving)return;const s=n,r=e.adminPhones.find(c=>c.phone===t);if(r!=null&&r.paired){e.adminsError="Cannot remove the paired phone. Unlink WhatsApp first.";return}e.adminsSaving=!0,e.adminsError=null;try{const c=qe(e.configForm??((o=e.configSnapshot)==null?void 0:o.config)??{}),u=c.bindings??[],l=e.adminPhones.filter(f=>f.phone!==t),d=fu(u,l,s,i);wl(c,["bindings"],d);const h=(a=e.configSnapshot)==null?void 0:a.hash;if(!h){e.adminsError="Config hash missing; reload and retry.";return}const v=rt(c);await e.client.request("config.set",{raw:v,baseHash:h}),await _i(e,n)}catch(c){e.adminsError=String(c)}finally{e.adminsSaving=!1}}const pb=Object.freeze(Object.defineProperty({__proto__:null,addAdmin:gu,loadAdmins:_i,removeAdmin:mu},Symbol.toStringTag,{value:"Module"}));async function pt(e,t){if(!(!e.client||!e.connected)){if(!t){e.customersRecords=[];return}if(!e.customersLoading){e.customersLoading=!0,e.customersError=null;try{const n=e.customersSearchQuery.trim(),i=n?await e.client.request("records.search",{query:n,workspace:t}):await e.client.request("records.list",{workspace:t});e.customersRecords=i.records??[]}catch(n){e.customersError=String(n)}finally{e.customersLoading=!1}}}}async function yu(e,t,n,i){if(!e.client||!e.connected||e.customersSaving)return;let s=t.replace(/[\s\-\(\)]/g,"");const r=n.trim();if(!s){e.customersError="Phone number is required";return}if(!r){e.customersError="Name is required";return}if(s.startsWith("+")||(s="+"+s),!/^\+[1-9]\d{6,14}$/.test(s)){e.customersError="Invalid phone number. Use international format (e.g., +44 7490 553305)";return}e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.set",{id:s,name:r,fields:{},workspace:i}),e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName="",await pt(e,i)}catch(o){e.customersError=String(o)}finally{e.customersSaving=!1}}async function vu(e,t,n){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.delete",{id:t}),e.customersEditingId===t&&(e.customersEditingId=null),await pt(e,n)}catch(i){e.customersError=String(i)}finally{e.customersSaving=!1}}}async function bu(e,t,n,i,s){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.setField",{id:t,key:n,value:i}),await pt(e,s)}catch(r){e.customersError=String(r)}finally{e.customersSaving=!1}}}async function wu(e,t,n,i){if(!(!e.client||!e.connected)&&!e.customersSaving){e.customersSaving=!0,e.customersError=null;try{await e.client.request("records.deleteField",{id:t,key:n}),await pt(e,i)}catch(s){e.customersError=String(s)}finally{e.customersSaving=!1}}}const hb=Object.freeze(Object.defineProperty({__proto__:null,addCustomer:yu,deleteCustomer:vu,deleteCustomerField:wu,loadCustomers:pt,setCustomerField:bu},Symbol.toStringTag,{value:"Module"}));function Yt(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function fb(e){if(e.workspaces.length!==0)return{workspaces:e.workspaces,selectedWorkspace:e.selectedWorkspace,onWorkspaceSelect:t=>e.handleWorkspaceSelect(t),onAddAccount:()=>{e.addingWorkspace=!0},hasPins:e.accessState.hasPins,isMaster:e.accessState.master,onLogout:()=>e.handleLogout(),auditCount:e.auditEntries.length,onAuditClick:()=>{e.auditModalOpen=!0}}}function gb(e){const t=re(e);if(!t)return;const n=t.agents.find(i=>i.id.endsWith("-admin")||i.id==="admin");return n==null?void 0:n.id}function mb(e){const t=re(e);return(t==null?void 0:t.whatsappAccountId)??void 0}function yb(e){var n;const t=re(e);if(t)return(n=t.agents[0])==null?void 0:n.id}function vb(e){return e.selectedWorkspace??void 0}function re(e){return e.selectedWorkspace?e.workspaces.find(t=>t.name===e.selectedWorkspace)??null:null}const bb=/^data:/i,wb=/^https?:\/\//i;function Ya(e){var a,c;const t=((a=e.agentsList)==null?void 0:a.agents)??[],n=ll(e.sessionKey),i=(n==null?void 0:n.agentId)??((c=e.agentsList)==null?void 0:c.defaultId)??"main",s=t.find(u=>u.id===i),r=s==null?void 0:s.identity,o=(r==null?void 0:r.avatarUrl)??(r==null?void 0:r.avatar);if(o)return bb.test(o)||wb.test(o)?o:r==null?void 0:r.avatarUrl}function kb(e){var i;if(!e)return null;const t=(i=e.channelAccounts)==null?void 0:i.whatsapp;if(!t||t.length===0)return null;const n=t[0];return{running:n.running??!1,connected:n.connected??!1,linked:n.linked??!1,lastError:n.lastError}}function Sb(e){var o;if(!e)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const t=(o=e.channelAccounts)==null?void 0:o.imessage;if(!t||t.length===0)return{configured:!1,running:!1,connected:!1,lastError:null,selfChatMode:!1,dmPolicy:null,cliPath:null};const n=t[0],i=n.running??!1,s=n.probe,r=s!=null?s.ok===!0:i;return{configured:n.configured??!1,running:i,connected:r,lastError:n.lastError??null,selfChatMode:n.mode==="self-chat"||!!n.selfChatMode,dmPolicy:n.dmPolicy??null,cliPath:n.cliPath??null}}function Ab(e){var o;const t=(o=e.configSnapshot)==null?void 0:o.config;if(!t)return null;const n=t.bindings;if(!Array.isArray(n))return null;const i=n.find(a=>{var c,u;return((c=a.match)==null?void 0:c.channel)==="imessage"&&((u=a.meta)==null?void 0:u.imessageOwner)});if(!i)return null;const s=i.agentId;for(const a of e.workspaces)if(a.agents.some(c=>c.id===s))return a.name;if(s==="admin"||s==="public"){const a=e.workspaces.find(c=>c.isDefault);return(a==null?void 0:a.name)??null}const r=s.replace(/-(admin|public)$/,"");if(r!==s){const a=e.workspaces.find(c=>c.name===r);return(a==null?void 0:a.name)??null}return null}function xb(e){var t,n,i,s,r,o,a,c,u;if(e.embeddingDownloading&&!e.publicChat)return p`
3157
3324
  <div class="setup-container">
3158
3325
  <div class="setup-card" style="text-align:center; max-width:420px;">
3159
3326
  <div class="setup-spinner"></div>
@@ -3167,14 +3334,14 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3167
3334
  </p>
3168
3335
  </div>
3169
3336
  </div>
3170
- `;if(e.publicChat)return e.connected?e.publicChatAuthenticated?Sv({connected:e.connected,sessionKey:e.sessionKey,loading:e.chatLoading,sending:e.chatSending,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,assistantAvatarUrl:e.chatAvatarUrl??Ya(e)??null,draft:e.chatMessage,queue:e.chatQueue,canSend:e.connected,canAbort:!!e.chatRunId,disabledReason:e.connected?null:"Disconnected.",error:e.lastError,assistantName:e.assistantName,assistantAvatar:e.assistantAvatar,suggestion:e.chatSuggestion,onSuggestionClick:l=>{e.chatMessage=l,e.chatSuggestion=null,e.handleSendChat()},onRefresh:()=>(e.resetToolStream(),ie(async()=>{const{loadChatHistory:l}=await Promise.resolve().then(()=>$s);return{loadChatHistory:l}},void 0,import.meta.url).then(({loadChatHistory:l})=>{l(e)})),onDraftChange:l=>e.chatMessage=l,attachments:e.chatAttachments,onAttachmentsChange:l=>e.chatAttachments=l,onSend:()=>e.handleSendChat(),onAbort:()=>{e.handleAbortChat()},onQueueRemove:l=>e.removeQueuedMessage(l),onChatScroll:l=>e.handleChatScroll(l),nearBottom:e.chatUserNearBottom}):nb({authMode:e.publicChatConfig.auth??"anonymous",authStep:e.publicChatAuthStep,connected:e.connected,client:e.client,assistantName:e.assistantName,assistantAvatar:e.assistantAvatar,accountId:e.publicChatConfig.accountId,cookieTtlDays:e.publicChatConfig.cookieTtlDays,onAuthenticated:l=>{e.publicChatSessionKey=l,e.sessionKey=l,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",ie(async()=>{const{loadChatHistory:d}=await Promise.resolve().then(()=>$s);return{loadChatHistory:d}},void 0,import.meta.url).then(({loadChatHistory:d})=>{d(e)})},onAuthStepChange:l=>{e.publicChatAuthStep=l},requestUpdate:()=>{e.requestUpdate()}}):p`
3337
+ `;if(e.publicChat)return e.connected?e.publicChatAuthenticated?xv({connected:e.connected,sessionKey:e.sessionKey,loading:e.chatLoading,sending:e.chatSending,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,assistantAvatarUrl:e.chatAvatarUrl??Ya(e)??null,draft:e.chatMessage,queue:e.chatQueue,canSend:e.connected,canAbort:!!e.chatRunId,disabledReason:e.connected?null:"Disconnected.",error:e.lastError,assistantName:e.assistantName,assistantAvatar:e.assistantAvatar,suggestion:e.chatSuggestion,onSuggestionClick:l=>{e.chatMessage=l,e.chatSuggestion=null,e.handleSendChat()},onRefresh:()=>(e.resetToolStream(),se(async()=>{const{loadChatHistory:l}=await Promise.resolve().then(()=>$s);return{loadChatHistory:l}},void 0,import.meta.url).then(({loadChatHistory:l})=>{l(e)})),onDraftChange:l=>e.chatMessage=l,attachments:e.chatAttachments,onAttachmentsChange:l=>e.chatAttachments=l,onSend:()=>e.handleSendChat(),onAbort:()=>{e.handleAbortChat()},onQueueRemove:l=>e.removeQueuedMessage(l),onChatScroll:l=>e.handleChatScroll(l),nearBottom:e.chatUserNearBottom}):rb({authMode:e.publicChatConfig.auth??"anonymous",authStep:e.publicChatAuthStep,connected:e.connected,client:e.client,assistantName:e.assistantName,assistantAvatar:e.assistantAvatar,accountId:e.publicChatConfig.accountId,cookieTtlDays:e.publicChatConfig.cookieTtlDays,onAuthenticated:l=>{e.publicChatSessionKey=l,e.sessionKey=l,e.publicChatAuthenticated=!0,e.publicChatAuthStep="ready",se(async()=>{const{loadChatHistory:d}=await Promise.resolve().then(()=>$s);return{loadChatHistory:d}},void 0,import.meta.url).then(({loadChatHistory:d})=>{d(e)})},onAuthStepChange:l=>{e.publicChatAuthStep=l},requestUpdate:()=>{e.requestUpdate()}}):p`
3171
3338
  <div class="setup-container">
3172
3339
  <div class="setup-card">
3173
3340
  <div class="setup-spinner"></div>
3174
3341
  <p>Connecting...</p>
3175
3342
  </div>
3176
3343
  </div>
3177
- `;if(e.connected&&e.accessState.checked){const{accessState:l}=e;if(l.hasPins&&!l.authenticated)return Fa({show:!0,isFirstTime:!1,accounts:l.accounts,error:l.error,busy:l.busy,onSubmit:(d,h)=>{h!=null&&e.handlePinSubmit(d,h)},changePinMode:e.loginChangePinMode,onToggleChangePinMode:()=>e.toggleChangePinMode(),changePinBusy:e.changePinBusy,changePinError:e.changePinError,changePinSuccess:e.changePinSuccess,onChangePin:(d,h,v)=>e.handleChangePin(d,h,v)});if(!l.hasMasterPin&&!l.authenticated&&e.setup)return Fa({show:!0,isFirstTime:!0,accounts:[],error:l.error,busy:l.busy,onSubmit:d=>e.handleSetMasterPin(d)});if(!l.hasMasterPin&&!l.authenticated&&!e.setup)return window.location.href="/setup",k}if(e.setup){const l=vb(e.channelsSnapshot),d=((n=(t=e.channelsSnapshot)==null?void 0:t.channelAccounts)==null?void 0:n.whatsapp)??[],h=bb(e.channelsSnapshot),v=wb(e);return nf({connected:e.connected,serverPlatform:((s=(i=e.hello)==null?void 0:i.server)==null?void 0:s.platform)??null,assistantName:e.assistantName,currentStep:e.setupStep,licenseKey:e.licenseKey,licenseBusy:e.licenseBusy,licenseValid:e.licenseValid,licenseMessage:e.licenseMessage,licenseTier:e.licenseTier,licenseDeviceId:e.licenseDeviceId,licenseStoredKey:e.licenseStoredKey,onLicenseKeyChange:y=>e.handleLicenseKeyChange(y),onLicenseActivate:()=>e.handleLicenseActivate(),onLicenseRemove:async()=>{await e.handleLicenseRemove(),e.licenseRemoveConfirm=!1},licenseRemoveConfirm:e.licenseRemoveConfirm,onLicenseRemoveConfirm:()=>{e.licenseRemoveConfirm=!0},onLicenseRemoveCancel:()=>{e.licenseRemoveConfirm=!1},authConnected:e.authConnected,authBusy:e.authBusy,authMessage:e.authMessage,authUrl:e.authUrl,authCodeInput:e.authCodeInput,authExpiresIn:e.authExpiresIn,whatsappBusy:e.whatsappBusy,whatsappLoginMessage:e.whatsappLoginMessage,whatsappLoginQrDataUrl:e.whatsappLoginQrDataUrl,whatsappLoginConnected:e.whatsappLoginConnected,whatsappChannelStatus:l,whatsappAccounts:d,whatsappActiveQrAccountId:e.whatsappActiveQrAccountId,whatsappAccountSaving:e.whatsappAccountSaving,gatewayHealthy:e.gatewayHealthy,gatewayHealthLoading:e.gatewayHealthLoading,gatewayHealthMessage:e.gatewayHealthMessage,gatewayRestartBusy:e.gatewayRestartBusy,updateAvailable:e.updateAvailable,currentVersion:e.currentVersion,latestVersion:e.latestVersion,updateChecking:e.updateChecking,updateRunning:e.updateRunning,updateMessage:e.updateMessage,updateProgressSteps:e.updateProgressSteps,updateLastResult:e.updateLastResult,onUpdateCheck:()=>e.handleUpdateCheck(),onUpdateRun:()=>e.handleUpdateRun(),onUpdateDismissResult:()=>e.handleUpdateDismissResult(),uninstallConfirm:e.uninstallConfirm,uninstallBusy:e.uninstallBusy,uninstallDone:e.uninstallDone,uninstallError:e.uninstallError,uninstallConfirmText:e.uninstallConfirmText,onUninstallConfirm:()=>e.handleUninstallConfirm(),onUninstallCancel:()=>e.handleUninstallCancel(),onUninstallConfirmTextChange:y=>e.handleUninstallConfirmTextChange(y),onUninstallRun:()=>e.handleUninstallRun(),onUninstallDismiss:()=>e.handleUninstallDismiss(),onStartAuth:()=>e.handleAuthStart(),onSubmitAuthCode:y=>e.handleAuthSubmitCode(y),onAuthCodeChange:y=>e.handleAuthCodeChange(y),onSkipToWhatsApp:()=>e.handleSkipToWhatsApp(),onWhatsAppRelink:async y=>{await e.handleWhatsAppStart(!0,y),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(y),await V(e,!0),e.requestUpdate())},onWhatsAppReset:async y=>{await e.handleWhatsAppLogout(y),await e.handleWhatsAppStart(!0,y),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(y),await V(e,!0),e.requestUpdate())},onRefreshStatus:async()=>{await V(e,!0),await e.handleGatewayHealthCheck()},onWhatsAppBack:()=>{e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null,e.requestUpdate(),V(e,!0)},onRestartGateway:()=>e.handleGatewayRestart(),onRemoveWhatsAppAccount:y=>e.handleRemoveWhatsAppAccount(y),workspaces:e.workspaces,workspacesLoading:e.workspacesLoading,workspacesError:e.workspacesError,addingWorkspace:e.addingWorkspace,newWorkspaceName:e.newWorkspaceName,newWorkspacePath:e.newWorkspacePath,workspaceSaving:e.workspaceSaving,workspaceRemoveConfirm:e.workspaceRemoveConfirm,newWorkspacePin:e.newWorkspacePin,onSetNewWorkspacePin:y=>{e.newWorkspacePin=y},onWorkspaceCreate:async(y,b)=>{const S=e.newWorkspacePin;await e.handleWorkspaceCreate(y,b),S.match(/^\d{4,6}$/)&&(await ob(e,y,S),e.newWorkspacePin="")},onWorkspaceRemove:y=>e.handleWorkspaceRemove(y),onSetAddingWorkspace:y=>{e.addingWorkspace=y},onSetNewWorkspaceName:y=>{e.newWorkspaceName=y},onSetNewWorkspacePath:y=>{e.newWorkspacePath=y},onSetWorkspaceRemoveConfirm:y=>{e.workspaceRemoveConfirm=y},renamingWorkspace:e.renamingWorkspace,renameWorkspaceName:e.renameWorkspaceName,onWorkspaceRenameStart:()=>e.handleWorkspaceRenameStart(),onWorkspaceRenameCancel:()=>e.handleWorkspaceRenameCancel(),onWorkspaceRename:(y,b)=>e.handleWorkspaceRename(y,b),whatsappDmPolicy:(()=>{const y=se(e),b=y==null?void 0:y.whatsappAccountId,S=b?d.find(x=>x.accountId===b):d[0];return(S==null?void 0:S.dmPolicy)??null})(),onWhatsAppDmToggle:async()=>{var T;const y=se(e),b=y==null?void 0:y.whatsappAccountId,S=b?d.find(M=>M.accountId===b):d[0];if(!S)return;const $=S.dmPolicy!=null&&S.dmPolicy!=="disabled"?"disabled":"open",C=$==="open"?{dmPolicy:$,allowFrom:["*"]}:{dmPolicy:$};try{const M=await e.client.request("config.get"),R=M.config,B=(T=R==null?void 0:R.channels)==null?void 0:T.whatsapp,ge=((B==null?void 0:B.accounts)??{})[S.accountId]?{channels:{whatsapp:{accounts:{[S.accountId]:C}}}}:{channels:{whatsapp:C}};await e.client.request("config.patch",{raw:JSON.stringify(ge),baseHash:M.hash,note:`WhatsApp DM policy → ${$}`,skipRestart:!0}),await V(e,!1)}catch(M){console.error("DM toggle failed:",M)}},whatsappModel:(()=>{var T,M;const y=se(e);if(!y)return null;const b=y.agents.find(R=>R.id.endsWith("-public")||R.id==="public");if(!b)return null;const S=(T=e.configSnapshot)==null?void 0:T.config,x=(M=S==null?void 0:S.agents)==null?void 0:M.list;if(!Array.isArray(x))return null;const $=x.find(R=>R.id===b.id);if(!($!=null&&$.model))return null;const C=typeof $.model=="string"?$.model:$.model.primary;return(C==null?void 0:C.trim())||null})(),whatsappModelCatalog:e.chatModelCatalog??[],onWhatsAppModelChange:async y=>{const b=se(e);if(!b)return;const S=b.agents.find(x=>x.id.endsWith("-public")||x.id==="public");if(S)try{const x=await e.client.request("config.get"),$=x.config,C=($==null?void 0:$.agents)??{},T=Array.isArray(C.list)?[...C.list]:[],M=T.findIndex(B=>B.id===S.id);if(y)M>=0?T[M]={...T[M],model:y}:T.push({id:S.id,model:y});else if(M>=0){const{model:B,...J}=T[M];Object.keys(J).length<=1?T.splice(M,1):T[M]=J}const R=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(R),baseHash:x.hash,note:`Public agent model → ${y||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Model change failed:",x)}},whatsappThinkingLevel:(()=>{var C,T,M;const y=se(e);if(!y)return null;const b=y.agents.find(R=>R.id.endsWith("-public")||R.id==="public");if(!b)return null;const S=(C=e.configSnapshot)==null?void 0:C.config,x=(T=S==null?void 0:S.agents)==null?void 0:T.list;if(!Array.isArray(x))return null;const $=x.find(R=>R.id===b.id);return((M=$==null?void 0:$.thinkingLevel)==null?void 0:M.trim())||null})(),onWhatsAppThinkingChange:async y=>{const b=se(e);if(!b)return;const S=b.agents.find(x=>x.id.endsWith("-public")||x.id==="public");if(S)try{const x=await e.client.request("config.get"),$=x.config,C=($==null?void 0:$.agents)??{},T=Array.isArray(C.list)?[...C.list]:[],M=T.findIndex(J=>J.id===S.id),R=y==="off"?void 0:y;if(R)M>=0?T[M]={...T[M],thinkingLevel:R}:T.push({id:S.id,thinkingLevel:R});else if(M>=0){const{thinkingLevel:J,...ge}=T[M];Object.keys(ge).length<=1?T.splice(M,1):T[M]=ge}const B=T.length>0?{agents:{list:T}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(B),baseHash:x.hash,note:`Public agent thinking → ${R||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Thinking change failed:",x)}},whatsappGroupPolicy:(()=>{var M,R;const y=(M=e.configSnapshot)==null?void 0:M.config,b=(R=y==null?void 0:y.channels)==null?void 0:R.whatsapp,S=se(e),x=S==null?void 0:S.whatsappAccountId,$=(b==null?void 0:b.accounts)??{},C=x?$[x]:void 0;return(C==null?void 0:C.groupPolicy)??(b==null?void 0:b.groupPolicy)??"allowlist"})(),whatsappGroupRequireMention:(()=>{var R,B;const y=(R=e.configSnapshot)==null?void 0:R.config,b=(B=y==null?void 0:y.channels)==null?void 0:B.whatsapp,S=se(e),x=S==null?void 0:S.whatsappAccountId,$=(b==null?void 0:b.accounts)??{},C=x?$[x]:void 0,M=((C==null?void 0:C.groups)??(b==null?void 0:b.groups)??{})["*"];return(M==null?void 0:M.requireMention)!==!1})(),onWhatsAppGroupToggle:async()=>{var S;const y=se(e),b=y==null?void 0:y.whatsappAccountId;try{const x=await e.client.request("config.get"),$=x.config,C=((S=$==null?void 0:$.channels)==null?void 0:S.whatsapp)??{},T=C.accounts??{},M=b?T[b]:void 0,R=(M==null?void 0:M.groupPolicy)??C.groupPolicy??"allowlist",B=R==="disabled"||R==="allowlist",J=B?"open":"disabled",ge=B?{"*":{}}:void 0,Oe={groupPolicy:J};ge&&(Oe.groups=ge);const X=M?{channels:{whatsapp:{accounts:{[b]:Oe}}}}:{channels:{whatsapp:Oe}};await e.client.request("config.patch",{raw:JSON.stringify(X),baseHash:x.hash,note:`WhatsApp groups → ${J}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Group toggle failed:",x)}},onWhatsAppGroupMentionChange:async y=>{var x;const b=se(e),S=b==null?void 0:b.whatsappAccountId;try{const $=await e.client.request("config.get"),C=$.config,M=(((x=C==null?void 0:C.channels)==null?void 0:x.whatsapp)??{}).accounts??{},R=S?M[S]:void 0,B={"*":{requireMention:y}},J=R?{channels:{whatsapp:{accounts:{[S]:{groups:B}}}}}:{channels:{whatsapp:{groups:B}}};await e.client.request("config.patch",{raw:JSON.stringify(J),baseHash:$.hash,note:`WhatsApp group mention → ${y?"when mentioned":"always"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Group mention change failed:",$)}},whatsappSettingsOpen:e.whatsappSettingsOpen??!1,onWhatsAppSettingsOpen:()=>{e.whatsappSettingsOpen=!0},onWhatsAppSettingsClose:()=>{e.whatsappSettingsOpen=!1},imessageConfigured:h.configured,imessageRunning:h.running,imessageConnected:h.connected,imessageLastError:h.lastError,imessageSelfChatMode:h.selfChatMode,imessageCliPath:h.cliPath,imessageEnabling:e.imessageEnabling,imessageEnableConfirm:e.imessageEnableConfirm,imessageOwnerWorkspace:v,onIMessageEnable:()=>{e.imessageEnableConfirm=!0},onIMessageEnableConfirm:async()=>{e.imessageEnabling=!0;try{const y=await e.client.request("config.get"),b=y.config,S=(b==null?void 0:b.bindings)??[],x=se(e),$=x==null?void 0:x.agents.find(B=>B.id.endsWith("-admin")||B.id==="admin"),C=($==null?void 0:$.id)??"admin",T=S.filter(B=>{var J;return((J=B.match)==null?void 0:J.channel)!=="imessage"}),M=[{agentId:C,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}],R=[...T,...M];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:R}),baseHash:y.hash,note:"Enable iMessage (self-chat) for "+((x==null?void 0:x.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),_e(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageEnableCancel:()=>{e.imessageEnableConfirm=!1},onIMessageProbe:async()=>{e.imessageEnabling=!0,e.requestUpdate();try{await V(e,!0)}finally{e.imessageEnabling=!1}},onIMessageDisconnect:async()=>{e.imessageEnabling=!0;try{const y=await e.client.request("config.get"),b=y.config,x=((b==null?void 0:b.bindings)??[]).filter($=>{var C;return((C=$.match)==null?void 0:C.channel)!=="imessage"});await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!1,dmPolicy:"disabled"}},bindings:x}),baseHash:y.hash,note:"Disconnect iMessage"}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),_e(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageReassign:async()=>{e.imessageEnabling=!0;try{const y=await e.client.request("config.get"),b=y.config,S=(b==null?void 0:b.bindings)??[],x=se(e),$=x==null?void 0:x.agents.find(R=>R.id.endsWith("-admin")||R.id==="admin"),C=($==null?void 0:$.id)??"admin",T=S.filter(R=>{var B;return((B=R.match)==null?void 0:B.channel)!=="imessage"}),M=[{agentId:C,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:[...T,...M]}),baseHash:y.hash,note:"Reassign iMessage to "+((x==null?void 0:x.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),_e(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},infoModalOpen:e.infoModalOpen,onInfoModalOpen:y=>{e.infoModalOpen=y},onInfoModalClose:()=>{e.infoModalOpen=null},isMaster:e.accessState.master,apiKeyProviders:e.apiKeyProviders,apiKeyModalOpen:e.apiKeyModalOpen,apiKeyBusy:e.apiKeyBusy,apiKeyError:e.apiKeyError,apiKeySuccess:e.apiKeySuccess,apiKeySavingProvider:e.apiKeySavingProvider,onApiKeyModalOpen:()=>{e.apiKeyModalOpen=!0,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeyModalClose:()=>{e.apiKeyModalOpen=!1,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeySave:async(y,b)=>{e.apiKeySavingProvider=y,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Ka(e.client,y,b);const S=`${y} key saved`;e.apiKeySuccess=S,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}y==="anthropic"&&await e.handleAuthStatusCheck(),setTimeout(()=>{e.apiKeySuccess===S&&(e.apiKeySuccess=null)},2500)}catch(S){e.apiKeyError=S instanceof Error?S.message:"Failed to save key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},onApiKeyRemove:async y=>{e.apiKeySavingProvider=y,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Kv(e.client,y);const b=`${y} key removed`;e.apiKeySuccess=b,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===b&&(e.apiKeySuccess=null)},2500)}catch(b){e.apiKeyError=b instanceof Error?b.message:"Failed to remove key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},authApiKeyMode:e.authApiKeyMode,authApiKeyInput:e.authApiKeyInput,authApiKeyBusy:e.authApiKeyBusy,authApiKeyError:e.authApiKeyError,onAuthApiKeyToggle:()=>{e.authApiKeyMode=!e.authApiKeyMode,e.authApiKeyError=null},onAuthApiKeyChange:y=>{e.authApiKeyInput=y},onAuthApiKeySubmit:async()=>{const y=e.authApiKeyInput.trim();if(y){e.authApiKeyBusy=!0,e.authApiKeyError=null;try{await Ka(e.client,"anthropic",y),await e.handleAuthStatusCheck(),e.authApiKeyMode=!1,e.authApiKeyInput=""}catch(b){e.authApiKeyError=b instanceof Error?b.message:"Failed to save API key"}finally{e.authApiKeyBusy=!1}}},accountHasPin:(()=>{var b;const y=e.selectedWorkspace??((b=e.workspaces[0])==null?void 0:b.name);return y?e.accessState.accounts.some(S=>S.id===y):!1})(),accountPinModalOpen:e.accountPinModalOpen,accountPinBusy:e.accountPinBusy,accountPinError:e.accountPinError,accountPinSuccess:e.accountPinSuccess,onAccountPinModalOpen:()=>{e.accountPinModalOpen=!0,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinModalClose:()=>{e.accountPinModalOpen=!1,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinSave:(y,b)=>{var x;const S=e.selectedWorkspace??((x=e.workspaces[0])==null?void 0:x.name);S&&e.handleAccountPinSave(S,y,b)},publicChatEnabled:(()=>{var S;const y=(S=e.configSnapshot)==null?void 0:S.config,b=y==null?void 0:y.publicChat;return(b==null?void 0:b.enabled)===!0})(),publicChatAuthMode:(()=>{var x;const y=(x=e.configSnapshot)==null?void 0:x.config,b=y==null?void 0:y.publicChat,S=b==null?void 0:b.auth;return S==="verified"||S==="choice"?S:"anonymous"})(),publicChatBusy:e.publicChatToggleBusy,onPublicChatToggle:async()=>{var y;if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const b=await e.client.request("config.get"),S=b.config,x=((y=S==null?void 0:S.publicChat)==null?void 0:y.enabled)===!0;await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{enabled:!x}}),baseHash:b.hash,note:`Public chat → ${x?"disabled":"enabled"}`}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Public chat toggle failed:",b)}finally{e.publicChatToggleBusy=!1}}},onPublicChatAuthModeChange:async y=>{if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const b=await e.client.request("config.get");await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{auth:y}}),baseHash:b.hash,note:`Public chat auth → ${y}`}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Public chat auth mode change failed:",b)}finally{e.publicChatToggleBusy=!1}}},wsProps:db(e)})}if(e.filesPage){const l=fb(e);return Kh({connected:e.connected,wsProps:Yt(e),loading:e.filesLoading,tree:e.filesTree,root:e.filesRoot,error:e.filesError,selectedPath:e.filesSelectedPath,selectedPaths:e.filesSelectedPaths,previewContent:e.filesPreviewContent,previewLoading:e.filesPreviewLoading,previewBinary:e.filesPreviewBinary,previewSize:e.filesPreviewSize,expandedDirs:e.filesExpandedDirs,message:e.filesMessage,uploadBusy:e.filesUploadBusy,reindexBusy:e.filesReindexBusy,memoryStatus:e.filesMemoryStatus,onRefresh:()=>yn(e,l),onReindex:()=>Jp(e,l),onSelectFile:d=>Vp(e,d,l),onToggleSelectFile:d=>Gp(e,d,l),onToggleDir:d=>eh(e,d),onUpload:(d,h)=>Xp(e,d,h,l),onDownload:d=>ec(e,d,l),onBulkDownload:()=>Qp(e,l),onDelete:d=>Zp(e,d,l),onMove:(d,h)=>tc(e,d,h,l),onMoveToDir:(d,h)=>Yp(e,d,h,l),searchQuery:e.filesSearchQuery,searchResults:e.filesSearchResults,searchLoading:e.filesSearchLoading,searchAgentId:e.filesSearchAgentId,agentIds:e.workspaceAgentIds??[],onSearch:d=>{const h=e.filesSearchAgentId??l;th(e,d,h)},onSearchAgentChange:d=>{e.filesSearchAgentId=d},onSearchClear:()=>{nh(e)},onSearchQueryChange:d=>{e.filesSearchQuery=d}})}if(e.browserPage)return Nh({connected:e.connected,active:e.browserScreencastActive,loading:e.browserLoading,error:e.browserError,inputMode:e.browserInputMode,fullscreen:e.browserFullscreen,handoffPending:e.browserHandoffPending,handoffReason:e.browserHandoffReason,onStart:()=>Rv(e),onStop:()=>Nv(e),onToggleInput:()=>Ov(e),onToggleFullscreen:()=>Bv(e),onCompleteHandoff:()=>Dv(e),onCanvasMouseDown:l=>{const h=l.target.getBoundingClientRect(),y=ln().translateCoordinates(l.clientX-h.left,l.clientY-h.top);vs(e,"mousePressed",y.x,y.y,l.button===2?"right":l.button===1?"middle":"left")},onCanvasMouseUp:l=>{const h=l.target.getBoundingClientRect(),y=ln().translateCoordinates(l.clientX-h.left,l.clientY-h.top);vs(e,"mouseReleased",y.x,y.y)},onCanvasMouseMove:l=>{const d=ln();if(d.shouldThrottleMouseMove())return;const v=l.target.getBoundingClientRect(),y=d.translateCoordinates(l.clientX-v.left,l.clientY-v.top);vs(e,"mouseMoved",y.x,y.y)},onCanvasKeyDown:l=>{let d=0;l.altKey&&(d|=1),l.ctrlKey&&(d|=2),l.metaKey&&(d|=4),l.shiftKey&&(d|=8),bs(e,"keyDown",l.key,{code:l.code,modifiers:d||void 0}),l.key.length===1&&bs(e,"char",l.key,{text:l.key})},onCanvasKeyUp:l=>{bs(e,"keyUp",l.key,{code:l.code})}});if(e.adminsPage){const l=pb(e),d=hb(e);return rf({connected:e.connected,wsProps:Yt(e),loading:e.adminsLoading,saving:e.adminsSaving,phones:e.adminPhones,error:e.adminsError,newPhone:e.adminsNewPhone,onRefresh:()=>_i(e,l),onAdd:h=>{fu(e,h,l,d).then(()=>{e.adminsError||(e.adminsNewPhone="")})},onRemove:h=>gu(e,h,l,d),onNewPhoneChange:h=>e.handleAdminsNewPhoneChange(h)})}if(e.customersPage){const l=gb(e);return cf({connected:e.connected,wsProps:Yt(e),loading:e.customersLoading,saving:e.customersSaving,records:e.customersRecords,error:e.customersError,searchQuery:e.customersSearchQuery,editingId:e.customersEditingId,showAddForm:e.customersShowAddForm,newRecordPhone:e.customersNewPhone,newRecordName:e.customersNewName,onSearch:d=>e.customersSearchQuery=d,onSearchSubmit:()=>dt(e,l),onAdd:(d,h)=>mu(e,d,h,l),onDelete:d=>yu(e,d,l),onSetField:(d,h,v)=>vu(e,d,h,v,l),onDeleteField:(d,h)=>bu(e,d,h,l),onToggleExpand:d=>{e.customersEditingId=e.customersEditingId===d?null:d},onShowAddForm:()=>e.customersShowAddForm=!0,onCancelAddForm:()=>{e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName=""},onNewRecordPhoneChange:d=>e.handleCustomersNewPhoneChange(d),onNewRecordNameChange:d=>e.handleCustomersNewNameChange(d),onRefresh:()=>dt(e,l)})}if(e.chatPage){const l=e.connected?null:"Disconnected from gateway.",d=Ya(e),h=e.chatAvatarUrl??d??null,v=(()=>{var S;const y=(S=e.configSnapshot)==null?void 0:S.config,b=y==null?void 0:y.publicChat;return(b==null?void 0:b.enabled)===!0})();return Hy({connected:e.connected,wsProps:Yt(e),publicChatEnabled:v,publicChatAccountId:e.selectedWorkspace??void 0,sessionKey:e.sessionKey,onSessionKeyChange:y=>{e.sessionKey=y,e.chatMessage="",e.chatAttachments=[],e.chatStream=null,e.chatInterimText=null,e.chatSuggestion=null,e.chatStreamStartedAt=null,e.chatRunId=null,e.chatQueue=[],e.resetToolStream(),e.resetChatScroll(),e.applySettings({...e.settings,sessionKey:y,lastActiveSessionKey:y}),e.loadAssistantIdentity(),Te(e),Ls(e)},thinkingLevel:e.chatThinkingLevel,showThinking:e.settings.chatShowThinking??!1,modelProvider:e.chatModelProvider,model:e.chatModel,modelCatalog:e.chatModelCatalog,onModelChange:y=>{Ln(e,e.sessionKey,{model:y}).then(()=>{Te(e)})},onThinkingLevelChange:y=>{Ln(e,e.sessionKey,{thinkingLevel:y==="off"?null:y}).then(()=>{Te(e)})},verboseLevel:e.chatVerboseLevel,fillerEnabled:e.chatFillerEnabled,suggestion:e.chatSuggestion,onSuggestionClick:y=>{e.chatMessage=y,e.chatSuggestion=null,e.handleSendChat()},onVerboseChange:y=>{Ln(e,e.sessionKey,{verboseLevel:y==="off"?null:y}).then(()=>{Te(e)})},onFillerChange:y=>{Ln(e,e.sessionKey,{fillerEnabled:y}).then(()=>{Te(e)})},loading:e.chatLoading,sending:e.chatSending,compactionStatus:e.compactionStatus,assistantAvatarUrl:h,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,draft:e.chatMessage,queue:e.chatQueue,canSend:e.connected,disabledReason:l,error:e.lastError,sessions:e.sessionsResult,focusMode:!1,onRefresh:()=>(e.resetToolStream(),Promise.all([Te(e),Ls(e)])),onToggleFocusMode:()=>{},onChatScroll:y=>e.handleChatScroll(y),nearBottom:e.chatUserNearBottom,onDraftChange:y=>e.chatMessage=y,attachments:e.chatAttachments,onAttachmentsChange:y=>e.chatAttachments=y,onSend:()=>e.handleSendChat(),canAbort:!!e.chatRunId,onAbort:()=>{e.handleAbortChat()},onQueueRemove:y=>e.removeQueuedMessage(y),onNewSession:()=>e.handleSendChat("/new",{restoreDraft:!0}),sidebarOpen:e.sidebarOpen,sidebarContent:e.sidebarContent,sidebarError:e.sidebarError,splitRatio:e.splitRatio,onOpenSidebar:y=>e.handleOpenSidebar(y),onCloseSidebar:()=>e.handleCloseSidebar(),onSplitRatioChange:y=>e.handleSplitRatioChange(y),assistantName:e.assistantName,assistantAvatar:e.assistantAvatar})}return e.advancedPage?kv({connected:e.connected,wsProps:Yt(e),activeTab:e.advancedTab,onTabChange:l=>{e.advancedTab=l,l==="cron"&&e.loadCron(),l==="skills"&&lt(e,{clearMessages:!0}),l==="logs"&&(e.logsSubTab==="session"?rn(e,{reset:!0}):Et(e,{reset:!0}))},cronProps:{loading:e.cronLoading,status:e.cronStatus,jobs:e.cronJobs,error:e.cronError,busy:e.cronBusy,form:e.cronForm,channels:(o=(r=e.channelsSnapshot)==null?void 0:r.channelMeta)!=null&&o.length?e.channelsSnapshot.channelMeta.map(l=>l.id):((a=e.channelsSnapshot)==null?void 0:a.channelOrder)??[],channelLabels:((c=e.channelsSnapshot)==null?void 0:c.channelLabels)??{},channelMeta:((u=e.channelsSnapshot)==null?void 0:u.channelMeta)??[],agentIds:(()=>{var d;const l=se(e);return((d=l==null?void 0:l.agents)==null?void 0:d.map(h=>h.id))??[]})(),runsJobId:e.cronRunsJobId,runs:e.cronRuns,newEventModalOpen:e.cronNewEventModal,onNewEventModalOpen:()=>{e.cronNewEventModal=!0},onNewEventModalClose:()=>{e.cronNewEventModal=!1},detailJobId:e.cronDetailJobId,onDetailOpen:l=>{e.cronDetailJobId=l.id,Cs(e,l.id)},onDetailClose:()=>{e.cronDetailJobId=null},onFormChange:l=>e.cronForm={...e.cronForm,...l},onRefresh:()=>e.loadCron(),onAdd:()=>{Yd(e).then(()=>{e.cronNewEventModal=!1})},onToggle:(l,d)=>Xd(e,l,d),onRun:l=>Zd(e,l),onRemove:l=>Jd(e,l),onLoadRuns:l=>Cs(e,l)},skillsProps:{loading:e.skillsLoading,report:e.skillsReport,error:e.skillsError,filter:e.skillsFilter,edits:e.skillEdits,messages:e.skillMessages,busyKey:e.skillsBusyKey,onFilterChange:l=>e.skillsFilter=l,onRefresh:()=>lt(e,{clearMessages:!0}),onToggle:(l,d)=>Hl(e,l,d),onEdit:(l,d)=>jl(e,l,d),onSaveKey:l=>ql(e,l),onInstall:(l,d,h)=>Vl(e,l,d,h)},logsProps:{logsSubTab:e.logsSubTab,onSubTabChange:l=>{e.logsSubTab=l,l==="session"?rn(e,{reset:!0}):Et(e,{reset:!0})},sessionLogsProps:{loading:e.sessionLogsLoading,error:e.sessionLogsError,entries:e.sessionLogsEntries,agents:e.sessionLogsAgents,filterText:e.sessionLogsFilterText,typeFilters:e.sessionLogsTypeFilters,agentFilters:e.sessionLogsAgentFilters,autoFollow:e.sessionLogsAutoFollow,onFilterTextChange:l=>e.sessionLogsFilterText=l,onTypeToggle:(l,d)=>{const h=e;h.sessionLogsTypeFilters={...h.sessionLogsTypeFilters,[l]:d}},onAgentToggle:(l,d)=>{const h=e;h.sessionLogsAgentFilters={...h.sessionLogsAgentFilters,[l]:d}},onToggleAutoFollow:l=>e.sessionLogsAutoFollow=l,onRefresh:()=>{rn(e,{reset:!0})},onExport:(l,d)=>e.exportSessionLogs(l,d),onScroll:l=>e.handleSessionLogsScroll(l)},loading:e.logsLoading,error:e.logsError,file:e.logsFile,entries:e.logsEntries,filterText:e.logsFilterText,levelFilters:e.logsLevelFilters,autoFollow:e.logsAutoFollow,truncated:e.logsTruncated,onFilterTextChange:l=>e.logsFilterText=l,onLevelToggle:(l,d)=>{e.logsLevelFilters={...e.logsLevelFilters,[l]:d}},onToggleAutoFollow:l=>e.logsAutoFollow=l,onRefresh:()=>Et(e,{reset:!0}),onExport:(l,d)=>e.exportSessionLogs(l,d),onScroll:l=>e.handleLogsScroll(l)}}):(window.location.replace("/chat"),p``)}function Sb(e){const t=new Date(e),n=t.toLocaleDateString("en-GB",{day:"2-digit",month:"short"}),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"});return`${n} ${i}`}function Xa(e){return e.startsWith("memory/public/")?"public":e.startsWith("memory/shared/")?"shared":"other"}function Ab(e,t,n){return p`
3344
+ `;if(e.connected&&e.accessState.checked){const{accessState:l}=e;if(l.hasPins&&!l.authenticated)return Fa({show:!0,isFirstTime:!1,accounts:l.accounts,error:l.error,busy:l.busy,onSubmit:(d,h)=>{h!=null&&e.handlePinSubmit(d,h)},changePinMode:e.loginChangePinMode,onToggleChangePinMode:()=>e.toggleChangePinMode(),changePinBusy:e.changePinBusy,changePinError:e.changePinError,changePinSuccess:e.changePinSuccess,onChangePin:(d,h,v)=>e.handleChangePin(d,h,v)});if(!l.hasMasterPin&&!l.authenticated&&e.setup)return Fa({show:!0,isFirstTime:!0,accounts:[],error:l.error,busy:l.busy,onSubmit:d=>e.handleSetMasterPin(d)});if(!l.hasMasterPin&&!l.authenticated&&!e.setup)return window.location.href="/setup",S}if(e.setup){const l=kb(e.channelsSnapshot),d=((n=(t=e.channelsSnapshot)==null?void 0:t.channelAccounts)==null?void 0:n.whatsapp)??[],h=Sb(e.channelsSnapshot),v=Ab(e);return rf({connected:e.connected,serverPlatform:((s=(i=e.hello)==null?void 0:i.server)==null?void 0:s.platform)??null,assistantName:e.assistantName,currentStep:e.setupStep,licenseKey:e.licenseKey,licenseBusy:e.licenseBusy,licenseValid:e.licenseValid,licenseMessage:e.licenseMessage,licenseTier:e.licenseTier,licenseDeviceId:e.licenseDeviceId,licenseStoredKey:e.licenseStoredKey,onLicenseKeyChange:f=>e.handleLicenseKeyChange(f),onLicenseActivate:()=>e.handleLicenseActivate(),onLicenseRemove:async()=>{await e.handleLicenseRemove(),e.licenseRemoveConfirm=!1},licenseRemoveConfirm:e.licenseRemoveConfirm,onLicenseRemoveConfirm:()=>{e.licenseRemoveConfirm=!0},onLicenseRemoveCancel:()=>{e.licenseRemoveConfirm=!1},authConnected:e.authConnected,authBusy:e.authBusy,authMessage:e.authMessage,authUrl:e.authUrl,authCodeInput:e.authCodeInput,authExpiresIn:e.authExpiresIn,whatsappBusy:e.whatsappBusy,whatsappLoginMessage:e.whatsappLoginMessage,whatsappLoginQrDataUrl:e.whatsappLoginQrDataUrl,whatsappLoginConnected:e.whatsappLoginConnected,whatsappChannelStatus:l,whatsappAccounts:d,whatsappActiveQrAccountId:e.whatsappActiveQrAccountId,whatsappAccountSaving:e.whatsappAccountSaving,gatewayHealthy:e.gatewayHealthy,gatewayHealthLoading:e.gatewayHealthLoading,gatewayHealthMessage:e.gatewayHealthMessage,gatewayRestartBusy:e.gatewayRestartBusy,updateAvailable:e.updateAvailable,currentVersion:e.currentVersion,latestVersion:e.latestVersion,updateChecking:e.updateChecking,updateRunning:e.updateRunning,updateMessage:e.updateMessage,updateProgressSteps:e.updateProgressSteps,updateLastResult:e.updateLastResult,onUpdateCheck:()=>e.handleUpdateCheck(),onUpdateRun:()=>e.handleUpdateRun(),onUpdateDismissResult:()=>e.handleUpdateDismissResult(),uninstallConfirm:e.uninstallConfirm,uninstallBusy:e.uninstallBusy,uninstallDone:e.uninstallDone,uninstallError:e.uninstallError,uninstallConfirmText:e.uninstallConfirmText,onUninstallConfirm:()=>e.handleUninstallConfirm(),onUninstallCancel:()=>e.handleUninstallCancel(),onUninstallConfirmTextChange:f=>e.handleUninstallConfirmTextChange(f),onUninstallRun:()=>e.handleUninstallRun(),onUninstallDismiss:()=>e.handleUninstallDismiss(),onStartAuth:()=>e.handleAuthStart(),onSubmitAuthCode:f=>e.handleAuthSubmitCode(f),onAuthCodeChange:f=>e.handleAuthCodeChange(f),onSkipToWhatsApp:()=>e.handleSkipToWhatsApp(),onWhatsAppRelink:async f=>{await e.handleWhatsAppStart(!0,f),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(f),await V(e,!0),e.requestUpdate())},onWhatsAppUnlink:async f=>{await e.handleWhatsAppLogout(f)},onWhatsAppReset:async f=>{await e.handleWhatsAppLogout(f),await e.handleWhatsAppStart(!0,f),e.whatsappLoginQrDataUrl&&(await e.handleWhatsAppWait(f),await V(e,!0),e.requestUpdate())},onRefreshStatus:async()=>{await V(e,!0),await e.handleGatewayHealthCheck()},onWhatsAppBack:()=>{e.whatsappLoginQrDataUrl=null,e.whatsappLoginMessage=null,e.whatsappLoginConnected=null,e.whatsappActiveQrAccountId=null,e.requestUpdate(),V(e,!0)},onRestartGateway:()=>e.handleGatewayRestart(),onRemoveWhatsAppAccount:f=>e.handleRemoveWhatsAppAccount(f),workspaces:e.workspaces,workspacesLoading:e.workspacesLoading,workspacesError:e.workspacesError,addingWorkspace:e.addingWorkspace,newWorkspaceName:e.newWorkspaceName,newWorkspacePath:e.newWorkspacePath,workspaceSaving:e.workspaceSaving,workspaceRemoveConfirm:e.workspaceRemoveConfirm,newWorkspacePin:e.newWorkspacePin,onSetNewWorkspacePin:f=>{e.newWorkspacePin=f},onWorkspaceCreate:async(f,b)=>{const k=e.newWorkspacePin;await e.handleWorkspaceCreate(f,b),k.match(/^\d{4,6}$/)&&(await cb(e,f,k),e.newWorkspacePin="")},onWorkspaceRemove:f=>e.handleWorkspaceRemove(f),onSetAddingWorkspace:f=>{e.addingWorkspace=f},onSetNewWorkspaceName:f=>{e.newWorkspaceName=f},onSetNewWorkspacePath:f=>{e.newWorkspacePath=f},onSetWorkspaceRemoveConfirm:f=>{e.workspaceRemoveConfirm=f},renamingWorkspace:e.renamingWorkspace,renameWorkspaceName:e.renameWorkspaceName,onWorkspaceRenameStart:()=>e.handleWorkspaceRenameStart(),onWorkspaceRenameCancel:()=>e.handleWorkspaceRenameCancel(),onWorkspaceRename:(f,b)=>e.handleWorkspaceRename(f,b),whatsappDmPolicy:(()=>{const f=re(e),b=f==null?void 0:f.whatsappAccountId,k=b?d.find(x=>x.accountId===b):d[0];return(k==null?void 0:k.dmPolicy)??null})(),onWhatsAppDmToggle:async()=>{var C;const f=re(e),b=f==null?void 0:f.whatsappAccountId,k=b?d.find(M=>M.accountId===b):d[0];if(!k)return;const $=k.dmPolicy!=null&&k.dmPolicy!=="disabled"?"disabled":"open",T=$==="open"?{dmPolicy:$,allowFrom:["*"]}:{dmPolicy:$};try{const M=await e.client.request("config.get"),R=M.config,B=(C=R==null?void 0:R.channels)==null?void 0:C.whatsapp,me=((B==null?void 0:B.accounts)??{})[k.accountId]?{channels:{whatsapp:{accounts:{[k.accountId]:T}}}}:{channels:{whatsapp:T}};await e.client.request("config.patch",{raw:JSON.stringify(me),baseHash:M.hash,note:`WhatsApp DM policy → ${$}`,skipRestart:!0}),await V(e,!1)}catch(M){console.error("DM toggle failed:",M)}},whatsappModel:(()=>{var C,M;const f=re(e);if(!f)return null;const b=f.agents.find(R=>R.id.endsWith("-public")||R.id==="public");if(!b)return null;const k=(C=e.configSnapshot)==null?void 0:C.config,x=(M=k==null?void 0:k.agents)==null?void 0:M.list;if(!Array.isArray(x))return null;const $=x.find(R=>R.id===b.id);if(!($!=null&&$.model))return null;const T=typeof $.model=="string"?$.model:$.model.primary;return(T==null?void 0:T.trim())||null})(),whatsappModelCatalog:e.chatModelCatalog??[],onWhatsAppModelChange:async f=>{const b=re(e);if(!b)return;const k=b.agents.find(x=>x.id.endsWith("-public")||x.id==="public");if(k)try{const x=await e.client.request("config.get"),$=x.config,T=($==null?void 0:$.agents)??{},C=Array.isArray(T.list)?[...T.list]:[],M=C.findIndex(B=>B.id===k.id);if(f)M>=0?C[M]={...C[M],model:f}:C.push({id:k.id,model:f});else if(M>=0){const{model:B,...ee}=C[M];Object.keys(ee).length<=1?C.splice(M,1):C[M]=ee}const R=C.length>0?{agents:{list:C}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(R),baseHash:x.hash,note:`Public agent model → ${f||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Model change failed:",x)}},whatsappThinkingLevel:(()=>{var T,C,M;const f=re(e);if(!f)return null;const b=f.agents.find(R=>R.id.endsWith("-public")||R.id==="public");if(!b)return null;const k=(T=e.configSnapshot)==null?void 0:T.config,x=(C=k==null?void 0:k.agents)==null?void 0:C.list;if(!Array.isArray(x))return null;const $=x.find(R=>R.id===b.id);return((M=$==null?void 0:$.thinkingLevel)==null?void 0:M.trim())||null})(),onWhatsAppThinkingChange:async f=>{const b=re(e);if(!b)return;const k=b.agents.find(x=>x.id.endsWith("-public")||x.id==="public");if(k)try{const x=await e.client.request("config.get"),$=x.config,T=($==null?void 0:$.agents)??{},C=Array.isArray(T.list)?[...T.list]:[],M=C.findIndex(ee=>ee.id===k.id),R=f==="off"?void 0:f;if(R)M>=0?C[M]={...C[M],thinkingLevel:R}:C.push({id:k.id,thinkingLevel:R});else if(M>=0){const{thinkingLevel:ee,...me}=C[M];Object.keys(me).length<=1?C.splice(M,1):C[M]=me}const B=C.length>0?{agents:{list:C}}:{agents:{list:null}};await e.client.request("config.patch",{raw:JSON.stringify(B),baseHash:x.hash,note:`Public agent thinking → ${R||"default"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Thinking change failed:",x)}},whatsappGroupPolicy:(()=>{var M,R;const f=(M=e.configSnapshot)==null?void 0:M.config,b=(R=f==null?void 0:f.channels)==null?void 0:R.whatsapp,k=re(e),x=k==null?void 0:k.whatsappAccountId,$=(b==null?void 0:b.accounts)??{},T=x?$[x]:void 0;return(T==null?void 0:T.groupPolicy)??(b==null?void 0:b.groupPolicy)??"allowlist"})(),whatsappGroupRequireMention:(()=>{var R,B;const f=(R=e.configSnapshot)==null?void 0:R.config,b=(B=f==null?void 0:f.channels)==null?void 0:B.whatsapp,k=re(e),x=k==null?void 0:k.whatsappAccountId,$=(b==null?void 0:b.accounts)??{},T=x?$[x]:void 0,M=((T==null?void 0:T.groups)??(b==null?void 0:b.groups)??{})["*"];return(M==null?void 0:M.requireMention)!==!1})(),onWhatsAppGroupToggle:async()=>{var k;const f=re(e),b=f==null?void 0:f.whatsappAccountId;try{const x=await e.client.request("config.get"),$=x.config,T=((k=$==null?void 0:$.channels)==null?void 0:k.whatsapp)??{},C=T.accounts??{},M=b?C[b]:void 0,R=(M==null?void 0:M.groupPolicy)??T.groupPolicy??"allowlist",B=R==="disabled"||R==="allowlist",ee=B?"open":"disabled",me=B?{"*":{}}:void 0,Be={groupPolicy:ee};me&&(Be.groups=me);const Z=M?{channels:{whatsapp:{accounts:{[b]:Be}}}}:{channels:{whatsapp:Be}};await e.client.request("config.patch",{raw:JSON.stringify(Z),baseHash:x.hash,note:`WhatsApp groups → ${ee}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch(x){console.error("Group toggle failed:",x)}},onWhatsAppGroupMentionChange:async f=>{var x;const b=re(e),k=b==null?void 0:b.whatsappAccountId;try{const $=await e.client.request("config.get"),T=$.config,M=(((x=T==null?void 0:T.channels)==null?void 0:x.whatsapp)??{}).accounts??{},R=k?M[k]:void 0,B={"*":{requireMention:f}},ee=R?{channels:{whatsapp:{accounts:{[k]:{groups:B}}}}}:{channels:{whatsapp:{groups:B}}};await e.client.request("config.patch",{raw:JSON.stringify(ee),baseHash:$.hash,note:`WhatsApp group mention → ${f?"when mentioned":"always"}`,skipRestart:!0}),e.configSnapshot=await e.client.request("config.get")}catch($){console.error("Group mention change failed:",$)}},whatsappSettingsOpen:e.whatsappSettingsOpen??!1,onWhatsAppSettingsOpen:()=>{e.whatsappSettingsOpen=!0},onWhatsAppSettingsClose:()=>{e.whatsappSettingsOpen=!1},imessageConfigured:h.configured,imessageRunning:h.running,imessageConnected:h.connected,imessageLastError:h.lastError,imessageSelfChatMode:h.selfChatMode,imessageCliPath:h.cliPath,imessageEnabling:e.imessageEnabling,imessageEnableConfirm:e.imessageEnableConfirm,imessageOwnerWorkspace:v,onIMessageEnable:()=>{e.imessageEnableConfirm=!0},onIMessageEnableConfirm:async()=>{e.imessageEnabling=!0;try{const f=await e.client.request("config.get"),b=f.config,k=(b==null?void 0:b.bindings)??[],x=re(e),$=x==null?void 0:x.agents.find(B=>B.id.endsWith("-admin")||B.id==="admin"),T=($==null?void 0:$.id)??"admin",C=k.filter(B=>{var ee;return((ee=B.match)==null?void 0:ee.channel)!=="imessage"}),M=[{agentId:T,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}],R=[...C,...M];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:R}),baseHash:f.hash,note:"Enable iMessage (self-chat) for "+((x==null?void 0:x.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),Me(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageEnableCancel:()=>{e.imessageEnableConfirm=!1},onIMessageProbe:async()=>{e.imessageEnabling=!0,e.requestUpdate();try{await V(e,!0)}finally{e.imessageEnabling=!1}},onIMessageDisconnect:async()=>{e.imessageEnabling=!0;try{const f=await e.client.request("config.get"),b=f.config,x=((b==null?void 0:b.bindings)??[]).filter($=>{var T;return((T=$.match)==null?void 0:T.channel)!=="imessage"});await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!1,dmPolicy:"disabled"}},bindings:x}),baseHash:f.hash,note:"Disconnect iMessage"}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),Me(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},onIMessageReassign:async()=>{e.imessageEnabling=!0;try{const f=await e.client.request("config.get"),b=f.config,k=(b==null?void 0:b.bindings)??[],x=re(e),$=x==null?void 0:x.agents.find(R=>R.id.endsWith("-admin")||R.id==="admin"),T=($==null?void 0:$.id)??"admin",C=k.filter(R=>{var B;return((B=R.match)==null?void 0:B.channel)!=="imessage"}),M=[{agentId:T,match:{channel:"imessage",peer:{kind:"dm",id:"__self__"}},meta:{imessageOwner:!0}}];await e.client.request("config.patch",{raw:JSON.stringify({channels:{imessage:{selfChatMode:!0,dmPolicy:"disabled",allowFrom:["*"]}},bindings:[...C,...M]}),baseHash:f.hash,note:"Reassign iMessage to "+((x==null?void 0:x.name)??"default")}),e.imessageEnableConfirm=!1,setTimeout(()=>{Promise.all([V(e,!0),Me(e)]).then(()=>{e.imessageEnabling=!1})},3e3)}catch{e.imessageEnabling=!1}},infoModalOpen:e.infoModalOpen,onInfoModalOpen:f=>{e.infoModalOpen=f},onInfoModalClose:()=>{e.infoModalOpen=null},isMaster:e.accessState.master,apiKeyProviders:e.apiKeyProviders,apiKeyModalOpen:e.apiKeyModalOpen,apiKeyBusy:e.apiKeyBusy,apiKeyError:e.apiKeyError,apiKeySuccess:e.apiKeySuccess,apiKeySavingProvider:e.apiKeySavingProvider,onApiKeyModalOpen:()=>{e.apiKeyModalOpen=!0,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeyModalClose:()=>{e.apiKeyModalOpen=!1,e.apiKeyError=null,e.apiKeySuccess=null,e.apiKeySavingProvider=null},onApiKeySave:async(f,b)=>{e.apiKeySavingProvider=f,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await Ka(e.client,f,b);const k=`${f} key saved`;e.apiKeySuccess=k,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}f==="anthropic"&&await e.handleAuthStatusCheck(),setTimeout(()=>{e.apiKeySuccess===k&&(e.apiKeySuccess=null)},2500)}catch(k){e.apiKeyError=k instanceof Error?k.message:"Failed to save key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},onApiKeyRemove:async f=>{e.apiKeySavingProvider=f,e.apiKeyBusy=!0,e.apiKeyError=null,e.apiKeySuccess=null;try{await jv(e.client,f);const b=`${f} key removed`;e.apiKeySuccess=b,e.apiKeySavingProvider=null;try{e.apiKeyProviders=await Ys(e.client)}catch{}setTimeout(()=>{e.apiKeySuccess===b&&(e.apiKeySuccess=null)},2500)}catch(b){e.apiKeyError=b instanceof Error?b.message:"Failed to remove key",e.apiKeySavingProvider=null}finally{e.apiKeyBusy=!1}},authApiKeyMode:e.authApiKeyMode,authApiKeyInput:e.authApiKeyInput,authApiKeyBusy:e.authApiKeyBusy,authApiKeyError:e.authApiKeyError,onAuthApiKeyToggle:()=>{e.authApiKeyMode=!e.authApiKeyMode,e.authApiKeyError=null},onAuthApiKeyChange:f=>{e.authApiKeyInput=f},onAuthApiKeySubmit:async()=>{const f=e.authApiKeyInput.trim();if(f){e.authApiKeyBusy=!0,e.authApiKeyError=null;try{await Ka(e.client,"anthropic",f),await e.handleAuthStatusCheck(),e.authApiKeyMode=!1,e.authApiKeyInput=""}catch(b){e.authApiKeyError=b instanceof Error?b.message:"Failed to save API key"}finally{e.authApiKeyBusy=!1}}},accountHasPin:(()=>{var b;const f=e.selectedWorkspace??((b=e.workspaces[0])==null?void 0:b.name);return f?e.accessState.accounts.some(k=>k.id===f):!1})(),accountPinModalOpen:e.accountPinModalOpen,accountPinBusy:e.accountPinBusy,accountPinError:e.accountPinError,accountPinSuccess:e.accountPinSuccess,onAccountPinModalOpen:()=>{e.accountPinModalOpen=!0,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinModalClose:()=>{e.accountPinModalOpen=!1,e.accountPinError=null,e.accountPinSuccess=null},onAccountPinSave:(f,b)=>{var x;const k=e.selectedWorkspace??((x=e.workspaces[0])==null?void 0:x.name);k&&e.handleAccountPinSave(k,f,b)},publicChatEnabled:(()=>{var k;const f=(k=e.configSnapshot)==null?void 0:k.config,b=f==null?void 0:f.publicChat;return(b==null?void 0:b.enabled)===!0})(),publicChatAuthMode:(()=>{var x;const f=(x=e.configSnapshot)==null?void 0:x.config,b=f==null?void 0:f.publicChat,k=b==null?void 0:b.auth;return k==="verified"||k==="choice"?k:"anonymous"})(),publicChatBusy:e.publicChatToggleBusy,onPublicChatToggle:async()=>{var f;if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const b=await e.client.request("config.get"),k=b.config,x=((f=k==null?void 0:k.publicChat)==null?void 0:f.enabled)===!0;await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{enabled:!x}}),baseHash:b.hash,note:`Public chat → ${x?"disabled":"enabled"}`}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Public chat toggle failed:",b)}finally{e.publicChatToggleBusy=!1}}},onPublicChatAuthModeChange:async f=>{if(!e.publicChatToggleBusy){e.publicChatToggleBusy=!0;try{const b=await e.client.request("config.get");await e.client.request("config.patch",{raw:JSON.stringify({publicChat:{auth:f}}),baseHash:b.hash,note:`Public chat auth → ${f}`}),e.configSnapshot=await e.client.request("config.get")}catch(b){console.error("Public chat auth mode change failed:",b)}finally{e.publicChatToggleBusy=!1}}},tailscaleStatus:e.tailscaleStatus,tailscaleBusy:e.tailscaleBusy,tailscaleAuthUrl:e.tailscaleAuthUrl,tailscaleError:e.tailscaleError,tailscaleFunnelEnableUrl:e.tailscaleFunnelEnableUrl,onTailscaleEnable:async()=>{if(!e.tailscaleBusy){e.tailscaleBusy=!0,e.tailscaleAuthUrl=null;try{const f=await e.client.request("tailscale.enable");if(f.authUrl){e.tailscaleAuthUrl=f.authUrl;const b=setInterval(async()=>{try{const k=await e.client.request("tailscale.status");e.tailscaleStatus=k,k.loggedIn&&(clearInterval(b),e.tailscaleAuthUrl=null,e.tailscaleBusy=!1)}catch{}},3e3);setTimeout(()=>{clearInterval(b),e.tailscaleBusy&&(e.tailscaleBusy=!1)},3e5)}else f.alreadyLoggedIn&&(e.tailscaleStatus=await e.client.request("tailscale.status")),e.tailscaleBusy=!1}catch(f){console.error("Tailscale enable failed:",f),e.tailscaleBusy=!1}}},onTailscaleFunnelEnable:async()=>{var f;if(!e.tailscaleBusy){e.tailscaleBusy=!0,e.tailscaleError=null,e.tailscaleFunnelEnableUrl=null;try{await e.client.request("tailscale.funnel.enable")}catch(b){console.error("Tailscale funnel enable failed:",b);const k=b;(f=k.payload)!=null&&f.enableUrl&&(e.tailscaleFunnelEnableUrl=k.payload.enableUrl),e.tailscaleError=k.message||"Failed to enable Funnel",e.tailscaleBusy=!1}}},onTailscaleFunnelDisable:async()=>{if(!e.tailscaleBusy){e.tailscaleBusy=!0;try{await e.client.request("tailscale.funnel.disable")}catch(f){console.error("Tailscale funnel disable failed:",f),e.tailscaleBusy=!1}}},wsProps:fb(e)})}if(e.filesPage){const l=yb(e);return zh({connected:e.connected,wsProps:Yt(e),loading:e.filesLoading,tree:e.filesTree,root:e.filesRoot,error:e.filesError,selectedPath:e.filesSelectedPath,selectedPaths:e.filesSelectedPaths,previewContent:e.filesPreviewContent,previewLoading:e.filesPreviewLoading,previewBinary:e.filesPreviewBinary,previewSize:e.filesPreviewSize,expandedDirs:e.filesExpandedDirs,message:e.filesMessage,uploadBusy:e.filesUploadBusy,reindexBusy:e.filesReindexBusy,memoryStatus:e.filesMemoryStatus,onRefresh:()=>yn(e,l),onReindex:()=>eh(e,l),onSelectFile:d=>Gp(e,d,l),onToggleSelectFile:d=>Qp(e,d,l),onToggleDir:d=>th(e,d),onUpload:(d,h)=>Zp(e,d,h,l),onDownload:d=>ec(e,d,l),onBulkDownload:()=>Yp(e,l),onDelete:d=>Jp(e,d,l),onMove:(d,h)=>tc(e,d,h,l),onMoveToDir:(d,h)=>Xp(e,d,h,l),searchQuery:e.filesSearchQuery,searchResults:e.filesSearchResults,searchLoading:e.filesSearchLoading,searchAgentId:e.filesSearchAgentId,agentIds:e.workspaceAgentIds??[],onSearch:d=>{const h=e.filesSearchAgentId??l;nh(e,d,h)},onSearchAgentChange:d=>{e.filesSearchAgentId=d},onSearchClear:()=>{ih(e)},onSearchQueryChange:d=>{e.filesSearchQuery=d}})}if(e.browserPage)return Dh({connected:e.connected,active:e.browserScreencastActive,loading:e.browserLoading,error:e.browserError,inputMode:e.browserInputMode,fullscreen:e.browserFullscreen,handoffPending:e.browserHandoffPending,handoffReason:e.browserHandoffReason,onStart:()=>Dv(e),onStop:()=>Ov(e),onToggleInput:()=>Fv(e),onToggleFullscreen:()=>Uv(e),onCompleteHandoff:()=>Bv(e),onCanvasMouseDown:l=>{const h=l.target.getBoundingClientRect(),f=ln().translateCoordinates(l.clientX-h.left,l.clientY-h.top);vs(e,"mousePressed",f.x,f.y,l.button===2?"right":l.button===1?"middle":"left")},onCanvasMouseUp:l=>{const h=l.target.getBoundingClientRect(),f=ln().translateCoordinates(l.clientX-h.left,l.clientY-h.top);vs(e,"mouseReleased",f.x,f.y)},onCanvasMouseMove:l=>{const d=ln();if(d.shouldThrottleMouseMove())return;const v=l.target.getBoundingClientRect(),f=d.translateCoordinates(l.clientX-v.left,l.clientY-v.top);vs(e,"mouseMoved",f.x,f.y)},onCanvasKeyDown:l=>{let d=0;l.altKey&&(d|=1),l.ctrlKey&&(d|=2),l.metaKey&&(d|=4),l.shiftKey&&(d|=8),bs(e,"keyDown",l.key,{code:l.code,modifiers:d||void 0}),l.key.length===1&&bs(e,"char",l.key,{text:l.key})},onCanvasKeyUp:l=>{bs(e,"keyUp",l.key,{code:l.code})}});if(e.adminsPage){const l=gb(e),d=mb(e);return af({connected:e.connected,wsProps:Yt(e),loading:e.adminsLoading,saving:e.adminsSaving,phones:e.adminPhones,error:e.adminsError,newPhone:e.adminsNewPhone,onRefresh:()=>_i(e,l),onAdd:h=>{gu(e,h,l,d).then(()=>{e.adminsError||(e.adminsNewPhone="")})},onRemove:h=>mu(e,h,l,d),onNewPhoneChange:h=>e.handleAdminsNewPhoneChange(h)})}if(e.customersPage){const l=vb(e);return df({connected:e.connected,wsProps:Yt(e),loading:e.customersLoading,saving:e.customersSaving,records:e.customersRecords,error:e.customersError,searchQuery:e.customersSearchQuery,editingId:e.customersEditingId,showAddForm:e.customersShowAddForm,newRecordPhone:e.customersNewPhone,newRecordName:e.customersNewName,onSearch:d=>e.customersSearchQuery=d,onSearchSubmit:()=>pt(e,l),onAdd:(d,h)=>yu(e,d,h,l),onDelete:d=>vu(e,d,l),onSetField:(d,h,v)=>bu(e,d,h,v,l),onDeleteField:(d,h)=>wu(e,d,h,l),onToggleExpand:d=>{e.customersEditingId=e.customersEditingId===d?null:d},onShowAddForm:()=>e.customersShowAddForm=!0,onCancelAddForm:()=>{e.customersShowAddForm=!1,e.customersNewPhone="",e.customersNewName=""},onNewRecordPhoneChange:d=>e.handleCustomersNewPhoneChange(d),onNewRecordNameChange:d=>e.handleCustomersNewNameChange(d),onRefresh:()=>pt(e,l)})}if(e.chatPage){const l=e.connected?null:"Disconnected from gateway.",d=Ya(e),h=e.chatAvatarUrl??d??null,v=(()=>{var k;const f=(k=e.configSnapshot)==null?void 0:k.config,b=f==null?void 0:f.publicChat;return(b==null?void 0:b.enabled)===!0})();return Vy({connected:e.connected,wsProps:Yt(e),publicChatEnabled:v,publicChatAccountId:e.selectedWorkspace??void 0,sessionKey:e.sessionKey,onSessionKeyChange:f=>{e.sessionKey=f,e.chatMessage="",e.chatAttachments=[],e.chatStream=null,e.chatInterimText=null,e.chatSuggestion=null,e.chatStreamStartedAt=null,e.chatRunId=null,e.chatQueue=[],e.resetToolStream(),e.resetChatScroll(),e.applySettings({...e.settings,sessionKey:f,lastActiveSessionKey:f}),e.loadAssistantIdentity(),_e(e),Ls(e)},thinkingLevel:e.chatThinkingLevel,showThinking:e.settings.chatShowThinking??!1,modelProvider:e.chatModelProvider,model:e.chatModel,modelCatalog:e.chatModelCatalog,onModelChange:f=>{Ln(e,e.sessionKey,{model:f}).then(()=>{_e(e)})},onThinkingLevelChange:f=>{Ln(e,e.sessionKey,{thinkingLevel:f==="off"?null:f}).then(()=>{_e(e)})},verboseLevel:e.chatVerboseLevel,fillerEnabled:e.chatFillerEnabled,suggestion:e.chatSuggestion,onSuggestionClick:f=>{e.chatMessage=f,e.chatSuggestion=null,e.handleSendChat()},onVerboseChange:f=>{Ln(e,e.sessionKey,{verboseLevel:f==="off"?null:f}).then(()=>{_e(e)})},onFillerChange:f=>{Ln(e,e.sessionKey,{fillerEnabled:f}).then(()=>{_e(e)})},loading:e.chatLoading,sending:e.chatSending,compactionStatus:e.compactionStatus,assistantAvatarUrl:h,messages:e.chatMessages,toolMessages:e.chatToolMessages,stream:e.chatStream,streamStartedAt:e.chatStreamStartedAt,interimText:e.chatInterimText,draft:e.chatMessage,queue:e.chatQueue,canSend:e.connected,disabledReason:l,error:e.lastError,sessions:e.sessionsResult,focusMode:!1,onRefresh:()=>(e.resetToolStream(),Promise.all([_e(e),Ls(e)])),onToggleFocusMode:()=>{},onChatScroll:f=>e.handleChatScroll(f),nearBottom:e.chatUserNearBottom,onDraftChange:f=>e.chatMessage=f,attachments:e.chatAttachments,onAttachmentsChange:f=>e.chatAttachments=f,onSend:()=>e.handleSendChat(),canAbort:!!e.chatRunId,onAbort:()=>{e.handleAbortChat()},onQueueRemove:f=>e.removeQueuedMessage(f),onNewSession:()=>e.handleSendChat("/new",{restoreDraft:!0}),sidebarOpen:e.sidebarOpen,sidebarContent:e.sidebarContent,sidebarError:e.sidebarError,splitRatio:e.splitRatio,onOpenSidebar:f=>e.handleOpenSidebar(f),onCloseSidebar:()=>e.handleCloseSidebar(),onSplitRatioChange:f=>e.handleSplitRatioChange(f),assistantName:e.assistantName,assistantAvatar:e.assistantAvatar})}return e.advancedPage?Av({connected:e.connected,wsProps:Yt(e),activeTab:e.advancedTab,onTabChange:l=>{e.advancedTab=l,l==="cron"&&e.loadCron(),l==="skills"&&ct(e,{clearMessages:!0}),l==="logs"&&(e.logsSubTab==="session"?rn(e,{reset:!0}):Tt(e,{reset:!0}))},cronProps:{loading:e.cronLoading,status:e.cronStatus,jobs:e.cronJobs,error:e.cronError,busy:e.cronBusy,form:e.cronForm,channels:(o=(r=e.channelsSnapshot)==null?void 0:r.channelMeta)!=null&&o.length?e.channelsSnapshot.channelMeta.map(l=>l.id):((a=e.channelsSnapshot)==null?void 0:a.channelOrder)??[],channelLabels:((c=e.channelsSnapshot)==null?void 0:c.channelLabels)??{},channelMeta:((u=e.channelsSnapshot)==null?void 0:u.channelMeta)??[],agentIds:(()=>{var d;const l=re(e);return((d=l==null?void 0:l.agents)==null?void 0:d.map(h=>h.id))??[]})(),runsJobId:e.cronRunsJobId,runs:e.cronRuns,newEventModalOpen:e.cronNewEventModal,onNewEventModalOpen:()=>{e.cronNewEventModal=!0},onNewEventModalClose:()=>{e.cronNewEventModal=!1},detailJobId:e.cronDetailJobId,onDetailOpen:l=>{e.cronDetailJobId=l.id,Ts(e,l.id)},onDetailClose:()=>{e.cronDetailJobId=null},onFormChange:l=>e.cronForm={...e.cronForm,...l},onRefresh:()=>e.loadCron(),onAdd:()=>{Xd(e).then(()=>{e.cronNewEventModal=!1})},onToggle:(l,d)=>Zd(e,l,d),onRun:l=>Jd(e,l),onRemove:l=>ep(e,l),onLoadRuns:l=>Ts(e,l)},skillsProps:{loading:e.skillsLoading,report:e.skillsReport,error:e.skillsError,filter:e.skillsFilter,edits:e.skillEdits,messages:e.skillMessages,busyKey:e.skillsBusyKey,onFilterChange:l=>e.skillsFilter=l,onRefresh:()=>ct(e,{clearMessages:!0}),onToggle:(l,d)=>Hl(e,l,d),onEdit:(l,d)=>jl(e,l,d),onSaveKey:l=>ql(e,l),onInstall:(l,d,h)=>Vl(e,l,d,h)},logsProps:{logsSubTab:e.logsSubTab,onSubTabChange:l=>{e.logsSubTab=l,l==="session"?rn(e,{reset:!0}):Tt(e,{reset:!0})},sessionLogsProps:{loading:e.sessionLogsLoading,error:e.sessionLogsError,entries:e.sessionLogsEntries,agents:e.sessionLogsAgents,filterText:e.sessionLogsFilterText,typeFilters:e.sessionLogsTypeFilters,agentFilters:e.sessionLogsAgentFilters,autoFollow:e.sessionLogsAutoFollow,onFilterTextChange:l=>e.sessionLogsFilterText=l,onTypeToggle:(l,d)=>{const h=e;h.sessionLogsTypeFilters={...h.sessionLogsTypeFilters,[l]:d}},onAgentToggle:(l,d)=>{const h=e;h.sessionLogsAgentFilters={...h.sessionLogsAgentFilters,[l]:d}},onToggleAutoFollow:l=>e.sessionLogsAutoFollow=l,onRefresh:()=>{rn(e,{reset:!0})},onExport:(l,d)=>e.exportSessionLogs(l,d),onScroll:l=>e.handleSessionLogsScroll(l)},loading:e.logsLoading,error:e.logsError,file:e.logsFile,entries:e.logsEntries,filterText:e.logsFilterText,levelFilters:e.logsLevelFilters,autoFollow:e.logsAutoFollow,truncated:e.logsTruncated,onFilterTextChange:l=>e.logsFilterText=l,onLevelToggle:(l,d)=>{e.logsLevelFilters={...e.logsLevelFilters,[l]:d}},onToggleAutoFollow:l=>e.logsAutoFollow=l,onRefresh:()=>Tt(e,{reset:!0}),onExport:(l,d)=>e.exportSessionLogs(l,d),onScroll:l=>e.handleLogsScroll(l)}}):(window.location.replace("/chat"),p``)}function $b(e){const t=new Date(e),n=t.toLocaleDateString("en-GB",{day:"2-digit",month:"short"}),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"});return`${n} ${i}`}function Xa(e){return e.startsWith("memory/public/")?"public":e.startsWith("memory/shared/")?"shared":"other"}function Eb(e,t,n){return p`
3178
3345
  <div class="audit-modal-overlay" @click=${s=>{s.target.classList.contains("audit-modal-overlay")&&n()}}>
3179
3346
  <div class="audit-modal-card">
3180
3347
  <div class="audit-modal-header">
@@ -3194,7 +3361,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3194
3361
  <a href="/files" class="audit-modal-path-link">${s.path}</a>
3195
3362
  </div>
3196
3363
  <div class="audit-modal-entry-meta">
3197
- ${Sb(s.timestamp)}
3364
+ ${$b(s.timestamp)}
3198
3365
  <span class="audit-modal-agent">${s.agentId}</span>
3199
3366
  </div>
3200
3367
  </div>
@@ -3206,7 +3373,7 @@ ${a.text}`:c.join(", "):a.text;t.push({kind:"message",key:`queue:${a.id}`,messag
3206
3373
  `}
3207
3374
  </div>
3208
3375
  </div>
3209
- `}const xb={trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0},$b={name:"",description:"",agentId:"",enabled:!0,scheduleKind:"every",scheduleAt:"",everyAmount:"30",everyUnit:"minutes",cronExpr:"0 7 * * *",cronTz:"",sessionTarget:"main",wakeMode:"next-heartbeat",payloadKind:"systemEvent",payloadText:"",deliver:!1,channel:"last",to:"",timeoutSeconds:"",postToMainPrefix:""};function Eb(e){e.basePath=ph();const t=qe();if(Mh(t.accentColor),window.scrollTo(0,0),rh(e),e.publicChat){const n=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__,i=(n==null?void 0:n.accountId)??"",s=i?i.charAt(0).toUpperCase()+i.slice(1):"Assistant";document.title=`Chat with ${s}`,Ee(e);return}if(e.setup){document.title=`${t.name} Setup`,Ee(e);return}if(e.filesPage){document.title=`${t.name} Files`,ah(e),Ee(e);return}if(e.browserPage){document.title=`${t.name} Browser`,Ee(e);return}if(e.adminsPage){document.title=`${t.name} Admins`,Ee(e);return}if(e.customersPage){document.title=`${t.name} Customers`,Ee(e);return}if(e.chatPage){document.title=`${t.name} Chat`,Ee(e);return}if(e.advancedPage){document.title=`${t.name} Advanced`,Ee(e);return}mh(e,!0),hh(e),fh(e),window.addEventListener("popstate",e.popStateHandler),ch(e),Ee(e),ih(e),e.tab==="logs"&&(e.logsSubTab==="session"?yr(e):gr(e)),e.tab==="debug"&&br(e)}function Cb(e){jd(e)}function Tb(e){var t;window.removeEventListener("popstate",e.popStateHandler),sh(e),mr(e),vr(e),wr(e),oh(e),lh(e),gh(e),(t=e.topbarObserver)==null||t.disconnect(),e.topbarObserver=null}function _b(e,t){if(!e.publicChat){if(e.filesPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleFilesLoad&&e.handleFilesLoad(),e.adminsPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdminsLoad&&e.handleAdminsLoad(),e.customersPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleCustomersLoad&&e.handleCustomersLoad(),e.chatPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleChatLoad&&e.handleChatLoad(),e.advancedPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdvancedLoad&&e.handleAdvancedLoad(),e.setup&&e.connected){const n=t.has("connected")&&t.get("connected")===!1;n&&e.handleLicenseStatusCheck&&e.licenseValid===null&&!e.licenseBusy&&e.handleLicenseStatusCheck(),n&&e.handleUpdateCheck&&e.handleUpdateCheck();const i=t.has("setupStep")&&e.setupStep==="auth";(n||i)&&e.setupStep==="auth"&&e.handleAuthStatusCheck&&e.authConnected===null&&!e.authBusy&&e.handleAuthStatusCheck(),e.setupStep==="whatsapp"&&t.has("setupStep")&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(r=>{e.channelsSnapshot=r,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1})),t.has("whatsappLoginConnected")&&e.whatsappLoginConnected===!0&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(s=>{e.channelsSnapshot=s,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1}))}if(e.tab==="chat"&&!e.advancedPage&&(t.has("chatMessages")||t.has("chatToolMessages")||t.has("chatStream")||t.has("chatLoading")||t.has("tab"))){const n=t.has("tab"),i=t.has("chatLoading")&&t.get("chatLoading")===!0&&e.chatLoading===!1;fn(e,n||i||!e.chatHasAutoScrolled)}e.tab==="logs"&&!e.advancedPage&&(t.has("logsEntries")||t.has("logsAutoFollow")||t.has("tab"))&&e.logsAutoFollow&&e.logsAtBottom&&bl(e,t.has("tab")||t.has("logsAutoFollow"))}}function Mb(e){const t={name:(e==null?void 0:e.name)??"",displayName:(e==null?void 0:e.displayName)??"",about:(e==null?void 0:e.about)??"",picture:(e==null?void 0:e.picture)??"",banner:(e==null?void 0:e.banner)??"",website:(e==null?void 0:e.website)??"",nip05:(e==null?void 0:e.nip05)??"",lud16:(e==null?void 0:e.lud16)??""};return{values:t,original:{...t},saving:!1,importing:!1,error:null,success:null,fieldErrors:{},showAdvanced:!!(e!=null&&e.banner||e!=null&&e.website||e!=null&&e.nip05||e!=null&&e.lud16)}}async function Pb(e,t,n){await sr(e,t,n),await V(e,!0)}async function Lb(e,t){await Sl(e,t),await V(e,!0)}async function Ib(e,t){await Al(e,t),await V(e,!0)}async function Rb(e,t){await xl(e,t)}async function Nb(e,t){await $l(e,t)}async function Db(e){await Vd(e),await _e(e),await V(e,!0)}async function Ob(e){await _e(e),await V(e,!0)}function Bb(e){if(!Array.isArray(e))return{};const t={};for(const n of e){if(typeof n!="string")continue;const[i,...s]=n.split(":");if(!i||s.length===0)continue;const r=i.trim(),o=s.join(":").trim();r&&o&&(t[r]=o)}return t}function wu(e){var n,i,s;return((s=(((i=(n=e.channelsSnapshot)==null?void 0:n.channelAccounts)==null?void 0:i.nostr)??[])[0])==null?void 0:s.accountId)??e.nostrProfileAccountId??"default"}function ku(e,t=""){return`/api/channels/nostr/${encodeURIComponent(e)}/profile${t}`}function Fb(e,t,n){e.nostrProfileAccountId=t,e.nostrProfileFormState=Mb(n??void 0)}function Ub(e){e.nostrProfileFormState=null,e.nostrProfileAccountId=null}function Wb(e,t,n){const i=e.nostrProfileFormState;i&&(e.nostrProfileFormState={...i,values:{...i.values,[t]:n},fieldErrors:{...i.fieldErrors,[t]:""}})}function Kb(e){const t=e.nostrProfileFormState;t&&(e.nostrProfileFormState={...t,showAdvanced:!t.showAdvanced})}async function zb(e){const t=e.nostrProfileFormState;if(!t||t.saving)return;const n=wu(e);e.nostrProfileFormState={...t,saving:!0,error:null,success:null,fieldErrors:{}};try{const i=await fetch(ku(n),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.values)}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const r=(s==null?void 0:s.error)??`Profile update failed (${i.status})`;e.nostrProfileFormState={...t,saving:!1,error:r,success:null,fieldErrors:Bb(s==null?void 0:s.details)};return}if(!s.persisted){e.nostrProfileFormState={...t,saving:!1,error:"Profile publish failed on all relays.",success:null};return}e.nostrProfileFormState={...t,saving:!1,error:null,success:"Profile published to relays.",fieldErrors:{},original:{...t.values}},await V(e,!0)}catch(i){e.nostrProfileFormState={...t,saving:!1,error:`Profile update failed: ${String(i)}`,success:null}}}async function jb(e){const t=e.nostrProfileFormState;if(!t||t.importing)return;const n=wu(e);e.nostrProfileFormState={...t,importing:!0,error:null,success:null};try{const i=await fetch(ku(n,"/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoMerge:!0})}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const c=(s==null?void 0:s.error)??`Profile import failed (${i.status})`;e.nostrProfileFormState={...t,importing:!1,error:c,success:null};return}const r=s.merged??s.imported??null,o=r?{...t.values,...r}:t.values,a=!!(o.banner||o.website||o.nip05||o.lud16);e.nostrProfileFormState={...t,importing:!1,values:o,error:null,success:s.saved?"Profile imported from relays. Review and publish.":"Profile imported. Review and publish.",showAdvanced:a},s.saved&&await V(e,!0)}catch(i){e.nostrProfileFormState={...t,importing:!1,error:`Profile import failed: ${String(i)}`,success:null}}}async function Hb(e){if(e.client){e.authBusy=!0,e.authMessage=null;try{const t=await e.client.request("auth.status",{});e.authConnected=t.connected,e.authExpiresIn=t.expiresIn??null,e.authMessage=t.message??null,t.connected&&(e.setupStep="whatsapp")}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to check auth status"}finally{e.authBusy=!1}}}async function qb(e){if(e.client){e.authBusy=!0,e.authMessage=null,e.authUrl=null,e.authConnected=null;try{const t=await e.client.request("auth.oauth.start",{provider:"anthropic"});e.authUrl=t.authUrl,e.authMessage=t.message??"Sign in with your Claude Pro account"}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to start auth flow"}finally{e.authBusy=!1}}}async function Vb(e,t){if(e.client){e.authBusy=!0,e.authMessage="Verifying code...";try{await e.client.request("auth.oauth.code",{code:t});const n=await e.client.request("auth.oauth.wait",{timeoutMs:3e4});n.connected?(e.authConnected=!0,e.authMessage=n.message??"Connected to Claude!",e.authUrl=null,e.authCodeInput=""):e.authMessage=n.message??"Still waiting for authorization..."}catch(n){e.authConnected=!1,e.authMessage=n instanceof Error?n.message:"Verification failed"}finally{e.authBusy=!1}}}function Gb(e,t){e.authCodeInput=t}function Qb(e){e.setupStep="whatsapp"}async function Yb(e){if(e.client){e.licenseBusy=!0,e.licenseMessage=null;try{const t=await e.client.request("license.status",{});e.licenseDeviceId=t.deviceId??null,e.licenseStoredKey=t.key??null,t.licensed?(e.licenseValid=!0,e.licenseTier=t.tier??null,e.setupStep="auth"):(e.licenseValid=null,e.setupStep="license")}catch(t){const n=t instanceof Error?t.message:String(t);n.includes("unknown method")?(e.licenseValid=!0,e.setupStep="auth"):(e.licenseValid=null,e.licenseMessage=n,e.setupStep="license")}finally{e.licenseBusy=!1}}}async function Xb(e){if(e.client&&e.licenseKey.trim()){e.licenseBusy=!0,e.licenseMessage=null,e.licenseValid=null;try{const t=await e.client.request("license.activate",{key:e.licenseKey.trim()});t.valid?(e.licenseValid=!0,e.licenseMessage=t.message??"License activated",e.licenseTier=t.tier??null,setTimeout(()=>{e.setupStep="auth"},1500)):(e.licenseValid=!1,e.licenseMessage=t.message??"Invalid license key")}catch(t){e.licenseValid=!1,e.licenseMessage=t instanceof Error?t.message:"Activation failed"}finally{e.licenseBusy=!1}}}async function Zb(e){if(e.client){e.licenseBusy=!0;try{await e.client.request("license.remove",{}),e.licenseValid=null,e.licenseKey="",e.licenseTier=null,e.licenseMessage=null,e.setupStep="license"}catch(t){e.licenseMessage=t instanceof Error?t.message:"Failed to remove license"}finally{e.licenseBusy=!1}}}function Jb(e,t){e.licenseKey=t}async function ew(e){var t,n;if(!(!e.client||!e.connected)&&!e.gatewayHealthLoading){e.gatewayHealthLoading=!0,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("health",{probe:!0});e.gatewayHealthy=i.ok===!0,e.gatewayHealthMessage=i.ok?`Healthy${i.durationMs?` (${i.durationMs}ms)`:""}`:"Unhealthy"}catch(i){e.gatewayHealthy=!1,e.gatewayHealthMessage=`Error: ${String(i)}`}finally{e.gatewayHealthLoading=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function tw(e){var t,n,i;if(!(!e.client||e.gatewayRestartBusy)){e.gatewayRestartBusy=!0,e.gatewayHealthMessage="Restarting...",(t=e.requestUpdate)==null||t.call(e);try{const s=await e.client.request("gateway.restart",{reason:"Manual restart from setup page",delayMs:1e3});if(s.ok&&((n=s.restart)!=null&&n.ok))e.gatewayHealthMessage="Restarting...",setTimeout(()=>{window.location.reload()},3e3);else throw new Error("Restart not scheduled")}catch(s){e.gatewayHealthMessage=`Restart failed: ${String(s)}`,e.gatewayRestartBusy=!1,(i=e.requestUpdate)==null||i.call(e)}}}var nw=Object.defineProperty,iw=Object.getOwnPropertyDescriptor,g=(e,t,n,i)=>{for(var s=i>1?void 0:i?iw(t,n):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(s=(i?o(t,n,s):o(s))||s);return i&&s&&nw(t,n,s),s};const Ss=od();function sw(){if(!window.location.search)return!1;const t=new URLSearchParams(window.location.search).get("onboarding");if(!t)return!1;const n=t.trim().toLowerCase();return n==="1"||n==="true"||n==="yes"||n==="on"}function rw(){const e=window.location.pathname;if(e==="/setup"||e.endsWith("/setup"))return!0;if(!window.location.search)return!1;const n=new URLSearchParams(window.location.search).get("setup");if(!n)return!1;const i=n.trim().toLowerCase();return i==="1"||i==="true"||i==="yes"||i==="on"}function ow(){const e=window.location.pathname;return e==="/files"||e.endsWith("/files")}function aw(){const e=window.location.pathname;return e==="/browser"||e.endsWith("/browser")}function lw(){const e=window.location.pathname;return e==="/admins"||e.endsWith("/admins")}function cw(){const e=window.location.pathname;return e==="/customers"||e.endsWith("/customers")}function uw(){const e=window.location.pathname;return e==="/chat"||e.endsWith("/chat")}function dw(){const e=window.location.pathname;return e==="/advanced"||e.endsWith("/advanced")}let f=class extends $t{constructor(){super(...arguments),this.settings=qi(),this.password="",this.tab="chat",this.onboarding=sw(),this.setup=rw(),this.filesPage=ow(),this.browserPage=aw(),this.adminsPage=lw(),this.customersPage=cw(),this.chatPage=uw(),this.advancedPage=dw(),this.advancedTab="cron",this.publicChat=!!window.__TASKMASTER_PUBLIC_CHAT__,this.publicChatConfig=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__??{},this.publicChatSessionKey=null,this.publicChatAuthenticated=!1,this.publicChatAuthStep="idle",this.connected=!1,this.accessState=uu,this.theme=this.settings.theme??"system",this.themeResolved="dark",this.hello=null,this.lastError=null,this.eventLog=[],this.eventLogBuffer=[],this.toolStreamSyncTimer=null,this.sidebarCloseTimer=null,this.assistantName=Ss.name,this.assistantAvatar=Ss.avatar,this.assistantAgentId=Ss.agentId??null,this.sessionKey=this.settings.sessionKey,this.chatLoading=!1,this.chatSending=!1,this.chatMessage="",this.chatMessages=[],this.chatToolMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.compactionStatus=null,this.chatAvatarUrl=null,this.chatThinkingLevel=null,this.chatModelProvider=null,this.chatModel=null,this.chatModelCatalog=[],this.chatVerboseLevel=null,this.chatFillerEnabled=null,this.chatQueue=[],this.chatAttachments=[],this.sidebarOpen=!1,this.sidebarContent=null,this.sidebarError=null,this.splitRatio=this.settings.splitRatio,this.nodesLoading=!1,this.nodes=[],this.devicesLoading=!1,this.devicesError=null,this.devicesList=null,this.execApprovalsLoading=!1,this.execApprovalsSaving=!1,this.execApprovalsDirty=!1,this.execApprovalsSnapshot=null,this.execApprovalsForm=null,this.execApprovalsSelectedAgent=null,this.execApprovalsTarget="gateway",this.execApprovalsTargetNodeId=null,this.execApprovalQueue=[],this.execApprovalBusy=!1,this.execApprovalError=null,this.configLoading=!1,this.configRaw=`{
3376
+ `}const Tb={trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0},Cb={name:"",description:"",agentId:"",enabled:!0,scheduleKind:"every",scheduleAt:"",everyAmount:"30",everyUnit:"minutes",cronExpr:"0 7 * * *",cronTz:"",sessionTarget:"main",wakeMode:"next-heartbeat",payloadKind:"systemEvent",payloadText:"",deliver:!1,channel:"last",to:"",timeoutSeconds:"",postToMainPrefix:""};function _b(e){e.basePath=hh();const t=Ve();if(Ph(t.accentColor),window.scrollTo(0,0),oh(e),e.publicChat){const n=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__,i=(n==null?void 0:n.accountId)??"",s=i?i.charAt(0).toUpperCase()+i.slice(1):"Assistant";document.title=`Chat with ${s}`,Te(e);return}if(e.setup){document.title=`${t.name} Setup`,Te(e);return}if(e.filesPage){document.title=`${t.name} Files`,lh(e),Te(e);return}if(e.browserPage){document.title=`${t.name} Browser`,Te(e);return}if(e.adminsPage){document.title=`${t.name} Admins`,Te(e);return}if(e.customersPage){document.title=`${t.name} Customers`,Te(e);return}if(e.chatPage){document.title=`${t.name} Chat`,Te(e);return}if(e.advancedPage){document.title=`${t.name} Advanced`,Te(e);return}yh(e,!0),fh(e),gh(e),window.addEventListener("popstate",e.popStateHandler),uh(e),Te(e),sh(e),e.tab==="logs"&&(e.logsSubTab==="session"?yr(e):gr(e)),e.tab==="debug"&&br(e)}function Mb(e){Hd(e)}function Pb(e){var t;window.removeEventListener("popstate",e.popStateHandler),rh(e),mr(e),vr(e),wr(e),ah(e),ch(e),mh(e),(t=e.topbarObserver)==null||t.disconnect(),e.topbarObserver=null}function Lb(e,t){if(!e.publicChat){if(e.filesPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleFilesLoad&&e.handleFilesLoad(),e.adminsPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdminsLoad&&e.handleAdminsLoad(),e.customersPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleCustomersLoad&&e.handleCustomersLoad(),e.chatPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleChatLoad&&e.handleChatLoad(),e.advancedPage&&e.connected&&t.has("connected")&&t.get("connected")===!1&&e.handleAdvancedLoad&&e.handleAdvancedLoad(),e.setup&&e.connected){const n=t.has("connected")&&t.get("connected")===!1;n&&e.handleLicenseStatusCheck&&e.licenseValid===null&&!e.licenseBusy&&e.handleLicenseStatusCheck(),n&&e.handleUpdateCheck&&e.handleUpdateCheck();const i=t.has("setupStep")&&e.setupStep==="auth";(n||i)&&e.setupStep==="auth"&&e.handleAuthStatusCheck&&e.authConnected===null&&!e.authBusy&&e.handleAuthStatusCheck(),e.setupStep==="whatsapp"&&t.has("setupStep")&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(r=>{e.channelsSnapshot=r,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1})),t.has("whatsappLoginConnected")&&e.whatsappLoginConnected===!0&&e.client&&!e.channelsLoading&&(e.channelsLoading=!0,e.client.request("channels.status",{probe:!0,timeoutMs:8e3}).then(s=>{e.channelsSnapshot=s,e.channelsLoading=!1}).catch(()=>{e.channelsLoading=!1}))}if(e.tab==="chat"&&!e.advancedPage&&(t.has("chatMessages")||t.has("chatToolMessages")||t.has("chatStream")||t.has("chatLoading")||t.has("tab"))){const n=t.has("tab"),i=t.has("chatLoading")&&t.get("chatLoading")===!0&&e.chatLoading===!1;fn(e,n||i||!e.chatHasAutoScrolled)}e.tab==="logs"&&!e.advancedPage&&(t.has("logsEntries")||t.has("logsAutoFollow")||t.has("tab"))&&e.logsAutoFollow&&e.logsAtBottom&&bl(e,t.has("tab")||t.has("logsAutoFollow"))}}function Ib(e){const t={name:(e==null?void 0:e.name)??"",displayName:(e==null?void 0:e.displayName)??"",about:(e==null?void 0:e.about)??"",picture:(e==null?void 0:e.picture)??"",banner:(e==null?void 0:e.banner)??"",website:(e==null?void 0:e.website)??"",nip05:(e==null?void 0:e.nip05)??"",lud16:(e==null?void 0:e.lud16)??""};return{values:t,original:{...t},saving:!1,importing:!1,error:null,success:null,fieldErrors:{},showAdvanced:!!(e!=null&&e.banner||e!=null&&e.website||e!=null&&e.nip05||e!=null&&e.lud16)}}async function Rb(e,t,n){await sr(e,t,n),await V(e,!0)}async function Nb(e,t){await Sl(e,t),await V(e,!0)}async function Db(e,t){await Al(e,t),await V(e,!0)}async function Ob(e,t){await xl(e,t)}async function Bb(e,t){await $l(e,t)}async function Fb(e){await Gd(e),await Me(e),await V(e,!0)}async function Ub(e){await Me(e),await V(e,!0)}function Wb(e){if(!Array.isArray(e))return{};const t={};for(const n of e){if(typeof n!="string")continue;const[i,...s]=n.split(":");if(!i||s.length===0)continue;const r=i.trim(),o=s.join(":").trim();r&&o&&(t[r]=o)}return t}function ku(e){var n,i,s;return((s=(((i=(n=e.channelsSnapshot)==null?void 0:n.channelAccounts)==null?void 0:i.nostr)??[])[0])==null?void 0:s.accountId)??e.nostrProfileAccountId??"default"}function Su(e,t=""){return`/api/channels/nostr/${encodeURIComponent(e)}/profile${t}`}function Kb(e,t,n){e.nostrProfileAccountId=t,e.nostrProfileFormState=Ib(n??void 0)}function zb(e){e.nostrProfileFormState=null,e.nostrProfileAccountId=null}function jb(e,t,n){const i=e.nostrProfileFormState;i&&(e.nostrProfileFormState={...i,values:{...i.values,[t]:n},fieldErrors:{...i.fieldErrors,[t]:""}})}function Hb(e){const t=e.nostrProfileFormState;t&&(e.nostrProfileFormState={...t,showAdvanced:!t.showAdvanced})}async function qb(e){const t=e.nostrProfileFormState;if(!t||t.saving)return;const n=ku(e);e.nostrProfileFormState={...t,saving:!0,error:null,success:null,fieldErrors:{}};try{const i=await fetch(Su(n),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.values)}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const r=(s==null?void 0:s.error)??`Profile update failed (${i.status})`;e.nostrProfileFormState={...t,saving:!1,error:r,success:null,fieldErrors:Wb(s==null?void 0:s.details)};return}if(!s.persisted){e.nostrProfileFormState={...t,saving:!1,error:"Profile publish failed on all relays.",success:null};return}e.nostrProfileFormState={...t,saving:!1,error:null,success:"Profile published to relays.",fieldErrors:{},original:{...t.values}},await V(e,!0)}catch(i){e.nostrProfileFormState={...t,saving:!1,error:`Profile update failed: ${String(i)}`,success:null}}}async function Vb(e){const t=e.nostrProfileFormState;if(!t||t.importing)return;const n=ku(e);e.nostrProfileFormState={...t,importing:!0,error:null,success:null};try{const i=await fetch(Su(n,"/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoMerge:!0})}),s=await i.json().catch(()=>null);if(!i.ok||(s==null?void 0:s.ok)===!1||!s){const c=(s==null?void 0:s.error)??`Profile import failed (${i.status})`;e.nostrProfileFormState={...t,importing:!1,error:c,success:null};return}const r=s.merged??s.imported??null,o=r?{...t.values,...r}:t.values,a=!!(o.banner||o.website||o.nip05||o.lud16);e.nostrProfileFormState={...t,importing:!1,values:o,error:null,success:s.saved?"Profile imported from relays. Review and publish.":"Profile imported. Review and publish.",showAdvanced:a},s.saved&&await V(e,!0)}catch(i){e.nostrProfileFormState={...t,importing:!1,error:`Profile import failed: ${String(i)}`,success:null}}}async function Gb(e){if(e.client){e.authBusy=!0,e.authMessage=null;try{const t=await e.client.request("auth.status",{});e.authConnected=t.connected,e.authExpiresIn=t.expiresIn??null,e.authMessage=t.message??null,t.connected&&(e.setupStep="whatsapp")}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to check auth status"}finally{e.authBusy=!1}}}async function Qb(e){if(e.client){e.authBusy=!0,e.authMessage=null,e.authUrl=null,e.authConnected=null;try{const t=await e.client.request("auth.oauth.start",{provider:"anthropic"});e.authUrl=t.authUrl,e.authMessage=t.message??"Sign in with your Claude Pro account"}catch(t){e.authConnected=!1,e.authMessage=t instanceof Error?t.message:"Failed to start auth flow"}finally{e.authBusy=!1}}}async function Yb(e,t){if(e.client){e.authBusy=!0,e.authMessage="Verifying code...";try{await e.client.request("auth.oauth.code",{code:t});const n=await e.client.request("auth.oauth.wait",{timeoutMs:3e4});n.connected?(e.authConnected=!0,e.authMessage=n.message??"Connected to Claude!",e.authUrl=null,e.authCodeInput=""):e.authMessage=n.message??"Still waiting for authorization..."}catch(n){e.authConnected=!1,e.authMessage=n instanceof Error?n.message:"Verification failed"}finally{e.authBusy=!1}}}function Xb(e,t){e.authCodeInput=t}function Zb(e){e.setupStep="whatsapp"}async function Jb(e){if(e.client){e.licenseBusy=!0,e.licenseMessage=null;try{const t=await e.client.request("license.status",{});e.licenseDeviceId=t.deviceId??null,e.licenseStoredKey=t.key??null,t.licensed?(e.licenseValid=!0,e.licenseTier=t.tier??null,e.setupStep="auth"):(e.licenseValid=null,e.setupStep="license")}catch(t){const n=t instanceof Error?t.message:String(t);n.includes("unknown method")?(e.licenseValid=!0,e.setupStep="auth"):(e.licenseValid=null,e.licenseMessage=n,e.setupStep="license")}finally{e.licenseBusy=!1}}}async function ew(e){if(e.client&&e.licenseKey.trim()){e.licenseBusy=!0,e.licenseMessage=null,e.licenseValid=null;try{const t=await e.client.request("license.activate",{key:e.licenseKey.trim()});t.valid?(e.licenseValid=!0,e.licenseMessage=t.message??"License activated",e.licenseTier=t.tier??null,setTimeout(()=>{e.setupStep="auth"},1500)):(e.licenseValid=!1,e.licenseMessage=t.message??"Invalid license key")}catch(t){e.licenseValid=!1,e.licenseMessage=t instanceof Error?t.message:"Activation failed"}finally{e.licenseBusy=!1}}}async function tw(e){if(e.client){e.licenseBusy=!0;try{await e.client.request("license.remove",{}),e.licenseValid=null,e.licenseKey="",e.licenseTier=null,e.licenseMessage=null,e.setupStep="license"}catch(t){e.licenseMessage=t instanceof Error?t.message:"Failed to remove license"}finally{e.licenseBusy=!1}}}function nw(e,t){e.licenseKey=t}async function iw(e){var t,n;if(!(!e.client||!e.connected)&&!e.gatewayHealthLoading){e.gatewayHealthLoading=!0,(t=e.requestUpdate)==null||t.call(e);try{const i=await e.client.request("health",{probe:!0});e.gatewayHealthy=i.ok===!0,e.gatewayHealthMessage=i.ok?`Healthy${i.durationMs?` (${i.durationMs}ms)`:""}`:"Unhealthy"}catch(i){e.gatewayHealthy=!1,e.gatewayHealthMessage=`Error: ${String(i)}`}finally{e.gatewayHealthLoading=!1,(n=e.requestUpdate)==null||n.call(e)}}}async function sw(e){var t,n,i;if(!(!e.client||e.gatewayRestartBusy)){e.gatewayRestartBusy=!0,e.gatewayHealthMessage="Restarting...",(t=e.requestUpdate)==null||t.call(e);try{const s=await e.client.request("gateway.restart",{reason:"Manual restart from setup page",delayMs:1e3});if(s.ok&&((n=s.restart)!=null&&n.ok))e.gatewayHealthMessage="Restarting...",setTimeout(()=>{window.location.reload()},3e3);else throw new Error("Restart not scheduled")}catch(s){e.gatewayHealthMessage=`Restart failed: ${String(s)}`,e.gatewayRestartBusy=!1,(i=e.requestUpdate)==null||i.call(e)}}}var rw=Object.defineProperty,ow=Object.getOwnPropertyDescriptor,m=(e,t,n,i)=>{for(var s=i>1?void 0:i?ow(t,n):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(s=(i?o(t,n,s):o(s))||s);return i&&s&&rw(t,n,s),s};const Ss=ad();function aw(){if(!window.location.search)return!1;const t=new URLSearchParams(window.location.search).get("onboarding");if(!t)return!1;const n=t.trim().toLowerCase();return n==="1"||n==="true"||n==="yes"||n==="on"}function lw(){const e=window.location.pathname;if(e==="/setup"||e.endsWith("/setup"))return!0;if(!window.location.search)return!1;const n=new URLSearchParams(window.location.search).get("setup");if(!n)return!1;const i=n.trim().toLowerCase();return i==="1"||i==="true"||i==="yes"||i==="on"}function cw(){const e=window.location.pathname;return e==="/files"||e.endsWith("/files")}function uw(){const e=window.location.pathname;return e==="/browser"||e.endsWith("/browser")}function dw(){const e=window.location.pathname;return e==="/admins"||e.endsWith("/admins")}function pw(){const e=window.location.pathname;return e==="/customers"||e.endsWith("/customers")}function hw(){const e=window.location.pathname;return e==="/chat"||e.endsWith("/chat")}function fw(){const e=window.location.pathname;return e==="/advanced"||e.endsWith("/advanced")}let g=class extends Et{constructor(){super(...arguments),this.settings=qi(),this.password="",this.tab="chat",this.onboarding=aw(),this.setup=lw(),this.filesPage=cw(),this.browserPage=uw(),this.adminsPage=dw(),this.customersPage=pw(),this.chatPage=hw(),this.advancedPage=fw(),this.advancedTab="cron",this.publicChat=!!window.__TASKMASTER_PUBLIC_CHAT__,this.publicChatConfig=window.__TASKMASTER_PUBLIC_CHAT_CONFIG__??{},this.publicChatSessionKey=null,this.publicChatAuthenticated=!1,this.publicChatAuthStep="idle",this.connected=!1,this.accessState=du,this.theme=this.settings.theme??"system",this.themeResolved="dark",this.hello=null,this.lastError=null,this.eventLog=[],this.eventLogBuffer=[],this.toolStreamSyncTimer=null,this.sidebarCloseTimer=null,this.assistantName=Ss.name,this.assistantAvatar=Ss.avatar,this.assistantAgentId=Ss.agentId??null,this.sessionKey=this.settings.sessionKey,this.chatLoading=!1,this.chatSending=!1,this.chatMessage="",this.chatMessages=[],this.chatToolMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.compactionStatus=null,this.chatAvatarUrl=null,this.chatThinkingLevel=null,this.chatModelProvider=null,this.chatModel=null,this.chatModelCatalog=[],this.chatVerboseLevel=null,this.chatFillerEnabled=null,this.chatQueue=[],this.chatAttachments=[],this.sidebarOpen=!1,this.sidebarContent=null,this.sidebarError=null,this.splitRatio=this.settings.splitRatio,this.nodesLoading=!1,this.nodes=[],this.devicesLoading=!1,this.devicesError=null,this.devicesList=null,this.execApprovalsLoading=!1,this.execApprovalsSaving=!1,this.execApprovalsDirty=!1,this.execApprovalsSnapshot=null,this.execApprovalsForm=null,this.execApprovalsSelectedAgent=null,this.execApprovalsTarget="gateway",this.execApprovalsTargetNodeId=null,this.execApprovalQueue=[],this.execApprovalBusy=!1,this.execApprovalError=null,this.configLoading=!1,this.configRaw=`{
3210
3377
  }
3211
- `,this.configRawOriginal="",this.configValid=null,this.configIssues=[],this.configSaving=!1,this.configApplying=!1,this.updateRunning=!1,this.applySessionKey=this.settings.lastActiveSessionKey,this.configSnapshot=null,this.configSchema=null,this.configSchemaVersion=null,this.configSchemaLoading=!1,this.configUiHints={},this.configForm=null,this.configFormOriginal=null,this.configFormDirty=!1,this.configFormMode="form",this.configSearchQuery="",this.configActiveSection=null,this.configActiveSubsection=null,this.channelsLoading=!1,this.channelsSnapshot=null,this.channelsError=null,this.channelsLastSuccess=null,this.whatsappLoginMessage=null,this.whatsappLoginQrDataUrl=null,this.whatsappLoginConnected=null,this.whatsappBusy=!1,this.whatsappActiveQrAccountId=null,this.whatsappPairedPhone=null,this.addingWhatsAppAccount=!1,this.newWhatsAppAccountName="",this.whatsappAccountError=null,this.whatsappAccountSaving=!1,this.whatsappSettingsOpen=!1,this.publicChatToggleBusy=!1,this.licenseKey="",this.licenseBusy=!1,this.licenseValid=null,this.licenseMessage=null,this.licenseTier=null,this.licenseDeviceId=null,this.licenseStoredKey=null,this.licenseRemoveConfirm=!1,this.authConnected=null,this.authBusy=!1,this.authMessage=null,this.authUrl=null,this.authCodeInput="",this.authExpiresIn=null,this.setupStep="license",this.gatewayHealthy=null,this.gatewayHealthLoading=!1,this.gatewayHealthMessage=null,this.gatewayRestartBusy=!1,this.updateAvailable=null,this.currentVersion=null,this.latestVersion=null,this.updateChecking=!1,this.updateMessage=null,this.updateProgressSteps=[],this.updateLastResult=null,this.uninstallConfirm=!1,this.uninstallBusy=!1,this.uninstallDone=!1,this.uninstallError=null,this.uninstallConfirmText="",this.nostrProfileFormState=null,this.nostrProfileAccountId=null,this.presenceLoading=!1,this.presenceEntries=[],this.presenceError=null,this.presenceStatus=null,this.agentsLoading=!1,this.agentsList=null,this.agentsError=null,this.sessionsLoading=!1,this.sessionsResult=null,this.sessionsError=null,this.cronLoading=!1,this.cronJobs=[],this.cronStatus=null,this.cronError=null,this.cronForm={...$b},this.cronRunsJobId=null,this.cronRuns=[],this.cronBusy=!1,this.cronNewEventModal=!1,this.cronDetailJobId=null,this.browserScreencastActive=!1,this.browserScreencastFrame=null,this.browserScreencastMetadata=null,this.browserHandoffPending=!1,this.browserHandoffReason=null,this.browserHandoffId=null,this.browserInputMode=!1,this.browserFullscreen=!1,this.browserLoading=!1,this.browserError=null,this.filesLoading=!1,this.filesTree=[],this.filesRoot="",this.filesError=null,this.filesSelectedPath=null,this.filesSelectedPaths=new Set,this.filesPreviewContent=null,this.filesPreviewLoading=!1,this.filesPreviewBinary=!1,this.filesPreviewSize=null,this.filesExpandedDirs=new Set,this.filesMessage=null,this.filesUploadBusy=!1,this.filesReindexBusy=!1,this.filesMemoryStatus=null,this.embeddingDownloading=!1,this.embeddingPollTimer=null,this.filesSearchQuery="",this.filesSearchResults=null,this.filesSearchLoading=!1,this.filesSearchAgentId=null,this.auditEntries=[],this.auditLoading=!1,this.auditModalOpen=!1,this.skillsLoading=!1,this.skillsReport=null,this.skillsError=null,this.skillsFilter="",this.skillEdits={},this.skillsBusyKey=null,this.skillMessages={},this.adminsLoading=!1,this.adminPhones=[],this.adminsError=null,this.adminsSaving=!1,this.adminsNewPhone="",this.customersLoading=!1,this.customersSaving=!1,this.customersRecords=[],this.customersError=null,this.customersSearchQuery="",this.customersEditingId=null,this.customersShowAddForm=!1,this.customersNewPhone="",this.customersNewName="",this.imessageEnableConfirm=!1,this.imessageEnabling=!1,this.infoModalOpen=null,this.workspaces=[],this.workspacesLoading=!1,this.workspacesError=null,this.selectedWorkspace=null,this.addingWorkspace=!1,this.newWorkspaceName="",this.newWorkspacePath="",this.newWorkspacePin="",this.accountPinModalOpen=!1,this.accountPinBusy=!1,this.accountPinError=null,this.accountPinSuccess=null,this.apiKeyProviders=[],this.apiKeyModalOpen=!1,this.apiKeyBusy=!1,this.apiKeyError=null,this.apiKeySuccess=null,this.apiKeySavingProvider=null,this.authApiKeyMode=!1,this.authApiKeyInput="",this.authApiKeyBusy=!1,this.authApiKeyError=null,this.pinChanging=null,this.pinChangeBusy=!1,this.pinChangeError=null,this.loginChangePinMode=!1,this.changePinBusy=!1,this.changePinError=null,this.changePinSuccess=null,this.workspaceSaving=!1,this.workspaceRemoveConfirm=null,this.renamingWorkspace=!1,this.renameWorkspaceName="",this.debugLoading=!1,this.debugStatus=null,this.debugHealth=null,this.debugModels=[],this.debugHeartbeat=null,this.debugCallMethod="",this.debugCallParams="{}",this.debugCallResult=null,this.debugCallError=null,this.logsLoading=!1,this.logsError=null,this.logsFile=null,this.logsEntries=[],this.logsFilterText="",this.logsLevelFilters={...xb},this.logsAutoFollow=!0,this.logsTruncated=!1,this.logsCursor=null,this.logsLastFetchAt=null,this.logsLimit=500,this.logsMaxBytes=25e4,this.logsAtBottom=!0,this.logsSubTab="session",this.sessionLogsLoading=!1,this.sessionLogsError=null,this.sessionLogsEntries=[],this.sessionLogsFilterText="",this.sessionLogsTypeFilters={user:!0,assistant:!0,tool:!0,thinking:!0,error:!0,system:!0},this.sessionLogsAgentFilters={},this.sessionLogsAgents=[],this.sessionLogsAutoFollow=!0,this.sessionLogsCursors={},this.sessionLogsLastFetchAt=null,this.sessionLogsAtBottom=!0,this.client=null,this.chatScrollFrame=null,this.chatScrollTimeout=null,this.chatHasAutoScrolled=!1,this.chatUserNearBottom=!0,this.nodesPollInterval=null,this.logsPollInterval=null,this.sessionLogsPollInterval=null,this.debugPollInterval=null,this.auditPollInterval=null,this.logsScrollFrame=null,this.toolStreamById=new Map,this.toolStreamOrder=[],this.basePath="",this.popStateHandler=()=>yh(this),this.themeMedia=null,this.themeMediaHandler=null,this.topbarObserver=null}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Eb(this)}firstUpdated(){Cb(this)}disconnectedCallback(){this.stopEmbeddingPoll(),Tb(this),super.disconnectedCallback()}startEmbeddingPoll(){if(this.embeddingPollTimer!=null)return;const e=async()=>{if(!(!this.client||!this.connected)){try{const t=await this.client.request("memory.status",{});if((t==null?void 0:t.embeddingState)==="downloading")this.embeddingDownloading=!0;else{this.embeddingDownloading&&(this.embeddingDownloading=!1),this.stopEmbeddingPoll();return}}catch{this.embeddingDownloading=!1,this.stopEmbeddingPoll();return}this.embeddingPollTimer=window.setTimeout(e,3e3)}};e()}stopEmbeddingPoll(){this.embeddingPollTimer!=null&&(window.clearTimeout(this.embeddingPollTimer),this.embeddingPollTimer=null)}updated(e){_b(this,e)}connect(){Ee(this)}handleChatScroll(e){Bd(this,e)}handleLogsScroll(e){Fd(this,e)}handleSessionLogsScroll(e){Ud(this,e)}exportLogs(e,t){Kd(e,t)}exportSessionLogs(e,t){zd(e,t)}resetToolStream(){ir(this)}resetChatScroll(){Wd(this)}async loadAssistantIdentity(){await Qs(this)}applySettings(e){ze(this,e)}setTab(e){uh(this,e)}setTheme(e,t){dh(this,e,t)}async loadOverview(){await rc(this)}async loadCron(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.cronForm={...this.cronForm,accountId:(e==null?void 0:e.whatsappAccountId)??void 0},await kr(this)}async handleAbortChat(){await ac(this)}removeQueuedMessage(e){kh(this,e)}async handleSendChat(e,t){await Sh(this,e,t)}async handleWhatsAppStart(e,t){await Pb(this,e,t)}async handleWhatsAppWait(e){await Lb(this,e)}async handleWhatsAppLogout(e){await Ib(this,e)}async handleAddWhatsAppAccount(e){await Rb(this,e)}async handleRemoveWhatsAppAccount(e){await Nb(this,e)}async handleAccessCheck(){await Qa(this)}async handlePinSubmit(e,t){await sb(this,e,t),this.accessState.authenticated&&this.accessState.workspace&&this.handleWorkspaceSelect(this.accessState.workspace)}async handleSetMasterPin(e){await rb(this,e)}async handleLogout(){await ab(this)}toggleChangePinMode(){this.loginChangePinMode=!this.loginChangePinMode,this.changePinError=null,this.changePinSuccess=null}async handleChangePin(e,t,n){if(this.client){this.changePinBusy=!0,this.changePinError=null,this.changePinSuccess=null;try{const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.changePinError=i.message??"Incorrect current PIN",this.changePinBusy=!1;return}e==="__master__"?await this.client.request("access.setMasterPin",{pin:n}):await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.changePinSuccess="PIN changed successfully",this.changePinBusy=!1,setTimeout(()=>{this.loginChangePinMode=!1,this.changePinSuccess=null},2e3)}catch{this.changePinError="Failed to change PIN",this.changePinBusy=!1}}}async handleAccountPinSave(e,t,n){if(this.client){this.accountPinBusy=!0,this.accountPinError=null,this.accountPinSuccess=null;try{if(t!==null){const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.accountPinError=i.message??"Incorrect current PIN",this.accountPinBusy=!1;return}}await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.accountPinSuccess="PIN saved",this.accountPinBusy=!1,await Qa(this),setTimeout(()=>{this.accountPinModalOpen=!1,this.accountPinSuccess=null,this.accountPinError=null},1500)}catch{this.accountPinError="Failed to save PIN",this.accountPinBusy=!1}}}async handleLicenseStatusCheck(){await Yb(this)}async handleLicenseActivate(){await Xb(this)}async handleLicenseRemove(){await Zb(this)}handleLicenseKeyChange(e){Jb(this,e)}async handleAuthStatusCheck(){await Hb(this)}async handleAuthStart(){await qb(this)}async handleAuthSubmitCode(e){await Vb(this,e)}handleAuthCodeChange(e){Gb(this,e)}handleSkipToWhatsApp(){Qb(this)}async handleGatewayHealthCheck(){await ew(this)}async handleGatewayRestart(){await tw(this)}async handleUpdateCheck(){await ou(this)}async handleUpdateRun(){await zv(this)}handleUpdateDismissResult(){qv(this)}handleUninstallConfirm(){this.uninstallConfirm=!0,this.uninstallConfirmText=""}handleUninstallCancel(){this.uninstallConfirm=!1,this.uninstallConfirmText="",this.uninstallError=null}handleUninstallConfirmTextChange(e){this.uninstallConfirmText=e}async handleUninstallRun(){const{runUninstall:e}=await ie(async()=>{const{runUninstall:t}=await Promise.resolve().then(()=>Ro);return{runUninstall:t}},void 0,import.meta.url);await e(this)}handleUninstallDismiss(){ie(async()=>{const{clearUninstallDone:e}=await Promise.resolve().then(()=>Ro);return{clearUninstallDone:e}},void 0,import.meta.url).then(({clearUninstallDone:e})=>{e()}),this.uninstallDone=!1,this.uninstallConfirm=!1,this.uninstallConfirmText=""}async loadAuditEntries(){await Zl(this)}async clearAudit(){await qp(this),this.auditModalOpen=!1}handleFilesLoad(){var n;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((n=e==null?void 0:e.agents)==null?void 0:n.map(i=>i.id))??void 0;const t=this.resolveFilesAgentId();yn(this,t),fr(this,t)}handleAdminsLoad(){const e=this.resolveAdminAgentId();ie(async()=>{const{loadAdmins:t}=await Promise.resolve().then(()=>cb);return{loadAdmins:t}},void 0,import.meta.url).then(({loadAdmins:t})=>{t(this,e)})}resolveAdminAgentId(){const e=this.getSelectedWorkspaceInfo();if(!e)return;const t=e.agents.find(n=>n.id.endsWith("-admin")||n.id==="admin");return t==null?void 0:t.id}resolveFilesAgentId(){var t;const e=this.getSelectedWorkspaceInfo();if(e)return(t=e.agents[0])==null?void 0:t.id}handleChatLoad(){const e=this.resolveAdminAgentId();if(e){const t=`agent:${e}:main`;t!==this.sessionKey&&(this.sessionKey=t,this.chatMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatRunId=null,this.chatSuggestion=null,this.applySettings({...this.settings,sessionKey:t,lastActiveSessionKey:t}),this.loadAssistantIdentity())}ie(async()=>{const{loadChatHistory:t}=await Promise.resolve().then(()=>$s);return{loadChatHistory:t}},void 0,import.meta.url).then(({loadChatHistory:t})=>{t(this)})}handleAdvancedLoad(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.sessionLogsEntries=[],this.sessionLogsCursors={},this.sessionLogsAgents=[],this.advancedTab==="cron"&&this.loadCron(),this.advancedTab==="logs"&&(this.logsSubTab==="session"?ie(async()=>{const{loadSessionLogs:n}=await Promise.resolve().then(()=>Xl);return{loadSessionLogs:n}},void 0,import.meta.url).then(({loadSessionLogs:n})=>{n(this,{reset:!0})}):ie(async()=>{const{loadLogs:n}=await Promise.resolve().then(()=>rp);return{loadLogs:n}},void 0,import.meta.url).then(({loadLogs:n})=>{n(this,{reset:!0})})),this.advancedTab==="skills"&&ie(async()=>{const{loadSkills:n}=await Promise.resolve().then(()=>Fp);return{loadSkills:n}},void 0,import.meta.url).then(({loadSkills:n})=>{n(this,{clearMessages:!0})})}async handleChannelConfigSave(){await Db(this)}async handleChannelConfigReload(){await Ob(this)}handleNostrProfileEdit(e,t){Fb(this,e,t)}handleNostrProfileCancel(){Ub(this)}handleNostrProfileFieldChange(e,t){Wb(this,e,t)}async handleNostrProfileSave(){await zb(this)}async handleNostrProfileImport(){await jb(this)}handleNostrProfileToggleAdvanced(){Kb(this)}async handleExecApprovalDecision(e){const t=this.execApprovalQueue[0];if(!(!t||!this.client||this.execApprovalBusy)){this.execApprovalBusy=!0,this.execApprovalError=null;try{await this.client.request("exec.approval.resolve",{id:t.id,decision:e}),this.execApprovalQueue=this.execApprovalQueue.filter(n=>n.id!==t.id)}catch(n){this.execApprovalError=`Exec approval failed: ${String(n)}`}finally{this.execApprovalBusy=!1}}}handleOpenSidebar(e){this.sidebarCloseTimer!=null&&(window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=null),this.sidebarContent=e,this.sidebarError=null,this.sidebarOpen=!0}handleCloseSidebar(){this.sidebarOpen=!1,this.sidebarCloseTimer!=null&&window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=window.setTimeout(()=>{this.sidebarOpen||(this.sidebarContent=null,this.sidebarError=null,this.sidebarCloseTimer=null)},200)}handleSplitRatioChange(e){const t=Math.max(.4,Math.min(.7,e));this.splitRatio=t,this.applySettings({...this.settings,splitRatio:t})}handleAdminsNewPhoneChange(e){this.adminsNewPhone=e,this.adminsError&&(this.adminsError=null)}handleCustomersLoad(){const e=this.selectedWorkspace??void 0;ie(async()=>{const{loadCustomers:t}=await Promise.resolve().then(()=>ub);return{loadCustomers:t}},void 0,import.meta.url).then(({loadCustomers:t})=>{t(this,e)})}handleCustomersNewPhoneChange(e){this.customersNewPhone=e,this.customersError&&(this.customersError=null)}handleCustomersNewNameChange(e){this.customersNewName=e,this.customersError&&(this.customersError=null)}async handleWorkspacesLoad(){const{loadWorkspaces:e}=await ie(async()=>{const{loadWorkspaces:t}=await Promise.resolve().then(()=>jn);return{loadWorkspaces:t}},void 0,import.meta.url);await e(this)}async handleWorkspaceCreate(e,t){const{createWorkspace:n}=await ie(async()=>{const{createWorkspace:s}=await Promise.resolve().then(()=>jn);return{createWorkspace:s}},void 0,import.meta.url),{loadChannels:i}=await ie(async()=>{const{loadChannels:s}=await Promise.resolve().then(()=>ep);return{loadChannels:s}},void 0,import.meta.url);await n(this,{name:e,workspacePath:t,onCreated:s=>{if(!s.whatsappAccountId)return;const r=s.whatsappAccountId;this.handleWorkspaceSelect(e),setTimeout(async()=>{try{await i(this,!0),await this.handleWhatsAppStart(!0,r),this.whatsappLoginQrDataUrl&&(await this.handleWhatsAppWait(r),await i(this,!0),await this.handleWorkspacesLoad())}catch{}this.requestUpdate()},3e3)}})}async handleWorkspaceRemove(e){const{removeWorkspace:t}=await ie(async()=>{const{removeWorkspace:n}=await Promise.resolve().then(()=>jn);return{removeWorkspace:n}},void 0,import.meta.url);await t(this,e)}handleWorkspaceRenameStart(){const e=this.getSelectedWorkspaceInfo();this.renameWorkspaceName=(e==null?void 0:e.displayName)??(e==null?void 0:e.name)??"",this.renamingWorkspace=!0}handleWorkspaceRenameCancel(){this.renamingWorkspace=!1,this.renameWorkspaceName=""}async handleWorkspaceRename(e,t){const{renameWorkspace:n}=await ie(async()=>{const{renameWorkspace:i}=await Promise.resolve().then(()=>jn);return{renameWorkspace:i}},void 0,import.meta.url);await n(this,e,t),this.renamingWorkspace=!1,this.renameWorkspaceName=""}handleWorkspaceSelect(e){this.selectedWorkspace=e,localStorage.setItem("taskmaster-selected-workspace",e),ko(e),this.settings=qi(),this.chatMessage="",this.chatAttachments=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.chatQueue=[],this.lastError=null,this.reloadCurrentPageData()}getSelectedWorkspaceInfo(){return this.selectedWorkspace?this.workspaces.find(e=>e.name===this.selectedWorkspace)??null:null}reloadCurrentPageData(){this.loadAuditEntries(),this.adminsPage?this.handleAdminsLoad():this.customersPage?this.handleCustomersLoad():this.filesPage?this.handleFilesLoad():this.chatPage?this.handleChatLoad():this.advancedPage&&this.handleAdvancedLoad()}initWorkspaceSelection(){if(this.workspaces.length===0){this.reloadCurrentPageData();return}const e=localStorage.getItem("taskmaster-selected-workspace"),t=e?this.workspaces.find(n=>n.name===e):null;if(t)this.selectedWorkspace=t.name;else{const n=this.workspaces.find(i=>i.isDefault)??this.workspaces[0];this.selectedWorkspace=n.name,localStorage.setItem("taskmaster-selected-workspace",n.name)}ko(this.selectedWorkspace),this.settings=qi(),this.reloadCurrentPageData()}render(){return p`${kb(this)}${this.auditModalOpen?Ab(this.auditEntries,()=>this.clearAudit(),()=>{this.auditModalOpen=!1}):k}`}};g([m()],f.prototype,"settings",2);g([m()],f.prototype,"password",2);g([m()],f.prototype,"tab",2);g([m()],f.prototype,"onboarding",2);g([m()],f.prototype,"setup",2);g([m()],f.prototype,"filesPage",2);g([m()],f.prototype,"browserPage",2);g([m()],f.prototype,"adminsPage",2);g([m()],f.prototype,"customersPage",2);g([m()],f.prototype,"chatPage",2);g([m()],f.prototype,"advancedPage",2);g([m()],f.prototype,"advancedTab",2);g([m()],f.prototype,"publicChat",2);g([m()],f.prototype,"publicChatConfig",2);g([m()],f.prototype,"publicChatSessionKey",2);g([m()],f.prototype,"publicChatAuthenticated",2);g([m()],f.prototype,"publicChatAuthStep",2);g([m()],f.prototype,"connected",2);g([m()],f.prototype,"accessState",2);g([m()],f.prototype,"theme",2);g([m()],f.prototype,"themeResolved",2);g([m()],f.prototype,"hello",2);g([m()],f.prototype,"lastError",2);g([m()],f.prototype,"eventLog",2);g([m()],f.prototype,"assistantName",2);g([m()],f.prototype,"assistantAvatar",2);g([m()],f.prototype,"assistantAgentId",2);g([m()],f.prototype,"sessionKey",2);g([m()],f.prototype,"chatLoading",2);g([m()],f.prototype,"chatSending",2);g([m()],f.prototype,"chatMessage",2);g([m()],f.prototype,"chatMessages",2);g([m()],f.prototype,"chatToolMessages",2);g([m()],f.prototype,"chatStream",2);g([m()],f.prototype,"chatInterimText",2);g([m()],f.prototype,"chatSuggestion",2);g([m()],f.prototype,"chatStreamStartedAt",2);g([m()],f.prototype,"chatRunId",2);g([m()],f.prototype,"compactionStatus",2);g([m()],f.prototype,"chatAvatarUrl",2);g([m()],f.prototype,"chatThinkingLevel",2);g([m()],f.prototype,"chatModelProvider",2);g([m()],f.prototype,"chatModel",2);g([m()],f.prototype,"chatModelCatalog",2);g([m()],f.prototype,"chatVerboseLevel",2);g([m()],f.prototype,"chatFillerEnabled",2);g([m()],f.prototype,"chatQueue",2);g([m()],f.prototype,"chatAttachments",2);g([m()],f.prototype,"sidebarOpen",2);g([m()],f.prototype,"sidebarContent",2);g([m()],f.prototype,"sidebarError",2);g([m()],f.prototype,"splitRatio",2);g([m()],f.prototype,"nodesLoading",2);g([m()],f.prototype,"nodes",2);g([m()],f.prototype,"devicesLoading",2);g([m()],f.prototype,"devicesError",2);g([m()],f.prototype,"devicesList",2);g([m()],f.prototype,"execApprovalsLoading",2);g([m()],f.prototype,"execApprovalsSaving",2);g([m()],f.prototype,"execApprovalsDirty",2);g([m()],f.prototype,"execApprovalsSnapshot",2);g([m()],f.prototype,"execApprovalsForm",2);g([m()],f.prototype,"execApprovalsSelectedAgent",2);g([m()],f.prototype,"execApprovalsTarget",2);g([m()],f.prototype,"execApprovalsTargetNodeId",2);g([m()],f.prototype,"execApprovalQueue",2);g([m()],f.prototype,"execApprovalBusy",2);g([m()],f.prototype,"execApprovalError",2);g([m()],f.prototype,"configLoading",2);g([m()],f.prototype,"configRaw",2);g([m()],f.prototype,"configRawOriginal",2);g([m()],f.prototype,"configValid",2);g([m()],f.prototype,"configIssues",2);g([m()],f.prototype,"configSaving",2);g([m()],f.prototype,"configApplying",2);g([m()],f.prototype,"updateRunning",2);g([m()],f.prototype,"applySessionKey",2);g([m()],f.prototype,"configSnapshot",2);g([m()],f.prototype,"configSchema",2);g([m()],f.prototype,"configSchemaVersion",2);g([m()],f.prototype,"configSchemaLoading",2);g([m()],f.prototype,"configUiHints",2);g([m()],f.prototype,"configForm",2);g([m()],f.prototype,"configFormOriginal",2);g([m()],f.prototype,"configFormDirty",2);g([m()],f.prototype,"configFormMode",2);g([m()],f.prototype,"configSearchQuery",2);g([m()],f.prototype,"configActiveSection",2);g([m()],f.prototype,"configActiveSubsection",2);g([m()],f.prototype,"channelsLoading",2);g([m()],f.prototype,"channelsSnapshot",2);g([m()],f.prototype,"channelsError",2);g([m()],f.prototype,"channelsLastSuccess",2);g([m()],f.prototype,"whatsappLoginMessage",2);g([m()],f.prototype,"whatsappLoginQrDataUrl",2);g([m()],f.prototype,"whatsappLoginConnected",2);g([m()],f.prototype,"whatsappBusy",2);g([m()],f.prototype,"whatsappActiveQrAccountId",2);g([m()],f.prototype,"whatsappPairedPhone",2);g([m()],f.prototype,"addingWhatsAppAccount",2);g([m()],f.prototype,"newWhatsAppAccountName",2);g([m()],f.prototype,"whatsappAccountError",2);g([m()],f.prototype,"whatsappAccountSaving",2);g([m()],f.prototype,"whatsappSettingsOpen",2);g([m()],f.prototype,"publicChatToggleBusy",2);g([m()],f.prototype,"licenseKey",2);g([m()],f.prototype,"licenseBusy",2);g([m()],f.prototype,"licenseValid",2);g([m()],f.prototype,"licenseMessage",2);g([m()],f.prototype,"licenseTier",2);g([m()],f.prototype,"licenseDeviceId",2);g([m()],f.prototype,"licenseStoredKey",2);g([m()],f.prototype,"licenseRemoveConfirm",2);g([m()],f.prototype,"authConnected",2);g([m()],f.prototype,"authBusy",2);g([m()],f.prototype,"authMessage",2);g([m()],f.prototype,"authUrl",2);g([m()],f.prototype,"authCodeInput",2);g([m()],f.prototype,"authExpiresIn",2);g([m()],f.prototype,"setupStep",2);g([m()],f.prototype,"gatewayHealthy",2);g([m()],f.prototype,"gatewayHealthLoading",2);g([m()],f.prototype,"gatewayHealthMessage",2);g([m()],f.prototype,"gatewayRestartBusy",2);g([m()],f.prototype,"updateAvailable",2);g([m()],f.prototype,"currentVersion",2);g([m()],f.prototype,"latestVersion",2);g([m()],f.prototype,"updateChecking",2);g([m()],f.prototype,"updateMessage",2);g([m()],f.prototype,"updateProgressSteps",2);g([m()],f.prototype,"updateLastResult",2);g([m()],f.prototype,"uninstallConfirm",2);g([m()],f.prototype,"uninstallBusy",2);g([m()],f.prototype,"uninstallDone",2);g([m()],f.prototype,"uninstallError",2);g([m()],f.prototype,"uninstallConfirmText",2);g([m()],f.prototype,"nostrProfileFormState",2);g([m()],f.prototype,"nostrProfileAccountId",2);g([m()],f.prototype,"presenceLoading",2);g([m()],f.prototype,"presenceEntries",2);g([m()],f.prototype,"presenceError",2);g([m()],f.prototype,"presenceStatus",2);g([m()],f.prototype,"agentsLoading",2);g([m()],f.prototype,"agentsList",2);g([m()],f.prototype,"agentsError",2);g([m()],f.prototype,"sessionsLoading",2);g([m()],f.prototype,"sessionsResult",2);g([m()],f.prototype,"sessionsError",2);g([m()],f.prototype,"cronLoading",2);g([m()],f.prototype,"cronJobs",2);g([m()],f.prototype,"cronStatus",2);g([m()],f.prototype,"cronError",2);g([m()],f.prototype,"cronForm",2);g([m()],f.prototype,"cronRunsJobId",2);g([m()],f.prototype,"cronRuns",2);g([m()],f.prototype,"cronBusy",2);g([m()],f.prototype,"cronNewEventModal",2);g([m()],f.prototype,"cronDetailJobId",2);g([m()],f.prototype,"browserScreencastActive",2);g([m()],f.prototype,"browserScreencastFrame",2);g([m()],f.prototype,"browserScreencastMetadata",2);g([m()],f.prototype,"browserHandoffPending",2);g([m()],f.prototype,"browserHandoffReason",2);g([m()],f.prototype,"browserHandoffId",2);g([m()],f.prototype,"browserInputMode",2);g([m()],f.prototype,"browserFullscreen",2);g([m()],f.prototype,"browserLoading",2);g([m()],f.prototype,"browserError",2);g([m()],f.prototype,"filesLoading",2);g([m()],f.prototype,"filesTree",2);g([m()],f.prototype,"filesRoot",2);g([m()],f.prototype,"filesError",2);g([m()],f.prototype,"filesSelectedPath",2);g([m()],f.prototype,"filesSelectedPaths",2);g([m()],f.prototype,"filesPreviewContent",2);g([m()],f.prototype,"filesPreviewLoading",2);g([m()],f.prototype,"filesPreviewBinary",2);g([m()],f.prototype,"filesPreviewSize",2);g([m()],f.prototype,"filesExpandedDirs",2);g([m()],f.prototype,"filesMessage",2);g([m()],f.prototype,"filesUploadBusy",2);g([m()],f.prototype,"filesReindexBusy",2);g([m()],f.prototype,"filesMemoryStatus",2);g([m()],f.prototype,"embeddingDownloading",2);g([m()],f.prototype,"filesSearchQuery",2);g([m()],f.prototype,"filesSearchResults",2);g([m()],f.prototype,"filesSearchLoading",2);g([m()],f.prototype,"filesSearchAgentId",2);g([m()],f.prototype,"auditEntries",2);g([m()],f.prototype,"auditLoading",2);g([m()],f.prototype,"auditModalOpen",2);g([m()],f.prototype,"skillsLoading",2);g([m()],f.prototype,"skillsReport",2);g([m()],f.prototype,"skillsError",2);g([m()],f.prototype,"skillsFilter",2);g([m()],f.prototype,"skillEdits",2);g([m()],f.prototype,"skillsBusyKey",2);g([m()],f.prototype,"skillMessages",2);g([m()],f.prototype,"adminsLoading",2);g([m()],f.prototype,"adminPhones",2);g([m()],f.prototype,"adminsError",2);g([m()],f.prototype,"adminsSaving",2);g([m()],f.prototype,"adminsNewPhone",2);g([m()],f.prototype,"customersLoading",2);g([m()],f.prototype,"customersSaving",2);g([m()],f.prototype,"customersRecords",2);g([m()],f.prototype,"customersError",2);g([m()],f.prototype,"customersSearchQuery",2);g([m()],f.prototype,"customersEditingId",2);g([m()],f.prototype,"customersShowAddForm",2);g([m()],f.prototype,"customersNewPhone",2);g([m()],f.prototype,"customersNewName",2);g([m()],f.prototype,"imessageEnableConfirm",2);g([m()],f.prototype,"imessageEnabling",2);g([m()],f.prototype,"infoModalOpen",2);g([m()],f.prototype,"workspaces",2);g([m()],f.prototype,"workspacesLoading",2);g([m()],f.prototype,"workspacesError",2);g([m()],f.prototype,"selectedWorkspace",2);g([m()],f.prototype,"addingWorkspace",2);g([m()],f.prototype,"newWorkspaceName",2);g([m()],f.prototype,"newWorkspacePath",2);g([m()],f.prototype,"newWorkspacePin",2);g([m()],f.prototype,"accountPinModalOpen",2);g([m()],f.prototype,"accountPinBusy",2);g([m()],f.prototype,"accountPinError",2);g([m()],f.prototype,"accountPinSuccess",2);g([m()],f.prototype,"apiKeyProviders",2);g([m()],f.prototype,"apiKeyModalOpen",2);g([m()],f.prototype,"apiKeyBusy",2);g([m()],f.prototype,"apiKeyError",2);g([m()],f.prototype,"apiKeySuccess",2);g([m()],f.prototype,"apiKeySavingProvider",2);g([m()],f.prototype,"authApiKeyMode",2);g([m()],f.prototype,"authApiKeyInput",2);g([m()],f.prototype,"authApiKeyBusy",2);g([m()],f.prototype,"authApiKeyError",2);g([m()],f.prototype,"pinChanging",2);g([m()],f.prototype,"pinChangeBusy",2);g([m()],f.prototype,"pinChangeError",2);g([m()],f.prototype,"loginChangePinMode",2);g([m()],f.prototype,"changePinBusy",2);g([m()],f.prototype,"changePinError",2);g([m()],f.prototype,"changePinSuccess",2);g([m()],f.prototype,"workspaceSaving",2);g([m()],f.prototype,"workspaceRemoveConfirm",2);g([m()],f.prototype,"renamingWorkspace",2);g([m()],f.prototype,"renameWorkspaceName",2);g([m()],f.prototype,"debugLoading",2);g([m()],f.prototype,"debugStatus",2);g([m()],f.prototype,"debugHealth",2);g([m()],f.prototype,"debugModels",2);g([m()],f.prototype,"debugHeartbeat",2);g([m()],f.prototype,"debugCallMethod",2);g([m()],f.prototype,"debugCallParams",2);g([m()],f.prototype,"debugCallResult",2);g([m()],f.prototype,"debugCallError",2);g([m()],f.prototype,"logsLoading",2);g([m()],f.prototype,"logsError",2);g([m()],f.prototype,"logsFile",2);g([m()],f.prototype,"logsEntries",2);g([m()],f.prototype,"logsFilterText",2);g([m()],f.prototype,"logsLevelFilters",2);g([m()],f.prototype,"logsAutoFollow",2);g([m()],f.prototype,"logsTruncated",2);g([m()],f.prototype,"logsCursor",2);g([m()],f.prototype,"logsLastFetchAt",2);g([m()],f.prototype,"logsLimit",2);g([m()],f.prototype,"logsMaxBytes",2);g([m()],f.prototype,"logsAtBottom",2);g([m()],f.prototype,"logsSubTab",2);g([m()],f.prototype,"sessionLogsLoading",2);g([m()],f.prototype,"sessionLogsError",2);g([m()],f.prototype,"sessionLogsEntries",2);g([m()],f.prototype,"sessionLogsFilterText",2);g([m()],f.prototype,"sessionLogsTypeFilters",2);g([m()],f.prototype,"sessionLogsAgentFilters",2);g([m()],f.prototype,"sessionLogsAgents",2);g([m()],f.prototype,"sessionLogsAutoFollow",2);g([m()],f.prototype,"sessionLogsCursors",2);g([m()],f.prototype,"sessionLogsLastFetchAt",2);g([m()],f.prototype,"sessionLogsAtBottom",2);g([m()],f.prototype,"chatUserNearBottom",2);f=g([ol("taskmaster-app")],f);
3212
- //# sourceMappingURL=index-DiwtIkvl.js.map
3378
+ `,this.configRawOriginal="",this.configValid=null,this.configIssues=[],this.configSaving=!1,this.configApplying=!1,this.updateRunning=!1,this.applySessionKey=this.settings.lastActiveSessionKey,this.configSnapshot=null,this.configSchema=null,this.configSchemaVersion=null,this.configSchemaLoading=!1,this.configUiHints={},this.configForm=null,this.configFormOriginal=null,this.configFormDirty=!1,this.configFormMode="form",this.configSearchQuery="",this.configActiveSection=null,this.configActiveSubsection=null,this.channelsLoading=!1,this.channelsSnapshot=null,this.channelsError=null,this.channelsLastSuccess=null,this.whatsappLoginMessage=null,this.whatsappLoginQrDataUrl=null,this.whatsappLoginConnected=null,this.whatsappBusy=!1,this.whatsappActiveQrAccountId=null,this.whatsappPairedPhone=null,this.addingWhatsAppAccount=!1,this.newWhatsAppAccountName="",this.whatsappAccountError=null,this.whatsappAccountSaving=!1,this.whatsappSettingsOpen=!1,this.publicChatToggleBusy=!1,this.tailscaleStatus=null,this.tailscaleBusy=!1,this.tailscaleAuthUrl=null,this.tailscaleError=null,this.tailscaleFunnelEnableUrl=null,this.licenseKey="",this.licenseBusy=!1,this.licenseValid=null,this.licenseMessage=null,this.licenseTier=null,this.licenseDeviceId=null,this.licenseStoredKey=null,this.licenseRemoveConfirm=!1,this.authConnected=null,this.authBusy=!1,this.authMessage=null,this.authUrl=null,this.authCodeInput="",this.authExpiresIn=null,this.setupStep="license",this.gatewayHealthy=null,this.gatewayHealthLoading=!1,this.gatewayHealthMessage=null,this.gatewayRestartBusy=!1,this.updateAvailable=null,this.currentVersion=null,this.latestVersion=null,this.updateChecking=!1,this.updateMessage=null,this.updateProgressSteps=[],this.updateLastResult=null,this.uninstallConfirm=!1,this.uninstallBusy=!1,this.uninstallDone=!1,this.uninstallError=null,this.uninstallConfirmText="",this.nostrProfileFormState=null,this.nostrProfileAccountId=null,this.presenceLoading=!1,this.presenceEntries=[],this.presenceError=null,this.presenceStatus=null,this.agentsLoading=!1,this.agentsList=null,this.agentsError=null,this.sessionsLoading=!1,this.sessionsResult=null,this.sessionsError=null,this.cronLoading=!1,this.cronJobs=[],this.cronStatus=null,this.cronError=null,this.cronForm={...Cb},this.cronRunsJobId=null,this.cronRuns=[],this.cronBusy=!1,this.cronNewEventModal=!1,this.cronDetailJobId=null,this.browserScreencastActive=!1,this.browserScreencastFrame=null,this.browserScreencastMetadata=null,this.browserHandoffPending=!1,this.browserHandoffReason=null,this.browserHandoffId=null,this.browserInputMode=!1,this.browserFullscreen=!1,this.browserLoading=!1,this.browserError=null,this.filesLoading=!1,this.filesTree=[],this.filesRoot="",this.filesError=null,this.filesSelectedPath=null,this.filesSelectedPaths=new Set,this.filesPreviewContent=null,this.filesPreviewLoading=!1,this.filesPreviewBinary=!1,this.filesPreviewSize=null,this.filesExpandedDirs=new Set,this.filesMessage=null,this.filesUploadBusy=!1,this.filesReindexBusy=!1,this.filesMemoryStatus=null,this.embeddingDownloading=!1,this.embeddingPollTimer=null,this.filesSearchQuery="",this.filesSearchResults=null,this.filesSearchLoading=!1,this.filesSearchAgentId=null,this.auditEntries=[],this.auditLoading=!1,this.auditModalOpen=!1,this.skillsLoading=!1,this.skillsReport=null,this.skillsError=null,this.skillsFilter="",this.skillEdits={},this.skillsBusyKey=null,this.skillMessages={},this.adminsLoading=!1,this.adminPhones=[],this.adminsError=null,this.adminsSaving=!1,this.adminsNewPhone="",this.customersLoading=!1,this.customersSaving=!1,this.customersRecords=[],this.customersError=null,this.customersSearchQuery="",this.customersEditingId=null,this.customersShowAddForm=!1,this.customersNewPhone="",this.customersNewName="",this.imessageEnableConfirm=!1,this.imessageEnabling=!1,this.infoModalOpen=null,this.workspaces=[],this.workspacesLoading=!1,this.workspacesError=null,this.selectedWorkspace=null,this.addingWorkspace=!1,this.newWorkspaceName="",this.newWorkspacePath="",this.newWorkspacePin="",this.accountPinModalOpen=!1,this.accountPinBusy=!1,this.accountPinError=null,this.accountPinSuccess=null,this.apiKeyProviders=[],this.apiKeyModalOpen=!1,this.apiKeyBusy=!1,this.apiKeyError=null,this.apiKeySuccess=null,this.apiKeySavingProvider=null,this.authApiKeyMode=!1,this.authApiKeyInput="",this.authApiKeyBusy=!1,this.authApiKeyError=null,this.pinChanging=null,this.pinChangeBusy=!1,this.pinChangeError=null,this.loginChangePinMode=!1,this.changePinBusy=!1,this.changePinError=null,this.changePinSuccess=null,this.workspaceSaving=!1,this.workspaceRemoveConfirm=null,this.renamingWorkspace=!1,this.renameWorkspaceName="",this.debugLoading=!1,this.debugStatus=null,this.debugHealth=null,this.debugModels=[],this.debugHeartbeat=null,this.debugCallMethod="",this.debugCallParams="{}",this.debugCallResult=null,this.debugCallError=null,this.logsLoading=!1,this.logsError=null,this.logsFile=null,this.logsEntries=[],this.logsFilterText="",this.logsLevelFilters={...Tb},this.logsAutoFollow=!0,this.logsTruncated=!1,this.logsCursor=null,this.logsLastFetchAt=null,this.logsLimit=500,this.logsMaxBytes=25e4,this.logsAtBottom=!0,this.logsSubTab="session",this.sessionLogsLoading=!1,this.sessionLogsError=null,this.sessionLogsEntries=[],this.sessionLogsFilterText="",this.sessionLogsTypeFilters={user:!0,assistant:!0,tool:!0,thinking:!0,error:!0,system:!0},this.sessionLogsAgentFilters={},this.sessionLogsAgents=[],this.sessionLogsAutoFollow=!0,this.sessionLogsCursors={},this.sessionLogsLastFetchAt=null,this.sessionLogsAtBottom=!0,this.client=null,this.chatScrollFrame=null,this.chatScrollTimeout=null,this.chatHasAutoScrolled=!1,this.chatUserNearBottom=!0,this.nodesPollInterval=null,this.logsPollInterval=null,this.sessionLogsPollInterval=null,this.debugPollInterval=null,this.auditPollInterval=null,this.logsScrollFrame=null,this.toolStreamById=new Map,this.toolStreamOrder=[],this.basePath="",this.popStateHandler=()=>vh(this),this.themeMedia=null,this.themeMediaHandler=null,this.topbarObserver=null}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),_b(this)}firstUpdated(){Mb(this)}disconnectedCallback(){this.stopEmbeddingPoll(),Pb(this),super.disconnectedCallback()}startEmbeddingPoll(){if(this.embeddingPollTimer!=null)return;const e=async()=>{if(!(!this.client||!this.connected)){try{const t=await this.client.request("memory.status",{});if((t==null?void 0:t.embeddingState)==="downloading")this.embeddingDownloading=!0;else{this.embeddingDownloading&&(this.embeddingDownloading=!1),this.stopEmbeddingPoll();return}}catch{this.embeddingDownloading=!1,this.stopEmbeddingPoll();return}this.embeddingPollTimer=window.setTimeout(e,3e3)}};e()}stopEmbeddingPoll(){this.embeddingPollTimer!=null&&(window.clearTimeout(this.embeddingPollTimer),this.embeddingPollTimer=null)}updated(e){Lb(this,e)}connect(){Te(this)}handleChatScroll(e){Fd(this,e)}handleLogsScroll(e){Ud(this,e)}handleSessionLogsScroll(e){Wd(this,e)}exportLogs(e,t){zd(e,t)}exportSessionLogs(e,t){jd(e,t)}resetToolStream(){ir(this)}resetChatScroll(){Kd(this)}async loadAssistantIdentity(){await Qs(this)}applySettings(e){je(this,e)}setTab(e){dh(this,e)}setTheme(e,t){ph(this,e,t)}async loadOverview(){await rc(this)}async loadCron(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.cronForm={...this.cronForm,accountId:(e==null?void 0:e.whatsappAccountId)??void 0},await kr(this)}async handleAbortChat(){await ac(this)}removeQueuedMessage(e){Sh(this,e)}async handleSendChat(e,t){await Ah(this,e,t)}async handleWhatsAppStart(e,t){await Rb(this,e,t)}async handleWhatsAppWait(e){await Nb(this,e)}async handleWhatsAppLogout(e){await Db(this,e)}async handleAddWhatsAppAccount(e){await Ob(this,e)}async handleRemoveWhatsAppAccount(e){await Bb(this,e)}async handleAccessCheck(){await Qa(this)}async handlePinSubmit(e,t){await ab(this,e,t),this.accessState.authenticated&&this.accessState.workspace&&this.handleWorkspaceSelect(this.accessState.workspace)}async handleSetMasterPin(e){await lb(this,e)}async handleLogout(){await ub(this)}toggleChangePinMode(){this.loginChangePinMode=!this.loginChangePinMode,this.changePinError=null,this.changePinSuccess=null}async handleChangePin(e,t,n){if(this.client){this.changePinBusy=!0,this.changePinError=null,this.changePinSuccess=null;try{const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.changePinError=i.message??"Incorrect current PIN",this.changePinBusy=!1;return}e==="__master__"?await this.client.request("access.setMasterPin",{pin:n}):await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.changePinSuccess="PIN changed successfully",this.changePinBusy=!1,setTimeout(()=>{this.loginChangePinMode=!1,this.changePinSuccess=null},2e3)}catch{this.changePinError="Failed to change PIN",this.changePinBusy=!1}}}async handleAccountPinSave(e,t,n){if(this.client){this.accountPinBusy=!0,this.accountPinError=null,this.accountPinSuccess=null;try{if(t!==null){const i=await this.client.request("access.verify",{account:e,pin:t});if(!i.ok){this.accountPinError=i.message??"Incorrect current PIN",this.accountPinBusy=!1;return}}await this.client.request("access.setAccountPin",{workspace:e,pin:n}),this.accountPinSuccess="PIN saved",this.accountPinBusy=!1,await Qa(this),setTimeout(()=>{this.accountPinModalOpen=!1,this.accountPinSuccess=null,this.accountPinError=null},1500)}catch{this.accountPinError="Failed to save PIN",this.accountPinBusy=!1}}}async handleLicenseStatusCheck(){await Jb(this)}async handleLicenseActivate(){await ew(this)}async handleLicenseRemove(){await tw(this)}handleLicenseKeyChange(e){nw(this,e)}async handleAuthStatusCheck(){await Gb(this)}async handleAuthStart(){await Qb(this)}async handleAuthSubmitCode(e){await Yb(this,e)}handleAuthCodeChange(e){Xb(this,e)}handleSkipToWhatsApp(){Zb(this)}async handleGatewayHealthCheck(){await iw(this)}async handleGatewayRestart(){await sw(this)}async handleUpdateCheck(){await au(this)}async handleUpdateRun(){await Hv(this)}handleUpdateDismissResult(){Gv(this)}handleUninstallConfirm(){this.uninstallConfirm=!0,this.uninstallConfirmText=""}handleUninstallCancel(){this.uninstallConfirm=!1,this.uninstallConfirmText="",this.uninstallError=null}handleUninstallConfirmTextChange(e){this.uninstallConfirmText=e}async handleUninstallRun(){const{runUninstall:e}=await se(async()=>{const{runUninstall:t}=await Promise.resolve().then(()=>Ro);return{runUninstall:t}},void 0,import.meta.url);await e(this)}handleUninstallDismiss(){se(async()=>{const{clearUninstallDone:e}=await Promise.resolve().then(()=>Ro);return{clearUninstallDone:e}},void 0,import.meta.url).then(({clearUninstallDone:e})=>{e()}),this.uninstallDone=!1,this.uninstallConfirm=!1,this.uninstallConfirmText=""}async loadAuditEntries(){await Zl(this)}async clearAudit(){await Vp(this),this.auditModalOpen=!1}handleFilesLoad(){var n;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((n=e==null?void 0:e.agents)==null?void 0:n.map(i=>i.id))??void 0;const t=this.resolveFilesAgentId();yn(this,t),fr(this,t)}handleAdminsLoad(){const e=this.resolveAdminAgentId();se(async()=>{const{loadAdmins:t}=await Promise.resolve().then(()=>pb);return{loadAdmins:t}},void 0,import.meta.url).then(({loadAdmins:t})=>{t(this,e)})}resolveAdminAgentId(){const e=this.getSelectedWorkspaceInfo();if(!e)return;const t=e.agents.find(n=>n.id.endsWith("-admin")||n.id==="admin");return t==null?void 0:t.id}resolveFilesAgentId(){var t;const e=this.getSelectedWorkspaceInfo();if(e)return(t=e.agents[0])==null?void 0:t.id}handleChatLoad(){const e=this.resolveAdminAgentId();if(e){const t=`agent:${e}:main`;t!==this.sessionKey&&(this.sessionKey=t,this.chatMessages=[],this.chatStream=null,this.chatInterimText=null,this.chatRunId=null,this.chatSuggestion=null,this.applySettings({...this.settings,sessionKey:t,lastActiveSessionKey:t}),this.loadAssistantIdentity())}se(async()=>{const{loadChatHistory:t}=await Promise.resolve().then(()=>$s);return{loadChatHistory:t}},void 0,import.meta.url).then(({loadChatHistory:t})=>{t(this)})}handleAdvancedLoad(){var t;const e=this.getSelectedWorkspaceInfo();this.workspaceAgentIds=((t=e==null?void 0:e.agents)==null?void 0:t.map(n=>n.id))??void 0,this.sessionLogsEntries=[],this.sessionLogsCursors={},this.sessionLogsAgents=[],this.advancedTab==="cron"&&this.loadCron(),this.advancedTab==="logs"&&(this.logsSubTab==="session"?se(async()=>{const{loadSessionLogs:n}=await Promise.resolve().then(()=>Xl);return{loadSessionLogs:n}},void 0,import.meta.url).then(({loadSessionLogs:n})=>{n(this,{reset:!0})}):se(async()=>{const{loadLogs:n}=await Promise.resolve().then(()=>op);return{loadLogs:n}},void 0,import.meta.url).then(({loadLogs:n})=>{n(this,{reset:!0})})),this.advancedTab==="skills"&&se(async()=>{const{loadSkills:n}=await Promise.resolve().then(()=>Up);return{loadSkills:n}},void 0,import.meta.url).then(({loadSkills:n})=>{n(this,{clearMessages:!0})})}async handleChannelConfigSave(){await Fb(this)}async handleChannelConfigReload(){await Ub(this)}handleNostrProfileEdit(e,t){Kb(this,e,t)}handleNostrProfileCancel(){zb(this)}handleNostrProfileFieldChange(e,t){jb(this,e,t)}async handleNostrProfileSave(){await qb(this)}async handleNostrProfileImport(){await Vb(this)}handleNostrProfileToggleAdvanced(){Hb(this)}async handleExecApprovalDecision(e){const t=this.execApprovalQueue[0];if(!(!t||!this.client||this.execApprovalBusy)){this.execApprovalBusy=!0,this.execApprovalError=null;try{await this.client.request("exec.approval.resolve",{id:t.id,decision:e}),this.execApprovalQueue=this.execApprovalQueue.filter(n=>n.id!==t.id)}catch(n){this.execApprovalError=`Exec approval failed: ${String(n)}`}finally{this.execApprovalBusy=!1}}}handleOpenSidebar(e){this.sidebarCloseTimer!=null&&(window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=null),this.sidebarContent=e,this.sidebarError=null,this.sidebarOpen=!0}handleCloseSidebar(){this.sidebarOpen=!1,this.sidebarCloseTimer!=null&&window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=window.setTimeout(()=>{this.sidebarOpen||(this.sidebarContent=null,this.sidebarError=null,this.sidebarCloseTimer=null)},200)}handleSplitRatioChange(e){const t=Math.max(.4,Math.min(.7,e));this.splitRatio=t,this.applySettings({...this.settings,splitRatio:t})}handleAdminsNewPhoneChange(e){this.adminsNewPhone=e,this.adminsError&&(this.adminsError=null)}handleCustomersLoad(){const e=this.selectedWorkspace??void 0;se(async()=>{const{loadCustomers:t}=await Promise.resolve().then(()=>hb);return{loadCustomers:t}},void 0,import.meta.url).then(({loadCustomers:t})=>{t(this,e)})}handleCustomersNewPhoneChange(e){this.customersNewPhone=e,this.customersError&&(this.customersError=null)}handleCustomersNewNameChange(e){this.customersNewName=e,this.customersError&&(this.customersError=null)}async handleWorkspacesLoad(){const{loadWorkspaces:e}=await se(async()=>{const{loadWorkspaces:t}=await Promise.resolve().then(()=>jn);return{loadWorkspaces:t}},void 0,import.meta.url);await e(this)}async handleWorkspaceCreate(e,t){const{createWorkspace:n}=await se(async()=>{const{createWorkspace:s}=await Promise.resolve().then(()=>jn);return{createWorkspace:s}},void 0,import.meta.url),{loadChannels:i}=await se(async()=>{const{loadChannels:s}=await Promise.resolve().then(()=>tp);return{loadChannels:s}},void 0,import.meta.url);await n(this,{name:e,workspacePath:t,onCreated:s=>{if(!s.whatsappAccountId)return;const r=s.whatsappAccountId;this.handleWorkspaceSelect(e),setTimeout(async()=>{try{await i(this,!0),await this.handleWhatsAppStart(!0,r),this.whatsappLoginQrDataUrl&&(await this.handleWhatsAppWait(r),await i(this,!0),await this.handleWorkspacesLoad())}catch{}this.requestUpdate()},3e3)}})}async handleWorkspaceRemove(e){const{removeWorkspace:t}=await se(async()=>{const{removeWorkspace:n}=await Promise.resolve().then(()=>jn);return{removeWorkspace:n}},void 0,import.meta.url);await t(this,e)}handleWorkspaceRenameStart(){const e=this.getSelectedWorkspaceInfo();this.renameWorkspaceName=(e==null?void 0:e.displayName)??(e==null?void 0:e.name)??"",this.renamingWorkspace=!0}handleWorkspaceRenameCancel(){this.renamingWorkspace=!1,this.renameWorkspaceName=""}async handleWorkspaceRename(e,t){const{renameWorkspace:n}=await se(async()=>{const{renameWorkspace:i}=await Promise.resolve().then(()=>jn);return{renameWorkspace:i}},void 0,import.meta.url);await n(this,e,t),this.renamingWorkspace=!1,this.renameWorkspaceName=""}handleWorkspaceSelect(e){this.selectedWorkspace=e,localStorage.setItem("taskmaster-selected-workspace",e),ko(e),this.settings=qi(),this.chatMessage="",this.chatAttachments=[],this.chatStream=null,this.chatInterimText=null,this.chatSuggestion=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.chatQueue=[],this.lastError=null,this.reloadCurrentPageData()}getSelectedWorkspaceInfo(){return this.selectedWorkspace?this.workspaces.find(e=>e.name===this.selectedWorkspace)??null:null}reloadCurrentPageData(){this.loadAuditEntries(),this.adminsPage?this.handleAdminsLoad():this.customersPage?this.handleCustomersLoad():this.filesPage?this.handleFilesLoad():this.chatPage?this.handleChatLoad():this.advancedPage&&this.handleAdvancedLoad()}initWorkspaceSelection(){if(this.workspaces.length===0){this.reloadCurrentPageData();return}const e=localStorage.getItem("taskmaster-selected-workspace"),t=e?this.workspaces.find(n=>n.name===e):null;if(t)this.selectedWorkspace=t.name;else{const n=this.workspaces.find(i=>i.isDefault)??this.workspaces[0];this.selectedWorkspace=n.name,localStorage.setItem("taskmaster-selected-workspace",n.name)}ko(this.selectedWorkspace),this.settings=qi(),this.reloadCurrentPageData()}render(){return p`${xb(this)}${this.auditModalOpen?Eb(this.auditEntries,()=>this.clearAudit(),()=>{this.auditModalOpen=!1}):S}`}};m([y()],g.prototype,"settings",2);m([y()],g.prototype,"password",2);m([y()],g.prototype,"tab",2);m([y()],g.prototype,"onboarding",2);m([y()],g.prototype,"setup",2);m([y()],g.prototype,"filesPage",2);m([y()],g.prototype,"browserPage",2);m([y()],g.prototype,"adminsPage",2);m([y()],g.prototype,"customersPage",2);m([y()],g.prototype,"chatPage",2);m([y()],g.prototype,"advancedPage",2);m([y()],g.prototype,"advancedTab",2);m([y()],g.prototype,"publicChat",2);m([y()],g.prototype,"publicChatConfig",2);m([y()],g.prototype,"publicChatSessionKey",2);m([y()],g.prototype,"publicChatAuthenticated",2);m([y()],g.prototype,"publicChatAuthStep",2);m([y()],g.prototype,"connected",2);m([y()],g.prototype,"accessState",2);m([y()],g.prototype,"theme",2);m([y()],g.prototype,"themeResolved",2);m([y()],g.prototype,"hello",2);m([y()],g.prototype,"lastError",2);m([y()],g.prototype,"eventLog",2);m([y()],g.prototype,"assistantName",2);m([y()],g.prototype,"assistantAvatar",2);m([y()],g.prototype,"assistantAgentId",2);m([y()],g.prototype,"sessionKey",2);m([y()],g.prototype,"chatLoading",2);m([y()],g.prototype,"chatSending",2);m([y()],g.prototype,"chatMessage",2);m([y()],g.prototype,"chatMessages",2);m([y()],g.prototype,"chatToolMessages",2);m([y()],g.prototype,"chatStream",2);m([y()],g.prototype,"chatInterimText",2);m([y()],g.prototype,"chatSuggestion",2);m([y()],g.prototype,"chatStreamStartedAt",2);m([y()],g.prototype,"chatRunId",2);m([y()],g.prototype,"compactionStatus",2);m([y()],g.prototype,"chatAvatarUrl",2);m([y()],g.prototype,"chatThinkingLevel",2);m([y()],g.prototype,"chatModelProvider",2);m([y()],g.prototype,"chatModel",2);m([y()],g.prototype,"chatModelCatalog",2);m([y()],g.prototype,"chatVerboseLevel",2);m([y()],g.prototype,"chatFillerEnabled",2);m([y()],g.prototype,"chatQueue",2);m([y()],g.prototype,"chatAttachments",2);m([y()],g.prototype,"sidebarOpen",2);m([y()],g.prototype,"sidebarContent",2);m([y()],g.prototype,"sidebarError",2);m([y()],g.prototype,"splitRatio",2);m([y()],g.prototype,"nodesLoading",2);m([y()],g.prototype,"nodes",2);m([y()],g.prototype,"devicesLoading",2);m([y()],g.prototype,"devicesError",2);m([y()],g.prototype,"devicesList",2);m([y()],g.prototype,"execApprovalsLoading",2);m([y()],g.prototype,"execApprovalsSaving",2);m([y()],g.prototype,"execApprovalsDirty",2);m([y()],g.prototype,"execApprovalsSnapshot",2);m([y()],g.prototype,"execApprovalsForm",2);m([y()],g.prototype,"execApprovalsSelectedAgent",2);m([y()],g.prototype,"execApprovalsTarget",2);m([y()],g.prototype,"execApprovalsTargetNodeId",2);m([y()],g.prototype,"execApprovalQueue",2);m([y()],g.prototype,"execApprovalBusy",2);m([y()],g.prototype,"execApprovalError",2);m([y()],g.prototype,"configLoading",2);m([y()],g.prototype,"configRaw",2);m([y()],g.prototype,"configRawOriginal",2);m([y()],g.prototype,"configValid",2);m([y()],g.prototype,"configIssues",2);m([y()],g.prototype,"configSaving",2);m([y()],g.prototype,"configApplying",2);m([y()],g.prototype,"updateRunning",2);m([y()],g.prototype,"applySessionKey",2);m([y()],g.prototype,"configSnapshot",2);m([y()],g.prototype,"configSchema",2);m([y()],g.prototype,"configSchemaVersion",2);m([y()],g.prototype,"configSchemaLoading",2);m([y()],g.prototype,"configUiHints",2);m([y()],g.prototype,"configForm",2);m([y()],g.prototype,"configFormOriginal",2);m([y()],g.prototype,"configFormDirty",2);m([y()],g.prototype,"configFormMode",2);m([y()],g.prototype,"configSearchQuery",2);m([y()],g.prototype,"configActiveSection",2);m([y()],g.prototype,"configActiveSubsection",2);m([y()],g.prototype,"channelsLoading",2);m([y()],g.prototype,"channelsSnapshot",2);m([y()],g.prototype,"channelsError",2);m([y()],g.prototype,"channelsLastSuccess",2);m([y()],g.prototype,"whatsappLoginMessage",2);m([y()],g.prototype,"whatsappLoginQrDataUrl",2);m([y()],g.prototype,"whatsappLoginConnected",2);m([y()],g.prototype,"whatsappBusy",2);m([y()],g.prototype,"whatsappActiveQrAccountId",2);m([y()],g.prototype,"whatsappPairedPhone",2);m([y()],g.prototype,"addingWhatsAppAccount",2);m([y()],g.prototype,"newWhatsAppAccountName",2);m([y()],g.prototype,"whatsappAccountError",2);m([y()],g.prototype,"whatsappAccountSaving",2);m([y()],g.prototype,"whatsappSettingsOpen",2);m([y()],g.prototype,"publicChatToggleBusy",2);m([y()],g.prototype,"tailscaleStatus",2);m([y()],g.prototype,"tailscaleBusy",2);m([y()],g.prototype,"tailscaleAuthUrl",2);m([y()],g.prototype,"tailscaleError",2);m([y()],g.prototype,"tailscaleFunnelEnableUrl",2);m([y()],g.prototype,"licenseKey",2);m([y()],g.prototype,"licenseBusy",2);m([y()],g.prototype,"licenseValid",2);m([y()],g.prototype,"licenseMessage",2);m([y()],g.prototype,"licenseTier",2);m([y()],g.prototype,"licenseDeviceId",2);m([y()],g.prototype,"licenseStoredKey",2);m([y()],g.prototype,"licenseRemoveConfirm",2);m([y()],g.prototype,"authConnected",2);m([y()],g.prototype,"authBusy",2);m([y()],g.prototype,"authMessage",2);m([y()],g.prototype,"authUrl",2);m([y()],g.prototype,"authCodeInput",2);m([y()],g.prototype,"authExpiresIn",2);m([y()],g.prototype,"setupStep",2);m([y()],g.prototype,"gatewayHealthy",2);m([y()],g.prototype,"gatewayHealthLoading",2);m([y()],g.prototype,"gatewayHealthMessage",2);m([y()],g.prototype,"gatewayRestartBusy",2);m([y()],g.prototype,"updateAvailable",2);m([y()],g.prototype,"currentVersion",2);m([y()],g.prototype,"latestVersion",2);m([y()],g.prototype,"updateChecking",2);m([y()],g.prototype,"updateMessage",2);m([y()],g.prototype,"updateProgressSteps",2);m([y()],g.prototype,"updateLastResult",2);m([y()],g.prototype,"uninstallConfirm",2);m([y()],g.prototype,"uninstallBusy",2);m([y()],g.prototype,"uninstallDone",2);m([y()],g.prototype,"uninstallError",2);m([y()],g.prototype,"uninstallConfirmText",2);m([y()],g.prototype,"nostrProfileFormState",2);m([y()],g.prototype,"nostrProfileAccountId",2);m([y()],g.prototype,"presenceLoading",2);m([y()],g.prototype,"presenceEntries",2);m([y()],g.prototype,"presenceError",2);m([y()],g.prototype,"presenceStatus",2);m([y()],g.prototype,"agentsLoading",2);m([y()],g.prototype,"agentsList",2);m([y()],g.prototype,"agentsError",2);m([y()],g.prototype,"sessionsLoading",2);m([y()],g.prototype,"sessionsResult",2);m([y()],g.prototype,"sessionsError",2);m([y()],g.prototype,"cronLoading",2);m([y()],g.prototype,"cronJobs",2);m([y()],g.prototype,"cronStatus",2);m([y()],g.prototype,"cronError",2);m([y()],g.prototype,"cronForm",2);m([y()],g.prototype,"cronRunsJobId",2);m([y()],g.prototype,"cronRuns",2);m([y()],g.prototype,"cronBusy",2);m([y()],g.prototype,"cronNewEventModal",2);m([y()],g.prototype,"cronDetailJobId",2);m([y()],g.prototype,"browserScreencastActive",2);m([y()],g.prototype,"browserScreencastFrame",2);m([y()],g.prototype,"browserScreencastMetadata",2);m([y()],g.prototype,"browserHandoffPending",2);m([y()],g.prototype,"browserHandoffReason",2);m([y()],g.prototype,"browserHandoffId",2);m([y()],g.prototype,"browserInputMode",2);m([y()],g.prototype,"browserFullscreen",2);m([y()],g.prototype,"browserLoading",2);m([y()],g.prototype,"browserError",2);m([y()],g.prototype,"filesLoading",2);m([y()],g.prototype,"filesTree",2);m([y()],g.prototype,"filesRoot",2);m([y()],g.prototype,"filesError",2);m([y()],g.prototype,"filesSelectedPath",2);m([y()],g.prototype,"filesSelectedPaths",2);m([y()],g.prototype,"filesPreviewContent",2);m([y()],g.prototype,"filesPreviewLoading",2);m([y()],g.prototype,"filesPreviewBinary",2);m([y()],g.prototype,"filesPreviewSize",2);m([y()],g.prototype,"filesExpandedDirs",2);m([y()],g.prototype,"filesMessage",2);m([y()],g.prototype,"filesUploadBusy",2);m([y()],g.prototype,"filesReindexBusy",2);m([y()],g.prototype,"filesMemoryStatus",2);m([y()],g.prototype,"embeddingDownloading",2);m([y()],g.prototype,"filesSearchQuery",2);m([y()],g.prototype,"filesSearchResults",2);m([y()],g.prototype,"filesSearchLoading",2);m([y()],g.prototype,"filesSearchAgentId",2);m([y()],g.prototype,"auditEntries",2);m([y()],g.prototype,"auditLoading",2);m([y()],g.prototype,"auditModalOpen",2);m([y()],g.prototype,"skillsLoading",2);m([y()],g.prototype,"skillsReport",2);m([y()],g.prototype,"skillsError",2);m([y()],g.prototype,"skillsFilter",2);m([y()],g.prototype,"skillEdits",2);m([y()],g.prototype,"skillsBusyKey",2);m([y()],g.prototype,"skillMessages",2);m([y()],g.prototype,"adminsLoading",2);m([y()],g.prototype,"adminPhones",2);m([y()],g.prototype,"adminsError",2);m([y()],g.prototype,"adminsSaving",2);m([y()],g.prototype,"adminsNewPhone",2);m([y()],g.prototype,"customersLoading",2);m([y()],g.prototype,"customersSaving",2);m([y()],g.prototype,"customersRecords",2);m([y()],g.prototype,"customersError",2);m([y()],g.prototype,"customersSearchQuery",2);m([y()],g.prototype,"customersEditingId",2);m([y()],g.prototype,"customersShowAddForm",2);m([y()],g.prototype,"customersNewPhone",2);m([y()],g.prototype,"customersNewName",2);m([y()],g.prototype,"imessageEnableConfirm",2);m([y()],g.prototype,"imessageEnabling",2);m([y()],g.prototype,"infoModalOpen",2);m([y()],g.prototype,"workspaces",2);m([y()],g.prototype,"workspacesLoading",2);m([y()],g.prototype,"workspacesError",2);m([y()],g.prototype,"selectedWorkspace",2);m([y()],g.prototype,"addingWorkspace",2);m([y()],g.prototype,"newWorkspaceName",2);m([y()],g.prototype,"newWorkspacePath",2);m([y()],g.prototype,"newWorkspacePin",2);m([y()],g.prototype,"accountPinModalOpen",2);m([y()],g.prototype,"accountPinBusy",2);m([y()],g.prototype,"accountPinError",2);m([y()],g.prototype,"accountPinSuccess",2);m([y()],g.prototype,"apiKeyProviders",2);m([y()],g.prototype,"apiKeyModalOpen",2);m([y()],g.prototype,"apiKeyBusy",2);m([y()],g.prototype,"apiKeyError",2);m([y()],g.prototype,"apiKeySuccess",2);m([y()],g.prototype,"apiKeySavingProvider",2);m([y()],g.prototype,"authApiKeyMode",2);m([y()],g.prototype,"authApiKeyInput",2);m([y()],g.prototype,"authApiKeyBusy",2);m([y()],g.prototype,"authApiKeyError",2);m([y()],g.prototype,"pinChanging",2);m([y()],g.prototype,"pinChangeBusy",2);m([y()],g.prototype,"pinChangeError",2);m([y()],g.prototype,"loginChangePinMode",2);m([y()],g.prototype,"changePinBusy",2);m([y()],g.prototype,"changePinError",2);m([y()],g.prototype,"changePinSuccess",2);m([y()],g.prototype,"workspaceSaving",2);m([y()],g.prototype,"workspaceRemoveConfirm",2);m([y()],g.prototype,"renamingWorkspace",2);m([y()],g.prototype,"renameWorkspaceName",2);m([y()],g.prototype,"debugLoading",2);m([y()],g.prototype,"debugStatus",2);m([y()],g.prototype,"debugHealth",2);m([y()],g.prototype,"debugModels",2);m([y()],g.prototype,"debugHeartbeat",2);m([y()],g.prototype,"debugCallMethod",2);m([y()],g.prototype,"debugCallParams",2);m([y()],g.prototype,"debugCallResult",2);m([y()],g.prototype,"debugCallError",2);m([y()],g.prototype,"logsLoading",2);m([y()],g.prototype,"logsError",2);m([y()],g.prototype,"logsFile",2);m([y()],g.prototype,"logsEntries",2);m([y()],g.prototype,"logsFilterText",2);m([y()],g.prototype,"logsLevelFilters",2);m([y()],g.prototype,"logsAutoFollow",2);m([y()],g.prototype,"logsTruncated",2);m([y()],g.prototype,"logsCursor",2);m([y()],g.prototype,"logsLastFetchAt",2);m([y()],g.prototype,"logsLimit",2);m([y()],g.prototype,"logsMaxBytes",2);m([y()],g.prototype,"logsAtBottom",2);m([y()],g.prototype,"logsSubTab",2);m([y()],g.prototype,"sessionLogsLoading",2);m([y()],g.prototype,"sessionLogsError",2);m([y()],g.prototype,"sessionLogsEntries",2);m([y()],g.prototype,"sessionLogsFilterText",2);m([y()],g.prototype,"sessionLogsTypeFilters",2);m([y()],g.prototype,"sessionLogsAgentFilters",2);m([y()],g.prototype,"sessionLogsAgents",2);m([y()],g.prototype,"sessionLogsAutoFollow",2);m([y()],g.prototype,"sessionLogsCursors",2);m([y()],g.prototype,"sessionLogsLastFetchAt",2);m([y()],g.prototype,"sessionLogsAtBottom",2);m([y()],g.prototype,"chatUserNearBottom",2);g=m([ol("taskmaster-app")],g);
3379
+ //# sourceMappingURL=index-hWMGux19.js.map