From e7d7ceeb132285b8ddb5a7300cdd024464d5277a Mon Sep 17 00:00:00 2001 From: Abruzz1 Date: Wed, 10 Dec 2025 11:25:13 +0800 Subject: [PATCH] feat: add MemoryLake provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add memorylake to SystemProviderIdSchema and SystemProviderIds - Add SYSTEM_MODELS.memorylake with 15 default models - Add provider config, logo, and URLs in providers.ts - Add i18n translations for all locales - Add migration 183 to auto-add provider for existing users - Bump persist version from 182 to 183 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 Signed-off-by: Abruzz1 --- .../assets/images/providers/memorylake.png | Bin 0 -> 14644 bytes src/renderer/src/config/models/default.ts | 17 +++++++++++++ src/renderer/src/config/providers.ts | 24 +++++++++++++++++- src/renderer/src/i18n/label.ts | 3 ++- src/renderer/src/i18n/locales/en-us.json | 1 + src/renderer/src/i18n/locales/zh-cn.json | 1 + src/renderer/src/i18n/locales/zh-tw.json | 1 + src/renderer/src/i18n/translate/de-de.json | 1 + src/renderer/src/i18n/translate/el-gr.json | 1 + src/renderer/src/i18n/translate/es-es.json | 1 + src/renderer/src/i18n/translate/fr-fr.json | 1 + src/renderer/src/i18n/translate/ja-jp.json | 1 + src/renderer/src/i18n/translate/pt-pt.json | 1 + src/renderer/src/i18n/translate/ru-ru.json | 1 + src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/migrate.ts | 10 ++++++++ src/renderer/src/types/provider.ts | 6 +++-- 17 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 src/renderer/src/assets/images/providers/memorylake.png diff --git a/src/renderer/src/assets/images/providers/memorylake.png b/src/renderer/src/assets/images/providers/memorylake.png new file mode 100644 index 0000000000000000000000000000000000000000..f33d258f5e3f2922da4fc89906d30b8a533dcc5e GIT binary patch literal 14644 zcmXwgc|6qL_y3*6GK?_DQuZauzLsqUWli=iS>Co(r0fwhmZ-=sMKNScvL!+oEvRfE zlx?)wW3ptM<@f6Ief<9LnAbhd>)!ji_uPBWeLl~*V|~tqgH4DH0Kj2pdfFBMIP?ey ztjy5QR^;eD^nJkC~JI}vA7|4Gl0106swkC$4X5i=&R6t%durvUmKAoNV9}@s4 zKbW01u#bfOo?dt0nLga}=iW*Oz7%f6WXP1n_KqzP`g_MV#72OgZu1fOlpP6<8PTyH zQj;q@WfTUgVh&-+hP7anR1TJ+yC(*D1^vHo zrP(?;aJ*6g*R$NV6LY{%E?^9tdUY@?h3qe@dc#@Z$Q>&{7{~yiu#ahfTy1?vueZ5a zir8>z+jB$z4vfr#0(Hd?8)!qUTPkPob1q-8Rk>!?)e8a=ksvaOeV2`5bilv5!*Tp_ zR{XlAC0ivgI04nBw%iuYwA=hwX(HreQAN2eG11dUT^OF80f^(v1Z?Pd!M;Moj<21e za)b79F>zc`CLlV^uTheXN$YJg;;)L+L5vZc@V&o!PRlpOeBascXU&lUN0vo#+-Fl@ z{ivmlDjBWK$LVb1JCaDgy9~@v!wC|j1|D7X_Un0^jL{Ry4fro{9|?V#K+H942-}2T z*~7_7Mz{%n0IJ4tLN(V`CNVP;EoLMIOhpVt1qHvV3%>G85w|sg6MR}o*w7&T3H8Mn z<>^xwzJ*55y@a78U^v@lh3M81tVX>4N9(VRs+5P)@KR_XKHGdZNl#6chD*gmg;D8P zCYtw;tD>|La%~x`3Vu5Y2@LvwkBbTsGA)xi+=RHeP$0e%(J8d=JjrtSS*kk>33dNm zf9Qs&AR)}Hb>+kYH_<{0ES?tL#R~ey67OZ!>k`s30IA^N)!6AjoM?hlu4NvxA_oO( z{ds){C(^EE<%LSPfJg@Lyn>7s%l}v&19y^wPaH-8O=B`kmW|*Y&;&K|l6yDK$H7>F zz>x{aE|BJt+)P$aODW)dm&EDwOf{T?EC>~PnHb(X^HZ!;+<=@UHwhyJB1=WcPe`3X z!2DlT^H4kSA7XGysZ(Kwc<}R9@p$9Fy5jVoS)ndb+36v-owW%18#jbetqp8ZWd}~w zi4~#}VymXYma1Sy9POv!Lq=gOj5iO)ISF*aj09{kv-M{M39AkwSBJ~*;CvUEqCixM z;?AsKmng}rNAox5uFoQq9Juvliqn%lw{527GKtfuz7p_Wu4%)2g1U~lwzUZbYfU-8 z6x>;7qS?Mu(I$#>&HXIpEQKM&5B+2z8s!;hd)hd|WfR%y+KtIFSm1Uld^|Ab94i}+ zNi1Y)8*!UFT*>T{jui8*h6U?&7(zba{#PC)m23<4QVAKjAWQKji@xbJ>VJKR**PfyR0 z_AUJHPCcQ?8GMRA{LqL9!#*gj8a)_$;ky-CBI4?hQIs!qU za->SfNkMNRrSU+I^4t+J{Ss!&pOMSP62{ugglCFj zV#L9KpMx=mi&qcCy&^Ma1lADX6FNX!iQqkefZicq4Q)}+rvXpCcH`J5rB}3L>2Z z%?J_duqgYWP03vZ!2?ln?oesfGB+QvT5cJWI~ZBw1k=_^1UVQM{oDpd@$^f_c8P-4 zC*u=s`x^WTnV`{LbTQ--AXqC-Us0NT<|+a6FBWn9^B#cW$7;%z!cm~f9{Xni4Y)?W z4h#%jeA{gbns5{rLTLsvAP(tigv0|=j2S7(6lnfWoQVt|AU!Q1aWCAAly3^g{)wwI zkkxTWvfw{4q^)KO9L07KxG__>qZrINp3Di(h@qV0k)Cl;ua$V{fQS}#!;r4*Lvwm+ zTbw748OVO9w}986@tL5naxlL`4dCvC=1_W-yZ*zy)ZU#H0z~`Se+jS;dl-wWwzRC^mJZL7j6E2xj5X4cQGJQ&hxUx8i2`cH4~w5}o`1Bgh7 zkIDt3!i>xN(U$Ud+0$iXlJpW0krxfas*Huab85+!a zesf_kySYezJ9t&++ld-c;sYe<{~Im|&BS=|LM?i4qfAd%SD>!!W4RfQn+Bv6V0CMp z&oKzMmeod!>wx%M2~>J2ORVlqKNad<)UH-(qN1RlW&mS)w&uK z6nOHeP+ghCKFr({OssQ~Gab4-c&WKapg_HbBE|X2uSgT32B6s>{=Goq--g*c_~O_P zw)-9i_!fZC5c(h*TwXyky2oohIQ*9y)6Tej3`P-7F~EEvhI+;ozP`SGEGX`<+^5hh zo;7^HoB`OPRAAs+Z2p&rT0%VUlts@gh!Sqi`qTDR~4AZpNw z!XJq8(N)$JoL84tP7wjEbeQ^0W(IRY9N9+G4j%FpSnsn8nNj$w07bT-jPR4^U*Aff zk!N4EwyKhN6qt^>e9v-+6Sp{Vt%vAu?&BiM%Lwf`EXXo<7$n@faGR`zW{$u3Q7U_; zsW5v^!VgiC775E zFq_K3JO{Bu9#4_@|CG73iC=+{g{iFtSSxrk3{BLQxp`M-SEOesG58aRzJJ?C4ye;% zv>Y!AzXPbMQYAep6@q7*g5~Z`Z^Y1vr_iAMi2EGJsW>mK;xBPW8tn92hrFwYE#4bV z=u{S972f-PAFhAi=kp0LMMKcCjVS!gh+@f#Mc2-U7}ZB zaoB)@B+mTp`G&QAl@*Ww0oe)R&}qR#yieeinO6racO9XR*Fao$f;@v9IouGEP>jXx znRC$Jc#4I}M)HY;G7;MFL{DiJMt7c)2Q+!?UC%%l2CUKJ8n(rE*%RW1iir+{48DI7 z!)@tZEqf-Q&DF@pB?Tj|iOM?7#&_B~yuXhNm3HP6v;SXhxZ_NWE>F*cgM-6&JHm;G zt}5`@3SPZV*U-NLeQV}<%6N|c^g~gRBppx7B0C;9Y%u;T3)%)I@XymQzuV;z#FuKs z?9+rSku<0R;&Pym%EFd)nG$rt!(*~7VqHEbIhiGTPj#0|E2nl-4p+ek{OAZ@GriqU zpFi6S5zg`f;m_H-6WXKO7@)?8GyKU#JyKCIH~;kCtnPaXFU$Y0^CsuIJoInwa#gdD zAgl2wdo2xV5BoBa+hM)#(9H2tjhtYFv`|O0^-|Q3ul%>v=!>A?zBeUkao}b|#JJ&S zv$*xyklBQDN7q(YQ~O@j$brW-u3*u9;NP@c8+po_1L%E>UAq%l?!xXci@CP2Fp|2r zRRvgYO>DPI*QKz5#|&JzIf{;nQs#oJQGDG}!Ob2BP!T>=rQ}&wH>Ou@ZR}Apu&B2O zo?^9ppotFKlT+DEkptq0jW1tvVZuWlj|sOPL7#woK5#QG89m>R zKYEABr$ni%vzYL@xq1AO=h%<&)wt%M*>n4cPD*nLQ^wG{*i9or)L^I>4_o}xsp2G7 zdWmPXJDBy3{^GMc-(T>db9#FmOmy18U9p)l4&ds&ZM>MyWoJ8SVwGHqxIHC^y8Gwt zp+kqN6{LBzubD<11ne0hC7odY?aeR4;G~~eu^=}3w_~E(C{|(Wk^S=;M?8L-JhFb-POqd8C@Hp{N z-ihs#lMlK&>#y<=bYi7eo1cM3?X?C6Cg_my6+o_y*^C44BWyY795m{KiR8XOJs!_z|5N8-(r3C` zP;jKJqvMdOffekj;PC=Ov#0_ov28LZuTMn5XVRn$=rP_Cy>%r%cJ+r_fe-G=s7l4a z(!sUh;D)hT>0N|D;7fE}ARM}K4K;}d?e^DiM zqrfkGjycRD;#K|p_aMVAhpv;x5=7+B<>kwBMcmXle@%Dh3BM!cAws+?AD=(vlP88@3Bi!DfcB<={WnIrs6;h;p9sblG^hXJaxDJ%bark@!b`77o>QNMJM^oo)BXR_t8MQgj z@d7J|GZlCCg-nrUP(H=ULTVc@U_Cm4)&zRXm-|@@H@iTch zrFgee^BYIqB{+pVli??!!?w>xm(HaYJt5b=jEXmK?k88)dUP7ED1095cqnXunKkLwSOS*P+cjWe-CJVOrB8n-&HhpDd2+je8BI;jSes!UUdg z@@tuall%N%Z7Aa@9m3G(aF&ZI zDv6?;_@YB!$YABI4Mve>wDH%U|MR&NBxVFNQ1J|}%jlmIlYe=4`A&zpI}WcWho=ll zT9-mAPj~Y7>oqZAG3=rB+oCb*AA65*gU~a-VmZ>}iYrd@6(=Mln5iawN00AWtjK^P zRswJ@|EB%z`ne$C{f@0btwbfZ9JU87=k8rNJ;)-hcIsYN_xZ8AUsn`isT{qy)UUgz zhQ~;4I*!|8pHoxEghM_w@)Ct5<+=I(d;Xg+=m?g7<8d2X5|$K?^!uab!?xlY{`@&vJQ5y zUCaX)m~df+#&^VB`X94LFbeFxI$6N_GV#?Ydd!;iXGNF-O3W2Ig&}oSb=Eb&$?=Ty zzDO~d>E~S3<`Hy#7Z%BQI^SsGbEPwF&O)ylsjM#cUw+3}^7dE7dR_`=7eghBu*%^? z6GwptW61(hdl+3onwu(Whas)IG$lQwQ}9jSjvz2){N)sUbeAe}6oOydCCme@*lfiIWFY)FZnj|GOqym*Vk_fn~;oUB6yDXK$m#Pw81> zy1x3BMx*_lO`&P*?MDR%hld}g9Ta~0g_-&g!sjCRt$d2H6o8icm@E0DowZemH~=qm zzu=7zjL9;TcsTi`dBGHR|B$K67vyd?0r~WT$g?ecZ0yV>LHm_zMbv{w!-tJV*oRmG z;-=CHMURT*}t!f{P52nYd|MYhy%2gn|^)f79DNtlcW*N2@Yz9ByY-AR0Q`+x4~X`7L^0 zytrVNx6<&>T{6vLW+XzMM?s=g zi|YMbCC0kX!^#ccIvZO0*ny}>*$}j;+@|D~-puT5QD4SMZS5${&jE63=J5_F3u$p{ z!)-b(+Gw~?PhhcDB||K*{Y7C=*zgawZ9UoRGB~zLdSm}4m3ng(Q+@r&{$8oFj-dx< z1I0)9j~OQ^vY;4-1LB_;Pel@hf}_cUMcC)+D&zF9p4z}txrbM@%qBYyDSTeMQH8g% zll8WdmgpWh8W5n&h&y9R$f0MJTHm`ArE;%*tuxhq%cy-KZ;Z?r^4mjgtAMm#Q25Lo z8TvkICRpO);iOGb=Ny1Wn_5>Q#m2Y_!)~1qQc!^14$G@*i`@F@%Y=>-$IigFHhr*(p63;$Bx9f$Ip|?GI%LQhtjkBJRMTYUw5E0 zK2Bu!Wk>@b@lloMEum`9uIMJ(&chN9onxcduXRfsU)28uJ{;-8lWpM2h39~L1eL#m zuS#6O-ZSvTXv#qm7GI4lPRO3ue8)!TP|!)di8dd0VK)6{!T*Ehh3JFY|8@PgZR5w~ zmekI`r0&q?iP9j3L;Qr`vbfoQx3dZ*i&4r6t0pD_i3ws;z7(H7%&IP86;k0ZeUC5hbka(2j7}@M8pngW0reJ{;cX z2qx$(MA_msq5NV5IA7;*eGoVefz8PpheiC|qR zD(jYz`uc03P|=&U%$b9OMCt$g&(r8r zdBeVyf0|kX@1@4UY^~~ba~nH5N3)Thx+0zG;V`lPirsxezP{mIzCIrwp>x7sHP01} zvmK9CT6w@|hLa8fDFu76{r&A{zsSqW9}Rnd-%NB-FHtatgJ&n`mT;09+>HIp>zuc$ zgpbdl>%o33k32zwV+*U~$3U36RJMH{eFh){Y2pg*IN;C9dtaGKssv(M#qeS1l9Lta zHTY z`(@a@-%nf~$bcVzB0X_3hDr$2YO(5H$RmtXG|w2=*K< zds|D{x61hkpu^hpUfjNJy&Pw&MV~nFx#Z}%BxS2%02_o)Um2%|{Rbi&S9t7c)TBu?gqGjfr_3e1FX10#nFl$8xz2WorCs2n6m+i8UJ-6z8di7M||&mAg|P{p;`FrU&A-dK4E6fIz60c_v;9 zcEhmhjpHKT6t}MN-{Gd_9>q{!Y%Je`368LzJ8pC(IBQZdP9U4(O9e*K=B`F_Jh@0z z8q}hDAB-J+sC(F5u?^{!YI{}IhV3Cz9h)t1$0c>|sK0L>WLy=)l1lp5OFN{9gi4uL z4|3V0VQxEBl^@oB^rU}|?_8rV(FX_cQb0C->_XT%@ZI#f8S!EHgEvjOF&;Mu)BOEU zJk2_)A<~U$o8zARtVqz=x&MKqx6pmjd-nIXn_L?*RO_gkn7#=OX71cf(_d<-kui$7 zS6{Tg|8RD8_DF->aoCX6RZkqua6P))tBUoV_6q~MbwiGhOV5@bIc1m3cxaxn8oU@| znJ-?fL(kb)%%L1FHVB9Ko5FH#w(GYXw*p!WV6@6Rjog$1jDQCb#eQQ3ad#G{4mXA;myT#Vd zdF0ccJI0#i^Z~mw!WL3mRNPI^0zdBs5@ho+;LtI%guyNY%NNJGu!kJRS?POFV}BZt zQhrZrl{3kZda`hAZ)5h)mf>6JpGX)GB{`NFD&N$fMZmB)gmERuIzq05)W|I&oUpi6 zB2wbr>C!AuTRUU-RYXK2D=2=-#|*bZ%P%pZq?;IcbV8n9d}`e7DfU)5>+DbMuTqU5 zV-juSZ|E#)OSJGvcU_L$3TxF_t+%+Dg*ZZ54 zA`W=*ui(7bi^D(Mn}bXE|2*m_RPyMMVniNX6`V18epfRN@2F@2zi?eC9>13ZbW`KN7ze$d zui^MLZVkOlfqH-0>+=snO;!&MGT&war$-i+4YH!iF!9@ge}k^HW&S1bMCH+&eV@`%cNUF@@N?;{z3~hS;+@KEAyOoud?}Ir*A?G|!NXAAdAi?y8N{hmF zf=LdmY$P4J@n(rF(&l|yzY?nmH5MMpGaXUemp2?ET#w%jJo;#B;wEl%&?T8O_krxC z$egqx<68S=*eg+l@I+`o{tI7}G0x-HYw6(y$PYWX6~bqpFZ`M6{(kMHfqH~FxY|Rw zsGq=CP2n@c?d*40cs^d+nPTC6T5s>M&@gASc*_+7BFE2Aiel!5Qm8N<9r<}~LyXbW{uJVbw?G&A)j(dK&=&S_+A>(Qv`iol(bRkAD` z>-cI&lccs&y5~c>e=}hFiqT}_)MNg)7I0bLYZ*-*g+)bHN%CROAM#%h2~oSz`Bh>$ zJC-FaEiHa912?9h4T!lDUHJQdRjy#wT5}J`M88+*a9^}Ja}FzYe|sg!kl4K9KX1BN z4`C8f8yy%AxPFte8AzMf;b#tzEh880*AX$lPM(zgbt%Fe>8Erl$pkeR7#VH|CqP#s z@ly&Y<==-Qe@?THoWyw|ka+dRq?&bnb?|;`o zT6&3jdb4JscWLPiv*{+wwkyP%`*D-c)VYjtL*+n}Bp;9cw!gWMerw2H*zoM%m1lk+hgncOI=g_* z_`>+}i2yM~yIc~^ivu2AMOpZWj#!%Z4LyHmUX^g2=aMlB^^y1bY}WD=dAj zb!A-hqs;D#w>_*uYwx`e3Z!#U=ThQN^RvwM{kS^X>36KBAq#(1lKAJ{6B*LSp=hZ7 zt<421_PPE7EoLn5uGP770YO1Qsw4jiN;9<-v3?E7r6(f+52Sav>g=O^f$v8bFMdJB z1{PoFfnY#!*K9VN8mlS0KWCD=#O@PzHW{~BX}R5JFs?}(^7uMK^F#i=;@bN9QfKeT z8pN3Wln0hbTTPs#Cnq=cGZPb?OWJFUp*4=AO;1ldPVSG+7Ei-^2iCRc8Pm)s_lRw# zzoHV!={0rqqQgvk5ZPk&@j#zP?VjtoKU}ia_8RMbGT_@`W#uh+m#EwMFSvQ06-LVO zUM&L;Y)VbI_u{OB5@Em{r%4~6?ah{OmINU2p$hNlc)g2}GxFuLf5Hm(z6~#kLonr+ z*PC9SS!@*Jv90B8Z>$l7I_F+OpC@tEzF$WQ=owN>Sc}tO<*;j~VuB1~@dD_a+|Ev- z(%~4cU*fxxIS{+}jVyL-b!_@n6HYuYMMH(15=NrHzkLeN>zf}qR*H2l1XSZtL z$^x>SiepOEz|>cktxL4{)+-*V-P&V5O1Qi>4s!pK)tmY-))zPU4Y;V>=POl}R~Rd& zw6)nZpF$|AOJw6@kUosaN#sJ}-$67{qwMaA?5wrAz->9)u%jc8Gy2O)zkLfq7~Y(F zn@n^7QLwBgRTvSTaVj3`#g+*wse>@}m64t0-Q5X88$R%%%8&8G22MIhc+E}a&TeHG z<=|TmW*=37Vs-D^nU7{)=zyQ^A-r9%!H8lKP|OVK>7A!&imC#YJB8GEMRPEL$`Fjl z+7c5k8WQ1k!pw;6ne2%US*Vj@l29kda&8*^W-RQz6z)dsxN9)t7z(=8zFp z?yfZZwebV}!TTO85scrJY+TC&7m7^u#MJ|2ethVsl^}_#Qt9M$uKYl^{Efp^AAlrZ!NZIb1z^h%Ep)rWYHCqtT(^hul4Ng?0EnD{r$Vw z>KZcphI`<_h0r+P)ZY-0&T`kE3w?5u2I_EQV@k5s@+ubECD(2_|MHdAcx2ct2+c?Lyrj0WHKX?)c^p3QRn}HgR8E)!acA*uL@r5^3KbGq6e0CBh zh_=u9TOSQw508c@5}eR`aaJB3H_hhva^9A$^B-o{6EH2}oUYSYt=`O=>I_?%L32F6 zzQ9=&I$rC2vtIvs#O(C+pVuCS7G}jCH%&}T{z495Lc|k@Hha53AJ(=2!QTG&Ak*0L zy4PRnVaUSzpUQ7m)-wxsb<%Y_SKhCN@eneL`JjRDp2kPFzV#LB_i8=C`BK_?_f)7? zxgpcaVyiHwX?j=a7o2cCq{zssNq!v+cn>k1bHv>Z@h%i8a{H@ndoIk8(0RmFQ(K#WE%N$@+~F5% zA8IVVHxxNpb~^RfgXib~qXINMf8y)c&&D&EanEB}Ww!30a!S%_{^_Z*w7GIUvGn(y z$Yt8W4w~7#;1J`fe4@%HFtsOHnIS#FDXO1phY3C*^a*^rb+i8oTV1{P7e#fTJbC2Wa2R%zpF~lOt@~nX^xEH$5^NQyfx<-widcj^fdlq1`R?p4tN{lZH9kc z4d{0M^gQs=4-tZ3yQ{p#?*Y+Ewr9F4tXCL9caA{Xf_gR9oBJ`dzlQT(2-A+*3fy=c zcVg1E07)KpTY9|unL8dkwhiIOo5$_HYJ|R>E;rQEpEc;&*(|m?`TV+q>#TUdW3Y8e z3kpIhptQu!JSrd8a8R(ta$BV~;;>_O>nyATo| z@bTgYtd>WyjSba_Lm7ScipsOq;7Z=G)c_LgHT3|Ah$ z{OQ@?dYg!n8BPbyeBR$jVb2u2Nt0zKkkbSAVv9MiFJ!ysMcux9YyDjck|^AdB(hOX zuN?X?h9aCW@XrkPxdp97j#;HG2qpSa-(| zqC~x#qBS6%O8+0)XM|M|@c-W0Kf`e8kONu1YGPfY`kz;sLX*32JTnbqK`0zV#`y?} z@4nU2&TZRS7!)z@^n;8ot0Z!| z;;)l9ndY{qTquh)#N++aiXU+%^AFeA2vTh>*^oQ87i+^-kIZnjbGY4O!6X)_Cyf5t zzSk8Ew|0VMO>#q>VeRl(G(xw3xP;&Cw|wx>Ti=SZ@+T^+B1%(aclhF_$CDJOvfO;g zW62uir&@al88MAD)zrS7a^1ZE7lSP(#p4wRT{$=8B2s&POkRioJ9g);UBA@|#o+XG z=<4bsZ}cgWE%lu~Lf&aYjMB|uGmDI#>7FYmkETVF$FzqXm~bUQV?PH(Rd%NwD|9|{ z#eh@QPu<;aef3>!TZXWflt)|8d3Mo?Isi?FvbAp}GrP`|9X(R^g zwU|qYdmTh8_~HvyIAsedWv^?@TE~FnPOvQ<;mZm%$n~D*(E+Uvk$l9FRlgqXpJR%n zW+Ce}o`~V?Plu~)Se;M%9z1y>xp^iI^34YgTOe-!erUCk(pqwI^5Ktf-zJR9kgRi4 z^hY)|$`-1RwH~Z*@pq0OaThSx=4WoI0#`dY*YY7}Jr;Ag?a2vKj~DUy%38Ni3eC-r zw=cj7PA)Z2mE4qIx0w+(2*ml5`ua`QyaBWA(HHBV=2!G^2OpU}*jeW=#reVxjj!m! zdjHc^&d{D+86LFxO8fcqo!9UJ=QNJLY7P_G?ZBUapAYLmim61w2*Z`UBCTJ|+R@N1 zZ;*!wU8t?qFs4*c(~=nN;afk^U;`fF~NEA>vEWOYn(8X8|nsSiurz+$+6 zu6e}UgG4znl(v@o1ufw1`cMvhJAW|umSyE`)BgMXGsNzmgM(;<#54J!=}zQR!0G^q z!c21z?3rR<;8Ns@y1gFQbbf58^BGcdtZ>h&XreMv3fXp$=LxwDY@m_n1)H)(L?7G4 z<#SVh_Vps2#s`p94AIp^^h49*M3)saz znxaW^=Q4FbUC;v@&>)3-{e=e@M$n!fJAVG)*sdh3$cP1xa))tM0h|t7wRrPF?rjKs zE7^R=_=Kzlrfy8T{-CKuj=;R-8I7hHNR&LjcvKpev7doB^pUx#w7c!-eYoxECDA*T zt@@OUxw003qnTGZG|2RAoI*Ws-6?a1X|GuyQtUhvZi-*O0UQ&7l?~gHpdB*nWUCg7 zPyg70;*QE= zPg9DCVT~;-J?k_RaZU~ja7Lp^V~uKL3PpKeT<7@EBfRt(oJ0u+%|+@C8!2_sk{h?y zC`n#hyNaRipY_GZV=>wGBhj`fFbRj@d8zx~1bXwam{7s!$=TPX_rW^_1bV7K=ZQEM z#W0Stxe&YBK-g26SJRww-Et;O?!-P9|3@j!^AsVHu4K;8u zj|vI7E*K_^j3G!h|CDlpamgUz)7E@qJC_M#`(G9-+G3$zhd;bb$@78m`$QbkwF+LT zh0}w#Sbu+Wy`vZBd*>|GRpu)jVU!2{kOPF4UV1c=yN@)`)7LwfOGVLpNeej%olRtAW>>{piN*27@kSx-mz@%d4(WXF_4YYk#`qcJ9%2TVy90ojtOonc)YJro z*xxF})wac0s`|u;3RcPg8OBSd{BNgNo_TbHKn!gn$idB-LpyN%7tyQh>sIl!$>yMA z>mkkQsgFxF{{%e@z<~dbgWFapgY19E&6N#D(UGjU8O0~WnrA2q6jf08+KOai&>&0G z3bue6w*?vM(y+}tz%qI_GPepj5H|>cLVVA>~z2op#onaA_#? z^Fr`3+H=V^Xb2GTjl9ar0DONc{{qs3M9N~UAmeuS(S%N)hk*4WlsF-AaG|F}-nRv* z{7Heu|G4KY0IViG)HRpxhUcI!a-n9H8Q=u&o=U#ovdTk<`uz(E_2V+$V4+n@9!L|C zT-kQN&)kICXwCl8*y&&n-DibZ!J_T2nuMrh=l|X{1Bo_WP(YRJqG*oweo)R3a+jY5 zAOUav8ul5qBP7H^B@+)f3ijojoP6Mq!kMtBi2^WW{P%#Ccl56!?YOQks!UEsdEv;H5 z6tIi~gfQMosIVwa=ss)b=?j3oqf3`1elyDEf7T!es*uXZxq$MsS7!LZr8Cf~imk(@ zmg4})?o0$#Y4{luH^sR-EWnQjyC%Yn@iDdb^Y91nUwHz;cIgj%=8O#Zo&~lMXbv!B zGOoD06YhComIpMkz;Rdy&A|PY-@Ust+n~=YS`2JKBlK3E1-}&bzr~9vaD+2Mfypku zBV-Sk!AvmvfE$4KBf^aT+NEFbm;%37Ql9=JQUC(&5%COc`x@+lQxP@P3lN4M{fi2L zJ+R|s^ExjEa(;NzzNJCQ1MIJk-AzKOC~$#|ot9Y3o}*E~Q6RnN;#&VP1o&y%#ptW! zLP62fa3E%ZWL(Su)p1bu4TcmC1PY3^hQ#bhhDIg`AVA_QW6CT*L6O;z*bK>lvK9jV zX=fQyX5lE({eNNKMU? zxOWn1ziT4arfZqO#HiDbP!*XmIfTLx(prwy&LeMX0#d8~cR~Alc?x?(8y@kp^%s0W$z}i;0Xhzs|Zv80%T9YZ1Q%`{RI^ zlW_%}R|;ef9c2aC+jMVj+7C~Zm};|>a^s~CGK4pYK3FOO&^>*K9}rEP*R7Bi07X;+ zIIBgCv~Bw73?Nmy#=h%6vLOI+O1{qGKStrT|KSQ2aKL6O7(p{DfoBjOzD=w_gN?E* z2CNGU<&4~^;^fiRypIGwle6&5&hTCUsjC|1;bkg;kEdTANJs#sXH9l(HwKY>gg)hy zthji&h{wtk$CT`WsvRRyvYxeRo`RaUFq~8V?-=yorj(Y;>g@n7TIg4s2}OyAkMIV{A?b+T?5|`7&K|z2D@r2&WFBPE zv)sr!ncM^Hibew2LthSp5wpbze8$Gv9<>=@i_0<|_}Lq`bmp0Ys6J`mt1ZPJjZ)xZd zGT-2C#J*ao6PeRdg@|WQln_&#g!+pEC5{JB22`#ok|1v>M4j5c6&5QG2`+x2!FsyW zU}9m&*y?*oa7B_EWSt@RKq(D%Dj1lUATl-p61zg;5^>5C4Gd^>JO(#<;=;8k6el_Z z{U0}V{bCJwQF%bTo8e`~dY z{P5JT6N~8+4avh$H4)3pgmAt}?Yf{vH3+uucGHi#jRftEK`KYb_)!LX`2=jklAAtE zwEYYm%HZIM_xnIJWA&Hqv$Gp!T$-9gSV5_8gO$;&`K9ESHqxeFI1l(KE^k>14d5W4 zcumq;Lb(oa2Fs0C4(0dwdbVyH9}>YC0A+_!N^5x00r}|Hg*QYeA98MG@3;|b(YP!B z%iDWLTv8BtwcoEm{+kW|nw!^JEW869))11@t$?jjq ziyrPA7R7Y14W64{kw8j==29xzja = provider: 'cerebras', group: 'qwen' } + ], + memorylake: [ + { id: 'gpt-5', name: 'GPT-5', provider: 'memorylake', group: 'GPT 5' }, + { id: 'gpt-5-mini', name: 'GPT-5 Mini', provider: 'memorylake', group: 'GPT 5' }, + { id: 'gpt-4o', name: 'GPT 4o', provider: 'memorylake', group: 'GPT 4o' }, + { id: 'gpt-4o-mini', name: 'GPT 4o Mini', provider: 'memorylake', group: 'GPT 4o' }, + { id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', provider: 'memorylake', group: 'Gemini 2.5' }, + { id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro', provider: 'memorylake', group: 'Gemini 2.5' }, + { id: 'claude-haiku-4-5-20251001', name: 'Claude Haiku 4.5', provider: 'memorylake', group: 'Claude 4.5' }, + { id: 'claude-sonnet-4-5-20250929', name: 'Claude Sonnet 4.5', provider: 'memorylake', group: 'Claude 4.5' }, + { id: 'glm-4.5', name: 'GLM 4.5', provider: 'memorylake', group: 'GLM 4.5' }, + { id: 'glm-4.5-air', name: 'GLM 4.5 Air', provider: 'memorylake', group: 'GLM 4.5' }, + { id: 'grok-4', name: 'Grok 4', provider: 'memorylake', group: 'Grok' }, + { id: 'grok-4-fast-non-reasoning', name: 'Grok 4 Fast', provider: 'memorylake', group: 'Grok' }, + { id: 'qwen-flash', name: 'Qwen Flash', provider: 'memorylake', group: 'Qwen' }, + { id: 'qwen-max', name: 'Qwen Max', provider: 'memorylake', group: 'Qwen' }, + { id: 'qwen-plus', name: 'Qwen Plus', provider: 'memorylake', group: 'Qwen' } ] } diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index bc32ef349..cc8c956e4 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -31,6 +31,7 @@ import JinaProviderLogo from '@renderer/assets/images/providers/jina.png' import LanyunProviderLogo from '@renderer/assets/images/providers/lanyun.png' import LMStudioProviderLogo from '@renderer/assets/images/providers/lmstudio.png' import LongCatProviderLogo from '@renderer/assets/images/providers/longcat.png' +import MemoryLakeProviderLogo from '@renderer/assets/images/providers/memorylake.png' import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png' import MistralProviderLogo from '@renderer/assets/images/providers/mistral.png' import ModelScopeProviderLogo from '@renderer/assets/images/providers/modelscope.png' @@ -695,6 +696,16 @@ export const SYSTEM_PROVIDERS_CONFIG: Record = models: SYSTEM_MODELS.cerebras, isSystem: true, enabled: false + }, + memorylake: { + id: 'memorylake', + name: 'MemoryLake', + type: 'openai', + apiKey: '', + apiHost: 'https://memorylake.data.cloud', + models: SYSTEM_MODELS.memorylake, + isSystem: true, + enabled: false } } as const @@ -763,7 +774,8 @@ export const PROVIDER_LOGO_MAP: AtLeast = { huggingface: HuggingfaceProviderLogo, sophnet: SophnetProviderLogo, gateway: AIGatewayProviderLogo, - cerebras: CerebrasProviderLogo + cerebras: CerebrasProviderLogo, + memorylake: MemoryLakeProviderLogo } as const export function getProviderLogo(providerId: string) { @@ -1434,5 +1446,15 @@ export const PROVIDER_URLS: Record = { docs: 'https://inference-docs.cerebras.ai/introduction', models: 'https://inference-docs.cerebras.ai/models/overview' } + }, + memorylake: { + api: { + url: 'https://memorylake.data.cloud' + }, + websites: { + official: 'https://memorylake.ai', + apiKey: 'https://memorylake.data.cloud/panel/token', + docs: 'https://docs.memorylake.ai' + } } } diff --git a/src/renderer/src/i18n/label.ts b/src/renderer/src/i18n/label.ts index 7a6ad843d..6539d8f5c 100644 --- a/src/renderer/src/i18n/label.ts +++ b/src/renderer/src/i18n/label.ts @@ -88,7 +88,8 @@ const providerKeyMap = { huggingface: 'provider.huggingface', sophnet: 'provider.sophnet', gateway: 'provider.ai-gateway', - cerebras: 'provider.cerebras' + cerebras: 'provider.cerebras', + memorylake: 'provider.memorylake' } as const /** diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 4ebc57cb9..0249fde1a 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -2572,6 +2572,7 @@ "lanyun": "LANYUN", "lmstudio": "LM Studio", "longcat": "LongCat AI", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 8829bfe08..f9d2cf225 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -2572,6 +2572,7 @@ "lanyun": "蓝耘科技", "lmstudio": "LM Studio", "longcat": "龙猫", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope 魔搭", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 1a036a29e..87023c8db 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -2572,6 +2572,7 @@ "lanyun": "藍耘", "lmstudio": "LM Studio", "longcat": "龍貓", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope 魔搭", diff --git a/src/renderer/src/i18n/translate/de-de.json b/src/renderer/src/i18n/translate/de-de.json index 1300fbf6c..788199fec 100644 --- a/src/renderer/src/i18n/translate/de-de.json +++ b/src/renderer/src/i18n/translate/de-de.json @@ -2572,6 +2572,7 @@ "lanyun": "Lanyun Technologie", "lmstudio": "LM Studio", "longcat": "Meißner Riesenhamster", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope", diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index 535a36489..407b56f50 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -2572,6 +2572,7 @@ "lanyun": "Λανιούν Τεχνολογία", "lmstudio": "LM Studio", "longcat": "Τσίρο", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope Magpie", diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index 43d5919f0..522ff030f 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -2572,6 +2572,7 @@ "lanyun": "Tecnología Lanyun", "lmstudio": "Estudio LM", "longcat": "Totoro", + "memorylake": "MemoryLake", "minimax": "Minimax", "mistral": "Mistral", "modelscope": "ModelScope Módulo", diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index ef7db8b3b..c296f32dc 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -2572,6 +2572,7 @@ "lanyun": "Technologie Lan Yun", "lmstudio": "Studio LM", "longcat": "Mon voisin Totoro", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope MoDa", diff --git a/src/renderer/src/i18n/translate/ja-jp.json b/src/renderer/src/i18n/translate/ja-jp.json index 42c50c882..b7bd3ef26 100644 --- a/src/renderer/src/i18n/translate/ja-jp.json +++ b/src/renderer/src/i18n/translate/ja-jp.json @@ -2572,6 +2572,7 @@ "lanyun": "LANYUN", "lmstudio": "LM Studio", "longcat": "トトロ", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope", diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index bc84fc99b..9a379cfce 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -2572,6 +2572,7 @@ "lanyun": "Lanyun Tecnologia", "lmstudio": "Estúdio LM", "longcat": "Totoro", + "memorylake": "MemoryLake", "minimax": "Minimax", "mistral": "Mistral", "modelscope": "ModelScope MôDá", diff --git a/src/renderer/src/i18n/translate/ru-ru.json b/src/renderer/src/i18n/translate/ru-ru.json index 109bffb9b..ae7608213 100644 --- a/src/renderer/src/i18n/translate/ru-ru.json +++ b/src/renderer/src/i18n/translate/ru-ru.json @@ -2572,6 +2572,7 @@ "lanyun": "LANYUN", "lmstudio": "LM Studio", "longcat": "Тоторо", + "memorylake": "MemoryLake", "minimax": "MiniMax", "mistral": "Mistral", "modelscope": "ModelScope", diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 8d9176be1..30b6b7212 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -67,7 +67,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 182, + version: 183, blacklist: ['runtime', 'messages', 'messageBlocks', 'tabs', 'toolPermissions'], migrate }, diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index a80336e69..5a5b6e48b 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -2976,6 +2976,16 @@ const migrateConfig = { logger.error('migrate 182 error', error as Error) return state } + }, + '183': (state: RootState) => { + try { + addProvider(state, SystemProviderIds.memorylake) + logger.info('migrate 183 success') + return state + } catch (error) { + logger.error('migrate 183 error', error as Error) + return state + } } } diff --git a/src/renderer/src/types/provider.ts b/src/renderer/src/types/provider.ts index 4e3e34760..037794e2b 100644 --- a/src/renderer/src/types/provider.ts +++ b/src/renderer/src/types/provider.ts @@ -189,7 +189,8 @@ export const SystemProviderIdSchema = z.enum([ 'huggingface', 'sophnet', 'gateway', - 'cerebras' + 'cerebras', + 'memorylake' ]) export type SystemProviderId = z.infer @@ -258,7 +259,8 @@ export const SystemProviderIds = { longcat: 'longcat', huggingface: 'huggingface', gateway: 'gateway', - cerebras: 'cerebras' + cerebras: 'cerebras', + memorylake: 'memorylake' } as const satisfies Record type SystemProviderIdTypeMap = typeof SystemProviderIds