@aikaara/chat-sdk 1.5.14 → 1.5.15
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.
- package/dist/{AikaaraLinkButton-Qdt9GbUN.mjs → AikaaraLinkButton-CgGY2vIV.mjs} +1 -1
- package/dist/{AikaaraLinkButton-BISqvimu.cjs → AikaaraLinkButton-DJA-MEH4.cjs} +1 -1
- package/dist/{MountTenant-B5XQ9fsG.mjs → MountTenant-B5vjjcZ4.mjs} +9 -11
- package/dist/{MountTenant-C1cW0p6o.cjs → MountTenant-D_KsmvuR.cjs} +2 -2
- package/dist/cdn/aikaara-chat.iife.js +1 -1
- package/dist/headless.cjs +1 -1
- package/dist/headless.mjs +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/ui.cjs +1 -1
- package/dist/ui.mjs +1 -1
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
5
5
|
`+ie.prev+ie.base;return Ie+I.call(V,","+Ie)+`
|
|
6
6
|
`+ie.prev}function _e(V,ie){var Ie=ge(V),Te=[];if(Ie){Te.length=V.length;for(var Pe=0;Pe<V.length;Pe++)Te[Pe]=se(V,Pe)?ie(V[Pe],V):""}var Le=typeof T=="function"?T(V):[],ot;if(M){ot={};for(var st=0;st<Le.length;st++)ot["$"+Le[st]]=Le[st]}for(var Ve in V)se(V,Ve)&&(Ie&&String(Number(Ve))===Ve&&Ve<V.length||M&&ot["$"+Ve]instanceof Symbol||(x.call(/[^\w$]/,Ve)?Te.push(ie(Ve,V)+": "+ie(V[Ve],V)):Te.push(Ve+": "+ie(V[Ve],V))));if(typeof T=="function")for(var at=0;at<Le.length;at++)oe.call(V,Le[at])&&Te.push("["+ie(Le[at])+"]: "+ie(V[Le[at]],V));return Te}return Wr}function Rd(){if(fo)return Vr;fo=!0;var i=Vt(),e=vd(),t=Ld(),r=sr(),o=i("%WeakMap%",!0),n=i("%Map%",!0),s=e("WeakMap.prototype.get",!0),a=e("WeakMap.prototype.set",!0),l=e("WeakMap.prototype.has",!0),c=e("Map.prototype.get",!0),u=e("Map.prototype.set",!0),d=e("Map.prototype.has",!0),p=function(b,w){for(var m=b,k;(k=m.next)!==null;m=k)if(k.key===w)return m.next=k.next,k.next=b.next,b.next=k,k},g=function(b,w){var m=p(b,w);return m&&m.value},f=function(b,w,m){var k=p(b,w);k?k.value=m:b.next={key:w,next:b.next,value:m}},y=function(b,w){return!!p(b,w)};return Vr=function(){var b,w,m,k={assert:function(S){if(!k.has(S))throw new r("Side channel does not contain "+t(S))},get:function(S){if(o&&S&&(typeof S=="object"||typeof S=="function")){if(b)return s(b,S)}else if(n){if(w)return c(w,S)}else if(m)return g(m,S)},has:function(S){if(o&&S&&(typeof S=="object"||typeof S=="function")){if(b)return l(b,S)}else if(n){if(w)return d(w,S)}else if(m)return y(m,S);return!1},set:function(S,v){o&&S&&(typeof S=="object"||typeof S=="function")?(b||(b=new o),a(b,S,v)):n?(w||(w=new n),u(w,S,v)):(m||(m={key:{},next:null}),f(m,S,v))}};return k},Vr}function uo(){if(po)return Kr;po=!0;var i=String.prototype.replace,e=/%20/g,t={RFC1738:"RFC1738",RFC3986:"RFC3986"};return Kr={default:t.RFC3986,formatters:{RFC1738:function(r){return i.call(r,e,"+")},RFC3986:function(r){return String(r)}},RFC1738:t.RFC1738,RFC3986:t.RFC3986},Kr}function Ya(){if(mo)return Gr;mo=!0;var i=uo(),e=Object.prototype.hasOwnProperty,t=Array.isArray,r=(function(){for(var b=[],w=0;w<256;++w)b.push("%"+((w<16?"0":"")+w.toString(16)).toUpperCase());return b})(),o=function(b){for(;b.length>1;){var w=b.pop(),m=w.obj[w.prop];if(t(m)){for(var k=[],S=0;S<m.length;++S)typeof m[S]<"u"&&k.push(m[S]);w.obj[w.prop]=k}}},n=function(b,w){for(var m=w&&w.plainObjects?Object.create(null):{},k=0;k<b.length;++k)typeof b[k]<"u"&&(m[k]=b[k]);return m},s=function b(w,m,k){if(!m)return w;if(typeof m!="object"){if(t(w))w.push(m);else if(w&&typeof w=="object")(k&&(k.plainObjects||k.allowPrototypes)||!e.call(Object.prototype,m))&&(w[m]=!0);else return[w,m];return w}if(!w||typeof w!="object")return[w].concat(m);var S=w;return t(w)&&!t(m)&&(S=n(w,k)),t(w)&&t(m)?(m.forEach(function(v,x){if(e.call(w,x)){var E=w[x];E&&typeof E=="object"&&v&&typeof v=="object"?w[x]=b(E,v,k):w.push(v)}else w[x]=v}),w):Object.keys(m).reduce(function(v,x){var E=m[x];return e.call(v,x)?v[x]=b(v[x],E,k):v[x]=E,v},S)},a=function(b,w){return Object.keys(w).reduce(function(m,k){return m[k]=w[k],m},b)},l=function(b,w,m){var k=b.replace(/\+/g," ");if(m==="iso-8859-1")return k.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(k)}catch{return k}},c=1024,u=function(b,w,m,k,S){if(b.length===0)return b;var v=b;if(typeof b=="symbol"?v=Symbol.prototype.toString.call(b):typeof b!="string"&&(v=String(b)),m==="iso-8859-1")return escape(v).replace(/%u[0-9a-f]{4}/gi,function(T){return"%26%23"+parseInt(T.slice(2),16)+"%3B"});for(var x="",E=0;E<v.length;E+=c){for(var I=v.length>=c?v.slice(E,E+c):v,P=[],O=0;O<I.length;++O){var B=I.charCodeAt(O);if(B===45||B===46||B===95||B===126||B>=48&&B<=57||B>=65&&B<=90||B>=97&&B<=122||S===i.RFC1738&&(B===40||B===41)){P[P.length]=I.charAt(O);continue}if(B<128){P[P.length]=r[B];continue}if(B<2048){P[P.length]=r[192|B>>6]+r[128|B&63];continue}if(B<55296||B>=57344){P[P.length]=r[224|B>>12]+r[128|B>>6&63]+r[128|B&63];continue}O+=1,B=65536+((B&1023)<<10|I.charCodeAt(O)&1023),P[P.length]=r[240|B>>18]+r[128|B>>12&63]+r[128|B>>6&63]+r[128|B&63]}x+=P.join("")}return x},d=function(b){for(var w=[{obj:{o:b},prop:"o"}],m=[],k=0;k<w.length;++k)for(var S=w[k],v=S.obj[S.prop],x=Object.keys(v),E=0;E<x.length;++E){var I=x[E],P=v[I];typeof P=="object"&&P!==null&&m.indexOf(P)===-1&&(w.push({obj:v,prop:I}),m.push(P))}return o(w),b},p=function(b){return Object.prototype.toString.call(b)==="[object RegExp]"},g=function(b){return!b||typeof b!="object"?!1:!!(b.constructor&&b.constructor.isBuffer&&b.constructor.isBuffer(b))},f=function(b,w){return[].concat(b,w)},y=function(b,w){if(t(b)){for(var m=[],k=0;k<b.length;k+=1)m.push(w(b[k]));return m}return w(b)};return Gr={arrayToObject:n,assign:a,combine:f,compact:d,decode:l,encode:u,isBuffer:g,isRegExp:p,maybeMap:y,merge:s},Gr}function Nd(){if(go)return Yr;go=!0;var i=Rd(),e=Ya(),t=uo(),r=Object.prototype.hasOwnProperty,o={brackets:function(y){return y+"[]"},comma:"comma",indices:function(y,b){return y+"["+b+"]"},repeat:function(y){return y}},n=Array.isArray,s=Array.prototype.push,a=function(y,b){s.apply(y,n(b)?b:[b])},l=Date.prototype.toISOString,c=t.default,u={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:e.encode,encodeValuesOnly:!1,format:c,formatter:t.formatters[c],indices:!1,serializeDate:function(y){return l.call(y)},skipNulls:!1,strictNullHandling:!1},d=function(y){return typeof y=="string"||typeof y=="number"||typeof y=="boolean"||typeof y=="symbol"||typeof y=="bigint"},p={},g=function y(b,w,m,k,S,v,x,E,I,P,O,B,T,$,M,U,oe,Y){for(var W=b,ee=Y,D=0,X=!1;(ee=ee.get(p))!==void 0&&!X;){var L=ee.get(b);if(D+=1,typeof L<"u"){if(L===D)throw new RangeError("Cyclic object value");X=!0}typeof ee.get(p)>"u"&&(D=0)}if(typeof P=="function"?W=P(w,W):W instanceof Date?W=T(W):m==="comma"&&n(W)&&(W=e.maybeMap(W,function(R){return R instanceof Date?T(R):R})),W===null){if(v)return I&&!U?I(w,u.encoder,oe,"key",$):w;W=""}if(d(W)||e.isBuffer(W)){if(I){var J=U?w:I(w,u.encoder,oe,"key",$);return[M(J)+"="+M(I(W,u.encoder,oe,"value",$))]}return[M(w)+"="+M(String(W))]}var ge=[];if(typeof W>"u")return ge;var re;if(m==="comma"&&n(W))U&&I&&(W=e.maybeMap(W,I)),re=[{value:W.length>0?W.join(",")||null:void 0}];else if(n(P))re=P;else{var we=Object.keys(W);re=O?we.sort(O):we}var K=E?w.replace(/\./g,"%2E"):w,j=k&&n(W)&&W.length===1?K+"[]":K;if(S&&n(W)&&W.length===0)return j+"[]";for(var ne=0;ne<re.length;++ne){var z=re[ne],G=typeof z=="object"&&typeof z.value<"u"?z.value:W[z];if(!(x&&G===null)){var Q=B&&E?z.replace(/\./g,"%2E"):z,ye=n(W)?typeof m=="function"?m(j,Q):j:j+(B?"."+Q:"["+Q+"]");Y.set(b,D);var se=i();se.set(p,Y),a(ge,y(G,ye,m,k,S,v,x,E,m==="comma"&&U&&n(W)?null:I,P,O,B,T,$,M,U,oe,se))}}return ge},f=function(y){if(!y)return u;if(typeof y.allowEmptyArrays<"u"&&typeof y.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof y.encodeDotInKeys<"u"&&typeof y.encodeDotInKeys!="boolean")throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(y.encoder!==null&&typeof y.encoder<"u"&&typeof y.encoder!="function")throw new TypeError("Encoder has to be a function.");var b=y.charset||u.charset;if(typeof y.charset<"u"&&y.charset!=="utf-8"&&y.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var w=t.default;if(typeof y.format<"u"){if(!r.call(t.formatters,y.format))throw new TypeError("Unknown format option provided.");w=y.format}var m=t.formatters[w],k=u.filter;(typeof y.filter=="function"||n(y.filter))&&(k=y.filter);var S;if(y.arrayFormat in o?S=y.arrayFormat:"indices"in y?S=y.indices?"indices":"repeat":S=u.arrayFormat,"commaRoundTrip"in y&&typeof y.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var v=typeof y.allowDots>"u"?y.encodeDotInKeys===!0?!0:u.allowDots:!!y.allowDots;return{addQueryPrefix:typeof y.addQueryPrefix=="boolean"?y.addQueryPrefix:u.addQueryPrefix,allowDots:v,allowEmptyArrays:typeof y.allowEmptyArrays=="boolean"?!!y.allowEmptyArrays:u.allowEmptyArrays,arrayFormat:S,charset:b,charsetSentinel:typeof y.charsetSentinel=="boolean"?y.charsetSentinel:u.charsetSentinel,commaRoundTrip:y.commaRoundTrip,delimiter:typeof y.delimiter>"u"?u.delimiter:y.delimiter,encode:typeof y.encode=="boolean"?y.encode:u.encode,encodeDotInKeys:typeof y.encodeDotInKeys=="boolean"?y.encodeDotInKeys:u.encodeDotInKeys,encoder:typeof y.encoder=="function"?y.encoder:u.encoder,encodeValuesOnly:typeof y.encodeValuesOnly=="boolean"?y.encodeValuesOnly:u.encodeValuesOnly,filter:k,format:w,formatter:m,serializeDate:typeof y.serializeDate=="function"?y.serializeDate:u.serializeDate,skipNulls:typeof y.skipNulls=="boolean"?y.skipNulls:u.skipNulls,sort:typeof y.sort=="function"?y.sort:null,strictNullHandling:typeof y.strictNullHandling=="boolean"?y.strictNullHandling:u.strictNullHandling}};return Yr=function(y,b){var w=y,m=f(b),k,S;typeof m.filter=="function"?(S=m.filter,w=S("",w)):n(m.filter)&&(S=m.filter,k=S);var v=[];if(typeof w!="object"||w===null)return"";var x=o[m.arrayFormat],E=x==="comma"&&m.commaRoundTrip;k||(k=Object.keys(w)),m.sort&&k.sort(m.sort);for(var I=i(),P=0;P<k.length;++P){var O=k[P];m.skipNulls&&w[O]===null||a(v,g(w[O],O,x,E,m.allowEmptyArrays,m.strictNullHandling,m.skipNulls,m.encodeDotInKeys,m.encode?m.encoder:null,m.filter,m.sort,m.allowDots,m.serializeDate,m.format,m.formatter,m.encodeValuesOnly,m.charset,I))}var B=v.join(m.delimiter),T=m.addQueryPrefix===!0?"?":"";return m.charsetSentinel&&(m.charset==="iso-8859-1"?T+="utf8=%26%2310003%3B&":T+="utf8=%E2%9C%93&"),B.length>0?T+B:""},Yr}function jd(){if(yo)return Jr;yo=!0;var i=Ya(),e=Object.prototype.hasOwnProperty,t=Array.isArray,r={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:i.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},o=function(p){return p.replace(/&#(\d+);/g,function(g,f){return String.fromCharCode(parseInt(f,10))})},n=function(p,g){return p&&typeof p=="string"&&g.comma&&p.indexOf(",")>-1?p.split(","):p},s="utf8=%26%2310003%3B",a="utf8=%E2%9C%93",l=function(p,g){var f={__proto__:null},y=g.ignoreQueryPrefix?p.replace(/^\?/,""):p;y=y.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var b=g.parameterLimit===1/0?void 0:g.parameterLimit,w=y.split(g.delimiter,b),m=-1,k,S=g.charset;if(g.charsetSentinel)for(k=0;k<w.length;++k)w[k].indexOf("utf8=")===0&&(w[k]===a?S="utf-8":w[k]===s&&(S="iso-8859-1"),m=k,k=w.length);for(k=0;k<w.length;++k)if(k!==m){var v=w[k],x=v.indexOf("]="),E=x===-1?v.indexOf("="):x+1,I,P;E===-1?(I=g.decoder(v,r.decoder,S,"key"),P=g.strictNullHandling?null:""):(I=g.decoder(v.slice(0,E),r.decoder,S,"key"),P=i.maybeMap(n(v.slice(E+1),g),function(B){return g.decoder(B,r.decoder,S,"value")})),P&&g.interpretNumericEntities&&S==="iso-8859-1"&&(P=o(P)),v.indexOf("[]=")>-1&&(P=t(P)?[P]:P);var O=e.call(f,I);O&&g.duplicates==="combine"?f[I]=i.combine(f[I],P):(!O||g.duplicates==="last")&&(f[I]=P)}return f},c=function(p,g,f,y){for(var b=y?g:n(g,f),w=p.length-1;w>=0;--w){var m,k=p[w];if(k==="[]"&&f.parseArrays)m=f.allowEmptyArrays&&(b===""||f.strictNullHandling&&b===null)?[]:[].concat(b);else{m=f.plainObjects?Object.create(null):{};var S=k.charAt(0)==="["&&k.charAt(k.length-1)==="]"?k.slice(1,-1):k,v=f.decodeDotInKeys?S.replace(/%2E/g,"."):S,x=parseInt(v,10);!f.parseArrays&&v===""?m={0:b}:!isNaN(x)&&k!==v&&String(x)===v&&x>=0&&f.parseArrays&&x<=f.arrayLimit?(m=[],m[x]=b):v!=="__proto__"&&(m[v]=b)}b=m}return b},u=function(p,g,f,y){if(p){var b=f.allowDots?p.replace(/\.([^.[]+)/g,"[$1]"):p,w=/(\[[^[\]]*])/,m=/(\[[^[\]]*])/g,k=f.depth>0&&w.exec(b),S=k?b.slice(0,k.index):b,v=[];if(S){if(!f.plainObjects&&e.call(Object.prototype,S)&&!f.allowPrototypes)return;v.push(S)}for(var x=0;f.depth>0&&(k=m.exec(b))!==null&&x<f.depth;){if(x+=1,!f.plainObjects&&e.call(Object.prototype,k[1].slice(1,-1))&&!f.allowPrototypes)return;v.push(k[1])}if(k){if(f.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+f.depth+" and strictDepth is true");v.push("["+b.slice(k.index)+"]")}return c(v,g,f,y)}},d=function(p){if(!p)return r;if(typeof p.allowEmptyArrays<"u"&&typeof p.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof p.decodeDotInKeys<"u"&&typeof p.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(p.decoder!==null&&typeof p.decoder<"u"&&typeof p.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof p.charset<"u"&&p.charset!=="utf-8"&&p.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var g=typeof p.charset>"u"?r.charset:p.charset,f=typeof p.duplicates>"u"?r.duplicates:p.duplicates;if(f!=="combine"&&f!=="first"&&f!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var y=typeof p.allowDots>"u"?p.decodeDotInKeys===!0?!0:r.allowDots:!!p.allowDots;return{allowDots:y,allowEmptyArrays:typeof p.allowEmptyArrays=="boolean"?!!p.allowEmptyArrays:r.allowEmptyArrays,allowPrototypes:typeof p.allowPrototypes=="boolean"?p.allowPrototypes:r.allowPrototypes,allowSparse:typeof p.allowSparse=="boolean"?p.allowSparse:r.allowSparse,arrayLimit:typeof p.arrayLimit=="number"?p.arrayLimit:r.arrayLimit,charset:g,charsetSentinel:typeof p.charsetSentinel=="boolean"?p.charsetSentinel:r.charsetSentinel,comma:typeof p.comma=="boolean"?p.comma:r.comma,decodeDotInKeys:typeof p.decodeDotInKeys=="boolean"?p.decodeDotInKeys:r.decodeDotInKeys,decoder:typeof p.decoder=="function"?p.decoder:r.decoder,delimiter:typeof p.delimiter=="string"||i.isRegExp(p.delimiter)?p.delimiter:r.delimiter,depth:typeof p.depth=="number"||p.depth===!1?+p.depth:r.depth,duplicates:f,ignoreQueryPrefix:p.ignoreQueryPrefix===!0,interpretNumericEntities:typeof p.interpretNumericEntities=="boolean"?p.interpretNumericEntities:r.interpretNumericEntities,parameterLimit:typeof p.parameterLimit=="number"?p.parameterLimit:r.parameterLimit,parseArrays:p.parseArrays!==!1,plainObjects:typeof p.plainObjects=="boolean"?p.plainObjects:r.plainObjects,strictDepth:typeof p.strictDepth=="boolean"?!!p.strictDepth:r.strictDepth,strictNullHandling:typeof p.strictNullHandling=="boolean"?p.strictNullHandling:r.strictNullHandling}};return Jr=function(p,g){var f=d(g);if(p===""||p===null||typeof p>"u")return f.plainObjects?Object.create(null):{};for(var y=typeof p=="string"?l(p,f):p,b=f.plainObjects?Object.create(null):{},w=Object.keys(y),m=0;m<w.length;++m){var k=w[m],S=u(k,y[k],f,typeof p=="string");b=i.merge(b,S,f)}return f.allowSparse===!0?b:i.compact(b)},Jr}function Ud(){if(bo)return Qr;bo=!0;var i=Nd(),e=jd(),t=uo();return Qr={formats:t,parse:e,stringify:i},Qr}function Dd(){if(vo)return It;vo=!0;var i=Et;function e(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var t=/^([a-z0-9.+-]+:)/i,r=/:[0-9]*$/,o=/^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/,n=["<",">",'"',"`"," ","\r",`
|
|
7
7
|
`," "],s=["{","}","|","\\","^","`"].concat(n),a=["'"].concat(s),l=["%","/","?",";","#"].concat(a),c=["/","?","#"],u=255,d=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},f={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b=Ud();function w(v,x,E){if(v&&typeof v=="object"&&v instanceof e)return v;var I=new e;return I.parse(v,x,E),I}e.prototype.parse=function(v,x,E){if(typeof v!="string")throw new TypeError("Parameter 'url' must be a string, not "+typeof v);var I=v.indexOf("?"),P=I!==-1&&I<v.indexOf("#")?"?":"#",O=v.split(P),B=/\\/g;O[0]=O[0].replace(B,"/"),v=O.join(P);var T=v;if(T=T.trim(),!E&&v.split("#").length===1){var $=o.exec(T);if($)return this.path=T,this.href=T,this.pathname=$[1],$[2]?(this.search=$[2],x?this.query=b.parse(this.search.substr(1)):this.query=this.search.substr(1)):x&&(this.search="",this.query={}),this}var M=t.exec(T);if(M){M=M[0];var U=M.toLowerCase();this.protocol=U,T=T.substr(M.length)}if(E||M||T.match(/^\/\/[^@/]+@[^@/]+/)){var oe=T.substr(0,2)==="//";oe&&!(M&&f[M])&&(T=T.substr(2),this.slashes=!0)}if(!f[M]&&(oe||M&&!y[M])){for(var Y=-1,W=0;W<c.length;W++){var ee=T.indexOf(c[W]);ee!==-1&&(Y===-1||ee<Y)&&(Y=ee)}var D,X;Y===-1?X=T.lastIndexOf("@"):X=T.lastIndexOf("@",Y),X!==-1&&(D=T.slice(0,X),T=T.slice(X+1),this.auth=decodeURIComponent(D)),Y=-1;for(var W=0;W<l.length;W++){var ee=T.indexOf(l[W]);ee!==-1&&(Y===-1||ee<Y)&&(Y=ee)}Y===-1&&(Y=T.length),this.host=T.slice(0,Y),T=T.slice(Y),this.parseHost(),this.hostname=this.hostname||"";var L=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!L)for(var J=this.hostname.split(/\./),W=0,ge=J.length;W<ge;W++){var re=J[W];if(re&&!re.match(d)){for(var we="",K=0,j=re.length;K<j;K++)re.charCodeAt(K)>127?we+="x":we+=re[K];if(!we.match(d)){var ne=J.slice(0,W),z=J.slice(W+1),G=re.match(p);G&&(ne.push(G[1]),z.unshift(G[2])),z.length&&(T="/"+z.join(".")+T),this.hostname=ne.join(".");break}}}this.hostname.length>u?this.hostname="":this.hostname=this.hostname.toLowerCase(),L||(this.hostname=i.toASCII(this.hostname));var Q=this.port?":"+this.port:"",ye=this.hostname||"";this.host=ye+Q,this.href+=this.host,L&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),T[0]!=="/"&&(T="/"+T))}if(!g[U])for(var W=0,ge=a.length;W<ge;W++){var se=a[W];if(T.indexOf(se)!==-1){var R=encodeURIComponent(se);R===se&&(R=escape(se)),T=T.split(se).join(R)}}var q=T.indexOf("#");q!==-1&&(this.hash=T.substr(q),T=T.slice(0,q));var te=T.indexOf("?");if(te!==-1?(this.search=T.substr(te),this.query=T.substr(te+1),x&&(this.query=b.parse(this.query)),T=T.slice(0,te)):x&&(this.search="",this.query={}),T&&(this.pathname=T),y[U]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var Q=this.pathname||"",he=this.search||"";this.path=Q+he}return this.href=this.format(),this};function m(v){return typeof v=="string"&&(v=w(v)),v instanceof e?v.format():e.prototype.format.call(v)}e.prototype.format=function(){var v=this.auth||"";v&&(v=encodeURIComponent(v),v=v.replace(/%3A/i,":"),v+="@");var x=this.protocol||"",E=this.pathname||"",I=this.hash||"",P=!1,O="";this.host?P=v+this.host:this.hostname&&(P=v+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(P+=":"+this.port)),this.query&&typeof this.query=="object"&&Object.keys(this.query).length&&(O=b.stringify(this.query,{arrayFormat:"repeat",addQueryPrefix:!1}));var B=this.search||O&&"?"+O||"";return x&&x.substr(-1)!==":"&&(x+=":"),this.slashes||(!x||y[x])&&P!==!1?(P="//"+(P||""),E&&E.charAt(0)!=="/"&&(E="/"+E)):P||(P=""),I&&I.charAt(0)!=="#"&&(I="#"+I),B&&B.charAt(0)!=="?"&&(B="?"+B),E=E.replace(/[?#]/g,function(T){return encodeURIComponent(T)}),B=B.replace("#","%23"),x+P+E+B+I};function k(v,x){return w(v,!1,!0).resolve(x)}e.prototype.resolve=function(v){return this.resolveObject(w(v,!1,!0)).format()};function S(v,x){return v?w(v,!1,!0).resolveObject(x):x}return e.prototype.resolveObject=function(v){if(typeof v=="string"){var x=new e;x.parse(v,!1,!0),v=x}for(var E=new e,I=Object.keys(this),P=0;P<I.length;P++){var O=I[P];E[O]=this[O]}if(E.hash=v.hash,v.href==="")return E.href=E.format(),E;if(v.slashes&&!v.protocol){for(var B=Object.keys(v),T=0;T<B.length;T++){var $=B[T];$!=="protocol"&&(E[$]=v[$])}return y[E.protocol]&&E.hostname&&!E.pathname&&(E.pathname="/",E.path=E.pathname),E.href=E.format(),E}if(v.protocol&&v.protocol!==E.protocol){if(!y[v.protocol]){for(var M=Object.keys(v),U=0;U<M.length;U++){var oe=M[U];E[oe]=v[oe]}return E.href=E.format(),E}if(E.protocol=v.protocol,!v.host&&!f[v.protocol]){for(var ge=(v.pathname||"").split("/");ge.length&&!(v.host=ge.shift()););v.host||(v.host=""),v.hostname||(v.hostname=""),ge[0]!==""&&ge.unshift(""),ge.length<2&&ge.unshift(""),E.pathname=ge.join("/")}else E.pathname=v.pathname;if(E.search=v.search,E.query=v.query,E.host=v.host||"",E.auth=v.auth,E.hostname=v.hostname||v.host,E.port=v.port,E.pathname||E.search){var Y=E.pathname||"",W=E.search||"";E.path=Y+W}return E.slashes=E.slashes||v.slashes,E.href=E.format(),E}var ee=E.pathname&&E.pathname.charAt(0)==="/",D=v.host||v.pathname&&v.pathname.charAt(0)==="/",X=D||ee||E.host&&v.pathname,L=X,J=E.pathname&&E.pathname.split("/")||[],ge=v.pathname&&v.pathname.split("/")||[],re=E.protocol&&!y[E.protocol];if(re&&(E.hostname="",E.port=null,E.host&&(J[0]===""?J[0]=E.host:J.unshift(E.host)),E.host="",v.protocol&&(v.hostname=null,v.port=null,v.host&&(ge[0]===""?ge[0]=v.host:ge.unshift(v.host)),v.host=null),X=X&&(ge[0]===""||J[0]==="")),D)E.host=v.host||v.host===""?v.host:E.host,E.hostname=v.hostname||v.hostname===""?v.hostname:E.hostname,E.search=v.search,E.query=v.query,J=ge;else if(ge.length)J||(J=[]),J.pop(),J=J.concat(ge),E.search=v.search,E.query=v.query;else if(v.search!=null){if(re){E.host=J.shift(),E.hostname=E.host;var we=E.host&&E.host.indexOf("@")>0?E.host.split("@"):!1;we&&(E.auth=we.shift(),E.hostname=we.shift(),E.host=E.hostname)}return E.search=v.search,E.query=v.query,(E.pathname!==null||E.search!==null)&&(E.path=(E.pathname?E.pathname:"")+(E.search?E.search:"")),E.href=E.format(),E}if(!J.length)return E.pathname=null,E.search?E.path="/"+E.search:E.path=null,E.href=E.format(),E;for(var K=J.slice(-1)[0],j=(E.host||v.host||J.length>1)&&(K==="."||K==="..")||K==="",ne=0,z=J.length;z>=0;z--)K=J[z],K==="."?J.splice(z,1):K===".."?(J.splice(z,1),ne++):ne&&(J.splice(z,1),ne--);if(!X&&!L)for(;ne--;ne)J.unshift("..");X&&J[0]!==""&&(!J[0]||J[0].charAt(0)!=="/")&&J.unshift(""),j&&J.join("/").substr(-1)!=="/"&&J.push("");var G=J[0]===""||J[0]&&J[0].charAt(0)==="/";if(re){E.hostname=G?"":J.length?J.shift():"",E.host=E.hostname;var we=E.host&&E.host.indexOf("@")>0?E.host.split("@"):!1;we&&(E.auth=we.shift(),E.hostname=we.shift(),E.host=E.hostname)}return X=X||E.host&&J.length,X&&!G&&J.unshift(""),J.length>0?E.pathname=J.join("/"):(E.pathname=null,E.path=null),(E.pathname!==null||E.search!==null)&&(E.path=(E.pathname?E.pathname:"")+(E.search?E.search:"")),E.auth=v.auth||E.auth,E.slashes=E.slashes||v.slashes,E.href=E.format(),E},e.prototype.parseHost=function(){var v=this.host,x=r.exec(v);x&&(x=x[0],x!==":"&&(this.port=x.substr(1)),v=v.substr(0,v.length-x.length)),v&&(this.hostname=v)},It.parse=w,It.resolve=k,It.resolveObject=S,It.format=m,It.Url=e,It}function Ja(i){if(typeof i=="string")i=new URL(i);else if(!(i instanceof URL))throw new Deno.errors.InvalidData("invalid argument path , must be a string or URL");if(i.protocol!=="file:")throw new Deno.errors.InvalidData("invalid url scheme");return Xr?Bd(i):Fd(i)}function Bd(i){let e=i.hostname,t=i.pathname;for(let r=0;r<t.length;r++)if(t[r]==="%"){let o=t.codePointAt(r+2)||32;if(t[r+1]==="2"&&o===102||t[r+1]==="5"&&o===99)throw new Deno.errors.InvalidData("must not include encoded \\ or / characters")}if(t=t.replace(ul,"\\"),t=decodeURIComponent(t),e!=="")return`\\\\${e}${t}`;{let r=t.codePointAt(1)|32,o=t[2];if(r<ll||r>cl||o!==":")throw new Deno.errors.InvalidData("file url path must be absolute");return t.slice(1)}}function Fd(i){if(i.hostname!=="")throw new Deno.errors.InvalidData("invalid file url hostname");let e=i.pathname;for(let t=0;t<e.length;t++)if(e[t]==="%"){let r=e.codePointAt(t+2)||32;if(e[t+1]==="2"&&r===102)throw new Deno.errors.InvalidData("must not include encoded / characters")}return decodeURIComponent(e)}function Qa(i){let e=co.resolve(i),t=i.charCodeAt(i.length-1);(t===al||Xr&&t===sl)&&e[e.length-1]!==co.sep&&(e+="/");let r=new URL("file://");return e.includes("%")&&(e=e.replace(dl,"%25")),!Xr&&e.includes("\\")&&(e=e.replace(hl,"%5C")),e.includes(`
|
|
8
|
-
`)&&(e=e.replace(fl,"%0A")),e.includes("\r")&&(e=e.replace(pl,"%0D")),e.includes(" ")&&(e=e.replace(ml,"%09")),r.pathname=e,r}var Xa,Wr,ho,zr,Vr,fo,Kr,po,Gr,mo,Yr,go,Jr,yo,Qr,bo,It,vo,ze,Za,el,tl,rl,nl,il,ol,sl,al,ll,cl,Xr,ul,dl,hl,fl,pl,ml,$d=Ye(()=>{le(),ue(),ce(),id(),wd(),Md(),Ka(),Xa=Object.freeze(Object.create(null)),Wr={},ho=!1,zr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:global,Vr={},fo=!1,Kr={},po=!1,Gr={},mo=!1,Yr={},go=!1,Jr={},yo=!1,Qr={},bo=!1,It={},vo=!1,ze=Dd(),ze.parse,ze.resolve,ze.resolveObject,ze.format,ze.Url,Za=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,ze.URL=typeof URL<"u"?URL:null,ze.pathToFileURL=Qa,ze.fileURLToPath=Ja,el=ze.Url,tl=ze.format,rl=ze.resolve,nl=ze.resolveObject,il=ze.parse,ol=ze.URL,sl=92,al=47,ll=97,cl=122,Xr=Za==="win32",ul=/\//g,dl=/%/g,hl=/\\/g,fl=/\n/g,pl=/\r/g,ml=/\t/g}),qd=pe((i,e)=>{le(),ue(),ce(),e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),wo=pe(i=>{le(),ue(),ce(),Object.defineProperty(i,"__esModule",{value:!0}),i.BufferedDuplex=void 0,i.writev=r;var e=Nt(),t=(qe(),Ne($e));function r(n,s){let a=new Array(n.length);for(let l=0;l<n.length;l++)typeof n[l].chunk=="string"?a[l]=t.Buffer.from(n[l].chunk,"utf8"):a[l]=n[l].chunk;this._write(t.Buffer.concat(a),"binary",s)}var o=class extends e.Duplex{socket;proxy;isSocketOpen;writeQueue;constructor(n,s,a){super({objectMode:!0}),this.proxy=s,this.socket=a,this.writeQueue=[],n.objectMode||(this._writev=r.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{!this.destroyed&&this.readable&&this.push(l)})}_read(n){this.proxy.read(n)}_write(n,s,a){this.isSocketOpen?this.writeToProxy(n,s,a):this.writeQueue.push({chunk:n,encoding:s,cb:a})}_final(n){this.writeQueue=[],this.proxy.end(n)}_destroy(n,s){this.writeQueue=[],this.proxy.destroy(),s(n)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(n,s,a){this.proxy.write(n,s)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:n,encoding:s,cb:a}=this.writeQueue.shift();this.writeToProxy(n,s,a)}}};i.BufferedDuplex=o}),Zr=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(w){return w&&w.__esModule?w:{default:w}};Object.defineProperty(i,"__esModule",{value:!0}),i.streamBuilder=i.browserStreamBuilder=void 0;var t=(qe(),Ne($e)),r=e(qd()),o=e(gt()),n=Nt(),s=e(Ir()),a=wo(),l=(0,o.default)("mqttjs:ws"),c=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function u(w,m){let k=`${w.protocol}://${w.hostname}:${w.port}${w.path}`;return typeof w.transformWsUrl=="function"&&(k=w.transformWsUrl(k,w,m)),k}function d(w){let m=w;return w.port||(w.protocol==="wss"?m.port=443:m.port=80),w.path||(m.path="/"),w.wsOptions||(m.wsOptions={}),!s.default&&!w.forceNativeWebSocket&&w.protocol==="wss"&&c.forEach(k=>{Object.prototype.hasOwnProperty.call(w,k)&&!Object.prototype.hasOwnProperty.call(w.wsOptions,k)&&(m.wsOptions[k]=w[k])}),m}function p(w){let m=d(w);if(m.hostname||(m.hostname=m.host),!m.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let k=new URL(document.URL);m.hostname=k.hostname,m.port||(m.port=Number(k.port))}return m.objectMode===void 0&&(m.objectMode=!(m.binary===!0||m.binary===void 0)),m}function g(w,m,k){l("createWebSocket"),l(`protocol: ${k.protocolId} ${k.protocolVersion}`);let S=k.protocolId==="MQIsdp"&&k.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${m} and protocol: ${S}`);let v;return k.createWebsocket?v=k.createWebsocket(m,[S],k):v=new r.default(m,[S],k.wsOptions),v}function f(w,m){let k=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt",S=u(m,w),v;return m.createWebsocket?v=m.createWebsocket(S,[k],m):v=new WebSocket(S,[k]),v.binaryType="arraybuffer",v}var y=(w,m)=>{l("streamBuilder");let k=d(m);k.hostname=k.hostname||k.host||"localhost";let S=u(k,w),v=g(w,S,k),x=r.default.createWebSocketStream(v,k.wsOptions);return x.url=S,v.on("close",()=>{x.destroy()}),x};i.streamBuilder=y;var b=(w,m)=>{l("browserStreamBuilder");let k,S=p(m).browserBufferSize||1024*512,v=m.browserBufferTimeout||1e3,x=!m.objectMode,E=f(w,m),I=O(m,U,oe);m.objectMode||(I._writev=a.writev.bind(I)),I.on("close",()=>{E.close()});let P=typeof E.addEventListener<"u";E.readyState===E.OPEN?(k=I,k.socket=E):(k=new a.BufferedDuplex(m,I,E),P?E.addEventListener("open",B):E.onopen=B),P?(E.addEventListener("close",T),E.addEventListener("error",$),E.addEventListener("message",M)):(E.onclose=T,E.onerror=$,E.onmessage=M);function O(Y,W,ee){let D=new n.Transform({objectMode:Y.objectMode});return D._write=W,D._flush=ee,D}function B(){l("WebSocket onOpen"),k instanceof a.BufferedDuplex&&k.socketReady()}function T(Y){l("WebSocket onClose",Y),k.end(),k.destroy()}function $(Y){l("WebSocket onError",Y);let W=new Error("WebSocket error");W.event=Y,k.destroy(W)}async function M(Y){if(!I||!I.readable||!I.writable)return;let{data:W}=Y;W instanceof ArrayBuffer?W=t.Buffer.from(W):W instanceof Blob?W=t.Buffer.from(await new Response(W).arrayBuffer()):W=t.Buffer.from(W,"utf8"),I.push(W)}function U(Y,W,ee){if(E.bufferedAmount>S){setTimeout(U,v,Y,W,ee);return}x&&typeof Y=="string"&&(Y=t.Buffer.from(Y,"utf8"));try{E.send(Y)}catch(D){return ee(D)}ee()}function oe(Y){E.close(),Y()}return k};i.browserStreamBuilder=b}),ko={};$t(ko,{Server:()=>De,Socket:()=>De,Stream:()=>De,_createServerHandle:()=>De,_normalizeArgs:()=>De,_setSimultaneousAccepts:()=>De,connect:()=>De,createConnection:()=>De,createServer:()=>De,default:()=>gl,isIP:()=>De,isIPv4:()=>De,isIPv6:()=>De});function De(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var gl,yl=Ye(()=>{le(),ue(),ce(),gl={_createServerHandle:De,_normalizeArgs:De,_setSimultaneousAccepts:De,connect:De,createConnection:De,createServer:De,isIP:De,isIPv4:De,isIPv6:De,Server:De,Socket:De,Stream:De}}),bl=pe((i,e)=>{le(),ue(),ce(),e.exports={}}),vl=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(i,"__esModule",{value:!0});var t=e((yl(),Ne(ko))),r=e(gt()),o=e(bl()),n=(0,r.default)("mqttjs:tcp"),s=(a,l)=>{if(l.port=l.port||1883,l.hostname=l.hostname||l.host||"localhost",l.socksProxy)return(0,o.default)(l.hostname,l.port,l.socksProxy,{timeout:l.socksTimeout});let{port:c,path:u}=l,d=l.hostname;return n("port %d and host %s",c,d),t.default.createConnection({port:c,host:d,path:u})};i.default=s}),wl={};$t(wl,{default:()=>kl});var kl,Hd=Ye(()=>{le(),ue(),ce(),kl={}}),_l=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(i,"__esModule",{value:!0});var t=(Hd(),Ne(wl)),r=e((yl(),Ne(ko))),o=e(gt()),n=e(bl()),s=(0,o.default)("mqttjs:tls");function a(c){let{host:u,port:d,socksProxy:p,...g}=c;if(p!==void 0){let f=(0,n.default)(u,d,p,{timeout:c.socksTimeout});return(0,t.connect)({...g,socket:f})}return(0,t.connect)(c)}var l=(c,u)=>{u.port=u.port||8883,u.host=u.hostname||u.host||"localhost",r.default.isIP(u.host)===0&&(u.servername=u.host),u.rejectUnauthorized=u.rejectUnauthorized!==!1,delete u.path,s("port %d host %s rejectUnauthorized %b",u.port,u.host,u.rejectUnauthorized);let d=a(u);d.on("secureConnect",()=>{u.rejectUnauthorized&&!d.authorized?d.emit("error",new Error("TLS not authorized")):d.removeListener("error",p)});function p(g){u.rejectUnauthorized&&c.emit("error",g),d.end()}return d.on("error",p),d};i.default=l}),Sl=pe(i=>{le(),ue(),ce(),Object.defineProperty(i,"__esModule",{value:!0});var e=(qe(),Ne($e)),t=Nt(),r=wo(),o,n,s;function a(){let p=new t.Transform;return p._write=(g,f,y)=>{o.send({data:g.buffer,success(){y()},fail(b){y(new Error(b))}})},p._flush=g=>{o.close({success(){g()}})},p}function l(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function c(p,g){let f=p.protocol==="wxs"?"wss":"ws",y=`${f}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(y=`${f}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(y=p.transformWsUrl(y,p,g)),y}function u(){o.onOpen(()=>{s.socketReady()}),o.onMessage(p=>{let{data:g}=p;g instanceof ArrayBuffer?g=e.Buffer.from(g):g=e.Buffer.from(g,"utf8"),n.push(g)}),o.onClose(()=>{s.emit("close"),s.end(),s.destroy()}),o.onError(p=>{let g=new Error(p.errMsg);s.destroy(g)})}var d=(p,g)=>{if(g.hostname=g.hostname||g.host,!g.hostname)throw new Error("Could not determine host. Specify host manually.");let f=g.protocolId==="MQIsdp"&&g.protocolVersion===3?"mqttv3.1":"mqtt";l(g);let y=c(g,p);o=wx.connectSocket({url:y,protocols:[f]}),n=a(),s=new r.BufferedDuplex(g,n,o),s._destroy=(w,m)=>{o.close({success(){m&&m(w)}})};let b=s.destroy;return s.destroy=(w,m)=>(s.destroy=b,setTimeout(()=>{o.close({fail(){s._destroy(w,m)}})},0),s),u(),s};i.default=d}),xl=pe(i=>{le(),ue(),ce(),Object.defineProperty(i,"__esModule",{value:!0});var e=(qe(),Ne($e)),t=Nt(),r=wo(),o,n,s,a=!1;function l(){let g=new t.Transform;return g._write=(f,y,b)=>{o.sendSocketMessage({data:f.buffer,success(){b()},fail(){b(new Error)}})},g._flush=f=>{o.closeSocket({success(){f()}})},g}function c(g){g.hostname||(g.hostname="localhost"),g.path||(g.path="/"),g.wsOptions||(g.wsOptions={})}function u(g,f){let y=g.protocol==="alis"?"wss":"ws",b=`${y}://${g.hostname}${g.path}`;return g.port&&g.port!==80&&g.port!==443&&(b=`${y}://${g.hostname}:${g.port}${g.path}`),typeof g.transformWsUrl=="function"&&(b=g.transformWsUrl(b,g,f)),b}function d(){a||(a=!0,o.onSocketOpen(()=>{s.socketReady()}),o.onSocketMessage(g=>{if(typeof g.data=="string"){let f=e.Buffer.from(g.data,"base64");n.push(f)}else{let f=new FileReader;f.addEventListener("load",()=>{if(f.result instanceof ArrayBuffer){n.push(e.Buffer.from(f.result));return}n.push(e.Buffer.from(f.result,"utf-8"))}),f.readAsArrayBuffer(g.data)}}),o.onSocketClose(()=>{s.end(),s.destroy()}),o.onSocketError(g=>{s.destroy(g)}))}var p=(g,f)=>{if(f.hostname=f.hostname||f.host,!f.hostname)throw new Error("Could not determine host. Specify host manually.");let y=f.protocolId==="MQIsdp"&&f.protocolVersion===3?"mqttv3.1":"mqtt";c(f);let b=u(f,g);return o=f.my,o.connectSocket({url:b,protocols:y}),n=l(),s=new r.BufferedDuplex(f,n,o),d(),s};i.default=p}),Wd=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(i,"__esModule",{value:!0}),i.connectAsync=u;var t=e(gt()),r=e(($d(),Ne(Ga))),o=e(Ei()),n=e(Ir());typeof je?.nextTick!="function"&&(je.nextTick=setImmediate);var s=(0,t.default)("mqttjs"),a=null;function l(d){let p;if(d.auth)if(p=d.auth.match(/^(.+):(.+)$/),p){let[,g,f]=p;d.username=g,d.password=f}else d.username=d.auth}function c(d,p){if(s("connecting to an MQTT broker..."),typeof d=="object"&&!p&&(p=d,d=""),p=p||{},d&&typeof d=="string"){let y=r.default.parse(d,!0),b={};if(y.port!=null&&(b.port=Number(y.port)),b.host=y.hostname,b.query=y.query,b.auth=y.auth,b.protocol=y.protocol,b.path=y.path,p={...b,...p},!p.protocol)throw new Error("Missing protocol");p.protocol=p.protocol.replace(/:$/,"")}if(p.unixSocket=p.unixSocket||p.protocol?.includes("+unix"),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!p.protocol?.startsWith("ws")&&!p.protocol?.startsWith("wx")&&delete p.path,l(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),n.default||p.unixSocket?p.socksProxy=void 0:p.socksProxy===void 0&&typeof je<"u"&&(p.socksProxy=je.env.MQTTJS_SOCKS_PROXY),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!n.default&&!p.forceNativeWebSocket?(a.ws=Zr().streamBuilder,a.wss=Zr().streamBuilder,a.mqtt=vl().default,a.tcp=vl().default,a.ssl=_l().default,a.tls=a.ssl,a.mqtts=_l().default):(a.ws=Zr().browserStreamBuilder,a.wss=Zr().browserStreamBuilder,a.wx=Sl().default,a.wxs=Sl().default,a.ali=xl().default,a.alis=xl().default)),!a[p.protocol]){let y=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((b,w)=>y&&w%2===0?!1:typeof a[b]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function g(y){return p.servers&&((!y._reconnectCount||y._reconnectCount===p.servers.length)&&(y._reconnectCount=0),p.host=p.servers[y._reconnectCount].host,p.port=p.servers[y._reconnectCount].port,p.protocol=p.servers[y._reconnectCount].protocol?p.servers[y._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,y._reconnectCount++),s("calling streambuilder for",p.protocol),a[p.protocol](y,p)}let f=new o.default(g,p);return f.on("error",()=>{}),f}function u(d,p,g=!0){return new Promise((f,y)=>{let b=c(d,p),w={connect:k=>{m(),f(b)},end:()=>{m(),f(b)},error:k=>{m(),b.end(),y(k)}};g===!1&&(w.close=()=>{w.error(new Error("Couldn't connect to server"))});function m(){Object.keys(w).forEach(k=>{b.off(k,w[k])})}Object.keys(w).forEach(k=>{b.on(k,w[k])})})}i.default=c}),El=pe(i=>{le(),ue(),ce();var e=i&&i.__createBinding||(Object.create?function(g,f,y,b){b===void 0&&(b=y);var w=Object.getOwnPropertyDescriptor(f,y);(!w||("get"in w?!f.__esModule:w.writable||w.configurable))&&(w={enumerable:!0,get:function(){return f[y]}}),Object.defineProperty(g,b,w)}:function(g,f,y,b){b===void 0&&(b=y),g[b]=f[y]}),t=i&&i.__setModuleDefault||(Object.create?function(g,f){Object.defineProperty(g,"default",{enumerable:!0,value:f})}:function(g,f){g.default=f}),r=i&&i.__importStar||(function(){var g=function(f){return g=Object.getOwnPropertyNames||function(y){var b=[];for(var w in y)Object.prototype.hasOwnProperty.call(y,w)&&(b[b.length]=w);return b},g(f)};return function(f){if(f&&f.__esModule)return f;var y={};if(f!=null)for(var b=g(f),w=0;w<b.length;w++)b[w]!=="default"&&e(y,f,b[w]);return t(y,f),y}})(),o=i&&i.__exportStar||function(g,f){for(var y in g)y!=="default"&&!Object.prototype.hasOwnProperty.call(f,y)&&e(f,g,y)},n=i&&i.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(i,"__esModule",{value:!0}),i.ReasonCodes=i.KeepaliveManager=i.UniqueMessageIdProvider=i.DefaultMessageIdProvider=i.Store=i.MqttClient=i.connectAsync=i.connect=i.Client=void 0;var s=n(Ei());i.MqttClient=s.default;var a=n(Ms());i.DefaultMessageIdProvider=a.default;var l=n(rd());i.UniqueMessageIdProvider=l.default;var c=n(Es());i.Store=c.default;var u=r(Wd());i.connect=u.default,Object.defineProperty(i,"connectAsync",{enumerable:!0,get:function(){return u.connectAsync}});var d=n(Bs());i.KeepaliveManager=d.default,i.Client=s.default,o(Ei(),i),o(zt(),i),o(xs(),i);var p=Er();Object.defineProperty(i,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),zd=pe(i=>{le(),ue(),ce();var e=i&&i.__createBinding||(Object.create?function(s,a,l,c){c===void 0&&(c=l);var u=Object.getOwnPropertyDescriptor(a,l);(!u||("get"in u?!a.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(s,c,u)}:function(s,a,l,c){c===void 0&&(c=l),s[c]=a[l]}),t=i&&i.__setModuleDefault||(Object.create?function(s,a){Object.defineProperty(s,"default",{enumerable:!0,value:a})}:function(s,a){s.default=a}),r=i&&i.__importStar||(function(){var s=function(a){return s=Object.getOwnPropertyNames||function(l){var c=[];for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(c[c.length]=u);return c},s(a)};return function(a){if(a&&a.__esModule)return a;var l={};if(a!=null)for(var c=s(a),u=0;u<c.length;u++)c[u]!=="default"&&e(l,a,c[u]);return t(l,a),l}})(),o=i&&i.__exportStar||function(s,a){for(var l in s)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&e(a,s,l)};Object.defineProperty(i,"__esModule",{value:!0});var n=r(El());i.default=n,o(El(),i)});const Vd=zd();const Kd={inbound:"apps/{appId}/users/{userId}/messages/{conversationId}/clientadded",inboundUpdate:"apps/{appId}/users/{userId}/messages/{conversationId}/{messageId}/update",outbound:"apps/{appId}/outgoing/users/{userId}/messages/{conversationId}/outgoing",presence:"apps/{appId}/users/{userId}/presence/{clientId}",wildcardSubscribe:"apps/{appId}/users/{userId}/#"},Gd=300,Yd={templateId:"7",type:"link",isDeepLink:!0},Jd={channelType:"group",channel:"chat21",requestChannel:"chat21",platform:"WEBSITE",medium:"CHATBUDDY"};class Al{client=null;config;currentToken;clientId;appId;topics;messageHandlers=[];stateHandlers=[];statusUpdateHandlers=[];subscribedTopics=new Set;reconnectAttempt=0;maxReconnectAttempts;reconnectMaxDelayMs;connectedAt=0;disposed=!1;reconnectTimer=null;lifecycleHandlersAttached=!1;onOnlineHandler=null;onVisibilityHandler=null;onPageShowHandler=null;inboundRegex;inboundUpdateRegex;constructor(e){this.config=e,this.currentToken=e.jwtToken,this.appId=e.appId??"tilechat",this.clientId=e.clientId??this.freshClientId(),this.topics={...Kd,...e.topicTemplates??{}},this.maxReconnectAttempts=e.maxReconnectAttempts??1/0,this.reconnectMaxDelayMs=e.reconnectMaxDelayMs??3e4,this.inboundRegex=this.buildTopicRegex(this.topics.inbound,["conversationId"]),this.inboundUpdateRegex=this.buildTopicRegex(this.topics.inboundUpdate,["conversationId","messageId"])}async connect(){if(this.disposed)return;const e=this.renderPresenceTopic(),t=this.config.presencePayloadDisconnected??{disconnected:!0};this.clientId=this.config.clientId??this.freshClientId();const r=this.config.connectTimeoutMs??1e4,o={clientId:this.clientId,username:this.config.mqttUsername??"JWT",password:this.currentToken,clean:!1,resubscribe:!0,reconnectPeriod:0,connectTimeout:r,keepalive:this.config.keepAliveSec??30,protocolVersion:this.config.protocolVersion??4,protocolId:this.config.protocolId??"MQTT"};return this.config.enablePresence!==!1&&(o.will={topic:e,payload:JSON.stringify(t),qos:0,retain:!1}),this.attachLifecycleHandlers(),new Promise((n,s)=>{let a=!1;const l=d=>{a||(a=!0,clearTimeout(u),d())},c=(d,p)=>{a||(this.debugLog("CONNECT_FAIL",{reason:d,message:p?.message}),l(()=>s(p??new Error(`tiledesk-transport: ${d}`))))},u=setTimeout(()=>c("connect-timeout"),r+500);this.client=Vd.connect(this.config.mqttEndpoint,o),this.client.on("connect",()=>{if(this.connectedAt=Date.now(),a||l(()=>n()),this.debugLog("CONNECT",{endpoint:this.config.mqttEndpoint,clientId:this.clientId}),this.notifyStateChange(!0),this.config.enablePresence!==!1){const d=this.config.presencePayloadConnected??{connected:!0};this.client.publish(e,JSON.stringify(d),{qos:0,retain:!1}),this.debugLog("PUBLISH",{topic:e,payload:d})}}),this.client.on("message",(d,p)=>{this.dispatchInbound(d,p)}),this.client.on("close",()=>{if(this.debugLog("CLOSE",{}),this.notifyStateChange(!1),!a){c("socket-closed-pre-connack");return}this.disposed||this.scheduleReconnect()}),this.client.on("error",d=>{this.debugLog("ERROR",{message:d.message}),a||c("mqtt-error",d)}),this.client.on("disconnect",d=>{this.debugLog("DISCONNECT",{reasonCode:d?.reasonCode,properties:d?.properties})}),this.client.on("offline",()=>{this.debugLog("OFFLINE",{}),a||c("mqtt-offline")}),this.client.on("packetsend",d=>{(d.cmd==="subscribe"||d.cmd==="unsubscribe"||d.cmd==="pingreq")&&this.debugLog(d.cmd.toUpperCase(),{topic:d.topic,packetId:d.messageId})})})}freshClientId(){const e=Math.random().toString(36).slice(2,8);return`aikaara_${this.config.userId}_${Date.now()}_${e}`}debugLog(e,t){if(!this.config.debug)return;const r={};for(const[o,n]of Object.entries(t))typeof n=="string"&&n.length>200?r[o]=`${n.slice(0,200)}…(${n.length})`:r[o]=n;console.info(`[tiledesk-mqtt] ${e}`,r)}subscribeWildcard(){if(!this.client)return;const e=this.renderTemplate(this.topics.wildcardSubscribe,{});this.subscribedTopics.has(e)||(this.client.subscribe(e,{qos:this.config.subscribeQos??2}),this.subscribedTopics.add(e))}subscribeToConversation(e){if(!this.client)return;if(this.config.wildcardSubscribe){this.subscribeWildcard();return}const t=this.renderInboundTopic(e);this.subscribedTopics.has(t)||(this.client.subscribe(t,{qos:this.config.subscribeQos??2}),this.subscribedTopics.add(t))}unsubscribeFromConversation(e){if(!this.client)return;const t=this.renderInboundTopic(e);this.subscribedTopics.has(t)&&(this.client.unsubscribe(t),this.subscribedTopics.delete(t))}publishMessage(e,t,r={}){if(!this.client)return;const o=this.buildOutgoingEnvelope(e,{text:t,type:"text",...r});this.publishEnvelope(e,o)}publishFileMessage(e,t){if(!this.client)return;const r={...Yd,...this.config.fileTemplate??{},...Qd(t)},o={metadata:{contentType:"300",templateId:r.templateId,payload:{...r.headerImgSrc?{headerImgSrc:r.headerImgSrc}:{},elements:[{description:t.description??t.fileName,action:{url:t.fileUrl,type:r.type??"link",isDeepLink:r.isDeepLink??!0}}]},...t.metadata??{}}},n={fileMessage:!0,...t.cloudFileId?{cloudFileId:t.cloudFileId}:{},...t.attributes??{}},s=this.buildOutgoingEnvelope(e,{text:JSON.stringify(o),type:"html",attributes:n,metadata:o.metadata});this.publishEnvelope(e,s)}publishRaw(e,t){this.client&&this.publishEnvelope(e,t)}publishReadReceipt(e,t,r=Gd){if(!this.client)return;const o=this.renderTemplate(this.topics.inboundUpdate,{conversationId:e,messageId:t});this.client.publish(o,JSON.stringify({status:r}),{qos:this.config.publishQos??0,retain:!1})}publishChatInitiated(e,t={}){if(!this.client)return;const r=this.buildOutgoingEnvelope(e,{text:"CHAT_INITIATED",type:"text",attributes:{subtype:"info",...t}});this.publishEnvelope(e,r)}onMessage(e){return this.messageHandlers.push(e),()=>{this.messageHandlers=this.messageHandlers.filter(t=>t!==e)}}onStateChange(e){return this.stateHandlers.push(e),()=>{this.stateHandlers=this.stateHandlers.filter(t=>t!==e)}}onStatusUpdate(e){return this.statusUpdateHandlers.push(e),()=>{this.statusUpdateHandlers=this.statusUpdateHandlers.filter(t=>t!==e)}}disconnect(){this.disposed=!0,this.detachLifecycleHandlers(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.client&&(this.subscribedTopics.forEach(e=>this.client.unsubscribe(e)),this.subscribedTopics.clear(),this.client.end(!0),this.client=null),this.messageHandlers=[],this.stateHandlers=[],this.statusUpdateHandlers=[]}get isConnected(){return this.client?.connected??!1}async scheduleReconnect(){if(this.reconnectAttempt>=this.maxReconnectAttempts||this.disposed||this.reconnectTimer)return;if(typeof navigator<"u"&&navigator.onLine===!1){this.debugLog("RECONNECT_SKIP_OFFLINE",{attempt:this.reconnectAttempt});return}this.connectedAt>0&&Date.now()-this.connectedAt>=5e3&&(this.reconnectAttempt=0),this.connectedAt=0;const e=Math.min(1e3*Math.pow(2,this.reconnectAttempt),this.reconnectMaxDelayMs),t=e*.2*(Math.random()*2-1),r=Math.max(0,Math.round(e+t));this.reconnectAttempt++,this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,!this.disposed){if(this.config.tokenProvider)try{this.currentToken=await this.config.tokenProvider()}catch{}try{await this.connect();const o=[...this.subscribedTopics];this.subscribedTopics.clear(),o.forEach(n=>{this.client&&(this.client.subscribe(n,{qos:this.config.subscribeQos??2}),this.subscribedTopics.add(n))})}catch{}}},r)}reconnectNow(e){this.disposed||this.isConnected||typeof navigator<"u"&&navigator.onLine===!1||(this.debugLog("RECONNECT_NOW",{reason:e}),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectAttempt=0,this.scheduleReconnect())}attachLifecycleHandlers(){this.lifecycleHandlersAttached||typeof window>"u"||typeof document>"u"||(this.onOnlineHandler=()=>this.reconnectNow("online"),this.onVisibilityHandler=()=>{document.visibilityState==="visible"&&this.reconnectNow("visible")},this.onPageShowHandler=e=>{e.persisted&&this.reconnectNow("pageshow-bfcache")},window.addEventListener("online",this.onOnlineHandler),document.addEventListener("visibilitychange",this.onVisibilityHandler),window.addEventListener("pageshow",this.onPageShowHandler),this.lifecycleHandlersAttached=!0)}detachLifecycleHandlers(){this.lifecycleHandlersAttached&&(typeof window>"u"||typeof document>"u"||(this.onOnlineHandler&&window.removeEventListener("online",this.onOnlineHandler),this.onVisibilityHandler&&document.removeEventListener("visibilitychange",this.onVisibilityHandler),this.onPageShowHandler&&window.removeEventListener("pageshow",this.onPageShowHandler),this.onOnlineHandler=null,this.onVisibilityHandler=null,this.onPageShowHandler=null,this.lifecycleHandlersAttached=!1))}notifyStateChange(e){this.stateHandlers.forEach(t=>t(e))}dispatchInbound(e,t){const r=t.toString();let o=null;try{o=JSON.parse(r)}catch{this.debugLog("RECV (non-json)",{topic:e,raw:r});return}if(!o)return;this.debugLog("RECV",{topic:e,sender:o.sender,type:o.type,contentType:o.metadata?.contentType,templateId:o.metadata?.templateId,messageId:o.message_id,text:typeof o.text=="string"?o.text:void 0});const n=e.match(this.inboundUpdateRegex);if(n){const c=n.groups?.conversationId??"",u=n.groups?.messageId??"",d=typeof o.status=="number"?o.status:Number(o.status??0),p={conversationId:c,messageId:u,status:d,raw:o};this.statusUpdateHandlers.forEach(g=>g(p)),this.messageHandlers.forEach(g=>g(o,{topic:e,conversationId:c,messageId:u,kind:"update"}));return}const s=e.match(this.inboundRegex),a=s?.groups?.conversationId,l={topic:e,conversationId:a,messageId:typeof o.message_id=="string"?o.message_id:void 0,kind:s?"clientadded":"unknown"};this.messageHandlers.forEach(c=>c(o,l))}buildOutgoingEnvelope(e,t){const r={...Jd,...this.config.messageDefaults??{}},o=this.config.senderFullname??this.config.userName??this.config.userId,n=this.config.recipientFullnameResolver?.(e),s={projectId:this.config.projectId,...r.departmentId?{departmentId:r.departmentId}:{},...this.config.userName?{userFullname:this.config.userName}:{},...r.channel?{channel:r.channel}:{},...r.requestChannel?{request_channel:r.requestChannel}:{},...r.attributes??{},...t.attributes??{}};return{type:"text",sender:this.config.userId,sender_fullname:o,senderFullname:o,recipient:e,...n?{recipient_fullname:n}:{},...r.channelType?{channel_type:r.channelType}:{},...r.medium?{medium:r.medium}:{},...r.platform?{platform:r.platform}:{},app_id:this.appId,timestamp:Date.now(),...t,attributes:s}}publishEnvelope(e,t){if(!this.client)return;const r=this.renderOutboundTopic(e);this.client.publish(r,JSON.stringify(t),{qos:this.config.publishQos??0,retain:this.config.publishRetain??!1}),this.debugLog("SEND",{topic:r,type:t.type,sender:t.sender,text:typeof t.text=="string"?t.text:void 0,contentType:t.metadata?.contentType,templateId:t.metadata?.templateId})}renderInboundTopic(e){return this.renderTemplate(this.topics.inbound,{conversationId:e})}renderOutboundTopic(e){return this.renderTemplate(this.topics.outbound,{conversationId:e})}renderPresenceTopic(){return this.renderTemplate(this.topics.presence,{})}renderTemplate(e,t){const r={appId:this.appId,userId:this.config.userId,projectId:this.config.projectId,clientId:this.clientId,...t};return e.replace(/\{(\w+)\}/g,(o,n)=>r[n]??"")}buildTopicRegex(e,t){const r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\{(\w+)\\\}/g,(o,n)=>{const s={appId:this.appId,userId:this.config.userId,projectId:this.config.projectId,clientId:this.clientId};if(t.includes(n))return`(?<${n}>[^/]+)`;const a=s[n];return a?a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"[^/]+"});return new RegExp(`^${r}$`)}}function Qd(i){const e={};for(const[t,r]of Object.entries(i))r!==void 0&&(e[t]=r);return e}function Il(i,e){return(i.sender??"").toString()===e}function Tl(i,e){const t=(i.sender??"").toString(),r=e.systemSenders??["metadata","system"],o=e.botSenderPrefix??"bot_";return t?t===e.userId?"user":t.startsWith(o)?"assistant":r.includes(t)?"system":"agent":"system"}function _o(i){const e={raw:i},t=i.metadata;if(t&&typeof t=="object"&&(typeof t.contentType=="string"&&(e.contentType=t.contentType),typeof t.templateId=="string"&&(e.templateId=t.templateId),t.payload!==void 0&&(e.payload=t.payload)),typeof i.text=="string"&&i.text.trim().startsWith("{"))try{const o=i.text.replace(/\\(?!["\\/bfnrtu])/g,"\\\\"),n=JSON.parse(o);typeof n.message=="string"&&(e.innerMessage=n.message);const s=n.metadata;s&&typeof s=="object"&&(typeof s.contentType=="string"&&(e.contentType=s.contentType),typeof s.templateId=="string"&&(e.templateId=s.templateId),s.payload!==void 0&&(e.payload=s.payload))}catch{}const r=i.attributes;if(r&&typeof r=="object"){const o=r.attachment;!e.contentType&&typeof r.contentType=="string"&&(e.contentType=r.contentType),!e.contentType&&o&&typeof o.contentType=="string"&&(e.contentType=o.contentType),!e.templateId&&typeof r.templateId=="string"&&(e.templateId=r.templateId),!e.templateId&&o&&typeof o.templateId=="string"&&(e.templateId=o.templateId),e.payload===void 0&&r.payload!==void 0&&(e.payload=r.payload),e.payload===void 0&&o&&o.payload!==void 0&&(e.payload=o.payload),e.payload===void 0&&o&&o.template!==void 0&&(e.payload=o.template)}return e}function Cl(i){const e=_o(i);if(e.contentType!=="300")return null;const t=e.payload,r=t&&Array.isArray(t.elements)?t.elements:null;if(!r||r.length===0)return null;const o=r[0],n=o.action,s=n&&typeof n.url=="string"?n.url:void 0,a=typeof o.description=="string"?o.description:void 0,l=i.attributes,c=l&&typeof l.cloudFileId=="string"?l.cloudFileId:void 0;return!s&&!a?null:{fileName:a,fileUrl:s,cloudFileId:c,templateId:e.templateId}}function Pl(i,e,t){const r=Tl(i,t),o=_o(i),n=Cl(i);let s="";o.innerMessage?s=o.innerMessage:typeof i.text=="string"&&(i.text.trim().startsWith("{")?o.contentType!=="300"&&(s=i.text):s=i.text);const a=typeof i.message_id=="string"?i.message_id:`td_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,l=typeof i.timestamp=="number"?new Date(i.timestamp).toISOString():new Date().toISOString(),c=r==="assistant"?"assistant":r==="agent"?"agent":r==="system"?"system":"user",u=typeof i.status=="number"?Xd(i.status):"delivered",d={id:a,externalId:a,conversationId:e,role:c,content:s,createdAt:l,status:u,metadata:{sender:i.sender,sender_fullname:i.sender_fullname??i.senderFullname,app_id:i.app_id,attributes:i.attributes}};return o.contentType&&(d.template={contentType:o.contentType,templateId:o.templateId,payload:o.payload}),n?.fileUrl&&(d.attachments=[{fileName:n.fileName??"file",fileUrl:n.fileUrl,cloudFileId:n.cloudFileId}]),{message:d,template:o}}function Xd(i){return i<0?"error":i>=250?"read":i>=150?"delivered":"sent"}class Ol extends yr{connection=null;tiledesk=null;api;messageStore;conversationManager;subscription=null;config;mode;uploadAdapter;historyAdapter;tiledeskUnsubs=[];constructor(e,t){super(),this.config=e,this.mode=e.transport??"aikaara",this.uploadAdapter=t?.uploadAdapter??null,this.historyAdapter=t?.historyAdapter??null,this.api=new Ho(e.baseUrl,e.userToken,e.apiKey,e.authToken),this.messageStore=new Wo,this.conversationManager=new Yo(e.conversationId),this.usesAikaara()&&(this.connection=new qo(e),this.connection.on("connection:state",r=>{this.emit("connection:state",r),this.config.onConnectionStateChange?.(r)}),this.connection.on("error",r=>{this.emit("error",r),this.config.onError?.(r)}),this.connection.on("reconnected",()=>{this.resubscribeAfterReconnect()})),this.usesTiledesk()&&this.initTiledeskTransport()}usesAikaara(){return this.mode==="aikaara"||this.mode==="dual"}usesTiledesk(){return this.mode==="tiledesk"||this.mode==="dual"}initTiledeskTransport(){const e=this.config.tiledesk,t=this.config.tiledeskIdentity;if(!e)throw new Error("AikaaraChatClient: tiledesk transport requires `config.tiledesk` (TiledeskTransportConfig)");if(!t?.userId)throw new Error("AikaaraChatClient: tiledesk transport requires `config.tiledeskIdentity.userId`");this.tiledesk=new Al({...e,userId:t.userId,userName:t.userName??e.userName,senderFullname:t.senderFullname??e.senderFullname,messageDefaults:{...e.messageDefaults,departmentId:t.departmentId??e.messageDefaults?.departmentId}}),this.tiledeskUnsubs.push(this.tiledesk.onStateChange(r=>{const o=r?"connected":"disconnected";this.emit("connection:state",o),this.config.onConnectionStateChange?.(o)})),this.tiledeskUnsubs.push(this.tiledesk.onMessage((r,o)=>this.handleTiledeskMessage(r,o))),this.tiledeskUnsubs.push(this.tiledesk.onStatusUpdate(r=>this.handleTiledeskStatusUpdate(r)))}async connect(){if(this.usesAikaara()&&this.connection){if(await this.connection.connect(),!this.conversationManager.conversationId){const e=await this.api.createConversation({systemPromptId:this.config.systemPromptId,channel:this.config.channel||"widget",extUid:this.config.extUid});this.conversationManager.conversationId=String(e.id)}this.subscription=await this.connection.subscribeToConversation(this.conversationManager.conversationId),this.subscription.onReceived(e=>{this.handleBroadcast(e)}),await this.loadHistory()}if(this.usesTiledesk()&&this.tiledesk){await this.tiledesk.connect(),this.config.tiledesk?.wildcardSubscribe??!0?this.tiledesk.subscribeWildcard():this.conversationManager.conversationId&&this.tiledesk.subscribeToConversation(this.conversationManager.conversationId);const t=this.conversationManager.conversationId;if(t){const r=await this.hydrateTiledeskHistory(t),o=this.config.tiledesk?.autoInitiateOnEmpty??!0,n=this.config.tiledesk?.autoInitiateOnUnknown??!1;o&&(r==="empty"||r==="unknown"&&n)&&this.tiledesk.publishChatInitiated(t,this.config.tiledesk?.chatInitiatedAttributes??{})}}}async hydrateTiledeskHistory(e){if(!this.historyAdapter)return"unknown";const t=this.config.tiledeskIdentity?.userId??"";let r;try{r=await this.historyAdapter.fetchMessages(e,{userId:t,appId:this.config.tiledesk?.appId,projectId:this.config.tiledesk?.projectId})}catch(l){return this.config.onError?.(l instanceof Error?l:new Error(String(l))),"unknown"}if(!r.length)return"empty";const o=r.map(l=>Pl(l,e,{userId:t})).sort((l,c)=>new Date(l.message.createdAt).getTime()-new Date(c.message.createdAt).getTime()),n=o.map(l=>l.message),s=this.messageStore.messages,a=[...n,...s.filter(l=>!n.some(c=>c.externalId&&c.externalId===l.externalId))];this.messageStore.setMessages(a);for(const{message:l,template:c}of o){if(this.config.onMessage)try{this.config.onMessage(l)}catch(u){console.warn("[aikaara-chat-sdk] onMessage threw on history replay",u)}if(this.config.onTemplateMessage&&c.contentType){const u={messageId:l.id,conversationId:e,role:l.role==="tool"?"system":l.role,contentType:c.contentType,templateId:c.templateId,payload:c.payload,innerMessage:c.innerMessage,raw:c.raw};try{this.config.onTemplateMessage(u)}catch(d){console.warn("[aikaara-chat-sdk] onTemplateMessage threw on history replay",d)}}}return"has-history"}async sendMessage(e,t={}){const r=this.conversationManager.conversationId;if(!r)throw new Error("No active conversation");const o=this.messageStore.addOptimistic("user",e,r);this.emit("message:sent",o),this.config.onMessage?.(o);const n={};if(t.attributes&&(n.attributes=t.attributes),t.metadata&&(n.metadata=t.metadata),this.mode==="tiledesk"&&this.tiledesk){this.tiledesk.publishMessage(r,e,n);return}this.mode==="dual"&&this.tiledesk&&this.tiledesk.publishMessage(r,e,n),this.usesAikaara()&&this.connection&&this.connection.sendMessage(r,e)}async sendFile(e,t){if(!this.uploadAdapter)throw new Error("AikaaraChatClient: sendFile requires an UploadAdapter");const r=this.conversationManager.conversationId;if(!r)throw new Error("No active conversation");const o=await this.uploadAdapter.upload(e,{conversationId:r,userId:this.config.tiledeskIdentity?.userId??this.config.userToken,projectId:this.config.tiledesk?.projectId,appId:this.config.tiledesk?.appId});if(this.usesTiledesk()&&this.tiledesk){const n={fileName:o.fileName,fileUrl:o.url,cloudFileId:o.cloudFileId};this.tiledesk.publishFileMessage(r,n)}t?.caption&&await this.sendMessage(t.caption)}initiateTiledeskChat(e={}){const t=this.conversationManager.conversationId;!this.tiledesk||!t||this.tiledesk.publishChatInitiated(t,e)}markTiledeskRead(e){const t=this.conversationManager.conversationId;!this.tiledesk||!t||this.tiledesk.publishReadReceipt(t,e)}setUploadAdapter(e){this.uploadAdapter=e}async sendUserEvent(e,t,r){const o=this.conversationManager.conversationId;if(!o)throw new Error("No active conversation");this.connection&&this.connection.sendUserEvent(o,e,t,r)}async loadHistory(){const e=this.conversationManager.conversationId;if(!e)return[];try{const t=await this.api.getMessages(e);return this.messageStore.setMessages(t),t}catch{return[]}}get messages(){return this.messageStore.messages}get conversationId(){return this.conversationManager.conversationId}get isConnected(){if(this.mode==="tiledesk")return this.tiledesk?.isConnected??!1;if(this.mode==="dual"){const e=this.connection?.connectionState==="connected",t=this.tiledesk?.isConnected??!1;return e&&t}return this.connection?.connectionState==="connected"}async setContext(e){const t=this.conversationManager.conversationId;t&&await this.api.updateContext(t,{current_page:e.currentPage,entity_type:e.entityType,entity_id:e.entityId,project_id:e.projectId,available_routes:e.availableRoutes,custom_context:e.custom})}async disconnect(){this.subscription&&(this.subscription=null),this.connection&&await this.connection.disconnect(),this.tiledesk&&(this.tiledeskUnsubs.forEach(e=>e()),this.tiledeskUnsubs=[],this.tiledesk.disconnect(),this.tiledesk=null)}handleTiledeskMessage(e,t){if(t.kind==="update")return;const r=this.conversationManager.conversationId;if(t.conversationId&&r&&t.conversationId!==r)return;const o=t.conversationId??r;if(!o)return;const n=this.config.tiledeskIdentity?.userId??"",{message:s,template:a}=Pl(e,o,{userId:n,systemSenders:this.config.tiledesk?.messageDefaults?.attributes?.systemSenders});if(this.mode==="dual"&&s.role==="assistant")return;if(Il(e,n)){const u=this.messageStore.reconcileOptimistic(s);if(u){this.emit("message:updated",u);return}}const{message:l,deduped:c}=this.messageStore.upsertRemoteMessage(s);if(c)this.emit("message:updated",l);else{this.emit("message:received",l),this.config.onMessage?.(l);try{typeof window<"u"&&window.dispatchEvent(new CustomEvent("aikaara:message",{detail:{role:l.role,hasAttachments:Array.isArray(l.attachments)&&l.attachments.length>0,templateId:l.template?.templateId,messageId:l.id,conversationId:l.conversationId}}))}catch{}}if(a.contentType){const u={messageId:l.id,conversationId:o,role:s.role==="tool"?"system":s.role,contentType:a.contentType,templateId:a.templateId,payload:a.payload,innerMessage:a.innerMessage,raw:e};this.config.onTemplateMessage?.(u)}}handleTiledeskStatusUpdate(e){const t=this.conversationManager.conversationId;t&&e.conversationId!==t||(e.status>=250?this.messageStore.updateMessageStatus(e.messageId,"read"):e.status>=150&&this.messageStore.updateMessageStatus(e.messageId,"delivered"))}parseActionResult(e){try{const t=typeof e=="string"?JSON.parse(e):e;if(!t||typeof t!="object")return;t.navigate_to?this.emit("action:navigate",t):t.action==="edit_entity"?this.emit("action:edit_entity",t):t.action==="save_entity"?this.emit("action:save_entity",t):t.action==="test_tool"&&this.emit("action:test_tool",t)}catch{}}async resubscribeAfterReconnect(){const e=this.conversationManager.conversationId;if(!(!e||!this.connection))try{this.subscription=await this.connection.subscribeToConversation(e),this.subscription.onReceived(t=>{this.handleBroadcast(t)})}catch(t){this.emit("error",t instanceof Error?t:new Error(String(t))),this.config.onError?.(t instanceof Error?t:new Error(String(t)))}}handleBroadcast(e){const t=this.conversationManager.conversationId;switch(e.type){case"status":{const r=e.status;this.emit("status",r),this.config.onStatusChange?.(r),r==="processing"&&this.emit("typing:start",void 0);break}case"error":{const r=new Error(e.message||"Unknown error");this.emit("error",r),this.config.onError?.(r);break}case"message_start":{if(e.role==="assistant"){const r=this.messageStore.addStreamingMessage(t);this.emit("stream:start",{messageId:r.id}),this.emit("typing:start",void 0)}break}case"message_update":{const r=e.delta||"",o=e.content||"";o?this.messageStore.updateStreaming(o):r&&this.messageStore.appendToStreaming(r);const n=this.messageStore.streamingContent;this.emit("stream:update",{delta:r,content:n}),this.config.onStreamUpdate?.(r,n);break}case"message_end":{const r=e.usage,o=this.messageStore.finalizeStreaming(r?{tokensInput:r.tokens_input||0,tokensOutput:r.tokens_output||0}:void 0);this.emit("typing:stop",void 0),o&&(this.emit("stream:end",{messageId:o.id,usage:r?{tokensInput:r.tokens_input||0,tokensOutput:r.tokens_output||0}:void 0}),this.emit("message:received",o),this.config.onMessage?.(o));break}case"message_queued":{const r=this.messageStore.messages.findLast(o=>o.status==="sending");r&&this.messageStore.confirmOptimistic(r.id);break}case"tool_execution_start":{this.emit("tool:start",{toolName:e.tool_name||"",args:e.args||{}}),this.emit("status",e.type);break}case"tool_execution_end":{this.emit("tool:end",{toolName:e.tool_name||"",result:e.result,isError:!!e.is_error}),this.emit("status",e.type),this.parseActionResult(e.result);break}case"tool_execution_update":case"agent_start":case"agent_end":case"turn_start":case"turn_end":case"auto_retry_start":case"auto_retry_end":case"cancelled":this.emit("status",e.type);break}}}class Zd extends yr{registration=null;pendingEdits=[];constructor(e){super(),this.setupListeners(e)}registerForm(e){this.registration=e;const t=this.pendingEdits.filter(r=>r.entity_type===e.entityType&&String(r.entity_id)===String(e.entityId));if(t.length>0){for(const r of t)e.onFieldUpdate(r.fields),this.emit("edit:applied",{entityType:r.entity_type,entityId:r.entity_id,fields:r.fields});this.pendingEdits=this.pendingEdits.filter(r=>!(r.entity_type===e.entityType&&String(r.entity_id)===String(e.entityId)))}}unregisterForm(e,t){this.registration?.entityType===e&&String(this.registration?.entityId)===String(t)&&(this.registration=null)}get currentForm(){return this.registration}pushFieldUpdates(e,t,r){this.registration&&this.registration.entityType===e&&String(this.registration.entityId)===String(t)?(this.registration.onFieldUpdate(r),this.emit("edit:applied",{entityType:e,entityId:t,fields:r})):(this.pendingEdits.push({action:"edit_entity",entity_type:e,entity_id:t,fields:r}),this.emit("edit:pending",{entityType:e,entityId:t,fields:r}))}async requestSave(){if(!this.registration)return{success:!1,error:"No form registered"};try{return await this.registration.onSave(),this.emit("save:success",{entityType:this.registration.entityType,entityId:this.registration.entityId}),{success:!0}}catch(e){const t=e instanceof Error?e.message:"Save failed";return this.emit("save:error",{entityType:this.registration.entityType,entityId:this.registration.entityId,error:t}),{success:!1,error:t}}}async requestTest(e){if(!this.registration?.onTest)return{success:!1,error:"Current form does not support testing"};try{return await this.registration.onTest(e),{success:!0}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Test failed"}}}setupListeners(e){e.on("action:edit_entity",t=>{this.pushFieldUpdates(t.entity_type,t.entity_id,t.fields)}),e.on("action:save_entity",t=>{this.requestSave()}),e.on("action:test_tool",t=>{this.emit("test:triggered",{toolId:t.tool_id,parameters:t.parameters}),this.requestTest(t.parameters)})}}const Ml={txt:"text/plain",pdf:"application/pdf",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",csv:"text/csv",doc:"application/msword",json:"application/json"};function eh(i){const e=i.lastIndexOf(".");return e<0||e===i.length-1?"":i.slice(e+1).toLowerCase()}function th(i,e,t){const r=eh(i.name||"");if(r&&e&&e[r])return e[r];const o=i.type;return o&&o.trim().length>0?o:r&&Ml[r]?Ml[r]:t}function So(i,e){return i.replace(/\{(\w+)\}/g,(t,r)=>e[r]??"")}function rh(i,e){const t=e.split(".");let r=i;for(const o of t)if(r&&typeof r=="object"&&o in r)r=r[o];else return"";return typeof r=="string"?r:""}function Ll(i){const e=i.signedUrlPath||"data.s3SignedUrl";return{async upload(t,r){const o=t.name||`upload-${Date.now()}`,n=th(t,i.contentTypeMap,i.contentTypeFallback??"application/octet-stream"),s={fileName:o,userId:r.userId,requestId:r.conversationId,conversationId:r.conversationId,contentType:n},a=i.authHeader?await i.authHeader():void 0,l={accept:"application/json",...i.extraHeaders??{},...a?{authorization:a}:{}};let c=i.signEndpoint.includes("{")?i.signEndpoint:`${i.signEndpoint}?fileName={fileName}`;if(!c.includes("{contentType}")){const w=c.includes("?")?"&":"?";c=`${c}${w}contentType={contentType}`}const u=So(c,s),d=await fetch(u,{method:i.signMethod??"GET",headers:l});if(!d.ok)throw new Error(`Sign request failed: ${d.status}`);const p=await d.json().catch(()=>({})),g=rh(p,e);if(!g)throw new Error(`Sign response missing path "${e}"`);const f=i.s3HostRewrite?g.replace(/^https:\/\/[^/]+/i,i.s3HostRewrite):g,y=await fetch(f,{method:"PUT",headers:{"content-type":n},body:t});if(!y.ok){const w=await y.text().catch(()=>"");throw new Error(`S3 PUT failed: ${y.status} ${w.slice(0,200)}`)}if(i.registerEndpoint){const w=JSON.parse(So(JSON.stringify(i.registerBody??{}),s)),m=await fetch(i.registerEndpoint,{method:"POST",headers:{...l,"content-type":"application/json"},body:JSON.stringify(w)});if(!m.ok){const k=await m.text().catch(()=>"");throw new Error(`Register failed: ${m.status} ${k.slice(0,200)}`)}}return{url:i.viewerTemplate?So(i.viewerTemplate,s):g.split("?")[0],fileName:o,contentType:n,byteSize:t.size,meta:{requestId:r.conversationId}}}}}function xo(i){return{async upload(e,t){const r=new FormData,o=i.fieldName??"file";r.append(o,e,e.name);const n=typeof i.extraFields=="function"?i.extraFields(t):i.extraFields;if(n)for(const[p,g]of Object.entries(n))r.append(p,g);r.append("conversationId",t.conversationId),r.append("userId",t.userId),t.projectId&&r.append("projectId",t.projectId);const s=typeof i.headers=="function"?await i.headers():i.headers??{},a=await fetch(i.endpoint,{method:i.method??"POST",body:r,headers:s,credentials:i.credentials});if(!a.ok)throw new Error(`Upload failed: ${a.status} ${a.statusText}`);const l=await a.json().catch(()=>({}));if(i.parseResponse)return i.parseResponse(l,t);const c=l,u=c.url??c.fileUrl??c.publicUrl,d=c.fileName??c.name??e.name;if(!u)throw new Error('Upload response missing "url" / "fileUrl" / "publicUrl"');return{url:u,fileName:d,cloudFileId:typeof c.cloudFileId=="string"?c.cloudFileId:void 0,relativePath:typeof c.path=="string"?c.path:void 0,contentType:typeof c.contentType=="string"?c.contentType:void 0,byteSize:typeof c.byteSize=="number"?c.byteSize:void 0,meta:c}}}}const nh="/tilechat/{userId}/conversations/{conversationId}/messages?pageSize={pageSize}";function Rl(i){const e=i.apiBase.replace(/\/$/,""),t=i.pageSize??200,r=i.pathTemplate??nh;return{async fetchMessages(o,n){const s=r.replace("{userId}",encodeURIComponent(n.userId)).replace("{conversationId}",encodeURIComponent(o)).replace("{appId}",encodeURIComponent(n.appId??"tilechat")).replace("{projectId}",encodeURIComponent(n.projectId??"")).replace("{pageSize}",String(t)),a=s.startsWith("http")?s:`${e}${s.startsWith("/")?s:`/${s}`}`,l={accept:"application/json","content-type":"application/json",...i.extraHeaders??{}};if(i.getToken){const p=await i.getToken();p&&(l.authorization=p)}const c=await fetch(a,{method:"GET",headers:l}),u=await c.json().catch(()=>null);if(i.parseResponse&&u)return i.parseResponse(u);if(Array.isArray(u))return u;const d=u;if(d&&Array.isArray(d.result))return d.result;if(!c.ok)throw new Error(`History fetch failed: ${c.status} ${c.statusText}`);return[]}}}const ih="^[A-Z]{4}[0-9]{5}[A-Z]$",oh="^[A-Z]{4}0[A-Z0-9]{6}$",Nl="^[0-9]{6}$",sh=[{id:"salary-hra",title:"Salary / HRA / Allowances",icon:"💰",dataPath:"salaryDetails[]",repeatable:{maxCount:4,labelTemplate:"Employer {index}"},entryIcon:"🏢",fields:[{id:"employerDetails",type:"group",title:"Employer Details",fields:[{id:"employerName",type:"text",label:"Employer Name",required:!0},{id:"employerTan",type:"text",label:"TAN (Tax Deduction Account Number)",pattern:ih,maxLength:10}]},{id:"salaryComponents",type:"group",title:"Salary Components",fields:[{id:"grossSalary",type:"number",label:"Gross Salary (Total)",currency:"₹",min:0},{id:"totalTdsDeposited",type:"number",label:"TDS Deducted",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"business-profession",title:"Business / Profession",icon:"💼",fields:[{id:"business44ad",type:"group",title:"Business Income 44AD",collapsible:!0,defaultCollapsed:!0,fields:[{id:"bizName",type:"text",label:"Business / Profession Name"},{id:"bizNature",type:"text",label:"Nature of Work"},{id:"bizReceiptsBank",type:"number",label:"Gross Receipts (Bank)",currency:"₹",min:0},{id:"bizReceiptsCash",type:"number",label:"Gross Receipt (Cash)",currency:"₹",min:0},{id:"bizNetProfit",type:"number",label:"Net Profit",currency:"₹",readOnly:!0}]},{id:"profession44ada",type:"group",title:"Professional Income 44ADA",collapsible:!0,defaultCollapsed:!0,fields:[{id:"profName",type:"text",label:"Business / Profession Name"},{id:"profNature",type:"text",label:"Nature of Work"},{id:"profReceiptsBank",type:"number",label:"Gross Receipts (Bank)",currency:"₹",min:0},{id:"profReceiptsCash",type:"number",label:"Gross Receipt (Cash)",currency:"₹",min:0},{id:"profNetProfit",type:"number",label:"Net Profit",currency:"₹",readOnly:!0}]}],submitLabel:"Save"},{id:"other-sources",title:"Income from Other Sources",icon:"💵",fields:[{id:"interestIncome",type:"group",title:"Interest Income",fields:[{id:"savingBankInterest",type:"number",label:"Savings Bank Interest",currency:"₹",min:0},{id:"fdInterest",type:"number",label:"Fixed Deposit Interest",currency:"₹",min:0}]},{id:"otherIncomeGroup",type:"group",title:"Other Income",fields:[{id:"dividend",type:"number",label:"Dividend Income",currency:"₹",min:0},{id:"anyOtherIncome",type:"number",label:"Any Other Income",currency:"₹",min:0},{id:"familyPension",type:"number",label:"Family Pension",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"crypto-income",title:"Crypto Income",icon:"🪙",fields:[{id:"cryptoGroup",type:"group",title:"Virtual Digital Assets",hint:"Gains from crypto / VDAs are taxed at a flat 30%",fields:[{id:"cryptoSellPrice",type:"number",label:"Total Sale Value",currency:"₹",min:0},{id:"cryptoPurchasePrice",type:"number",label:"Total Cost of Acquisition",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"house-property",title:"House Property",icon:"🏠",dataPath:"hpDetails[]",repeatable:{maxCount:2,labelTemplate:"Property {index}"},entryIcon:"🏠",fields:[{id:"rentalIncome",type:"number",label:"Rental Income",currency:"₹",min:0},{id:"propertyTax",type:"number",label:"Municipal Taxes",currency:"₹",min:0},{id:"homeLoanDetails",type:"group",title:"Home Loan Details",fields:[{id:"lenderName",type:"text",label:"Bank / Institute Name",required:!0},{id:"sanctionDate",type:"date",label:"Loan Sanction Date",format:"DD/MM/YYYY",required:!0},{id:"loanAccountNumber",type:"text",label:"Loan Account No.",required:!0},{id:"totalLoanAmount",type:"number",label:"Total Loan Amount",currency:"₹",min:0},{id:"outstandingAmount",type:"number",label:"Outstanding Loan",currency:"₹",min:0},{id:"homeLoanInterest",type:"number",label:"Interest Paid",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"deductions",title:"Deductions",icon:"📋",fields:[{id:"section80c",type:"group",title:"Section 80C",hint:"Maximum deduction allowed: ₹1,50,000",fields:[{id:"us80cAmount",type:"number",label:"Amount",currency:"₹",min:0,max:15e4},{id:"us80cSubType",type:"text",label:"Investment Type",placeholder:"e.g. LIC, PPF, ELSS, NSC"},{id:"us80cPolicyNumber",type:"text",label:"Policy Number"}]},{id:"section80ccd1b",type:"group",title:"Section 80CCD(1B)",fields:[{id:"us80ccd1bAmount",type:"number",label:"Amount",currency:"₹",min:0},{id:"us80ccd1bPanNo",type:"text",label:"PRAN No."}]},{id:"section80ccd2",type:"group",title:"Section 80CCD(2)",fields:[{id:"us80ccd2Amount",type:"number",label:"Amount",currency:"₹",min:0}]},{id:"section80g",type:"group",title:"Section 80G — Donations",fields:[{id:"us80gDonationAmount",type:"number",label:"Donation Amount",currency:"₹",min:0},{id:"us80gNameOfCharity",type:"text",label:"Name of Charity / Trust"},{id:"us80gCharityPan",type:"text",label:"Charity / Trust PAN"},{id:"us80gTrustAddress",type:"text",label:"Trust / Charity Address"},{id:"us80gPincode",type:"text",label:"Pincode",maxLength:6,pattern:Nl}]},{id:"section80e",type:"group",title:"Section 80E — Education Loan Interest",fields:[{id:"us80eLoanTakenFrom",type:"text",label:"Loan Taken From"},{id:"us80eBankName",type:"text",label:"Bank Name"},{id:"us80eLoanAccountNumber",type:"text",label:"Loan Account Number"},{id:"us80eLoanSanctionDate",type:"date",label:"Loan Sanction Date",format:"DD/MM/YYYY"},{id:"us80eLoanAmount",type:"number",label:"Loan Amount",currency:"₹",min:0},{id:"us80eOutstandingLoan",type:"number",label:"Outstanding Loan",currency:"₹",min:0},{id:"us80eInterest",type:"number",label:"Interest Paid",currency:"₹",min:0}]},{id:"section80ee",type:"group",title:"Section 80EEB — Electric Vehicle Loan Interest",fields:[{id:"us80eeLoanTakenFrom",type:"text",label:"Loan Taken From"},{id:"us80eeBankName",type:"text",label:"Bank Name"},{id:"us80eeLoanAccountNumber",type:"text",label:"Loan Account Number"},{id:"us80eeLoanSanctionDate",type:"date",label:"Loan Sanction Date",format:"DD/MM/YYYY"},{id:"us80eeLoanAmount",type:"number",label:"Loan Amount",currency:"₹",min:0},{id:"us80eeOutstandingLoan",type:"number",label:"Outstanding Loan",currency:"₹",min:0},{id:"us80eeVehicleRegistrationNumber",type:"text",label:"Vehicle Registration Number"},{id:"us80eeInterest",type:"number",label:"Interest Paid",currency:"₹",min:0}]},{id:"section80d",type:"group",title:"Section 80D — Health Insurance",fields:[{id:"us80dForSelfAndFamilyAmount",type:"number",label:"Self — Amount",currency:"₹",min:0,max:25e3},{id:"us80dForSelfAndFamilyPolicyCompany",type:"text",label:"Self — Policy Company Name"},{id:"us80dForSelfAndFamilyPolicyNumber",type:"text",label:"Self — Policy Number"},{id:"us80dForParentsAmount",type:"number",label:"Parents — Amount",currency:"₹",min:0,max:5e4},{id:"us80dForParentsPolicyCompany",type:"text",label:"Parents — Policy Company Name"},{id:"us80dForParentsPolicyNumber",type:"text",label:"Parents — Policy Number"}]}],submitLabel:"Save"},{id:"agricultural-income",title:"Agricultural Income",icon:"🌾",fields:[{id:"agricultureIncome",type:"number",label:"Total Agricultural Income",currency:"₹",min:0},{id:"agricultureExpenditure",type:"number",label:"Expenditure on Agriculture",currency:"₹",min:0},{id:"agricultureLandGroup",type:"group",title:"Land Details",hint:"Optional - leave blank if you only need to report income",fields:[{id:"agricultureLandInAcre",type:"number",label:"Land Area (Acres)",min:0},{id:"agricultureLandDistrict",type:"text",label:"District"},{id:"agricultureLandPincode",type:"text",label:"Pincode",maxLength:6,pattern:Nl},{id:"agricultureLandOwner",type:"radio",label:"Ownership",options:[{value:"Owned",label:"Owned"},{value:"Held on lease",label:"Held on lease"}]},{id:"agricultureLandType",type:"radio",label:"Type of Land",options:[{value:"Irrigated",label:"Irrigated"},{value:"Rain-fed",label:"Rain-fed"}]}]}],submitLabel:"Save"},{id:"bank-details",title:"Personal / Bank Details",icon:"🏦",fields:[{id:"bankGroup",type:"group",title:"Bank Account (for refund)",fields:[{id:"aadhaarNumber",type:"text",label:"Aadhaar Number",maxLength:12,readOnly:!0},{id:"bankAccountNumber",type:"text",label:"Bank Account Number",required:!0},{id:"bankIfscCode",type:"text",label:"IFSC Code",required:!0,pattern:oh,maxLength:11}]}],submitLabel:"Save"}];function ah(i,e){const t=i||{},r={userId:et(e.userId),assessmentYear:e.assessmentYear,aadhaarNumber:Ee(t.aadhaarNumber),isRevised:e.isRevised||"N",timestamp:kh()};r.us80cAmount=Se(t.us80cAmount),r.us80dForSelfAndFamilyAmount=Se(t.us80dForSelfAndFamilyAmount),r.us80dForParentsAmount=Se(t.us80dForParentsAmount),r.hasParentOverSixty=lr(t.hasParentOverSixty),r.preventiveHealthCheckUp=Se(t.preventiveHealthCheckUp),r.medicalExpenditure=Se(t.medicalExpenditure),r.savingBankInterest=Se(t.savingBankInterest),r.fdInterest=Se(t.fdInterest),r.dividend=Se(t.dividend),r.anyOtherIncome=Se(t.anyOtherIncome),r.familyPension=Se(t.familyPension),r.cryptoSellValue=Se(t.cryptoSellPrice),r.cryptoPurchaseAmount=Se(t.cryptoPurchasePrice),r.vdaPurchaseCost=Se(t.cryptoPurchasePrice);const o=(Se(t.bizReceiptsBank)??0)+(Se(t.bizReceiptsCash)??0),n=(Se(t.profReceiptsBank)??0)+(Se(t.profReceiptsCash)??0),s=Ee(t.bizName)!==void 0||o>0;r.businessName=Ee(s?t.bizName:t.profName),r.businessAnnualTurnOver=s?o||void 0:n||void 0,r.agricultureDetails=Ul(t),r.exemptIncomeAmount=Se(t.exemptIncome),r.exemptIncomeNature=Ee(t.exemptIncomeNature),Se(t.exemptIncome)!==void 0&&(r.exemptIncomes=[{name:Ee(t.exemptIncomeNature)??"Exempt income",value:String(Se(t.exemptIncome))}]),r.bankAccountNumber=Ee(t.bankAccountNumber),r.bankIfscCode=Ee(t.bankIfscCode),(Ee(t.bankAccountNumber)||Ee(t.bankIfscCode))&&(r.bankDetails=[{bankAccountNumber:Ee(t.bankAccountNumber),bankIfscCode:Ee(t.bankIfscCode)}]);const a={description:Ee(t.immovableAssetDescription),flatNo:Ee(t.immovableAssetFlatNo),area:Ee(t.immovableAssetArea),pinCode:Ee(t.immovableAssetPincode),amount:Se(t.immovableAssetCost)};Object.values(a).some(u=>u!==void 0)&&(r.immovableAsset=[a]);const l=Eo(t.hpDetails,lh);l.length&&(r.hpDetails=l);const c=Eo(t.salaryDetails,ch);if(c.length){r.salaryIncome=c;const u=Eo(t.salaryDetails,p=>({grossSalary:Se(p.grossSalary),employerName:Ee(p.employerName)}));u.length&&(r.salary=u);const d=tn(t.salaryDetails)[0]??{};r.hraAmount=Se(d.hraReceived),r.leaveTravelAllowanceAmount=Se(d.leaveTravelAllowance),r.leaveEncashmentAllowanceAmount=Se(d.leaveEncashment),r.anyOtherAllowanceAmount=Se(d.anyOtherAllowance),r.salaryIncomeFlag=!0}return tt(r)}function lh(i){const e={loanType:"HOME_LOAN",loanTakenFrom:Ee(i.loanTakenFrom),bankOrInstituteName:Ee(i.lenderName),loanAccountNo:Ee(i.loanAccountNumber),loanSanctionDate:en(i.sanctionDate),totalLoanAmount:Se(i.totalLoanAmount),loanOutstandingAmount:Se(i.outstandingAmount),interest:Se(i.homeLoanInterest)},t=Object.entries(e).some(([r,o])=>r!=="loanType"&&o!==void 0);return{typeOfHouseProperty:Ee(i.typeOfHouseProperty),hasRentalIncome:i.typeOfHouseProperty==="LOP"?!0:lr(i.hasRentalIncome),homeLoanInterest:Se(i.homeLoanInterest),homeLoanPrinciple:Se(i.homeLoanPrinciple),housePropertyAddress:Ee(i.housePropertyAddress),housePropertyPincode:Ee(i.housePropertyPincode),rentalIncome:Se(i.rentalIncome),nameOfTenant:Ee(i.nameOfTenant),propertyTax:Se(i.propertyTax),hasCoOwnedProperty:lr(i.hasCoOwnedProperty),coOwnerName:Ee(i.coOwnerName),coOwnerPan:Ee(i.coOwnerPan),coOwnerShare:Ee(i.coOwnerShare),loanDetails:t?[e]:void 0}}function ch(i){return{grossSalaryIncome:Se(i.grossSalary),salary:Se(i.basicSalary),totalTdsDeposited:Se(i.totalTdsDeposited),employer:{employerName:Ee(i.employerName),employerTan:Ee(i.employerTan)},allowance:{hraAmount:Se(i.hraReceived),leaveTravelAllowanceAmount:Se(i.leaveTravelAllowance),leaveEncashmentAllowanceAmount:Se(i.leaveEncashment),anyOtherAllowanceAmount:Se(i.anyOtherAllowance)}}}function uh(i,e){const t=[];for(const r of i){const o=Ee(r.employerName),n=Ee(r.employerTan),s=Se(r.grossSalary),a=Se(r.basicSalary),l=Se(r.totalTdsDeposited);o===void 0&&n===void 0&&s===void 0&&a===void 0&&l===void 0||t.push({grossSalary:s??0,basicSalary:a??0,employerName:o??"",tanNumber:n??"",tdsDeducted:l??0})}return t.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,forceUpdate:!0,salary:t}:null}function dh(i,e){const t=Ee(i.aadhaarNumber),r=Ee(i.bankAccountNumber),o=Ee(i.bankIfscCode);return t===void 0&&r===void 0&&o===void 0?null:{userId:et(e.userId),assessmentYear:e.assessmentYear,aadhaarNumber:t??"",bankDetails:[{bankAccountNumber:r,bankIfscCode:o}]}}function hh(i,e){return{userId:et(e.userId),assessmentYear:e.assessmentYear,savingBankInterest:Se(i.savingBankInterest)??0,fdInterest:Se(i.fdInterest)??0,dividend:Se(i.dividend)??0,anyOtherIncome:Se(i.anyOtherIncome)??0,familyPension:Se(i.familyPension)??0}}function fh(i,e){const t=Se(i.cryptoSellPrice),r=Se(i.cryptoPurchasePrice);return t===void 0&&r===void 0?null:{userId:et(e.userId),assessmentYear:e.assessmentYear,vdaPurchaseCost:r??0,vdaSellCost:t??0}}function ph(i,e){const t=(o,n,s,a)=>{const l=Ee(i[o]),c=Ee(i[n]),u=Se(i[s]),d=Se(i[a]);return l===void 0&&c===void 0&&u===void 0&&d===void 0?null:{businessType:l??"",businessCode:c??"",cashAmount:d??0,bankAmount:u??0}},r=[t("bizName","bizNature","bizReceiptsBank","bizReceiptsCash"),t("profName","profNature","profReceiptsBank","profReceiptsCash")].filter(o=>o!==null);return r.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,presumptiveIncome:r}:null}function mh(i){return Ee(i.lenderName)!==void 0||Ee(i.loanAccountNumber)!==void 0||Se(i.totalLoanAmount)!==void 0||Se(i.outstandingAmount)!==void 0||Se(i.homeLoanInterest)!==void 0}function jl(i){const e=Ee(i.typeOfHouseProperty)?.toUpperCase();return Se(i.rentalIncome)!==void 0||Ee(i.nameOfTenant)!==void 0||e==="LOP"||e==="DLOP"}function gh(i,e){const t=tn(i.hpDetails).filter(mh).map(r=>{const o=tt({loanType:"HOMELOAN",bankOrInstituteName:Ee(r.lenderName),loanAccountNo:Ee(r.loanAccountNumber),loanSanctionDate:en(r.sanctionDate),totalLoanAmount:Se(r.totalLoanAmount),loanOutstandingAmount:Se(r.outstandingAmount),interest:Se(r.homeLoanInterest)});return tt({typeOfHouseProperty:Ee(r.typeOfHouseProperty),housePropertyAddress:Ee(r.housePropertyAddress),housePropertyPincode:Ee(r.housePropertyPincode),homeLoanInterest:Se(r.homeLoanInterest),homeLoanPrinciple:Se(r.homeLoanPrinciple),propertyTax:Se(r.propertyTax),eligible80EEAAmount:Se(r.eligible80EEAAmount),eligible80EEAmount:Se(r.eligible80EEAmount),hasCoOwnedProperty:lr(r.hasCoOwnedProperty)??!1,hasRentalIncome:jl(r),loanDetails:[o]})});return t.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,hpDetails:t}:null}function yh(i,e){const t=tn(i.hpDetails).filter(jl).map(r=>tt({typeOfHouseProperty:Ee(r.typeOfHouseProperty),housePropertyAddress:Ee(r.housePropertyAddress),housePropertyPincode:Ee(r.housePropertyPincode),rentalIncome:Se(r.rentalIncome),propertyTax:Se(r.propertyTax),hasRentalIncome:!0,nameOfTenant:Ee(r.nameOfTenant),tenantPanNumber:Ee(r.tenantPanNumber),homeLoanInterest:Se(r.homeLoanInterest)}));return t.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,hpDetails:t}:null}function bh(i,e){const t=i||{},r=g=>({userId:et(e.userId),assessmentYear:e.assessmentYear,deductions:tt(g)}),o=[],n=Se(t.us80cAmount);if(n!==void 0){const g=Ee(t.us80cSubType);g?o.push(r({deductionSection:"80C",subType:g,amount:n,accountNo:Ee(t.us80cPolicyNumber)})):console.warn("[smart-edit] 80C skipped — Investment Type is required by the API")}const s=Ee(t.us80ccd1bPanNo),a=Se(t.us80ccd1bAmount);a!==void 0&&o.push(r({deductionSection:"80CCD(1B)",subType:"NPS",amount:a,accountNo:s}));const l=Se(t.us80ccd2Amount);l!==void 0&&o.push(r({deductionSection:"80CCD(2)",subType:"EMPLOYER_NPS",amount:l,accountNo:s}));const c=Se(t.us80eInterest);c!==void 0&&o.push(r({deductionSection:"80E",subType:"EDUCATION_LOAN",interest:c,loanTakenFrom:Ee(t.us80eLoanTakenFrom),bankOrInstituteName:Ee(t.us80eBankName),loanAccountNo:Ee(t.us80eLoanAccountNumber),loanSanctionDate:en(t.us80eLoanSanctionDate),totalLoanAmount:Se(t.us80eLoanAmount),loanOutstandingAmount:Se(t.us80eOutstandingLoan)}));const u=Se(t.us80eeInterest);u!==void 0&&o.push(r({deductionSection:"80EEB",interest:u,loanTakenFrom:Ee(t.us80eeLoanTakenFrom),bankOrInstituteName:Ee(t.us80eeBankName),loanAccountNo:Ee(t.us80eeLoanAccountNumber),loanSanctionDate:en(t.us80eeLoanSanctionDate),totalLoanAmount:Se(t.us80eeLoanAmount),loanOutstandingAmount:Se(t.us80eeOutstandingLoan),vehicleRegistrationNumber:Ee(t.us80eeVehicleRegistrationNumber)}));const d=Se(t.us80dForSelfAndFamilyAmount);d!==void 0&&o.push(r({deductionSection:"80D",subType:"selfFamilyPremium80D",amount:d,insurerName:Ee(t.us80dForSelfAndFamilyPolicyCompany),accountNo:Ee(t.us80dForSelfAndFamilyPolicyNumber)}));const p=Se(t.us80dForParentsAmount);return p!==void 0&&o.push(r({deductionSection:"80D",subType:"parentsPremium80D",amount:p,insurerName:Ee(t.us80dForParentsPolicyCompany),accountNo:Ee(t.us80dForParentsPolicyNumber),parentSeniorCitizen:lr(t.hasParentOverSixty)??!1})),o}function vh(i,e){const t=i||{},r=Se(t.us80gDonationAmount),o=Ee(t.us80gNameOfCharity);return r===void 0&&o===void 0?null:{userId:et(e.userId),assessmentYear:e.assessmentYear,donations80g:[tt({name:o,panNumber:Ee(t.us80gCharityPan),amountOtherThanCash:r,address:Ee(t.us80gTrustAddress),pinCode:Ee(t.us80gPincode)})]}}function Ul(i){const e=i||{},t=Se(e.agricultureIncome),r=Se(e.agricultureExpenditure),o=tt({landInAcre:Se(e.agricultureLandInAcre),nameOfDistrict:Ee(e.agricultureLandDistrict),pinCode:Ee(e.agricultureLandPincode),owner:Ee(e.agricultureLandOwner),typeOfLand:Ee(e.agricultureLandType)})??{},n=Object.keys(o).length>0;if(!(t===void 0&&r===void 0&&!n))return tt({income:t,expenditure:r??0,agricultureLandDetails:n?[o]:void 0})}function wh(i,e){const t=Ul(i);return t?{userId:et(e.userId),assessmentYear:e.assessmentYear,agricultureDetails:t}:null}function et(i){if(i===void 0||i==="")return;const e=Number(i);return Number.isFinite(e)&&String(e)===String(i)?e:i}function Se(i){if(i==null||i==="")return;const e=typeof i=="number"?i:Number(i);return Number.isFinite(e)?e:void 0}function Ee(i){if(i==null)return;const e=String(i).trim();return e===""?void 0:e}function lr(i){return i===!0||i===!1?i:void 0}function kh(){const i=new Date,e=(t,r=2)=>String(t).padStart(r,"0");return`${i.getFullYear()}-${e(i.getMonth()+1)}-${e(i.getDate())}T${e(i.getHours())}:${e(i.getMinutes())}:${e(i.getSeconds())}.${e(i.getMilliseconds(),3)}`}function en(i){const e=Ee(i);if(e)return e.includes("T")?e:/^\d{4}-\d{2}-\d{2}$/.test(e)?`${e}T00:00:00Z`:e}function tn(i){return Array.isArray(i)?i.filter(e=>e&&typeof e=="object"):[]}function Eo(i,e){return tn(i).map(t=>tt(e(t))).filter(t=>t!==void 0)}function tt(i){if(Array.isArray(i)){const e=i.map(tt).filter(t=>t!==void 0);return e.length?e:void 0}if(i&&typeof i=="object"){const e={};for(const[t,r]of Object.entries(i)){const o=tt(r);o!==void 0&&(e[t]=o)}return Object.keys(e).length?e:void 0}return i}function _h(i){const e=i&&typeof i=="object"?i:{},t={},r=Ue(e.employers),o=Ue(e.taxPaid?.onSalary);r.length&&(t.salaryDetails=r.map(M=>{const U=Ao(M.salary),oe=Ao(M.perquisites),Y=Ao(M.profitsInLieuOfSalaryType),W=U+oe+Y,ee=Ah(M.allowance);return{employerName:Ce(M.employerName),employerTan:Ce(M.employerTAN),basicSalary:U||void 0,grossSalary:W||void 0,hraReceived:ee.hra,leaveTravelAllowance:ee.lta,leaveEncashment:ee.leaveEncashment,anyOtherAllowance:ee.other,totalTdsDeposited:Eh(M,o,r)??Re(M.totalTdsDeposited)}}));const n=Ue(e.houseProperties);n.length&&(t.hpDetails=n.map(M=>{const U=Ue(M.loanDetails),oe=U.length?U[0]:void 0,Y=Re(M.grossAnnualRentReceived),W=U.length?U.reduce((J,ge)=>J+(Re(ge.interest)??0),0):void 0,ee=Ue(M.tenant),D=Ue(M.coOwners),X=ee[0],L=D[0];return{typeOfHouseProperty:Ce(M.propertyType),loanTakenFrom:Ce(oe?.loanTakenFrom),lenderName:Ce(oe?.bankOrInstituteName),loanAccountNumber:Ce(oe?.loanAccountNo),sanctionDate:Dl(oe?.loanSanctionDate),totalLoanAmount:Re(oe?.totalLoanAmount),outstandingAmount:Re(oe?.loanOutstandingAmount),homeLoanInterest:W,homeLoanPrinciple:void 0,housePropertyAddress:Ce(M.address),housePropertyPincode:Ce(M.pinCode),rentalIncome:Y,nameOfTenant:Ce(X?.name),tenantPanNumber:Ce(X?.panNumber),eligible80EEAmount:Re(M.eligible80EEAmount),eligible80EEAAmount:Re(M.eligible80EEAAmount),propertyTax:Re(M.propertyTax),hasCoOwnedProperty:D.length>0,coOwnerName:Ce(L?.name),coOwnerPan:Ce(L?.panNumber),coOwnerShare:Re(L?.share)?.toString()}}));const s=Ue(e.deductionUS80CDetails),a=Tt(s.map(M=>Re(M.amount))),l=s.find(M=>Ce(M.identificationNo));t.us80cAmount=a,t.us80cPolicyNumber=Ce(l?.identificationNo);const c=Ue(e.investments)[0],u=Array.isArray(c?.bifurcation)?c.bifurcation[0]:void 0;t.us80cSubType=Ce(u?.subType??c?.investmentType);const d=Ue(e.deductionUS80DDetails),p=d.find(M=>Ce(M.policyFor)?.toUpperCase()==="DEPENDANT")??Ue(e.insurances).find(M=>Ce(M.policyFor)?.toUpperCase()==="DEPENDANT"),g=d.find(M=>Ce(M.policyFor)?.toUpperCase()==="PARENTS")??Ue(e.insurances).find(M=>Ce(M.policyFor)?.toUpperCase()==="PARENTS"),f=Array.isArray(p?.bifurcation)?p.bifurcation[0]:void 0,y=Array.isArray(g?.bifurcation)?g.bifurcation[0]:void 0;t.us80dForSelfAndFamilyAmount=Re(p?.healthInsuranceAmount??p?.premium),t.us80dForSelfAndFamilyPolicyCompany=Ce(p?.insurerName??f?.insurerName),t.us80dForSelfAndFamilyPolicyNumber=Ce(p?.policyNo??f?.accountNo),t.us80dForParentsAmount=Re(g?.healthInsuranceAmount??g?.premium),t.us80dForParentsPolicyCompany=Ce(g?.insurerName??y?.insurerName),t.us80dForParentsPolicyNumber=Ce(g?.policyNo??y?.accountNo),t.hasParentOverSixty=Ih(e.systemFlags?.hasParentOverSixty),t.us80ccd1bAmount=void 0,t.us80ccd1bPanNo=Ce(e.pranNumber),t.us80ccd2Amount=void 0;const w=Ue(e.donations)[0];t.us80gDonationAmount=Re(w?.amount??w?.donationAmount),t.us80gNameOfCharity=Ce(w?.nameOfCharity??w?.donorName??w?.trustName),t.us80gCharityPan=Ce(w?.panNumber??w?.charityPan),t.us80gTrustAddress=Ce(w?.address??w?.charityAddress),t.us80gPincode=Ce(w?.pinCode??w?.pincode);const k=Ue(e.houseProperties?.[0]?.loanDetails)[0];t.us80eLoanTakenFrom=void 0,t.us80eBankName=void 0,t.us80eLoanAccountNumber=void 0,t.us80eLoanSanctionDate=void 0,t.us80eLoanAmount=void 0,t.us80eeLoanTakenFrom=Ce(k?.loanTakenFrom),t.us80eeBankName=Ce(k?.bankOrInstituteName),t.us80eeLoanAccountNumber=Ce(k?.loanAccountNo),t.us80eeLoanSanctionDate=Dl(k?.loanSanctionDate),t.us80eeLoanAmount=Re(k?.totalLoanAmount),t.us80eeOutstandingLoan=Re(k?.loanOutstandingAmount),t.us80eeVehicleRegistrationNumber=Ce(k?.vehicleRegistrationNo);const S=Ue(e.insurances);t.preventiveHealthCheckUp=Tt(S.map(M=>Re(M.preventiveCheckUp))),t.medicalExpenditure=Tt(S.map(M=>Re(M.medicalExpenditure)));const v=Ue(e.incomes),x=M=>Tt(v.filter(U=>Ce(U.incomeType)===M).map(U=>Re(U.amount)));t.savingBankInterest=x("SAVING_INTEREST"),t.fdInterest=x("FD_RD_INTEREST"),t.anyOtherIncome=x("ANY_OTHER"),t.familyPension=x("FAMILY_PENSION"),t.dividend=Tt(Ue(e.dividendIncomes).map(M=>Re(M.income)));const E=e.business;if(E){const M=Ue(E.presumptiveIncomes),U=W=>{const ee=Ue(W.incomes),D=X=>Re(ee.find(L=>Ce(L.incomeType)===X)?.receipts)??0;return D("ANY_OTHER")>0?!0:D("BANK")>0||D("CASH")>0?!1:!!Ce(W.businessType)?.toUpperCase().includes("PROFESSION")},oe=W=>M.find(ee=>U(ee)===W),Y=(W,ee)=>{if(!W)return;const D=Ue(W.incomes),X=J=>Re(D.find(ge=>Ce(ge.incomeType)===J)?.receipts),L=X("BANK")||X("ANY_OTHER");t[ee.name]=Ce(W.businessType),t[ee.nature]=Ce(W.natureOfBusiness),t[ee.bank]=L||void 0,t[ee.cash]=X("CASH")||void 0,t[ee.net]=Tt(D.map(J=>Re(J.presumptiveIncome)))||void 0};Y(oe(!1),{name:"bizName",nature:"bizNature",bank:"bizReceiptsBank",cash:"bizReceiptsCash",net:"bizNetProfit"}),Y(oe(!0),{name:"profName",nature:"profNature",bank:"profReceiptsBank",cash:"profReceiptsCash",net:"profNetProfit"})}const I=Ue(e.capitalGain).filter(M=>Ce(M.assetType)?.toUpperCase()==="VDA").flatMap(M=>Ue(M.assetDetails));I.length&&(t.cryptoSellPrice=Tt(I.map(M=>Re(M.sellValue))),t.cryptoPurchasePrice=Tt(I.map(M=>Re(M.purchaseCost))));const P=e.agriculturalDetails,O=e.agriculturalIncome;t.agricultureIncome=Re(O?.netAgriculturalIncome)??Re(O?.grossAgriculturalReceipts)??Re(P?.income),t.agricultureExpenditure=Re(O?.expenditureIncurredOnAgriculture)??Re(P?.expenditure);const T=Ue(P?.agricultureLandDetails??P?.agriculturalLandDetails??e.agriculturalLandDetails)[0];T&&(t.agricultureLandInAcre=Re(T.landInAcre),t.agricultureLandDistrict=Ce(T.nameOfDistrict),t.agricultureLandPincode=Ce(T.pinCode),t.agricultureLandOwner=Sh(T.owner),t.agricultureLandType=xh(T.typeOfLand)),t.aadhaarNumber=Ce(e.aadharNumber);const $=Ue(e.bankDetails)[0];return $&&(t.bankAccountNumber=Ce($.accountNumber),t.bankIfscCode=Ce($.ifsCode)),Bl(t)}function Sh(i){const e=Ce(i)?.trim();if(!e)return;const t=e.toUpperCase();return t==="O"||t==="OWNED"?"Owned":t==="H"||t.startsWith("HELD")?"Held on lease":e}function xh(i){const e=Ce(i)?.trim();if(!e)return;const t=e.toUpperCase();return t==="IRG"||t==="IRRIGATED"?"Irrigated":t==="RF"||t.startsWith("RAIN")?"Rain-fed":e}function Dl(i){const e=Ce(i);if(!e)return;const t=/^(\d{4}-\d{2}-\d{2})/.exec(e);return t?t[1]:e}function Ao(i){return Ue(i).reduce((e,t)=>e+(Re(t.taxableAmount)??0),0)}function Eh(i,e,t){if(!e.length)return;const r=Ce(i.employerTAN)?.trim().toUpperCase();if(r){for(const n of e)if(Ce(n.deductorTAN)?.trim().toUpperCase()===r)return Re(n.totalTdsDeposited)}const o=Ce(i.employerName)?.trim().toLowerCase();if(o){for(const n of e)if(Ce(n.deductorName)?.trim().toLowerCase()===o)return Re(n.totalTdsDeposited)}if(t.length===1&&e.length===1)return Re(e[0].totalTdsDeposited)}function Ah(i){const e=Ue(i);if(!e.length)return{};let t,r,o,n;for(const s of e){const a=Re(s.exemptAmount)??Re(s.allowanceAmount);switch(Ce(s.allowanceType)?.toUpperCase()){case"HRA":case"HOUSE_RENT_ALLOWANCE":t=a;break;case"LTA":case"LEAVE_TRAVEL_ALLOWANCE":r=a;break;case"LEAVE_ENCASHMENT":o=a;break;default:n=(n??0)+(Re(s.allowanceAmount)??0)}}return{hra:t,lta:r,leaveEncashment:o,other:n}}function Tt(i){let e=0,t=!1;for(const r of i)r!=null&&(e+=r,t=!0);return t?e:void 0}function Ue(i){return Array.isArray(i)?i.filter(e=>e&&typeof e=="object"):[]}function Re(i){if(typeof i=="number"&&Number.isFinite(i))return i;if(typeof i=="string"&&i.trim()!==""&&Number.isFinite(Number(i)))return Number(i)}function Ce(i){if(i==null)return;const e=String(i).trim();return e===""?void 0:e}function Ih(i){if(typeof i=="boolean")return i;if(typeof i=="string"){const e=i.trim().toLowerCase();if(e==="true"||e==="1"||e==="yes"||e==="y")return!0;if(e==="false"||e==="0"||e==="no"||e==="n")return!1}if(typeof i=="number")return i===1?!0:i===0?!1:void 0}function Bl(i){const e={};for(const[t,r]of Object.entries(i))r!==void 0&&(Array.isArray(r)?e[t]=r.map(o=>o&&typeof o=="object"?Bl(o):o):e[t]=r);return e}function Io(){if(typeof window>"u")return null;const i=window,e=i.__aikaara_runtime__;if(!e||typeof e.getChatJwt!="function")return console.warn("[smart-edit] API disabled: window.__aikaara_runtime__.getChatJwt is missing — the chat was not mounted via the SDK mountFromSlug path."),null;const t=i.__aikaara_descriptor__??{},r=Dh(t);if(!r)return console.warn("[smart-edit] API disabled: could not resolve a TaxBuddy API host from the descriptor (cloud / upload / pan / leader endpoints)."),null;const o=Bh(e.slug),n=typeof o?.tenantJwt=="string"?o.tenantJwt:"",s=e.getChatJwt,a=async()=>n||await s(),l=(o&&o.userId!=null&&o.userId!==""?String(o.userId):$h(e.identity))||void 0;return console.info("[smart-edit] API config — base:",r,"· userId:",l??"(none)"),{baseUrl:r,getToken:a,headers:Fh(t.auth?.headers),assessmentYear:t.itr?.assessmentYear||qh(),isRevised:"N",userId:l,submitUrl:t.itr?.automationSubmitUrl||void 0}}async function Th(i){const e=await i.getToken(),t=i.userId;if(!t)throw new Error("[smart-edit] no userId for GET /itr/latest-itr (aikaara_sso identity missing)");const r=await fetch(`${i.baseUrl}/itr/latest-itr?userId=${encodeURIComponent(t)}`,{method:"GET",headers:{accept:"application/json",authorization:`Bearer ${e}`,...i.headers}});if(!r.ok){const o=await r.text().catch(()=>"");throw new Error(`[smart-edit] GET /itr/latest-itr → ${r.status} ${o.slice(0,200)}`)}return _h(To(await r.json().catch(()=>({}))))}async function Ch(i,e){const t=await i.getToken(),r=i.userId,o={...ah(e,{userId:r,assessmentYear:i.assessmentYear,isRevised:i.isRevised}),sendSummary:!0},n=i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,s={accept:"application/json","content-type":"application/json",authorization:`Bearer ${t}`,...i.headers};i.txbdyApiKey&&(s["txbdy-api-key"]=i.txbdyApiKey),console.info("[smart-edit] PUT",n,"— DTO keys:",Object.keys(o).join(", "));const a=await fetch(n,{method:"PUT",headers:s,body:JSON.stringify(o)});if(!a.ok){const l=await a.text().catch(()=>"");throw new Error(`[smart-edit] PUT ${n} → ${a.status} ${l.slice(0,200)}`)}return To(await a.json().catch(()=>({})))}async function Ph(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/salary`,e)}async function Oh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/bank-aadhaar`,e)}async function Fl(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function Mh(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function Lh(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function Rh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/deductions`,e)}async function Nh(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function jh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/hp-income`,e)}async function Uh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/vda`,e)}async function wt(i,e,t){const o={accept:"application/json","content-type":"application/json",authorization:`Bearer ${await i.getToken()}`,...i.headers};i.txbdyApiKey&&(o["txbdy-api-key"]=i.txbdyApiKey),console.info("[smart-edit] PUT",e,"— body keys:",Object.keys(t).join(", "));const n=await fetch(e,{method:"PUT",headers:o,body:JSON.stringify(t)});if(!n.ok){const s=await n.text().catch(()=>"");throw new Error(`[smart-edit] PUT ${e} → ${n.status} ${s.slice(0,200)}`)}return To(await n.json().catch(()=>({})))}function Dh(i){const e=[i.cloud?.listEndpoint,i.cloud?.downloadEndpoint,i.upload?.signEndpoint,i.login?.pan?.basicPanEndpoint,i.login?.pan?.panDetailEndpoint,i.methodPicker?.leaderAssignmentEndpoint];for(const t of e)if(!(typeof t!="string"||!t))try{const r=new URL(t);if(/(^|\.)taxbuddy\.com$/i.test(r.hostname))return r.origin}catch{}return null}function Bh(i){if(!i||typeof localStorage>"u")return null;try{const e=localStorage.getItem(`aikaara_sso:${i}`);if(!e)return null;const t=JSON.parse(e);return t&&typeof t.identity=="object"&&t.identity!==null?t.identity:null}catch{return null}}function Fh(i){const e={};if(!i)return e;const t=/^(authorization|content-type|accept)$/i;for(const[r,o]of Object.entries(i))!t.test(r)&&typeof o=="string"&&(e[r]=o);return e}function $h(i){if(!i)return;const e=i.userId??i.id??i.ext_uid??i.extUid;return e==null||e===""?void 0:String(e)}function To(i){if(i&&typeof i=="object"){const e=i;return e.data&&typeof e.data=="object"?e.data:e}return{}}function qh(){const i=new Date,e=i.getMonth()>=3?i.getFullYear():i.getFullYear()-1;return`${e}-${e+1}`}class Hh{client;panel;bubble;header;messageList;input;errorBanner;isOpen=!1;isEmbed=!1;smartEditModal=null;constructor(e,t,r){this.client=new Ol(e,{uploadAdapter:r?.uploadAdapter,historyAdapter:r?.historyAdapter}),this.isEmbed=e.display==="embed",this.bubble=t.querySelector("aikaara-chat-bubble"),this.panel=t.querySelector(".aikaara-panel"),this.header=t.querySelector("aikaara-chat-header"),this.messageList=t.querySelector("aikaara-message-list"),this.input=t.querySelector("aikaara-chat-input"),this.errorBanner=t.querySelector("aikaara-error-banner"),e.welcomeMessage&&this.messageList.setWelcomeMessage(e.welcomeMessage),e.showTimestamps!==void 0&&this.messageList.setShowTimestamps(e.showTimestamps),(e.linkHandlers||e.getLinkBearer)&&this.messageList.setLinkConfig(e.linkHandlers??[],e.getLinkBearer),e.chatActions!==void 0&&this.header.setActions(e.chatActions),this.wireEvents()}async connect(){try{await this.client.connect(),this.messageList.renderMessages(this.client.messages)}catch{this.errorBanner.show("Failed to connect. Retrying...",5e3)}}async disconnect(){await this.client.disconnect()}wireEvents(){this.bubble?.addEventListener("toggle",()=>{this.togglePanel()}),this.isEmbed||this.header.addEventListener("header-close",()=>{this.togglePanel(!1)}),this.header.addEventListener("aikaara-chat-action",(e=>{this.handleChatAction(e.detail)})),this.input.addEventListener("send",(e=>{this.handleSend(e.detail.content)})),this.input.addEventListener("file-pick",(e=>{this.handleFile(e.detail.file)})),this.client.on("message:sent",e=>{this.messageList.addMessage(e),requestAnimationFrame(()=>{setTimeout(()=>{this.messageList.showTypingIndicator()},100)})}),this.client.on("stream:start",()=>{this.messageList.removeTypingIndicator();const e=this.client.messages[this.client.messages.length-1];e&&this.messageList.addMessage(e)}),this.client.on("stream:update",({content:e})=>{this.messageList.updateStreamingContent(e)}),this.client.on("stream:end",()=>{this.messageList.finalizeStreaming()}),this.client.on("typing:start",()=>{const e=this.client.messages,t=e[e.length-1];(!t||t.status!=="streaming")&&this.messageList.showTypingIndicator()}),this.client.on("typing:stop",()=>{this.messageList.removeTypingIndicator()}),this.client.on("connection:state",e=>{this.header.setStatus(e),e==="connected"?(this.errorBanner.hide(),this.input.disabled=!1):e==="reconnecting"?(this.errorBanner.show("Connection lost. Reconnecting..."),this.input.disabled=!0):e==="disconnected"&&(this.input.disabled=!0)}),this.client.on("error",e=>{this.errorBanner.show(e.message,5e3)}),this.client.on("message:received",e=>{this.messageList.upsertMessage(e);const t=this.client.config?.tiledeskIdentity?.userId;e.metadata?.sender&&t&&e.metadata.sender!==t&&this.messageList.removeTypingIndicator()}),this.client.on("message:updated",e=>{this.messageList.upsertMessage(e)}),this.messageList.addEventListener("message-action",e=>{const t=e.detail;if(!t?.text)return;if(this.shouldOpenSmartEdit(t.text)){this.openSmartEdit();return}const r=this.client.config.templateActionAttributes??{},o=t.attributes?.action??{},n={...t.attributes,action:{...r,...o}};this.handleSend(t.text,n)})}async handleSend(e,t){try{await this.client.sendMessage(e,t?{attributes:t}:void 0)}catch{this.errorBanner.show("Failed to send message",3e3)}}async handleFile(e){this.input.uploading=!0;try{await this.client.sendFile(e)}catch(t){this.errorBanner.show(t instanceof Error?`Upload failed: ${t.message}`:"Upload failed",4e3)}finally{this.input.uploading=!1}}sendUserEvent(e,t,r){this.client.sendUserEvent(e,t,r)}getClient(){return this.client}async handleChatAction(e){if(e.id==="edit-itr"){this.openSmartEdit();return}console.info("[chat-action]",e.id,e.label)}shouldOpenSmartEdit(e){const t=window.__aikaara_descriptor__?.smartEdit?.openOnMessages;if(!Array.isArray(t)||t.length===0)return!1;const r=n=>n.trim().toLowerCase(),o=r(e);return t.some(n=>typeof n=="string"&&r(n)===o)}async openSmartEdit(){const e=this.ensureSmartEditModal();e.open({schemas:sh,data:{}});const t=Io();if(!(!t||!t.baseUrl))try{const r=await Th(t);e.setData(r)}catch(r){console.warn("[smart-edit] fetch failed",r),this.errorBanner.show("Could not load your ITR details — starting from a blank form.",4e3)}}ensureSmartEditModal(){if(this.smartEditModal)return this.smartEditModal;const e=document.createElement("aikaara-smart-edit-modal");return document.body.appendChild(e),e.addEventListener("smart-edit-submit",(t=>{const r=t.detail;this.handleSectionSubmit(r.sectionId,r.record)})),e.addEventListener("smart-edit-recalculate",(t=>{const r=t.detail;this.handleSmartEditSave(r.record)})),this.smartEditModal=e,e}async handleSectionSubmit(e,t){const r=Io();if(!r)return;const o={userId:r.userId,assessmentYear:r.assessmentYear};try{if(e==="salary-hra"){const n=Array.isArray(t.salaryDetails)?t.salaryDetails:[],s=uh(n,o);s&&await Ph(r,s)}else if(e==="bank-details"){const n=dh(t,o);n&&await Oh(r,n)}else if(e==="other-sources")await Fl(r,hh(t,o));else if(e==="business-profession"){const n=ph(t,o);n&&await Mh(r,n)}else if(e==="crypto-income"){const n=fh(t,o);n&&await Uh(r,n)}else if(e==="agricultural-income"){const n=wh(t,o);n&&await Lh(r,n)}else if(e==="deductions"){for(const s of bh(t,o))await Rh(r,s);const n=vh(t,o);n&&await Fl(r,n)}else if(e==="house-property"){const n=gh(t,o);n&&await Nh(r,n);const s=yh(t,o);s&&await jh(r,s)}}catch(n){console.warn("[smart-edit] section save failed",e,n),this.errorBanner.show("Failed to save. Please try again.",4e3)}}async handleSmartEditSave(e){console.info("[smart-edit] Save & Recalculate — persisting record");const t=Io();if(!t){console.warn("[smart-edit] save skipped — no API config (see the warning above for why)");return}try{await Ch(t,e)}catch(r){console.warn("[smart-edit] save failed",r),this.errorBanner.show("Failed to save your ITR details. Please try again.",4e3)}}togglePanel(e){this.isEmbed||(this.isOpen=e!==void 0?e:!this.isOpen,this.isOpen?(this.panel.removeAttribute("hidden"),requestAnimationFrame(()=>{this.panel.classList.remove("entering"),this.panel.classList.add("visible"),this.input.focus()})):(this.panel.classList.remove("visible"),this.panel.classList.add("entering"),setTimeout(()=>{this.panel.setAttribute("hidden","")},200)))}}class $l extends HTMLElement{shadow;controller=null;_config={};static get observedAttributes(){return["base-url","ws-url","user-token","api-key","title","subtitle","theme","primary-color","position","width","height","placeholder","welcome-message","avatar-url","display"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.initController()}disconnectedCallback(){this.controller?.disconnect()}attributeChangedCallback(e,t,r){t!==r&&this.controller&&(this.render(),this.initController())}configure(e){this._config={...this._config,...e}}getConfig(){return{baseUrl:this.getAttribute("base-url")||this._config.baseUrl||"",wsUrl:this.getAttribute("ws-url")||this._config.wsUrl,userToken:this.getAttribute("user-token")||this._config.userToken||"",apiKey:this.getAttribute("api-key")||this._config.apiKey,title:this.getAttribute("title")||this._config.title||"Chat",subtitle:this.getAttribute("subtitle")||this._config.subtitle,theme:this.getAttribute("theme")||this._config.theme||Uc,primaryColor:this.getAttribute("primary-color")||this._config.primaryColor||Fo,position:this.getAttribute("position")||this._config.position||jc,width:Number(this.getAttribute("width"))||this._config.width||Mc,height:Number(this.getAttribute("height"))||this._config.height||Lc,fontFamily:this._config.fontFamily||Nc,borderRadius:this._config.borderRadius??Rc,placeholder:this.getAttribute("placeholder")||this._config.placeholder||$o,welcomeMessage:this.getAttribute("welcome-message")||this._config.welcomeMessage,avatarUrl:this.getAttribute("avatar-url")||this._config.avatarUrl,showTimestamps:this._config.showTimestamps??!0,persistConversation:this._config.persistConversation??!0,showHeader:this._config.showHeader??!0,hideSystemMessages:this._config.hideSystemMessages,timestampFormat:this._config.timestampFormat,input:this._config.input,templateLayout:this._config.templateLayout,chatActions:this._config.chatActions,showBubble:this._config.showBubble??!0,display:(this.getAttribute("display")||this._config.display)??"popup",offset:this._config.offset||Dc,conversationId:this._config.conversationId,systemPromptId:this._config.systemPromptId,channel:this._config.channel,extUid:this._config.extUid,transport:this._config.transport,tiledesk:this._config.tiledesk,tiledeskIdentity:this._config.tiledeskIdentity,onMessage:this._config.onMessage,onStatusChange:this._config.onStatusChange,onError:this._config.onError,onStreamUpdate:this._config.onStreamUpdate,onConnectionStateChange:this._config.onConnectionStateChange,onTemplateMessage:this._config.onTemplateMessage,themeTokens:this._config.themeTokens,linkHandlers:this._config.linkHandlers,getLinkBearer:this._config.getLinkBearer}}propagateThemeToDocument(e,t,r,o){if(typeof document>"u")return;const n=document.documentElement,s=(a,l)=>{l!==void 0&&l!==""&&n.style.setProperty(`--aikaara-${a}`,l)};s("primary",e?.primary??t),s("primary-hover",e?.primaryHover),s("primary-contrast",e?.primaryContrast),s("surface",e?.surface),s("surface-muted",e?.surfaceMuted),s("border",e?.border),s("text",e?.text),s("text-muted",e?.textMuted),s("font",e?.font??o),s("radius",e?.radius!=null?`${e.radius}px`:r!=null?`${r}px`:void 0),s("bubble-radius",e?.bubbleRadius!=null?`${e.bubbleRadius}px`:void 0),s("button-radius",e?.buttonRadius!=null?`${e.buttonRadius}px`:void 0),s("user-bubble-bg",e?.userBubbleBg),s("user-bubble-text",e?.userBubbleText),s("bot-bubble-bg",e?.botBubbleBg),s("bot-bubble-text",e?.botBubbleText),s("modal-width",e?.modalWidth),s("modal-height",e?.modalHeight),s("modal-max-width",e?.modalMaxWidth),s("modal-max-height",e?.modalMaxHeight),s("modal-padding",e?.modalPadding)}themeVars(e){if(!e)return"";const t=o=>typeof o=="number"?`${o}px`:void 0,r={primary:e.primary,"primary-hover":e.primaryHover,"primary-contrast":e.primaryContrast,surface:e.surface,"surface-muted":e.surfaceMuted,border:e.border,text:e.text,"text-muted":e.textMuted,font:e.font,radius:t(e.radius),"bubble-radius":t(e.bubbleRadius),"button-radius":t(e.buttonRadius),"user-bubble-bg":e.userBubbleBg,"user-bubble-text":e.userBubbleText,"bot-bubble-bg":e.botBubbleBg,"bot-bubble-text":e.botBubbleText,"modal-width":e.modalWidth,"modal-height":e.modalHeight,"modal-max-width":e.modalMaxWidth,"modal-max-height":e.modalMaxHeight,"modal-padding":e.modalPadding};return Object.entries(r).filter(([,o])=>o!==void 0&&o!=="").map(([o,n])=>`--aikaara-${o}: ${n};`).join(`
|
|
8
|
+
`)&&(e=e.replace(fl,"%0A")),e.includes("\r")&&(e=e.replace(pl,"%0D")),e.includes(" ")&&(e=e.replace(ml,"%09")),r.pathname=e,r}var Xa,Wr,ho,zr,Vr,fo,Kr,po,Gr,mo,Yr,go,Jr,yo,Qr,bo,It,vo,ze,Za,el,tl,rl,nl,il,ol,sl,al,ll,cl,Xr,ul,dl,hl,fl,pl,ml,$d=Ye(()=>{le(),ue(),ce(),id(),wd(),Md(),Ka(),Xa=Object.freeze(Object.create(null)),Wr={},ho=!1,zr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:global,Vr={},fo=!1,Kr={},po=!1,Gr={},mo=!1,Yr={},go=!1,Jr={},yo=!1,Qr={},bo=!1,It={},vo=!1,ze=Dd(),ze.parse,ze.resolve,ze.resolveObject,ze.format,ze.Url,Za=typeof Deno<"u"?Deno.build.os==="windows"?"win32":Deno.build.os:void 0,ze.URL=typeof URL<"u"?URL:null,ze.pathToFileURL=Qa,ze.fileURLToPath=Ja,el=ze.Url,tl=ze.format,rl=ze.resolve,nl=ze.resolveObject,il=ze.parse,ol=ze.URL,sl=92,al=47,ll=97,cl=122,Xr=Za==="win32",ul=/\//g,dl=/%/g,hl=/\\/g,fl=/\n/g,pl=/\r/g,ml=/\t/g}),qd=pe((i,e)=>{le(),ue(),ce(),e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}),wo=pe(i=>{le(),ue(),ce(),Object.defineProperty(i,"__esModule",{value:!0}),i.BufferedDuplex=void 0,i.writev=r;var e=Nt(),t=(qe(),Ne($e));function r(n,s){let a=new Array(n.length);for(let l=0;l<n.length;l++)typeof n[l].chunk=="string"?a[l]=t.Buffer.from(n[l].chunk,"utf8"):a[l]=n[l].chunk;this._write(t.Buffer.concat(a),"binary",s)}var o=class extends e.Duplex{socket;proxy;isSocketOpen;writeQueue;constructor(n,s,a){super({objectMode:!0}),this.proxy=s,this.socket=a,this.writeQueue=[],n.objectMode||(this._writev=r.bind(this)),this.isSocketOpen=!1,this.proxy.on("data",l=>{!this.destroyed&&this.readable&&this.push(l)})}_read(n){this.proxy.read(n)}_write(n,s,a){this.isSocketOpen?this.writeToProxy(n,s,a):this.writeQueue.push({chunk:n,encoding:s,cb:a})}_final(n){this.writeQueue=[],this.proxy.end(n)}_destroy(n,s){this.writeQueue=[],this.proxy.destroy(),s(n)}socketReady(){this.emit("connect"),this.isSocketOpen=!0,this.processWriteQueue()}writeToProxy(n,s,a){this.proxy.write(n,s)===!1?this.proxy.once("drain",a):a()}processWriteQueue(){for(;this.writeQueue.length>0;){let{chunk:n,encoding:s,cb:a}=this.writeQueue.shift();this.writeToProxy(n,s,a)}}};i.BufferedDuplex=o}),Zr=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(w){return w&&w.__esModule?w:{default:w}};Object.defineProperty(i,"__esModule",{value:!0}),i.streamBuilder=i.browserStreamBuilder=void 0;var t=(qe(),Ne($e)),r=e(qd()),o=e(gt()),n=Nt(),s=e(Ir()),a=wo(),l=(0,o.default)("mqttjs:ws"),c=["rejectUnauthorized","ca","cert","key","pfx","passphrase"];function u(w,m){let k=`${w.protocol}://${w.hostname}:${w.port}${w.path}`;return typeof w.transformWsUrl=="function"&&(k=w.transformWsUrl(k,w,m)),k}function d(w){let m=w;return w.port||(w.protocol==="wss"?m.port=443:m.port=80),w.path||(m.path="/"),w.wsOptions||(m.wsOptions={}),!s.default&&!w.forceNativeWebSocket&&w.protocol==="wss"&&c.forEach(k=>{Object.prototype.hasOwnProperty.call(w,k)&&!Object.prototype.hasOwnProperty.call(w.wsOptions,k)&&(m.wsOptions[k]=w[k])}),m}function p(w){let m=d(w);if(m.hostname||(m.hostname=m.host),!m.hostname){if(typeof document>"u")throw new Error("Could not determine host. Specify host manually.");let k=new URL(document.URL);m.hostname=k.hostname,m.port||(m.port=Number(k.port))}return m.objectMode===void 0&&(m.objectMode=!(m.binary===!0||m.binary===void 0)),m}function g(w,m,k){l("createWebSocket"),l(`protocol: ${k.protocolId} ${k.protocolVersion}`);let S=k.protocolId==="MQIsdp"&&k.protocolVersion===3?"mqttv3.1":"mqtt";l(`creating new Websocket for url: ${m} and protocol: ${S}`);let v;return k.createWebsocket?v=k.createWebsocket(m,[S],k):v=new r.default(m,[S],k.wsOptions),v}function f(w,m){let k=m.protocolId==="MQIsdp"&&m.protocolVersion===3?"mqttv3.1":"mqtt",S=u(m,w),v;return m.createWebsocket?v=m.createWebsocket(S,[k],m):v=new WebSocket(S,[k]),v.binaryType="arraybuffer",v}var y=(w,m)=>{l("streamBuilder");let k=d(m);k.hostname=k.hostname||k.host||"localhost";let S=u(k,w),v=g(w,S,k),x=r.default.createWebSocketStream(v,k.wsOptions);return x.url=S,v.on("close",()=>{x.destroy()}),x};i.streamBuilder=y;var b=(w,m)=>{l("browserStreamBuilder");let k,S=p(m).browserBufferSize||1024*512,v=m.browserBufferTimeout||1e3,x=!m.objectMode,E=f(w,m),I=O(m,U,oe);m.objectMode||(I._writev=a.writev.bind(I)),I.on("close",()=>{E.close()});let P=typeof E.addEventListener<"u";E.readyState===E.OPEN?(k=I,k.socket=E):(k=new a.BufferedDuplex(m,I,E),P?E.addEventListener("open",B):E.onopen=B),P?(E.addEventListener("close",T),E.addEventListener("error",$),E.addEventListener("message",M)):(E.onclose=T,E.onerror=$,E.onmessage=M);function O(Y,W,ee){let D=new n.Transform({objectMode:Y.objectMode});return D._write=W,D._flush=ee,D}function B(){l("WebSocket onOpen"),k instanceof a.BufferedDuplex&&k.socketReady()}function T(Y){l("WebSocket onClose",Y),k.end(),k.destroy()}function $(Y){l("WebSocket onError",Y);let W=new Error("WebSocket error");W.event=Y,k.destroy(W)}async function M(Y){if(!I||!I.readable||!I.writable)return;let{data:W}=Y;W instanceof ArrayBuffer?W=t.Buffer.from(W):W instanceof Blob?W=t.Buffer.from(await new Response(W).arrayBuffer()):W=t.Buffer.from(W,"utf8"),I.push(W)}function U(Y,W,ee){if(E.bufferedAmount>S){setTimeout(U,v,Y,W,ee);return}x&&typeof Y=="string"&&(Y=t.Buffer.from(Y,"utf8"));try{E.send(Y)}catch(D){return ee(D)}ee()}function oe(Y){E.close(),Y()}return k};i.browserStreamBuilder=b}),ko={};$t(ko,{Server:()=>De,Socket:()=>De,Stream:()=>De,_createServerHandle:()=>De,_normalizeArgs:()=>De,_setSimultaneousAccepts:()=>De,connect:()=>De,createConnection:()=>De,createServer:()=>De,default:()=>gl,isIP:()=>De,isIPv4:()=>De,isIPv6:()=>De});function De(){throw new Error("Node.js net module is not supported by JSPM core outside of Node.js")}var gl,yl=Ye(()=>{le(),ue(),ce(),gl={_createServerHandle:De,_normalizeArgs:De,_setSimultaneousAccepts:De,connect:De,createConnection:De,createServer:De,isIP:De,isIPv4:De,isIPv6:De,Server:De,Socket:De,Stream:De}}),bl=pe((i,e)=>{le(),ue(),ce(),e.exports={}}),vl=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(i,"__esModule",{value:!0});var t=e((yl(),Ne(ko))),r=e(gt()),o=e(bl()),n=(0,r.default)("mqttjs:tcp"),s=(a,l)=>{if(l.port=l.port||1883,l.hostname=l.hostname||l.host||"localhost",l.socksProxy)return(0,o.default)(l.hostname,l.port,l.socksProxy,{timeout:l.socksTimeout});let{port:c,path:u}=l,d=l.hostname;return n("port %d and host %s",c,d),t.default.createConnection({port:c,host:d,path:u})};i.default=s}),wl={};$t(wl,{default:()=>kl});var kl,Hd=Ye(()=>{le(),ue(),ce(),kl={}}),_l=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(i,"__esModule",{value:!0});var t=(Hd(),Ne(wl)),r=e((yl(),Ne(ko))),o=e(gt()),n=e(bl()),s=(0,o.default)("mqttjs:tls");function a(c){let{host:u,port:d,socksProxy:p,...g}=c;if(p!==void 0){let f=(0,n.default)(u,d,p,{timeout:c.socksTimeout});return(0,t.connect)({...g,socket:f})}return(0,t.connect)(c)}var l=(c,u)=>{u.port=u.port||8883,u.host=u.hostname||u.host||"localhost",r.default.isIP(u.host)===0&&(u.servername=u.host),u.rejectUnauthorized=u.rejectUnauthorized!==!1,delete u.path,s("port %d host %s rejectUnauthorized %b",u.port,u.host,u.rejectUnauthorized);let d=a(u);d.on("secureConnect",()=>{u.rejectUnauthorized&&!d.authorized?d.emit("error",new Error("TLS not authorized")):d.removeListener("error",p)});function p(g){u.rejectUnauthorized&&c.emit("error",g),d.end()}return d.on("error",p),d};i.default=l}),Sl=pe(i=>{le(),ue(),ce(),Object.defineProperty(i,"__esModule",{value:!0});var e=(qe(),Ne($e)),t=Nt(),r=wo(),o,n,s;function a(){let p=new t.Transform;return p._write=(g,f,y)=>{o.send({data:g.buffer,success(){y()},fail(b){y(new Error(b))}})},p._flush=g=>{o.close({success(){g()}})},p}function l(p){p.hostname||(p.hostname="localhost"),p.path||(p.path="/"),p.wsOptions||(p.wsOptions={})}function c(p,g){let f=p.protocol==="wxs"?"wss":"ws",y=`${f}://${p.hostname}${p.path}`;return p.port&&p.port!==80&&p.port!==443&&(y=`${f}://${p.hostname}:${p.port}${p.path}`),typeof p.transformWsUrl=="function"&&(y=p.transformWsUrl(y,p,g)),y}function u(){o.onOpen(()=>{s.socketReady()}),o.onMessage(p=>{let{data:g}=p;g instanceof ArrayBuffer?g=e.Buffer.from(g):g=e.Buffer.from(g,"utf8"),n.push(g)}),o.onClose(()=>{s.emit("close"),s.end(),s.destroy()}),o.onError(p=>{let g=new Error(p.errMsg);s.destroy(g)})}var d=(p,g)=>{if(g.hostname=g.hostname||g.host,!g.hostname)throw new Error("Could not determine host. Specify host manually.");let f=g.protocolId==="MQIsdp"&&g.protocolVersion===3?"mqttv3.1":"mqtt";l(g);let y=c(g,p);o=wx.connectSocket({url:y,protocols:[f]}),n=a(),s=new r.BufferedDuplex(g,n,o),s._destroy=(w,m)=>{o.close({success(){m&&m(w)}})};let b=s.destroy;return s.destroy=(w,m)=>(s.destroy=b,setTimeout(()=>{o.close({fail(){s._destroy(w,m)}})},0),s),u(),s};i.default=d}),xl=pe(i=>{le(),ue(),ce(),Object.defineProperty(i,"__esModule",{value:!0});var e=(qe(),Ne($e)),t=Nt(),r=wo(),o,n,s,a=!1;function l(){let g=new t.Transform;return g._write=(f,y,b)=>{o.sendSocketMessage({data:f.buffer,success(){b()},fail(){b(new Error)}})},g._flush=f=>{o.closeSocket({success(){f()}})},g}function c(g){g.hostname||(g.hostname="localhost"),g.path||(g.path="/"),g.wsOptions||(g.wsOptions={})}function u(g,f){let y=g.protocol==="alis"?"wss":"ws",b=`${y}://${g.hostname}${g.path}`;return g.port&&g.port!==80&&g.port!==443&&(b=`${y}://${g.hostname}:${g.port}${g.path}`),typeof g.transformWsUrl=="function"&&(b=g.transformWsUrl(b,g,f)),b}function d(){a||(a=!0,o.onSocketOpen(()=>{s.socketReady()}),o.onSocketMessage(g=>{if(typeof g.data=="string"){let f=e.Buffer.from(g.data,"base64");n.push(f)}else{let f=new FileReader;f.addEventListener("load",()=>{if(f.result instanceof ArrayBuffer){n.push(e.Buffer.from(f.result));return}n.push(e.Buffer.from(f.result,"utf-8"))}),f.readAsArrayBuffer(g.data)}}),o.onSocketClose(()=>{s.end(),s.destroy()}),o.onSocketError(g=>{s.destroy(g)}))}var p=(g,f)=>{if(f.hostname=f.hostname||f.host,!f.hostname)throw new Error("Could not determine host. Specify host manually.");let y=f.protocolId==="MQIsdp"&&f.protocolVersion===3?"mqttv3.1":"mqtt";c(f);let b=u(f,g);return o=f.my,o.connectSocket({url:b,protocols:y}),n=l(),s=new r.BufferedDuplex(f,n,o),d(),s};i.default=p}),Wd=pe(i=>{le(),ue(),ce();var e=i&&i.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(i,"__esModule",{value:!0}),i.connectAsync=u;var t=e(gt()),r=e(($d(),Ne(Ga))),o=e(Ei()),n=e(Ir());typeof je?.nextTick!="function"&&(je.nextTick=setImmediate);var s=(0,t.default)("mqttjs"),a=null;function l(d){let p;if(d.auth)if(p=d.auth.match(/^(.+):(.+)$/),p){let[,g,f]=p;d.username=g,d.password=f}else d.username=d.auth}function c(d,p){if(s("connecting to an MQTT broker..."),typeof d=="object"&&!p&&(p=d,d=""),p=p||{},d&&typeof d=="string"){let y=r.default.parse(d,!0),b={};if(y.port!=null&&(b.port=Number(y.port)),b.host=y.hostname,b.query=y.query,b.auth=y.auth,b.protocol=y.protocol,b.path=y.path,p={...b,...p},!p.protocol)throw new Error("Missing protocol");p.protocol=p.protocol.replace(/:$/,"")}if(p.unixSocket=p.unixSocket||p.protocol?.includes("+unix"),p.unixSocket?p.protocol=p.protocol.replace("+unix",""):!p.protocol?.startsWith("ws")&&!p.protocol?.startsWith("wx")&&delete p.path,l(p),p.query&&typeof p.query.clientId=="string"&&(p.clientId=p.query.clientId),n.default||p.unixSocket?p.socksProxy=void 0:p.socksProxy===void 0&&typeof je<"u"&&(p.socksProxy=je.env.MQTTJS_SOCKS_PROXY),p.cert&&p.key)if(p.protocol){if(["mqtts","wss","wxs","alis"].indexOf(p.protocol)===-1)switch(p.protocol){case"mqtt":p.protocol="mqtts";break;case"ws":p.protocol="wss";break;case"wx":p.protocol="wxs";break;case"ali":p.protocol="alis";break;default:throw new Error(`Unknown protocol for secure connection: "${p.protocol}"!`)}}else throw new Error("Missing secure protocol key");if(a||(a={},!n.default&&!p.forceNativeWebSocket?(a.ws=Zr().streamBuilder,a.wss=Zr().streamBuilder,a.mqtt=vl().default,a.tcp=vl().default,a.ssl=_l().default,a.tls=a.ssl,a.mqtts=_l().default):(a.ws=Zr().browserStreamBuilder,a.wss=Zr().browserStreamBuilder,a.wx=Sl().default,a.wxs=Sl().default,a.ali=xl().default,a.alis=xl().default)),!a[p.protocol]){let y=["mqtts","wss"].indexOf(p.protocol)!==-1;p.protocol=["mqtt","mqtts","ws","wss","wx","wxs","ali","alis"].filter((b,w)=>y&&w%2===0?!1:typeof a[b]=="function")[0]}if(p.clean===!1&&!p.clientId)throw new Error("Missing clientId for unclean clients");p.protocol&&(p.defaultProtocol=p.protocol);function g(y){return p.servers&&((!y._reconnectCount||y._reconnectCount===p.servers.length)&&(y._reconnectCount=0),p.host=p.servers[y._reconnectCount].host,p.port=p.servers[y._reconnectCount].port,p.protocol=p.servers[y._reconnectCount].protocol?p.servers[y._reconnectCount].protocol:p.defaultProtocol,p.hostname=p.host,y._reconnectCount++),s("calling streambuilder for",p.protocol),a[p.protocol](y,p)}let f=new o.default(g,p);return f.on("error",()=>{}),f}function u(d,p,g=!0){return new Promise((f,y)=>{let b=c(d,p),w={connect:k=>{m(),f(b)},end:()=>{m(),f(b)},error:k=>{m(),b.end(),y(k)}};g===!1&&(w.close=()=>{w.error(new Error("Couldn't connect to server"))});function m(){Object.keys(w).forEach(k=>{b.off(k,w[k])})}Object.keys(w).forEach(k=>{b.on(k,w[k])})})}i.default=c}),El=pe(i=>{le(),ue(),ce();var e=i&&i.__createBinding||(Object.create?function(g,f,y,b){b===void 0&&(b=y);var w=Object.getOwnPropertyDescriptor(f,y);(!w||("get"in w?!f.__esModule:w.writable||w.configurable))&&(w={enumerable:!0,get:function(){return f[y]}}),Object.defineProperty(g,b,w)}:function(g,f,y,b){b===void 0&&(b=y),g[b]=f[y]}),t=i&&i.__setModuleDefault||(Object.create?function(g,f){Object.defineProperty(g,"default",{enumerable:!0,value:f})}:function(g,f){g.default=f}),r=i&&i.__importStar||(function(){var g=function(f){return g=Object.getOwnPropertyNames||function(y){var b=[];for(var w in y)Object.prototype.hasOwnProperty.call(y,w)&&(b[b.length]=w);return b},g(f)};return function(f){if(f&&f.__esModule)return f;var y={};if(f!=null)for(var b=g(f),w=0;w<b.length;w++)b[w]!=="default"&&e(y,f,b[w]);return t(y,f),y}})(),o=i&&i.__exportStar||function(g,f){for(var y in g)y!=="default"&&!Object.prototype.hasOwnProperty.call(f,y)&&e(f,g,y)},n=i&&i.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(i,"__esModule",{value:!0}),i.ReasonCodes=i.KeepaliveManager=i.UniqueMessageIdProvider=i.DefaultMessageIdProvider=i.Store=i.MqttClient=i.connectAsync=i.connect=i.Client=void 0;var s=n(Ei());i.MqttClient=s.default;var a=n(Ms());i.DefaultMessageIdProvider=a.default;var l=n(rd());i.UniqueMessageIdProvider=l.default;var c=n(Es());i.Store=c.default;var u=r(Wd());i.connect=u.default,Object.defineProperty(i,"connectAsync",{enumerable:!0,get:function(){return u.connectAsync}});var d=n(Bs());i.KeepaliveManager=d.default,i.Client=s.default,o(Ei(),i),o(zt(),i),o(xs(),i);var p=Er();Object.defineProperty(i,"ReasonCodes",{enumerable:!0,get:function(){return p.ReasonCodes}})}),zd=pe(i=>{le(),ue(),ce();var e=i&&i.__createBinding||(Object.create?function(s,a,l,c){c===void 0&&(c=l);var u=Object.getOwnPropertyDescriptor(a,l);(!u||("get"in u?!a.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(s,c,u)}:function(s,a,l,c){c===void 0&&(c=l),s[c]=a[l]}),t=i&&i.__setModuleDefault||(Object.create?function(s,a){Object.defineProperty(s,"default",{enumerable:!0,value:a})}:function(s,a){s.default=a}),r=i&&i.__importStar||(function(){var s=function(a){return s=Object.getOwnPropertyNames||function(l){var c=[];for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(c[c.length]=u);return c},s(a)};return function(a){if(a&&a.__esModule)return a;var l={};if(a!=null)for(var c=s(a),u=0;u<c.length;u++)c[u]!=="default"&&e(l,a,c[u]);return t(l,a),l}})(),o=i&&i.__exportStar||function(s,a){for(var l in s)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&e(a,s,l)};Object.defineProperty(i,"__esModule",{value:!0});var n=r(El());i.default=n,o(El(),i)});const Vd=zd();const Kd={inbound:"apps/{appId}/users/{userId}/messages/{conversationId}/clientadded",inboundUpdate:"apps/{appId}/users/{userId}/messages/{conversationId}/{messageId}/update",outbound:"apps/{appId}/outgoing/users/{userId}/messages/{conversationId}/outgoing",presence:"apps/{appId}/users/{userId}/presence/{clientId}",wildcardSubscribe:"apps/{appId}/users/{userId}/#"},Gd=300,Yd={templateId:"7",type:"link",isDeepLink:!0},Jd={channelType:"group",channel:"chat21",requestChannel:"chat21",platform:"WEBSITE",medium:"CHATBUDDY"};class Al{client=null;config;currentToken;clientId;appId;topics;messageHandlers=[];stateHandlers=[];statusUpdateHandlers=[];subscribedTopics=new Set;reconnectAttempt=0;maxReconnectAttempts;reconnectMaxDelayMs;connectedAt=0;disposed=!1;reconnectTimer=null;lifecycleHandlersAttached=!1;onOnlineHandler=null;onVisibilityHandler=null;onPageShowHandler=null;inboundRegex;inboundUpdateRegex;constructor(e){this.config=e,this.currentToken=e.jwtToken,this.appId=e.appId??"tilechat",this.clientId=e.clientId??this.freshClientId(),this.topics={...Kd,...e.topicTemplates??{}},this.maxReconnectAttempts=e.maxReconnectAttempts??1/0,this.reconnectMaxDelayMs=e.reconnectMaxDelayMs??3e4,this.inboundRegex=this.buildTopicRegex(this.topics.inbound,["conversationId"]),this.inboundUpdateRegex=this.buildTopicRegex(this.topics.inboundUpdate,["conversationId","messageId"])}async connect(){if(this.disposed)return;const e=this.renderPresenceTopic(),t=this.config.presencePayloadDisconnected??{disconnected:!0};this.clientId=this.config.clientId??this.freshClientId();const r=this.config.connectTimeoutMs??1e4,o={clientId:this.clientId,username:this.config.mqttUsername??"JWT",password:this.currentToken,clean:!1,resubscribe:!0,reconnectPeriod:0,connectTimeout:r,keepalive:this.config.keepAliveSec??30,protocolVersion:this.config.protocolVersion??4,protocolId:this.config.protocolId??"MQTT"};return this.config.enablePresence!==!1&&(o.will={topic:e,payload:JSON.stringify(t),qos:0,retain:!1}),this.attachLifecycleHandlers(),new Promise((n,s)=>{let a=!1;const l=d=>{a||(a=!0,clearTimeout(u),d())},c=(d,p)=>{a||(this.debugLog("CONNECT_FAIL",{reason:d,message:p?.message}),l(()=>s(p??new Error(`tiledesk-transport: ${d}`))))},u=setTimeout(()=>c("connect-timeout"),r+500);this.client=Vd.connect(this.config.mqttEndpoint,o),this.client.on("connect",()=>{if(this.connectedAt=Date.now(),a||l(()=>n()),this.debugLog("CONNECT",{endpoint:this.config.mqttEndpoint,clientId:this.clientId}),this.notifyStateChange(!0),this.config.enablePresence!==!1){const d=this.config.presencePayloadConnected??{connected:!0};this.client.publish(e,JSON.stringify(d),{qos:0,retain:!1}),this.debugLog("PUBLISH",{topic:e,payload:d})}}),this.client.on("message",(d,p)=>{this.dispatchInbound(d,p)}),this.client.on("close",()=>{if(this.debugLog("CLOSE",{}),this.notifyStateChange(!1),!a){c("socket-closed-pre-connack");return}this.disposed||this.scheduleReconnect()}),this.client.on("error",d=>{this.debugLog("ERROR",{message:d.message}),a||c("mqtt-error",d)}),this.client.on("disconnect",d=>{this.debugLog("DISCONNECT",{reasonCode:d?.reasonCode,properties:d?.properties})}),this.client.on("offline",()=>{this.debugLog("OFFLINE",{}),a||c("mqtt-offline")}),this.client.on("packetsend",d=>{(d.cmd==="subscribe"||d.cmd==="unsubscribe"||d.cmd==="pingreq")&&this.debugLog(d.cmd.toUpperCase(),{topic:d.topic,packetId:d.messageId})})})}freshClientId(){const e=Math.random().toString(36).slice(2,8);return`aikaara_${this.config.userId}_${Date.now()}_${e}`}debugLog(e,t){if(!this.config.debug)return;const r={};for(const[o,n]of Object.entries(t))typeof n=="string"&&n.length>200?r[o]=`${n.slice(0,200)}…(${n.length})`:r[o]=n;console.info(`[tiledesk-mqtt] ${e}`,r)}subscribeWildcard(){if(!this.client)return;const e=this.renderTemplate(this.topics.wildcardSubscribe,{});this.subscribedTopics.has(e)||(this.client.subscribe(e,{qos:this.config.subscribeQos??2}),this.subscribedTopics.add(e))}subscribeToConversation(e){if(!this.client)return;if(this.config.wildcardSubscribe){this.subscribeWildcard();return}const t=this.renderInboundTopic(e);this.subscribedTopics.has(t)||(this.client.subscribe(t,{qos:this.config.subscribeQos??2}),this.subscribedTopics.add(t))}unsubscribeFromConversation(e){if(!this.client)return;const t=this.renderInboundTopic(e);this.subscribedTopics.has(t)&&(this.client.unsubscribe(t),this.subscribedTopics.delete(t))}publishMessage(e,t,r={}){if(!this.client)return;const o=this.buildOutgoingEnvelope(e,{text:t,type:"text",...r});this.publishEnvelope(e,o)}publishFileMessage(e,t){if(!this.client)return;const r={...Yd,...this.config.fileTemplate??{},...Qd(t)},o={metadata:{contentType:"300",templateId:r.templateId,payload:{...r.headerImgSrc?{headerImgSrc:r.headerImgSrc}:{},elements:[{description:t.description??t.fileName,action:{url:t.fileUrl,type:r.type??"link",isDeepLink:r.isDeepLink??!0}}]},...t.metadata??{}}},n={fileMessage:!0,...t.cloudFileId?{cloudFileId:t.cloudFileId}:{},...t.attributes??{}},s=this.buildOutgoingEnvelope(e,{text:JSON.stringify(o),type:"html",attributes:n,metadata:o.metadata});this.publishEnvelope(e,s)}publishRaw(e,t){this.client&&this.publishEnvelope(e,t)}publishReadReceipt(e,t,r=Gd){if(!this.client)return;const o=this.renderTemplate(this.topics.inboundUpdate,{conversationId:e,messageId:t});this.client.publish(o,JSON.stringify({status:r}),{qos:this.config.publishQos??0,retain:!1})}publishChatInitiated(e,t={}){if(!this.client)return;const r=this.buildOutgoingEnvelope(e,{text:"CHAT_INITIATED",type:"text",attributes:{subtype:"info",...t}});this.publishEnvelope(e,r)}onMessage(e){return this.messageHandlers.push(e),()=>{this.messageHandlers=this.messageHandlers.filter(t=>t!==e)}}onStateChange(e){return this.stateHandlers.push(e),()=>{this.stateHandlers=this.stateHandlers.filter(t=>t!==e)}}onStatusUpdate(e){return this.statusUpdateHandlers.push(e),()=>{this.statusUpdateHandlers=this.statusUpdateHandlers.filter(t=>t!==e)}}disconnect(){this.disposed=!0,this.detachLifecycleHandlers(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.client&&(this.subscribedTopics.forEach(e=>this.client.unsubscribe(e)),this.subscribedTopics.clear(),this.client.end(!0),this.client=null),this.messageHandlers=[],this.stateHandlers=[],this.statusUpdateHandlers=[]}get isConnected(){return this.client?.connected??!1}async scheduleReconnect(){if(this.reconnectAttempt>=this.maxReconnectAttempts||this.disposed||this.reconnectTimer)return;if(typeof navigator<"u"&&navigator.onLine===!1){this.debugLog("RECONNECT_SKIP_OFFLINE",{attempt:this.reconnectAttempt});return}this.connectedAt>0&&Date.now()-this.connectedAt>=5e3&&(this.reconnectAttempt=0),this.connectedAt=0;const e=Math.min(1e3*Math.pow(2,this.reconnectAttempt),this.reconnectMaxDelayMs),t=e*.2*(Math.random()*2-1),r=Math.max(0,Math.round(e+t));this.reconnectAttempt++,this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,!this.disposed){if(this.config.tokenProvider)try{this.currentToken=await this.config.tokenProvider()}catch{}try{await this.connect();const o=[...this.subscribedTopics];this.subscribedTopics.clear(),o.forEach(n=>{this.client&&(this.client.subscribe(n,{qos:this.config.subscribeQos??2}),this.subscribedTopics.add(n))})}catch{}}},r)}reconnectNow(e){this.disposed||this.isConnected||typeof navigator<"u"&&navigator.onLine===!1||(this.debugLog("RECONNECT_NOW",{reason:e}),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectAttempt=0,this.scheduleReconnect())}attachLifecycleHandlers(){this.lifecycleHandlersAttached||typeof window>"u"||typeof document>"u"||(this.onOnlineHandler=()=>this.reconnectNow("online"),this.onVisibilityHandler=()=>{document.visibilityState==="visible"&&this.reconnectNow("visible")},this.onPageShowHandler=e=>{e.persisted&&this.reconnectNow("pageshow-bfcache")},window.addEventListener("online",this.onOnlineHandler),document.addEventListener("visibilitychange",this.onVisibilityHandler),window.addEventListener("pageshow",this.onPageShowHandler),this.lifecycleHandlersAttached=!0)}detachLifecycleHandlers(){this.lifecycleHandlersAttached&&(typeof window>"u"||typeof document>"u"||(this.onOnlineHandler&&window.removeEventListener("online",this.onOnlineHandler),this.onVisibilityHandler&&document.removeEventListener("visibilitychange",this.onVisibilityHandler),this.onPageShowHandler&&window.removeEventListener("pageshow",this.onPageShowHandler),this.onOnlineHandler=null,this.onVisibilityHandler=null,this.onPageShowHandler=null,this.lifecycleHandlersAttached=!1))}notifyStateChange(e){this.stateHandlers.forEach(t=>t(e))}dispatchInbound(e,t){const r=t.toString();let o=null;try{o=JSON.parse(r)}catch{this.debugLog("RECV (non-json)",{topic:e,raw:r});return}if(!o)return;this.debugLog("RECV",{topic:e,sender:o.sender,type:o.type,contentType:o.metadata?.contentType,templateId:o.metadata?.templateId,messageId:o.message_id,text:typeof o.text=="string"?o.text:void 0});const n=e.match(this.inboundUpdateRegex);if(n){const c=n.groups?.conversationId??"",u=n.groups?.messageId??"",d=typeof o.status=="number"?o.status:Number(o.status??0),p={conversationId:c,messageId:u,status:d,raw:o};this.statusUpdateHandlers.forEach(g=>g(p)),this.messageHandlers.forEach(g=>g(o,{topic:e,conversationId:c,messageId:u,kind:"update"}));return}const s=e.match(this.inboundRegex),a=s?.groups?.conversationId,l={topic:e,conversationId:a,messageId:typeof o.message_id=="string"?o.message_id:void 0,kind:s?"clientadded":"unknown"};this.messageHandlers.forEach(c=>c(o,l))}buildOutgoingEnvelope(e,t){const r={...Jd,...this.config.messageDefaults??{}},o=this.config.senderFullname??this.config.userName??this.config.userId,n=this.config.recipientFullnameResolver?.(e),s={projectId:this.config.projectId,...r.departmentId?{departmentId:r.departmentId}:{},...this.config.userName?{userFullname:this.config.userName}:{},...r.channel?{channel:r.channel}:{},...r.requestChannel?{request_channel:r.requestChannel}:{},...r.attributes??{},...t.attributes??{}};return{type:"text",sender:this.config.userId,sender_fullname:o,senderFullname:o,recipient:e,...n?{recipient_fullname:n}:{},...r.channelType?{channel_type:r.channelType}:{},...r.medium?{medium:r.medium}:{},...r.platform?{platform:r.platform}:{},app_id:this.appId,timestamp:Date.now(),...t,attributes:s}}publishEnvelope(e,t){if(!this.client)return;const r=this.renderOutboundTopic(e);this.client.publish(r,JSON.stringify(t),{qos:this.config.publishQos??0,retain:this.config.publishRetain??!1}),this.debugLog("SEND",{topic:r,type:t.type,sender:t.sender,text:typeof t.text=="string"?t.text:void 0,contentType:t.metadata?.contentType,templateId:t.metadata?.templateId})}renderInboundTopic(e){return this.renderTemplate(this.topics.inbound,{conversationId:e})}renderOutboundTopic(e){return this.renderTemplate(this.topics.outbound,{conversationId:e})}renderPresenceTopic(){return this.renderTemplate(this.topics.presence,{})}renderTemplate(e,t){const r={appId:this.appId,userId:this.config.userId,projectId:this.config.projectId,clientId:this.clientId,...t};return e.replace(/\{(\w+)\}/g,(o,n)=>r[n]??"")}buildTopicRegex(e,t){const r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/\\\{(\w+)\\\}/g,(o,n)=>{const s={appId:this.appId,userId:this.config.userId,projectId:this.config.projectId,clientId:this.clientId};if(t.includes(n))return`(?<${n}>[^/]+)`;const a=s[n];return a?a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"[^/]+"});return new RegExp(`^${r}$`)}}function Qd(i){const e={};for(const[t,r]of Object.entries(i))r!==void 0&&(e[t]=r);return e}function Il(i,e){return(i.sender??"").toString()===e}function Tl(i,e){const t=(i.sender??"").toString(),r=e.systemSenders??["metadata","system"],o=e.botSenderPrefix??"bot_";return t?t===e.userId?"user":t.startsWith(o)?"assistant":r.includes(t)?"system":"agent":"system"}function _o(i){const e={raw:i},t=i.metadata;if(t&&typeof t=="object"&&(typeof t.contentType=="string"&&(e.contentType=t.contentType),typeof t.templateId=="string"&&(e.templateId=t.templateId),t.payload!==void 0&&(e.payload=t.payload)),typeof i.text=="string"&&i.text.trim().startsWith("{"))try{const o=i.text.replace(/\\(?!["\\/bfnrtu])/g,"\\\\"),n=JSON.parse(o);typeof n.message=="string"&&(e.innerMessage=n.message);const s=n.metadata;s&&typeof s=="object"&&(typeof s.contentType=="string"&&(e.contentType=s.contentType),typeof s.templateId=="string"&&(e.templateId=s.templateId),s.payload!==void 0&&(e.payload=s.payload))}catch{}const r=i.attributes;if(r&&typeof r=="object"){const o=r.attachment;!e.contentType&&typeof r.contentType=="string"&&(e.contentType=r.contentType),!e.contentType&&o&&typeof o.contentType=="string"&&(e.contentType=o.contentType),!e.templateId&&typeof r.templateId=="string"&&(e.templateId=r.templateId),!e.templateId&&o&&typeof o.templateId=="string"&&(e.templateId=o.templateId),e.payload===void 0&&r.payload!==void 0&&(e.payload=r.payload),e.payload===void 0&&o&&o.payload!==void 0&&(e.payload=o.payload),e.payload===void 0&&o&&o.template!==void 0&&(e.payload=o.template)}return e}function Cl(i){const e=_o(i);if(e.contentType!=="300")return null;const t=e.payload,r=t&&Array.isArray(t.elements)?t.elements:null;if(!r||r.length===0)return null;const o=r[0],n=o.action,s=n&&typeof n.url=="string"?n.url:void 0,a=typeof o.description=="string"?o.description:void 0,l=i.attributes,c=l&&typeof l.cloudFileId=="string"?l.cloudFileId:void 0;return!s&&!a?null:{fileName:a,fileUrl:s,cloudFileId:c,templateId:e.templateId}}function Pl(i,e,t){const r=Tl(i,t),o=_o(i),n=Cl(i);let s="";o.innerMessage?s=o.innerMessage:typeof i.text=="string"&&(i.text.trim().startsWith("{")?o.contentType!=="300"&&(s=i.text):s=i.text);const a=typeof i.message_id=="string"?i.message_id:`td_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,l=typeof i.timestamp=="number"?new Date(i.timestamp).toISOString():new Date().toISOString(),c=r==="assistant"?"assistant":r==="agent"?"agent":r==="system"?"system":"user",u=typeof i.status=="number"?Xd(i.status):"delivered",d={id:a,externalId:a,conversationId:e,role:c,content:s,createdAt:l,status:u,metadata:{sender:i.sender,sender_fullname:i.sender_fullname??i.senderFullname,app_id:i.app_id,attributes:i.attributes}};return o.contentType&&(d.template={contentType:o.contentType,templateId:o.templateId,payload:o.payload}),n?.fileUrl&&(d.attachments=[{fileName:n.fileName??"file",fileUrl:n.fileUrl,cloudFileId:n.cloudFileId}]),{message:d,template:o}}function Xd(i){return i<0?"error":i>=250?"read":i>=150?"delivered":"sent"}class Ol extends yr{connection=null;tiledesk=null;api;messageStore;conversationManager;subscription=null;config;mode;uploadAdapter;historyAdapter;tiledeskUnsubs=[];constructor(e,t){super(),this.config=e,this.mode=e.transport??"aikaara",this.uploadAdapter=t?.uploadAdapter??null,this.historyAdapter=t?.historyAdapter??null,this.api=new Ho(e.baseUrl,e.userToken,e.apiKey,e.authToken),this.messageStore=new Wo,this.conversationManager=new Yo(e.conversationId),this.usesAikaara()&&(this.connection=new qo(e),this.connection.on("connection:state",r=>{this.emit("connection:state",r),this.config.onConnectionStateChange?.(r)}),this.connection.on("error",r=>{this.emit("error",r),this.config.onError?.(r)}),this.connection.on("reconnected",()=>{this.resubscribeAfterReconnect()})),this.usesTiledesk()&&this.initTiledeskTransport()}usesAikaara(){return this.mode==="aikaara"||this.mode==="dual"}usesTiledesk(){return this.mode==="tiledesk"||this.mode==="dual"}initTiledeskTransport(){const e=this.config.tiledesk,t=this.config.tiledeskIdentity;if(!e)throw new Error("AikaaraChatClient: tiledesk transport requires `config.tiledesk` (TiledeskTransportConfig)");if(!t?.userId)throw new Error("AikaaraChatClient: tiledesk transport requires `config.tiledeskIdentity.userId`");this.tiledesk=new Al({...e,userId:t.userId,userName:t.userName??e.userName,senderFullname:t.senderFullname??e.senderFullname,messageDefaults:{...e.messageDefaults,departmentId:t.departmentId??e.messageDefaults?.departmentId}}),this.tiledeskUnsubs.push(this.tiledesk.onStateChange(r=>{const o=r?"connected":"disconnected";this.emit("connection:state",o),this.config.onConnectionStateChange?.(o)})),this.tiledeskUnsubs.push(this.tiledesk.onMessage((r,o)=>this.handleTiledeskMessage(r,o))),this.tiledeskUnsubs.push(this.tiledesk.onStatusUpdate(r=>this.handleTiledeskStatusUpdate(r)))}async connect(){if(this.usesAikaara()&&this.connection){if(await this.connection.connect(),!this.conversationManager.conversationId){const e=await this.api.createConversation({systemPromptId:this.config.systemPromptId,channel:this.config.channel||"widget",extUid:this.config.extUid});this.conversationManager.conversationId=String(e.id)}this.subscription=await this.connection.subscribeToConversation(this.conversationManager.conversationId),this.subscription.onReceived(e=>{this.handleBroadcast(e)}),await this.loadHistory()}if(this.usesTiledesk()&&this.tiledesk){await this.tiledesk.connect(),this.config.tiledesk?.wildcardSubscribe??!0?this.tiledesk.subscribeWildcard():this.conversationManager.conversationId&&this.tiledesk.subscribeToConversation(this.conversationManager.conversationId);const t=this.conversationManager.conversationId;if(t){const r=await this.hydrateTiledeskHistory(t),o=this.config.tiledesk?.autoInitiateOnEmpty??!0,n=this.config.tiledesk?.autoInitiateOnUnknown??!1;o&&(r==="empty"||r==="unknown"&&n)&&this.tiledesk.publishChatInitiated(t,this.config.tiledesk?.chatInitiatedAttributes??{})}}}async hydrateTiledeskHistory(e){if(!this.historyAdapter)return"unknown";const t=this.config.tiledeskIdentity?.userId??"";let r;try{r=await this.historyAdapter.fetchMessages(e,{userId:t,appId:this.config.tiledesk?.appId,projectId:this.config.tiledesk?.projectId})}catch(l){return this.config.onError?.(l instanceof Error?l:new Error(String(l))),"unknown"}if(!r.length)return"empty";const o=r.map(l=>Pl(l,e,{userId:t})).sort((l,c)=>new Date(l.message.createdAt).getTime()-new Date(c.message.createdAt).getTime()),n=o.map(l=>l.message),s=this.messageStore.messages,a=[...n,...s.filter(l=>!n.some(c=>c.externalId&&c.externalId===l.externalId))];this.messageStore.setMessages(a);for(const{message:l,template:c}of o){if(this.config.onMessage)try{this.config.onMessage(l)}catch(u){console.warn("[aikaara-chat-sdk] onMessage threw on history replay",u)}if(this.config.onTemplateMessage&&c.contentType){const u={messageId:l.id,conversationId:e,role:l.role==="tool"?"system":l.role,contentType:c.contentType,templateId:c.templateId,payload:c.payload,innerMessage:c.innerMessage,raw:c.raw};try{this.config.onTemplateMessage(u)}catch(d){console.warn("[aikaara-chat-sdk] onTemplateMessage threw on history replay",d)}}}return"has-history"}async sendMessage(e,t={}){const r=this.conversationManager.conversationId;if(!r)throw new Error("No active conversation");const o=this.messageStore.addOptimistic("user",e,r);this.emit("message:sent",o),this.config.onMessage?.(o);const n={};if(t.attributes&&(n.attributes=t.attributes),t.metadata&&(n.metadata=t.metadata),this.mode==="tiledesk"&&this.tiledesk){this.tiledesk.publishMessage(r,e,n);return}this.mode==="dual"&&this.tiledesk&&this.tiledesk.publishMessage(r,e,n),this.usesAikaara()&&this.connection&&this.connection.sendMessage(r,e)}async sendFile(e,t){if(!this.uploadAdapter)throw new Error("AikaaraChatClient: sendFile requires an UploadAdapter");const r=this.conversationManager.conversationId;if(!r)throw new Error("No active conversation");const o=await this.uploadAdapter.upload(e,{conversationId:r,userId:this.config.tiledeskIdentity?.userId??this.config.userToken,projectId:this.config.tiledesk?.projectId,appId:this.config.tiledesk?.appId});if(this.usesTiledesk()&&this.tiledesk){const n={fileName:o.fileName,fileUrl:o.url,cloudFileId:o.cloudFileId};this.tiledesk.publishFileMessage(r,n)}t?.caption&&await this.sendMessage(t.caption)}initiateTiledeskChat(e={}){const t=this.conversationManager.conversationId;!this.tiledesk||!t||this.tiledesk.publishChatInitiated(t,e)}markTiledeskRead(e){const t=this.conversationManager.conversationId;!this.tiledesk||!t||this.tiledesk.publishReadReceipt(t,e)}setUploadAdapter(e){this.uploadAdapter=e}async sendUserEvent(e,t,r){const o=this.conversationManager.conversationId;if(!o)throw new Error("No active conversation");this.connection&&this.connection.sendUserEvent(o,e,t,r)}async loadHistory(){const e=this.conversationManager.conversationId;if(!e)return[];try{const t=await this.api.getMessages(e);return this.messageStore.setMessages(t),t}catch{return[]}}get messages(){return this.messageStore.messages}get conversationId(){return this.conversationManager.conversationId}get isConnected(){if(this.mode==="tiledesk")return this.tiledesk?.isConnected??!1;if(this.mode==="dual"){const e=this.connection?.connectionState==="connected",t=this.tiledesk?.isConnected??!1;return e&&t}return this.connection?.connectionState==="connected"}async setContext(e){const t=this.conversationManager.conversationId;t&&await this.api.updateContext(t,{current_page:e.currentPage,entity_type:e.entityType,entity_id:e.entityId,project_id:e.projectId,available_routes:e.availableRoutes,custom_context:e.custom})}async disconnect(){this.subscription&&(this.subscription=null),this.connection&&await this.connection.disconnect(),this.tiledesk&&(this.tiledeskUnsubs.forEach(e=>e()),this.tiledeskUnsubs=[],this.tiledesk.disconnect(),this.tiledesk=null)}handleTiledeskMessage(e,t){if(t.kind==="update")return;const r=this.conversationManager.conversationId;if(t.conversationId&&r&&t.conversationId!==r)return;const o=t.conversationId??r;if(!o)return;const n=this.config.tiledeskIdentity?.userId??"",{message:s,template:a}=Pl(e,o,{userId:n,systemSenders:this.config.tiledesk?.messageDefaults?.attributes?.systemSenders});if(this.mode==="dual"&&s.role==="assistant")return;if(Il(e,n)){const u=this.messageStore.reconcileOptimistic(s);if(u){this.emit("message:updated",u);return}}const{message:l,deduped:c}=this.messageStore.upsertRemoteMessage(s);if(c)this.emit("message:updated",l);else{this.emit("message:received",l),this.config.onMessage?.(l);try{typeof window<"u"&&window.dispatchEvent(new CustomEvent("aikaara:message",{detail:{role:l.role,hasAttachments:Array.isArray(l.attachments)&&l.attachments.length>0,templateId:l.template?.templateId,messageId:l.id,conversationId:l.conversationId}}))}catch{}}if(a.contentType){const u={messageId:l.id,conversationId:o,role:s.role==="tool"?"system":s.role,contentType:a.contentType,templateId:a.templateId,payload:a.payload,innerMessage:a.innerMessage,raw:e};this.config.onTemplateMessage?.(u)}}handleTiledeskStatusUpdate(e){const t=this.conversationManager.conversationId;t&&e.conversationId!==t||(e.status>=250?this.messageStore.updateMessageStatus(e.messageId,"read"):e.status>=150&&this.messageStore.updateMessageStatus(e.messageId,"delivered"))}parseActionResult(e){try{const t=typeof e=="string"?JSON.parse(e):e;if(!t||typeof t!="object")return;t.navigate_to?this.emit("action:navigate",t):t.action==="edit_entity"?this.emit("action:edit_entity",t):t.action==="save_entity"?this.emit("action:save_entity",t):t.action==="test_tool"&&this.emit("action:test_tool",t)}catch{}}async resubscribeAfterReconnect(){const e=this.conversationManager.conversationId;if(!(!e||!this.connection))try{this.subscription=await this.connection.subscribeToConversation(e),this.subscription.onReceived(t=>{this.handleBroadcast(t)})}catch(t){this.emit("error",t instanceof Error?t:new Error(String(t))),this.config.onError?.(t instanceof Error?t:new Error(String(t)))}}handleBroadcast(e){const t=this.conversationManager.conversationId;switch(e.type){case"status":{const r=e.status;this.emit("status",r),this.config.onStatusChange?.(r),r==="processing"&&this.emit("typing:start",void 0);break}case"error":{const r=new Error(e.message||"Unknown error");this.emit("error",r),this.config.onError?.(r);break}case"message_start":{if(e.role==="assistant"){const r=this.messageStore.addStreamingMessage(t);this.emit("stream:start",{messageId:r.id}),this.emit("typing:start",void 0)}break}case"message_update":{const r=e.delta||"",o=e.content||"";o?this.messageStore.updateStreaming(o):r&&this.messageStore.appendToStreaming(r);const n=this.messageStore.streamingContent;this.emit("stream:update",{delta:r,content:n}),this.config.onStreamUpdate?.(r,n);break}case"message_end":{const r=e.usage,o=this.messageStore.finalizeStreaming(r?{tokensInput:r.tokens_input||0,tokensOutput:r.tokens_output||0}:void 0);this.emit("typing:stop",void 0),o&&(this.emit("stream:end",{messageId:o.id,usage:r?{tokensInput:r.tokens_input||0,tokensOutput:r.tokens_output||0}:void 0}),this.emit("message:received",o),this.config.onMessage?.(o));break}case"message_queued":{const r=this.messageStore.messages.findLast(o=>o.status==="sending");r&&this.messageStore.confirmOptimistic(r.id);break}case"tool_execution_start":{this.emit("tool:start",{toolName:e.tool_name||"",args:e.args||{}}),this.emit("status",e.type);break}case"tool_execution_end":{this.emit("tool:end",{toolName:e.tool_name||"",result:e.result,isError:!!e.is_error}),this.emit("status",e.type),this.parseActionResult(e.result);break}case"tool_execution_update":case"agent_start":case"agent_end":case"turn_start":case"turn_end":case"auto_retry_start":case"auto_retry_end":case"cancelled":this.emit("status",e.type);break}}}class Zd extends yr{registration=null;pendingEdits=[];constructor(e){super(),this.setupListeners(e)}registerForm(e){this.registration=e;const t=this.pendingEdits.filter(r=>r.entity_type===e.entityType&&String(r.entity_id)===String(e.entityId));if(t.length>0){for(const r of t)e.onFieldUpdate(r.fields),this.emit("edit:applied",{entityType:r.entity_type,entityId:r.entity_id,fields:r.fields});this.pendingEdits=this.pendingEdits.filter(r=>!(r.entity_type===e.entityType&&String(r.entity_id)===String(e.entityId)))}}unregisterForm(e,t){this.registration?.entityType===e&&String(this.registration?.entityId)===String(t)&&(this.registration=null)}get currentForm(){return this.registration}pushFieldUpdates(e,t,r){this.registration&&this.registration.entityType===e&&String(this.registration.entityId)===String(t)?(this.registration.onFieldUpdate(r),this.emit("edit:applied",{entityType:e,entityId:t,fields:r})):(this.pendingEdits.push({action:"edit_entity",entity_type:e,entity_id:t,fields:r}),this.emit("edit:pending",{entityType:e,entityId:t,fields:r}))}async requestSave(){if(!this.registration)return{success:!1,error:"No form registered"};try{return await this.registration.onSave(),this.emit("save:success",{entityType:this.registration.entityType,entityId:this.registration.entityId}),{success:!0}}catch(e){const t=e instanceof Error?e.message:"Save failed";return this.emit("save:error",{entityType:this.registration.entityType,entityId:this.registration.entityId,error:t}),{success:!1,error:t}}}async requestTest(e){if(!this.registration?.onTest)return{success:!1,error:"Current form does not support testing"};try{return await this.registration.onTest(e),{success:!0}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Test failed"}}}setupListeners(e){e.on("action:edit_entity",t=>{this.pushFieldUpdates(t.entity_type,t.entity_id,t.fields)}),e.on("action:save_entity",t=>{this.requestSave()}),e.on("action:test_tool",t=>{this.emit("test:triggered",{toolId:t.tool_id,parameters:t.parameters}),this.requestTest(t.parameters)})}}const Ml={txt:"text/plain",pdf:"application/pdf",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",csv:"text/csv",doc:"application/msword",json:"application/json"};function eh(i){const e=i.lastIndexOf(".");return e<0||e===i.length-1?"":i.slice(e+1).toLowerCase()}function th(i,e,t){const r=eh(i.name||"");if(r&&e&&e[r])return e[r];const o=i.type;return o&&o.trim().length>0?o:r&&Ml[r]?Ml[r]:t}function So(i,e){return i.replace(/\{(\w+)\}/g,(t,r)=>e[r]??"")}function rh(i,e){const t=e.split(".");let r=i;for(const o of t)if(r&&typeof r=="object"&&o in r)r=r[o];else return"";return typeof r=="string"?r:""}function Ll(i){const e=i.signedUrlPath||"data.s3SignedUrl";return{async upload(t,r){const o=t.name||`upload-${Date.now()}`,n=th(t,i.contentTypeMap,i.contentTypeFallback??"application/octet-stream"),s={fileName:o,userId:r.userId,requestId:r.conversationId,conversationId:r.conversationId,contentType:n},a=i.authHeader?await i.authHeader():void 0,l={accept:"application/json",...i.extraHeaders??{},...a?{authorization:a}:{}};let c=i.signEndpoint.includes("{")?i.signEndpoint:`${i.signEndpoint}?fileName={fileName}`;if(!c.includes("{contentType}")){const w=c.includes("?")?"&":"?";c=`${c}${w}contentType={contentType}`}const u=So(c,s),d=await fetch(u,{method:i.signMethod??"GET",headers:l});if(!d.ok)throw new Error(`Sign request failed: ${d.status}`);const p=await d.json().catch(()=>({})),g=rh(p,e);if(!g)throw new Error(`Sign response missing path "${e}"`);const f=i.s3HostRewrite?g.replace(/^https:\/\/[^/]+/i,i.s3HostRewrite):g,y=await fetch(f,{method:"PUT",headers:{"content-type":n},body:t});if(!y.ok){const w=await y.text().catch(()=>"");throw new Error(`S3 PUT failed: ${y.status} ${w.slice(0,200)}`)}if(i.registerEndpoint){const w=JSON.parse(So(JSON.stringify(i.registerBody??{}),s)),m=await fetch(i.registerEndpoint,{method:"POST",headers:{...l,"content-type":"application/json"},body:JSON.stringify(w)});if(!m.ok){const k=await m.text().catch(()=>"");throw new Error(`Register failed: ${m.status} ${k.slice(0,200)}`)}}return{url:i.viewerTemplate?So(i.viewerTemplate,s):g.split("?")[0],fileName:o,contentType:n,byteSize:t.size,meta:{requestId:r.conversationId}}}}}function xo(i){return{async upload(e,t){const r=new FormData,o=i.fieldName??"file";r.append(o,e,e.name);const n=typeof i.extraFields=="function"?i.extraFields(t):i.extraFields;if(n)for(const[p,g]of Object.entries(n))r.append(p,g);r.append("conversationId",t.conversationId),r.append("userId",t.userId),t.projectId&&r.append("projectId",t.projectId);const s=typeof i.headers=="function"?await i.headers():i.headers??{},a=await fetch(i.endpoint,{method:i.method??"POST",body:r,headers:s,credentials:i.credentials});if(!a.ok)throw new Error(`Upload failed: ${a.status} ${a.statusText}`);const l=await a.json().catch(()=>({}));if(i.parseResponse)return i.parseResponse(l,t);const c=l,u=c.url??c.fileUrl??c.publicUrl,d=c.fileName??c.name??e.name;if(!u)throw new Error('Upload response missing "url" / "fileUrl" / "publicUrl"');return{url:u,fileName:d,cloudFileId:typeof c.cloudFileId=="string"?c.cloudFileId:void 0,relativePath:typeof c.path=="string"?c.path:void 0,contentType:typeof c.contentType=="string"?c.contentType:void 0,byteSize:typeof c.byteSize=="number"?c.byteSize:void 0,meta:c}}}}const nh="/tilechat/{userId}/conversations/{conversationId}/messages?pageSize={pageSize}";function Rl(i){const e=i.apiBase.replace(/\/$/,""),t=i.pageSize??200,r=i.pathTemplate??nh;return{async fetchMessages(o,n){const s=r.replace("{userId}",encodeURIComponent(n.userId)).replace("{conversationId}",encodeURIComponent(o)).replace("{appId}",encodeURIComponent(n.appId??"tilechat")).replace("{projectId}",encodeURIComponent(n.projectId??"")).replace("{pageSize}",String(t)),a=s.startsWith("http")?s:`${e}${s.startsWith("/")?s:`/${s}`}`,l={accept:"application/json","content-type":"application/json",...i.extraHeaders??{}};if(i.getToken){const p=await i.getToken();p&&(l.authorization=p)}const c=await fetch(a,{method:"GET",headers:l}),u=await c.json().catch(()=>null);if(i.parseResponse&&u)return i.parseResponse(u);if(Array.isArray(u))return u;const d=u;if(d&&Array.isArray(d.result))return d.result;if(!c.ok)throw new Error(`History fetch failed: ${c.status} ${c.statusText}`);return[]}}}const ih="^[A-Z]{4}[0-9]{5}[A-Z]$",oh="^[A-Z]{4}0[A-Z0-9]{6}$",Nl="^[0-9]{6}$",sh=[{id:"salary-hra",title:"Salary / HRA / Allowances",icon:"💰",dataPath:"salaryDetails[]",repeatable:{maxCount:4,labelTemplate:"Employer {index}"},entryIcon:"🏢",fields:[{id:"employerDetails",type:"group",title:"Employer Details",fields:[{id:"employerName",type:"text",label:"Employer Name",required:!0},{id:"employerTan",type:"text",label:"TAN (Tax Deduction Account Number)",pattern:ih,maxLength:10}]},{id:"salaryComponents",type:"group",title:"Salary Components",fields:[{id:"grossSalary",type:"number",label:"Gross Salary (Total)",currency:"₹",min:0},{id:"totalTdsDeposited",type:"number",label:"TDS Deducted",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"business-profession",title:"Business / Profession",icon:"💼",fields:[{id:"business44ad",type:"group",title:"Business Income 44AD",collapsible:!0,defaultCollapsed:!0,fields:[{id:"bizName",type:"text",label:"Business / Profession Name"},{id:"bizNature",type:"text",label:"Nature of Work"},{id:"bizReceiptsBank",type:"number",label:"Gross Receipts (Bank)",currency:"₹",min:0},{id:"bizReceiptsCash",type:"number",label:"Gross Receipt (Cash)",currency:"₹",min:0},{id:"bizNetProfit",type:"number",label:"Net Profit",currency:"₹",readOnly:!0}]},{id:"profession44ada",type:"group",title:"Professional Income 44ADA",collapsible:!0,defaultCollapsed:!0,fields:[{id:"profName",type:"text",label:"Business / Profession Name"},{id:"profNature",type:"text",label:"Nature of Work"},{id:"profReceiptsBank",type:"number",label:"Gross Receipts (Bank)",currency:"₹",min:0},{id:"profReceiptsCash",type:"number",label:"Gross Receipt (Cash)",currency:"₹",min:0},{id:"profNetProfit",type:"number",label:"Net Profit",currency:"₹",readOnly:!0}]}],submitLabel:"Save"},{id:"other-sources",title:"Income from Other Sources",icon:"💵",fields:[{id:"interestIncome",type:"group",title:"Interest Income",fields:[{id:"savingBankInterest",type:"number",label:"Savings Bank Interest",currency:"₹",min:0},{id:"fdInterest",type:"number",label:"Fixed Deposit Interest",currency:"₹",min:0}]},{id:"otherIncomeGroup",type:"group",title:"Other Income",fields:[{id:"dividend",type:"number",label:"Dividend Income",currency:"₹",min:0},{id:"anyOtherIncome",type:"number",label:"Any Other Income",currency:"₹",min:0},{id:"familyPension",type:"number",label:"Family Pension",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"crypto-income",title:"Crypto Income",icon:"🪙",fields:[{id:"cryptoGroup",type:"group",title:"Virtual Digital Assets",hint:"Gains from crypto / VDAs are taxed at a flat 30%",fields:[{id:"cryptoSellPrice",type:"number",label:"Total Sale Value",currency:"₹",min:0},{id:"cryptoPurchasePrice",type:"number",label:"Total Cost of Acquisition",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"house-property",title:"House Property",icon:"🏠",dataPath:"hpDetails[]",repeatable:{maxCount:2,labelTemplate:"Property {index}"},entryIcon:"🏠",fields:[{id:"rentalIncome",type:"number",label:"Rental Income",currency:"₹",min:0},{id:"propertyTax",type:"number",label:"Municipal Taxes",currency:"₹",min:0},{id:"homeLoanDetails",type:"group",title:"Home Loan Details",fields:[{id:"lenderName",type:"text",label:"Bank / Institute Name"},{id:"sanctionDate",type:"date",label:"Loan Sanction Date",format:"DD/MM/YYYY"},{id:"loanAccountNumber",type:"text",label:"Loan Account No."},{id:"totalLoanAmount",type:"number",label:"Total Loan Amount",currency:"₹",min:0},{id:"outstandingAmount",type:"number",label:"Outstanding Loan",currency:"₹",min:0},{id:"homeLoanInterest",type:"number",label:"Interest Paid",currency:"₹",min:0}]}],submitLabel:"Save"},{id:"deductions",title:"Deductions",icon:"📋",fields:[{id:"section80c",type:"group",title:"Section 80C",hint:"Maximum deduction allowed: ₹1,50,000",fields:[{id:"us80cAmount",type:"number",label:"Amount",currency:"₹",min:0,max:15e4},{id:"us80cSubType",type:"text",label:"Investment Type",placeholder:"e.g. LIC, PPF, ELSS, NSC"},{id:"us80cPolicyNumber",type:"text",label:"Policy Number"}]},{id:"section80ccd1b",type:"group",title:"Section 80CCD(1B)",fields:[{id:"us80ccd1bAmount",type:"number",label:"Amount",currency:"₹",min:0},{id:"us80ccd1bPanNo",type:"text",label:"PRAN No."}]},{id:"section80ccd2",type:"group",title:"Section 80CCD(2)",fields:[{id:"us80ccd2Amount",type:"number",label:"Amount",currency:"₹",min:0}]},{id:"section80g",type:"group",title:"Section 80G — Donations",fields:[{id:"us80gDonationAmount",type:"number",label:"Donation Amount",currency:"₹",min:0},{id:"us80gNameOfCharity",type:"text",label:"Name of Charity / Trust"},{id:"us80gCharityPan",type:"text",label:"Charity / Trust PAN"},{id:"us80gTrustAddress",type:"text",label:"Trust / Charity Address"},{id:"us80gPincode",type:"text",label:"Pincode",maxLength:6,pattern:Nl}]},{id:"section80e",type:"group",title:"Section 80E — Education Loan Interest",fields:[{id:"us80eLoanTakenFrom",type:"text",label:"Loan Taken From"},{id:"us80eBankName",type:"text",label:"Bank Name"},{id:"us80eLoanAccountNumber",type:"text",label:"Loan Account Number"},{id:"us80eLoanSanctionDate",type:"date",label:"Loan Sanction Date",format:"DD/MM/YYYY"},{id:"us80eLoanAmount",type:"number",label:"Loan Amount",currency:"₹",min:0},{id:"us80eOutstandingLoan",type:"number",label:"Outstanding Loan",currency:"₹",min:0},{id:"us80eInterest",type:"number",label:"Interest Paid",currency:"₹",min:0}]},{id:"section80ee",type:"group",title:"Section 80EEB — Electric Vehicle Loan Interest",fields:[{id:"us80eeLoanTakenFrom",type:"text",label:"Loan Taken From"},{id:"us80eeBankName",type:"text",label:"Bank Name"},{id:"us80eeLoanAccountNumber",type:"text",label:"Loan Account Number"},{id:"us80eeLoanSanctionDate",type:"date",label:"Loan Sanction Date",format:"DD/MM/YYYY"},{id:"us80eeLoanAmount",type:"number",label:"Loan Amount",currency:"₹",min:0},{id:"us80eeOutstandingLoan",type:"number",label:"Outstanding Loan",currency:"₹",min:0},{id:"us80eeVehicleRegistrationNumber",type:"text",label:"Vehicle Registration Number"},{id:"us80eeInterest",type:"number",label:"Interest Paid",currency:"₹",min:0}]},{id:"section80d",type:"group",title:"Section 80D — Health Insurance",fields:[{id:"us80dForSelfAndFamilyAmount",type:"number",label:"Self — Amount",currency:"₹",min:0,max:25e3},{id:"us80dForSelfAndFamilyPolicyCompany",type:"text",label:"Self — Policy Company Name"},{id:"us80dForSelfAndFamilyPolicyNumber",type:"text",label:"Self — Policy Number"},{id:"us80dForParentsAmount",type:"number",label:"Parents — Amount",currency:"₹",min:0,max:5e4},{id:"us80dForParentsPolicyCompany",type:"text",label:"Parents — Policy Company Name"},{id:"us80dForParentsPolicyNumber",type:"text",label:"Parents — Policy Number"}]}],submitLabel:"Save"},{id:"agricultural-income",title:"Agricultural Income",icon:"🌾",fields:[{id:"agricultureIncome",type:"number",label:"Total Agricultural Income",currency:"₹",min:0},{id:"agricultureExpenditure",type:"number",label:"Expenditure on Agriculture",currency:"₹",min:0},{id:"agricultureLandGroup",type:"group",title:"Land Details",hint:"Optional - leave blank if you only need to report income",fields:[{id:"agricultureLandInAcre",type:"number",label:"Land Area (Acres)",min:0},{id:"agricultureLandDistrict",type:"text",label:"District"},{id:"agricultureLandPincode",type:"text",label:"Pincode",maxLength:6,pattern:Nl},{id:"agricultureLandOwner",type:"radio",label:"Ownership",options:[{value:"Owned",label:"Owned"},{value:"Held on lease",label:"Held on lease"}]},{id:"agricultureLandType",type:"radio",label:"Type of Land",options:[{value:"Irrigated",label:"Irrigated"},{value:"Rain-fed",label:"Rain-fed"}]}]}],submitLabel:"Save"},{id:"bank-details",title:"Personal / Bank Details",icon:"🏦",fields:[{id:"bankGroup",type:"group",title:"Bank Account (for refund)",fields:[{id:"aadhaarNumber",type:"text",label:"Aadhaar Number",maxLength:12,readOnly:!0},{id:"bankAccountNumber",type:"text",label:"Bank Account Number",required:!0},{id:"bankIfscCode",type:"text",label:"IFSC Code",required:!0,pattern:oh,maxLength:11}]}],submitLabel:"Save"}];function ah(i,e){const t=i||{},r={userId:et(e.userId),assessmentYear:e.assessmentYear,aadhaarNumber:Ee(t.aadhaarNumber),isRevised:e.isRevised||"N",timestamp:kh()};r.us80cAmount=Se(t.us80cAmount),r.us80dForSelfAndFamilyAmount=Se(t.us80dForSelfAndFamilyAmount),r.us80dForParentsAmount=Se(t.us80dForParentsAmount),r.hasParentOverSixty=lr(t.hasParentOverSixty),r.preventiveHealthCheckUp=Se(t.preventiveHealthCheckUp),r.medicalExpenditure=Se(t.medicalExpenditure),r.savingBankInterest=Se(t.savingBankInterest),r.fdInterest=Se(t.fdInterest),r.dividend=Se(t.dividend),r.anyOtherIncome=Se(t.anyOtherIncome),r.familyPension=Se(t.familyPension),r.cryptoSellValue=Se(t.cryptoSellPrice),r.cryptoPurchaseAmount=Se(t.cryptoPurchasePrice),r.vdaPurchaseCost=Se(t.cryptoPurchasePrice);const o=(Se(t.bizReceiptsBank)??0)+(Se(t.bizReceiptsCash)??0),n=(Se(t.profReceiptsBank)??0)+(Se(t.profReceiptsCash)??0),s=Ee(t.bizName)!==void 0||o>0;r.businessName=Ee(s?t.bizName:t.profName),r.businessAnnualTurnOver=s?o||void 0:n||void 0,r.agricultureDetails=Ul(t),r.exemptIncomeAmount=Se(t.exemptIncome),r.exemptIncomeNature=Ee(t.exemptIncomeNature),Se(t.exemptIncome)!==void 0&&(r.exemptIncomes=[{name:Ee(t.exemptIncomeNature)??"Exempt income",value:String(Se(t.exemptIncome))}]),r.bankAccountNumber=Ee(t.bankAccountNumber),r.bankIfscCode=Ee(t.bankIfscCode),(Ee(t.bankAccountNumber)||Ee(t.bankIfscCode))&&(r.bankDetails=[{bankAccountNumber:Ee(t.bankAccountNumber),bankIfscCode:Ee(t.bankIfscCode)}]);const a={description:Ee(t.immovableAssetDescription),flatNo:Ee(t.immovableAssetFlatNo),area:Ee(t.immovableAssetArea),pinCode:Ee(t.immovableAssetPincode),amount:Se(t.immovableAssetCost)};Object.values(a).some(u=>u!==void 0)&&(r.immovableAsset=[a]);const l=Eo(t.hpDetails,lh);l.length&&(r.hpDetails=l);const c=Eo(t.salaryDetails,ch);if(c.length){r.salaryIncome=c;const u=Eo(t.salaryDetails,p=>({grossSalary:Se(p.grossSalary),employerName:Ee(p.employerName)}));u.length&&(r.salary=u);const d=tn(t.salaryDetails)[0]??{};r.hraAmount=Se(d.hraReceived),r.leaveTravelAllowanceAmount=Se(d.leaveTravelAllowance),r.leaveEncashmentAllowanceAmount=Se(d.leaveEncashment),r.anyOtherAllowanceAmount=Se(d.anyOtherAllowance),r.salaryIncomeFlag=!0}return tt(r)}function lh(i){const e={loanType:"HOME_LOAN",loanTakenFrom:Ee(i.loanTakenFrom),bankOrInstituteName:Ee(i.lenderName),loanAccountNo:Ee(i.loanAccountNumber),loanSanctionDate:en(i.sanctionDate),totalLoanAmount:Se(i.totalLoanAmount),loanOutstandingAmount:Se(i.outstandingAmount),interest:Se(i.homeLoanInterest)},t=Object.entries(e).some(([r,o])=>r!=="loanType"&&o!==void 0);return{typeOfHouseProperty:Ee(i.typeOfHouseProperty),hasRentalIncome:i.typeOfHouseProperty==="LOP"?!0:lr(i.hasRentalIncome),homeLoanInterest:Se(i.homeLoanInterest),homeLoanPrinciple:Se(i.homeLoanPrinciple),housePropertyAddress:Ee(i.housePropertyAddress),housePropertyPincode:Ee(i.housePropertyPincode),rentalIncome:Se(i.rentalIncome),nameOfTenant:Ee(i.nameOfTenant),propertyTax:Se(i.propertyTax),hasCoOwnedProperty:lr(i.hasCoOwnedProperty),coOwnerName:Ee(i.coOwnerName),coOwnerPan:Ee(i.coOwnerPan),coOwnerShare:Ee(i.coOwnerShare),loanDetails:t?[e]:void 0}}function ch(i){return{grossSalaryIncome:Se(i.grossSalary),salary:Se(i.basicSalary),totalTdsDeposited:Se(i.totalTdsDeposited),employer:{employerName:Ee(i.employerName),employerTan:Ee(i.employerTan)},allowance:{hraAmount:Se(i.hraReceived),leaveTravelAllowanceAmount:Se(i.leaveTravelAllowance),leaveEncashmentAllowanceAmount:Se(i.leaveEncashment),anyOtherAllowanceAmount:Se(i.anyOtherAllowance)}}}function uh(i,e){const t=[];for(const r of i){const o=Ee(r.employerName),n=Ee(r.employerTan),s=Se(r.grossSalary),a=Se(r.basicSalary),l=Se(r.totalTdsDeposited);o===void 0&&n===void 0&&s===void 0&&a===void 0&&l===void 0||t.push({grossSalary:s??0,basicSalary:a??0,employerName:o??"",tanNumber:n??"",tdsDeducted:l??0})}return t.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,forceUpdate:!0,salary:t}:null}function dh(i,e){const t=Ee(i.aadhaarNumber),r=Ee(i.bankAccountNumber),o=Ee(i.bankIfscCode);return t===void 0&&r===void 0&&o===void 0?null:{userId:et(e.userId),assessmentYear:e.assessmentYear,aadhaarNumber:t??"",bankDetails:[{bankAccountNumber:r,bankIfscCode:o}]}}function hh(i,e){return{userId:et(e.userId),assessmentYear:e.assessmentYear,savingBankInterest:Se(i.savingBankInterest)??0,fdInterest:Se(i.fdInterest)??0,dividend:Se(i.dividend)??0,anyOtherIncome:Se(i.anyOtherIncome)??0,familyPension:Se(i.familyPension)??0}}function fh(i,e){const t=Se(i.cryptoSellPrice),r=Se(i.cryptoPurchasePrice);return t===void 0&&r===void 0?null:{userId:et(e.userId),assessmentYear:e.assessmentYear,vdaPurchaseCost:r??0,vdaSellCost:t??0}}function ph(i,e){const t=(o,n,s,a)=>{const l=Ee(i[o]),c=Ee(i[n]),u=Se(i[s]),d=Se(i[a]);return l===void 0&&c===void 0&&u===void 0&&d===void 0?null:{businessType:l??"",businessCode:c??"",cashAmount:d??0,bankAmount:u??0}},r=[t("bizName","bizNature","bizReceiptsBank","bizReceiptsCash"),t("profName","profNature","profReceiptsBank","profReceiptsCash")].filter(o=>o!==null);return r.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,presumptiveIncome:r}:null}function mh(i){return Ee(i.lenderName)!==void 0||Ee(i.loanAccountNumber)!==void 0||Se(i.totalLoanAmount)!==void 0||Se(i.outstandingAmount)!==void 0||Se(i.homeLoanInterest)!==void 0}function jl(i){const e=Ee(i.typeOfHouseProperty)?.toUpperCase();return Se(i.rentalIncome)!==void 0||Ee(i.nameOfTenant)!==void 0||e==="LOP"||e==="DLOP"}function gh(i,e){const t=tn(i.hpDetails).filter(mh).map(r=>{const o=tt({loanType:"HOMELOAN",bankOrInstituteName:Ee(r.lenderName),loanAccountNo:Ee(r.loanAccountNumber),loanSanctionDate:en(r.sanctionDate),totalLoanAmount:Se(r.totalLoanAmount),loanOutstandingAmount:Se(r.outstandingAmount),interest:Se(r.homeLoanInterest)});return tt({typeOfHouseProperty:Ee(r.typeOfHouseProperty),housePropertyAddress:Ee(r.housePropertyAddress),housePropertyPincode:Ee(r.housePropertyPincode),homeLoanInterest:Se(r.homeLoanInterest),homeLoanPrinciple:Se(r.homeLoanPrinciple),propertyTax:Se(r.propertyTax),eligible80EEAAmount:Se(r.eligible80EEAAmount),eligible80EEAmount:Se(r.eligible80EEAmount),hasCoOwnedProperty:lr(r.hasCoOwnedProperty)??!1,hasRentalIncome:jl(r),loanDetails:[o]})});return t.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,hpDetails:t}:null}function yh(i,e){const t=tn(i.hpDetails).filter(jl).map(r=>tt({typeOfHouseProperty:Ee(r.typeOfHouseProperty),housePropertyAddress:Ee(r.housePropertyAddress),housePropertyPincode:Ee(r.housePropertyPincode),rentalIncome:Se(r.rentalIncome),propertyTax:Se(r.propertyTax),hasRentalIncome:!0,nameOfTenant:Ee(r.nameOfTenant),tenantPanNumber:Ee(r.tenantPanNumber),homeLoanInterest:Se(r.homeLoanInterest)}));return t.length?{userId:et(e.userId),assessmentYear:e.assessmentYear,hpDetails:t}:null}function bh(i,e){const t=i||{},r=g=>({userId:et(e.userId),assessmentYear:e.assessmentYear,deductions:tt(g)}),o=[],n=Se(t.us80cAmount);if(n!==void 0){const g=Ee(t.us80cSubType);g?o.push(r({deductionSection:"80C",subType:g,amount:n,accountNo:Ee(t.us80cPolicyNumber)})):console.warn("[smart-edit] 80C skipped — Investment Type is required by the API")}const s=Ee(t.us80ccd1bPanNo),a=Se(t.us80ccd1bAmount);a!==void 0&&o.push(r({deductionSection:"80CCD(1B)",subType:"NPS",amount:a,accountNo:s}));const l=Se(t.us80ccd2Amount);l!==void 0&&o.push(r({deductionSection:"80CCD(2)",subType:"EMPLOYER_NPS",amount:l,accountNo:s}));const c=Se(t.us80eInterest);c!==void 0&&o.push(r({deductionSection:"80E",subType:"EDUCATION_LOAN",interest:c,loanTakenFrom:Ee(t.us80eLoanTakenFrom),bankOrInstituteName:Ee(t.us80eBankName),loanAccountNo:Ee(t.us80eLoanAccountNumber),loanSanctionDate:en(t.us80eLoanSanctionDate),totalLoanAmount:Se(t.us80eLoanAmount),loanOutstandingAmount:Se(t.us80eOutstandingLoan)}));const u=Se(t.us80eeInterest);u!==void 0&&o.push(r({deductionSection:"80EEB",interest:u,loanTakenFrom:Ee(t.us80eeLoanTakenFrom),bankOrInstituteName:Ee(t.us80eeBankName),loanAccountNo:Ee(t.us80eeLoanAccountNumber),loanSanctionDate:en(t.us80eeLoanSanctionDate),totalLoanAmount:Se(t.us80eeLoanAmount),loanOutstandingAmount:Se(t.us80eeOutstandingLoan),vehicleRegistrationNumber:Ee(t.us80eeVehicleRegistrationNumber)}));const d=Se(t.us80dForSelfAndFamilyAmount);d!==void 0&&o.push(r({deductionSection:"80D",subType:"selfFamilyPremium80D",amount:d,insurerName:Ee(t.us80dForSelfAndFamilyPolicyCompany),accountNo:Ee(t.us80dForSelfAndFamilyPolicyNumber)}));const p=Se(t.us80dForParentsAmount);return p!==void 0&&o.push(r({deductionSection:"80D",subType:"parentsPremium80D",amount:p,insurerName:Ee(t.us80dForParentsPolicyCompany),accountNo:Ee(t.us80dForParentsPolicyNumber),parentSeniorCitizen:lr(t.hasParentOverSixty)??!1})),o}function vh(i,e){const t=i||{},r=Se(t.us80gDonationAmount),o=Ee(t.us80gNameOfCharity);return r===void 0&&o===void 0?null:{userId:et(e.userId),assessmentYear:e.assessmentYear,donations80g:[tt({name:o,panNumber:Ee(t.us80gCharityPan),amountOtherThanCash:r,address:Ee(t.us80gTrustAddress),pinCode:Ee(t.us80gPincode)})]}}function Ul(i){const e=i||{},t=Se(e.agricultureIncome),r=Se(e.agricultureExpenditure),o=tt({landInAcre:Se(e.agricultureLandInAcre),nameOfDistrict:Ee(e.agricultureLandDistrict),pinCode:Ee(e.agricultureLandPincode),owner:Ee(e.agricultureLandOwner),typeOfLand:Ee(e.agricultureLandType)})??{},n=Object.keys(o).length>0;if(!(t===void 0&&r===void 0&&!n))return tt({income:t,expenditure:r??0,agricultureLandDetails:n?[o]:void 0})}function wh(i,e){const t=Ul(i);return t?{userId:et(e.userId),assessmentYear:e.assessmentYear,agricultureDetails:t}:null}function et(i){if(i===void 0||i==="")return;const e=Number(i);return Number.isFinite(e)&&String(e)===String(i)?e:i}function Se(i){if(i==null||i==="")return;const e=typeof i=="number"?i:Number(i);return Number.isFinite(e)?e:void 0}function Ee(i){if(i==null)return;const e=String(i).trim();return e===""?void 0:e}function lr(i){return i===!0||i===!1?i:void 0}function kh(){const i=new Date,e=(t,r=2)=>String(t).padStart(r,"0");return`${i.getFullYear()}-${e(i.getMonth()+1)}-${e(i.getDate())}T${e(i.getHours())}:${e(i.getMinutes())}:${e(i.getSeconds())}.${e(i.getMilliseconds(),3)}`}function en(i){const e=Ee(i);if(e)return e.includes("T")?e:/^\d{4}-\d{2}-\d{2}$/.test(e)?`${e}T00:00:00Z`:e}function tn(i){return Array.isArray(i)?i.filter(e=>e&&typeof e=="object"):[]}function Eo(i,e){return tn(i).map(t=>tt(e(t))).filter(t=>t!==void 0)}function tt(i){if(Array.isArray(i)){const e=i.map(tt).filter(t=>t!==void 0);return e.length?e:void 0}if(i&&typeof i=="object"){const e={};for(const[t,r]of Object.entries(i)){const o=tt(r);o!==void 0&&(e[t]=o)}return Object.keys(e).length?e:void 0}return i}function _h(i){const e=i&&typeof i=="object"?i:{},t={},r=Ue(e.employers),o=Ue(e.taxPaid?.onSalary);r.length&&(t.salaryDetails=r.map(M=>{const U=Ao(M.salary),oe=Ao(M.perquisites),Y=Ao(M.profitsInLieuOfSalaryType),W=U+oe+Y,ee=Ah(M.allowance);return{employerName:Ce(M.employerName),employerTan:Ce(M.employerTAN),basicSalary:U||void 0,grossSalary:W||void 0,hraReceived:ee.hra,leaveTravelAllowance:ee.lta,leaveEncashment:ee.leaveEncashment,anyOtherAllowance:ee.other,totalTdsDeposited:Eh(M,o,r)??Re(M.totalTdsDeposited)}}));const n=Ue(e.houseProperties);n.length&&(t.hpDetails=n.map(M=>{const U=Ue(M.loanDetails),oe=U.length?U[0]:void 0,Y=Re(M.grossAnnualRentReceived),W=U.length?U.reduce((J,ge)=>J+(Re(ge.interest)??0),0):void 0,ee=Ue(M.tenant),D=Ue(M.coOwners),X=ee[0],L=D[0];return{typeOfHouseProperty:Ce(M.propertyType),loanTakenFrom:Ce(oe?.loanTakenFrom),lenderName:Ce(oe?.bankOrInstituteName),loanAccountNumber:Ce(oe?.loanAccountNo),sanctionDate:Dl(oe?.loanSanctionDate),totalLoanAmount:Re(oe?.totalLoanAmount),outstandingAmount:Re(oe?.loanOutstandingAmount),homeLoanInterest:W,homeLoanPrinciple:void 0,housePropertyAddress:Ce(M.address),housePropertyPincode:Ce(M.pinCode),rentalIncome:Y,nameOfTenant:Ce(X?.name),tenantPanNumber:Ce(X?.panNumber),eligible80EEAmount:Re(M.eligible80EEAmount),eligible80EEAAmount:Re(M.eligible80EEAAmount),propertyTax:Re(M.propertyTax),hasCoOwnedProperty:D.length>0,coOwnerName:Ce(L?.name),coOwnerPan:Ce(L?.panNumber),coOwnerShare:Re(L?.share)?.toString()}}));const s=Ue(e.deductionUS80CDetails),a=Tt(s.map(M=>Re(M.amount))),l=s.find(M=>Ce(M.identificationNo));t.us80cAmount=a,t.us80cPolicyNumber=Ce(l?.identificationNo);const c=Ue(e.investments)[0],u=Array.isArray(c?.bifurcation)?c.bifurcation[0]:void 0;t.us80cSubType=Ce(u?.subType??c?.investmentType);const d=Ue(e.deductionUS80DDetails),p=d.find(M=>Ce(M.policyFor)?.toUpperCase()==="DEPENDANT")??Ue(e.insurances).find(M=>Ce(M.policyFor)?.toUpperCase()==="DEPENDANT"),g=d.find(M=>Ce(M.policyFor)?.toUpperCase()==="PARENTS")??Ue(e.insurances).find(M=>Ce(M.policyFor)?.toUpperCase()==="PARENTS"),f=Array.isArray(p?.bifurcation)?p.bifurcation[0]:void 0,y=Array.isArray(g?.bifurcation)?g.bifurcation[0]:void 0;t.us80dForSelfAndFamilyAmount=Re(p?.healthInsuranceAmount??p?.premium),t.us80dForSelfAndFamilyPolicyCompany=Ce(p?.insurerName??f?.insurerName),t.us80dForSelfAndFamilyPolicyNumber=Ce(p?.policyNo??f?.accountNo),t.us80dForParentsAmount=Re(g?.healthInsuranceAmount??g?.premium),t.us80dForParentsPolicyCompany=Ce(g?.insurerName??y?.insurerName),t.us80dForParentsPolicyNumber=Ce(g?.policyNo??y?.accountNo),t.hasParentOverSixty=Ih(e.systemFlags?.hasParentOverSixty),t.us80ccd1bAmount=void 0,t.us80ccd1bPanNo=Ce(e.pranNumber),t.us80ccd2Amount=void 0;const w=Ue(e.donations)[0];t.us80gDonationAmount=Re(w?.amount??w?.donationAmount),t.us80gNameOfCharity=Ce(w?.nameOfCharity??w?.donorName??w?.trustName),t.us80gCharityPan=Ce(w?.panNumber??w?.charityPan),t.us80gTrustAddress=Ce(w?.address??w?.charityAddress),t.us80gPincode=Ce(w?.pinCode??w?.pincode);const k=Ue(e.houseProperties?.[0]?.loanDetails)[0];t.us80eLoanTakenFrom=void 0,t.us80eBankName=void 0,t.us80eLoanAccountNumber=void 0,t.us80eLoanSanctionDate=void 0,t.us80eLoanAmount=void 0,t.us80eeLoanTakenFrom=Ce(k?.loanTakenFrom),t.us80eeBankName=Ce(k?.bankOrInstituteName),t.us80eeLoanAccountNumber=Ce(k?.loanAccountNo),t.us80eeLoanSanctionDate=Dl(k?.loanSanctionDate),t.us80eeLoanAmount=Re(k?.totalLoanAmount),t.us80eeOutstandingLoan=Re(k?.loanOutstandingAmount),t.us80eeVehicleRegistrationNumber=Ce(k?.vehicleRegistrationNo);const S=Ue(e.insurances);t.preventiveHealthCheckUp=Tt(S.map(M=>Re(M.preventiveCheckUp))),t.medicalExpenditure=Tt(S.map(M=>Re(M.medicalExpenditure)));const v=Ue(e.incomes),x=M=>Tt(v.filter(U=>Ce(U.incomeType)===M).map(U=>Re(U.amount)));t.savingBankInterest=x("SAVING_INTEREST"),t.fdInterest=x("FD_RD_INTEREST"),t.anyOtherIncome=x("ANY_OTHER"),t.familyPension=x("FAMILY_PENSION"),t.dividend=Tt(Ue(e.dividendIncomes).map(M=>Re(M.income)));const E=e.business;if(E){const M=Ue(E.presumptiveIncomes),U=W=>{const ee=Ue(W.incomes),D=X=>Re(ee.find(L=>Ce(L.incomeType)===X)?.receipts)??0;return D("ANY_OTHER")>0?!0:D("BANK")>0||D("CASH")>0?!1:!!Ce(W.businessType)?.toUpperCase().includes("PROFESSION")},oe=W=>M.find(ee=>U(ee)===W),Y=(W,ee)=>{if(!W)return;const D=Ue(W.incomes),X=J=>Re(D.find(ge=>Ce(ge.incomeType)===J)?.receipts),L=X("BANK")||X("ANY_OTHER");t[ee.name]=Ce(W.businessType),t[ee.nature]=Ce(W.natureOfBusiness),t[ee.bank]=L||void 0,t[ee.cash]=X("CASH")||void 0,t[ee.net]=Tt(D.map(J=>Re(J.presumptiveIncome)))||void 0};Y(oe(!1),{name:"bizName",nature:"bizNature",bank:"bizReceiptsBank",cash:"bizReceiptsCash",net:"bizNetProfit"}),Y(oe(!0),{name:"profName",nature:"profNature",bank:"profReceiptsBank",cash:"profReceiptsCash",net:"profNetProfit"})}const I=Ue(e.capitalGain).filter(M=>Ce(M.assetType)?.toUpperCase()==="VDA").flatMap(M=>Ue(M.assetDetails));I.length&&(t.cryptoSellPrice=Tt(I.map(M=>Re(M.sellValue))),t.cryptoPurchasePrice=Tt(I.map(M=>Re(M.purchaseCost))));const P=e.agriculturalDetails,O=e.agriculturalIncome;t.agricultureIncome=Re(O?.netAgriculturalIncome)??Re(O?.grossAgriculturalReceipts)??Re(P?.income),t.agricultureExpenditure=Re(O?.expenditureIncurredOnAgriculture)??Re(P?.expenditure);const T=Ue(P?.agricultureLandDetails??P?.agriculturalLandDetails??e.agriculturalLandDetails)[0];T&&(t.agricultureLandInAcre=Re(T.landInAcre),t.agricultureLandDistrict=Ce(T.nameOfDistrict),t.agricultureLandPincode=Ce(T.pinCode),t.agricultureLandOwner=Sh(T.owner),t.agricultureLandType=xh(T.typeOfLand)),t.aadhaarNumber=Ce(e.aadharNumber);const $=Ue(e.bankDetails)[0];return $&&(t.bankAccountNumber=Ce($.accountNumber),t.bankIfscCode=Ce($.ifsCode)),Bl(t)}function Sh(i){const e=Ce(i)?.trim();if(!e)return;const t=e.toUpperCase();return t==="O"||t==="OWNED"?"Owned":t==="H"||t.startsWith("HELD")?"Held on lease":e}function xh(i){const e=Ce(i)?.trim();if(!e)return;const t=e.toUpperCase();return t==="IRG"||t==="IRRIGATED"?"Irrigated":t==="RF"||t.startsWith("RAIN")?"Rain-fed":e}function Dl(i){const e=Ce(i);if(!e)return;const t=/^(\d{4}-\d{2}-\d{2})/.exec(e);return t?t[1]:e}function Ao(i){return Ue(i).reduce((e,t)=>e+(Re(t.taxableAmount)??0),0)}function Eh(i,e,t){if(!e.length)return;const r=Ce(i.employerTAN)?.trim().toUpperCase();if(r){for(const n of e)if(Ce(n.deductorTAN)?.trim().toUpperCase()===r)return Re(n.totalTdsDeposited)}const o=Ce(i.employerName)?.trim().toLowerCase();if(o){for(const n of e)if(Ce(n.deductorName)?.trim().toLowerCase()===o)return Re(n.totalTdsDeposited)}if(t.length===1&&e.length===1)return Re(e[0].totalTdsDeposited)}function Ah(i){const e=Ue(i);if(!e.length)return{};let t,r,o,n;for(const s of e){const a=Re(s.exemptAmount)??Re(s.allowanceAmount);switch(Ce(s.allowanceType)?.toUpperCase()){case"HRA":case"HOUSE_RENT_ALLOWANCE":t=a;break;case"LTA":case"LEAVE_TRAVEL_ALLOWANCE":r=a;break;case"LEAVE_ENCASHMENT":o=a;break;default:n=(n??0)+(Re(s.allowanceAmount)??0)}}return{hra:t,lta:r,leaveEncashment:o,other:n}}function Tt(i){let e=0,t=!1;for(const r of i)r!=null&&(e+=r,t=!0);return t?e:void 0}function Ue(i){return Array.isArray(i)?i.filter(e=>e&&typeof e=="object"):[]}function Re(i){if(typeof i=="number"&&Number.isFinite(i))return i;if(typeof i=="string"&&i.trim()!==""&&Number.isFinite(Number(i)))return Number(i)}function Ce(i){if(i==null)return;const e=String(i).trim();return e===""?void 0:e}function Ih(i){if(typeof i=="boolean")return i;if(typeof i=="string"){const e=i.trim().toLowerCase();if(e==="true"||e==="1"||e==="yes"||e==="y")return!0;if(e==="false"||e==="0"||e==="no"||e==="n")return!1}if(typeof i=="number")return i===1?!0:i===0?!1:void 0}function Bl(i){const e={};for(const[t,r]of Object.entries(i))r!==void 0&&(Array.isArray(r)?e[t]=r.map(o=>o&&typeof o=="object"?Bl(o):o):e[t]=r);return e}function Io(){if(typeof window>"u")return null;const i=window,e=i.__aikaara_runtime__;if(!e||typeof e.getChatJwt!="function")return console.warn("[smart-edit] API disabled: window.__aikaara_runtime__.getChatJwt is missing — the chat was not mounted via the SDK mountFromSlug path."),null;const t=i.__aikaara_descriptor__??{},r=Dh(t);if(!r)return console.warn("[smart-edit] API disabled: could not resolve a TaxBuddy API host from the descriptor (cloud / upload / pan / leader endpoints)."),null;const o=Bh(e.slug),n=typeof o?.tenantJwt=="string"?o.tenantJwt:"",s=e.getChatJwt,a=async()=>n||await s(),l=(o&&o.userId!=null&&o.userId!==""?String(o.userId):$h(e.identity))||void 0;return console.info("[smart-edit] API config — base:",r,"· userId:",l??"(none)"),{baseUrl:r,getToken:a,headers:Fh(t.auth?.headers),assessmentYear:t.itr?.assessmentYear||qh(),isRevised:"N",userId:l,submitUrl:t.itr?.automationSubmitUrl||void 0}}async function Th(i){const e=await i.getToken(),t=i.userId;if(!t)throw new Error("[smart-edit] no userId for GET /itr/latest-itr (aikaara_sso identity missing)");const r=await fetch(`${i.baseUrl}/itr/latest-itr?userId=${encodeURIComponent(t)}`,{method:"GET",headers:{accept:"application/json",authorization:`Bearer ${e}`,...i.headers}});if(!r.ok){const o=await r.text().catch(()=>"");throw new Error(`[smart-edit] GET /itr/latest-itr → ${r.status} ${o.slice(0,200)}`)}return _h(To(await r.json().catch(()=>({}))))}async function Ch(i,e){const t=await i.getToken(),r=i.userId,o={...ah(e,{userId:r,assessmentYear:i.assessmentYear,isRevised:i.isRevised}),sendSummary:!0},n=i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,s={accept:"application/json","content-type":"application/json",authorization:`Bearer ${t}`,...i.headers};i.txbdyApiKey&&(s["txbdy-api-key"]=i.txbdyApiKey),console.info("[smart-edit] PUT",n,"— DTO keys:",Object.keys(o).join(", "));const a=await fetch(n,{method:"PUT",headers:s,body:JSON.stringify(o)});if(!a.ok){const l=await a.text().catch(()=>"");throw new Error(`[smart-edit] PUT ${n} → ${a.status} ${l.slice(0,200)}`)}return To(await a.json().catch(()=>({})))}async function Ph(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/salary`,e)}async function Oh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/bank-aadhaar`,e)}async function Fl(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function Mh(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function Lh(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function Rh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/deductions`,e)}async function Nh(i,e){return wt(i,i.submitUrl||`${i.baseUrl}/itr/v1/automation/data`,e)}async function jh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/hp-income`,e)}async function Uh(i,e){return wt(i,`${i.baseUrl}/itr/v1/automation/vda`,e)}async function wt(i,e,t){const o={accept:"application/json","content-type":"application/json",authorization:`Bearer ${await i.getToken()}`,...i.headers};i.txbdyApiKey&&(o["txbdy-api-key"]=i.txbdyApiKey),console.info("[smart-edit] PUT",e,"— body keys:",Object.keys(t).join(", "));const n=await fetch(e,{method:"PUT",headers:o,body:JSON.stringify(t)});if(!n.ok){const s=await n.text().catch(()=>"");throw new Error(`[smart-edit] PUT ${e} → ${n.status} ${s.slice(0,200)}`)}return To(await n.json().catch(()=>({})))}function Dh(i){const e=[i.cloud?.listEndpoint,i.cloud?.downloadEndpoint,i.upload?.signEndpoint,i.login?.pan?.basicPanEndpoint,i.login?.pan?.panDetailEndpoint,i.methodPicker?.leaderAssignmentEndpoint];for(const t of e)if(!(typeof t!="string"||!t))try{const r=new URL(t);if(/(^|\.)taxbuddy\.com$/i.test(r.hostname))return r.origin}catch{}return null}function Bh(i){if(!i||typeof localStorage>"u")return null;try{const e=localStorage.getItem(`aikaara_sso:${i}`);if(!e)return null;const t=JSON.parse(e);return t&&typeof t.identity=="object"&&t.identity!==null?t.identity:null}catch{return null}}function Fh(i){const e={};if(!i)return e;const t=/^(authorization|content-type|accept)$/i;for(const[r,o]of Object.entries(i))!t.test(r)&&typeof o=="string"&&(e[r]=o);return e}function $h(i){if(!i)return;const e=i.userId??i.id??i.ext_uid??i.extUid;return e==null||e===""?void 0:String(e)}function To(i){if(i&&typeof i=="object"){const e=i;return e.data&&typeof e.data=="object"?e.data:e}return{}}function qh(){const i=new Date,e=i.getMonth()>=3?i.getFullYear():i.getFullYear()-1;return`${e}-${e+1}`}class Hh{client;panel;bubble;header;messageList;input;errorBanner;isOpen=!1;isEmbed=!1;smartEditModal=null;constructor(e,t,r){this.client=new Ol(e,{uploadAdapter:r?.uploadAdapter,historyAdapter:r?.historyAdapter}),this.isEmbed=e.display==="embed",this.bubble=t.querySelector("aikaara-chat-bubble"),this.panel=t.querySelector(".aikaara-panel"),this.header=t.querySelector("aikaara-chat-header"),this.messageList=t.querySelector("aikaara-message-list"),this.input=t.querySelector("aikaara-chat-input"),this.errorBanner=t.querySelector("aikaara-error-banner"),e.welcomeMessage&&this.messageList.setWelcomeMessage(e.welcomeMessage),e.showTimestamps!==void 0&&this.messageList.setShowTimestamps(e.showTimestamps),(e.linkHandlers||e.getLinkBearer)&&this.messageList.setLinkConfig(e.linkHandlers??[],e.getLinkBearer),e.chatActions!==void 0&&this.header.setActions(e.chatActions),this.wireEvents()}async connect(){try{await this.client.connect(),this.messageList.renderMessages(this.client.messages)}catch{this.errorBanner.show("Failed to connect. Retrying...",5e3)}}async disconnect(){await this.client.disconnect()}wireEvents(){this.bubble?.addEventListener("toggle",()=>{this.togglePanel()}),this.isEmbed||this.header.addEventListener("header-close",()=>{this.togglePanel(!1)}),this.header.addEventListener("aikaara-chat-action",(e=>{this.handleChatAction(e.detail)})),this.input.addEventListener("send",(e=>{this.handleSend(e.detail.content)})),this.input.addEventListener("file-pick",(e=>{this.handleFile(e.detail.file)})),this.client.on("message:sent",e=>{this.messageList.addMessage(e),requestAnimationFrame(()=>{setTimeout(()=>{this.messageList.showTypingIndicator()},100)})}),this.client.on("stream:start",()=>{this.messageList.removeTypingIndicator();const e=this.client.messages[this.client.messages.length-1];e&&this.messageList.addMessage(e)}),this.client.on("stream:update",({content:e})=>{this.messageList.updateStreamingContent(e)}),this.client.on("stream:end",()=>{this.messageList.finalizeStreaming()}),this.client.on("typing:start",()=>{const e=this.client.messages,t=e[e.length-1];(!t||t.status!=="streaming")&&this.messageList.showTypingIndicator()}),this.client.on("typing:stop",()=>{this.messageList.removeTypingIndicator()}),this.client.on("connection:state",e=>{this.header.setStatus(e),e==="connected"?(this.errorBanner.hide(),this.input.disabled=!1):e==="reconnecting"?(this.errorBanner.show("Connection lost. Reconnecting..."),this.input.disabled=!0):e==="disconnected"&&(this.input.disabled=!0)}),this.client.on("error",e=>{this.errorBanner.show(e.message,5e3)}),this.client.on("message:received",e=>{this.messageList.upsertMessage(e);const t=this.client.config?.tiledeskIdentity?.userId;e.metadata?.sender&&t&&e.metadata.sender!==t&&this.messageList.removeTypingIndicator()}),this.client.on("message:updated",e=>{this.messageList.upsertMessage(e)}),this.messageList.addEventListener("message-action",e=>{const t=e.detail;if(!t?.text)return;if(this.shouldOpenSmartEdit(t.text)){this.openSmartEdit();return}const r=this.client.config.templateActionAttributes??{},o=t.attributes?.action??{},n={...t.attributes,action:{...r,...o}};this.handleSend(t.text,n)})}async handleSend(e,t){try{await this.client.sendMessage(e,t?{attributes:t}:void 0)}catch{this.errorBanner.show("Failed to send message",3e3)}}async handleFile(e){this.input.uploading=!0;try{await this.client.sendFile(e)}catch(t){this.errorBanner.show(t instanceof Error?`Upload failed: ${t.message}`:"Upload failed",4e3)}finally{this.input.uploading=!1}}sendUserEvent(e,t,r){this.client.sendUserEvent(e,t,r)}getClient(){return this.client}async handleChatAction(e){if(e.id==="edit-itr"){this.openSmartEdit();return}console.info("[chat-action]",e.id,e.label)}shouldOpenSmartEdit(e){const t=window.__aikaara_descriptor__?.smartEdit?.openOnMessages;if(!Array.isArray(t)||t.length===0)return!1;const r=n=>n.trim().toLowerCase(),o=r(e);return t.some(n=>typeof n=="string"&&r(n)===o)}async openSmartEdit(){const e=this.ensureSmartEditModal();e.open({schemas:sh,data:{}});const t=Io();if(!(!t||!t.baseUrl))try{const r=await Th(t);e.setData(r)}catch(r){console.warn("[smart-edit] fetch failed",r),this.errorBanner.show("Could not load your ITR details — starting from a blank form.",4e3)}}ensureSmartEditModal(){if(this.smartEditModal)return this.smartEditModal;const e=document.createElement("aikaara-smart-edit-modal");return document.body.appendChild(e),e.addEventListener("smart-edit-submit",(t=>{const r=t.detail;this.handleSectionSubmit(r.sectionId,r.record)})),e.addEventListener("smart-edit-recalculate",(t=>{const r=t.detail;this.handleSmartEditSave(r.record)})),this.smartEditModal=e,e}async handleSectionSubmit(e,t){const r=Io();if(!r)return;const o={userId:r.userId,assessmentYear:r.assessmentYear};try{if(e==="salary-hra"){const n=Array.isArray(t.salaryDetails)?t.salaryDetails:[],s=uh(n,o);s&&await Ph(r,s)}else if(e==="bank-details"){const n=dh(t,o);n&&await Oh(r,n)}else if(e==="other-sources")await Fl(r,hh(t,o));else if(e==="business-profession"){const n=ph(t,o);n&&await Mh(r,n)}else if(e==="crypto-income"){const n=fh(t,o);n&&await Uh(r,n)}else if(e==="agricultural-income"){const n=wh(t,o);n&&await Lh(r,n)}else if(e==="deductions"){for(const s of bh(t,o))await Rh(r,s);const n=vh(t,o);n&&await Fl(r,n)}else if(e==="house-property"){const n=gh(t,o);n&&await Nh(r,n);const s=yh(t,o);s&&await jh(r,s)}}catch(n){console.warn("[smart-edit] section save failed",e,n),this.errorBanner.show("Failed to save. Please try again.",4e3)}}async handleSmartEditSave(e){console.info("[smart-edit] Save & Recalculate — persisting record");const t=Io();if(!t){console.warn("[smart-edit] save skipped — no API config (see the warning above for why)");return}try{await Ch(t,e)}catch(r){console.warn("[smart-edit] save failed",r),this.errorBanner.show("Failed to save your ITR details. Please try again.",4e3)}}togglePanel(e){this.isEmbed||(this.isOpen=e!==void 0?e:!this.isOpen,this.isOpen?(this.panel.removeAttribute("hidden"),requestAnimationFrame(()=>{this.panel.classList.remove("entering"),this.panel.classList.add("visible"),this.input.focus()})):(this.panel.classList.remove("visible"),this.panel.classList.add("entering"),setTimeout(()=>{this.panel.setAttribute("hidden","")},200)))}}class $l extends HTMLElement{shadow;controller=null;_config={};static get observedAttributes(){return["base-url","ws-url","user-token","api-key","title","subtitle","theme","primary-color","position","width","height","placeholder","welcome-message","avatar-url","display"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.initController()}disconnectedCallback(){this.controller?.disconnect()}attributeChangedCallback(e,t,r){t!==r&&this.controller&&(this.render(),this.initController())}configure(e){this._config={...this._config,...e}}getConfig(){return{baseUrl:this.getAttribute("base-url")||this._config.baseUrl||"",wsUrl:this.getAttribute("ws-url")||this._config.wsUrl,userToken:this.getAttribute("user-token")||this._config.userToken||"",apiKey:this.getAttribute("api-key")||this._config.apiKey,title:this.getAttribute("title")||this._config.title||"Chat",subtitle:this.getAttribute("subtitle")||this._config.subtitle,theme:this.getAttribute("theme")||this._config.theme||Uc,primaryColor:this.getAttribute("primary-color")||this._config.primaryColor||Fo,position:this.getAttribute("position")||this._config.position||jc,width:Number(this.getAttribute("width"))||this._config.width||Mc,height:Number(this.getAttribute("height"))||this._config.height||Lc,fontFamily:this._config.fontFamily||Nc,borderRadius:this._config.borderRadius??Rc,placeholder:this.getAttribute("placeholder")||this._config.placeholder||$o,welcomeMessage:this.getAttribute("welcome-message")||this._config.welcomeMessage,avatarUrl:this.getAttribute("avatar-url")||this._config.avatarUrl,showTimestamps:this._config.showTimestamps??!0,persistConversation:this._config.persistConversation??!0,showHeader:this._config.showHeader??!0,hideSystemMessages:this._config.hideSystemMessages,timestampFormat:this._config.timestampFormat,input:this._config.input,templateLayout:this._config.templateLayout,chatActions:this._config.chatActions,showBubble:this._config.showBubble??!0,display:(this.getAttribute("display")||this._config.display)??"popup",offset:this._config.offset||Dc,conversationId:this._config.conversationId,systemPromptId:this._config.systemPromptId,channel:this._config.channel,extUid:this._config.extUid,transport:this._config.transport,tiledesk:this._config.tiledesk,tiledeskIdentity:this._config.tiledeskIdentity,onMessage:this._config.onMessage,onStatusChange:this._config.onStatusChange,onError:this._config.onError,onStreamUpdate:this._config.onStreamUpdate,onConnectionStateChange:this._config.onConnectionStateChange,onTemplateMessage:this._config.onTemplateMessage,themeTokens:this._config.themeTokens,linkHandlers:this._config.linkHandlers,getLinkBearer:this._config.getLinkBearer}}propagateThemeToDocument(e,t,r,o){if(typeof document>"u")return;const n=document.documentElement,s=(a,l)=>{l!==void 0&&l!==""&&n.style.setProperty(`--aikaara-${a}`,l)};s("primary",e?.primary??t),s("primary-hover",e?.primaryHover),s("primary-contrast",e?.primaryContrast),s("surface",e?.surface),s("surface-muted",e?.surfaceMuted),s("border",e?.border),s("text",e?.text),s("text-muted",e?.textMuted),s("font",e?.font??o),s("radius",e?.radius!=null?`${e.radius}px`:r!=null?`${r}px`:void 0),s("bubble-radius",e?.bubbleRadius!=null?`${e.bubbleRadius}px`:void 0),s("button-radius",e?.buttonRadius!=null?`${e.buttonRadius}px`:void 0),s("user-bubble-bg",e?.userBubbleBg),s("user-bubble-text",e?.userBubbleText),s("bot-bubble-bg",e?.botBubbleBg),s("bot-bubble-text",e?.botBubbleText),s("modal-width",e?.modalWidth),s("modal-height",e?.modalHeight),s("modal-max-width",e?.modalMaxWidth),s("modal-max-height",e?.modalMaxHeight),s("modal-padding",e?.modalPadding)}themeVars(e){if(!e)return"";const t=o=>typeof o=="number"?`${o}px`:void 0,r={primary:e.primary,"primary-hover":e.primaryHover,"primary-contrast":e.primaryContrast,surface:e.surface,"surface-muted":e.surfaceMuted,border:e.border,text:e.text,"text-muted":e.textMuted,font:e.font,radius:t(e.radius),"bubble-radius":t(e.bubbleRadius),"button-radius":t(e.buttonRadius),"user-bubble-bg":e.userBubbleBg,"user-bubble-text":e.userBubbleText,"bot-bubble-bg":e.botBubbleBg,"bot-bubble-text":e.botBubbleText,"modal-width":e.modalWidth,"modal-height":e.modalHeight,"modal-max-width":e.modalMaxWidth,"modal-max-height":e.modalMaxHeight,"modal-padding":e.modalPadding};return Object.entries(r).filter(([,o])=>o!==void 0&&o!=="").map(([o,n])=>`--aikaara-${o}: ${n};`).join(`
|
|
9
9
|
`)}setUploadAdapter(e){this._config.uploadAdapter=e,this.controller?.getClient().setUploadAdapter(e)}setHistoryAdapter(e){this._config.historyAdapter=e}render(){const e=this.getConfig(),t=e.display==="embed";this.propagateThemeToDocument(e.themeTokens,e.primaryColor,e.borderRadius,e.fontFamily);const r=`
|
|
10
10
|
font-family: var(--aikaara-font);
|
|
11
11
|
position: fixed;
|
package/dist/headless.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-D_KsmvuR.cjs");class s extends e.EventEmitter{registration=null;pendingEdits=[];constructor(t){super(),this.setupListeners(t)}registerForm(t){this.registration=t;const i=this.pendingEdits.filter(r=>r.entity_type===t.entityType&&String(r.entity_id)===String(t.entityId));if(i.length>0){for(const r of i)t.onFieldUpdate(r.fields),this.emit("edit:applied",{entityType:r.entity_type,entityId:r.entity_id,fields:r.fields});this.pendingEdits=this.pendingEdits.filter(r=>!(r.entity_type===t.entityType&&String(r.entity_id)===String(t.entityId)))}}unregisterForm(t,i){this.registration?.entityType===t&&String(this.registration?.entityId)===String(i)&&(this.registration=null)}get currentForm(){return this.registration}pushFieldUpdates(t,i,r){this.registration&&this.registration.entityType===t&&String(this.registration.entityId)===String(i)?(this.registration.onFieldUpdate(r),this.emit("edit:applied",{entityType:t,entityId:i,fields:r})):(this.pendingEdits.push({action:"edit_entity",entity_type:t,entity_id:i,fields:r}),this.emit("edit:pending",{entityType:t,entityId:i,fields:r}))}async requestSave(){if(!this.registration)return{success:!1,error:"No form registered"};try{return await this.registration.onSave(),this.emit("save:success",{entityType:this.registration.entityType,entityId:this.registration.entityId}),{success:!0}}catch(t){const i=t instanceof Error?t.message:"Save failed";return this.emit("save:error",{entityType:this.registration.entityType,entityId:this.registration.entityId,error:i}),{success:!1,error:i}}}async requestTest(t){if(!this.registration?.onTest)return{success:!1,error:"Current form does not support testing"};try{return await this.registration.onTest(t),{success:!0}}catch(i){return{success:!1,error:i instanceof Error?i.message:"Test failed"}}}setupListeners(t){t.on("action:edit_entity",i=>{this.pushFieldUpdates(i.entity_type,i.entity_id,i.fields)}),t.on("action:save_entity",i=>{this.requestSave()}),t.on("action:test_tool",i=>{this.emit("test:triggered",{toolId:i.tool_id,parameters:i.parameters}),this.requestTest(i.parameters)})}}exports.ActionCableClient=e.ActionCableClient;exports.AikaaraChatClient=e.AikaaraChatClient;exports.ApiClient=e.ApiClient;exports.ChannelSubscription=e.ChannelSubscription;exports.ConnectionManager=e.ConnectionManager;exports.ConversationManager=e.ConversationManager;exports.EventEmitter=e.EventEmitter;exports.MessageStore=e.MessageStore;exports.SessionAuthAdapter=e.SessionAuthAdapter;exports.SsoExchangeAdapter=e.SsoExchangeAdapter;exports.TiledeskTransport=e.TiledeskTransport;exports.TokenDiscoveryError=e.TokenDiscoveryError;exports.TokenDiscoveryReader=e.TokenDiscoveryReader;exports.clearPersistedConversationId=e.clearPersistedConversationId;exports.collectSsoCredentials=e.collectSsoCredentials;exports.createFetchUploadAdapter=e.createFetchUploadAdapter;exports.createPresigned3StepUploadAdapter=e.createPresigned3StepUploadAdapter;exports.createTiledeskHistoryAdapter=e.createTiledeskHistoryAdapter;exports.discoverToken=e.discoverToken;exports.extractTiledeskFileEnvelope=e.extractTiledeskFileEnvelope;exports.inferTiledeskRole=e.inferTiledeskRole;exports.isTiledeskSelfEcho=e.isTiledeskSelfEcho;exports.mountFromSlug=e.mountFromSlug;exports.mountTenantWidget=e.mount;exports.parseTiledeskTemplate=e.parseTiledeskTemplate;exports.runMethodSelectPreflight=e.runMethodSelectPreflight;exports.FormBridge=s;
|
package/dist/headless.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as s } from "./MountTenant-
|
|
2
|
-
import { A as p, b as l, k as g, C as c, l as h, m as y, M as u, S as m, n as f, T, o as S, p as _, q as v, s as E, t as C, u as F, v as k, w as A, x as I, y as x, z as U, B as q, D as M, F as b, G as w } from "./MountTenant-
|
|
1
|
+
import { E as s } from "./MountTenant-B5vjjcZ4.mjs";
|
|
2
|
+
import { A as p, b as l, k as g, C as c, l as h, m as y, M as u, S as m, n as f, T, o as S, p as _, q as v, s as E, t as C, u as F, v as k, w as A, x as I, y as x, z as U, B as q, D as M, F as b, G as w } from "./MountTenant-B5vjjcZ4.mjs";
|
|
3
3
|
class a extends s {
|
|
4
4
|
registration = null;
|
|
5
5
|
pendingEdits = [];
|