From d3fab004e989b107d10dc9092bcb357fc4a0df4d Mon Sep 17 00:00:00 2001 From: William Mantly Date: Sun, 9 Aug 2026 15:35:29 -0400 Subject: [PATCH] release(v2.0.1): bump version to 2.0.1 and package v2.0.1 agent binaries --- nodejs/package-lock.json | 4 +- nodejs/package.json | 2 +- .../public/resources/theta-agent/install.sh | 52 ++++++++++++++---- .../theta-agent/theta-agent-darwin-amd64 | Bin 6311296 -> 6311296 bytes .../theta-agent/theta-agent-darwin-arm64 | Bin 6046850 -> 6046850 bytes .../theta-agent/theta-agent-linux-amd64 | Bin 6238360 -> 6238360 bytes .../theta-agent/theta-agent-linux-arm64 | Bin 6029464 -> 6029464 bytes .../theta-agent/theta-agent-linux-armv7 | Bin 6095000 -> 6095000 bytes .../theta-agent/theta-agent-tray-linux-amd64 | Bin 3985560 -> 3985560 bytes .../theta-agent/theta-agent-tray-linux-arm64 | Bin 3997848 -> 3997848 bytes .../theta-agent/theta-agent-windows-amd64.exe | Bin 6504960 -> 6504960 bytes .../theta-agent/theta-agent-windows-arm64.exe | Bin 6095360 -> 6094848 bytes 12 files changed, 43 insertions(+), 15 deletions(-) diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 2d9f264..8c9e00b 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "t42-theta-directory", - "version": "2.0.0", + "version": "2.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "t42-theta-directory", - "version": "2.0.0", + "version": "2.0.1", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-free": "^7.3.0", diff --git a/nodejs/package.json b/nodejs/package.json index faf180b..eefabd2 100755 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "t42-theta-directory", - "version": "2.0.0", + "version": "2.0.1", "description": "A very simple LDAP management and SSO system", "author": [ { diff --git a/nodejs/public/resources/theta-agent/install.sh b/nodejs/public/resources/theta-agent/install.sh index 8b2d750..7e37a4d 100644 --- a/nodejs/public/resources/theta-agent/install.sh +++ b/nodejs/public/resources/theta-agent/install.sh @@ -174,20 +174,48 @@ EOF else log "Preserving existing configuration at $CONFIG_FILE" fi -chmod 600 "$CONFIG_FILE" - -# An agent with no public_key cannot verify signed commands and will refuse -# every one of them. That is the safe default, but it is silent at run time, so -# say it plainly here where the operator is watching. -if ! grep -qE '^public_key:[[:space:]]*"[^"]+"' "$CONFIG_FILE" 2>/dev/null; then - log "WARNING: no public_key configured — this agent will report telemetry but" - log " REFUSE reboot / configure_ldap / arbitrary_bash / update_binary." - log " Re-run with --public-key \"\" (shown at enrollment)." +# Ensure theta-secrets & theta groups exist for non-root secret access +log "Configuring non-root secret access groups (theta-secrets)..." +if command -v groupadd >/dev/null 2>&1; then + getent group theta-secrets >/dev/null 2>&1 || groupadd -r theta-secrets 2>/dev/null || true + getent group theta >/dev/null 2>&1 || groupadd -r theta 2>/dev/null || true fi +SECRETS_GROUP="root" +if getent group theta-secrets >/dev/null 2>&1; then + SECRETS_GROUP="theta-secrets" +elif getent group theta >/dev/null 2>&1; then + SECRETS_GROUP="theta" +fi +chown -R "root:$SECRETS_GROUP" "$CONFIG_DIR" 2>/dev/null || true +chmod 750 "$CONFIG_DIR" +chmod 640 "$CONFIG_FILE" -# 4b. Ensure SSSD dependencies are installed if configure_ldap is enabled -if [ "$INSTALL_SSSD" -eq 1 ] || grep -qE -i 'configure_ldap:[[:space:]]*true' "$CONFIG_FILE" 2>/dev/null; then - install_sssd_deps +# 4c. Setup Desktop Tray Icon companion +TRAY_BINARY_NAME="theta-agent-tray-${OS_NAME}-${ARCH_NAME}" +case "$OS_NAME" in + linux*) TRAY_BINARY_NAME="theta-agent-tray-linux-amd64" ;; + windows*) TRAY_BINARY_NAME="theta-agent-tray-windows-amd64.exe" ;; +esac +TRAY_BIN_PATH="/usr/local/bin/theta-agent-tray" +TRAY_URL="https://github.com/theta42/theta-agent/releases/latest/download/${TRAY_BINARY_NAME}" + +log "Attempting to install desktop tray companion ($TRAY_BINARY_NAME)..." +if curl -fsSL "$TRAY_URL" -o "$TRAY_BIN_PATH.tmp" 2>/dev/null; then + chmod +x "$TRAY_BIN_PATH.tmp" + mv -f "$TRAY_BIN_PATH.tmp" "$TRAY_BIN_PATH" + mkdir -p /etc/xdg/autostart + cat < /etc/xdg/autostart/theta-agent-tray.desktop +[Desktop Entry] +Type=Application +Name=Theta Agent Tray +Comment=Theta Agent Desktop Tray Companion +Exec=/usr/local/bin/theta-agent-tray +Icon=network-workgroup +Terminal=false +Categories=Utility;System; +X-GNOME-Autostart-enabled=true +EOF + log "Desktop tray companion installed at $TRAY_BIN_PATH with autostart." fi # 5. Setup systemd service diff --git a/nodejs/public/resources/theta-agent/theta-agent-darwin-amd64 b/nodejs/public/resources/theta-agent/theta-agent-darwin-amd64 index 09339e8d0a2c0ea933fa0a4eae301d2ae4619209..16c6c62cbde6efb33b54c729844edf8f4c57c6b6 100755 GIT binary patch delta 1043 zcmbW#OHUI~7zW@O%gq8(L`5h{p>k26?Q}Zr6jUfPPzneZwLraKfti+wpim<8B1IQn zxFL}^3xbyrw<3@@D-&?%MiGn~!-BQ^0AfP)ZOO>qlRWdi=R0ST$vG37pHao&{Ti7& zyQe3T!(>gC+0}34G?~3IRhXQvy{jiuC33~0eg2wES&gXXvOHa5fo_Y3VVTLPM$yHN zH9MREqtFyGb+z=ii5`AH@CIoA1DDTerw3VEFEtz-?`ZQ_M020Doi=i!(CefpM<*xT zjvl+^en6b+ELH2I_12=or!h@DrXk@7s2~MWAq~LG-J10`bB}FXxfL9GKqsMMGuPRev0)mgJ$XLFGia| zv9%0UOPi%A?WN;oy9`*t1}xa27V6+4T$0OnFK>NP-~EzuaDmfONscv7(yUlAUppFE@SXwCUuc?EA^pm14fI&%KPK)r?OJ1qI0&;*Cmv z65?qkuZMWIlFx>DgOYo~yh+J(;luq~VZKV~t0RYfSA?%t`ZEzes$_MPH&q;bgE1Ho zg1#D`Ul<7*9|`^AqXYMZpusiXOkT6GZN)r Wjm3ACy>Jt5!ELxB?=1Jdn*R%ZHD6Bv delta 1082 zcmbW#OHUI~7zW@OO98n^5fPy%EfuT+?Q~{(MTIg`D1`z=0jbvlt)QWl1~5)rsBzJ) ziN;wFg^de0Vj(yylj;Unir`A(g0=hrW8&p4M3dsqlRWdC^Uil>7U#t0@5$ouGDQ}z zf71}VgEH-w^_7q099gIkDt4Et7fpm*B$rv`!$mS{B`SMV(C-PkyTkrl?rB3P?3|cx zxAt0i{kSjCV-IkXv>`O^r5z#4%?#*A?+BLLmb+d4iGkLk2@4w(!hL#=(d_IDPcwt< zu9jfOpp)*QI;!(j;u}|G#r?P<5m%6K0A!E_a>#}p$c2ND2l-F{g>VRpAicjB4nqkX zfl@dMWpE72p#qdp3CH0CRDlZAPz@S52{lj)r$7s*;SAJ4y%bk8JR6f4bmoLsXaF7P zfdT{2zyK?01>@YL)=yat!#ap&>IhVxR)dFwOb{zL621i4i}1H7au{ z#%8eEShE;oyiB5I#|S1cg9WT$gGM+D=cJmQ^P6w;7T;&>ooifF7nw>##WI_pP%Sk< zGuWX;QY~?n8o4Jz5D!HA2B(p)MG2xw9K+NwD-c8}-jvl6#1`gjn9E`W@i<5jZC--- zh2bjStJ&CgUV6R3RgvVX_+^v3Nk$~cCr+6|u1dZwuCW^HCqKBS(E^s%PmTJgd=38K zjA$2leP%Kv@Jwd1B=DZhBs;?EG80>br!tdJWdC=bNBFwTp3ndEltlUZ%pOOSk7XwB zqWk~#Gs-Iy>KG3WXoWU#LOZyi13JMCUC<3Z;DKJa02iST`e6VrN$S|(!tyK1OUwTA z(nz>8n%UxJ99w$)sW-%A(py%Z(s{^qtoWXrE`Mt(v7Pk7Ww-)Y;hMCayuL918%#oG AumAu6 diff --git a/nodejs/public/resources/theta-agent/theta-agent-darwin-arm64 b/nodejs/public/resources/theta-agent/theta-agent-darwin-arm64 index 86076fa1a7338a130cf5388945c069e826b5aab4..ca11cedd35646249722758e541bd39a7a11a44f6 100755 GIT binary patch delta 12176 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 delta 12243 zcmbW*Q*b9y+b`_cwylY6+njJ>+g2x;Ol(d(aVDAAwry*oiEZuwe%^Wyp8cJDU3IN{ z)$d;2ebB3`x;iBC8X^RwrUx8@my{Che-8Hl6kgK$Iq*Pm@TYn;$ZjMJOD=9LStVz4 zRZVdt4_^}}OEY#I78ge|Rvt|*4pVCn2?rx-85vUzcNQ~SE-Q0OZYCZTT^C0tb4?p- z4=)yXUKwpMXB!S(2_8!gb!$lvA0F@TW@zDNXy70aAdnzXAkZK%Ag~~CAn+gvAc!DH zAjlvnAgCb!_k45^3=m8ZED&rE91vU(JP>>k0uVwFA`oH_5)e`lG7xeQ3J^*VDiCTA z8W36#x@I%9FS8twY|K32Jd$5P=s_4j7(tjom_b-TSetny+46koELi#2%uG00xj}=a z2`4)%JG-T+DG#eT8>=OU89S$irHQ$@2{%XjM<*L094iMu8y`O>PdIrO8wfiH2M8w! z7YH}V|LyUD@HLZn@oTrj_e?;JgKU0Jh z9K15UH%r6{+^zXbwg@ULcx5wRp~x#agqvUb){qEE^VdNUzz>O&oyFbS!rg?)!qGE* zRaBJazY`QOQI7vkWW+?({yWJP6J`GIWKK+!^}iE1@&ETaV&b9<|Gmcb|Ffn-T$J&@ z*KCT52K;woEb;%|D@{U_GQ3wp6hsU}97F;{5=06_8bk&}7DNt29z+2|5kv_@8AJs{ z6+{h09YmwKSK{mEYm=xZIpqJ(ZITY!CX(qpm26M{Jw%j}$!PkC@%sPI`}@BYOi~mK z927YpBL1iGzcq+n@jrRX9o&EN|E)pcCViS9S|HjWIv~2uCVhI~+m#8?Oi)*NL;w!wn%bv&3~`H8Do-d2^5bB=8X+K=HI@1%VP$F zh=^TnSeF=h=-^KmBhPI#n?mW6!2x_TVI&_X78PZ0G2+!+-|h+L2lnKu9GGj*M=1_+|Nl!9w(h!=unu`;iK^xg=I4SQGIgdlz?i7$?{2f&GvwdXt>`X*!^OblFwL zA-3}J(nd<-NqlEtxG>7rdPV2vr#UU{mHf{kotSI6XAe4a&0NDP@gYI!vGs*@8PF;t zePReW8sQY|&K5L=GQf!YRd5{ibUlJ9opYd{se6PTmS8NtN*WONGyCF&!EWqTMnY4G z?hCk=r~m!Z5j24@tkF}*-+E!l=MOS2)wOi(QZ4gEMl&6XCSH=(h6Zq$M8Z_`TJ25xZFwaMT3gDq(7t9Fn?i}M{DVN1tWDaHkd{wdvO2&R zVn*;AykbCjMpRo_lC!!PK4O0b4_$ix6qNKxcD&}DMN^bvZ_6}hZh$xhxm%?R-nTgn zA7e#Yw2me^HRWuUFq;F!B4yMBm^Hx&ZR*0FroRM1lUK-cvz~B~wnXw-=?=NkfMY3#XbWp| zhUK&&@>5+?vALiFEU9h8M!-sQ<6q9g!Z>a!?@xM!D7Y`2R?~LBZhqTGMo>zzr?2@S zN_Ba-PM*Y2AWC5~=r!mWI+X>5GC6T?j&dvRU*I^)F2aU1nP=!vq;v=utTrsVjobCI z%;WZ?OwLkx&Un(Yy^j1ir@UiZsHd0xjoQu0#-x`vj&&bo9mE}}6bbyhdmpexlP4I+ z2oU;a-|JuNV)sLcw~bf zq4K>7cv^uR82ht9;F=;I^>sYOJIx}Gn**l&=L1_ba+9$n+Xt8nq7K#Qzv?$SJd&8tF*qYL84CrjX4<)GbvWdwBa2vH zpIFf23J+l_apx8{3u?$OB7RbWGuhVAy)Glty_;h~qyDvr6=`a|L6VPCD8)&-rq##p z!FDAd8gavV>9x28<;*WbA9{%V zWc2Ps#D!c}c$$6UPZy4r*PSa5o$)qrZfSJCt!Pd<%!zvdP#z`wC=?H*=L}hWDkwQE zD-;|s*bgeK<8qVBk;OMHW8<%$6C#A`hkb2=a+H{%p)OEE<$i7S(zqLtyVdt33JW!e zRptB|EJ`0qgGMn@(kZF<%l$6Uc<)%pELCq0zG}vt&iZ3%!Y@h-KX-lQVjAKB%+w0w z*LC=xw$^-r?0kJI)i#UTbfX=tPNf#Q;km{X0(Wkgf&^^Xe=L>(>T1%GF>O@iigk(S zyI~sZa90gGJ0^#4uA`~K>j_3LRI3p5<&?eh^qC$El)6+SRVob+p1E9JKy)IWxr!te z^LGs_NWCC9s^We59|gg`1`r;KX_XoZX&g7VQ#*@*c}?UKo@POuadn>Jm*ua4C%ys2 z-vsI2CPwGKDBQM|?`5O-P;uZzV$@exlFVP8kI#oB=c^VBnubz@!AknC$LMp;^7JpA z%V|f$%_bHZI0qr>P(7S#wZQhy@S5QL{m~+!uPs03Ps$FimJjAutD=6v>|fJN@;-#% zt8Ir05cHtNP4eZB@6Vf`_{e>`WzMPV*>+Ced6Zl|GgA2)zcq$>C>w-NulD5~CBu=nkKEfcDbMuM|_W{vik(~K7+IY_q@dutfS?k+hREX^z*A(|oia7Vg73Q=&^VKo7od4^J+^0| z67u`FYf;g&^JwQ)!}!@?Ye@Ygj1fCW#jkCA!8YTzoC+Ubk$xySD)$OWyR60+wm$GP zeZAA@lQNY>8A5E_4MBUzYTbjqpDF}L7NCz;%>zZsx69wq8>6>A)2$WZ09q$MlN%DTS0bqL)MSsI>0qE`MNQ zrW)4x7kd0coX={LG8m9?{-e68<(3 zD&|vjZ6@YNs>EfvK{_HD7}Q{hz1oZ|RJ~M7d)%u0(1GK*0yMrvm1L|KoW$WQ9u%IDg&0 zgh#1SeZ!s{5oJ~yfDMs&RBtwi77Ls3oU%~hBA4Piu z-8eb1LriEb0SP3MYLXV!4~#~Bc z3Eyw;-0oGEc1j41sXAv1hagMtsXLT1uY?g9gU6tgy7)H6i8nn%x&K+A0l+_s^@2z- zhkT(DoU4KYt%lyxzLuslhqY|Ok)lNl+x2vb`*>ovPM=gLWP$ieKTQs431n=E1Kiu!ToE>ntn^p zD=y4Na`Se`?4jgSQn3By`yMEH-Oh#-slAcxV^7ivfnXI2m;v-mNC zy_djRoU4Slgi5~p2)*5W&mwdoIeTG=7s_ucWLlsoJ6&vRg=i=+KXE*n5~5;F(m$(% zME#Fd;9F{$mKiV-a!Js73;)jhOIFf^8UtIRvcW0p%p~|<;QJBmK*T>Ld8lYyMApMT z(I&dt6*Q3sj)sF8LzSF^PB&lbhsdzSEEp=y za|w3cbJSXd?9ySCW=`Rj^qyp~3H4|fx(sgYQo8S))rElwMLzohnUx(3enrR;_v!CW zcDs$=JkPYF+Tp>dLvx&Z^xB4TLZ2A@5;cWlN4j{#<@*&Pa>=Uv)Y-ZzoE=i3?hLwH z+qTDd(V~mv2eNw#g~FIWn>=44^rp(5;P1r^ifzb6Vl4~WrK07X+y+scFlkauD{N!; zbYTpGFi?Tg0Sq4-GQq0>b+V8yc0SWF`R+pM5@>(6F!8>6d(?p$f7Kw@C_z~~pde)} z>+sW9kEf>LjFf58qme(kb znDiuAx*$Yys?vjaA=db9`(b04T!%2KnMWDn>;S;cx`AQ>^6goZq3w4K9#1ZV7qe=F zEm7ncHtJ_{<8ws>k3|uNf;$|Cvw4sHz7ypRV#jquV%8LPZ@`=OeWXyd3IW<05T~Ig z>w#k=LYwt2zJMA;QvGixJuxswwBInNAk3LV_e85eIEVW^jb$@=E8CX2yymOlaN#F2 zwIR?F%t?v|L1^*!N5QaKY0oh0?X!3&YcGm|-+NbOr-RN_KQ~2LOOX~rMv++_+Ui(j zo)W~?aR_?HznLhs=uC`eQZr@h3UpjyS4UYGw!%~KbKeGl(GwNj}#^7@aiWugSqNY1-tKGOD{yfekD6eo70jGpm4nR1E*@mNIXj*c_`C4 zb$hhLMsiK+rI;+(P>L^uDcQOs)i((jpD`W?46Bfr6wq;(RvsDn#3&NG(Z%DU%?tx- zF6&1yNF?t6EXTM^2tAca;l>r&ZO071`RU`qS}#U6H*Nfpv{V>xReB+t*&yp?cDHq% zKoZ}tYDsD8**Jt^RL&_)K$&x%f|lJA9o-uC z?Qv`!Hx~PC|fk=!&0Xgq<&{{SwLx#hf^1NaQY1LCzJ!TPg&como#LQ}L-n zN&0-6*SUCpNiervNvyuQ_=FiI`bk>r1j@iaI*5ofipT-X-N&XY zq8UD_l|~~wfUnNuW;od?wB^}SDqo3xt&JwqYeywy34Qsdvl2L;QG-kkUs(}49kuYi zt$2FpF}o_(aV@>ojQa&$aDLnMMx zAsjBK;}Y<>`(d?AHkrG*KMcX6fbDXKo+TyeSxBj2O};jdeG|Ie$v!8q`KLy^YXGSu zZo19MnhC=g9tNOlqcap)2VL>(@|yGWuQa?sms=2*b#}|{a2q}B?`~m;IU)=Bpf;3~L{hF67GQ*V~rYpA3Xwwf?K9erRrRWGaQiN4o!>a~P z+}`U_(E+1p#ueqG;$^66Qnu!2yKLMPD>ZC zI0p?cktTtEy)hk(zTB|1OyDtU?QAKnLPjqC(_0<1a@8S|Zk6WAd&Hur8_*i=7Y~c8 zDh{|17PBDN#g#lG`E`dhdqQR}#WA*}etbPnVw4Vu?v*nUps{xoa>h?enevBE-b#); zD2R+{Yk4$S3e}}XRk)#_mHqHgALIU)#A_rmSe~xaf2g@!Pg}ICd+UK8x#Derksr@T z#Rj>ZxH8J(L8ahS7gPwPxx=gAHf8toXozqFf?axGho_SIvPXIyBH-645MgDah6U@x zY1Ie#EYF-rLy3=;Gt$%snX4LlX1xEQ?2w&c-MPxOA(JVDIL>Lz?I~wyP9}qBIY>Q~ zX3=Pp7;V5L;$F<6>U>!D4V~`!vq^;Qu!42BV8Yq+ee^(qq1leM0{u){CD@V8CYSSi z;~lm$_8;t^zaY91W~%z(LYyQnGdNr7dhDKpbWPD`6x6RT+b=`rk z915W$r%_A7$M`pXDgw`KMbp>sz9)&o-s&J>l9gh74v~8iyh|bQJN4#D%oBsxoS%0* zE9ZUkkpO35xdD$W55)XCiCl_e3CB!Y^ykZ1SNRa4rRmpv-9Ku7O~7v?cvX|M} zv+k=Zsza`e0T`)>SY~CUI8qogHCiT2kYN=wVJqo zk;%Bd>QkgVtsEXEg;Q&nB}a5VOnozs+*2t2MLYtPz7#_+=!LTc`3Cfu(`3PRFb72;Hb_&Y_xZWJNWpMM))p6l=+eGl5b!5=rmJWR5EEA<;7Gdb zkl2VCkBzve{(EvuRD>@VWu-avm=}`s6)0YH^QlvBkVYFZ=0IN*TjNp{o6L@{D%`Ay z3oa^6a%#_bu^0^AuM;W_X8cf-!qWJ}Z#?_Lt@e1;ShOV4&)gyEJBzJ@*ohRmx)r$0 zN`vU5i;S>C%;S|K!}UWQSo$n0->!r=k2U&GC3E<}2ScCG<248tPwO@$X?nw6^ewkXv;uZz?rH3l z1R8#%9ux=n8^@Lk}RZ0U(vVXJBZdPk$X zigHXEl{W1t8?y$|X!@uoHY29ENSbRKYSU9Hx@KHcr@_YQ;O#;Hy?k97f4k^gKE;no zw3Gq}{{>TZ2!`oqT?ek6^3H=Xo_x-|;Ok$Hi|ao;xKeEVZT?j|`qi&QOQn0Nw2wdO znzr0Exg~fE1Dor+#QOW;Q(_@=Y^*ihzDuI52ALCrc&ut3#Xx)2dY84XW=h`3Eu zdy2IfuBS?*f2od!F=(Q%F)@ZlQ1K(LN?5S83wfg$0DeEnt~;A>`4yed2;&Jr;bur) zwC@e9DITfZ>#p06z+=@E2T}Qbj^2NEb8Yi5KoHWy;DM7@0v#ec{Pj$nV42|siMm_DIqDEI>n$m=U(^E+Ns+dgYKQm8dD7^bMUn zj$z9P7)j`p{kLl2Aw;dv>DZ{a={?oO_{~8yD^d~1({|xa>r-Jxf*6oTlM4nvVN zo!#Y>s&v=x^b&m;^Laht)Zn*pff`M$rkzvW=FAaHN6WftFJgzofbf0is3)Ms;;{9H>T`2`siU-(YY=1Y7B|5)CqwQ(&C&X1eio#r%~M z6}s01isYhN^{sr(QjYAWy4BRioDS_6Fg$x^-d8)ToPiM%h#lvs*9-bu= z6_ofTX;ORF7Lw$BaGR1)YpLuT)3m5rvE3}rEC?5*&$q_MaQ&|@f@0T%!~ycBKtF%4 zKM7tee~#Xuyx2nioo`qmy>4e7F*)jole(*$Al&-w0KCM#q=@O!S9aZaR_xDJD(cJBdG1Ge>qLihT}m_pI@w-CDCz8kwiuQV8vPU)7QZ_EM|&NH zNtbW5gkgl{fZ86!fh6*mx~v*=38aV*BL_(NN%OF%0)NO~LH`idMw@fx zLZ`_?k9J$*s~qS8UL9`ps^C~o$iD~RIS6zy5u@_xE`39HNyn^k6OQ-}S6$^$dOaA6 zh?tr%8iEK_4pwIrH=(ayXNR^`yiET_XO-je+RAS4bsi4Xu^g^P13B#9y3^br-I)cM z&L=Q5L-k@+hL%ZZ{8Arct=m&ua+^siz{(v(1)%i&%%|$3y$du65pW_VrSolecr|N| zkTqN`3lDMQMzcVa9U63!Rh~|9sA8xps++qemh%i7giw}z zvb1Whc`UC4YMH=dAp0_Cu|iS)PnpZ+%HS<5u_}RFMaPS0?gfDGlKrmOB2QQ#h2PQt zWnhi&0G>zDbD3$W&bFqh<^rk>Wt<~vNpgoDCShVIUHVSD25-F#?XOS9E|xR0)u!Wd zk_mj8Iq6rms6Rvv(~fx2d4}T$bJlcl_e!X6A`fjG-4%vkfl%f~80Vxw6=NcJ*9Ccb zX0vqT9`yFaZiF{5d1#c?0bUPX>Vq?B-aTvwxXYuY<0&(w2e&Kcdt}9s*JBU;ozZT| z8_Ww;>|Da?B{<&KhK++F1V&VYgrE>c8b%HC;wkft9)a#zEK70znas zs-UDNzSAof?13`r{FtZE<`Se0Vm8f7H*XmCLQ(bHsQ^mL(b;ztOl7{JVpq&|mY_#DnZMG}fKA^#DH?^PAG9d$an^ymX}E$~ zxa0U@o19NyB?kTSNA8%@bsbp7n+bn~?dY02C8~mfYPpn#dA=3;P-ud&Lz+tBP|tqq z>FQZ0N|>+M{xLhGXht=}6G6n=B`4FQ3)p8iX@;*n|0}Ofd%nI_SovQKYo;oFd)K{P z;ot9DfP0QeUj4`(ET-gElop!usjNJ~tgBC~m^NNUfUywL<~=56eZI->f+}cl1Cy5x zFNNjeYG-^RQ(wW?XVoB*2=7l3SV#Jpwx++3I*)=*3$ZU&tX6!( zK%Xv}!ltbM9+q1EzJsw+JmDdseMT{GQ1q2gA@|iQ7V*w_0MDDPS|ngwGgFPLG9dA+ z-xOEmczJ~e!jKWhK5fXwh)O1eEo--8g>LqX| zcP_T!uIiyyGIxS@)(0oHO(eaftq|J?SdY4UE6onRqbFqE9dG#2tT;gi+s))SkVna+ z5|HO|lPKdaH#zw9+GRPuI@bK_hZ^={oJn)p7+Nltgs>a+Y>GsCE09Xp3Vio=VRIB& zbAhkJ;lw7c&$dFd*B1LWHWxXu;?~JDkRP#~8*$+1r}aUQu zV@}7=azC_g{QMy6OMlpxGT*dRtQpG!^+)M26@!lr39+9mwuxFAjxZ#I$0q7T_tq-< zkW6licSr*heVe~rZ>hx_EOa)pioY!dIwAtWKZ2Idxop%hJIgZ zFKzT!y}k#~@3Zyg2>DD4^P{OgQW~ZPNNM%pL$q7CoS$RogjCSb7F@&vF$NqDkx}O{ zIsDQ@CxJ~Uoazcz+$D~Dnivs1;5KkS1WZb?=<*ZK%Ln2FN#7l5kdVeCSm}K=eP4)@ zUe+?1G6`4v_EWNFu4?ffJftRnod&$UB%IvWX~U5KarsKdLpG|p1a-Z6XxGxi-yW1BhUY0d*yQF+_p>egt@@>i$R zD1&x_TgJ0;Hp46KHq&9wr7s(I1x`(sJj6zVj>Of)OMC4IWSD2mcbv)Dx52%E=lPYM z<9d0lB$ZYfez&L+do6L-AEyhl19_YKl`Y4j#N+ozUX$!DSh}u&9(86}4sXP2ln<8~ zQ_!5(I3@8I(KgnVk+RMX&mU`NO^Bj&TSIuRgJbI*++17SMS-BrfexG$bzbE-#4*jw zF4d{qWZwXRnmqBWfIru~!rM-?#TlRL9F_@h&23lFPB(P*ux-8RWxvt|1tX}siNtpw z7N*bqXlf3a2&mM7yvy9nsprVn6IR{7)Fu-!A$LTr=^+ z%d9)pA-<(BgHPCRn>_F%jPK z9Gw`aYoZBRNtr2Ck7gr7tu#MzA>PN|XunhHuRroNY7*j7BP|ZN=se&UbDc2 z!B&lz9@(MiLIl43S*Vb#7Dyh*^6fJ?tawx+WGtBuEqBn|zo}=foRQl>5ZOW>hvhs! z9|EZfXO9AU>=z%oFYCWHcfS2r&|ZTuDP6INo1*V2cPgm zDQ_W3tde>x!^+19Qt!qoX4ZMI-Wk!y+cG9V`bgOUYYt-{%h%O1mtQl>kklQm!2R3t z?im(NO{s4iVCykzOmAm+riCqAwIoZWYezoDp!7>v)Z9I0kWgkGzfGVGZ%1G+H!qMB z5Ur`@5u>^zO(+Jie)F?H=oPqVEEiW}#95k1C;#SHkXQzFx2LXA z^07}5eXeb8=K7HvD=dKzCEA#M2Y*6I3#&Ny@=T3usWI_n<}<-G5zvpLjGz=-S#Z%bHeckGWx zZq^ef)p~$!^R1v)jt`@OQXsD)n*iJ;(_*!G%7pcYOw>GOBczb-$lbboL3BJ;S)x{b z_J)7|$hs11somnFM%uUQ^a37zQL->^ozG)F8H!bvr|U-HC0SoT@hoHLFd!y*#jWhX zYBU{!SAU1hF`uLAG~~9X#rM+i^#PXzJqjCPIfpNA0#X&`3HqU-8G=tg2=V^_xnw4v diff --git a/nodejs/public/resources/theta-agent/theta-agent-linux-amd64 b/nodejs/public/resources/theta-agent/theta-agent-linux-amd64 index 979edd845ebf23d1c9f0a2aea35678709796dae7..ec46c76f8f12d44119c9c641a0d756a78000f535 100755 GIT binary patch delta 1019 zcmbu+OH30{6b9fK${Q4_l!u5dRB)qWFpn2@AY4_^p^#D7)KRd7x49TjvF2DT`rVDjnr@%ZUZHVT3=KO+UHVQ(qwRvLk6|43j+@c6P&AE% z7?40L#6dhHKq4eTGNeE%?18&mD4)@ zO2jP740wA7{mEN88+9vNF+kj~rdu*U{Sam&=C4yJisjgyZLTj!A9=~V(EQ|Suz(e8 z!u%xrKo-|9N)Y#W!wjp8dpSlB9=;WknjRqtIVN`t2;w{PGV(W!+b$8r{bquQ;;iQU zt-mlU5*BAzIZ3YaA7Y)J|p$Xj3EUd6C<}dv9C3E{@g{Lqk5-%vW%<+={ z*>mjnp808|r&xHS^sG-v72`XbCB)j!FV1(3YD LRpE10+w$fg5KDSv delta 1089 zcmbu-NlX(_7zgk-l%*^RRaOB3D_DfmnYOePm(q4dD61@GtDr*{fl850C}=_?SPv!| ziIxNiBzlpPz+t!;yqI|5;0cXhdf-4j=|zZD{Dbi@Tz$!JzBm8(y_v&%v%yfodwZ6tkCgK`z_p*%+FKcccEiP^w7^xWaxJ)X|Ky`nw&dd0m9$Wo& zo6lN4(5@Qdb$Y9#S+8qx@l~dl5>HRVEtRs*&}Xe|@~Z2`Jw9D`vv;V(Hnkt`-;bvt z3?vW^5fBMcAcbg%fmn!xV{jY}_9lP~PQXb>gd|9Y6i9_MI0fmD0hw?bvLG9B;0(y& zEaXBSoC5{q!+9uxLQp~xsDK6r)Sv+^6bt+Dy1X|MrbzEsZ0g{kmVg0D;R0NQOK@3G zY#M(TDO|LHaqwDNhliWjs%f>_-PNV1oeb^PIMiB~n|C^SohDElGNwyuO(|n2)#?KS zA!AbV@Zg9mW>0Nl9;9XulKbWaQ}V~}M3@g5zdVec+z3BB&9Y_L3{PeHm!`|W1ZJ=Z zOVjL=q==z0LRJICbF4gK$43Ys=)ja&8YM)Jl}CAm{K9+(^W1SlI{OHD+(yVg#=Eq? zRe^0cgq1lqi=wsyALiMc)Pi7GVEdz}E#cKm_JthpHSby47pGOLhPz$Eywc^p6PPk_ zDsi%I;xyvqn~AFzClzL{NSxd?bF?^FH6Q)XS2I^2?#Zwm?Xg+7LUE7Z!rc=mG3?QQ zm9bpTOb?an=UEP}Ksi)^6)K?$s-XsIp$@J>Jv2ZgG=UA8p#@r@P2kyfO!fD(Z-f zCjJ1YfsJwJ!bpP2#2At$F4-G{iGjFv;U6&dEoMU8dXgvSo%4M&i#hq{zsmBkt);4` z`;DYj(>pq0vtCPVSQN$r3#NE9ytv9*mS#dRKeHH&r{-cSFN$@!VjTr#pn-Cz zfJ&$WEmT7doPb(538$d+?rG3LJ)D6CI1A^X5t^VGTA&rq!v$!AcF@B`=l}y;g3Hhe zSD*{7!ZqjyBlJKon7|CQQmkWqpEOLbIp^PFfCUR!!3K8VzyW=Vf3N=~*Tvab#_r(k ztkvPL#FMi$&9XBNHepUCIGRl)nK;eOSQCu=TjOli(p;aF?qeB6U+(0d*64T3k2X}; zmk*Q1ww$!#1Q)o$qevUPrJiA3TmJU-hdpm(Z=w4esN4+$|W@`KDWVqGp5V z_&awzLPsv^5x@%ra2*C=2yVbl@WC+nApj#V3S$t25R5|@Zo!0-^+a+7x$v!@{~+o$ z|G7gMJ2Wd>8gX`A_Z2_BRBGpCog_B4988TKjiv9}fBL~x&MS!!g&5pcywYSu`U7rE BQu6=+ delta 1025 zcmbW#%}>){90%~H3}oOGr|5W5HbD_#u(m7R2775Ij+en;8&FHFB#<=5kQlv~@F!?A#Je%^Y~~k;hvLmA`SjO*pWo9S`pZ52S(JkfBUP5~ zw3EG+-!xO!B1+k03=d85?z!M-G>Y)KHz(r_; zOV9+Dp&44h4z17z4xoY23KeYcI|I|^%7%AXZ~_PIz{6hd1`l*-;hoMG?k1V`Fv$c* z^SGoE980roYG%eo&oXq%nPfRRm6)AP@J{u&!CPyjogIv)gL7%NVz2v2`StDM{XaxL ztGg+CT~=B1f)D%<(3CZSt1M|=Cgg_t_Lb03l3yXDO5MdRE8QpL2fS${WD7Nqt}obL zy+z2z7$F6$p_+sG4SSXqjaP*_idt7ka>5)ntZnCn$x>=vtIi8j1D?|#h40HIj&&@} z%S(w?c_E`tctwXkdFd6M`s9;WjOr7sPi)gCai2)*ljpv}@A=>pTl77@{^_y%MZ3P| znqPdZPj>x>zhw!C^;t0>LJ+P%7hHu9bVCpHLLY>o9|j--gD?b9h(R2NVMG%HqpRRr)MY7b`rXu^f^3|xTwyA7TkzfqQVL}TklcUNX DfoWk@ diff --git a/nodejs/public/resources/theta-agent/theta-agent-linux-armv7 b/nodejs/public/resources/theta-agent/theta-agent-linux-armv7 index b5b338eeb00511984c95707be5bb08185f4cd255..b72de73d0ed2442c69bd17f794c0fe9a7bf9ca47 100755 GIT binary patch delta 925 zcmbW!O-vI(7zW^33I)-MKd1-_Ehr$gw7W~&T|_P28E7d|Ru+L`LW%{U%3mn77fk?7 zqbCn0%LzSbh%qrS5H}D{MiXN+@x;}mCle1|OibzvX65cAPv)KPo0-GR%Hq$w6?pix zfL7NM`s#U<;~uU5;?`}w>YQszi1b9Rrxu1aNpfkUQ+@8?4uK6cC&ifD)*ch1<31rY z05IXQ4M5s9Y9<8pt8dpfKR`@Iu0@tL04)GePU6pnW-=Ss4<5)Sgf0{Kt? zRw#rb*ayY19}a*G4#LjaLvR?5z)>iLV{jZ!KpC8ba;Sh)a2hJ13hdy3YN&xTa29Hz z4(j0?G(aOb!39m=1`qHcfC$at1t0j0T#4k4S%fA}mQP9`LkpaTR=5Bc4L*6P{&l_N z69vC4`9-fRH;;^s^1LXK*+ZRyM4V6Ouuzw2lyp zxhzdcE84%4ggodcB!|Ju|IR9U%f_=+TE%gd`uoT92DfFnp3tE}uF|-_MwJ?@KYygN zX{&2)ej+uhcLtf;%=dy!H1oS4Q_bv9Sd*ED6y`CruI%mKR#>B1x6!?N7iCVfewVV_ zX11|^_hiG2K|6Fn2*S__5$J-;&<#=O0Tr%5FKEyQSE1hsvjJmE|B)96Z45ds|M_DE oe$1gdQh4PZcGga`H^sX$oJu~~i*{wQo7y16V940iu6=#+2kO&Hi~s-t delta 992 zcmbW!%TE(g6bA4+lt+09Dx!i)0R@DXd9<_?MR9s>p;UpE7HDzPDJ`Us0zz9{r~wy^ zh6TH_LKhlhbfXwY2n%B3Mlo^4O5;CaOh`=X2d)NpPV$?R`Odj_7H4(wXU;0DJj+|I zYaq+7U-Wa_w~c*nqjb>f?4FwRCud@l39sZ%MC0*03O_UHpHbLgZ-Au&kthu=_@^iz z_J+NozQkvL7vP4lic>%g?2%=XX)r*%9fyM&qkPii* zhe9ZVVkm)9I0gr2%i%bjfRj)Gr=Su}!x=aWRZtD*;5=M_8ZbaD)ImL5giFu>jnD*_ zp&44h2qtI+9t03U0y9{k4Xj{Ovt{jkP$#z9(qgO~?9c&M;3{;&HC2pVZ+h1h5$s|( zWD%@*MMD-zkff-h*n}}rh?>KaB@zvdjfJe{%%Y*IS}&M8M0OMIlY|tfGRB({WGmxYqxIr`f{+!oDjEqHLX}g5 z+(-L&jF88}gk(o(??=PR|Y^uZ} z@$(ar`H(3RPiCmhcx`f5W@c^jMrIyuQs`i<+N9IL1Z^_sIC{@32W!#JeE(;rk}{)q zriZe7+T=4m@~|FoQLch^oMrRo4x=9VN~7p-Tv|N59l3X761SM diff --git a/nodejs/public/resources/theta-agent/theta-agent-tray-linux-amd64 b/nodejs/public/resources/theta-agent/theta-agent-tray-linux-amd64 index 3d0f751f4fa50a80f3f1ab725de8662fcb576854..14e8cb0e38fcaa9f98fc880de4907bcb8344542d 100755 GIT binary patch delta 528 zcmb`>IZwi10EhA5fwy>Hcps=}p?yo?eNh)1&?t$<3w4n~DVA^vtqE?#fe+vSlhNJ5 zjgP|SY*-z1!@u9b;Ws|XQ+@riRN?*2cKUG6vKm#wx4Uxj(v!(Nr1Dqppv=k2aWZj7 z=}CZHBxAwsaGUEMt!2hm?x^m1wj-QCaS!qQbANT5*4T-siZq<>M6DBK2~rUdOE&C zc;e-F%JJ+>pngg4i=^E6alk69)fzwRM;}(MVCqJ^((&zBsAzSk{V8X$mP>UfY``XP n-~u=BAOHaoJRpG=d_aNKN_D?}{h#9%jBk`9WUCe-+w}PtT+zy! delta 525 zcmb`>xlh7i00r=P3m)~p?*q@$kFT{9)EJ`?37BF4uSHw>H5RZM1&nUQp??BQMt27{ z{uDN6X$(&``$x-&vqEw7L)i|fd)j>Tp zKqE9kGqgY}xWEl<&<-8Y34hxz=!PEXg+Azq0T_fK7={rTg)tb137CW_n1&gcg*lk7 z)Hu(}XM~Y}FQrLDMwpsJ38kj4`-$NrrkJ7q>xylnDDy<& zNgzSQpf3=V{La^p2Nqzl^7XT%ezZ$e$X&9W#xuK6+Nv&ZIK}ERtiUSp-~|B)_<({4 g60Cs?eo!D#DOQ8l*?+z+;q{7hLDwr6bVGUm1te_C3;+NC diff --git a/nodejs/public/resources/theta-agent/theta-agent-tray-linux-arm64 b/nodejs/public/resources/theta-agent/theta-agent-tray-linux-arm64 index 406074a2827abe93fb60d71ce8a78af01690aa3e..4d9eeec832e219ecd317b6aaad37bd08316c1f10 100755 GIT binary patch delta 497 zcmbWxyH3Jj0L5`ZMev6A8=~L^0YzxP(tZUd>m?c_5fOt+<&KzWRlqPBhdzJ!$R zxwtNrWGNoq3YR0S_v}F7ONa4|gpiM?V&!P`G{<>2t9w-{`Hr|tshCd43aRj(+m=~v znRTFtcIbdkFhCa=!35pV1HI4({qXx8fI%37VHkl?7=v+`fJvAF3rvF*W?&X delta 504 zcmbWxyH3IY00mG%R8SP(sEC3OUWzSkDbK|Rhzf}fk%$WxXdxm92_mo=hkgQlgo$o- zbmbd#aBz~< zc<(9~<-+WK{H}RM9H;8%A%U24-On=0Oh&un0?FfMqbk3ao+&%&-RQ zumPKLUuSuGvk9cnmEjqZMTtB^krXAS(;hPGB1JkwF@nfvvph?;6v}`>P11gs&(C6mEl>r(FDrt#w4hQ6=H?VU~K@ut*5G3W#nn4t^0p$9B*9D1P-PQXd% z2P+J~AlQHe3hY3G1Dr4M$ABN#PFp_zlZSGVV76@Woq_){^RdJCZSaA}uZE2n$zJjZVAT}_U(OMIqY_mG` zJH(v@>E$+iQ=za(=8x=VZ=GdP-1)(_OW(e;;(~ghbbIbrTC8R{o18yoIaHHf~?zQoqbv{m_^hZ1optJtljjMDpu(}}y< rFStYP$`H3nU*%s&d#Rn#ie5|B3KkG z3WE|nmw9hiAb9G|>P~|Gjvyqci@*!}Dg_-c`@!e;{P^QD8y@!clhJ4}Gmzqj2f2jH(KEjwc~gEeH8AU^*o2q!2}8ba zpKEm1?;zuGxifHQWIQMY`PiT|HXBGVO{I-{%MYyPhdDz&XV5_b=%EmbU_UoPF_b_l zltDQhfunE?D!>HC;RKw7N;m~oPz`3Nfm*18dN>UY&A>7C1N$4mD?RK6|65?asVubKeDUfg3KuCAbV%;HqlcyjBrvlPMQ1i5%s? z6%jdxVwgxMs7fyxQ~XMakBuLSp}{<}GU; z@Iohasg^aqtf9!cNDvu?-sYQ&*0TiBr%d2k`6NRSyWq4E#0S)M{Q9aq-{z|f-|)0% z)z{nnyiO;ome2e~Yk`h~YKvRKYBWO_zUiyd+@qb$V)Qk#5?39L5RjS21A z#14iNjx93Bjgq6H5s9waHFGpj!SN;?Fo@R8FSJMLD!E zC&lEnJvygYOmtn|lN6vEdY~74&HVV6viL`<1hg?;g;%2P6o}J zk0)*V|J(ruJ780qO?17w^>lLjo~iBb!7>nk>#9Ne}kmF0u{*Iu!v=JKL(3T{IX Nra^>|DjKDi?%x?wQu_b^ diff --git a/nodejs/public/resources/theta-agent/theta-agent-windows-arm64.exe b/nodejs/public/resources/theta-agent/theta-agent-windows-arm64.exe index 940db75d923663566d174ac31a3307a7d4de3ee7..3993c1a08900458b0235268a88c10970347fe3c4 100755 GIT binary patch delta 1104 zcmb`^NlX)A6bJB`DO9?kpaMz-%c7NK+RhB!SUbZiwWUZGKoZi8LfI-^z!(gPhMrtv zN#^R&D+ieqhL{i!p5RWxk(fYC&zpDnGH>nGDYdqCO1*ncolR`M zZ6MW$$IS$hY$S-2{1>u`^yE)S16iFfrwn9$zLPRwPW+*#^%}#Sw&NN+Rx!z9YOS? z>aqmUB_1dEib5aax}=)rQzW@9tjrB1HI4({V)IzVGvyK2;AU-A@IU5JcbeQfgb`= zM{!WWZ+U|{#s6HZh_%vEek4f0C|$v#&W~IPac?hJQMr@w5G30ApG6m+<+_u|QTss{ Pg)tb1Cla+kac24rZev-{ delta 1183 zcmb``OH30{6b9fs15{{>g33b>EmWyMAJYdd<=Gi&ZK<>r3Z;mteG9Evq*OwJ!AR1T zk64n~x?*n(j0cDa&O#MbLk-lzIjDnrI1deQ0WN|J8lef~a0xC$GbrE+v_LDgff7`p1`RNv z1)UHU=>wBRTD2*=71DzN+QA6nC`+(&6m=jhCE2)wKFIKgt8CrID%+Ql8g!cU?Pxlviq2$s ztC-UiCW~TDUzofSb8UsmS23q9Oll<@Q<%6U$LC}v$LGBMqvyMXQx?vVOSz@OWKDYf ztWQ#|Axo8Wa25K&3O2X~c5uJ|IN>@Bf(zU*1RfZM5%9t&j0se^@8{qAlp8KzebN8C zB|L74O2~P9st1*u`0n|2R4x3+ZC_0tNw^4wSoWjz_v@od5?Ol32jk#}3AiE9JClc+ EU&l~%R{#J2