From e0aa565192dadbc2f760fd4061d109a291c0f3a7 Mon Sep 17 00:00:00 2001 From: Lluis Agusti Date: Fri, 13 Feb 2026 21:41:35 +0800 Subject: [PATCH] fix: improve create agent ux --- .../copilot/tools/CreateAgent/CreateAgent.tsx | 21 +- .../components/MiniGame/MiniGame.tsx | 80 +- .../MiniGame/assets/archer-attack.png | Bin 0 -> 5370 bytes .../MiniGame/assets/archer-idle.png | Bin 0 -> 5067 bytes .../MiniGame/assets/archer-shoot.png | Bin 0 -> 11952 bytes .../components/MiniGame/assets/attack.png | Bin 0 -> 8150 bytes .../components/MiniGame/assets/guard.png | Bin 0 -> 7440 bytes .../components/MiniGame/assets/idle.png | Bin 0 -> 9829 bytes .../components/MiniGame/assets/run.png | Bin 0 -> 9759 bytes .../components/MiniGame/assets/sparkles.png | Bin 0 -> 8153 bytes .../components/MiniGame/assets/tree-1.png | Bin 0 -> 16015 bytes .../components/MiniGame/assets/tree-2.png | Bin 0 -> 14564 bytes .../components/MiniGame/assets/tree-3.png | Bin 0 -> 10700 bytes .../components/MiniGame/useMiniGame.ts | 942 +++++++++++++----- .../copilot/tools/CreateAgent/helpers.tsx | 2 +- 15 files changed, 780 insertions(+), 265 deletions(-) create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-attack.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-idle.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-shoot.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/attack.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/guard.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/idle.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/run.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/sparkles.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/tree-1.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/tree-2.png create mode 100644 autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/tree-3.png diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx index 26977a207a..9ecd639a82 100644 --- a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx +++ b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx @@ -4,7 +4,6 @@ import { Button } from "@/components/atoms/Button/Button"; import { Text } from "@/components/atoms/Text/Text"; import { BookOpenIcon, - CheckFatIcon, PencilSimpleIcon, WarningDiamondIcon, } from "@phosphor-icons/react"; @@ -24,6 +23,7 @@ import { ClarificationQuestionsCard, ClarifyingQuestion, } from "./components/ClarificationQuestionsCard"; +import sparklesImg from "./components/MiniGame/assets/sparkles.png"; import { MiniGame } from "./components/MiniGame/MiniGame"; import { AccordionIcon, @@ -83,7 +83,8 @@ function getAccordionMeta(output: CreateAgentToolOutput) { ) { return { icon, - title: "Creating agent, this may take a few minutes. Sit back and relax.", + title: + "Creating agent, this may take a few minutes. Play while you wait.", expanded: true, }; } @@ -167,16 +168,22 @@ export function CreateAgentTool({ part }: Props) { {isAgentSavedOutput(output) && (
- - {output.message} + Agent{" "} + + {output.agent_name} + {" "} + has been saved to your library!
diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/MiniGame.tsx b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/MiniGame.tsx index 53cfcf2731..688b5b8b4b 100644 --- a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/MiniGame.tsx +++ b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/MiniGame.tsx @@ -2,20 +2,78 @@ import { useMiniGame } from "./useMiniGame"; +function Key({ children }: { children: React.ReactNode }) { + return [{children}]; +} + export function MiniGame() { - const { canvasRef } = useMiniGame(); + const { + canvasRef, + activeMode, + showOverlay, + score, + highScore, + onContinue, + } = useMiniGame(); + + const isRunActive = + activeMode === "run" || activeMode === "idle" || activeMode === "over"; + const isBossActive = + activeMode === "boss" || + activeMode === "boss-intro" || + activeMode === "boss-defeated"; + + let overlayText: string | undefined; + let buttonLabel = "Continue"; + if (activeMode === "idle") { + buttonLabel = "Start"; + } else if (activeMode === "boss-intro") { + overlayText = "Face the bandit!"; + } else if (activeMode === "boss-defeated") { + overlayText = "Great job, keep on going"; + } else if (activeMode === "over") { + overlayText = `Score: ${score} / Record: ${highScore}`; + buttonLabel = "Retry"; + } return ( -
- +
+

+ {isBossActive ? ( + <> + Duel mode: ←→ to move · Z to attack ·{" "} + X to block · Space to jump + + ) : ( + <> + Run mode: Space to jump + + )} +

+
+ + {showOverlay && ( +
+ {overlayText && ( +

{overlayText}

+ )} + +
+ )} +
); } diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-attack.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-attack.png new file mode 100644 index 0000000000000000000000000000000000000000..af199cfcb95810bd389071c555c0ad87789bfa77 GIT binary patch literal 5370 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 IV}nWfKbylx3;+NC literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-idle.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-idle.png new file mode 100644 index 0000000000000000000000000000000000000000..169ccb7d98c6cd3f7d878cef449dfd04686b78d6 GIT binary patch literal 5067 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 Pm7I^bA1*(1>gxXj>dNAC literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-shoot.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/archer-shoot.png new file mode 100644 index 0000000000000000000000000000000000000000..9119dcb77882850f9154619474a50ebf2ec506ad GIT binary patch literal 11952 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 F{{T#5u;c&$ literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/attack.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/attack.png new file mode 100644 index 0000000000000000000000000000000000000000..c5259f423b9727b743a9aa48477032be3dc4ba16 GIT binary patch literal 8150 zcmdT}`9D;D)W0*xpu!+Z43lM0ma>#EjIoVvB43p)ODKjclZ<7iP?ka{TQc@7#+EfR z`hE!|6gBpdWS4B&XP)W#E1u{6aPQ}JU$1-4`Fzej?{nVg#9^&Wj`5!21pwffnJL-^ z065r7pdE6AeXo1KS;BsRf^1AsKvm!A1pt60o1qP^-ha6=;ZkZx&uL#{@I0^x7c(!B z>4-~5N$Gh{XXIyOh1R7+li{e@ywHWThIekRX;fjp3)3HyIgO2FzUUS4A3G!Z{Nx!c zNew}+3ugY3XN5oDjTe$ny1^_sIJ_kNz6IpqzcJeAlVK}uG+5KjQ;eI92 zf%C6@|L-p{$Upa@S{scJ@#pK-E_*wTW^{Rg%$U>*a8rcWhK`*G_4_FFjsDtU^qto+ z0EoF?x+Dasp4PJebpz(*0RW`H0VO*0tNGrj4?|FpfL1%o(B0XXFJ$&QP+}o9{D3~a zNx%z=iDnYU&cJIgT0ZoEM5Lx{j=c@&RNzUj6u7wYO(`(wr}E%Ktc?BJ{f-kHgfKD$IJhcE#vTPq zqxh3K3Fn0|(I~UzR|g04VGO8XrU*zFKp6DhZ_ESQvBSna;kaU}x3&H6j5F7{w~wudvvv zX*1Ea29c<-D{I@Gtu|V}wooKEp#S=DtKNezG57S=WDORZH$wjLg6+*NZR4)hRvl|% zy9OgjQXYy6y*ZC6aL@ab=OT)hTt?Wx5x|a&s<~C?HvNZd@=4vswJiD#=Bq0OuDTy3;7+w&kVmI|L(I1$B?_PbbOVagk8g@ z!~v6|h$D-6Kx}eBiAh^O-Wnit)+9_+VAo&{07t}+QxofL#c@mj@~Nz5XB2?`I?0BU zjH7OyuNnLqe2H(i<_E0romT&aE_KMp#Rdg^Ufq0e^9iujy?uuu$$Ch_)D=C4{n9}G z46IwKQdx~957bp1STSu*vbf{ic|34yEol}jFNm>xxY>0TL}r|R;sL?&bRPcnnR}ho zC5Ns8Pp!WRstuoQimet={*dPWi@1D4_1S^hF}~=}#n|=S^DB>Wh1qLZy8M7wIwi+p z2b#&)>go!An&~*<*sKKi*~q_;bAC$LcJsaPk+Q*)jsdwr$BttkDwj|*dH&Y{+x8Ue zW-9r%g3$)`n0cK_=W|=N=k=1jKtcw(`>W6mSwS}^U{3}gtgrTC{9t!5=^syqE$7Wr z-$6$29D2IZ#A5B=kNa{BuZVS!j7Zt-)vk*(Sty(mr(>44ilGSz`}tMQzLGqOx?S2~ z;wlW_65<#wH5BVZ!Dl0zFtY#E)xuqoedlyV`m<~0kO7KTgU?YTAh5jdLA=ea#&g40 zfcy2Ckjx<+Z}L^DU@aD0Xq{=R=|2X~jjTT}&Vx02$Bw$ow`71K(_PNX-O5u$Uw7dij7lZD@ma zn460}cV0bVY~bK0l%W0ze)D{0H5q!n+4w{Glb6!`yd+Ywko3lmC!ACLTnK+FRm}M_ zjqc9;S6t;ojFz+Tvp2(xy`i>|pawYL{ZNHzJN9@{AYOqpyoai7B@{!!Nwj}@-pUT< zD*X02W6;2fc+wv%;ElmV>+Mc0kE=@=gOVK(lZKs?lQd1Lv&5n9-gX0AAL+H><=}r# z;N#0$GO^iN^p5ym7%oPCu*y*fsX^l|O2?Le^E96ovXMGfSN=a4@l^cHdo-}B0 zwvo1~D=PH}m*i>ReV81-4D4I)ru%~kv6dOT40d*z>e$%>Y~kKvTn zt-NS?jVfI0VMYvTNzQdKKsy^7qi5H5VngjRBFlHX-#ch@0NePn2oNBi7yjZ2@Awwm zE&cP?6HV$vExA7tl#$JYKO@@?xh?WtRu@A-pb6%z5>*s3IK(0+tRN!?xOSdMU;e-Hh*>KE9eT=;+|%F z7gmGkEgZM=B}BGrc-lQ#a-q5-8ui|)ZNH4)b}wP%h=2)#cfEHDPv6kHzU1HDRMZeN zd$S90B$164&0as4$XEsOMiQ33h==`hKaN?Dk3x!zdsp3nOr zuRiK8faYP%o@BP~Kw)$>->#a_tyk?t$PXt%rJsJ_PJ9_C^&VH0bI^HVfdMre0&8p7YGq}JPASBy`70H&R{KMGN??_}mR!6!uobX$ zx#iGxj)KDavW#s<>b<^858p2At^}4Puh=Qo}`M}1g@;&F@Ho(;ZJUsXSUy}$P zRt!v$zWV$;_*(~e{iP0{%kn8ibxT?uW%t@yht*pj_EZH~r)uQFkQDY`<#!5uN09Wr ztmS#VkEbEV!0}d=#xfi2e3S%j_VX)VU7_DSZ5u7{k#0LUBrG0L*lRCCagt)bUfXzg zze(HDG4QoWY578-JYGAQ0_lznMBKo%{>GhproDH|hZ|?jv3Qx6gqD>-g(WHbJuaQ! z&#%*k3+s-oS%zX!{UM(>^8LU+vTZHjB`CU$q9wwToNw$n^1qRGn0wZ2Y(aeOx1L%7 zQFZB3C$H81G{?Pujy}yx%4#{T6CvDw&$iI;qr6$XfUF$ogU0huo`Y3C_`2vOv~Vt5 zuZ~T7+6}R;T3J2MaC@`xtXKQXO5olwaBPPtNUTwljycaOkObB*kN6#u2~n7RHLqxJ zo)4s7*z8eqOs%I)5sbM13?9<@`zdrED(UoLOEzRZwMA9zM@q|zBq#0|fw@ zrn)-pdvW#`g0SBI^chy$zCXF|$?kBa@B_s~VbH7wN>*Jhj+isk_01qHwQ}1f?j+aE zQ&^(i$dXG(uF9J?|I{i)oa7P5gRnM9-p|pdC4Ce4%c1R8HD)V%of2<}AAZRcO>8q! zxgK(jo%a-ax!zH;^+!8=@$=9zXE%D>&n)njIXzH>8R_O6X3v&)RIYyFh|Si@B*2f4 z0Lz+LW@KAMyDg72Gg>tAnT^R1gAQh%GvS$c1BZj)+wJ+Hk@TuN{UYys{#-hF2R7@4 zOCQ=Ywv751V4)#_n3?@Bahi5qBJ3}eGz>T6w}u`6tt9#bj-cHnJc8v!T?o4U@^3J4~D zAEH$84MbI=O{>{-JE31y=TfSa6OV*?vq{_HS%~p2O3kGts_3KTnU zO?dkO@bskQFGayGbB1-I+K!vUpG`pMWh0WF;_QBM+t&A|on!T07Q;B2LuUg{ROLi_ zLHubmYdGiY9aJ=kdlj&nJAD}(QlSav5cv@RVKzIR+W~K^mMz5 zj(I`eWE*+{fJ2u-Uy(ZIR?(zutF%ySH2NOwI_&f@fy`WZ<86Ats`G5TWHx@36uS1i z^KIqRl!G&Ni89_BgZVbjJkQ%*7{_-l~<@V@_K>V(O+gzl)F^CldMx+Nx$xb=ON3t#h(X!EK!uM7Z<+Q{?7I{_nTuyCC_ zCRK9cB4e^-a3T17=3QOIG=K5_v_hnZZ?h=OE1f1@Yzuej3N0)*;eV~$|zLn$Nixa80ar`o$t3kn2?g5iHOZGJ|Aahpd#_?hLy z;GSmV*PNcKwAgOZMumBE{9?Q7C88JpSItn9btd!M*J8mQ?%u+o&h~SOH0K25l){rVZG6{!Wi&Trc*$yC_;a)Lxv6%w&GN%pT4^YK*W#QB|ipz#-cib7eR z!uVQIh+GQ0dJnv`pX#ECCs@q}!-`q@bMXu1zPPDn>&TJ&%M~7vc6$+)i4r8gi2DWG zJWp_YNmU(X0tk~k;t-McyY8IiBMwR44n4G2kY>N=!dL!3qgC&Cj%%&GGha{AD@*O} zN<2EV7h&nnMA{s~4aR=C2S8mp$?3i5?iT`Ot%VKYcjhkz@j8~X^Tman9-U$}vUQ+8 zayb3j11FW0l|5lBspdVAp$Z@zo19Ld$k8v5Sa&_sM%9eq?paaOeHeVq6wFdvMmb zjb(9Yu=oa8$pgHvrN#+NO^<>~RJ*|B)og1Fd(U5mh5jY^(;It8Kr_KAC2&6dm}I$;c@8LJNGhZ zA)ZKI9hgfl=ZlYYm1bUfI6PxgIKf#O#|Zj49qN-EB+II4V-2#KLF2Zb2TP0)CrI+a z)STBQv)efV+ppcEqQiZb{gGwbF2ZU@+8?C7HpFOKGD-yI%p+HAK^@aXmU zsL6#wI@22)jfu^EEw$`o?s9dR=2 z$WZ4SX?!2DjrE`Fdsue2#OV79-ZX?q+f3~Je#G|JHO|txA)>7t zYhb-6Cc_Td^+$cgjaufc$WBw^tn$vg6B4$g7Ll8itcq2qSctCUS@IZhZ#Yj%CCc@Y?%hEhyf;y%)fb zZ065!?;Sgdi%VWTC6Eeft}@&kY93$tSA)e`3=>78O_?UjvdpdAr4!(W?fB$_u6!Vw zn`hwHnGK%g5utJ_#ep;Ss&(`{m(g)G+lZ?Uzbl2RxBg^{MhzHAJ(AoGyZ5Vca_iK5 ze0-Pga_PG z8IOuex3fhbX$RFmxRxi=t#SCB-8-lg`}7PF7oG5+YEEZxAL)pDPfUE1VrmGwS$!_? zbvCd|Ft8oqix<9g3ft#i{_2H;ebU#KiB`oUzA+?cL^L##_on(Mi-(R5u=0K{T^{K5 zC*Oy!)F>`>W=&-=ZMhSOAB*Qiah=4t8f0(*0zhr#+1}Grqw{nKb8bG&M-#@otbA;B zHSj6KoJmO=EKqQpDq~tm@Jd`E+-yBjSS7lIN}MDXv(nzZXbKTw*}3QTk=5CPvI5!M zsylFNdv1}7%hBcpN0(p1lHu$8ew$RO9OjLUi+gL8R6^y-4S}&@b_q@&opyP)*uyFi zU!vq0UT#Tbu>-R|P?{dLaJ1Ynm`gwL3LtCGZ~4_3EA@EDXk~9RS8vk>jL$Gj?rHdA z-jTX|tu(r9@eP^6Bhbd0u&JpqzK4qoQ&_W}vxzKd7P^~iXox>?4Qy#!vzpzITCfe9 zKNF-^doG|x7WVjsb>C!mR#U}<4aVxu{2@$P7Z!g#_u~5l+=QivBg+^0%S62IVso|c~Ys}4p=Of!?JxM)J=7#PKqQj(i zVe-?&m&OwUUoBI76Yjek1Dldp9M*F$3)XV!*s0hoXmQ(K-fQ9o94N&27M#?q;VVtj z)vCOmY^9J&ihZ0lVnJ>0Ldkfu)~!}++eA(Mb);kmaes)m+fpRa`Em(i0thoqNj^SG zvg#73jy6$0UKjAtW3ox;=4H-(=zhiwGPu!|a2w0ZI2glD|FFR;Mk~*r`n-vkqQ4|E zl#!`D9)ZNIz4}5)-ycA z`|P0q-j3Ld0n}yt+JZV+z3fKZv!53n9#X~{UCor)#Bj18eU@N=Ys->g&nOMH&{ zmNgP-4_D8zDuFMUHDw;yPyEM97`v@CjMkoJNU-kynBEm}@Grf@Rhlrvc)n9w7=P15 zVwM0rtDkY{Z~|sb51eR*NKM?$@y(eoi@;u)e~6RYj%UZl=f|@RGFA}9Z3{S*2;g)j z#-yx`9AR>xLai$FLG=WH=bT(2miGu#qtsIHdgK&_0;j5u0KDr0C0YaE+tdKD z!<$fIG+aEVo(b$$%K`X~-Xg73qU~S}rBO>`bx;R6+J1331?KXvki*gWIO@_agZMik z=I~1^^oA5=w8P_krn((xG-2Pob$>x%Cxxi{ElB17{-+RG_;g>o^F8s0yxZr;O)9mD z3J?5mL}PSXFwB!&`l2n%he<}_V$?J~pHh9uXQ2puoeX`WstgH-vq{e>Usx`ypZMub zNtz&si^D;qOU|n>Ke~CCJHL-eYbpIKfLY;M$!_6`bl-tS+JC`i@6~zDF-Me#onG`u0Jn_h5$<-Ga0XqcNUk7WdctA{^p=^dEZteu0E9bMED=WZ& z1U8u3UA_q_-^&OW&grp%3+&T?nY*j`4O`R&ETg`z4x_wW8MonLy~#+d!pSp*$r>wJls zbfZ{-rU*1^9wU9ku4o?6Eqj&o;I|jjXN%Dsy+lf!K|1?e)uWxb^vw7%UyLr3kCBJq z} z$3IC{jt3%It#xz{P)``ID^$pk7hY|s=0 zL=A2kjc6V-)&2H9iOSNt!d#anR91m)Pl-dFrUAA57Fdt|f@{!+s4-LWv05=Oq&vGtW9P&sE z>iDI`w2Lxb~* zkv%c)8eD4<(ZQ);KMDj?pR|=02;v@5lQWtpswIC(G-qDU(i}ye27v4#=l}FXj#ou{ zz1|>yr$3h59QtDtPWcW40YHMbZl0_NmyAw#UbGwePHX2B>)o8|Ut`UTtk6}cn-Bj7XEhi( literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/guard.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/guard.png new file mode 100644 index 0000000000000000000000000000000000000000..064c170adde29fe036193a00da3f025d912235a2 GIT binary patch literal 7440 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 literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/run.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/run.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ba2f3452a0cc2c041f0cf80aa93fa077f2e3bb GIT binary patch literal 9759 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 cqPZB7Fs8z%BOw1F*3fD*ylh literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/sparkles.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/sparkles.png new file mode 100644 index 0000000000000000000000000000000000000000..befa6f253e7cc50e6f6badf6e3870c7a4d706c64 GIT binary patch literal 8153 zcmZWuc{r3`^uO;r?=beUBubfV`Ian^RLYbkvS;6?vXwn$3-ekkqL4xfBVKPl!YPL!;4Glzyu5 zZ0;pS`q_Uajz5C0zIkLgS8i7oXSx{Xu$k#Saov8V!)>+CW8)=dj^Xk>cKh;$Vh`n-E`?tPm6WT4kdo5Rpu?WLrk<*@7T zZ=G8Sj96*5pSl(__u%U0gMgn84Q7JP76QU1gTlI=>bJiz`u)giF)8G8k#)XNUB+k>?1e2xvt-fCusRQ{)EcANVY!Z2y5-u3 zZRsv+bn~qi%YRQzu=Z_>+_4N-tizE-x5V;oHuKD|Z&$HL4y(^hHj2!!JX`FA#cGE+ z_TuwloA z3X8d7Q`U3CKN)&In~awq7_HImC+g0#qAsj|vB2Woun@B>t3TdrgJasr*dsr z@y5MnXIJuE*ZM6x^0g;#p8J-h$-JpO{mJa}ozwU7BA;(3z?p03jm!Y2!0!JfStnJ@ zJk-K0x8Auv3)f?9)OytZ%+2w7qCeEzP?NAWb$5BO`^%?~&;HF0RYV0(jrG6D{+aym z=KIy({r?0$7nK1Zrl+TM+B|4*s<-^gTN9!8^MX;N<2LNlQ4qV=UqKN@{=$D^85P=b z(}`_{Vn6O{%i6%wrM`X-)Ceb6-;=&%YtHz-n_WdRHOA~Uw{`n}3oE;_)FG$PP+vVB z9Q=1w;C0of+&x|XPf{DT6KMN_SZaZ~>3^(!yY(|)JA{B~bA10m?(MIq<~PMipB7t` zs2raBg`mx(dlQ$Ll`ah3&z#3UzI=^vj6VFe(!?!En2R`O&m2!2mD%)YR{XT`Iwd7@ ztlI(o<-T@;!X--j18lwN;TDVjsA39!rOnTLfASIS7B1$80Xe@{Vt_s7*QN{TPN3XR zfmU80xA>~&w38%|Gy1Dv(*L@a(2F>5`b&2O z5F^#IwZ=O^3J;-B>Z`~2H?3b5;Y|+8+(AX79KIctHb`}Af(rep0*A@ZyeZDf*%LqV zxy!gCzngqGigMC7B~aUleWFGG4&ge+o=c$m59RQ@OWi>n52&GzlwQOed;4~0@gEmIMCvbmDw z^B$6ImU|&z&&`-PTcKAs4}3BFdbb7LeN#aD{!>fEX_<6YX~ml*L++QvpM8Ijn@$`O znwBx2c;+qP%_$(x5RN<1k!J&L9qt&VsD?}O&pPGE9^_VYV! zc4%tD3Q-j26xC7Zi16&4KPc9fH2d!>P>@5L2OEM)jwhd`LJY2m8ldY|VKl;LwaCVu z3KHr1odNXe=O>TG;Q?J;00tbn-GAi>0p?qsY=H7$Bbl6k>jd*;cUo3PM#gC>2k`_%XhgDbiG!TZH){PBqHcI zLM4%0PH%rXd$*yAhui^;y8@m7dYI7G&Yk|P+#DU*O-PUwu(d6zK($R~n(7>3Za#nN zE>x+A4>S@sH{33c2rsdtL=t)okT{vPv49YevLO}E5(bBFv7{J>kjfyL6i};u3>w$i zKhbrYg9K0y1V9odY`>vmtegy*f#Sv`WC|$s)v~#1hDAn{)e+68j5~ z3{fxjX!X}B9tuFVAQIAe#aG#S!^@OYZY(7TF2LA<%29TCPDloYqzB3x>-$D~*_IBY z2Gs&0Uq)RSFOWoO1UzVmX`(<1z^XOF0;S)~|Lk)g0Ur+l!@V(~AJRctyqxJNA%y;iHAuLOo4xWd>7Yw{f0@?kfvf6 zD7U_hee!N3xce!`99;RcXxL7`2@MVsXgh!bx*~b<#=(ED?p*|PR||zu4gnSTxLEXo z-2quui1&Yx9=h`R#gWWAx}7{Rci)Fxa-~v_?oR?JFMIZm)%V|}Ovr!?OLj_1&4uR9 zm|Nt{oP$i**s&td3%1&-UW}q`-yhSFaBaZZ|Mb@SnXNYE+1AKFE3n zE&>$5;B+EU5};HnaqveHoVvcgJ}94H@;Ixyx8?w^cqE81UFTPV!&|Cw|Lw^n#Ql5- zi0*MZIcF%P$x-jBpmLVuf6Sfb)97CI3#I`Ir9zxX<(HS1wDQQ$ldB_^vqVTTZ*fdF zpn;PDv^Rp;Cr?4XIqXSbzXR`8a|hTN6Olom5=az9^0}-illNgEE_fh^@)YGK1j zwe$Sjb~%jwl6$yaF>poUL_wll9ru0UfLzo-^Y_=`k5hlW*e{!6N(BnB20k}Za>fl$@0<@9SvfTA@j z5AWI=EdXMxjvYso0HW9?NS7r3B190m0V$B&95ojw6m$GI!dJwT_KT(KOE2a_P3C#W z1BrF%fP{pssIAL8k6!1+KB&aTCnWI2+aY3)LGxTXI9|WY;T7(iG}-B4&NupHyy9LQ zSUuapPe?*z)Cfn0AU5Ad$lqTbq>z)K_1oNfi9J`@jeJt!BSxwKM+3zy2km9eHT?+k zkggPz_+`5LZ|7C^iJ?!Q0Gw6{(numLPLFh36EtqE3;3A4-ZQ5X%isTVPQJAfs!l42 zD3Q0&5Xdc6(27?>S_tC-3YC5*5MH&qgi0?Exh_Q><&P1{~6M{_JLe~4Eh zqIATM%0G|=MQ^M6Lnt1cI?k9n-0G(ad@cjom(*BtivR_!yd{aMiJ{dZXzdr4*o4nc zU6!#VGY1OFXJaaH%<-nN^)y~XNVI`Tzq9iy!aQ^#aNNX6=W8`r!E^FsUbu7Sc1CVW z2@2BEo}76v9(Zl2@q0ER1f5+;l>`xQJOic`PM=(F%3}!%nkAbh@DtKTSpgC3>hOWEth2GMz41VQaGo8>rwAqzfcU(zo`JxZ!aHO>mAf{%cpg zmh$TRysbaib71GRcY1se5D`zA;x zYxR8CUpt@j>$-rhCQaGT^R_Eyvy}d|^!wqv>zj*qTeBn82yq{p2qb-}Mo*BzeI$bH5bYgei`E z`c%WER`FV4a-Wjvuv;URH8616F)z;~%~kwS+Wh2-z4(^)VA385Zqk`$8*-l&SiSyT zTbXnlByD8(^M0BALO;vpv^UfuYhzY3>^XV`V`%QV2Llu2D)Ka3{j?W*!cdwc#&x`W zuC_6F&A8rg>Fy<;%BE2{l*LWSf(+=i_3p<4RetN>&>mH&HLG0s2tmgF2rQXF}`Zw1JbNJXtY{jSfEyNe8Q~iyXc2U^R;!K3d@hDu@iOP`2d(yrrwbm?L zvA}u?%?cC_s|CS0UvshWO$bQo&CT;KSgJw5ZO@t9yGJe~z9tzi|R^sqFLmtXvkpRkCaf&eJ6B zp~`PO^ww35{NxN?`?uEAv20vMPsy>X>c>A8LgQgFsmy5gEI{3XaEvm(h8pB|IG{PN z4_iDc9zG#n0nDjAsX&hC$tM8etns}z$N^bS03VQJ>XyCT$Y4r*b;2>nf8Jd1iDjK- zOA!0K{2w$w0{;5R?^~LuSX6&3HEFc^*6qSAu>4_OLxSKOwvW-5 z&qi@lESRW3i}`?n2{JUIiVJ{M0sVwR{p2+FT5Xe!ld}ntF|PqbOIClsMY3Xq2s0jh zY&Iwd!;!1Ff6E6(Dnl6PL-g8%u#tpe17xMPs*`U?Tm)&0B7@XW;l8Obtf{qPeV~ z`RzJFPSgdll0-MoAkmxv()vaTQRv1&5IyNL@@X4+)w<}G!epv&*&&>a?=auH zyUjb;J_w?Izkd6*10rNh4~X8dLtrJ?%c6(+yaKG=Cac4ifbP+?ORNjjXlx_0^v1!6 zvH8KAoOSkMc-iZv2BP(Y(9fav87XZTbn&gnr#-1GK^tB+eOwfJPDTYPiRRhVi;#@3 zDkZuvGwjoAY1D9TNI*+ILQfiHN%n*@TZbE}SaL*xWgFTl>k)Hf*y0?$k-JxlRHM&| z<@fatTB&6(QL5)GiTafBlOqiQ{In)1GJ{$w+`m^6okK%qoL*OQw2aXUPqmNQIev}t-G#CdhJH?)s8@Pf^SXBP~6mtg?A z5jhkWdI>KBwK&w5A536h^yO&VDe0wX9k-$yv4%X61)=-Qo66k+Jtj*Zc{{9x`~B!V z>XZ<6{1m(7Twg+~=ws+Kx`J~rT@VtGMt3grevYfBnW{45Sj)M;o#Bq`$i`J>HS` zWk$}437@NlO<2mCQUWu7M|kt&$luh{D3FSfOIRNgPXY!+-Y#P%5HO~DldDbqxGq?+ zPp}_#ni%Am?P2OczWpo12X097r@@lPKjYAyxM*o`8?q)xukR<7-5$(g-P`kqtXE~X zwbk?)5YQc`zG>8l9V2|oJb4h&`P90;1*15i49bXe+-hEk5gc>r`jw`}oE)#SHxw(U zZJTcRY#RRu2$Z5JO%Pcj6JbE5YV=Y67UpLv?Pp3?RuiUrfY6MO9h(8^(sUzl>GjFJ zz{(>>@VIQ<;Hpta%g*rY=W%M8R$P|CJ1$3lR+h{$Z=x#freVr*w49CEX!<8xHWHM9 zvzusu~S=`JP=AXpE-s7`tX#CU8knSy+G0K<;$E6qCdE2_!=gAi#TsQs1Z! zKAp_In&vx3T-&Xh%r4bIqaQ| z>R&Dh>+B4jYp{j@nZVSE`l-%V?Qry{HX3TH&ZHzr5?5#nR_$TlTQ$>m%V6%%g|zyOsuT(@w;S~c`RXr z$a6ae*{^LZoH)$Wbzk`e@g!6_8y-2r|IUe1kpxF`gxpwNJrHSBGD~96VCbH_@w5jn z`;XBTxN{2@QkRT~-*)i>Gy7B--t-msk#dl{D5 zHK$rl!RrD7pe@G=L?s8ESfgCI!x54PtxsCxCjf=h_u}O2(0_v?##|$la(l!R0g-MT z3}|DqH|1)$8}{f%I_@~c@Z?WSf(>X!?Dko_;hlpE>4)Q`qyl>pqQ;+vkja^nGf~Q2 z(_}-4%UTBIQ1vP4z5t1k#_ySI>BimW8VMKJd;*QPxq`V^-(mexHa!sW(-!48;Ii?t zvok&EID2HsL))b>u1x2aYAuMwNqbd(gMY*54UfN;VlMvpv4;&H!Gp=2(m&!51Y=HJQ8F`yPO<-F0hva%W=i{96EG#}Q1HHm5^ z2ty+Y5Uw$>t4&Eg_9`1mfDFns!PMZ_{_8A>zy}uvf=oFpO(f(J6G=q(#vwPUqj?B9 zVKqa&w*)#Kusmc{)qnE(?+%eeFfwgJ;*XdTKd`#H?XLJ3;PCa#3aR>+%?r$nt)~L- zzY4v`9Y@K84M>31p>qF;y%GS4@Q=UYV9K_loMG+Ed1pzL@f81qUlDkR*k6%4W^)z% zLUhq*RlJ02R>js!F0#TAh+5A@$^NQNBMQ9qd$-;_pB-!{=s1G1yolCK-iDVNeabhk ze2#V?uO_5zi-LTAjvbb)ZF|a+L4)dE>p^7NevNi(`#YWdD0&Y@(J;;e4RBu_u!iOb z5}tx}DZmjkB7gq#V!-H+fVWRX%ekx})mTrna?VzW@JCdy=62zYR-Vi1i!-&cKdVREb$j;T&X=OwnT3MQ&#DPfmfnPp5gYzyL zb{R|Ge8iJER-;VgaIGx}KpZ4-Pi-m(32}^gGn2KT&}mIl ztU4`7tE=0kOmsrm*`bW+Uk~ITX>TQMt6ilJ4w-0!h1KU|W~x)TO~ppT?nU7`p78ZH z#+#_~z31aq8xU0D&!0%4l;IFfGreIx?K ztIl#y9aO6CTn+(^8~5-X`%nH(cGzb|%Z9)?fEYKuMHU-uEI&#TQ^6Jot)XL1Oh`kYm~zPrLCq$)B=<)ejc!G0UAw%OC=c$XXG^M(F=?CR7NgzC_fTFk%EQ_6du=q zzdJkfw=zN_=qP~$bs8|(hw7rTk+;}FJzsf3XD51NmGG3E#W_h|4K6ia2pmY)40F*rf8W7gr5VoY z$=W*`k_19-T&LPUJ{UQ>drn|^@_=M|N;d1v{boS)B`HF1nBHsAlvnGYVmU4-9$2{8 z6k6G~sd6;3t1J(=DG&Ayg?>2Wle`fp^Q=x7!H@bJpWtB*w7&U5iA5#phnZ$ zT3+glp{hdHfmg@kYLBTaod$l03i+iE`_AGgkLhOjIMJ*tqg@O5h$~Iw`-S}76yeq9 z{3zHTf>d4Ll2y5%(eX9VXggA(BkFEA6-KUn4YG9k>{gHmnEYi#YX~0O{h#j2G|434 zNMXLMZ84nAnoS;Phfw}94n+t^jGk<(6Zh6oFw%vV@@c2I7;{c64F%(Ko&=8c8;2QEiA(!e<~>{<5{o2}B`jtj*IWSslv z;rIvd0w??Pi6Xncz|N%M+_N9=Vp$h~`X4Deu!jEWa3*U?Dn^@7`Iq)b=vM94_q0ve zuE8R}j$FXdby0-3C!C@8w82ApZd9HB)C!5q_W`gZt6ghM`uK|#v7Kxk#(sbiT6m)V z3Qs>?gw~>a`K9X;K}^d4jXAN~?C+9L0{V~)S5EQe%}BL+Fa-~h5ro(lcscG-W@bn{ zKG7QWmF?2?y83r!dcO=>f9meguP-*wbaC$6!(5Ot>Y9}_D3`JJ01+WSdGftZ+d}>1 z$$TBO863(OZNF>o_D=-FP!2(!L{Q>ofbUj^#n}4A8+&xGpZohq`lWF8Mm545eE;ji zuC#4fEJhIW4T{SI_3M=gxaM~CGlHs2Umv)L8z0K@$yFCsHXA7ekmsGX??0u18OqT@ z{cAGI>L~?vwx(d!9Sz+XT+Vh10L1)%9VE3UJnEc0Akp><0yU1h*K8y@Si28yhjd@S zGlv<-i--+T8r~<`-T_y|&j1;J%iy`w@}MX74k+?bwU2L#0dg>R*`ehza89Wga1^u^ z%log6l<1)N9_l!Aez?a8UziT7!${)TOp^nUg)$+qRP{^rGC#%*=|XZ5E~f&m`ZKz_ z#asEwBH$pv@|JYxd&IzAbKu?e`^sLZ1yKvC&+E`l7Bc84bhrbCGTS>wAc`O$Umx5& zaI6@*UiAJ?Wrq)G#wSXS1lE8+8V@pj>>2UEGxT-{ z@{*^o;`}`zz+>W_YwG>A@A+!byw~r7ZTS?Bm$Qd# zR5(;{@?TXM*Cy+=5LpVO*xE`@emb_!>$5UG{dYnn!g!{sS+~Nuq$MyY-O9~%#7l}I z5V}YSuCqsU1f6plt=ei%6WpWHyMKByo2I|N;Q%Cp&IQ64$NbX`M=8Xbm5;!)HKQxP5iL#rKoqv`m_Q(u5ob>xzj!lc zdf2e#0P~jCtZLbf+V{DC>Ymwm_3pYWyZt`@YxV1WQrjYxQ@QEpEag9AeMih$yEg6J zxBjeZ_>Iqhj5s?yOaCqI_~{*j&l?7>}Y=DW>QR z@VMabT`aXY>2CqwUFRUhf1F8o>e{b%HYYQG2;+ZE2DKSc`%*GRmIyM-m{Nsj?yX68 zq7;ir1V{(-5d+lkR@@|Ee zDw?cjoagQrQ`{U`yS;$vx@u%MN3`j&)OkcCXTydEG+E>Q6yeFeVEhogYPB;B?O{^z z00js?qs<8EeTI2$AAQSVQ9KuI?sq6eZ}_-xFm!iZ$nJP(cRZLnB;~h}EdK0fK>srf zb^n~?0jCW6PBg*_T66zj6!Lv`S`&L^*baLU2b|x2eG!+6zj^@)cXl$d1$)wYa7C`J zb1QOP=}a9>F>vYHhcW)~rxk(!_rJaOBFqm4e|Thd^%^YRLjqV!U|rd}d+^S`2cj)i zTt*i&Aps@ebc?$7zefxY`lo8b53p*Ie+^T78o6YGU0VL=V*cRe7FEF|WVxy2f!8BZ zy`pBnPm5u2WjXy7ra>8GsfdZ=n~4w^YquVSIygZseG9RP{Du=Mg~ z)4KLVwo&DY^})OOD>L&T^NmuZieDzTh}Sq9#rDcL{)cD=y!stdS;Q)(!tDxPBLw&fG(GWv0g_AOH_OU61ovg zt4`UxHo7-9IGuIkWC+_R)1yBrq|jXQz??Ns6XmQ^yyeY^30 zLF5#h|VU0GY%D>I#rqry`Y(h);Jv#(?fo9)= zLk01iuWQ3Jp5-Ai##7NvkZFvkF;DM>Hx@P#Kdc1yV{W+ckW_J}%~G{ov4d2?(9#Xg z#VZk5hYQ{+>8NYXPXrbdSJ3a~mS3>U9YbY!u7fN3`ol(81Q13(okP4icw`Bi`Fcac zcF||ktVw4A$_CwWS7(mg`BmnL{Kz$m_@t_E<$`r48#TjNUAwA&WU(Fygi2TdGLMi% zA7yFgWIDLO{SMtvIs7 z!vjB~_vrsj{@T4?!%XW(#!&#wC;^+pOV}fCb@=js)!IhdD&$9OvOZtJk_b)9Sm512PI|I0>$$U^}CdZ8PI$xq3_ekT~|PbMCy(u%w_OV}ku7(p`!aX*3IT@!yF8i|e-( zVl8bYjh{3?caW_>QRP%}~8@ZEaT=1gTm`^hkEd)-wlgYCDf9@FKB z-DI>L#O42jslCkmwp#O6p;a8z_phfb(|z(E(_Oz8p?iMQ+YA);^L}CkP&YhwS1*Yb zHzm@lVWBwJ3l(j;Q0GRWH=2G6Sd)Gop`uu+@C@&PDevbl8cI4IZd(7mq!XUVPMOfG zg;xmEhgUg=Hn?zgmg>_8Q_gQt4GB)4JSO9QCxq2_Jq5|S>GYI#8$-0(uWWKb$`caY zpz;4{u>5_D)yu;o7v`%0;%pgXL^fm~WEPvb7?BRYzP}AJof-`LJU7;4Xs@p$T*juH z{f}20W2|zNBv)o}C|91mC}p?EOFh`}ZRgqIWKnS9r-e*dwofszY^!yhCv}!x$psFo za1%Ss{-cSOn2YJW$n7K?%E-zNyOfLQ>m1^6FYZk0tsUn=4uKB}cEJK|Z-Scl)XvVk zr4=}8uQYM|KbmNhz2w}yy0&vR*i;&8b!e$xl4yRnAU9$rpfLF?0#m!Q{R7l?JyE?G zJ6KKN8BoNWQ~&vP45hQ!xK~CLY>L97C4S|}s4I`o7SmP?dUU{P3C^N2fy4{QNRW%75->*~(78S^7F|+|}*0$^gU}DL+cVq%xltr+*%qa=k^Q^&AloweJ?5tgxn= z@TmGL$miZ2#r=xlO+k1Su!0qo8m64pF@F1X)YhFtQ@m~s&->ha`={-} z_Jfz#+2aA7-dd7;9=XFiMif&arJA}QQ+px0RkDLRe&*kHOm>iYe5UqDV6hg~?q!_H ze*QaNS)Ed$dr=)|KRBhDbPs;pjUlqAkg6Xi)A&Biu#+GId$ix5Dr%6hrAPXU7wo}J z__wOuS`4j~!O7s>&?5Q1G#p~fGlMU5p|6Hji@Xtkp(dCN=q<*62{qE7+U;?VHDD3K zGNw~O?mJl^?vYl?%I4Mx-^n=L61VyGNQDgO0HRo(q};woSX`6K8BgnCy;PlJ^eEP_ z3>H&pjN9&JYXd&Z@4SAiH!v^K1jfb5^l9Rbv#7 zy|40LHvdU8^dd#-;8#KfsAtUdUO%efemY8XQKyGtXUfd^C9pQFFb&?5y^|wcO&@P`mw}Z8Jo!u0;K~)0#z)3CYK{@!dkb(atnbc^z)jsxI5~T_rlUhsNM{Q z{{m9_#8b2FTF~4#Lz9#-OZ{*0ouXO`pVQ|yc2t&YZ-237u=F%V9&t%Jin=mMMd46; zF>0&{tL}INgzzF<$q83iqy+C`7?=1=TG~)c7zu3pFQ1_>+Q9CkS63-#2L5&MlvHe) zwW8>oG`^_tIo0-Cw7zq0J_VVoxmU_HP20K+>=Y{p8slHDScG@VKQ?tzemHE9YnlK} zv<8`ZD%N1pZGVc1%$+RPk$a02pY@a!MP0;)PrPsIy+6t~`Q27~zauhFNp1>}aAcDs%G{m*B_bW&Ur-bgzjh zQ4ywhXB4TuScXk*Po0C;Ao0J~fJfuRi0~{p+6vcD(73B49+?^kW^y5+OG`uk`c@v> z*}daJEU;acFrdrjUfZp@Hhz#(5HV`pm-=idjq*DJYkMglpqcNP-gUF{xJ1J@5mZIx zFMXvh4p!@MbD&?zDQ#H7PwE;C?L#$TiM%0R(mS6?;yo^te+Bo$MojsWBr9O5Sp^97 z;(<^{A#Nvkjro?^gafawBA(XQb;Q+uEU~SO3!G?ad-!}~Mp>ZZ>%*autu~5LhL=l4 zRAx}OlpZD7ZnPuGVgIyJa1N#b<;8WM|Sn&g7k z^!C9{)9352wJwwf-sP=iHjAXp^m%z4<=@^e~3(OLsdA-!@Tm!ew zjKsiLOQURJ**kkH>4bq&orF$`t=9AX&vdMd{6^)!X*5d==%TaB@RZZMkXeM?U!sjK z1~=7^5WJsyT{bqChHJQEn)bpzOT^U}if-@R-Sn5Ito;u0y97nnb_!t)FE3)iGe$g}n}wlcp|4^^HU}-Tavr{nW-C+OUmSu46=Z z4NX+zPQ-TB%P)z^htBZ6+7g@dllgB{LF3xR6JDg@$`#Y9W$n49!RJ$4XDRHpTd8*FsOI6~@^Z~H zxn5V#DgI4t6mdVwPFhLdXaYKilpYOXRrueVBs!%^)@JCGC*lM)xb`_TO7o#Jq2o|x zRIZ=8y+Z{r=5ppEX9y6GdHJ{7+^OKL&bp`#`2g;OsbybcD26cQ2;*IJ&r7 z4pW?^Xk&@QbQ|vvZh=gfk9(O&MzOo8Ny3~JHGNUF`f9V((*~o#IW}j@(E&JYoW?nB zWJk}CHSVe+573w2=Vu^OTo{4DwUT)*O(-HJwK~*y49I_TBC=a&S31X&WQ;e|oK;yT&Zsfk*8%659^#!#%>V`~W9jFQ`z#;2EKLZLH(}N$ zjt$(Mp=(3SUn;d0!C=7X+rQxcT0&zvoAm&RpuCj|ou2vnMC{>;EsP80+VDJ4Uq-?5 zALfYH7xAm9kHOFgG=9I1kuWJ8dK!OnjXh>HF8W^#!y}ia9mNYo!`|yw$nK-1sNQlU z5z|r7GW!ikrbg3V*37elGebAL4j@m1ZXrkdJZ@&x2;O+4ol2{F8KX|0isC0>KQ*iU-^$$LGXUHi4SI43W;J z6C+T&O)W8!5z`j=xF(bkROs8r-<3seWk(zBG$LElP+4iX30uW;J^%8{vPKu*GxSU^ zq9}g*^mUB~uUr=>ij`-+R)G5a%%&2aom#<9aIWkXLT~a z!xPf4?d|nBoIN>WO}|-jbELHV!ufSx-VFI~Sp0xYRL>u0H5Yx?i&lWmRL+_)ua7ql zP*v=02I6|GOJIBCADt7fGZ_9^=CQtW&Z7Kw zOJqRwB+_vg@V8Lw)Wy$C#FKW*8+55M@y&*N!Sosfsbb0+|Lkgq8y#J>vM#;7#@Vi$ zIOhmq+7}4QCW^6^De~JXNcG(CZ?D|(GcNHVyVa@hVmMuSakv-3rdlN`fWOUWReJeX ztB};({J)@wf86(Mi5xi)@2p2qF3iEiDj-y|;Eyix)`5uau0W2IZo`(yQL`<058U?` zQFZWOfD6g!FiOoR41liZ_KL%Za_H$qI z5Oy#B#=^XouvDqdL4s>Eymu=O2-hwm-*_WtTFtdm3uU@%PY{%&3-nJ|FV-kYRR7J8 zm@v#>CA^;ji^b~p)+oDcNu2TKJA-T^iy4<^1N^5XyCW1aeK0)~El}Dv_o&igHBLHo zdH1%HzY(01<*(uYls|L*mSRpg?^I5BiHM;%x(9eaN)d0GW9_Aq_wuLX#Met%G^+5* zkoJm$-1L&>g`YYV+ZnLyTw9ol#@(DkOC<66@a!WZ{;>fb+bxj zy=XjW1Dj6TSVoSUh64Px_!pXK920Be=B4UbaQh{V)3N2DGoy}CGHO08I;{bdxMA}5 z4_G4$MzNI~$%T$NCHslRmwdkl9#%E!UtgY=361T?p|`CiZd1tjK|wQCo&50~rCP!S z$E_r-If&+mKblQhL*v)eIh_}(gzSx;k$%fndE z2?v!MEdCa?7^ydhn()3-O?g(Otd{RlB%{q3@FOm}y1g*>c%r=6&!?g_<#Q?Vy-_e> zM*y#N(y1F^-+u_$S4vr>=5oceTJhvvAmOdQq>-H{hGQM23S`kc$ynuNn7Sq#5ALbD zk}vORfgIYw)r? zk{ao}l#G#xs=4huYu-Igmha=7peAUH(qGS)c^D|e4pkk5?AUcU$aSdi;|;<~%_s9k zVDk$OU0L|O39Oq_Ix*v`pCr^Pg?z8L>n{_0mXD^q+()I&B{G}k3r!~cJ=bQBp>92K zZ?vn}3#g5zrBq(duL2JZ4>nYwO4hbUu5e&0D0VNXI|uXA z;T(Vg!!DsL3=qap^K7t7;ES6^7ZC+=(WDQd3dtf%J0E5khRjCrDKD7b4n%}0@m^&8%OlQXz1o6 zEwm#7sFjCB^+V@)gQe{Ij)Ej`IbjT%JWY3buFVsi#|eDL9=$GyHYRK}2CVwg84RMz z74f^OL9HhBgh~fAJT%VijujE_iL{0#7O<<*adgM+m0D(lG`n`-Bqk@!VGf?+6`hqV zLa>kMkMWwgAR*0Zf#8bwwg+6s8jPx$0WC1vzP8eh@5a{VEoZT@Au?fwatPCA89$A7 zuhk9aPg+S0eO^dw_iuajXfDFpF;O`|qacpp5S^dN`{GrD&C93gMj`88YtrF(76} zYo3stoiGxxt_oR@PoDd-iPoFx_06E-)CV|e@CM}{Sj?8M-vKWqxeHu>!HL1D z3AGo1xr;C^Bo-=kju9~&DQYmZF3Z}BupB5_L$KI#HaGNqzy#vkWu&oszZ9*yOg=mX zX1Meeg>Q1@VzF+Z(Aps4W`z2*)#?y?9fbbkvZU0?E_jba%U>OF`G;5G&P~7V z-qE}V+!)pd#6g$`n5Ua4CV_J#voGv1Oh<&Vy#=DJiSJHG#lWEzory zGxRcjCmU43rVnOvVZhZJE^2`edqz7S;r07Se5=3UQZB4kAC2fYOzZqA)sZiQK*KAN zq%lqx@&~*=U|kARK*8SH$d)$413(+r1QQ-)X(t(G11C1t5JW{!L+eY)Y0zmC-XNvN z&43NG1$3I`9G!Rnj(|?t%a!V=e2=kbZav-{*di>lCALuqrrZ<*y@T6t{N=foIn-7I zwNWr+Rq#4sTEwJf^&T7?_IN|xtIvN0bm%fTqoSvZVZF^@LBCH@iQ{E6kMo|ZfRh#P zM{lyhKr$I&uv9p3lWOiQEUjt3Cbj?FkBHtyG3m9r-VHlg1S zq`s!&q@ITQV2h~mYHy#3198)!&tuHIBBccaWerY8DDR?SN}*RwZkH1jX*0nD)O#Kn z`a`}UY$%2nBf;9o!v?7^3&nCVhidr}uKTsPZF$XdCbwp8;DK=d* zxEZ$a5a;`q8(OOoh@FNjwE&We-wcQXC3}jf(yc{e(dJ1|><7;$k%3$}0}bODuG^G| z8#og2U&9;oRRwdbWGcPK)3-)E!g3LRszCvmtSUSFUDedA?avxs@8Cp>1@_j$&27Bg z40QwQi}O*#t6e^HZ|tx-^|t3iI??V|=rC@MY$;hI8v2@gMW&J9oTn3b65RytCkiao z%_vf-10v==J)}ElzR~B;!<@eZxQYgw-5-irUC9y))^h=?6m&s&kHW34fJSKomq}#x zW#DB7o7uSJjI>dDiipLuF+2BI%x;1Vl9vyi$b4)Jq29dSKnS`Mvr}{~_s(oKNK4>| zDDGz^R(5!#`ct#JPj{GUQ#O(f-sig`%2mL$UIzNib&`aLoVTw;4hwsXtL>V>&iSp65V*{S5 z9&9g1or zRxjArH0%Xu`gR^!(Ih9UG*xW@n&%z6El?z-5(&I{&2FB6YQ&43G$3gXsP{7s?_d*GF@PWiS4|p81UHG+-DYB8D&||%#&K? z5s;R4WH7U+uIY(f<|^68TruPXvUQl<{t`Z{vs3@7X@-+h7h!Pv5$%~S^nEDmS_KDf zMS()OC~YFMcJdxYNuovv`k99v5%qqHNj+_M%@hSgkOg1Qs?75Q3kVo_sKBgV!^#5~ zyJx?6e(V%wU%ZS=9oo}pgJ#dMY%QfRrjyo^!BP)}jumEYQOxJ0inYZru({#9@)V%C zY>YDx-x(+Nj1!BheEUJt&!<8DW0#pMrXmb!dix~fOh<`QwRqdJLxIdGTH%_pwa)vD zQ@Ii@cq*Cm1>*t`+`dE9S~5RK%Y;)vw2i+%UoC8*i^WK494{`;|uFx$2aSYX)C5lZn66=2N%zV}!Fb6>t zFo(~})rz;YU80K?;@|K3-TNG2t@F}z912_MEBTg7DAdX|~cZ7J#*$ zIy&k#jCvjL7>*nKybH#_H=_=}RLeMVe!SSb8IYPJx(gvQYDwafjK`z&J0uwE4S0dd zjq1RR^s@7GddU9ZiTKZ+jfpzhV@=~j{ogCOj)97cVO-m|zc1#@Gv6KL+ z0!`0KiduP4$i_KHs8xPSCAM=x`I>q2$iyaVdC?C0Z1YFI+&JPf3i(o7A3MgiJn1N@ zxQrxv8=H<>tP1F^6}%e7E8UOgD5-tH_!phy#o)7}?~pSV#%Ls}3K)g@^#j@94h1w8 zS!F*JvF31IAJ;6vq+iwUzUrH>ilpeDYLcnNq@;p&r+8=erygb!m#RO|4!huzgz)>j z$Kb{jTp=!pp;`GFK~`#N$!RoKPbzS{Bj zM3+S93K{m3gV>1k07Ha(!J!Ott(jK$YO(=({ngQYC?+e33{Hs!2J%J z4i6$rn->qx39!tb6$Rtb3`W6LjRCDc4dui0gTfLAt}0F=92zgpKww z;+=3=L`pBry{wqBQ&Y)P93}_hmsT@J9}S7w4YYH^7rSdo&0yU?n2js=E3=;)GF?#F zl|&A;OyL_$BPvhx@WsP)I+pZ(FzH9iZTtY^qQMe>GAN4Q9X|7@WI1{m~{jd_Ff^-<}yRe>6#y z)P*WP#cP?SmKj|_9-_cdNQt=C6}i=)v>I^ZAS-j(Svjgyi?h6>Sn>RJuwMlP`c!n{z>?{9q8J3m~6>6xa3IwSvG1Q3-zHj5Z+0K&ETEpK-f?SYyobTVtw;DF*QfB z@$3BQN&<2=U=`-7yc(Cxl#-#x99D!kI3~~{3byPZ1|VnK6k>dTe-gqmH4Snm7JU@Z zrBl-dk1OP_y^!x4^Oq%zq_H6xSP)4U>XlQ-zw{^&d7-pn(wqBomx@?o9h*`J6NFc}|C9$1{D;bsoMOzv`<*(5PA z$Vc&-K&Ms7GFQPKi|Hs#Bsk{|@weNPJ5?0mc{PDY46c1ADk@dpkax2=I1z}OBrAU! z1ah=sPUR$40w;2fZqtOqoN&^QZ+8J->*;h47OZ)3X*B-KE5=h&KRvFdQfw75YMmz~ zz;ksqk~^zVBl)sM`+X2u=3CUC%jK86AMs$tg_Eh=BdSaRcPMwm%&SHDCQWExmmVSA zyMSpt;Xg*3a)|b%vwp+)?GP~NMMbaM`tsT><3L7JsDwoFT*g|ls(tryiQV=7b7Tll zmO%FYNyjGq@$>vA@F2=mDB=}Tob5jfURIBTtsV%k9z?=3jj*Aw_HB33No6pJS{d~j z6s4+bhz*HQrNM9Sw>Xxd2;Cg##NN7Y57^HR)u2otj|NYvXhxDVP=%WQl1h$rn`ZDe z&Y5chY&0ATJGLE)1o#0U*AnV;@Jicj1Pn>OPZ1KeMUWUwC0F-Ptg!Q}-wxyl&Ek3E z&61L6I0tt~qQ{jH(AleNpQCGgv)teEwu|;VW@8L!`aoEH0-d0{3Mc=lGt#^5dMaUL z08W6YPS-xmmG8@&K93xa1tj5dF~h0UOTdcZ;9Zo`8@jpq2PT^UX0C`!)Wpbrn&+;B zvXY?o0iG;~wBNb(JWhoFsH%p@;`Ae0w-|eGxW~m3X3N+_ic#Lhad0#QCh|>;Tibfg zCw#*^V=iAtdRG(C`@N-mca~rmUyTP=k@*3(3NJU;L!(-ClDCG&EHfElGkC0FXh5MHrf^-r*r44mr+4 z&A*0~$%iFmtxMP0))9w*Yk+KB@)cRy`k*Dn7HLI!Yd+YM6Ylx&JQ6cqy9twe0OO}Q z2RUG`5o)R!(?-5<)C?*1V||sJTR1J^Lvy}L&pZf)c%$-BTdh*O1#c>~Vp^-_O~=-+ zFXkZh3g>5<(4Kw=PRu;|7g#AufDzjAaj7WrNABSqDvwnEM^514EUWn`Aw4AY!{xw3 zL57u^2 z$0ekysX}<}9cJ2Ty<_Nn-7dn2#4bNPnaMT^KI@S)R@Plx(FDphg~u&eAwRNU41#iv z_?lw%c;lq8q!RYxluy!U)VFv*(XB-=hKJ3%mNmTE?IcqePd6Ie7R~1%VfU(kpvIqM z?<=at+MHd&=}L$%3u_|XXBLNDhObYmdo%kMp_n24M4y|MRiWRwoXNoRrBPI7!aGSb zmmcaQZ6CDMUALGUzAc7H`9;;_B&lW+1F&@$j14GX3;Wo?9puRw&6LsqlIp zT*0~L5|8{u>}fz8#E!OVpBLcAxAGBZCi-Rd`57}?L=_Rh-qt?d(+NK}m?(N|GyX8J zxY2XWNw^YifHX{YNzZv{X7?Xxua|fvhA?T2c8C#SB~i(`&IiD-FCUI_jy-eE-vxxR z;=q3L{7TsjYu(qC1*@S1%^XP-h?@aTKn|&)F#@MCOZd4v6P~?s;0YiM({Uu87iRMHIA7FsC&9gr<=<5`Fz^z6r>9jp@I zZ11+bez|9MG!fZEg72%6y_gJV6!}9+Uv~9F#{o8arc$&26Whn`fN<0mB=h=sd?G%1 zn@c*s9Zc^<^!kXbKHR$kt0c#8*48sW^^;^Oa5*M8Q{Sd@4cp&_82_|=V^SDgo8<6u znBZKb7%3S~ywea@hOo3mT5r|__KSb@%G~Wex4KwKfY0Vx8mm7B(e)}`R#lA0vomLS z%#Xm=3NlC#zA$r~cle=@gPw!TsXhZ3+*w78^>Zel*D#aC1;YIjJq724?#F z0rfe^a1L9TC3{#DWzH9V5HB`Kj*5YB(wEpE!CjZ=Pn6<$18^e5u)(+yM&OkO$n=GK zX#-1quw;_T>#XciKZsjg=RBiBeDBXJu4K3BZ>I&D&LlsiHWEC_D$`|VrVn5ax}CK@ z*c)zpdute6+ngg{4ft(J&*H&n1Lo*XZ9HgcIl)OpnH;exrKiy>9AL8;?6y9@Pyl5; z(0XF!uQp~Ffeq4mo?FMDy2aG^cxyB71mQJKb>tOz!XcafH-^8Y{T~7=Jt&j>4|GXe1lgzOh+U56&~Z+MZAHBs=?Ql z+%Lf;4;KOtmS<^xGlFL3R5985c@fWGh?-mGtdEQCZkdKNsu_xN;Hr?m2d>WfHToQH zkz|Jnz8+oe4$a)?&;EO84`JqpOS<>6(3VH)7vSzMvTWYE&X$D? zZ;dcgOqJ+PUqE6M>PqCByhTYq4wZSfFtp9@t%Iv*oZmW81M{ahpjr7cGX*^&Up*;Z z2OqQm&XyEe%@4bR0atno&0C zhS{jMc8Ur63c@#GD$->JItegKwGN#$4A-QaNGhAbN-1N3i1mmwD1ATYFdxo{`cO%w zkOc-){C;WtG8=4%x!GaHRFG@y(lT31{q7xJPPn!yYo7+ylrDPDC3Ac#LMOxI; z4ij@dh}8V-XWjEVChIPEo)Pg_hRJpK_5cm8G_0=R6z`-_Sr+_-HexQD| zQXkn{n&IiZ^r=&(=Lwv8{zA1=JV$b$5x`S7$UF?`OlKmGsdm?qDq?|QDVE}6)siR{ z!r^pcTDunD?-s`NOJBqL)cW{97kSx9T0*{M^|Vsif-w%xCydd~d*sW#7*PDXgzs== zmN-ewP8_^Cs{+@WSla2r&UYaBP49W6wnMH=B*Q`z@>X20W56@WiJ+|XCj2AQ6~OVD z9e`ik1z@VSYk@RSKDx1bWw(}7P`wUUULFQS;k!9{Q5IL~;J5`|#LLXxZF^|;?Lv7{ ziWXM9$B>la(~uX?ksXj~hc;rsMZ@jMbxB1=H*cm=J_q(?nX9*4Kz8fr$@KO%cUP^S za=%$KHUsXltQ7qgMcn>vcBT6VHt7M?sXYMB<}Z)l@XmxlF2^^JJ^x91@A^f$@S@}3 zOd~~Ch?8}FacJmX!KJS8BoN6!*u3JopFM$-2Dr6Z?j--0j-~U1x0i0c85?+@uKA*e zG~Nis8!fj%7PO+VsPLhw9)#zP3(|U??J060jIFSeU4@G`nLpeGeW($pMLj9vIi(m5 z_BHBDta!q$qmYV21s3W`^zOt=hf>Gr&bd@HxP1JR%d8GR4RdP4uBBrXcEi~dFuY84 zP~5K_G<_OVyUC>cI9$qp*V4*1Enhlt1H*BSo~5eBhc5Zf%1-D! z!V2k!)v0N&EO&?>`E#+UJY85r7pvzO8R9orUQ3}rpU(x z`Owl=AcFIZ_6D!2a1yhy5^4Ahk%k8y81;L2S~EiVPVi>~)@A-gX6f#xU+6lQ5aJC? zU4#{PS{AXWbY%PAn=t6QgGBYGm{l&D5vf$Wrkcx={?1Q<2QR_dxqkSB6Puhm$`J2xW?RhjR1MAD1!Yp5zg1OwxGx#G^j7HhvPe$AGaqqKi(4CsXlQI zPgs4;ho_M}Hnz3CSe86hWKy`{H>u2jcmcZ=mK5%8=^l|M`cby4?zxQzO(ZMlIsWJM zRa+|d!tLRlf_f|^%3-9@C;2-(68E{&ZvXuCgHj#yjX=-_1%1YcbUmUacR3R7EW7}r zuQXz`Ks4-<@s7*LKkqQV@7AZhGo5*Tl@QlON1@zsf+&B zUZy`*2VS86xS;jz2%9V0CqH|2+xU$qv_ETePT&5+tGMQ|p{#ZJIlkiMJq}Gn_ zRM@&_$MOFyDp+z{h9P3_e(LqVhZajB8D@^Mo|6}!1&4}`#2l)$O8z=Yzu@!jAP~A(1c~@K^Qm12{z(FZ zE7~rT*m_&@qt@M(^)pNCmj!#*?b-29-%i3IH2p>oj=E2ztgTP{hw;-D4@h;#QvKFp zHUG!(ehwAfhBLAqZF?T4UiR2iDrOqafTCUhvnb58xk`VC%%bwu^}lzW>$m%MM) ol`+CU%tGnsk=_3b_nk|S(PV%8Z|@xpR$4!M%KT*EAI^9GKb%OEy8r+H literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/tree-2.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/tree-2.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6d67bafd4f2b59fe1fa14e0acaeb7522333d20 GIT binary patch literal 14564 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 literal 0 HcmV?d00001 diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/tree-3.png b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/assets/tree-3.png new file mode 100644 index 0000000000000000000000000000000000000000..162140b90d7429ad9d2e1da11f22012beca48097 GIT binary patch literal 10700 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 s.highScore) { - s.highScore = s.score; - writeHighScore(s.score); +function spawnParticles(x: number, y: number): Particle[] { + const particles: Particle[] = []; + for (let i = 0; i < DEATH_PARTICLE_COUNT; i++) { + const angle = Math.random() * Math.PI * 2; + const speed = 1 + Math.random() * 3; + particles.push({ + x, + y, + vx: Math.cos(angle) * speed, + vy: Math.sin(angle) * speed - 2, + life: DEATH_ANIM_DURATION, + }); } + return particles; } -/* ------------------------------------------------------------------ */ -/* Projectile collision — shared between fighting & leaving phases */ -/* ------------------------------------------------------------------ */ +function startPlayerDeath(s: GameState) { + s.deathAnim = { + particles: spawnParticles( + s.charX + CHAR_SIZE / 2, + s.charY + CHAR_SIZE / 2, + ), + type: "player", + timer: DEATH_ANIM_DURATION, + }; +} -/** Returns true if the player died. */ -function tickProjectiles(s: GameState): boolean { - const boss = s.boss; - - for (const p of boss.projectiles) { - p.x -= p.speed; - - if (!p.evaded && p.x + PROJ_SIZE < CHAR_X) { - p.evaded = true; - boss.shotsEvaded++; - } - - // Collision - if ( - !p.evaded && - CHAR_X + CHAR_SIZE > p.x && - CHAR_X < p.x + PROJ_SIZE && - s.charY + CHAR_SIZE > p.y && - s.charY < p.y + PROJ_SIZE - ) { - gameOver(s); - return true; - } - } - - boss.projectiles = boss.projectiles.filter((p) => p.x + PROJ_SIZE > -20); - return false; +function startBossDeath(s: GameState) { + s.deathAnim = { + particles: spawnParticles( + s.boss.x + BOSS_SIZE / 2, + s.boss.y + BOSS_SIZE / 2, + ), + type: "boss", + timer: DEATH_ANIM_DURATION, + }; } /* ------------------------------------------------------------------ */ /* Update */ /* ------------------------------------------------------------------ */ -function update(s: GameState, canvasWidth: number) { - if (!s.running) return; +function update(s: GameState, canvasWidth: number, keys: KeyState) { + if (!s.running || s.paused) return; s.frame++; + // ---- Attack effects ---- // + for (const p of s.attackEffects) { + p.x += p.vx; + p.y += p.vy; + p.vy += 0.08; + p.life--; + } + s.attackEffects = s.attackEffects.filter((p) => p.life > 0); + + // ---- Death animation ---- // + if (s.deathAnim) { + s.deathAnim.timer--; + for (const p of s.deathAnim.particles) { + p.x += p.vx; + p.y += p.vy; + p.vy += 0.1; + p.life--; + } + if (s.deathAnim.timer <= 0) { + if (s.deathAnim.type === "player") { + s.deathAnim = null; + s.running = false; + s.over = true; + if (s.score > s.highScore) { + s.highScore = s.score; + writeHighScore(s.score); + } + } else { + s.deathAnim = null; + s.score += 10; + s.bossesDefeated++; + if (s.bossesDefeated === 1) { + s.bossThreshold = s.score + 15; + } else { + s.bossThreshold = s.score + 20; + } + s.paused = true; + } + } + return; + } + // Speed only ramps during regular play if (s.boss.phase === "inactive") { s.speed = BASE_SPEED + s.frame * SPEED_INCREMENT; @@ -194,86 +331,217 @@ function update(s: GameState, canvasWidth: number) { s.vy = 0; } + // ---- Attack animation ---- // + if (s.attacking) { + s.attackFrame++; + + if ( + !s.attackHit && + Math.floor(s.attackFrame / ATTACK_ANIM_SPEED) === ATTACK_HIT_FRAME && + s.boss.phase === "fighting" && + s.charX + CHAR_SIZE + ATTACK_RANGE >= s.boss.x + ) { + s.boss.hp--; + s.attackHit = true; + } + + if (s.attackFrame >= ATTACK_FRAMES * ATTACK_ANIM_SPEED) { + s.attacking = false; + s.attackFrame = 0; + s.attackHit = false; + } + } + + // ---- Guard animation ---- // + if (s.guarding) { + s.guardFrame++; + if (s.guardFrame >= GUARD_FRAMES * GUARD_ANIM_SPEED) { + s.guardFrame = GUARD_FRAMES * GUARD_ANIM_SPEED - 1; + } + } + + // ---- Horizontal movement during boss fight ---- // + if (s.boss.phase !== "inactive") { + if (keys.left) { + s.charX = Math.max(10, s.charX - MOVE_SPEED); + } + if (keys.right) { + s.charX = Math.min(canvasWidth - CHAR_SIZE - 10, s.charX + MOVE_SPEED); + } + } else { + s.charX = CHAR_X; + } + // ---- Trigger boss ---- // - if (s.boss.phase === "inactive" && s.score >= s.bossThreshold) { + const isOnGround = s.charY + CHAR_SIZE >= s.groundY; + if ( + s.boss.phase === "inactive" && + s.score >= s.bossThreshold && + s.obstacles.length === 0 && + isOnGround + ) { s.boss.phase = "entering"; s.boss.x = canvasWidth + 10; + s.boss.y = s.groundY - BOSS_SIZE; + s.boss.vy = 0; s.boss.targetX = canvasWidth - BOSS_SIZE - 40; - s.boss.shotsEvaded = 0; - s.boss.cooldown = BOSS_SHOOT_COOLDOWN; - s.boss.projectiles = []; - s.obstacles = []; + s.boss.hp = BOSS_HP; + s.boss.action = "idle"; + s.boss.actionTimer = BOSS_IDLE_TIME; + s.boss.attackFrame = 0; + s.boss.attackHit = false; + + if (s.bossesDefeated === 0) { + s.paused = true; + } } // ---- Boss: entering ---- // if (s.boss.phase === "entering") { - s.boss.bob = Math.sin(s.frame * 0.05) * 3; s.boss.x -= BOSS_ENTER_SPEED; if (s.boss.x <= s.boss.targetX) { s.boss.x = s.boss.targetX; s.boss.phase = "fighting"; } - return; // no obstacles while entering + return; } // ---- Boss: fighting ---- // if (s.boss.phase === "fighting") { - s.boss.bob = Math.sin(s.frame * 0.05) * 3; - - // Shoot - s.boss.cooldown--; - if (s.boss.cooldown <= 0) { - const isLow = Math.random() < 0.5; - s.boss.projectiles.push({ - x: s.boss.x - PROJ_SIZE, - y: isLow ? s.groundY - 14 : s.groundY - 70, - speed: PROJ_SPEED, - evaded: false, - type: isLow ? "low" : "high", - }); - s.boss.cooldown = BOSS_SHOOT_COOLDOWN; + // Boss physics + s.boss.vy += GRAVITY; + s.boss.y += s.boss.vy; + if (s.boss.y + BOSS_SIZE >= s.groundY) { + s.boss.y = s.groundY - BOSS_SIZE; + s.boss.vy = 0; } - if (tickProjectiles(s)) return; - // Boss defeated? - if (s.boss.shotsEvaded >= BOSS_SHOTS_TO_EVADE) { - s.boss.phase = "leaving"; - s.score += 5; // bonus - s.bossThreshold = s.score + BOSS_INTERVAL; + if (s.boss.hp <= 0) { + startBossDeath(s); + return; + } + + // Boss AI + if (s.boss.action === "attack") { + s.boss.attackFrame++; + const hitFrame = Math.floor( + s.boss.attackFrame / ARCHER_ATTACK_ANIM_SPEED, + ); + + // Spawn yellow attack effect at hit frame + if ( + s.boss.attackFrame === ARCHER_ATTACK_HIT_FRAME * ARCHER_ATTACK_ANIM_SPEED + ) { + const effectX = s.boss.x - 5; + const effectY = s.boss.y + BOSS_SIZE / 2; + for (let i = 0; i < ATTACK_EFFECT_COUNT; i++) { + const angle = Math.PI + (Math.random() - 0.5) * 1.2; + const speed = 2 + Math.random() * 3; + s.attackEffects.push({ + x: effectX, + y: effectY, + vx: Math.cos(angle) * speed, + vy: Math.sin(angle) * speed - 1, + life: ATTACK_EFFECT_DURATION, + }); + } + } + + if (!s.boss.attackHit && hitFrame === ARCHER_ATTACK_HIT_FRAME) { + const dist = s.boss.x - (s.charX + CHAR_SIZE); + if (dist < BOSS_ATTACK_RANGE && dist > -BOSS_SIZE) { + s.boss.attackHit = true; + if (!s.guarding) { + startPlayerDeath(s); + return; + } + } + } + + if ( + s.boss.attackFrame >= + ARCHER_ATTACK_FRAMES * ARCHER_ATTACK_ANIM_SPEED + ) { + s.boss.action = "retreat"; + s.boss.actionTimer = BOSS_RETREAT_TIME; + s.boss.attackFrame = 0; + s.boss.attackHit = false; + } + } else { + s.boss.actionTimer--; + + if (s.boss.action === "chase") { + if (s.boss.x > s.charX + CHAR_SIZE) { + s.boss.x -= BOSS_CHASE_SPEED; + } else { + s.boss.x += BOSS_CHASE_SPEED; + } + + // Occasional jump + if (s.boss.y + BOSS_SIZE >= s.groundY && Math.random() < 0.008) { + s.boss.vy = JUMP_FORCE * 0.7; + } + + // Close enough to attack + const dist = Math.abs(s.boss.x - (s.charX + CHAR_SIZE)); + if (dist < BOSS_ATTACK_RANGE) { + s.boss.action = "attack"; + s.boss.attackFrame = 0; + s.boss.attackHit = false; + } + } else if (s.boss.action === "retreat") { + s.boss.x += BOSS_RETREAT_SPEED; + if (s.boss.x > canvasWidth - BOSS_SIZE - 10) { + s.boss.x = canvasWidth - BOSS_SIZE - 10; + } + } + + // Timer expired → next action + if (s.boss.actionTimer <= 0) { + if (s.boss.action === "idle" || s.boss.action === "retreat") { + s.boss.action = "chase"; + s.boss.actionTimer = 999; + } else { + s.boss.action = "idle"; + s.boss.actionTimer = BOSS_IDLE_TIME; + } + } } return; } // ---- Boss: leaving ---- // if (s.boss.phase === "leaving") { - s.boss.bob = Math.sin(s.frame * 0.05) * 3; s.boss.x += BOSS_LEAVE_SPEED; - - // Still check in-flight projectiles - if (tickProjectiles(s)) return; - if (s.boss.x > canvasWidth + 50) { - s.boss = makeBoss(); + s.boss = makeBoss(s.groundY); + s.charX = CHAR_X; s.nextSpawn = s.frame + randInt(SPAWN_MIN / 2, SPAWN_MAX / 2); } return; } // ---- Regular obstacle play ---- // - if (s.frame >= s.nextSpawn) { + // Stop spawning trees if enough are queued to reach boss threshold + const unscoredCount = s.obstacles.filter((o) => !o.scored).length; + if (s.score + unscoredCount < s.bossThreshold && s.frame >= s.nextSpawn) { + const tt = s.nextTreeType; + const cfg = TREE_CONFIGS[tt]; s.obstacles.push({ x: canvasWidth + 10, - width: randInt(10, 16), - height: randInt(20, 48), + width: cfg.hitW, + height: cfg.hitH, scored: false, + treeType: tt, }); + s.nextTreeType = (Math.floor(Math.random() * 3)) as 0 | 1 | 2; s.nextSpawn = s.frame + randInt(SPAWN_MIN, SPAWN_MAX); } for (const o of s.obstacles) { o.x -= s.speed; - if (!o.scored && o.x + o.width < CHAR_X) { + if (!o.scored && o.x + o.width < s.charX) { o.scored = true; s.score++; } @@ -284,11 +552,11 @@ function update(s: GameState, canvasWidth: number) { for (const o of s.obstacles) { const oY = s.groundY - o.height; if ( - CHAR_X + CHAR_SIZE > o.x && - CHAR_X < o.x + o.width && + s.charX + CHAR_SIZE > o.x && + s.charX < o.x + o.width && s.charY + CHAR_SIZE > oY ) { - gameOver(s); + startPlayerDeath(s); return; } } @@ -298,73 +566,82 @@ function update(s: GameState, canvasWidth: number) { /* Drawing */ /* ------------------------------------------------------------------ */ -function drawBoss(ctx: CanvasRenderingContext2D, s: GameState, bg: string) { - const bx = s.boss.x; - const by = s.groundY - BOSS_SIZE + s.boss.bob; +function drawBoss( + ctx: CanvasRenderingContext2D, + s: GameState, + sprites: Sprites, +) { + const boss = s.boss; + const isAttacking = boss.action === "attack"; + const sheet = isAttacking ? sprites.archerAttack : sprites.archerIdle; + const totalFrames = isAttacking ? ARCHER_ATTACK_FRAMES : ARCHER_IDLE_FRAMES; + const animSpeed = isAttacking ? ARCHER_ATTACK_ANIM_SPEED : ARCHER_ANIM_SPEED; - // Body - ctx.save(); - ctx.fillStyle = COLOR_BOSS; - ctx.globalAlpha = 0.9; - ctx.beginPath(); - ctx.roundRect(bx, by, BOSS_SIZE, BOSS_SIZE, 4); - ctx.fill(); - ctx.restore(); + let frameIndex: number; + if (isAttacking) { + frameIndex = Math.min( + Math.floor(boss.attackFrame / animSpeed), + totalFrames - 1, + ); + } else { + frameIndex = Math.floor(s.frame / animSpeed) % totalFrames; + } - // Eyes - ctx.save(); - ctx.fillStyle = bg; - const eyeY = by + 13; - ctx.beginPath(); - ctx.arc(bx + 10, eyeY, 4, 0, Math.PI * 2); - ctx.fill(); - ctx.beginPath(); - ctx.arc(bx + 26, eyeY, 4, 0, Math.PI * 2); - ctx.fill(); - ctx.restore(); + const srcX = frameIndex * ARCHER_FRAME_SIZE; + const spriteDrawX = boss.x + (BOSS_SIZE - BOSS_SPRITE_SIZE) / 2; + const spriteDrawY = boss.y + BOSS_SIZE - BOSS_SPRITE_SIZE + 12; - // Angry eyebrows - ctx.save(); - ctx.strokeStyle = bg; - ctx.lineWidth = 2; - ctx.beginPath(); - ctx.moveTo(bx + 5, eyeY - 7); - ctx.lineTo(bx + 14, eyeY - 4); - ctx.stroke(); - ctx.beginPath(); - ctx.moveTo(bx + 31, eyeY - 7); - ctx.lineTo(bx + 22, eyeY - 4); - ctx.stroke(); - ctx.restore(); + if (sheet.complete && sheet.naturalWidth > 0) { + ctx.drawImage( + sheet, + srcX, + 0, + ARCHER_FRAME_SIZE, + ARCHER_FRAME_SIZE, + spriteDrawX, + spriteDrawY, + BOSS_SPRITE_SIZE, + BOSS_SPRITE_SIZE, + ); + } else { + ctx.save(); + ctx.fillStyle = "#F50057"; + ctx.globalAlpha = 0.9; + ctx.beginPath(); + ctx.roundRect(boss.x, boss.y, BOSS_SIZE, BOSS_SIZE, 4); + ctx.fill(); + ctx.restore(); + } +} - // Zigzag mouth +function drawParticles(ctx: CanvasRenderingContext2D, anim: DeathAnim) { ctx.save(); - ctx.strokeStyle = bg; - ctx.lineWidth = 1.5; - ctx.beginPath(); - ctx.moveTo(bx + 10, by + 27); - ctx.lineTo(bx + 14, by + 24); - ctx.lineTo(bx + 18, by + 27); - ctx.lineTo(bx + 22, by + 24); - ctx.lineTo(bx + 26, by + 27); - ctx.stroke(); + for (const p of anim.particles) { + if (p.life <= 0) continue; + const alpha = p.life / DEATH_ANIM_DURATION; + const size = 2 + alpha * 3; + ctx.globalAlpha = alpha; + ctx.fillStyle = "#a855f7"; + ctx.beginPath(); + ctx.arc(p.x, p.y, size, 0, Math.PI * 2); + ctx.fill(); + } ctx.restore(); } -function drawProjectiles(ctx: CanvasRenderingContext2D, boss: BossState) { +function drawAttackEffects( + ctx: CanvasRenderingContext2D, + effects: Particle[], +) { ctx.save(); - ctx.fillStyle = COLOR_BOSS; - ctx.globalAlpha = 0.8; - for (const p of boss.projectiles) { - if (p.evaded) continue; + for (const p of effects) { + if (p.life <= 0) continue; + const alpha = p.life / ATTACK_EFFECT_DURATION; + const size = 1.5 + alpha * 2.5; + ctx.globalAlpha = alpha; + ctx.fillStyle = "#facc15"; ctx.beginPath(); - ctx.arc( - p.x + PROJ_SIZE / 2, - p.y + PROJ_SIZE / 2, - PROJ_SIZE / 2, - 0, - Math.PI * 2, - ); + ctx.arc(p.x, p.y, size, 0, Math.PI * 2); ctx.fill(); } ctx.restore(); @@ -376,7 +653,7 @@ function draw( w: number, h: number, fg: string, - started: boolean, + sprites: Sprites, ) { ctx.fillStyle = COLOR_BG; ctx.fillRect(0, 0, w, h); @@ -392,39 +669,109 @@ function draw( ctx.stroke(); ctx.restore(); - // Character - ctx.save(); - ctx.fillStyle = COLOR_CHAR; - ctx.globalAlpha = 0.85; - ctx.beginPath(); - ctx.roundRect(CHAR_X, s.charY, CHAR_SIZE, CHAR_SIZE, 3); - ctx.fill(); - ctx.restore(); + // Character sprite (hidden during player death) + if (!s.deathAnim || s.deathAnim.type !== "player") { + const isJumping = s.charY + CHAR_SIZE < s.groundY; + let sheet: HTMLImageElement; + let totalFrames: number; + let frameIndex: number; - // Eyes - ctx.save(); - ctx.fillStyle = COLOR_BG; - ctx.beginPath(); - ctx.arc(CHAR_X + 6, s.charY + 7, 2.5, 0, Math.PI * 2); - ctx.fill(); - ctx.beginPath(); - ctx.arc(CHAR_X + 12, s.charY + 7, 2.5, 0, Math.PI * 2); - ctx.fill(); - ctx.restore(); + if (s.guarding) { + sheet = sprites.guard; + totalFrames = GUARD_FRAMES; + frameIndex = Math.min( + Math.floor(s.guardFrame / GUARD_ANIM_SPEED), + totalFrames - 1, + ); + } else if (s.attacking) { + sheet = sprites.attack; + totalFrames = ATTACK_FRAMES; + frameIndex = Math.min( + Math.floor(s.attackFrame / ATTACK_ANIM_SPEED), + totalFrames - 1, + ); + } else if (isJumping) { + sheet = sprites.idle; + totalFrames = IDLE_FRAMES; + frameIndex = Math.floor(s.frame / ANIM_SPEED) % totalFrames; + } else { + sheet = sprites.run; + totalFrames = RUN_FRAMES; + frameIndex = Math.floor(s.frame / ANIM_SPEED) % totalFrames; + } - // Obstacles - ctx.save(); - ctx.fillStyle = fg; - ctx.globalAlpha = 0.55; - for (const o of s.obstacles) { - ctx.fillRect(o.x, s.groundY - o.height, o.width, o.height); + const srcX = frameIndex * SPRITE_FRAME_SIZE; + const drawX = s.charX + (CHAR_SIZE - CHAR_SPRITE_SIZE) / 2; + const drawY = s.charY + CHAR_SIZE - CHAR_SPRITE_SIZE + 15; + + if (sheet.complete && sheet.naturalWidth > 0) { + ctx.drawImage( + sheet, + srcX, + 0, + SPRITE_FRAME_SIZE, + SPRITE_FRAME_SIZE, + drawX, + drawY, + CHAR_SPRITE_SIZE, + CHAR_SPRITE_SIZE, + ); + } else { + ctx.save(); + ctx.fillStyle = COLOR_CHAR; + ctx.globalAlpha = 0.85; + ctx.beginPath(); + ctx.roundRect(s.charX, s.charY, CHAR_SIZE, CHAR_SIZE, 3); + ctx.fill(); + ctx.restore(); + } } - ctx.restore(); - // Boss + projectiles - if (s.boss.phase !== "inactive") { - drawBoss(ctx, s, COLOR_BG); - drawProjectiles(ctx, s.boss); + // Tree obstacles + const treeFrame = Math.floor(s.frame / TREE_ANIM_SPEED) % TREE_FRAMES; + for (const o of s.obstacles) { + const cfg = TREE_CONFIGS[o.treeType]; + const treeImg = sprites.trees[o.treeType]; + if (treeImg.complete && treeImg.naturalWidth > 0) { + const treeSrcX = treeFrame * cfg.frameW; + const treeDrawX = o.x + (o.width - cfg.renderW) / 2; + const treeDrawY = s.groundY - cfg.renderH; + ctx.drawImage( + treeImg, + treeSrcX, + 0, + cfg.frameW, + cfg.frameH, + treeDrawX, + treeDrawY, + cfg.renderW, + cfg.renderH, + ); + } else { + ctx.save(); + ctx.fillStyle = fg; + ctx.globalAlpha = 0.55; + ctx.fillRect(o.x, s.groundY - o.height, o.width, o.height); + ctx.restore(); + } + } + + // Boss (hidden during boss death) + if ( + s.boss.phase !== "inactive" && + (!s.deathAnim || s.deathAnim.type !== "boss") + ) { + drawBoss(ctx, s, sprites); + } + + // Attack effects + if (s.attackEffects.length > 0) { + drawAttackEffects(ctx, s.attackEffects); + } + + // Death particles + if (s.deathAnim) { + drawParticles(ctx, s.deathAnim); } // Score HUD @@ -435,37 +782,7 @@ function draw( ctx.textAlign = "right"; ctx.fillText(`Score: ${s.score}`, w - 12, 20); ctx.fillText(`Best: ${s.highScore}`, w - 12, 34); - if (s.boss.phase === "fighting") { - ctx.fillText( - `Evade: ${s.boss.shotsEvaded}/${BOSS_SHOTS_TO_EVADE}`, - w - 12, - 48, - ); - } ctx.restore(); - - // Prompts - if (!started && !s.running && !s.over) { - ctx.save(); - ctx.fillStyle = fg; - ctx.globalAlpha = 0.5; - ctx.font = "12px sans-serif"; - ctx.textAlign = "center"; - ctx.fillText("Click or press Space to play while you wait", w / 2, h / 2); - ctx.restore(); - } - - if (s.over) { - ctx.save(); - ctx.fillStyle = fg; - ctx.globalAlpha = 0.7; - ctx.font = "bold 13px sans-serif"; - ctx.textAlign = "center"; - ctx.fillText("Game Over", w / 2, h / 2 - 8); - ctx.font = "11px sans-serif"; - ctx.fillText("Click or Space to restart", w / 2, h / 2 + 10); - ctx.restore(); - } } /* ------------------------------------------------------------------ */ @@ -477,6 +794,13 @@ export function useMiniGame() { const stateRef = useRef(null); const rafRef = useRef(0); const startedRef = useRef(false); + const keysRef = useRef({ left: false, right: false }); + const [activeMode, setActiveMode] = useState< + "idle" | "run" | "boss" | "over" | "boss-intro" | "boss-defeated" + >("idle"); + const [showOverlay, setShowOverlay] = useState(true); + const [score, setScore] = useState(0); + const [highScore, setHighScore] = useState(0); useEffect(() => { const canvas = canvasRef.current; @@ -494,40 +818,91 @@ export function useMiniGame() { const style = getComputedStyle(canvas); let fg = style.color || "#71717a"; + // Load sprite sheets + const sprites: Sprites = { + run: new Image(), + idle: new Image(), + attack: new Image(), + guard: new Image(), + trees: [new Image(), new Image(), new Image()], + archerIdle: new Image(), + archerAttack: new Image(), + }; + sprites.run.src = runSheet.src; + sprites.idle.src = idleSheet.src; + sprites.attack.src = attackSheet.src; + sprites.guard.src = guardSheet.src; + sprites.trees[0].src = tree1Sheet.src; + sprites.trees[1].src = tree2Sheet.src; + sprites.trees[2].src = tree3Sheet.src; + sprites.archerIdle.src = archerIdleSheet.src; + sprites.archerAttack.src = archerAttackSheet.src; + + let prevPhase = ""; + // -------------------------------------------------------------- // - // Jump // + // Input // // -------------------------------------------------------------- // function jump() { const s = stateRef.current; - if (!s) return; + if (!s || !s.running || s.paused || s.over || s.deathAnim) return; - if (s.over) { - const hs = s.highScore; - const gy = s.groundY; - stateRef.current = makeState(gy); - stateRef.current.highScore = hs; - stateRef.current.running = true; - startedRef.current = true; - return; - } - - if (!s.running) { - s.running = true; - startedRef.current = true; - return; - } - - // Only jump when on the ground if (s.charY + CHAR_SIZE >= s.groundY) { s.vy = JUMP_FORCE; } } - function onKey(e: KeyboardEvent) { + function attack() { + const s = stateRef.current; + if (!s || !s.running || s.attacking || s.guarding || s.deathAnim) return; + s.attacking = true; + s.attackFrame = 0; + s.attackHit = false; + } + + function guardStart() { + const s = stateRef.current; + if (!s || !s.running || s.attacking || s.deathAnim) return; + if (!s.guarding) { + s.guarding = true; + s.guardFrame = 0; + } + } + + function guardEnd() { + const s = stateRef.current; + if (!s) return; + s.guarding = false; + s.guardFrame = 0; + } + + function onKeyDown(e: KeyboardEvent) { if (e.code === "Space" || e.key === " ") { e.preventDefault(); jump(); } + if (e.code === "KeyZ") { + e.preventDefault(); + attack(); + } + if (e.code === "KeyX") { + e.preventDefault(); + guardStart(); + } + if (e.code === "ArrowLeft") { + e.preventDefault(); + keysRef.current.left = true; + } + if (e.code === "ArrowRight") { + e.preventDefault(); + keysRef.current.right = true; + } + } + + function onKeyUp(e: KeyboardEvent) { + if (e.code === "ArrowLeft") keysRef.current.left = false; + if (e.code === "ArrowRight") keysRef.current.right = false; + if (e.code === "KeyX") guardEnd(); } function onClick() { @@ -544,15 +919,58 @@ export function useMiniGame() { const ctx = canvas.getContext("2d"); if (!ctx) return; - update(s, canvas.width); - draw(ctx, s, canvas.width, canvas.height, fg, startedRef.current); + update(s, canvas.width, keysRef.current); + draw(ctx, s, canvas.width, canvas.height, fg, sprites); + + // Update active mode on phase change + let phase: string; + if (s.over) phase = "over"; + else if (!startedRef.current) phase = "idle"; + else if (s.paused && s.boss.hp <= 0) phase = "boss-defeated"; + else if (s.paused) phase = "boss-intro"; + else if (s.boss.phase !== "inactive") phase = "boss"; + else phase = "running"; + + if (phase !== prevPhase) { + prevPhase = phase; + switch (phase) { + case "idle": + setActiveMode("idle"); + setShowOverlay(true); + break; + case "running": + setActiveMode("run"); + setShowOverlay(false); + break; + case "boss-intro": + setActiveMode("boss-intro"); + setShowOverlay(true); + break; + case "boss": + setActiveMode("boss"); + setShowOverlay(false); + break; + case "boss-defeated": + setActiveMode("boss-defeated"); + setShowOverlay(true); + break; + case "over": + setActiveMode("over"); + setScore(s.score); + setHighScore(s.highScore); + setShowOverlay(true); + break; + } + } + rafRef.current = requestAnimationFrame(loop); } rafRef.current = requestAnimationFrame(loop); canvas.addEventListener("click", onClick); - canvas.addEventListener("keydown", onKey); + canvas.addEventListener("keydown", onKeyDown); + canvas.addEventListener("keyup", onKeyUp); const observer = new ResizeObserver((entries) => { for (const entry of entries) { @@ -570,10 +988,42 @@ export function useMiniGame() { return () => { cancelAnimationFrame(rafRef.current); canvas.removeEventListener("click", onClick); - canvas.removeEventListener("keydown", onKey); + canvas.removeEventListener("keydown", onKeyDown); + canvas.removeEventListener("keyup", onKeyUp); observer.disconnect(); }; }, []); - return { canvasRef }; + function onContinue() { + const s = stateRef.current; + if (!s) return; + + if (s.over) { + // Restart after game over + const hs = s.highScore; + const gy = s.groundY; + stateRef.current = makeState(gy); + stateRef.current.highScore = hs; + stateRef.current.running = true; + startedRef.current = true; + } else if (!s.running) { + // Start game from idle + s.running = true; + startedRef.current = true; + } else if (s.boss.hp <= 0) { + // Boss defeated — reset boss, resume running + s.boss = makeBoss(s.groundY); + s.charX = CHAR_X; + s.nextSpawn = s.frame + randInt(SPAWN_MIN / 2, SPAWN_MAX / 2); + s.paused = false; + } else { + // Boss intro — unpause + s.paused = false; + } + + setShowOverlay(false); + canvasRef.current?.focus(); + } + + return { canvasRef, activeMode, showOverlay, score, highScore, onContinue }; } diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/helpers.tsx b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/helpers.tsx index bd47eac051..03fdb8966f 100644 --- a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/helpers.tsx +++ b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/helpers.tsx @@ -136,7 +136,7 @@ export function getAnimationText(part: { if (isOperationPendingOutput(output)) return "Agent creation in progress"; if (isOperationInProgressOutput(output)) return "Agent creation already in progress"; - if (isAgentSavedOutput(output)) return `Saved "${output.agent_name}"`; + if (isAgentSavedOutput(output)) return `Saved ${output.agent_name}`; if (isAgentPreviewOutput(output)) return `Preview "${output.agent_name}"`; if (isClarificationNeededOutput(output)) return "Needs clarification"; return "Error creating agent";