From bf18eb4168e27bb0591114591ae282789d93e100 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Wed, 24 Jul 2024 20:57:27 -0500 Subject: [PATCH] load other apps --- apps/calendar/manifest.yml | 6 ++++ bun.lockb | Bin 0 -> 113900 bytes package.json | 8 +++++ packages/panorama-daemon/bun.lockb | Bin 109388 -> 112900 bytes packages/panorama-daemon/package.json | 6 +++- packages/panorama-daemon/src/apps/index.ts | 35 ++++++++++++++++----- 6 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 apps/calendar/manifest.yml create mode 100644 bun.lockb create mode 100644 package.json diff --git a/apps/calendar/manifest.yml b/apps/calendar/manifest.yml new file mode 100644 index 0000000..9bfad4a --- /dev/null +++ b/apps/calendar/manifest.yml @@ -0,0 +1,6 @@ +name: panorama/calendar + +depends: +- name: panorama + +# code: dist/index.js \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..4a14181f3b87587511c87cb8cf74bf3638a87a55 GIT binary patch literal 113900 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 z ze$M;q$gk3=cTI`1cgdb?D~xcwukpO6b>4^EG!|ND=I@)+7S^y)_O3(MYG6=^m4;_pAa!Sjj?B&>e1r*e(N z?X~kZU2p%OaZ`DS6eJSwwb&uPoz&5z->G|`e9>7CYJ#>+*hYQ{;iwh0x2>-i<{X)3 znQ3v!6sPZ7Jg;O{vg>9Yt5z+N*)y|PgG}1=i(B>`9!V$qtKGc#V`kEl?CHB_3AG%V z>nXk~?DUowP8sZeQcgsk^Mjf$Q@j$xaJ=vEyiYq7^&Tu>S9nsiX=Re~^C7X(749px zH1Z`H`Pn8(S*z%+S@>SfF#5-=ka>;I3k-+OpNubm^XQU>#GDg(SHvD2#qqw!^Xi8Y zcWYfuB%9s-(8%vw&(m{x$l{_7-zwJ5k&~uz#Uln9gu|3B7*$vJS?;*lL4JQ>)-AiH zYwvPBxD38@M&qxKKj3+@7rfNpd&j3srR7G6kfN@}aB5`Ky7QJaLC5au`hNT52(D(q z74u|RmPKs+vPF;G_}w|8)u+&rp0D&559(?Rhj99S#Pf=A446vG9S#tGnUlNwxuvZ| z;m$|F>-54>u5G;DmItfuW^O;LxoGI9qQ}CJ^L_lo3@yjjco50f#dyz z=Z&s5n%&{9<$b+&i>vF3(xw}i*Y5SHeLkz`yv{}eZJVB-*LxfT?B9oo`C1+`;N`dI zzw$&%nOa)|7 zqoNzaucwxU%FotF9MGL3Q5#VcGRo(9ZSzZ;)XpZ8hbQoU_65(og3YKu`Mbg8{P$OR zq*YfRI~#iZMtjAnj~PN7;a7OPw0Zb1OmmObGC!Xb+~070cCwBVA?CG^&~~ejFJG@- z(21Y_cH?=S1p@|V9o!)HTK3C4ySEF6`saaLf3dh@v=anz^dA8SI zv$20ee*lg3(e0~y`Rw=gTuk3{BkM#6*VjCSuOF)qRy}{$AluKz&(jbWZeif|I8{DB z`H^1bRNH-eINq;#-mj{e_l{R-sYIo_IoRp4_MF+4b5((3XPD8{y9V{O@fP9veP8oG zJX~dNZtOE4G$&v7by4q@;LMv>_T}rwhaC&X@%G_))AX)-MOj^b)4ka$SHJ#zOXZI5 zJkdw9v+GS}&tG=lNUQ6;uA$?)_I8&McaHhi$}FM5aA@9iFVE5+qqS^hGTsv%R(``Qs?0=kfL-v9u$Aul%%_}&U zDqD6d9xU)QJDp}|coE0@4bMCBcygFOZ;z(3*mSN@VqRJE>FVyZ`j0)N^j~I zTr(Ja()_J=&9es?8=Ti^9E~{2__xtpBdBBX3`xn`uWS-EnOe<)mZluV$^*u?RC&ybZuF|9?rCZ8;R{X z(vJgpo*xzr+$=UHaka@*;}2)>adHUHD&l81%RzDV30c=Qg{&8S4TGi3&Z^R$9^N;7Nel0KjxWOk#S)(r zsAiwz!;Nvg-|@VSLe~9~v87JxlA@bLQZ4LUinpcj*z};!cb9(6tIMnI-EO50c8khf z%2{zDef|0+z4}fox?+0x2`rxqUzsfuR>kp-;CVm!)m4SQ-`Z^Q+EL~9O78?+)sYH8 z&B`;=uG{3+Y&*yOt%daN?Y##_TW@hlQMgZzo?VwOTB;MhQt&IKTD9luN*wPGJnzcW zn-dOkSuL;{9Q3p<9Lo1ReeC>_?iI%8&&9NJrK~+a?Y70j`=LhCN@4-W7VP!9a%!*h zXa~VkKjXNcU)}nt`0-*C&r2R%@${nCiDds3r$S;`{+0OD>G0gh-k6D`gT5eD0OOx_1&mfYZJd9&kL$v!gQ_i8R`V^Aox?h0naZ-dHu|&$U5MlCBZ*NJ zWqXm&EJZJy%1_)|`r7dEj}Pj3wV^nD(Ohk8V}Enld||uD@Nkj*rzHnEJJeky3Rso7 z3~r06b|-wZm=)ujR5U-jW#-anH;=VhWxh*D+;gQhBz)DIEFUGubH^R<-)BJg{>C=; zSdq($=gwX<%d9;;r`TECM);{wT?toTzeQ+hm>iqPu92sQKiZ$G{&MllTfUi!Z`n^3 z@Ls?EaauV%@#7OY`Yjx%FB_hBd-fJBt6AH{-}!WFQ3~whQ!+Os6~=VBx~{);Bug_l zGPvl4=!zSv=?5NV&Di>=^Zm4U-4;&sX{vK5A1mawNH=l3?0DXb)0L$cQP^sRr*}rX z>@yhjotatj;qbIt)82WfDsSzf$mL9XGW77c^-;wk_Td55bG5a})2O`K&#!jy6@ewep*?cKx!$8h?hHEv@Y`=<1M8rzfki%;n;81&e7Q%Zqb#-_is zBBgKt>(#N}FW*|8n59^4sPT85?Y#Q1v=O>2uv#EGqr>iVp z^2v55H;;N-&-8rpY1`@fkxNX1`JA52W{r9_E9n~d@oOq<11DZD|Mcm_Jda@i-otH6 zY**MHR@}++)1V%4ja?t3XOd$Z`zIF98gBNkpsC$DMve5{^2u{z#QVx23G# zTgmv|i6^`A+n=qKS*BxJgtG$=o|oTfw@MAw|FTgK@BO<0pQ2K0;)hY)XHVo`{&LizGwS`cgJu=yfjLZC~?hN$Z7q(Q~BU6=?kNz&w@hdaJ;;D-i{B; zM{Q@bq&txH9bPVV-sWRbYi+kuPb!Ga2t`>)=a+?7Lo4sxMxP&lEVcBtu3!YBL}p^ zl_D-35PwX?Wfa6X)J@{vG*7Q|2$$LH_qwp~8%J5>(EO#jScGobl}CoRwHXr;Nh%)WG6%cu9)Wd$|{{J`<@ z<9UM?S*V8uX0g7baINLjso!>s!}NYa?kGX~jLhaBNdt|=TpLUD!?%-cN4XAmOn3Js zjaL24>*8gjU$WbCOErHsju*WPZERz&IiKJ9;sZgtRB+IPhl6-T?>qPCA z)%1$C<(yPon{mC;H{q3#rXcOLr+CPE>3}u7k4>K~clw%1!>?;YYp}*P_Q*_y6Y-r3 zE;h`PX!n?7F|VO%^-bPyZCZBp1?r(K)vZ$2_17qycAT|cy?*7fr6K8DEaoGZcadK- zs+$>`q%|hs^hI;3v5ox>iT9n_n(D$+pYCtt2obw{yL#3u$M|oGP+k+MNG{1*E=-|omb-xe<&smgE}h&vJ=~o2%4ZoI zuP~l>!P*0h-<+i{<<7M9JCZWjCQR7IP5slY#kGcQ{oCkS+Ua>xuh$-1Q#W7vM&yZ2 zfgHBVQNfoFOAWM@t(xKTJ_z40X5e{8Plc16_w!Tw{L8CaXI;N?+sAkLo%~h1zxyq= z+d`kmccJvwTDzxGvp29G+MQa{pmFoU!{pZIBYhE$QD*Zt)&IolD}v{}=GP#%yqJ%5 zA7@cO$NDcnnpJf#ty@p5)?X$gl*ztpOV{o>2W|)2SN6Xj$zMO`aPN_#eJ|A`c5FT& z5h0WR`N=FCFZwRV*v7u)_JZNLvU@sx-BO?P^9?RBRmpWLHomXsm~~Gi#v_qrEhMnp zN7E)}M$_%~eLX5d2R+ns<29114|2LK)!DDG7{@yk&l^1ZSxHN_UsirJAD4>M+UZw+ zZu>c{a7~>w^`vt&=h{c_zfyDp1QuFmwAu~Xi^ZC5uAZ~1xwOReiMoP3wNnAb#xZ{o z!}BU+#Vz`=ioafok2{)sl~IRc&7(a8g;a;o3XQU%BN5W~Hs9*!rqXTuB6e>~iYX}& zt8yl~jF{NoayaTPX7U{WTpHPAY-88Icq8=Ed38@weV0!G;(`RX__=P55qp+D%ix+VNlxwRnMP+$7uqY?9Z-)Ochg>b=2)fomK{A$hw;`9~A^C}+RFS7s2)%~+7 zI2PS5*?cNnHX!$qd|+s4m-#>%Z{P+q^N2*HONXk9BoiM6yh!nN_nESPMF%J< zX~qV5Sh2~@-|_OzbdIwtSLN?|TSRf{FC>(UE`E9<>xk)_TVWN!Jdcxn7UFp4;Cb_^ zE8jFx91Q($2PiCIy?w}{*eb8dPy! zMT5;Co@2Y;W(9maLpB-P*gM{r7@pW}cG%BN^izZ0JMYr-CvIo%UFz}tahptXR}rr= zf3eg``F6+E>Z6ByuIZm`Sa$Lqfi3Jr|H9ZKb)wI{H4 zmPKBiln*RF$4-ku_D$a(Rb{yD4GvGEpQ?PxDf)g|zyk3% z-+m5eKh;W!TV$8gv}knOvo^+vm za&pQ}wnt{YsA^hyw|SmT<*A4wfhjrMyInM=L|t3Hx1mJqWZZ%BrE`bUOv|!&)b+<7 zzxy(DGUTf-0tyZqK?6JzxoPSZte`UtAdpl+hYjdTjS)Ci$ zee$u%@@=CBINNT|;k|s;eg_Y~NNuTWGm|$Ac<1AJW!paYdwk&d@Umu2(zAFd{H(`fGL<@-zr8ujCCC!p zXR5TdU3R{_M5K3cZfnX5{z8nGz=`aD?zN9??3P_cugY!~T#FICd|YuM@Arp|VZ$1d z+G>I;?w;v-8o;($)Boi+$EI>SlK{Jz&3Y-cQyp*RZ_2*7as;l@e|Dp53i!_%286PB z-jUwGZ{3<{^f~hB_6g_azG_bWxa;V3XCc})`^W85_IKsv*cyM%OZQrMli;OkF(}OI zRZwd5ksP7X+_1nv#yOM8i|inW=anwMy3`}`@sp@k^GBjTt+2m)YlY#e$KI}A{WTY7 z6gFHmIP{f&W%~1ob5pE#UbHiuG2|cRDrh_Zm5hC+}Lk3ho!*&f1-^4q`s3}|GouKo7)Q# z2wdP#uCSlT$N&A3CK>*d7C`Oh?c+=)x(52ni(j$kT`J8OH~%@;|JgH;&NQ;uHZqk!5L+-A@Bh!X#`vY9HfmI0 zw9UUio1C}|Zy#SelFlO%2s{(aCy_2cr4nNqOwb?0;W9 zCN-Y4z@!BxEih?;NefI`;D5gb(7eQv;^Rez{dWt-y`KNuYlWV3pnKV9|DW9c+qdKY z+Zq0o+D>v!T42%wlNOk?z@!BxEih?;NefI`VA2AU7MQfaqy;7|Flm8F3rt#I(gKqf zn6$v81tu*pX@N-#Oj=;l0+SY)w7{eVCM_^&fk_KYT42%wlNOk?z@!BxEih?;NefI` zVA2AU7MQfaqy;7|Flm8F3rt#I(gKqfn6$v81tu-<|CR+2}HI+;@kW^EVq)~#%J}!!q8j>VWimSJe3%nxkuWj@vV?zn( zz0Qad-YJG{W1rFYP|5v*5Pj!!88Z#N8yOvP0G2b4(R+z)_q3wCLI4kD8hXbnN`rR;641*bQ616y zQIU;>0j2=7p?8p?G*o|0lmRyMo=-Ad_KucQ)8yhh0mv$Y3j^0N%)+^Ow(YdNx|n0%rsPQRK`5O*gLUxAPw0?8i4AH zbk}9(oe#(50Hi15Jkj<63#bO%10WlreunxL@+Z_sP@h130Qo%fapcp;H&7d+zI+mp2si~e z4M+kc1I_@>0(=0z06#z(;3l9PPywg}Q~_=QZUe{w6boDdZU72E8-Uts5dgIhY7b;< zWLsoQWIJRlWE*4)W55c)N`NWA46q7d4nRJMd~g@&9s!61p!k8}1?q38f1&<_`VZ@D9ss>_{XBpMpac8?==T)X04xA5aIOdJJptYTX8;M{ z0I&ya0ayd90G0sMCs52mP09}7089Z)1#kkm0Nel`051UjPQf$)Kj1x-^%3w1fZ`E~ zKhc1Ffc=02fP;V-KrG-8APf)=2myow+yE4SI{?L-6@ZlhQ-B#@6+jiB22clR05kzw z0Byhp&?6m?0muY|00IC(fE|FffUSV_0QA0Z)VEPzM*UO^APJBHEC9#?_`Tj0W1aV z1OxyA0YLy1M>Yc116Bjf0r~&~z#@Py;0oxG4G0D71cU*?0l|P*AeVtXialsd8ivm! zfFA$?e6ECDHJ}Di2dD?2SaSnV3P3Ri#gqa-HXsL(0$2vv0oV+%1=s^@0BZmifW?3u z;Ew|A0~`QE0`>q}K=vBY1!x1D2c!YW04u;jI42Hp81M!@zXh}dE&$R2%OU+bzzbjt zumOC4^eBKQzyyHOP&^g{T!YUYfTw^az!AW9fH%Mounu4i7y_X2_yz1o0sR1!=N+IN za0_q;a2b#XxCF=mYyxZn*a5^L|7<1)%G(II4k!X#1vmp70b2p69353S88&AWXkh!N z*trl+LuVqtlmtisP?@NIB0ofSKsuHI!~tso8~}Cz8-Nvn+6T20>Px6^Ee0Sz(gC18 zG#elRK>23^L;)gzDFEhF>)+bV03HDVKY$y+1>gis1@HlQ0X%?d03=6gf&d}h=jm`P z444HF1IPo2fQ0~Az+Au_fD}LyumCV0Fb^ONkO81PasUN@B0w3S1W*T{a#aDSY!v`1 zUkiX_C|!-Y*Mz+WU=aY>as^;1UWiJjl0iZsD`U>(B)YsQDk2k^|#VHgEP+vg2s4t-N&^hQciFu6D&}RfU zfGYs?2{OP1FeXF!-2ol|Z-5s7rJ=f_I-)v61EK(-08~$u7u97qAQBJ(K=lX%pnB{C z&;Y0|V|fr)2w(>Q`BDG?#fEKwKmhWKAOJcin2B)M?*gFmkZtz>_5lt6_5)D*m|jTd zSOBUk(kT&e5^xl71dsqY20&#W2gCzT0L}pT0Lg$Pz-a*Tl~Vwe4;`lfN&v-xYk+*f zML-dt5Re7949EtY2b=?l0WJa1c}SiH$N;1RE&z}oNFP++Ox$O4I9?4v=OI}xbDsnI zJit{z0RZW61%T{Q3b+lp3AhC)2UG!28I^zv0IKU)z2C#}TfiH@Yd{A;2Y_tU4rl|s z0=xvY0-6C&0gnI=0gZqLKt13-pbk(CxC^KS+ym4A9srsED9>ZS6Tk}q((5?@<$DHb z0U&-O)93#G7Ko0=vbO$hng)zSxfa9;s z^lz|7T>XGPfD2#{@Dnf!7zPY6k4Iqt1Az4Z4nUt-ffJpFj?uYjuwegN8k)DT0MNPU z9E7oaNQUNl(*d&pXl{q*cxbMN=6q=GhvtA|=b-Tt&Hd0hB7m6yG|v!Venvb(05lGx zISBfU=22tmh!Y(n9<)b5+-MA)3z!2KJ6{ft(VT1n0L^L8oJ<-p4}j)uXiP-oAY z?D=7TfmkXe(f3|La*8OV%!CvJ*mJ`^Std+TVK>=Pg~eV|NkvJ8F(RP6DW^Qs{VEq^ z%dyz2D(NVxGvX)8b8m|Lja4e)eelDXBs!T!XGC38&d&{jD~!aa_u&JqIz9s~c z)QAi7%Jw)PKx{~)K?rB+c9-545Tedj8g_i&~uVG_`Q5xoR}?aX)g&+AM!9|8%a zBMHsVlR_t}6VAqzFQXIVV?ly6(1yqy=u7sYdJ&F)^)@mpjJ}TLQCCt^!G7NW{f@-w z>ie%QC(&PmL=~z7T95tegvK!MjSa{0>_MWYq@kn`HPv=w?~8XWd7CjuBSGriSt~L-X^2#BoL4b*|&z(?OyRx zb<%6@6>EIhcZ?S#C|zk0!I|vn?+R=&5d@94S@&*ZZ0gW(1ZN*Q*?Sv|KY6x?ckX!f z8RcQ9F!qZJE*lPhp0#O>F_M64N~$Vj?|m-&4nG`Pnw$j^qycD+Mi+ehfCRMwqMX zM0KS>p4boVnc88Wzk@_oTS*Jd^9`&s18m*2%Wgj5_ETM9%nx)R6Avpxx1#;Z+0r#G z2SEawf%9l;f&}%Fo_@v5J?v+PgjvKPWfr8kIXe=4eSADQg#!|<_@9=6Jm4QnS};%X zp^}{`G=kpo&aQ@)k|J0+s4Eb>e7s$KoE-^|rb={jX0(T65~KjZiw0f_TEDQmD4ipE z-9eaT8I&Uk<#+{x1lm?(YwWGT51liFS*)4b`cO$uo@8f7`B|DDl*CtC0Gk#x0b3lXp8GW9Pj~YfnfN*q{lJ1~Xt( zLAtF`u1FEPS1Ak!06qy=&3B}uuOr_9if+ydL&V1SA`YX?!sSMquUMSnk+Dp9w3DX8%6mN;+Q0_=W+qe<)%4~pnJFb(9bSP1`2k3zn3B1y?e>8x7y=qB1PQXi zZUI|Q&q$V2AOYP_qiTXg03>2ULY~&r{7p5XfJab?eD+km1cZ<%0PJ<$!9_*n?Vck_BzNenlK7>5bgFy*GFG!GXo60_OoNE0f z_e+BnPzZ{n8!Vg5?Ru-*P#%WAJp>8TASv_k2ay?#yFr5b0<_O7NJh3!4;=MTKO??` z9gDEY;l}YqG@?VE2q*;Q864i>RPvR}e-|Gjxu9G8#v0vBZ}XQRK{bUuG2Z@kC|}8ONeb57{-H5naxI3vgaH?KU53ABIH_f&_W5RrKTRIUCKm zLBfnXCz*LT2An(JcSNiF%0qV}dsAEj3B6x0zDwU)evp-=1I|U`=)~oW(-+W86>2&Y zx)<_9<4Px|I@zyOCEtz>yc)+V!n+p?lE-($z#Za;?4%EQ-skk!$<-% zOVooYWHMP>Q-ct>-hb3;?s7Cw1m{H(_-zJfinlB6cxK{V+O|GUOafyDSO$Uu(qQJ> zQKeO}{%GFIwCLFHI$TdFQ;0v(rH4td5uHw=Vve1zo8V%%^uZC3puP<=)v@0k%C?^> zfA<{a3pK>){s!VM&lf4Jwc2IHg8`qPal}~ zHO+0jck*21T1+=A&)9FuWDEv*_Q$MZ%!IJMF!qZlGfcZ|_zutSz-p?F=2gC69c1g1 zYajG(z8{Y~1l%2I5C{@9X6cyS`>d8Y3yrkMdtu%i2@>eUVOQlBn@%6rL+!JO(WW#S zm4b|6zbw9@N~O>gB+U7a6AAvgkqM1+GoP(rnSpveT<4*Jejk6Zaa$eku`qQLw|u_# z?fbL^C=XZ%T6>(4iP?YNLLM~RpmKP;ert3Hd58*jQ9$Sg3F-?C`kS73*wW)c0>vY? zpCCaVqH;2}F*v~tm4mz&G~k0vYa}^Vd}H-h39dDm25_wh_obPV1i3j6OXlV)VG?Yn zDi0C?$fG8DaY2x3@Lr4!D`yc?@>*KEHT8OZDl-qTnSuma^qlk7kd)Ov>p;TvgUw8d zU--wqp3@;tSRRP6a95HkX%^q6KN9W>Bj8vZ4F(Asp?+%kty!7%UH~M_-Z;TEAk>rw z%N=OYaz(T{ky+c!m8q7hIKH1bEi3aqs)r}#R^~DKMnm9IvjFDf(A@RkOoI= zF0iaT&vG5ukO;IM*LRp>iKiz8Ze{cy&wV^ASgIHDFlVExSVk%n0b&S2ri#beby;qS^s`)E(V4Zn$7TDQ4YbFrJ=c? z8`gioZe(vK9~3Sl4<56AwL9(_W5xwn!h}tb2idwh$Dr8RT2B)4F#AsqNKnfS@y#ok zVRWXOl_eQckf)EU8`cUFO9Eky&G_w80+)s;?yM#pxDn#t*NJJ3#rWUnE?5tSnv$th zBGianV4*Kd{uW*fc~IX5AElD%)IewvmIk+1mql|Tu==38PcYkGfx5O_X699ubD#m!6P?_AwtG|I8O^OHenxCW#{Ce6-I%|AiMzXkA|JHe z#4&zcTVtcy#L==!lF{1NSK9{@F56UNw#GEL4-(W0A3hyF>M`KS%Csoh`WaK=C_L{3 zId@JPGY@qAiDP0X z`a;*LI`!eA>dVv= z#ywT697&L%nL{Cw?L2>dC2lMkS2xVB|CPQyaYP!Y9OnE0Nq&p|mTMpZP1HcJ0g6cA*WGfA7|&~eO7gX$&D>w@GXfIiZ?28XS37qL`v0;UuRPl6xRQ@u21t$HpZK%Cs;xn88hWPY86I zyO7bQC5^8g(`or==77oprz0{YDe8~cB%dF`#e?7PBZZ=?P$-AwOZ9Oi!85=lyDy$| zl;GaRB?U$eC%86)a&EvGXl&%O`zA+se&EQ|0A@9JK!W<|g<=+`(^D?yfCTw9d%^x#u9NO1-8uHuj z!fJ}y4ZF@FIZ|wN)H;_bWTObH&b;UC@8yfarpe`Uj$J1UNSFjuVeGf(zT9k%NSpoP z5XPp4Y&{>!K`qDoIG+Acr3GDmFvnmR>xnKjc;0!}gd%>%?Jh`|5lIR1p!tr3^w<06 zRBhZqf@VTc)!)4eo2^4@kJIa!K01L7U#M-Vin{-p2(uisLwtJS?htv8q+WdX1Cu*Cd>xF zHf}$~`rNo9AlP)==UJN2+8~*r9EkDbmV>eVH}3_2ZtCOP0PFSRYK`4lcnJDU2fOk4 z#VniEaR6O6GOs8n&hr}bAY0dVNN8KLtrGlY(Fm~jG?0{xWC4GqMNsn(6ctCS3w}h+O#_KuB06-PsB7K z4>RseJT|@pdka9Gux%fjHkfI_GfHMqCip@mL%LDdwkh=hghs!F|v##zvTV(7L1vAJ{rV77% z2v#2`j6x$(siZ){^wyBFhfa%xe&tyUY{I}+v)E+u@g3(am^J|G{N7Ko=nrl4`&a@R zV1E7kSc2&Wc}Px9WM4Xs&~$U^@;5_8N3qt%?xA!+gb@M_9(a5n<=(Yd=a(N0fCO2m zW!aME7R%ub&<#aCFa);_!v^9GU*jUTh^%Gifwpn-@$sOLX@ukkf}9?&7F=&b9=LiQ z?|K`e72)1XUnqwe-<;t|Kh-CY5aS(pzbdc;d5@t=DiIEro`D*2+v-pCqzaT3_72%H#uCid@bwV7KaEUl6R+rt^k89JmtgS?tui3O^I+Q6 zk=cg^qn2P=!+k?7!Zs3i5lRqv^}@NS`al#W!EU>^Fm-d>bRj(Vbu9P}dcF>gO?V3u zG-fHY964@ZLxNU-z5sbNV5IdT6XEG{<*jo)KW?A*Mm<;)>I&DvWTFd&N}~(J2JSsz z_X)-*&V~T$FH;};n$#JzF^Br=aE0y9)Sa>Bl z;b^N0JU7GY19|8)niHCdT;LTl>pqo~%+LVcG5S63pgWxqLI{DLRDakJUMm~(b@rz~ zFR^D<_4n2W?}f(GnaB^+H3+}o>qJ8dG{QJ{=CDWs#{S&~W4&ZzKky>c-F%#Bgw6+o zhqAS{!VD6$#=KW-38UqBwz=+n^m0@IByi6VRrPm2U>fv4LYNKhQz;Jhm5^sqL1zQ8ns9}Rf{TsH+oxOkoZT8HU|jSE!Lc1-O6 z4cpMLLK!q8hB-89)QNP{A~*)Zsx4qkzpGhgUi{h%MrTIzjMLgJOKIn@mxDfok zeJQ?hc^I?lLqdQYF_GcdP#wbWcK}Z;V_1@HIb+W!GPt?>z^f3@8udBo3>F|kHZZjB z-8Q@|`65#Sk$fXlB4aLfrpmB+IwrwF9|+&To0yHwn8B8qaBr5MR}l{*4;q67K!S9eE%9S#T;`jxyIL&FJmg=|dSdHXKsnQ)KHY^;hY~ou z81oRUH|Byw7$lD*ZZ@yWuR_ru^ zf6FU5h>2rt|4L0~uVU0RW3y$nU{@C0gB)X1U`om=)3@Bc{Jiy-Wa63zKprm8O)O{6 z+z0ET?0)452MMx)MXH`~vqYotFUb**AdfFnpzq?%k=*)Ak_Hk!*-a_BKLw)bZ=Of|gUw!fkgU={Vh;(LbR9<-S2%YAH zX?XLy@OkRdL&C5|L>Z;=x2EcSp6yo*Gk7v}8<}eNP%_-gWz}HBI!5n{)X}VE379sz zmRUpb>p%<}d@l~x?W<0-Y#;6^`_h!rV@NtI*!B49z!yG{T*)+LUy?U0<@F*Fok?U^ zA^f+G$Qm>!xYnQ>VLw*wPE*GAMwmd^(chbSG`2MU*T=0}sXqQ-a3c^Yqe(Az^~(6j zkWk4ko@6IF5vKAaXA+&{MyLDIbd{BPaR#dHVP}E7PD=y`d#&BwuAWk~ayGDP(UtW09(4aIhp} zK@4_;Eo65jBYGlp9W}O)MirC7QcDPKFuMe+VhQM~LeUBtr9% zNnY6fMMg&K&h}WPNd8ptIq*0-iAeIL5S^)zm-+|0V2kju28HGIL>Mu(K>@G{6azh( zxSirmcf-yBOTZF8swtZVz;423dZ~7mMH$e_4b^-}>XXH_THUUm0V8VSOV(Ym6AvdZp zqiW3BGd>W}oph`TQLPyj{zJ`vodhhuJ`hoC`6ovhTl9&PXMQgL>W%KP{JGxHOZ_R3 z3EN|J#Y#d?vazQ6gSvm61KIyNCSpqrQK47`AX<6C{n3eoF7B+cN;C3+-=KB_A}1eD zAGFHF8~X2`9OJ*7hpL3nhxG%jYK&xWk{9_8YW+ItFCvr!f;M`n^ke9R;Q9b7 zhDLHB6B*yi`h$kJvk=LzJWyE_vi@B9*v(MLI(CRP%|99S@8dY+|9cV5vM#$)Y9uOHTWPp%y0P4V(oc?Mv7*8<@m?iwdC}_nDFrXa~#xMA`93pUs2@uVf zO!B}UWRd7jZrHaTXiolAY9NfTWLKD^csmoF+$f&T%-It5iJpYr%xU+y5_X#>XnhyQh zb#TQ&Zrmp<=3s75b0a&FV6aA0D3Z4`_ADJ+P^^UYyXF@3o_bAXm0GQ{c;%Ik>F)>0 zB$<^>WP9a^iAjwZ3J>W<-$oedkLj?^ zJZYC4h`>xqri;HXjw?1Iq6}|7n?$yiz2>0PGu=^ohu!JeX!`^ba+4ApYUA;m=Y06r zZSk9=vKGw>P$a7YTj}1U9c2^fW18{Sw#zzv;NE$);Z!I6;Nkq`32AB?p&p+$nl=T6 z`iO>rWkkD@ay;&kAa`Z%7x8|`GpCKE!>ZadrlJ^j(?AG92Z zMT;!Z$i&9;UxR;B9D6P3^#AZ1bsT^Q zQ#6`TKtZ?2F%8uPD){-2@63_w-B0g6`jiSPa$fW_h@$mi7CGvVhrmXiRfoZ^@}^mO z^_L3)0%cZO2A3z!cv!#+Fzstq+R7bn=kw`;UC)k_jV{!H5ULB9;r^mZ&kEIn_`;Bu z_?C}w-~%fpY@SdDB)s z*)wC}gwAO0wDx;qJ=!e6iz(Ydf3LO&_ucLGbd=Tcd||8LY}du$x{}}q@$_0e9mqlzrJ*aH2%s0k(u6R z+AM%vGxobUiC4S`&5-oZinBFA^Ph?a`#rlftr%tf{yttk<39 zymfW{A|eApEN5(GdTPDZJ+^@x!XUe3o!oA5RUDWom+Jy6PXQ)!MHasJ(kNF5cFyDz z)NsbEetm30|JoU>N6Onra~5m6>?(bd7{n63{kiMy1BM z$7e90#ndACZ3N5N2L4@{86rL5n%b@HN~^JKe=MT^($CtQSM4(mDvPXV)}9CMn-q7P z%bor^xtuo`bO%cdg<|9DwQB6$qa;z;H!HB7d4fOFkf5z-nB=t=2jb2Ms3^?aMwilq zRA{B7j>&lQi_A_|?@qzJ8YD6hL~;f)(HM;GW(N>-H@gav&GxcD1QcLUF0mFJXlfpm z%rd4J!@Wf;8hYgwv6Wm@w@J-$O9HztVEUyC+Z%fZW7Hj*yGDkB*5{m~6TZ4ro&voN zR~svJRe8GZ-w4>245ocGmwaKJUJ-+pl2(=1*sKqLnKOCjHD>K-#{+dt+ZN{u>QNm5 zb4=T8@&sIr#QGt#WOh8ifE5yk<8@q{B^Ytf)aj5-Mu(EkVcR~B zOfSi#2Y7nWbd6B+w8&cRE!)Y`gUqBP443*6e;D>Ro}$0%=~F;uV!|=0XH483ZWsP> zl5QE|3n&N`Imum@KZSG=c9u296_2}xm;$@V*#_w?o+N`FWuXLFQYYwRPpeBDCW0X~ znD|fuLM4nXNJh-Wi>6j|jBA<^0t_@l0(*ylj~$+zf)f%pbY8D5B!!x)^_;cq)zcH# zWGJ8=+ux~W?3_SCYEqJI5JawA9dT0P4ww*4oRHbKhY!CGo;3;B;jF#4GM}m&dhfyC63$GPS{&u0&s87SJo>|4G8?lsYLv`i-9;;OgEti% zbya!eu6Kqgyg<~+>_=j=(`>4Z`imxmUF3{I-U82E2RUb~-DV0fUYWCk{byWjU4Mk& z8W0PKJWRpxd%m`nEJeiwS)WCcF+{jfbr$Mk(QKZYq`{sRvHiw*jYqfck~np5%-3Pt zUHijX!P1{_^tr8rpHlQUitbaJy{?`%M>*XF7w30B#Iz2}UE! ztQ|1D^ zh#6>c?4HIVd2Ut!Iod{p0Lk3O22U^^fWrSk^VbZV`BromtRlBaEQJfgwJJ7)%exG^~rP{X8zKE(yM!5z9Y4S&Z) z-)SSsdqkw{HeWi&=Wq_3s^*G~hu&O>A$K4VQ;SBd>;R}`*6_VGFvD5M%#<#=%PXb` zREpf9z5pMw(3;{7Y)-m%td%W8&#c(dkoZ^msh>~7?usL9D$>t(pVbpeMh{X55F_6* z%@w&O#g`nx-ZC(kaUtNX8J-0^2Rd#`itKXtOQ{$4Epj38QDS_Xn#&M@=XT>J}0i*S=L`3o!vA>VLQ zv{9(J#mI2qfhq-?0W~F6ZLkhER=0VsF}~oXBzU^%ZYyjGJ_L?Fw#RroRx##=HqHQe z8a-kftxTbTKut+n8P5U@ykgRUTI5WIERo-F_Kw&#mlvttn-fUHaZz*@ucq0>1Nv+^ zJ;yQ~NOIc0o}_9WpRTKxSyIR90utJj5~CVM5zyh~u;vMAgSA4BP?1>786j`_h;S4f z!p=Fc<$*1WQ-4MJUr$=Ar$_F;Z8~%R{r-Bw+<}wOGMB4_n^b79D z*KZGcY~L8V5)4XZ)^<>jaWP;Ts4->iwx#`mFYS)D-7d#oxAR0GXukGJQOux~lJLWq zf+6-8SRr9E+>=o}nj=Wd5LW|IU0tB%p|`AU zSzJ{OjVccbsi06urxt6s^c&MZ8k_*;^ehL}kg!$bwWX>A)GDv;xV;%$7Ag*{G|sy_ zZ5j(O$8iDEKVFQ(3Fer#I_-7`V%wfGU9ZNRIT*g^rfcllzDGT6`C!aIQ_)N*Ri^jh zp+1WZk}8dyu?Enf5Rm3{@zmIaUZP~)-chq|d&7Lsk-+l_n~atxBoyKeY<&#g+cskz z6>GqsD~6tLXdi_pM8-6e-B)Ky(F<~r!AK`x>AH^(1U?726fG!h(6($dXk)2npg>2> zj|z4CNe0K5jM_uYMXfJU2zp)2sm5pvDNDj$oG`KxB$mu*Tz=DMkm$-xsi|q60sOvg zkuUMU%OJ&j0l#I&gjdxMPhl+i_Ug&U(_vG0W|VHZP`9^-aa1gJwK3IFrsoG0!VE@Y z_L1!>!eb=Y-IC9r2ngYrlKlYpOq|?+@=%NB-H}y;e+&nSu~EluOkRlAfZ(@)N|Kn7s!<9x*TSS+?Pi(_dkqn=?=GHUp1(x!+u=S{oFmP%JAUETrmS1ne#Tn@a>*#DttT9 zk~6WTWzpLShH7n~9B6w(98rL~5LeRVOP_T8AmD zXJg8k)Ua5akjfc0oljvGw0NKVcm2!luh&2SY5TVr0`%`W6zGTdKfn7p#sd8~Mm7EB Pn}7dn|DQzQ|K=TXxk^ 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 delta 16909 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 diff --git a/packages/panorama-daemon/package.json b/packages/panorama-daemon/package.json index 62ada9a..c48912f 100644 --- a/packages/panorama-daemon/package.json +++ b/packages/panorama-daemon/package.json @@ -3,6 +3,7 @@ "module": "src/index.ts", "type": "module", "devDependencies": { + "@biomejs/biome": "^1.8.3", "@types/bun": "latest", "@types/koa-json": "^2.0.23", "@types/koa__router": "^12.0.4" @@ -21,5 +22,8 @@ "uuidv7": "^1.0.1", "yaml": "^2.4.5", "zod": "^3.23.8" - } + }, + "trustedDependencies": [ + "@biomejs/biome" + ] } \ No newline at end of file diff --git a/packages/panorama-daemon/src/apps/index.ts b/packages/panorama-daemon/src/apps/index.ts index f0ebca3..52aacb5 100644 --- a/packages/panorama-daemon/src/apps/index.ts +++ b/packages/panorama-daemon/src/apps/index.ts @@ -1,6 +1,6 @@ -import { join } from "node:path"; +import { join, dirname } from "node:path"; import { parse } from "yaml"; -import { readFile } from "node:fs/promises"; +import { readdir, readFile } from "node:fs/promises"; import Router from "@koa/router"; import { manifestSchema, type Manifest } from "./manifest"; import { dataSource } from "../db"; @@ -18,18 +18,39 @@ export function sanitizeName(name: string): string { export async function loadApps(): Promise> { const apps = new Map(); const paths = [ - "/Users/michael/Projects/panorama/apps/std", - "/Users/michael/Projects/panorama/apps/codetrack", + join(dirname(dirname(dirname(dirname(dirname(import.meta.path))))), "apps"), + "/Users/michael/Projects/panorama/apps", ]; - for (const path of paths) { - const app = await loadApp(path); - apps.set(app.name, app); + for (const basePath of paths) { + try { + const children = await readdir(basePath); + for (const name of children) { + const child = join(basePath, name); + try { + const app = await loadApp(child); + apps.set(app.name, app); + } catch (e) { + console.error("Error setting up " + child + ": " + e.message) + throw e; + } + } + } catch (e) { + if (e.name === "ResolveMessage") { + console.warn("Path " + basePath + " not found") + } + else { + console.error("Error: " + e.message); + console.error(e.stackTrace) + throw e; + } + } } return apps; } export async function loadApp(path: string): Promise { + console.log("Loading app from", path); const manifestPath = join(path, "manifest.yml"); const manifestRaw = parse(await readFile(manifestPath, "utf-8")); const manifest = manifestSchema.parse(manifestRaw);