From b7eaa2ebfa62a662f93fd11628aa75b697e692dd Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Sun, 26 Jan 2025 22:45:36 +0100 Subject: [PATCH] chore: update cloudflare worker, fix configuration --- .gitignore | 4 +++ bun.lockb | Bin 481504 -> 505024 bytes example/README.md | 11 ++++++ example/cloudflare-worker.ts | 67 +++++++++++++++++++++++++++++++++++ example/package.json | 7 +++- example/tsconfig.json | 1 + example/wrangler.toml | 11 ++++++ 7 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 example/cloudflare-worker.ts create mode 100644 example/wrangler.toml diff --git a/.gitignore b/.gitignore index 038a192..3d1f756 100644 --- a/.gitignore +++ b/.gitignore @@ -176,3 +176,7 @@ dist # Astro .astro + +# Cloudflare +.wrangler +.dev.vars diff --git a/bun.lockb b/bun.lockb index 96fa98e5f9ea12ed4443830c6eb2cb75fe90c9e9..e96f0cf7acbaa4ff51ab7e9338425a9f8737af98 100755 GIT binary patch delta 20936 zcmeHvXIKv0cF>poT8Nd~QyUbuwy1?hDP-4R@A&+uKz|lZ`;3%g-^H5%VY`jTQVoF@X^zei* zsyUHG=~Dtqcoh;oL2w^%J>VkXs5k{U8ju_t#t-FFlJGdX z0OW}@H=wyYaCN}TK@Nv7m*yrkm!bJyki+stG`FR>63weXP8G@{X?_N90Rq90K>h#< z@LX=CxeLuVKsn;cvEi{ZDT?|YDVYn6z;Vc*2qYt63}tXOgy}-b(4VIH4B$AYTrwo` zvv5RW!>G_`o**$Xl$R6^0yqaI0Y`;#^H^d32afgq7l7s1@WF)=1>s;#G%qZ?2=ZvL z2sk#p065B>g&BpDDvcK%%}-3CNK65m8BbPCD-@96jG0x%Y6+kgE@L^Ox1ddtbNiYj6B&%-$JKUVjmapp9^t%i1EBhuyh$?8uE5 zp#c{^3wzGl;wut4yfTbhnzt~d`*($|J=H!B=+@to_0OY%dzlfg=7QCAr%qF^NA-Qd zcGhfdHTSt>6Mj+7o47uYIW4c^WPFIV^72B?uE-#j!KsDY)1zL?_qlF1EH9{BwkzAl z<8oQSii5LGJ;^Or)fme-4i0}sbZrQw)n(h<$L!Z&EMl) zY&fQK||G$8^Yw2`oP*e7;-W&bNM3PL}Q|C$WoApr5`Q=Ath>b2h$)IEXhHAMYtVE ztTFhn?36uv>qMO@V&+g8aPZWykRV}Ue>@Vc?Y z;tII{)2&UgRrm^)#%(LZ|Le5LH;i`jzOoBuY;EA>hqacT4FE42%6S6o8EKxzWojjdk ziyEQ3Es(Pl>udD1?K&9lFgSSFgN{}|Ds)Mb^xzlRUA}8P;Jn|(0j~i(=r6cgGK-q} z7knw;lmEn(o&yeRj*tuH=!hEqB;z>{Zf|HLbim72fe$&HFEWy@ZiB3oxR7_wR^fGr zXu(HY1!K7XiO;5p=V7ao0y&(6*eN`0MJn$7aEw*XLdiI(k^xMKf<>8; zkb{|#Z>zMCE<;@^qQ)q(u}Zaojs=+xlz0zhDRfR_QJ&H$wyTuzSMqke?@Qq4ehT3w`^O`i;INxkq~NXhIwtb zVaBt!?6wg(yKAb92Vq|j=0E{lVJw-Bxm64$IISs>!3SIRTLB5+v(gn7!2HB@Qx%sw zc9oE5N5KLp3w{ftor!@e%Z`;n@&IKo$sl!DdKyacn&yfMd~DgR86;pj%ZY0RE{uan zccO!W5K=Bs&K4PrwN*F;Ij|Gg=^R`3yLlua8gx}cu~q1|NYVwkCrq+s2Q4CXAj2+PM6~09e^^8UfGZ4MELqpM z;*}r?ayFnr26NmUkP8+Y!tD#bP=L5;A*7s{rWH;?ZdgZ7aS6SUz-_{oI|Oph;yQC7 zg`=q`GPr81PzpITo{j6Z{5QzqibBST*k;6gG)sZClxX{biSw6|yhJ<~OC?%iv6^7Z z{Rp{nw8-NDbp13BIn zw16XS2pku&-gG%~%=e-5(j2Fq5#Tsije&zNO4$HMefGey-e5XEgw8uDz(WZhkPr(D z1&#-Dtl&&@7aEu5;G_{eX zG<^x3UxpbtkmCr8fa8;R9&nr@8|iXsjsvxc#*xEQ1+@pbEbxOgjvVzJ#wmjpjsSrC zC~!377|l-rM+H}bV}%>Q@sQ?d$Zf!}BXxB7|HQGKd$im=oHD4O0RU{c5jghnIdE*S znHEHj4ZNlE$Wi`1okx!Ok97WT9LqmLIU3MH^DpJOd91|$UbrwMaQyee{a;nO^1bfONfnLzQQ&E=>ndvzH>y%%lBlysV3d+!VaAf|W^QO!0hx9OB zKI!QuhzhNVaIr;Vnwq&JHP8z1;)fy=c^OKE7zjct!K>XClw4 z`F8n1=8lok6ey3GYom2jBpbeW!_wA^TupnOI@#ZcPomjTj%z1?9;AYrskC1 z@zcM#MCssB3mwPGe=Kt+FEY?l`f{y!b@Z&zT8{3XoknU=dVX8GY}|Hf-Vb8p4(7S? zlGtY~=hYwHIe3T3m2~s{Pv_rHDm0(j{hM82;*M((Ufek!ay)d}u6u{|m1C#BskON^ z*i38A-oE>_zR0N_@|7}AAZ^~q`&$aF(|r1;uI^+%X4%y8uA8dYCW^=RJSMESja&ZNa(jnHda z;4ip1)_>sRVJW2ISfth6U9}@3zmER+x=`5DePO`hPSp0saV0e+X5-vl^?NpHl$|lsdg<3* zY1>cU^SMLt!=WQ>7d@|1JT?Ac{^@sQsRx)Bq8;BjblAVDFN7_^dsVw`lq{OHElt%* zHMjijksfN9qih-uMy?6qc&zDLG+q0C(3e`dD%FC+2}PP`?4PENTDD5cyi95HG=dht zb#1WEwfl50(&_I0ah+aF%^yt?*vED%E_hK{y4zed^jJ>NH?6}j=gv9&c0lp)J&~=M zuNT)l4yly6naS6FN``oXd9xMuN<9pgXGEnQ;nWWw5Ip0(!n`g+ZF#G6=gQAsu;u*Z zIY%#kGOYg^aA{Zh)l7YE%YM1-zUy8@Z0mKPe%_td0aE78mp0GfqNkw9v#I8}nNPnT zC0TDv*WRujytDnN?6lV7GjhBAP;uMm8+ZMhRzDS;O`YzaN-sQTT(>Z){~GR~quJfg z&AOFIn$f)b8e7YEPE9<2O{h3IVOosU+K}A=s%u=o&W>caWIhwIx_`D9EYG?*E2HA+ zo!X(Rb{r|HJDzD`DWCoD$IKTi79W-}Z-KOVt4Ds)S@rhf1*5%Pzw%tC)LlKZC#RQ= zZfRRkR_*?qyT?baa6k3p$P%q9L)7O6p7^lMlYcZ>6sT#JEqWdQ#(wU_f5-+eFz;}q z-nQABw-s%yTNYrj=#8$|yy`ACX1AmDZFf}VB+NW)s<<*a;t6+S%u$s_H|-3$KJxt@ zya;stDw^|foJiN}i?fRRv-y_}wmrL8 zwdjNQ{E%vv*0h-?FCWWF^3_&ldvTs~Yz;!|^`4J4dtXI7$AWpOH?OUvT3=}`Z}2&z zUz;+1|8GEYlHo zh6nAAb@?A@^QP>YM44Qe@a@~)Jzp-jsVgRp4;p%+cX3cv*VNSx=RSBGSifgguKmAS zs;QR`HT0;zrJgsNJzbKsK- z|M$Ml7q67ec~v^`sRl7pFE}k@{jD@P!(rF^V{z@>?ECb77c;n}uB>nLVelte;Jl(` zOQp?QH6`fZ!k%k3PIuq&RCDX>)enSQmlb6>^=5G{HN9W6?&}NDbd7=s{|H#UG;6%N za|T*GY*_JTbwyTNPFYybFI!U##r@{s&-K(YX~ptMYc{?dJ~vg(@5IFTHrY6f9*Ck~~bT>N3mAnWGAs#CYW9J6FZgoApILAM6JZt3h?(Of9jOUVmC z?{W_Pun1|2^TeS@)pSOaXu|NRT91w_e`+vmU2@wY-L-C~GfjsF1k_f)8r4~0hu36> z0~`ER`)9I*wu{f?pOmY-7wfTZsA0DjS~1$1BW>`|)oDhboR0_#lNMNQ4jJo`>uzm* zX4!qu_g`XmKNPIoyEXl6Aivl$eppdPm-sUpqjgHmz3ms4+2^o6HG7<{Qawp4#*xUC zR{X?N_Hw=BvAEL$n^HZAf5cLuj9~m{lW#PVM`(7rLa;~pG(C5nNyPZ$vlsKwoMhpLK zei3={i>CI{fMd2j%7*M8Id#m*dF%$IG=Hre-|!_4ez(#F=!bB`7D{{vk+g*s-N!z> zn>go1;BL;dm_6Ft^EzjZt@}9BL07xj?sJx>T(@CQvJCrrXz5J5b#&K|lha*|$=R-X zxh28PY2KUd(hu$<$9!Opj(g$~*smg9>8q0I@%37LO7@yZDo;}EcToQRvpqd5BdqR? z^sh8hTw2oW64$D#$^X;lfW|xTcb`a)IThHn$H}LglzFS9%^R?0^XEgtufv0z?O$XU zUwHGjB;n@J&1_fe{b6%P?VX*SdQ|P}m(|;~ChVV-P_@(GLrRmv4S$haTl*EW7|z?A z4`WHpcrY($)1g-VcD<~P%FgXaJ5}G<=QZqDZ)J0ji95E-HaU&l=CVb5RHrBJHXrM; zbVsYe_2bdE)qPLTK2WuDOPl&jXUlI=<`HT0tcFG@S=@hdXW#NC51w3b&X{n|WYVPA z`{Vnl*JS%uSS&H+Z*Q+2=A~6yx2T3%VBLH9rTOPC)ZD)J$zy%dyapjVi|9@O^UiWq$MdX zB67QwdF!OjdpEJc|6Nr~g=xd1S#~?SSmaC{yGX;)?9`{zVRsMA%Ig`Ms1d&Y-UY2& zZ*~?e>a?c8^McZWht9dc0X}pGLWyy;$s& zb!TqSF%k9TX4lbA);*|N857YEqtVv1=6+2{;>dXoz4q0(%=#A8bfH&lWKZ$>NQsxR z4btWfEDSHbs_1*8lisCsvomF_T9dN#&&l|1FHb#N%d)UcyX5ns(BVg$z)53mSjwG| zpZh%Ttm~1k?RoBcvBu6Ix2@u<7ghvZ6*fvMRx^3#%`K=1FfH?QUcqX3*FNf`@5({j z?#z6Dzs>6P+3j(rChc3k*GCwPaf|-pIQ654?wH#*_b4jgFkG>|n6s!@Jf0H0n|@gz z>-76&xSn#nbf}^B__ZGoRo_gMofK)YA^LInu5tYb=u}koyHy-k#w+6PxfEl1{mqxa zh?IG`Pp<^oIW0Q-?Yca?9ueOuGL}wMv;dafhk4~<;c%!!e_-^hm&n=i^<)^H86@F?K8!Uv8*etELa!LAo z$Ns0>O?>N&<1cs;`#vUug=5d#H|g@mWN0sVl@adkdeCQj`GBWJtJ+45Tb+7uTDkSu zkq`H;`<8jo=(cv0STQB94~n-)D^8eoIQD?w?!GhS1J^f@d3j$J+NRl#y!^E1P(9w( zaO<7wJI?rhSy4QHmA%>aJiFzKSNIQ0v0Q9)vx6RDoW;e`ikl`M-*j$EOZ_s?o~7_dd95H0jhZ?KGSheT>#}(3 zSBHd+_DVfl?{2>EdAgfxh{f*sZcj#L>{{9CN$bT)yj@DKfOB}njl?CcR#xA5`o=}y z@0CR~I=E*k?-i(6mwn<}mvvX`t!j;3gQoY#XN}n%a-`8c{_Y{QH4YEX zh!sm#p&e3+IlJaA7IOB!djV%HFa^H#-%Tq!aiJj7lXUWSLZLch`Hc`0iTQb6> zRrl-3yOW=`tNOVOX!<;5?c}th@0yhIZcJ@n=QlxZ_K+H3&D#s#QxABhf6Me4)31|= z841w4i$njI4rz*`$clOtbz7mQYVg8~>8no1sDIqEA#`(5SA*f#`O%g!K6a7MZntbE zp=Sp7zq@E zG3wkStyo`V*L$7f{O-mr8Zm>6$C?EiKK9>*(+ zGj6NCXkAgI;w1#lGrZX~iq$6B0s-CcMlIzBjIPr}rqIYc6fY z!A2_DBj#_skV$QR@_zE+(Jwo-HAhc<9Z=n3pOYXrd-G?*FIzX>h`XoJ0!aOn4X_bodF$-#5%76-WQeHxQw?!kLz*u%*6PX4x$I-M(h zi)yyG!X{d*60suiqkkDPsK;*7_o)vH(ZHc8Rc zNKF+qMyCBMIKAA-2Da|ih&z%2gQTTEVziMyD#jH3^Kw?zt14Bc-^M7`e$zVwI5$WaWf664)VPJ_gufvIyA`(unLRv3CbnL2{8DBQKC0 zCoUeqPLQ?8PLg-XP7yaxV5dm|vNPl>va@8I7qD|=JF@eHH5S+f;*abi*^jJ}D0lPG$Ol4>?Z=dPjZpflNZPy5SK~78pv8?56L@Zjl|6lSQ9Bg z_K18%_Lz+G2lk|VyT44RKU*=1bSaS;L%c;Y99CcQE=uMlyng2>F`FkZ!3ETr6hzA` z7sJe+$U(3nMX?-UIhGh_wl1o}wu;WgJWNId;c`u$%oa9@pDg2uS>ka}=B<`Lyk>^C zkHXMszG)Qfbi}tb;$3y5CRyf&SZ-jMj69bO?{F2c<=JAa^BkEi#Cek3!18_jW&BwG z{r}$)Ao=rUMCCFjoRaYW>tJBj=Ku9{5;vr%d`GgleQe;6celB!Wb-;se?j{X$pN#N zN(2E|v&3)jnLNJ4#3_z%Rq>b!GMGoaEB*2^m9B^SBk>;`_+kR(@TKT>6ovy|1|Wv7 zc3)ycaMPslCwNTbThuXF3P(DPq3h;OWB6M*%3+(^f$$L07;aZ66C?0$n#OPo!X_G< z2N>Fby9P>W41a!Q;g3qN{S~)Ei;rx&GVD+lzl25*e+Weza0CWI>!=8SeZ)8Tc=vpO zmcs#$U}6JdV=xtu-G(Ed#$e|wl}uy!;Db6~BQljGph0{Fz}~?gTxuzeq5F=QI*^FQ z(DgSqK+N3_T`m;t0h9n~ zJWvT@uu+^EO=IZjAf^kn3%Z2%pp$|aj_6(*L;nJ?oFf8r^R7YbKG}afeJa}jn zAIE60ALJ?|5Oti!V1G4b421LK1dSO%`U+YC$4S7j;Q>GwXzVmChxI&Y>aV34o(;y2Ejf7Bq#lGmV|6u|a^T(AWhUGXty%2q)P^z|a_TpvORXT%zS*J0tZ3 z2<571Ie{f)g6SE2g%-2|j0YG_va7Tp?3biMX}M}z&IYiNG*&}nuw#uH022Wx-gO#- zZBEovNaJw>I2s6BB&oh!IR7{sZ_$FVLy77Kl@Y6@G1!kLUO0eJw`mOapo-TGoS?X> z;W>sqZd6}L<8hb9V8&`lsbp3!oyIR9|SaFRWz!BLRLA;aSZ zjg5x1Jw0ju1q|(S0}6-H!s8V!HwMx#fpAVV)0jJ!1L2%_P1p5+^m8BqPKvj*AZ)y& zisfzI%K;4M#CsYW3+YjS;rahSW8RR)g$R$2GzObpDLESZL}NaH*@E>rx}Wh! zD;&A;K(M72_p4DYAc(!20JI*k5x~FFm0^b??vfK9t$^Vfn+W7ck4zgaHwmz*G}aCn z>hlA7MqfF&QenIPxc=jC;SjNCFaXlU&^sIrHjPb&^ccXf=Q1=l1=6siS8P0o#-;*h zj+)`%(pVs*@${kbvNRS1X*^ZFc>d*RFc{K!UQke;#(0osLBn_`&{znhw*!WTcA~LR zNM8fOLy^Y9AiWdhP`)#b>EmpKV*;KdIEc<>PS{A?$CU*%A1E7W0nkFAML>&z{sHO? zqy&UFePtjOpl(2_Kx#nh<;OO2?y&^8QwjHP?FHHgv>)gIP$5u05bpiT0m40E%Ykt3 zm=H(+WDaBjWC=6~$P~y72)7iP0BHmD0MZ501JVaF0K!{v1JFY`s=Q?@X9Gu21!yJE zMIc0{p!+}=;D+k~?tlsanhX@qB{uswpH(uTEE8xx&}g8T z@^Sk)8mwM7K;|aUEudPUIv~7qrU2p9GL1`S9pD^cyUP)$63z;R+kiO%1(TW*&KdSV z1+wBGXYkaM0G$Gw4wM8G4U`Bp4Ja8X1_*aJ#sWnG%>+sXiUUdkiU$e<;seb93I|F6 ziUNutH3vBhx?O|hRiGvyPoOX^2`S~6va-q2QqDAk!2me`@nKTqMeqU$uVUuPT}_nA zIL4iZfJh)vkOHwOoq^0j50LA|@6JArP-G*~B6Ipk^`Csu&2 z$a5LbT5TK=-=WJh2As%@-qwaxJsapi!Lp?uyg1%-sG{Y8rCa(@ev8_ zz|$eM64EPxunl}+ych^Q%Z0cuE`S93sM$bxH^93DR!Ro`04Nvm93XfzDt_y_6u1b8 z1C$4}3TO?`Y9M@9RR?v}0;m1`ALxLgV}=eJI&$dXq2sp;XeZtm(OpD0vKRcv0_#@zDP|lPT zIs!CHABN}*h%_&nNxWvtnz*^E(wdst7fQi{;qRH5-plC_FDiepw1jw;jW~S!0rsnn(^K%dr zyT@knp-yMG!kOQXn6N-LE151~!gHCxK{m_6)ZElM5=NPc;ALV9*(@7VOL4FU6XVN7 zAEF7Crsz{KQNT=mB9>T~qF2rY7Bdl#k`fE@;~7U+@cS85V=2Z+&YOhZ7$@p#D?gBGYJU0{* z*vy1nO7vPoCzu#$CO8vHEKKdN4jmOOWWqJYb;R13@MtD*6H3fYtxRDF{N2hSKh2Ec z$AqJ~5r)~fo4aPPp%R)2oo0fOnJ7sp0R!wz&B(D5u7&`Inim?E5DS&>wk!`jlK=Rf zSOg?sk*6b|nb=IRS_@O~nVDE=CW;eEtW7QK;FSL7ImHBKGZCXu2ZqoV8)9O&nV?cA zf@W}_nCNaM>=a7OVZK2fCjOfVOob9V$)(6dh|{sF3!%geh7hzdvE)pYt07J*@d=@r z@Ny>bRWe2G;pSofjMH5P<}3OBl%u2d*U>Tui-?OoSB=DV4W{Qn3H(+i zthQF0;D7(4oEpn%h&8CRpf>1BLfM%hTTaKK=VBl!VZw0f5^q=!x6(ySr0&m359ksm zmiK2#Ff;@|WeJ&R-;NTp{3Wd3;)Rw3z3NCdLegHc{3=0JHK@u25_eRkZ0Qmv)VQOB zxPVf+`d(T{9H0#G$sIzJ3|NbbnGoiV5~2dFkC(KbOA9e^&mBTkIbFg;M*l2vhbGlQ zF%vu8Q9@4q%TX6d6eogEcMxI%t~-RNTDpV@$^KcQ0Zn2ZCTRO-$t$R%0VPaW_s^2B z@Cfu3sH}d|&t>d_ zd*PB|Yieyl%@C48kknzmg)m#wp_RX2LIg+Rmm}PG2rdfnH*8>O8IeiStGSvs%qI}~>UX#8 zImfqNB4KT6Pca`)$aZsb-~4f5o210d)SB9oNiJ7&2XOai!bb;4#&xb1*;m8m5X~B{ zwhr@ch0ZHRPEg6ZGm71DGmOe2UNtZ{!YmS5!xgeW%qPOzkhjkyoa@|F_Q-6Kew{nm zhWW<9sHW(V15TA6{%JJxd4yqOeaCt(6&?R+Y+N>ZeI0bAXA}7wFi6X?iQ^3zc;*8N zRK)SK%{epfLk+w$z|vZpP2xddNm$0<-cK=KfjFjMS53wqYbs>{>3kDfVLtm{xgvDdsSWva*{oR*H>m{EPPC9XqXhGzh;q$y_p7Vh zAB*h(Kgu3nevzb`To1M1+gE1kEh0B>a`o9v-#Yz6ly5=bV7x{kr*V>ViyNu)pNA$r zyIif7>&^NfMCdc|$8=G~=>jXPiCI4(Ie43Ep{T5nZy(^XrGmuXiipVxsrJW&b-pA}^0r`(SDz5HP>iM}xh7Ub1&%k%1F)%kt! zG?-afo0-GOuyhWMj!O=Uh~_1P50bbF@D-J``0(;Q!{xrRHA48YgBT;=^&*obJPkP= z0h1eK(jj9)`{kxd(`Lb}fSzJ_u=&ph%`BzTG5lD*xap8+-t=%wlN4TJOgt|s(j+O) zBq4lScxt?~dDCZ_@DdZllT0Gv8z%6j8-Hio12c(_PM*e(O&k;(7Zz?pf9k^|J}x>f zf*&3Icd3}Tu;l3Q#15&SgMzNZsaLRADYtRu0)Ex~doAd>xXs^j6Le%Pa1avWqN9`J zX)PvVVcIZakSVL{_n*t76G8j`R4i`9{Le=Cu~FfnWSq5}&ahvriwlze&?0cf ziHl20OiJLz6MX|&z37ff5Aq#p82yfG(hMtwr}AN<$Hh%gOp1$-$Ilvx9bLFYqNihD zr7w}h__!n-#zB%%#ScfBBqqnl$0dkofsJ$Mf0n@M@JF>I7zR7y;t8ilY~}rRmGvkNjDO})fmBYs8rWf#X>bF>3yw5$gJw|I8#bk_RRwg_Cj1Wp!Qt z#1rt&@;6wl%}RU|z$=M<5GA=UxH=llQz=wsk|y9t5Ems`1EUnw2oqoOQ-=6TOpb^M zPr$oEa#DneoykmIG(U`&B-TYXwQ|+yCo$G%uKuc%vRzhL$?E(Dk^CQA?ccCf^JJwV zyhF&7CYG$el$-=S&X$!YU1Vf6|0pqK%gT}2Y*~%pO1hA+Hg5OdKzZ_S8}|>({C@l* zh#erW{(`BoWdBr{$NHtK9p*~6(gDho02x{7!NQVWe;AqG{`*k ze`wp*#+4p6are}I{30mErm$q0$|{<0&pf0e*IAx%`$&PSTyL|#I+xmZ81+uJ_aDZ7k{e&v^^O>Af%3 yze{;e%cYjcp%1N1o=lW0=~P@IseQ2oYxf}+CdnBnD$`$LgfB8mM3wyHZu~!?1kfS? delta 6517 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 f<)2USXOvqTLfSP-Q2%X$|2|<;qU7a + +import type { ExportedHandler } from '@cloudflare/workers-types' +import { execute } from 'flows-ai' +import * as process from 'process' + +/** + * You must define the environment variables in the worker. + * You must also create a .dev.vars file in the root of the project with them, + * if you want to run this locally. + */ +type Worker = ExportedHandler<{ + OPENAI_API_KEY: string + SLACK_API_KEY: string + SLACK_CHANNEL_ID: string + FIRECRAWL_API_KEY: string +}> + +/** + * Cloudflare Worker example + */ +export default { + async fetch() { + return new Response('This worker does not handle fetch events.', { status: 200 }) + }, + async scheduled(_req, env) { + /** + * For simplicity, we run worker in nodejs_compat mode. + * This means we can use process.env to set the environment variables. + */ + process.env['OPENAI_API_KEY'] = env.OPENAI_API_KEY + process.env['SLACK_API_KEY'] = env.SLACK_API_KEY + process.env['SLACK_CHANNEL_ID'] = env.SLACK_CHANNEL_ID + process.env['FIRECRAWL_API_KEY'] = env.FIRECRAWL_API_KEY + + /** + * Import the agents and flows after setting the environment variables. + */ + const { githubAgent, slackAgent, analysisAgent, npmAgent } = await import('./agents') + const { organizationAnalysisWithSlackMessageFlow } = await import('./flows') + + /** + * Execute the flow and log the response (for debugging purposes in Cloudflare Dashboard) + */ + try { + const response = await execute(organizationAnalysisWithSlackMessageFlow, { + agents: { + githubAgent, + slackAgent, + npmAgent, + analysisAgent, + }, + input: 'callstackincubator', + onFlowStart: (flow) => { + console.log({ agent: flow.agent.name, input: flow.input }) + }, + onFlowFinish: (flow, response) => { + console.log({ agent: flow.agent.name, response }) + }, + }) + console.log({ response }) + } catch (err) { + console.error(err) + } + }, +} satisfies Worker diff --git a/example/package.json b/example/package.json index 114f67b..ced2383 100644 --- a/example/package.json +++ b/example/package.json @@ -3,7 +3,12 @@ "private": true, "devDependencies": { "@clack/prompts": "^0.9.1", - "flows-ai": "workspace:*" + "@cloudflare/workers-types": "^4.20250124.3", + "flows-ai": "workspace:*", + "wrangler": "^3.105.1" + }, + "scripts": { + "dev": "wrangler dev ./cloudflare-worker.ts" }, "author": "Mike Grabowski ", "license": "MIT", diff --git a/example/tsconfig.json b/example/tsconfig.json index 3c43903..640ea06 100644 --- a/example/tsconfig.json +++ b/example/tsconfig.json @@ -1,3 +1,4 @@ { "extends": "../tsconfig.json" } + diff --git a/example/wrangler.toml b/example/wrangler.toml new file mode 100644 index 0000000..4939fa7 --- /dev/null +++ b/example/wrangler.toml @@ -0,0 +1,11 @@ +name = "run-organization-analysis-with-slack-message" +account_id = "509f0d5925f8d9fa1d5bfb6c110a7f03" +workers_dev = true +compatibility_date = "2025-01-26" +compatibility_flags = [ "nodejs_compat" ] + +[triggers] +crons = ["0 8 * * 2"] + +[observability] +enabled = true