From 73fc74d875d7652e25fcbf8275498c3b7e835c47 Mon Sep 17 00:00:00 2001 From: SuYao Date: Tue, 9 Dec 2025 10:29:35 +0800 Subject: [PATCH 01/35] fix: add support for OpenRouter embeddings in listModels method (#11774) * feat: add support for OpenRouter embeddings in listModels method * fix: broken url * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: format --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../aiCore/legacy/clients/openai/OpenAIBaseClient.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts index dc97e74a3..910590aea 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts @@ -100,6 +100,17 @@ export abstract class OpenAIBaseClient< override async listModels(): Promise { try { const sdk = await this.getSdkInstance() + if (this.provider.id === 'openrouter') { + // https://openrouter.ai/docs/api/api-reference/embeddings/list-embeddings-models + const embedBaseUrl = 'https://openrouter.ai/api/v1/embeddings' + const embedSdk = sdk.withOptions({ baseURL: embedBaseUrl }) + const modelPromise = sdk.models.list() + const embedModelPromise = embedSdk.models.list() + const [modelResponse, embedModelResponse] = await Promise.all([modelPromise, embedModelPromise]) + const models = [...modelResponse.data, ...embedModelResponse.data] + const uniqueModels = Array.from(new Map(models.map((model) => [model.id, model])).values()) + return uniqueModels.filter(isSupportedModel) + } if (this.provider.id === 'github') { // GitHub Models 其 models 和 chat completions 两个接口的 baseUrl 不一样 const baseUrl = 'https://models.github.ai/catalog/' From adbadf5da628a49dcbb8e5831a7b631fb6386eb8 Mon Sep 17 00:00:00 2001 From: Phantom Date: Tue, 9 Dec 2025 10:35:39 +0800 Subject: [PATCH 02/35] fix(models): include model name as fallback for id field (#11760) Add model's name as an additional fallback option when determining the id field in adaptSdkModel to handle cases where neither id nor modelId is available --- src/renderer/src/services/models/ModelAdapter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/src/services/models/ModelAdapter.ts b/src/renderer/src/services/models/ModelAdapter.ts index deea63169..b5a6f238a 100644 --- a/src/renderer/src/services/models/ModelAdapter.ts +++ b/src/renderer/src/services/models/ModelAdapter.ts @@ -45,7 +45,7 @@ function normalizeModels(models: T[], transformer: (entry: T) => Model | null } function adaptSdkModel(provider: Provider, model: SdkModel): Model | null { - const id = pickPreferredString([(model as any)?.id, (model as any)?.modelId]) + const id = pickPreferredString([(model as any)?.id, (model as any)?.modelId, (model as any)?.name]) const name = pickPreferredString([ (model as any)?.display_name, (model as any)?.displayName, From 086190228a14c96d42165e996f2481461120e8da Mon Sep 17 00:00:00 2001 From: Phantom Date: Tue, 9 Dec 2025 10:42:18 +0800 Subject: [PATCH 03/35] fix(aiCore): correct provider adaptation with model parameter (#11758) Ensure the model parameter is properly passed to adaptProvider when provider is specified --- src/renderer/src/aiCore/index_new.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index 4379547a3..5c84a7254 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -91,7 +91,9 @@ export default class ModernAiProvider { if (this.isModel(modelOrProvider)) { // 传入的是 Model this.model = modelOrProvider - this.actualProvider = provider ? adaptProvider({ provider }) : getActualProvider(modelOrProvider) + this.actualProvider = provider + ? adaptProvider({ provider, model: modelOrProvider }) + : getActualProvider(modelOrProvider) // 只保存配置,不预先创建executor this.config = providerToAiSdkConfig(this.actualProvider, modelOrProvider) } else { From 8ede7b197f2240ea1e8536cdff624fe9275db431 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 9 Dec 2025 14:06:48 +0800 Subject: [PATCH 04/35] chore: remove unused icon files and related script from package.json Deleted multiple icon files from the build/icons directory and removed the generate:icons script from package.json as they are no longer needed. --- build/icons/1024x1024.png | Bin 107941 -> 0 bytes build/icons/128x128.png | Bin 9529 -> 0 bytes build/icons/16x16.png | Bin 621 -> 0 bytes build/icons/24x24.png | Bin 1037 -> 0 bytes build/icons/256x256.png | Bin 23210 -> 0 bytes build/icons/32x32.png | Bin 1534 -> 0 bytes build/icons/48x48.png | Bin 2619 -> 0 bytes build/icons/512x512.png | Bin 51066 -> 0 bytes build/icons/64x64.png | Bin 3818 -> 0 bytes package.json | 1 - 10 files changed, 1 deletion(-) delete mode 100644 build/icons/1024x1024.png delete mode 100644 build/icons/128x128.png delete mode 100644 build/icons/16x16.png delete mode 100644 build/icons/24x24.png delete mode 100644 build/icons/256x256.png delete mode 100644 build/icons/32x32.png delete mode 100644 build/icons/48x48.png delete mode 100644 build/icons/512x512.png delete mode 100644 build/icons/64x64.png diff --git a/build/icons/1024x1024.png b/build/icons/1024x1024.png deleted file mode 100644 index 0da0300403d58b76995f2137199b6b3dce39f43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107941 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

El)=CD@@ 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 diff --git a/build/icons/128x128.png b/build/icons/128x128.png deleted file mode 100644 index 4d82c7f68aa0c207204af3533ae44076424942b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9529 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 diff --git a/build/icons/16x16.png b/build/icons/16x16.png deleted file mode 100644 index 1188ac273cc91b3c2c22532863b38289168429db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmV-z0+RiSP)R`uhXTIiP>&+~p&_DNj!=~j4zO$klXM7Gu?q!)n;YD8n(+J_;X{)K zaA;GYp-LD<)HXJ7M@NaORs79OB2^lyDDOBnZILQ|GKn=eht=PYUS9HRbrotg;&XGD zR0_SlrM|z9`|yAfp~a?20l%vYw@|<&613POBWO<#)~8RnnGC3+!^4c>f~zZt$6;&?<&8~?D#T*6M30Yzp2ur< zH(?Oa64h!nPEN4WX{4(QH3n2c1VfXEpr@x01h`{k^scNB%Vx3q`Uoo(tYi{5m%|<$ zM4z9*^AHhQ3{3(!l?tzGYlQdrU|E>nUZP@=+SV2=u~drs-X7uZE^f7o@W#+)iQpEC z)aU2XyF2WG0b;YWI8#&n@$y2fR3d(TjU~cg1_)>~BE&6=#=!xo63=FdPftS>(KtB3 z7D0F?u$IQhzXC(Fi3r@?;g?FNF+}Au!Ojl0=V6J^;n)TifJ4Bc%@)CU9?``GEv^Vg zgbo3)V0}9~`?)ke{vAjGp8<;|0gMPn1mT?kI0o{vy?yi>?tk54$s3Hc00000NkvXX Hu0mjfe=`yq diff --git a/build/icons/24x24.png b/build/icons/24x24.png deleted file mode 100644 index 8ced5819acb3fcae83937fb52099e7daccf47f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1037 zcmV+o1oHcdP)5i-PI4kuWc{Gakn?im6R7pO3J_Iy&lsF5on<6HtDR2gZSW zK#$zM{ecC-0&8zSiRzy~mj6c%=gvrf|6gJkF4SZ88p!e=cr!d8fQlfjD~HHI#jFd+ zvJL|hGh*+Fy{F_ouDO|{sR`#j#=5eYbt!O~4LI*{$BtpGt;_@NG{Q1viHHy;38e=QSR_KKp@H<#qev7%5MW=w zQhNQGicDJ@md#?N5*EiK&z}<}2_iy;vP6JT1UE21>FHB2V^I)57=riM;2?81Z{lZX zDbt!7{KN!qY>edPOXTrmLRExiAu9wTq|JzXdzpLq5N&QIef&6KRTYVI_ z;=w_Z{(eGLgmsOFz&+p()}SJ!N+sf+9^!)s(S`;v!;Ot0qobr%Q4uz9FGQpVvo;{h zDguNes49MB1REZvED%A10A)itM0$d2uU^e`A3F3LkuyLwYY-7sgg}Hq1QkKpP!8vQ zlfJ%@fCblvhQ_-OAMOVtpbppq2tUUI?|?o;ewV(!5f=OniH)0d*sagd00000NkvXX Hu0mjf{#@Oa diff --git a/build/icons/256x256.png b/build/icons/256x256.png deleted file mode 100644 index 0f2587cf945e6e885b9077f20a629393058b95f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23210 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 diff --git a/build/icons/512x512.png b/build/icons/512x512.png deleted file mode 100644 index 90bf1343216eb4f2cac4a27cd182cac648a558f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51066 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 diff --git a/build/icons/64x64.png b/build/icons/64x64.png deleted file mode 100644 index 34c53c766110aca68d2ecc4480b08a7154c05ea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3818 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 diff --git a/package.json b/package.json index 7ad1385fc..a3c198dda 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,6 @@ "agents:push": "NODE_ENV='development' drizzle-kit push --config src/main/services/agents/drizzle.config.ts", "agents:studio": "NODE_ENV='development' drizzle-kit studio --config src/main/services/agents/drizzle.config.ts", "agents:drop": "NODE_ENV='development' drizzle-kit drop --config src/main/services/agents/drizzle.config.ts", - "generate:icons": "electron-icon-builder --input=./build/logo.png --output=build", "analyze:renderer": "VISUALIZER_RENDERER=true yarn build", "analyze:main": "VISUALIZER_MAIN=true yarn build", "typecheck": "npm run typecheck:node && npm run typecheck:web", From 7507443d8b1b201f038c581cfb15647ec7fe4f2d Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 9 Dec 2025 17:40:25 +0800 Subject: [PATCH 05/35] Revert "chore: remove unused icon files and related script from package.json" This reverts commit 8ede7b197f2240ea1e8536cdff624fe9275db431. --- build/icons/1024x1024.png | Bin 0 -> 107941 bytes build/icons/128x128.png | Bin 0 -> 9529 bytes build/icons/16x16.png | Bin 0 -> 621 bytes build/icons/24x24.png | Bin 0 -> 1037 bytes build/icons/256x256.png | Bin 0 -> 23210 bytes build/icons/32x32.png | Bin 0 -> 1534 bytes build/icons/48x48.png | Bin 0 -> 2619 bytes build/icons/512x512.png | Bin 0 -> 51066 bytes build/icons/64x64.png | Bin 0 -> 3818 bytes package.json | 1 + 10 files changed, 1 insertion(+) create mode 100644 build/icons/1024x1024.png create mode 100644 build/icons/128x128.png create mode 100644 build/icons/16x16.png create mode 100644 build/icons/24x24.png create mode 100644 build/icons/256x256.png create mode 100644 build/icons/32x32.png create mode 100644 build/icons/48x48.png create mode 100644 build/icons/512x512.png create mode 100644 build/icons/64x64.png diff --git a/build/icons/1024x1024.png b/build/icons/1024x1024.png new file mode 100644 index 0000000000000000000000000000000000000000..0da0300403d58b76995f2137199b6b3dce39f43f GIT binary patch literal 107941 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

El)=CD@@ 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 literal 0 HcmV?d00001 diff --git a/build/icons/128x128.png b/build/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..4d82c7f68aa0c207204af3533ae44076424942b6 GIT binary patch literal 9529 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 literal 0 HcmV?d00001 diff --git a/build/icons/16x16.png b/build/icons/16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..1188ac273cc91b3c2c22532863b38289168429db GIT binary patch literal 621 zcmV-z0+RiSP)R`uhXTIiP>&+~p&_DNj!=~j4zO$klXM7Gu?q!)n;YD8n(+J_;X{)K zaA;GYp-LD<)HXJ7M@NaORs79OB2^lyDDOBnZILQ|GKn=eht=PYUS9HRbrotg;&XGD zR0_SlrM|z9`|yAfp~a?20l%vYw@|<&613POBWO<#)~8RnnGC3+!^4c>f~zZt$6;&?<&8~?D#T*6M30Yzp2ur< zH(?Oa64h!nPEN4WX{4(QH3n2c1VfXEpr@x01h`{k^scNB%Vx3q`Uoo(tYi{5m%|<$ zM4z9*^AHhQ3{3(!l?tzGYlQdrU|E>nUZP@=+SV2=u~drs-X7uZE^f7o@W#+)iQpEC z)aU2XyF2WG0b;YWI8#&n@$y2fR3d(TjU~cg1_)>~BE&6=#=!xo63=FdPftS>(KtB3 z7D0F?u$IQhzXC(Fi3r@?;g?FNF+}Au!Ojl0=V6J^;n)TifJ4Bc%@)CU9?``GEv^Vg zgbo3)V0}9~`?)ke{vAjGp8<;|0gMPn1mT?kI0o{vy?yi>?tk54$s3Hc00000NkvXX Hu0mjfe=`yq literal 0 HcmV?d00001 diff --git a/build/icons/24x24.png b/build/icons/24x24.png new file mode 100644 index 0000000000000000000000000000000000000000..8ced5819acb3fcae83937fb52099e7daccf47f10 GIT binary patch literal 1037 zcmV+o1oHcdP)5i-PI4kuWc{Gakn?im6R7pO3J_Iy&lsF5on<6HtDR2gZSW zK#$zM{ecC-0&8zSiRzy~mj6c%=gvrf|6gJkF4SZ88p!e=cr!d8fQlfjD~HHI#jFd+ zvJL|hGh*+Fy{F_ouDO|{sR`#j#=5eYbt!O~4LI*{$BtpGt;_@NG{Q1viHHy;38e=QSR_KKp@H<#qev7%5MW=w zQhNQGicDJ@md#?N5*EiK&z}<}2_iy;vP6JT1UE21>FHB2V^I)57=riM;2?81Z{lZX zDbt!7{KN!qY>edPOXTrmLRExiAu9wTq|JzXdzpLq5N&QIef&6KRTYVI_ z;=w_Z{(eGLgmsOFz&+p()}SJ!N+sf+9^!)s(S`;v!;Ot0qobr%Q4uz9FGQpVvo;{h zDguNes49MB1REZvED%A10A)itM0$d2uU^e`A3F3LkuyLwYY-7sgg}Hq1QkKpP!8vQ zlfJ%@fCblvhQ_-OAMOVtpbppq2tUUI?|?o;ewV(!5f=OniH)0d*sagd00000NkvXX Hu0mjf{#@Oa literal 0 HcmV?d00001 diff --git a/build/icons/256x256.png b/build/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2587cf945e6e885b9077f20a629393058b95f1 GIT binary patch literal 23210 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 literal 0 HcmV?d00001 diff --git a/build/icons/512x512.png b/build/icons/512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..90bf1343216eb4f2cac4a27cd182cac648a558f6 GIT binary patch literal 51066 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 literal 0 HcmV?d00001 diff --git a/build/icons/64x64.png b/build/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..34c53c766110aca68d2ecc4480b08a7154c05ea2 GIT binary patch literal 3818 zcmXX}3p|tU`yVYv6C33)v9U%;ESXXco6(l>I&?0Qvl>z=L{6(Fr{z4$A*8IFYVjtA z(U4w;NSR4al~a*lu{X#6t@r=A?>)~xpXYkM*Y(`r?{!`G9p_+wNKRHw76O6DQ7L36 zaJO9l!KA>I>lgG10@++iB@>T?NDMYcJo&J3uysy6zO>|`JgyFv+>qC(^D+GJUSk*b z1y#;_S-Zj+Ki}$=yBDfnyjau@%om;UKfieBgSVJ}%G;~MD?82DC|$LO&z6t7PlhMY z!EawK8=75u(G?q}9aMH%5T8-!>aHIC{-_=I{BA?#CE7QSyTuZ6t7g0k6HHwcPts4- zx{_8sWX@M1qv}WR?C^Ar{}t+H8fZ`_tVRT-X6)*Jqbtx2|C0W*t#(UR7F3rZo0G1E+iiC)I8;c32kvW3X4j8A+~}^U#Uks=Uzfw@ zxJTO_$C%V?nN(bkS2c9wM@ejuqDgOQ-cG50dOPO$Z=*bR@-Mm7=62YC3V58r5-4=z zee_Mg^L)0JpPE;SjUl>LxXJdEszapU>lOf@ipqiZ6jzn__u!&=m5G!2%+nFSzc{NX z!7Ix*dcP$~!G$e^Dk^FK-2754{hhs>`j4=|AY8%udDvuauJlm|(vSVzb)$;vvL=^h ze>)3Ng?Hl<%2O5GI6P{8Rb2lwKi5k#rW0uHA&vX>Yd2)`nP>==nKb!8H)&VN^b3Bl zX*)rt$WD~Cro+KV_2B&XP3hJ&EPL%eCuw!(5|(s-b3_e zMDt4gr@R$&E^js!pW%9^9>bN=xa%WMksb2=xo;D6;mExkrd4=p%GZx6OruG|0Tl{L z{OfIe*Y z^Vfn+2A+Wd&xN5sJAD7ysuYbCNZ|FOq_(-Qo_rp@e`eMv5buXf{o3Ji_Ug*)+Nkjb zSR6}1nx;Jg+2GCach%;j2o*m$LxPBigw`2pjr{qyRtz$QX|l(SA8b>Rx6UAHpeRuS zSYxLi=6MhFHP{CX*&isiSYy{~E=Q5HAo!-Jbyoe?Z5Pf~XaZ#v*-1XP^LHNTWfvu? zV&ayk&-T}Z;9rCqEjfu7o{nXlX4cpsQw&)IKVU-url|x!4-UqA4H_8pM=m0umOUkO zF6|T$LHhdhDg zZ)opL7GWKLi&6jt_w3neJ7p!mJ=r|_;POSl<{O;E2Fa(@nfmct9m`L*8gjM`t?d3i z8V{?m6ZI1GIa?j<*d*f!)AvPG9{m)X2jW?WhtiD%31{2(sZ=CJ^QasUYg?{H_ITc3 zWA`rWChwQJ6VvDARC>CVKbHJ#sk&i%HJu0-J-u0ac1bO@;n#NV!`y;-p$DZYO11ah zE5^^x!qA0&rB;pjY&+L6mzR%nuO~%+`Nz*}LB;W?67nWP8^&Q7qFZnVC)`Aa+CaJI zflEm>%|(U5OxHVMVJh*`QWG!5u2)x<#~*PO6kJ^Xejh`lkHKopm(PXmu7S<}dYfSv zAR-URM^fs-_unLA9LWln6gcAhmiVvjCj~11k9nRj`Fm7(vgQY=*Vj;Er>vSzE@h1O zZsP0<^l%E_+;F zobrf{r0@yFb#8EwqtT+`3yqR*6#x2Ms=L|ZURm;uG_ct0UpEaLI~+FU0ebIqyL#Wr-}K5bc`Wi-Fk}x7(D@ zwx2j^)i=s`Rdyh^uOpLeVQ!ooc6D{_ShP`IDNWgw-i{6+;L0 zYwF*7Q6^9QMo0za$)u*!RTV3@P!lh{?Wq~>yjkEzS$U&J|GiLM(pUa4v`L2dE^IZF zVBnf?N*~+3I4~rv4KsEwZ^+F$s7kMBl;WHtG(S1X6UHWP7g*@|y&_oA6=%bBzJIF~ zyY}`SLJ$p`2ocvl5{Jyh4(<1-3-jG!BO9M`nFaa#{&f@e&%Mh-mTt9%N+KUs`+M{~ z^-|v(s38=7y+W{ZpE?51s!UHv&9)Pj5a^as5GssWP{B+RcW|R;eE$7u1vT+PEvU)?bBiU4TgNzX84;R`d1Hx~C zbSYW=rNg_bf0In1XaUM26k@TS+Gs3SCpXI0;6aXi3mg|Yb2-EfA{M{mLjs;##=u@f zW$whxJnJeBY?clCwB#z9tRI$?%8kevY*;gEzI&)=-)hKf0SNvU6`uMi??yI>gp?Fa z#Na_M_*`@4NY}wv=2Y~Y8dXt@vW0!!6+I7j@b534$CW`FW61#B zgA15$&gCxgCIMK8L_uA?oJ0yNpCydwb8$0L15N-6(-KLxgi_2X-;?C+ZXk_yn$gZ3X1yhV{Y~gzFR#Je|zupif+EF$g56Q#Q&8L`w>TyrVmE zJcoCz?6Vw@yElMKVL=i9!F|c}D?LHPI11@YAF3aj1Qg}8w6k?%T;$E51R}ozOIilI@ZsPbS=V-|MoMM?o4>AjZeR4-=} zHCp}R`Ci|*No%XufL;+q3_|N8GE0<5S<~Z)~ggk=$4Qq6@c$ttQVVseMmJIl;XwNdJfoCQG?$W zLtKaTk!Y~GjufQ>*Pf1{hR`N~-jVO8KU7Y)pmt1WleDy8mdFC_4^Xz=gn|Sh0(JB?Z~&u;dMp28IFB*{NPVoc#0&4L`r~h z!ut1AS^SG`E_v9qZ~n;WYwftU)J9x2{r-(PYwppMGO&rm{2Fu*Z{*z=F)CqaG;G5&b@%-P_nl4;iN`&LjU5t*WZ zmZ7eLuTQX=3^HV0xdpHGteqZOTUCVb40%8L{&C)^y*`~7{>fk#1WzFWlH(wfFmQ|j zqQYV<)fK8IlMdAXIUY$Z1#E^$NJ2q&Qh}ueOaZ-_RkOO|qTF>|;j7W3k1v6|wkRxn zs2H?WnguKc4VK{W<#^`716#cXw9SZKSypm{o?&dY(WKX~n*Pa4%1da`kC=_l73J28 z2Mu$oGhM$8umXB|9-LOasUm&$%F$GA_NMk`bH$|-MShmCk@EWA>?j84Qb>kl#y`PJ e-!~+TtU)GThMaJUgIxz_SP0eHo?J$9i}^p7*6phR literal 0 HcmV?d00001 diff --git a/package.json b/package.json index a3c198dda..7ad1385fc 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "agents:push": "NODE_ENV='development' drizzle-kit push --config src/main/services/agents/drizzle.config.ts", "agents:studio": "NODE_ENV='development' drizzle-kit studio --config src/main/services/agents/drizzle.config.ts", "agents:drop": "NODE_ENV='development' drizzle-kit drop --config src/main/services/agents/drizzle.config.ts", + "generate:icons": "electron-icon-builder --input=./build/logo.png --output=build", "analyze:renderer": "VISUALIZER_RENDERER=true yarn build", "analyze:main": "VISUALIZER_MAIN=true yarn build", "typecheck": "npm run typecheck:node && npm run typecheck:web", From 058a2c763b41ff08720e077d24089c6e97ef268a Mon Sep 17 00:00:00 2001 From: Phantom Date: Wed, 10 Dec 2025 13:42:15 +0800 Subject: [PATCH 06/35] fix: restore API version control with trailing # delimiter (addresses #11750) (#11773) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(utils): add isWithTrailingSharp URL helper function Add new utility function to check if URLs end with trailing '#' character Includes comprehensive test cases covering various URL patterns and edge cases * fix(api): check whether to auto append api version or not when formatting api host - extract api version to variable in GeminiAPIClient for consistency - simplify getBaseURL in OpenAIBaseClient by removing formatApiHost - modify provider api host formatting to respect trailing # - add tests for url parsing with trailing # characters * fix: update provider config tests for new isWithTrailingSharp function - Add isWithTrailingSharp to vi.mock in providerConfig tests - Update test expectations to match new formatApiHost calling behavior - All tests now pass with the new trailing # delimiter functionality 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 * fix(anthropic): prevent duplicate api version in base url The Anthropic SDK automatically appends /v1 to endpoints, so we need to avoid duplication by removing the version from baseURL and explicitly setting the path in listModels --------- Co-authored-by: Claude Sonnet 4.5 --- packages/shared/anthropic/index.ts | 7 +- .../clients/anthropic/AnthropicAPIClient.ts | 3 +- .../legacy/clients/gemini/GeminiAPIClient.ts | 8 +- .../legacy/clients/openai/OpenAIBaseClient.ts | 12 ++- .../clients/openai/OpenAIResponseAPIClient.ts | 3 +- .../provider/__tests__/providerConfig.test.ts | 25 ++++- .../src/aiCore/provider/providerConfig.ts | 10 +- src/renderer/src/utils/__tests__/api.test.ts | 102 ++++++++++++++++++ src/renderer/src/utils/api.ts | 17 +++ 9 files changed, 162 insertions(+), 25 deletions(-) diff --git a/packages/shared/anthropic/index.ts b/packages/shared/anthropic/index.ts index bff143d11..b9e9cb884 100644 --- a/packages/shared/anthropic/index.ts +++ b/packages/shared/anthropic/index.ts @@ -88,16 +88,11 @@ export function getSdkClient( } }) } - let baseURL = + const baseURL = provider.type === 'anthropic' ? provider.apiHost : (provider.anthropicApiHost && provider.anthropicApiHost.trim()) || provider.apiHost - // Anthropic SDK automatically appends /v1 to all endpoints (like /v1/messages, /v1/models) - // We need to strip api version from baseURL to avoid duplication (e.g., /v3/v1/models) - // formatProviderApiHost adds /v1 for AI SDK compatibility, but Anthropic SDK needs it removed - baseURL = baseURL.replace(/\/v\d+(?:alpha|beta)?(?=\/|$)/i, '') - logger.debug('Anthropic API baseURL', { baseURL, providerId: provider.id }) if (provider.id === 'aihubmix') { diff --git a/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts index 15f3cf100..9b63b77dd 100644 --- a/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts @@ -124,7 +124,8 @@ export class AnthropicAPIClient extends BaseApiClient< override async listModels(): Promise { const sdk = (await this.getSdkInstance()) as Anthropic - const response = await sdk.models.list() + // prevent auto appended /v1. It's included in baseUrl. + const response = await sdk.models.list({ path: '/models' }) return response.data } diff --git a/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts index 9c930a33e..ac10106f3 100644 --- a/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts @@ -173,13 +173,15 @@ export class GeminiAPIClient extends BaseApiClient< return this.sdkInstance } + const apiVersion = this.getApiVersion() + this.sdkInstance = new GoogleGenAI({ vertexai: false, apiKey: this.apiKey, - apiVersion: this.getApiVersion(), + apiVersion, httpOptions: { baseUrl: this.getBaseURL(), - apiVersion: this.getApiVersion(), + apiVersion, headers: { ...this.provider.extra_headers } @@ -200,7 +202,7 @@ export class GeminiAPIClient extends BaseApiClient< return trailingVersion } - return 'v1beta' + return '' } /** diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts index 910590aea..c51f8aac8 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts @@ -25,7 +25,7 @@ import type { OpenAISdkRawOutput, ReasoningEffortOptionalParams } from '@renderer/types/sdk' -import { formatApiHost, withoutTrailingSlash } from '@renderer/utils/api' +import { withoutTrailingSlash } from '@renderer/utils/api' import { isOllamaProvider } from '@renderer/utils/provider' import { BaseApiClient } from '../BaseApiClient' @@ -49,8 +49,9 @@ export abstract class OpenAIBaseClient< } // 仅适用于openai - override getBaseURL(isSupportedAPIVerion: boolean = true): string { - return formatApiHost(this.provider.apiHost, isSupportedAPIVerion) + override getBaseURL(): string { + // apiHost is formatted when called by AiProvider + return this.provider.apiHost } override async generateImage({ @@ -129,7 +130,7 @@ export abstract class OpenAIBaseClient< } if (isOllamaProvider(this.provider)) { - const baseUrl = withoutTrailingSlash(this.getBaseURL(false)) + const baseUrl = withoutTrailingSlash(this.getBaseURL()) .replace(/\/v1$/, '') .replace(/\/api$/, '') const response = await fetch(`${baseUrl}/api/tags`, { @@ -184,6 +185,7 @@ export abstract class OpenAIBaseClient< let apiKeyForSdkInstance = this.apiKey let baseURLForSdkInstance = this.getBaseURL() + logger.debug('baseURLForSdkInstance', { baseURLForSdkInstance }) let headersForSdkInstance = { ...this.defaultHeaders(), ...this.provider.extra_headers @@ -195,7 +197,7 @@ export abstract class OpenAIBaseClient< // this.provider.apiKey不允许修改 // this.provider.apiKey = token apiKeyForSdkInstance = token - baseURLForSdkInstance = this.getBaseURL(false) + baseURLForSdkInstance = this.getBaseURL() headersForSdkInstance = { ...headersForSdkInstance, ...COPILOT_DEFAULT_HEADERS diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts index 8356826e2..b4f63e2bc 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts @@ -122,6 +122,7 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< if (this.sdkInstance) { return this.sdkInstance } + const baseUrl = this.getBaseURL() if (this.provider.id === 'azure-openai' || this.provider.type === 'azure-openai') { return new AzureOpenAI({ @@ -134,7 +135,7 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< return new OpenAI({ dangerouslyAllowBrowser: true, apiKey: this.apiKey, - baseURL: this.getBaseURL(), + baseURL: baseUrl, defaultHeaders: { ...this.defaultHeaders(), ...this.provider.extra_headers diff --git a/src/renderer/src/aiCore/provider/__tests__/providerConfig.test.ts b/src/renderer/src/aiCore/provider/__tests__/providerConfig.test.ts index 43d3cc52b..20aa78dcb 100644 --- a/src/renderer/src/aiCore/provider/__tests__/providerConfig.test.ts +++ b/src/renderer/src/aiCore/provider/__tests__/providerConfig.test.ts @@ -42,7 +42,8 @@ vi.mock('@renderer/utils/api', () => ({ routeToEndpoint: vi.fn((host) => ({ baseURL: host, endpoint: '/chat/completions' - })) + })), + isWithTrailingSharp: vi.fn((host) => host?.endsWith('#') || false) })) vi.mock('@renderer/utils/provider', async (importOriginal) => { @@ -227,12 +228,19 @@ describe('CherryAI provider configuration', () => { // Mock the functions to simulate non-CherryAI provider vi.mocked(isCherryAIProvider).mockReturnValue(false) vi.mocked(getProviderByModel).mockReturnValue(provider) + // Mock isWithTrailingSharp to return false for this test + vi.mocked(formatApiHost as any).mockImplementation((host, isSupportedAPIVersion = true) => { + if (isSupportedAPIVersion === false) { + return host + } + return `${host}/v1` + }) // Call getActualProvider const actualProvider = getActualProvider(model) - // Verify that formatApiHost was called with default parameters (true) - expect(formatApiHost).toHaveBeenCalledWith('https://api.openai.com') + // Verify that formatApiHost was called with appendApiVersion parameter + expect(formatApiHost).toHaveBeenCalledWith('https://api.openai.com', true) expect(actualProvider.apiHost).toBe('https://api.openai.com/v1') }) @@ -303,12 +311,19 @@ describe('Perplexity provider configuration', () => { vi.mocked(isCherryAIProvider).mockReturnValue(false) vi.mocked(isPerplexityProvider).mockReturnValue(false) vi.mocked(getProviderByModel).mockReturnValue(provider) + // Mock isWithTrailingSharp to return false for this test + vi.mocked(formatApiHost as any).mockImplementation((host, isSupportedAPIVersion = true) => { + if (isSupportedAPIVersion === false) { + return host + } + return `${host}/v1` + }) // Call getActualProvider const actualProvider = getActualProvider(model) - // Verify that formatApiHost was called with default parameters (true) - expect(formatApiHost).toHaveBeenCalledWith('https://api.openai.com') + // Verify that formatApiHost was called with appendApiVersion parameter + expect(formatApiHost).toHaveBeenCalledWith('https://api.openai.com', true) expect(actualProvider.apiHost).toBe('https://api.openai.com/v1') }) diff --git a/src/renderer/src/aiCore/provider/providerConfig.ts b/src/renderer/src/aiCore/provider/providerConfig.ts index 99e4fbd1c..33b03a997 100644 --- a/src/renderer/src/aiCore/provider/providerConfig.ts +++ b/src/renderer/src/aiCore/provider/providerConfig.ts @@ -17,6 +17,7 @@ import { formatAzureOpenAIApiHost, formatOllamaApiHost, formatVertexApiHost, + isWithTrailingSharp, routeToEndpoint } from '@renderer/utils/api' import { @@ -69,14 +70,15 @@ function handleSpecialProviders(model: Model, provider: Provider): Provider { */ export function formatProviderApiHost(provider: Provider): Provider { const formatted = { ...provider } + const appendApiVersion = !isWithTrailingSharp(provider.apiHost) if (formatted.anthropicApiHost) { - formatted.anthropicApiHost = formatApiHost(formatted.anthropicApiHost) + formatted.anthropicApiHost = formatApiHost(formatted.anthropicApiHost, appendApiVersion) } if (isAnthropicProvider(provider)) { const baseHost = formatted.anthropicApiHost || formatted.apiHost // AI SDK needs /v1 in baseURL, Anthropic SDK will strip it in getSdkClient - formatted.apiHost = formatApiHost(baseHost) + formatted.apiHost = formatApiHost(baseHost, appendApiVersion) if (!formatted.anthropicApiHost) { formatted.anthropicApiHost = formatted.apiHost } @@ -85,7 +87,7 @@ export function formatProviderApiHost(provider: Provider): Provider { } else if (isOllamaProvider(formatted)) { formatted.apiHost = formatOllamaApiHost(formatted.apiHost) } else if (isGeminiProvider(formatted)) { - formatted.apiHost = formatApiHost(formatted.apiHost, true, 'v1beta') + formatted.apiHost = formatApiHost(formatted.apiHost, appendApiVersion, 'v1beta') } else if (isAzureOpenAIProvider(formatted)) { formatted.apiHost = formatAzureOpenAIApiHost(formatted.apiHost) } else if (isVertexProvider(formatted)) { @@ -95,7 +97,7 @@ export function formatProviderApiHost(provider: Provider): Provider { } else if (isPerplexityProvider(formatted)) { formatted.apiHost = formatApiHost(formatted.apiHost, false) } else { - formatted.apiHost = formatApiHost(formatted.apiHost) + formatted.apiHost = formatApiHost(formatted.apiHost, appendApiVersion) } return formatted } diff --git a/src/renderer/src/utils/__tests__/api.test.ts b/src/renderer/src/utils/__tests__/api.test.ts index fe34dcf26..f5251b839 100644 --- a/src/renderer/src/utils/__tests__/api.test.ts +++ b/src/renderer/src/utils/__tests__/api.test.ts @@ -10,6 +10,7 @@ import { formatVertexApiHost, getTrailingApiVersion, hasAPIVersion, + isWithTrailingSharp, maskApiKey, routeToEndpoint, splitApiKeyString, @@ -450,6 +451,43 @@ describe('api', () => { it('returns undefined for empty string', () => { expect(getTrailingApiVersion('')).toBeUndefined() }) + + it('returns undefined when URL ends with # regardless of version', () => { + expect(getTrailingApiVersion('https://api.example.com/v1#')).toBeUndefined() + expect(getTrailingApiVersion('https://api.example.com/v2beta#')).toBeUndefined() + expect(getTrailingApiVersion('https://gateway.ai.cloudflare.com/v1#')).toBeUndefined() + expect(getTrailingApiVersion('https://api.example.com/service/v1#')).toBeUndefined() + }) + + it('handles URLs with # and trailing slash correctly', () => { + expect(getTrailingApiVersion('https://api.example.com/v1/#')).toBeUndefined() + expect(getTrailingApiVersion('https://api.example.com/v2beta/#')).toBeUndefined() + }) + + it('handles URLs with version followed by # and additional path', () => { + expect(getTrailingApiVersion('https://api.example.com/v1#endpoint')).toBeUndefined() + expect(getTrailingApiVersion('https://api.example.com/v2beta#chat/completions')).toBeUndefined() + }) + + it('handles complex URLs with multiple # characters', () => { + expect(getTrailingApiVersion('https://api.example.com/v1#path#')).toBeUndefined() + expect(getTrailingApiVersion('https://gateway.ai.cloudflare.com/v1/xxx/v2beta#')).toBeUndefined() + }) + + it('handles URLs ending with # when version is not at the end', () => { + expect(getTrailingApiVersion('https://api.example.com/v1/service#')).toBeUndefined() + expect(getTrailingApiVersion('https://api.example.com/v1/api/chat#')).toBeUndefined() + }) + + it('distinguishes between URLs with and without trailing #', () => { + // Without # - should extract version + expect(getTrailingApiVersion('https://api.example.com/v1')).toBe('v1') + expect(getTrailingApiVersion('https://api.example.com/v2beta')).toBe('v2beta') + + // With # - should return undefined + expect(getTrailingApiVersion('https://api.example.com/v1#')).toBeUndefined() + expect(getTrailingApiVersion('https://api.example.com/v2beta#')).toBeUndefined() + }) }) describe('withoutTrailingApiVersion', () => { @@ -495,6 +533,70 @@ describe('api', () => { }) }) + describe('isWithTrailingSharp', () => { + it('returns true when URL ends with #', () => { + expect(isWithTrailingSharp('https://api.example.com#')).toBe(true) + expect(isWithTrailingSharp('http://localhost:3000#')).toBe(true) + expect(isWithTrailingSharp('#')).toBe(true) + }) + + it('returns false when URL does not end with #', () => { + expect(isWithTrailingSharp('https://api.example.com')).toBe(false) + expect(isWithTrailingSharp('http://localhost:3000')).toBe(false) + expect(isWithTrailingSharp('')).toBe(false) + }) + + it('returns false when URL has # in the middle but not at the end', () => { + expect(isWithTrailingSharp('https://api.example.com#path')).toBe(false) + expect(isWithTrailingSharp('https://api.example.com#section/path')).toBe(false) + expect(isWithTrailingSharp('https://api.example.com#path#other')).toBe(false) + }) + + it('handles URLs with multiple # characters', () => { + expect(isWithTrailingSharp('https://api.example.com##')).toBe(true) + expect(isWithTrailingSharp('https://api.example.com#path#')).toBe(true) + expect(isWithTrailingSharp('https://api.example.com###')).toBe(true) + }) + + it('handles URLs with trailing whitespace after #', () => { + expect(isWithTrailingSharp('https://api.example.com# ')).toBe(false) + expect(isWithTrailingSharp('https://api.example.com#\t')).toBe(false) + expect(isWithTrailingSharp('https://api.example.com#\n')).toBe(false) + }) + + it('handles URLs with whitespace before trailing #', () => { + expect(isWithTrailingSharp(' https://api.example.com#')).toBe(true) + expect(isWithTrailingSharp('\thttps://localhost:3000#')).toBe(true) + }) + + it('preserves type safety with generic parameter', () => { + const url1: string = 'https://api.example.com#' + const url2 = 'https://example.com' as const + + expect(isWithTrailingSharp(url1)).toBe(true) + expect(isWithTrailingSharp(url2)).toBe(false) + }) + + it('handles complex real-world URLs', () => { + expect(isWithTrailingSharp('https://open.cherryin.net/v1/chat/completions#')).toBe(true) + expect(isWithTrailingSharp('https://api.openai.com/v1/engines/gpt-4#')).toBe(true) + expect(isWithTrailingSharp('https://gateway.ai.cloudflare.com/v1/xxx/v1beta#')).toBe(true) + + expect(isWithTrailingSharp('https://open.cherryin.net/v1/chat/completions')).toBe(false) + expect(isWithTrailingSharp('https://api.openai.com/v1/engines/gpt-4')).toBe(false) + expect(isWithTrailingSharp('https://gateway.ai.cloudflare.com/v1/xxx/v1beta')).toBe(false) + }) + + it('handles edge cases', () => { + expect(isWithTrailingSharp('#')).toBe(true) + expect(isWithTrailingSharp(' #')).toBe(true) + expect(isWithTrailingSharp('# ')).toBe(false) + expect(isWithTrailingSharp('path#')).toBe(true) + expect(isWithTrailingSharp('/path/with/trailing/#')).toBe(true) + expect(isWithTrailingSharp('/path/without/trailing/')).toBe(false) + }) + }) + describe('withoutTrailingSharp', () => { it('removes trailing # from URL', () => { expect(withoutTrailingSharp('https://api.example.com#')).toBe('https://api.example.com') diff --git a/src/renderer/src/utils/api.ts b/src/renderer/src/utils/api.ts index 10f31ae5c..25a73dcb1 100644 --- a/src/renderer/src/utils/api.ts +++ b/src/renderer/src/utils/api.ts @@ -62,6 +62,23 @@ export function withoutTrailingSlash(url: T): T { return url.replace(/\/$/, '') as T } +/** + * Checks if a URL string ends with a trailing '#' character. + * + * @template T - The string type to preserve type safety + * @param {T} url - The URL string to check + * @returns {boolean} True if the URL ends with '#', false otherwise + * + * @example + * ```ts + * isWithTrailingSharp('https://example.com#') // true + * isWithTrailingSharp('https://example.com') // false + * ``` + */ +export function isWithTrailingSharp(url: T): boolean { + return url.endsWith('#') +} + /** * Removes the trailing '#' from a URL string if it exists. * From 6df60a69c3a98158b112fb87d4de92d3e5fcd46e Mon Sep 17 00:00:00 2001 From: LiuVaayne <10231735+vaayne@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:42:04 +0800 Subject: [PATCH 07/35] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20chore(deps):=20upgra?= =?UTF-8?q?de=20@anthropic-ai/claude-agent-sdk=20to=200.1.62=20(#11824)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upgrade from 0.1.53 to 0.1.62 and recreate the spawn->fork patch for proper IPC communication in Electron. --- ...aude-agent-sdk-npm-0.1.62-23ae56f8c8.patch} | 4 ++-- package.json | 2 +- yarn.lock | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) rename .yarn/patches/{@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch => @anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch} (92%) diff --git a/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch b/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch similarity index 92% rename from .yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch rename to .yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch index 4481b58f3..62ab76757 100644 --- a/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch +++ b/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch @@ -1,5 +1,5 @@ diff --git a/sdk.mjs b/sdk.mjs -index bf429a344b7d59f70aead16b639f949b07688a81..f77d50cc5d3fb04292cb3ac7fa7085d02dcc628f 100755 +index dea7766a3432a1e809f12d6daba4f2834a219689..e0b02ef73da177ba32b903887d7bbbeaa08cc6d3 100755 --- a/sdk.mjs +++ b/sdk.mjs @@ -6250,7 +6250,7 @@ function createAbortController(maxListeners = DEFAULT_MAX_LISTENERS) { @@ -11,7 +11,7 @@ index bf429a344b7d59f70aead16b639f949b07688a81..f77d50cc5d3fb04292cb3ac7fa7085d0 import { createInterface } from "readline"; // ../src/utils/fsOperations.ts -@@ -6619,18 +6619,11 @@ class ProcessTransport { +@@ -6644,18 +6644,11 @@ class ProcessTransport { const errorMessage = isNativeBinary(pathToClaudeCodeExecutable) ? `Claude Code native binary not found at ${pathToClaudeCodeExecutable}. Please ensure Claude Code is installed via native installer or specify a valid path with options.pathToClaudeCodeExecutable.` : `Claude Code executable not found at ${pathToClaudeCodeExecutable}. Is options.pathToClaudeCodeExecutable set?`; throw new ReferenceError(errorMessage); } diff --git a/package.json b/package.json index 7ad1385fc..b658251bc 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "release:ai-sdk-provider": "yarn workspace @cherrystudio/ai-sdk-provider version patch --immediate && yarn workspace @cherrystudio/ai-sdk-provider build && yarn workspace @cherrystudio/ai-sdk-provider npm publish --access public" }, "dependencies": { - "@anthropic-ai/claude-agent-sdk": "patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.53#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch", + "@anthropic-ai/claude-agent-sdk": "patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.62#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch", "@libsql/client": "0.14.0", "@libsql/win32-x64-msvc": "^0.4.7", "@napi-rs/system-ocr": "patch:@napi-rs/system-ocr@npm%3A1.0.2#~/.yarn/patches/@napi-rs-system-ocr-npm-1.0.2-59e7a78e8b.patch", diff --git a/yarn.lock b/yarn.lock index a9bccb17e..e93fa9cd6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -503,9 +503,9 @@ __metadata: languageName: node linkType: hard -"@anthropic-ai/claude-agent-sdk@npm:0.1.53": - version: 0.1.53 - resolution: "@anthropic-ai/claude-agent-sdk@npm:0.1.53" +"@anthropic-ai/claude-agent-sdk@npm:0.1.62": + version: 0.1.62 + resolution: "@anthropic-ai/claude-agent-sdk@npm:0.1.62" dependencies: "@img/sharp-darwin-arm64": "npm:^0.33.5" "@img/sharp-darwin-x64": "npm:^0.33.5" @@ -534,13 +534,13 @@ __metadata: optional: true "@img/sharp-win32-x64": optional: true - checksum: 10c0/9b8e444f113e1f6a425d87287c653a5a441836c6100e954fdc33ce9149c8d87ca1a7d495563f4fac583cbaf14946fe18c321eb555b3f0e44a5de8433ba06bdaf + checksum: 10c0/bca0978651cd28798cd71a0071618eca37253905841fa0e20ec59f69ac4865e2c6c4e5fec034bc7b85a5748df5c3c37e3193d6adbd1cad73668f112d049390a3 languageName: node linkType: hard -"@anthropic-ai/claude-agent-sdk@patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.53#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch": - version: 0.1.53 - resolution: "@anthropic-ai/claude-agent-sdk@patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.53#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch::version=0.1.53&hash=b05505" +"@anthropic-ai/claude-agent-sdk@patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.62#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch": + version: 0.1.62 + resolution: "@anthropic-ai/claude-agent-sdk@patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.62#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch::version=0.1.62&hash=b8fdbe" dependencies: "@img/sharp-darwin-arm64": "npm:^0.33.5" "@img/sharp-darwin-x64": "npm:^0.33.5" @@ -569,7 +569,7 @@ __metadata: optional: true "@img/sharp-win32-x64": optional: true - checksum: 10c0/54abfc37ca1e1617503b1a70d31a165b95cb898e6192637d3ab450be081bc8c89933714d1b150f5c3ef3948b3c481f81b9dfaf45fa1edff745477edf3e3c58e5 + checksum: 10c0/6c59cfc3d3b7d903d946c5da6e0c2ad6798ae837b67c2a9e679df2803d7577823f8feec26e48fa9f815b9ff19612c66e2682fdd182be0344b60febb6e64ac85e languageName: node linkType: hard @@ -10046,7 +10046,7 @@ __metadata: "@ai-sdk/perplexity": "npm:^2.0.20" "@ai-sdk/test-server": "npm:^0.0.1" "@ant-design/v5-patch-for-react-19": "npm:^1.0.3" - "@anthropic-ai/claude-agent-sdk": "patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.53#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.53-4b77f4cf29.patch" + "@anthropic-ai/claude-agent-sdk": "patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.62#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch" "@anthropic-ai/sdk": "npm:^0.41.0" "@anthropic-ai/vertex-sdk": "patch:@anthropic-ai/vertex-sdk@npm%3A0.11.4#~/.yarn/patches/@anthropic-ai-vertex-sdk-npm-0.11.4-c19cb41edb.patch" "@aws-sdk/client-bedrock": "npm:^3.910.0" From 711f805a5b3c360a034445a0682054117a1ce875 Mon Sep 17 00:00:00 2001 From: zane Date: Thu, 11 Dec 2025 10:46:13 +0800 Subject: [PATCH 08/35] fix(aiCore): omit empty content in assistant messages with tool_calls (#11818) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(aiCore): omit empty content in assistant messages with tool_calls When an assistant message contains tool_calls but no text content, the content field was being set to undefined or empty string. This caused API errors on strict OpenAI-compatible endpoints like CherryIn: "messages: text content blocks must be non-empty" The fix conditionally includes the content field only when there is actual text content, which conforms to the OpenAI API specification. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * fix(aiCore): omit empty assistant message in new aiCore StreamEventManager When building recursive params after tool execution, only add the assistant message when textBuffer has content. This avoids sending empty/invalid assistant messages to strict OpenAI-compatible APIs like CherryIn, which causes "text content blocks must be non-empty" errors. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * revert: remove legacy OpenAIApiClient fix (legacy is deprecated) The legacy aiCore code is no longer used. Only the fix in the new aiCore architecture (StreamEventManager.ts) is needed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --------- Co-authored-by: Claude Opus 4.5 --- .../plugins/built-in/toolUsePlugin/StreamEventManager.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/StreamEventManager.ts b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/StreamEventManager.ts index 59a425712..555d4929d 100644 --- a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/StreamEventManager.ts +++ b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/StreamEventManager.ts @@ -135,10 +135,8 @@ export class StreamEventManager { // 构建新的对话消息 const newMessages: ModelMessage[] = [ ...(context.originalParams.messages || []), - { - role: 'assistant', - content: textBuffer - }, + // 只有当 textBuffer 有内容时才添加 assistant 消息,避免空消息导致 API 错误 + ...(textBuffer ? [{ role: 'assistant' as const, content: textBuffer }] : []), { role: 'user', content: toolResultsText From 96085707cea18cd6c9b234dc827b332f70a58a26 Mon Sep 17 00:00:00 2001 From: LiuVaayne <10231735+vaayne@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:18:56 +0800 Subject: [PATCH 09/35] feat: add MCP server log viewer (#11826) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ feat: add MCP server log viewer * 🧹 chore: format files * 🐛 fix: resolve MCP log viewer type errors * 🧹 chore: sync i18n for MCP log viewer * 💄 fix: improve MCP log modal contrast in dark mode * 🌐 fix: translate MCP log viewer strings Add translations for noLogs and viewLogs keys in: - German (de-de) - Greek (el-gr) - Spanish (es-es) - French (fr-fr) - Japanese (ja-jp) - Portuguese (pt-pt) - Russian (ru-ru) * 🌐 fix: update MCP log viewer translations and key references Added "logs" key to various language files and updated references in the MCP settings component to improve consistency across translations. This includes updates for English, Chinese (Simplified and Traditional), German, Greek, Spanish, French, Japanese, Portuguese, and Russian. --------- Co-authored-by: kangfenmao --- packages/shared/IpcChannel.ts | 2 + packages/shared/config/types.ts | 8 ++ src/main/index.ts | 2 +- src/main/ipc.ts | 2 + src/main/services/MCPService.ts | 94 +++++++++++++- .../__tests__/ServerLogBuffer.test.ts | 29 +++++ src/main/services/mcp/ServerLogBuffer.ts | 36 ++++++ src/preload/index.ts | 12 +- src/renderer/src/i18n/locales/en-us.json | 2 + src/renderer/src/i18n/locales/zh-cn.json | 2 + src/renderer/src/i18n/locales/zh-tw.json | 2 + src/renderer/src/i18n/translate/de-de.json | 2 + src/renderer/src/i18n/translate/el-gr.json | 2 + src/renderer/src/i18n/translate/es-es.json | 2 + src/renderer/src/i18n/translate/fr-fr.json | 2 + src/renderer/src/i18n/translate/ja-jp.json | 2 + src/renderer/src/i18n/translate/pt-pt.json | 2 + src/renderer/src/i18n/translate/ru-ru.json | 2 + .../settings/MCPSettings/McpSettings.tsx | 117 +++++++++++++++++- 19 files changed, 316 insertions(+), 6 deletions(-) create mode 100644 src/main/services/__tests__/ServerLogBuffer.test.ts create mode 100644 src/main/services/mcp/ServerLogBuffer.ts diff --git a/packages/shared/IpcChannel.ts b/packages/shared/IpcChannel.ts index 1c61745a6..88e7ae85d 100644 --- a/packages/shared/IpcChannel.ts +++ b/packages/shared/IpcChannel.ts @@ -90,6 +90,8 @@ export enum IpcChannel { Mcp_AbortTool = 'mcp:abort-tool', Mcp_GetServerVersion = 'mcp:get-server-version', Mcp_Progress = 'mcp:progress', + Mcp_GetServerLogs = 'mcp:get-server-logs', + Mcp_ServerLog = 'mcp:server-log', // Python Python_Execute = 'python:execute', diff --git a/packages/shared/config/types.ts b/packages/shared/config/types.ts index 8fba6399f..7dff53c75 100644 --- a/packages/shared/config/types.ts +++ b/packages/shared/config/types.ts @@ -23,6 +23,14 @@ export type MCPProgressEvent = { progress: number // 0-1 range } +export type MCPServerLogEntry = { + timestamp: number + level: 'debug' | 'info' | 'warn' | 'error' | 'stderr' | 'stdout' + message: string + data?: any + source?: string +} + export type WebviewKeyEvent = { webviewId: number key: string diff --git a/src/main/index.ts b/src/main/index.ts index 56750e6b6..3588a370f 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -19,8 +19,8 @@ import { agentService } from './services/agents' import { apiServerService } from './services/ApiServerService' import { appMenuService } from './services/AppMenuService' import { configManager } from './services/ConfigManager' -import mcpService from './services/MCPService' import { nodeTraceService } from './services/NodeTraceService' +import mcpService from './services/MCPService' import powerMonitorService from './services/PowerMonitorService' import { CHERRY_STUDIO_PROTOCOL, diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 444ca5fb8..714292c67 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -765,6 +765,8 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { ipcMain.handle(IpcChannel.Mcp_CheckConnectivity, mcpService.checkMcpConnectivity) ipcMain.handle(IpcChannel.Mcp_AbortTool, mcpService.abortTool) ipcMain.handle(IpcChannel.Mcp_GetServerVersion, mcpService.getServerVersion) + ipcMain.handle(IpcChannel.Mcp_GetServerLogs, mcpService.getServerLogs) + ipcMain.handle(IpcChannel.Mcp_GetServerLogs, mcpService.getServerLogs) // DXT upload handler ipcMain.handle(IpcChannel.Mcp_UploadDxt, async (event, fileBuffer: ArrayBuffer, fileName: string) => { diff --git a/src/main/services/MCPService.ts b/src/main/services/MCPService.ts index 392537622..f9b43f039 100644 --- a/src/main/services/MCPService.ts +++ b/src/main/services/MCPService.ts @@ -33,6 +33,7 @@ import { import { nanoid } from '@reduxjs/toolkit' import { HOME_CHERRY_DIR } from '@shared/config/constant' import type { MCPProgressEvent } from '@shared/config/types' +import type { MCPServerLogEntry } from '@shared/config/types' import { IpcChannel } from '@shared/IpcChannel' import { defaultAppHeaders } from '@shared/utils' import { @@ -56,6 +57,7 @@ import { CacheService } from './CacheService' import DxtService from './DxtService' import { CallBackServer } from './mcp/oauth/callback' import { McpOAuthClientProvider } from './mcp/oauth/provider' +import { ServerLogBuffer } from './mcp/ServerLogBuffer' import { windowService } from './WindowService' // Generic type for caching wrapped functions @@ -142,6 +144,7 @@ class McpService { private pendingClients: Map> = new Map() private dxtService = new DxtService() private activeToolCalls: Map = new Map() + private serverLogs = new ServerLogBuffer(200) constructor() { this.initClient = this.initClient.bind(this) @@ -172,6 +175,19 @@ class McpService { }) } + private emitServerLog(server: MCPServer, entry: MCPServerLogEntry) { + const serverKey = this.getServerKey(server) + this.serverLogs.append(serverKey, entry) + const mainWindow = windowService.getMainWindow() + if (mainWindow) { + mainWindow.webContents.send(IpcChannel.Mcp_ServerLog, { ...entry, serverId: server.id }) + } + } + + public getServerLogs(_: Electron.IpcMainInvokeEvent, server: MCPServer): MCPServerLogEntry[] { + return this.serverLogs.get(this.getServerKey(server)) + } + async initClient(server: MCPServer): Promise { const serverKey = this.getServerKey(server) @@ -366,9 +382,25 @@ class McpService { } const stdioTransport = new StdioClientTransport(transportOptions) - stdioTransport.stderr?.on('data', (data) => - getServerLogger(server).debug(`Stdio stderr`, { data: data.toString() }) - ) + stdioTransport.stderr?.on('data', (data) => { + const msg = data.toString() + getServerLogger(server).debug(`Stdio stderr`, { data: msg }) + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'stderr', + message: msg.trim(), + source: 'stdio' + }) + }) + ;(stdioTransport as any).stdout?.on('data', (data: any) => { + const msg = data.toString() + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'stdout', + message: msg.trim(), + source: 'stdio' + }) + }) return stdioTransport } else { throw new Error('Either baseUrl or command must be provided') @@ -436,6 +468,13 @@ class McpService { } } + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'info', + message: 'Server connected', + source: 'client' + }) + // Store the new client in the cache this.clients.set(serverKey, client) @@ -446,9 +485,22 @@ class McpService { this.clearServerCache(serverKey) logger.debug(`Activated server: ${server.name}`) + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'info', + message: 'Server activated', + source: 'client' + }) return client } catch (error) { getServerLogger(server).error(`Error activating server ${server.name}`, error as Error) + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'error', + message: `Error activating server: ${(error as Error)?.message}`, + data: redactSensitive(error), + source: 'client' + }) throw error } } finally { @@ -506,6 +558,16 @@ class McpService { // Set up logging message notification handler client.setNotificationHandler(LoggingMessageNotificationSchema, async (notification) => { logger.debug(`Message from server ${server.name}:`, notification.params) + const msg = notification.params?.message + if (msg) { + this.emitServerLog(server, { + timestamp: Date.now(), + level: (notification.params?.level as MCPServerLogEntry['level']) || 'info', + message: typeof msg === 'string' ? msg : JSON.stringify(msg), + data: redactSensitive(notification.params?.data), + source: notification.params?.logger || 'server' + }) + } }) getServerLogger(server).debug(`Set up notification handlers`) @@ -540,6 +602,7 @@ class McpService { this.clients.delete(serverKey) // Clear all caches for this server this.clearServerCache(serverKey) + this.serverLogs.remove(serverKey) } else { logger.warn(`No client found for server`, { serverKey }) } @@ -548,6 +611,12 @@ class McpService { async stopServer(_: Electron.IpcMainInvokeEvent, server: MCPServer) { const serverKey = this.getServerKey(server) getServerLogger(server).debug(`Stopping server`) + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'info', + message: 'Stopping server', + source: 'client' + }) await this.closeClient(serverKey) } @@ -574,6 +643,12 @@ class McpService { async restartServer(_: Electron.IpcMainInvokeEvent, server: MCPServer) { getServerLogger(server).debug(`Restarting server`) const serverKey = this.getServerKey(server) + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'info', + message: 'Restarting server', + source: 'client' + }) await this.closeClient(serverKey) // Clear cache before restarting to ensure fresh data this.clearServerCache(serverKey) @@ -606,9 +681,22 @@ class McpService { // Attempt to list tools as a way to check connectivity await client.listTools() getServerLogger(server).debug(`Connectivity check successful`) + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'info', + message: 'Connectivity check successful', + source: 'connectivity' + }) return true } catch (error) { getServerLogger(server).error(`Connectivity check failed`, error as Error) + this.emitServerLog(server, { + timestamp: Date.now(), + level: 'error', + message: `Connectivity check failed: ${(error as Error).message}`, + data: redactSensitive(error), + source: 'connectivity' + }) // Close the client if connectivity check fails to ensure a clean state for the next attempt const serverKey = this.getServerKey(server) await this.closeClient(serverKey) diff --git a/src/main/services/__tests__/ServerLogBuffer.test.ts b/src/main/services/__tests__/ServerLogBuffer.test.ts new file mode 100644 index 000000000..0b7abe91e --- /dev/null +++ b/src/main/services/__tests__/ServerLogBuffer.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, it } from 'vitest' + +import { ServerLogBuffer } from '../mcp/ServerLogBuffer' + +describe('ServerLogBuffer', () => { + it('keeps a bounded number of entries per server', () => { + const buffer = new ServerLogBuffer(3) + const key = 'srv' + + buffer.append(key, { timestamp: 1, level: 'info', message: 'a' }) + buffer.append(key, { timestamp: 2, level: 'info', message: 'b' }) + buffer.append(key, { timestamp: 3, level: 'info', message: 'c' }) + buffer.append(key, { timestamp: 4, level: 'info', message: 'd' }) + + const logs = buffer.get(key) + expect(logs).toHaveLength(3) + expect(logs[0].message).toBe('b') + expect(logs[2].message).toBe('d') + }) + + it('isolates entries by server key', () => { + const buffer = new ServerLogBuffer(5) + buffer.append('one', { timestamp: 1, level: 'info', message: 'a' }) + buffer.append('two', { timestamp: 2, level: 'info', message: 'b' }) + + expect(buffer.get('one')).toHaveLength(1) + expect(buffer.get('two')).toHaveLength(1) + }) +}) diff --git a/src/main/services/mcp/ServerLogBuffer.ts b/src/main/services/mcp/ServerLogBuffer.ts new file mode 100644 index 000000000..01c45f373 --- /dev/null +++ b/src/main/services/mcp/ServerLogBuffer.ts @@ -0,0 +1,36 @@ +export type MCPServerLogEntry = { + timestamp: number + level: 'debug' | 'info' | 'warn' | 'error' | 'stderr' | 'stdout' + message: string + data?: any + source?: string +} + +/** + * Lightweight ring buffer for per-server MCP logs. + */ +export class ServerLogBuffer { + private maxEntries: number + private logs: Map = new Map() + + constructor(maxEntries = 200) { + this.maxEntries = maxEntries + } + + append(serverKey: string, entry: MCPServerLogEntry) { + const list = this.logs.get(serverKey) ?? [] + list.push(entry) + if (list.length > this.maxEntries) { + list.splice(0, list.length - this.maxEntries) + } + this.logs.set(serverKey, list) + } + + get(serverKey: string): MCPServerLogEntry[] { + return [...(this.logs.get(serverKey) ?? [])] + } + + remove(serverKey: string) { + this.logs.delete(serverKey) + } +} diff --git a/src/preload/index.ts b/src/preload/index.ts index a357f59f0..654e727cc 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -5,6 +5,7 @@ import type { SpanContext } from '@opentelemetry/api' import type { TerminalConfig, UpgradeChannel } from '@shared/config/constant' import type { LogLevel, LogSourceWithContext } from '@shared/config/logger' import type { FileChangeEvent, WebviewKeyEvent } from '@shared/config/types' +import type { MCPServerLogEntry } from '@shared/config/types' import { IpcChannel } from '@shared/IpcChannel' import type { Notification } from '@types' import type { @@ -372,7 +373,16 @@ const api = { }, abortTool: (callId: string) => ipcRenderer.invoke(IpcChannel.Mcp_AbortTool, callId), getServerVersion: (server: MCPServer): Promise => - ipcRenderer.invoke(IpcChannel.Mcp_GetServerVersion, server) + ipcRenderer.invoke(IpcChannel.Mcp_GetServerVersion, server), + getServerLogs: (server: MCPServer): Promise => + ipcRenderer.invoke(IpcChannel.Mcp_GetServerLogs, server), + onServerLog: (callback: (log: MCPServerLogEntry & { serverId?: string }) => void) => { + const listener = (_event: Electron.IpcRendererEvent, log: MCPServerLogEntry & { serverId?: string }) => { + callback(log) + } + ipcRenderer.on(IpcChannel.Mcp_ServerLog, listener) + return () => ipcRenderer.off(IpcChannel.Mcp_ServerLog, listener) + } }, python: { execute: (script: string, context?: Record, timeout?: number) => diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 4ebc57cb9..1e8c854a1 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "Failed to save JSON configuration.", "jsonSaveSuccess": "JSON configuration has been saved.", "logoUrl": "Logo URL", + "logs": "Logs", "longRunning": "Long Running Mode", "longRunningTooltip": "When enabled, the server supports long-running tasks. When receiving progress notifications, the timeout will be reset and the maximum execution time will be extended to 10 minutes.", "marketplaces": "Marketplaces", @@ -3931,6 +3932,7 @@ "name": "Name", "newServer": "MCP Server", "noDescriptionAvailable": "No description available", + "noLogs": "No logs yet", "noServers": "No servers configured", "not_support": "Model not supported", "npx_list": { diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 8829bfe08..9c2cea8d6 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "保存 JSON 配置失败", "jsonSaveSuccess": "JSON 配置已保存", "logoUrl": "标志网址", + "logs": "日志", "longRunning": "长时间运行模式", "longRunningTooltip": "启用后,服务器支持长时间任务,接收到进度通知时会重置超时计时器,并延长最大超时时间至10分钟", "marketplaces": "市场", @@ -3931,6 +3932,7 @@ "name": "名称", "newServer": "MCP 服务器", "noDescriptionAvailable": "暂无描述", + "noLogs": "暂无日志", "noServers": "未配置服务器", "not_support": "模型不支持", "npx_list": { diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 1a036a29e..d497ba82a 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "保存 JSON 配置失敗", "jsonSaveSuccess": "JSON 配置已儲存", "logoUrl": "標誌網址", + "logs": "日誌", "longRunning": "長時間運行模式", "longRunningTooltip": "啟用後,伺服器支援長時間任務,接收到進度通知時會重置超時計時器,並延長最大超時時間至10分鐘", "marketplaces": "市場", @@ -3931,6 +3932,7 @@ "name": "名稱", "newServer": "MCP 伺服器", "noDescriptionAvailable": "描述不存在", + "noLogs": "暫無日誌", "noServers": "未設定伺服器", "not_support": "不支援此模型", "npx_list": { diff --git a/src/renderer/src/i18n/translate/de-de.json b/src/renderer/src/i18n/translate/de-de.json index 1300fbf6c..e11976cd8 100644 --- a/src/renderer/src/i18n/translate/de-de.json +++ b/src/renderer/src/i18n/translate/de-de.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "JSON-Konfiguration speichern fehlgeschlagen", "jsonSaveSuccess": "JSON-Konfiguration erfolgreich gespeichert", "logoUrl": "Logo-URL", + "logs": "Protokolle", "longRunning": "Lang laufender Modus", "longRunningTooltip": "Nach Aktivierung unterstützt der Server lange Aufgaben. Wenn ein Fortschrittsbenachrichtigung empfangen wird, wird der Timeout-Timer zurückgesetzt und die maximale Timeout-Zeit auf 10 Minuten verlängert", "marketplaces": "Marktplätze", @@ -3931,6 +3932,7 @@ "name": "Name", "newServer": "MCP-Server", "noDescriptionAvailable": "Keine Beschreibung", + "noLogs": "Noch keine Protokolle", "noServers": "Server nicht konfiguriert", "not_support": "Modell nicht unterstützt", "npx_list": { diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index 535a36489..3bcd43fc6 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "Αποτυχία αποθήκευσης της διαμορφωτικής ρύθμισης JSON", "jsonSaveSuccess": "Η διαμορφωτική ρύθμιση JSON αποθηκεύτηκε επιτυχώς", "logoUrl": "URL Λογότυπου", + "logs": "Αρχεία καταγραφής", "longRunning": "Μακροχρόνια λειτουργία", "longRunningTooltip": "Όταν ενεργοποιηθεί, ο διακομιστής υποστηρίζει μακροχρόνιες εργασίες, επαναφέρει το χρονικό όριο μετά από λήψη ειδοποίησης προόδου και επεκτείνει το μέγιστο χρονικό όριο σε 10 λεπτά.", "marketplaces": "Αγορές", @@ -3931,6 +3932,7 @@ "name": "Όνομα", "newServer": "Διακομιστής MCP", "noDescriptionAvailable": "Δεν υπάρχει διαθέσιμη περιγραφή", + "noLogs": "Δεν υπάρχουν αρχεία καταγραφής ακόμα", "noServers": "Δεν έχουν ρυθμιστεί διακομιστές", "not_support": "Το μοντέλο δεν υποστηρίζεται", "npx_list": { diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index 43d5919f0..5ccfe83b5 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "Fallo al guardar la configuración JSON", "jsonSaveSuccess": "Configuración JSON guardada exitosamente", "logoUrl": "URL del logotipo", + "logs": "Registros", "longRunning": "Modo de ejecución prolongada", "longRunningTooltip": "Una vez habilitado, el servidor admite tareas de larga duración, reinicia el temporizador de tiempo de espera al recibir notificaciones de progreso y amplía el tiempo máximo de espera hasta 10 minutos.", "marketplaces": "Mercados", @@ -3931,6 +3932,7 @@ "name": "Nombre", "newServer": "Servidor MCP", "noDescriptionAvailable": "Sin descripción disponible por ahora", + "noLogs": "Aún no hay registros", "noServers": "No se han configurado servidores", "not_support": "El modelo no es compatible", "npx_list": { diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index ef7db8b3b..f84fe2b77 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "Échec de la sauvegarde de la configuration JSON", "jsonSaveSuccess": "Configuration JSON sauvegardée", "logoUrl": "Адрес логотипа", + "logs": "Journaux", "longRunning": "Mode d'exécution prolongée", "longRunningTooltip": "Une fois activé, le serveur prend en charge les tâches de longue durée, réinitialise le minuteur de temporisation à la réception des notifications de progression, et prolonge le délai d'expiration maximal à 10 minutes.", "marketplaces": "Places de marché", @@ -3931,6 +3932,7 @@ "name": "Nom", "newServer": "Сервер MCP", "noDescriptionAvailable": "Aucune description disponible pour le moment", + "noLogs": "Aucun journal pour le moment", "noServers": "Aucun serveur configuré", "not_support": "Модель не поддерживается", "npx_list": { diff --git a/src/renderer/src/i18n/translate/ja-jp.json b/src/renderer/src/i18n/translate/ja-jp.json index 42c50c882..0aea0f7dc 100644 --- a/src/renderer/src/i18n/translate/ja-jp.json +++ b/src/renderer/src/i18n/translate/ja-jp.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "JSON設定の保存に失敗しました", "jsonSaveSuccess": "JSON設定が保存されました。", "logoUrl": "ロゴURL", + "logs": "ログ", "longRunning": "長時間運行モード", "longRunningTooltip": "このオプションを有効にすると、サーバーは長時間のタスクをサポートします。進行状況通知を受信すると、タイムアウトがリセットされ、最大実行時間が10分に延長されます。", "marketplaces": "マーケットプレイス", @@ -3931,6 +3932,7 @@ "name": "名前", "newServer": "MCP サーバー", "noDescriptionAvailable": "説明がありません", + "noLogs": "ログはまだありません", "noServers": "サーバーが設定されていません", "not_support": "モデルはサポートされていません", "npx_list": { diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index bc84fc99b..a28cf2a82 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "Falha ao salvar configuração JSON", "jsonSaveSuccess": "Configuração JSON salva com sucesso", "logoUrl": "URL do Logotipo", + "logs": "Registros", "longRunning": "Modo de execução prolongada", "longRunningTooltip": "Quando ativado, o servidor suporta tarefas de longa duração, redefinindo o temporizador de tempo limite ao receber notificações de progresso e estendendo o tempo máximo de tempo limite para 10 minutos.", "marketplaces": "Mercados", @@ -3931,6 +3932,7 @@ "name": "Nome", "newServer": "Servidor MCP", "noDescriptionAvailable": "Nenhuma descrição disponível no momento", + "noLogs": "Ainda sem registos", "noServers": "Nenhum servidor configurado", "not_support": "Modelo Não Suportado", "npx_list": { diff --git a/src/renderer/src/i18n/translate/ru-ru.json b/src/renderer/src/i18n/translate/ru-ru.json index 109bffb9b..3597d963e 100644 --- a/src/renderer/src/i18n/translate/ru-ru.json +++ b/src/renderer/src/i18n/translate/ru-ru.json @@ -3912,6 +3912,7 @@ "jsonSaveError": "Не удалось сохранить конфигурацию JSON", "jsonSaveSuccess": "JSON конфигурация сохранена", "logoUrl": "URL логотипа", + "logs": "Журналы", "longRunning": "Длительный режим работы", "longRunningTooltip": "Включив эту опцию, сервер будет поддерживать длительные задачи. При получении уведомлений о ходе выполнения будет сброшен тайм-аут и максимальное время выполнения будет увеличено до 10 минут.", "marketplaces": "Торговые площадки", @@ -3931,6 +3932,7 @@ "name": "Имя", "newServer": "MCP сервер", "noDescriptionAvailable": "Описание отсутствует", + "noLogs": "Логов пока нет", "noServers": "Серверы не настроены", "not_support": "Модель не поддерживается", "npx_list": { diff --git a/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx b/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx index c48ae8f79..30b7b45f3 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx @@ -9,8 +9,9 @@ import MCPDescription from '@renderer/pages/settings/MCPSettings/McpDescription' import type { MCPPrompt, MCPResource, MCPServer, MCPTool } from '@renderer/types' import { parseKeyValueString } from '@renderer/utils/env' import { formatMcpError } from '@renderer/utils/error' +import type { MCPServerLogEntry } from '@shared/config/types' import type { TabsProps } from 'antd' -import { Badge, Button, Flex, Form, Input, Radio, Select, Switch, Tabs } from 'antd' +import { Badge, Button, Flex, Form, Input, Modal, Radio, Select, Switch, Tabs, Tag, Typography } from 'antd' import TextArea from 'antd/es/input/TextArea' import { ChevronDown, SaveIcon } from 'lucide-react' import React, { useCallback, useEffect, useState } from 'react' @@ -88,8 +89,11 @@ const McpSettings: React.FC = () => { const [showAdvanced, setShowAdvanced] = useState(false) const [serverVersion, setServerVersion] = useState(null) + const [logModalOpen, setLogModalOpen] = useState(false) + const [logs, setLogs] = useState<(MCPServerLogEntry & { serverId?: string })[]>([]) const { theme } = useTheme() + const { Text } = Typography const navigate = useNavigate() @@ -234,12 +238,43 @@ const McpSettings: React.FC = () => { } } + const fetchServerLogs = async () => { + try { + const history = await window.api.mcp.getServerLogs(server) + setLogs(history) + } catch (error) { + logger.warn('Failed to load server logs', error as Error) + } + } + + useEffect(() => { + const unsubscribe = window.api.mcp.onServerLog((log) => { + if (log.serverId && log.serverId !== server.id) return + setLogs((prev) => { + const merged = [...prev, log] + if (merged.length > 200) { + return merged.slice(merged.length - 200) + } + return merged + }) + }) + + return () => { + unsubscribe?.() + } + }, [server.id]) + + useEffect(() => { + setLogs([]) + }, [server.id]) + useEffect(() => { if (server.isActive) { fetchTools() fetchPrompts() fetchResources() fetchServerVersion() + fetchServerLogs() } // eslint-disable-next-line react-hooks/exhaustive-deps }, [server.id, server.isActive]) @@ -736,6 +771,9 @@ const McpSettings: React.FC = () => { {server?.name} {serverVersion && } + - )} - + {isCherryIN && isChineseUser ? ( + + ) : ( + + setApiHost(e.target.value)} + onBlur={onUpdateApiHost} + /> + {isApiHostResettable && ( + + )} + + )} {isVertexProvider(provider) && ( {t('settings.provider.vertex_ai.api_host_help')} 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..8559a39e2 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -2976,6 +2976,22 @@ const migrateConfig = { logger.error('migrate 182 error', error as Error) return state } + }, + '183': (state: RootState) => { + try { + state.llm.providers.forEach((provider) => { + if (provider.id === SystemProviderIds.cherryin) { + provider.apiHost = 'https://open.cherryin.cc' + provider.anthropicApiHost = 'https://open.cherryin.cc' + } + }) + state.llm.providers = moveProvider(state.llm.providers, SystemProviderIds.poe, 10) + logger.info('migrate 183 success') + return state + } catch (error) { + logger.error('migrate 183 error', error as Error) + return state + } } } From fda22874753fc11fd86707ab920baecb8623fe6b Mon Sep 17 00:00:00 2001 From: Ying-xi <62348590+Ying-xi@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:21:10 +0800 Subject: [PATCH 11/35] fix(knowledge): prioritize query & refine intent prompt (#11828) Fixes logic issues in knowledge base search: 1. Inverted search priority in KnowledgeService to use specific sub-queries over generic rewrites. 2. Updated SEARCH_SUMMARY_PROMPT_KNOWLEDGE_ONLY to explicitly allow decomposed questions, improving intent recognition for complex queries. --- src/renderer/src/config/prompts.ts | 2 +- src/renderer/src/services/KnowledgeService.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/config/prompts.ts b/src/renderer/src/config/prompts.ts index 926a138f1..815eb7d11 100644 --- a/src/renderer/src/config/prompts.ts +++ b/src/renderer/src/config/prompts.ts @@ -306,7 +306,7 @@ export const SEARCH_SUMMARY_PROMPT_KNOWLEDGE_ONLY = ` **Use user's language to rephrase the question.** Follow these guidelines: 1. If the question is a simple writing task, greeting (e.g., Hi, Hello, How are you), or does not require searching for information (unless the greeting contains a follow-up question), return 'not_needed' in the 'question' XML block. This indicates that no search is required. - 2. For knowledge, You need rewrite user query into 'rewrite' XML block with one alternative version while preserving the original intent and meaning. Also include the original question in the 'question' block. + 2. For knowledge, You need rewrite user query into 'rewrite' XML block with one alternative version while preserving the original intent and meaning. Also include the rephrased or decomposed question(s) in the 'question' block. 3. Always return the rephrased question inside the 'question' XML block. 4. Always wrap the rephrased question in the appropriate XML blocks: use for queries that can be answered from a pre-existing knowledge base. Ensure that the rephrased question is always contained within a block inside the wrapper. 5. *use knowledge to rephrase the question* diff --git a/src/renderer/src/services/KnowledgeService.ts b/src/renderer/src/services/KnowledgeService.ts index e2f2e6fc1..e78cfa62e 100644 --- a/src/renderer/src/services/KnowledgeService.ts +++ b/src/renderer/src/services/KnowledgeService.ts @@ -162,7 +162,7 @@ export const searchKnowledgeBase = async ( const searchResults: KnowledgeSearchResult[] = await window.api.knowledgeBase.search( { - search: rewrite || query, + search: query || rewrite || '', base: baseParams }, currentSpan?.spanContext() From 03db02d5f751e06577e017573165fa7efeb97183 Mon Sep 17 00:00:00 2001 From: Phantom Date: Thu, 11 Dec 2025 11:29:18 +0800 Subject: [PATCH 12/35] fix(ThinkingButton): show correct icon when isFixedReasoning (#11825) --- .../tools/components/ThinkingButton.tsx | 57 ++++++++++--------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/src/renderer/src/pages/home/Inputbar/tools/components/ThinkingButton.tsx b/src/renderer/src/pages/home/Inputbar/tools/components/ThinkingButton.tsx index 590918951..96e7adca9 100644 --- a/src/renderer/src/pages/home/Inputbar/tools/components/ThinkingButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/tools/components/ThinkingButton.tsx @@ -93,7 +93,7 @@ const ThinkingButton: FC = ({ quickPanel, model, assistantId }): ReactEle level: option, label: getReasoningEffortOptionsLabel(option), description: '', - icon: ThinkingIcon(option), + icon: ThinkingIcon({ option }), isSelected: currentReasoningEffort === option, action: () => onThinkingChange(option) })) @@ -135,7 +135,7 @@ const ThinkingButton: FC = ({ quickPanel, model, assistantId }): ReactEle { label: t('assistants.settings.reasoning_effort.label'), description: '', - icon: ThinkingIcon(currentReasoningEffort), + icon: ThinkingIcon({ option: currentReasoningEffort }), isMenu: true, action: () => openQuickPanel() } @@ -163,37 +163,40 @@ const ThinkingButton: FC = ({ quickPanel, model, assistantId }): ReactEle aria-label={ariaLabel} aria-pressed={currentReasoningEffort !== 'none'} style={isFixedReasoning ? { cursor: 'default' } : undefined}> - {ThinkingIcon(currentReasoningEffort)} + {ThinkingIcon({ option: currentReasoningEffort, isFixedReasoning })} ) } -const ThinkingIcon = (option?: ThinkingOption) => { +const ThinkingIcon = (props: { option?: ThinkingOption; isFixedReasoning?: boolean }) => { let IconComponent: React.FC> | null = null - - switch (option) { - case 'minimal': - IconComponent = MdiLightbulbOn30 - break - case 'low': - IconComponent = MdiLightbulbOn50 - break - case 'medium': - IconComponent = MdiLightbulbOn80 - break - case 'high': - IconComponent = MdiLightbulbOn - break - case 'auto': - IconComponent = MdiLightbulbAutoOutline - break - case 'none': - IconComponent = MdiLightbulbOffOutline - break - default: - IconComponent = MdiLightbulbOffOutline - break + if (props.isFixedReasoning) { + IconComponent = MdiLightbulbAutoOutline + } else { + switch (props.option) { + case 'minimal': + IconComponent = MdiLightbulbOn30 + break + case 'low': + IconComponent = MdiLightbulbOn50 + break + case 'medium': + IconComponent = MdiLightbulbOn80 + break + case 'high': + IconComponent = MdiLightbulbOn + break + case 'auto': + IconComponent = MdiLightbulbAutoOutline + break + case 'none': + IconComponent = MdiLightbulbOffOutline + break + default: + IconComponent = MdiLightbulbOffOutline + break + } } return From 880673c4eba641a60b4ae6d78512c240b766c52b Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 11 Dec 2025 11:57:16 +0800 Subject: [PATCH 13/35] fix(AssistantPresetCard): update group handling to use isArray for better type safety --- .../assistants/presets/components/AssistantPresetCard.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx b/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx index 25b81cf38..4c9ce082d 100644 --- a/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx +++ b/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetCard.tsx @@ -7,6 +7,7 @@ import type { AssistantPreset } from '@renderer/types' import { getLeadingEmoji } from '@renderer/utils' import { Button, Dropdown } from 'antd' import { t } from 'i18next' +import { isArray } from 'lodash' import { ArrowDownAZ, Ellipsis, PlusIcon, SquareArrowOutUpRight } from 'lucide-react' import { type FC, memo, useCallback, useEffect, useRef, useState } from 'react' import styled from 'styled-components' @@ -142,7 +143,7 @@ const AssistantPresetCard: FC = ({ preset, onClick, activegroup, getLocal {getLocalizedGroupName('我的')} )} - {!!preset.group?.length && + {isArray(preset.group) && preset.group.map((group) => ( {getLocalizedGroupName(group)} From 600a045ff710f36d7951d1e94866935f0c95158e Mon Sep 17 00:00:00 2001 From: defi-failure <159208748+defi-failure@users.noreply.github.com> Date: Thu, 11 Dec 2025 14:05:41 +0800 Subject: [PATCH 14/35] chore: add gitcode release sync workflow (#11807) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: add gitcode release sync workflow * fix(ci): address review feedback for gitcode sync workflow - Use Authorization header instead of token in URL query parameter - Add file existence check before copying signed Windows artifacts - Remove inappropriate `|| true` from artifact listing - Use heredoc for safe GITHUB_OUTPUT writing - Add error context logging in upload_file function - Add curl timeout for API requests (connect: 30s, max: 60s) - Add cleanup step for temp files with `if: always()` - Add env var validation for GitCode credentials 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --------- Co-authored-by: Claude Opus 4.5 --- .github/workflows/sync-to-gitcode.yml | 293 ++++++++++++++++++++++++++ scripts/win-sign.js | 10 +- 2 files changed, 302 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/sync-to-gitcode.yml diff --git a/.github/workflows/sync-to-gitcode.yml b/.github/workflows/sync-to-gitcode.yml new file mode 100644 index 000000000..4462ff637 --- /dev/null +++ b/.github/workflows/sync-to-gitcode.yml @@ -0,0 +1,293 @@ +name: Sync Release to GitCode + +on: + release: + types: [published] + workflow_dispatch: + inputs: + tag: + description: 'Release tag (e.g. v1.0.0)' + required: true + clean: + description: 'Clean node_modules before build' + type: boolean + default: false + +permissions: + contents: read + +jobs: + build-and-sync-to-gitcode: + runs-on: [self-hosted, windows-signing] + steps: + - name: Get tag name + id: get-tag + shell: bash + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "tag=${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT + else + echo "tag=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT + fi + + - name: Check out Git repository + uses: actions/checkout@v6 + with: + fetch-depth: 0 + ref: ${{ steps.get-tag.outputs.tag }} + + - name: Set package.json version + shell: bash + run: | + TAG="${{ steps.get-tag.outputs.tag }}" + VERSION="${TAG#v}" + npm version "$VERSION" --no-git-tag-version --allow-same-version + + - name: Install Node.js + uses: actions/setup-node@v6 + with: + node-version: 22 + + - name: Install corepack + shell: bash + run: corepack enable && corepack prepare yarn@4.9.1 --activate + + - name: Clean node_modules + if: ${{ github.event.inputs.clean == 'true' }} + shell: bash + run: rm -rf node_modules + + - name: Install Dependencies + shell: bash + run: yarn install + + - name: Build Windows with code signing + shell: bash + run: yarn build:win + env: + WIN_SIGN: true + CHERRY_CERT_PATH: ${{ secrets.CHERRY_CERT_PATH }} + CHERRY_CERT_KEY: ${{ secrets.CHERRY_CERT_KEY }} + CHERRY_CERT_CSP: ${{ secrets.CHERRY_CERT_CSP }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_OPTIONS: --max-old-space-size=8192 + MAIN_VITE_CHERRYAI_CLIENT_SECRET: ${{ secrets.MAIN_VITE_CHERRYAI_CLIENT_SECRET }} + MAIN_VITE_MINERU_API_KEY: ${{ secrets.MAIN_VITE_MINERU_API_KEY }} + RENDERER_VITE_AIHUBMIX_SECRET: ${{ secrets.RENDERER_VITE_AIHUBMIX_SECRET }} + RENDERER_VITE_PPIO_APP_SECRET: ${{ secrets.RENDERER_VITE_PPIO_APP_SECRET }} + + - name: List built Windows artifacts + shell: bash + run: | + echo "Built Windows artifacts:" + ls -la dist/*.exe dist/*.blockmap dist/latest*.yml + + - name: Download GitHub release assets + shell: bash + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG_NAME: ${{ steps.get-tag.outputs.tag }} + run: | + echo "Downloading release assets for $TAG_NAME..." + mkdir -p release-assets + cd release-assets + + # Download all assets from the release + gh release download "$TAG_NAME" \ + --repo "${{ github.repository }}" \ + --pattern "*" \ + --skip-existing + + echo "Downloaded GitHub release assets:" + ls -la + + - name: Replace Windows files with signed versions + shell: bash + run: | + echo "Replacing Windows files with signed versions..." + + # Verify signed files exist first + if ! ls dist/*.exe 1>/dev/null 2>&1; then + echo "ERROR: No signed .exe files found in dist/" + exit 1 + fi + + # Remove unsigned Windows files from downloaded assets + # *.exe, *.exe.blockmap, latest.yml (Windows only) + rm -f release-assets/*.exe release-assets/*.exe.blockmap release-assets/latest.yml 2>/dev/null || true + + # Copy signed Windows files with error checking + cp dist/*.exe release-assets/ || { echo "ERROR: Failed to copy .exe files"; exit 1; } + cp dist/*.exe.blockmap release-assets/ || { echo "ERROR: Failed to copy .blockmap files"; exit 1; } + cp dist/latest.yml release-assets/ || { echo "ERROR: Failed to copy latest.yml"; exit 1; } + + echo "Final release assets:" + ls -la release-assets/ + + - name: Get release info + id: release-info + shell: bash + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG_NAME: ${{ steps.get-tag.outputs.tag }} + LANG: C.UTF-8 + LC_ALL: C.UTF-8 + run: | + # Always use gh cli to avoid special character issues + RELEASE_NAME=$(gh release view "$TAG_NAME" --repo "${{ github.repository }}" --json name -q '.name') + # Use delimiter to safely handle special characters in release name + { + echo 'name<> $GITHUB_OUTPUT + # Extract releaseNotes from electron-builder.yml (from releaseNotes: | to end of file, remove 4-space indent) + sed -n '/releaseNotes: |/,$ { /releaseNotes: |/d; s/^ //; p }' electron-builder.yml > release_body.txt + + - name: Create GitCode release and upload files + shell: bash + env: + GITCODE_TOKEN: ${{ secrets.GITCODE_TOKEN }} + GITCODE_OWNER: ${{ vars.GITCODE_OWNER }} + GITCODE_REPO: ${{ vars.GITCODE_REPO }} + GITCODE_API_URL: ${{ vars.GITCODE_API_URL }} + TAG_NAME: ${{ steps.get-tag.outputs.tag }} + RELEASE_NAME: ${{ steps.release-info.outputs.name }} + LANG: C.UTF-8 + LC_ALL: C.UTF-8 + run: | + # Validate required environment variables + if [ -z "$GITCODE_TOKEN" ]; then + echo "ERROR: GITCODE_TOKEN is not set" + exit 1 + fi + if [ -z "$GITCODE_OWNER" ]; then + echo "ERROR: GITCODE_OWNER is not set" + exit 1 + fi + if [ -z "$GITCODE_REPO" ]; then + echo "ERROR: GITCODE_REPO is not set" + exit 1 + fi + + API_URL="${GITCODE_API_URL:-https://api.gitcode.com/api/v5}" + + echo "Creating GitCode release..." + echo "Tag: $TAG_NAME" + echo "Repo: $GITCODE_OWNER/$GITCODE_REPO" + + # Step 1: Create release + # Use --rawfile to read body directly from file, avoiding shell variable encoding issues + jq -n \ + --arg tag "$TAG_NAME" \ + --arg name "$RELEASE_NAME" \ + --rawfile body release_body.txt \ + '{ + tag_name: $tag, + name: $name, + body: $body, + target_commitish: "main" + }' > /tmp/release_payload.json + + RELEASE_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \ + --connect-timeout 30 --max-time 60 \ + "${API_URL}/repos/${GITCODE_OWNER}/${GITCODE_REPO}/releases" \ + -H "Content-Type: application/json; charset=utf-8" \ + -H "Authorization: Bearer ${GITCODE_TOKEN}" \ + --data-binary "@/tmp/release_payload.json") + + HTTP_CODE=$(echo "$RELEASE_RESPONSE" | tail -n1) + RESPONSE_BODY=$(echo "$RELEASE_RESPONSE" | sed '$d') + + if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then + echo "Release created successfully" + else + echo "Warning: Release creation returned HTTP $HTTP_CODE" + echo "$RESPONSE_BODY" + exit 1 + fi + + # Step 2: Upload files to release + echo "Uploading files to GitCode release..." + + # Function to upload a single file with retry + upload_file() { + local file="$1" + local filename=$(basename "$file") + local max_retries=3 + local retry=0 + + echo "Uploading: $filename" + + # URL encode the filename + encoded_filename=$(printf '%s' "$filename" | jq -sRr @uri) + + while [ $retry -lt $max_retries ]; do + # Get upload URL + UPLOAD_INFO=$(curl -s --connect-timeout 30 --max-time 60 \ + -H "Authorization: Bearer ${GITCODE_TOKEN}" \ + "${API_URL}/repos/${GITCODE_OWNER}/${GITCODE_REPO}/releases/${TAG_NAME}/upload_url?file_name=${encoded_filename}") + + UPLOAD_URL=$(echo "$UPLOAD_INFO" | jq -r '.url // empty') + + if [ -n "$UPLOAD_URL" ]; then + # Write headers to temp file to avoid shell escaping issues + echo "$UPLOAD_INFO" | jq -r '.headers | to_entries[] | "header = \"" + .key + ": " + .value + "\""' > /tmp/upload_headers.txt + + # Upload file using PUT with headers from file + UPLOAD_RESPONSE=$(curl -s -w "\n%{http_code}" -X PUT \ + -K /tmp/upload_headers.txt \ + --data-binary "@${file}" \ + "$UPLOAD_URL") + + HTTP_CODE=$(echo "$UPLOAD_RESPONSE" | tail -n1) + RESPONSE_BODY=$(echo "$UPLOAD_RESPONSE" | sed '$d') + + if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then + echo " Uploaded: $filename" + return 0 + else + echo " Failed (HTTP $HTTP_CODE), retry $((retry + 1))/$max_retries" + echo " Response: $RESPONSE_BODY" + fi + else + echo " Failed to get upload URL, retry $((retry + 1))/$max_retries" + echo " Response: $UPLOAD_INFO" + fi + + retry=$((retry + 1)) + [ $retry -lt $max_retries ] && sleep 3 + done + + echo " Failed: $filename after $max_retries retries" + exit 1 + } + + # Upload non-yml/json files first + for file in release-assets/*; do + if [ -f "$file" ]; then + filename=$(basename "$file") + if [[ ! "$filename" =~ \.(yml|yaml|json)$ ]]; then + upload_file "$file" + fi + fi + done + + # Upload yml/json files last + for file in release-assets/*; do + if [ -f "$file" ]; then + filename=$(basename "$file") + if [[ "$filename" =~ \.(yml|yaml|json)$ ]]; then + upload_file "$file" + fi + fi + done + + echo "GitCode release sync completed!" + + - name: Cleanup temp files + if: always() + shell: bash + run: | + rm -f /tmp/release_payload.json /tmp/upload_headers.txt release_body.txt + rm -rf release-assets/ diff --git a/scripts/win-sign.js b/scripts/win-sign.js index f9b37c3ae..cdbfe11e1 100644 --- a/scripts/win-sign.js +++ b/scripts/win-sign.js @@ -5,9 +5,17 @@ exports.default = async function (configuration) { const { path } = configuration if (configuration.path) { try { + const certPath = process.env.CHERRY_CERT_PATH + const keyContainer = process.env.CHERRY_CERT_KEY + const csp = process.env.CHERRY_CERT_CSP + + if (!certPath || !keyContainer || !csp) { + throw new Error('CHERRY_CERT_PATH, CHERRY_CERT_KEY or CHERRY_CERT_CSP is not set') + } + console.log('Start code signing...') console.log('Signing file:', path) - const signCommand = `signtool sign /tr http://timestamp.comodoca.com /td sha256 /fd sha256 /a /v "${path}"` + const signCommand = `signtool sign /tr http://timestamp.comodoca.com /td sha256 /fd sha256 /v /f "${certPath}" /csp "${csp}" /k "${keyContainer}" "${path}"` execSync(signCommand, { stdio: 'inherit' }) console.log('Code signing completed') } catch (error) { From c4fd48376dcffc6f43a88dd21491164be1c81ae3 Mon Sep 17 00:00:00 2001 From: fullex <106392080+0xfullex@users.noreply.github.com> Date: Thu, 11 Dec 2025 14:51:32 +0800 Subject: [PATCH 15/35] feat(SelectionAssistant): open URL for search action (#11770) * feat(SelectionAssistant): open URL for search action When selected text is a valid URI or file path, directly open it instead of searching. This enhances the search action to be smarter about handling URLs and file paths. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * fix: format * feat: increase maximum custom and enabled items in settings actions list Updated the maximum number of custom items from 8 to 10 and enabled items from 6 to 8 in the settings actions list to enhance user customization options. --------- Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- .../hooks/useSettingsActionsList.ts | 4 +- .../selection/toolbar/SelectionToolbar.tsx | 90 +++++++++++++------ 2 files changed, 64 insertions(+), 30 deletions(-) diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts b/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts index 341ac8f9c..843fee150 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts @@ -9,8 +9,8 @@ import { DEFAULT_SEARCH_ENGINES } from '../components/SelectionActionSearchModal const logger = loggerService.withContext('useSettingsActionsList') -const MAX_CUSTOM_ITEMS = 8 -const MAX_ENABLED_ITEMS = 6 +const MAX_CUSTOM_ITEMS = 10 +const MAX_ENABLED_ITEMS = 8 export const useActionItems = ( initialItems: ActionItem[] | undefined, diff --git a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx index 505a3b8fd..37a56acba 100644 --- a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx +++ b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx @@ -202,6 +202,30 @@ const SelectionToolbar: FC<{ demo?: boolean }> = ({ demo = false }) => { } }, [customCss, demo]) + /** + * Check if text is a valid URI or file path + */ + const isUriOrFilePath = (text: string): boolean => { + const trimmed = text.trim() + // Must not contain newlines or whitespace + if (/\s/.test(trimmed)) { + return false + } + // URI patterns: http://, https://, ftp://, file://, etc. + if (/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(trimmed)) { + return true + } + // Windows absolute path: C:\, D:\, etc. + if (/^[a-zA-Z]:[/\\]/.test(trimmed)) { + return true + } + // Unix absolute path: /path/to/file + if (/^\/[^/]/.test(trimmed)) { + return true + } + return false + } + // copy selected text to clipboard const handleCopy = useCallback(async () => { if (selectedText.current) { @@ -219,6 +243,43 @@ const SelectionToolbar: FC<{ demo?: boolean }> = ({ demo = false }) => { } }, [setTimeoutTimer]) + const handleSearch = useCallback((action: ActionItem) => { + if (!action.selectedText) return + + const selectedText = action.selectedText.trim() + + let actionString = '' + if (isUriOrFilePath(selectedText)) { + actionString = selectedText + } else { + if (!action.searchEngine) return + + const customUrl = action.searchEngine.split('|')[1] + if (!customUrl) return + + actionString = customUrl.replace('{{queryString}}', encodeURIComponent(selectedText)) + } + + window.api?.openWebsite(actionString) + window.api?.selection.hideToolbar() + }, []) + + /** + * Quote the selected text to the inputbar of the main window + */ + const handleQuote = (action: ActionItem) => { + if (action.selectedText) { + window.api?.quoteToMainWindow(action.selectedText) + window.api?.selection.hideToolbar() + } + } + + const handleDefaultAction = (action: ActionItem) => { + // [macOS] only macOS has the available isFullscreen mode + window.api?.selection.processAction(action, isFullScreen.current) + window.api?.selection.hideToolbar() + } + const handleAction = useCallback( (action: ActionItem) => { if (demo) return @@ -241,36 +302,9 @@ const SelectionToolbar: FC<{ demo?: boolean }> = ({ demo = false }) => { break } }, - [demo, handleCopy] + [demo, handleCopy, handleSearch] ) - const handleSearch = (action: ActionItem) => { - if (!action.searchEngine) return - - const customUrl = action.searchEngine.split('|')[1] - if (!customUrl) return - - const searchUrl = customUrl.replace('{{queryString}}', encodeURIComponent(action.selectedText || '')) - window.api?.openWebsite(searchUrl) - window.api?.selection.hideToolbar() - } - - /** - * Quote the selected text to the inputbar of the main window - */ - const handleQuote = (action: ActionItem) => { - if (action.selectedText) { - window.api?.quoteToMainWindow(action.selectedText) - window.api?.selection.hideToolbar() - } - } - - const handleDefaultAction = (action: ActionItem) => { - // [macOS] only macOS has the available isFullscreen mode - window.api?.selection.processAction(action, isFullScreen.current) - window.api?.selection.hideToolbar() - } - return ( From 9ac7e2c78d96b3d4933d6c14095ae77b83ce8aef Mon Sep 17 00:00:00 2001 From: SuYao Date: Thu, 11 Dec 2025 15:01:01 +0800 Subject: [PATCH 16/35] feat: enhance web search tool switching logic to support provider-specific context (#11769) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: enhance web search tool switching logic to support provider-specific context * Update packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor: consolidate control flow in switchWebSearchTool (#11771) * Initial plan * refactor: make control flow consistent in switchWebSearchTool Replace early returns with break statements in all switch cases to ensure consistent control flow. Move fallback logic into default case for clarity. Co-authored-by: DeJeune <67425183+DeJeune@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: DeJeune <67425183+DeJeune@users.noreply.github.com> * Update packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: format * fix: ensure switchWebSearchTool is always called for cherryin providers - Add missing else branch to prevent silent failure when provider extraction fails - Add empty string check for extracted providerId from split operation - Ensures web search functionality is preserved in all edge cases Addresses PR review feedback from #11769 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 * refactor: simplify repetitive switchWebSearchTool calls - Extract providerId determination logic before calling switchWebSearchTool - Call switchWebSearchTool only once at the end with updated providerId - Reduce code duplication while maintaining all edge case handling Addresses review feedback from @kangfenmao 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 * refactor: eliminate code duplication in switchWebSearchTool - Extract helper functions: ensureToolsObject, applyToolBasedSearch, applyProviderOptionsSearch - Replace switch statement and fallback if-else chain with providerHandlers map - Use array-based priority order for fallback logic - Reduce code from 73 lines to 80 lines but with much better maintainability - Eliminates 12 instances of "if (!params.tools) params.tools = {}" - Single source of truth for each provider's configuration logic 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.5 --- .../built-in/webSearchPlugin/helper.ts | 101 ++++++++++++++---- .../plugins/built-in/webSearchPlugin/index.ts | 18 +++- 2 files changed, 95 insertions(+), 24 deletions(-) diff --git a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts index 61e6f49b8..6e313bdd2 100644 --- a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts +++ b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts @@ -6,6 +6,7 @@ import { type Tool } from 'ai' import { createOpenRouterOptions, createXaiOptions, mergeProviderOptions } from '../../../options' import type { ProviderOptionsMap } from '../../../options/types' +import type { AiRequestContext } from '../../' import type { OpenRouterSearchConfig } from './openrouter' /** @@ -95,28 +96,84 @@ export type WebSearchToolInputSchema = { 'openai-chat': InferToolInput } -export const switchWebSearchTool = (config: WebSearchPluginConfig, params: any) => { - if (config.openai) { - if (!params.tools) params.tools = {} - params.tools.web_search = openai.tools.webSearch(config.openai) - } else if (config['openai-chat']) { - if (!params.tools) params.tools = {} - params.tools.web_search_preview = openai.tools.webSearchPreview(config['openai-chat']) - } else if (config.anthropic) { - if (!params.tools) params.tools = {} - params.tools.web_search = anthropic.tools.webSearch_20250305(config.anthropic) - } else if (config.google) { - // case 'google-vertex': - if (!params.tools) params.tools = {} - params.tools.web_search = google.tools.googleSearch(config.google || {}) - } else if (config.xai) { - const searchOptions = createXaiOptions({ - searchParameters: { ...config.xai, mode: 'on' } - }) - params.providerOptions = mergeProviderOptions(params.providerOptions, searchOptions) - } else if (config.openrouter) { - const searchOptions = createOpenRouterOptions(config.openrouter) - params.providerOptions = mergeProviderOptions(params.providerOptions, searchOptions) +/** + * Helper function to ensure params.tools object exists + */ +const ensureToolsObject = (params: any) => { + if (!params.tools) params.tools = {} +} + +/** + * Helper function to apply tool-based web search configuration + */ +const applyToolBasedSearch = (params: any, toolName: string, toolInstance: any) => { + ensureToolsObject(params) + params.tools[toolName] = toolInstance +} + +/** + * Helper function to apply provider options-based web search configuration + */ +const applyProviderOptionsSearch = (params: any, searchOptions: any) => { + params.providerOptions = mergeProviderOptions(params.providerOptions, searchOptions) +} + +export const switchWebSearchTool = (config: WebSearchPluginConfig, params: any, context?: AiRequestContext) => { + const providerId = context?.providerId + + // Provider-specific configuration map + const providerHandlers: Record void> = { + openai: () => { + const cfg = config.openai ?? DEFAULT_WEB_SEARCH_CONFIG.openai + applyToolBasedSearch(params, 'web_search', openai.tools.webSearch(cfg)) + }, + 'openai-chat': () => { + const cfg = (config['openai-chat'] ?? DEFAULT_WEB_SEARCH_CONFIG['openai-chat']) as OpenAISearchPreviewConfig + applyToolBasedSearch(params, 'web_search_preview', openai.tools.webSearchPreview(cfg)) + }, + anthropic: () => { + const cfg = config.anthropic ?? DEFAULT_WEB_SEARCH_CONFIG.anthropic + applyToolBasedSearch(params, 'web_search', anthropic.tools.webSearch_20250305(cfg)) + }, + google: () => { + const cfg = (config.google ?? DEFAULT_WEB_SEARCH_CONFIG.google) as GoogleSearchConfig + applyToolBasedSearch(params, 'web_search', google.tools.googleSearch(cfg)) + }, + xai: () => { + const cfg = config.xai ?? DEFAULT_WEB_SEARCH_CONFIG.xai + const searchOptions = createXaiOptions({ searchParameters: { ...cfg, mode: 'on' } }) + applyProviderOptionsSearch(params, searchOptions) + }, + openrouter: () => { + const cfg = (config.openrouter ?? DEFAULT_WEB_SEARCH_CONFIG.openrouter) as OpenRouterSearchConfig + const searchOptions = createOpenRouterOptions(cfg) + applyProviderOptionsSearch(params, searchOptions) + } } + + // Try provider-specific handler first + const handler = providerId && providerHandlers[providerId] + if (handler) { + handler() + return params + } + + // Fallback: apply based on available config keys (prioritized order) + const fallbackOrder: Array = [ + 'openai', + 'openai-chat', + 'anthropic', + 'google', + 'xai', + 'openrouter' + ] + + for (const key of fallbackOrder) { + if (config[key]) { + providerHandlers[key]() + break + } + } + return params } diff --git a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts index a46df7dd4..e02fd179f 100644 --- a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts +++ b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts @@ -17,8 +17,22 @@ export const webSearchPlugin = (config: WebSearchPluginConfig = DEFAULT_WEB_SEAR name: 'webSearch', enforce: 'pre', - transformParams: async (params: any) => { - switchWebSearchTool(config, params) + transformParams: async (params: any, context) => { + let { providerId } = context + + // For cherryin providers, extract the actual provider from the model's provider string + // Expected format: "cherryin.{actualProvider}" (e.g., "cherryin.gemini") + if (providerId === 'cherryin' || providerId === 'cherryin-chat') { + const provider = params.model?.provider + if (provider && typeof provider === 'string' && provider.includes('.')) { + const extractedProviderId = provider.split('.')[1] + if (extractedProviderId) { + providerId = extractedProviderId + } + } + } + + switchWebSearchTool(config, params, { ...context, providerId }) return params } }) From 8cd4b1b747c3895621991108ada665208472f8b4 Mon Sep 17 00:00:00 2001 From: LiuVaayne <10231735+vaayne@users.noreply.github.com> Date: Thu, 11 Dec 2025 15:02:26 +0800 Subject: [PATCH 17/35] =?UTF-8?q?=F0=9F=90=9B=20fix:=20stabilize=20MCP=20l?= =?UTF-8?q?og=20IPC=20registration=20(#11830)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ipc.ts | 1 - src/main/services/MCPService.ts | 12 +++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 714292c67..478564eb4 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -766,7 +766,6 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { ipcMain.handle(IpcChannel.Mcp_AbortTool, mcpService.abortTool) ipcMain.handle(IpcChannel.Mcp_GetServerVersion, mcpService.getServerVersion) ipcMain.handle(IpcChannel.Mcp_GetServerLogs, mcpService.getServerLogs) - ipcMain.handle(IpcChannel.Mcp_GetServerLogs, mcpService.getServerLogs) // DXT upload handler ipcMain.handle(IpcChannel.Mcp_UploadDxt, async (event, fileBuffer: ArrayBuffer, fileName: string) => { diff --git a/src/main/services/MCPService.ts b/src/main/services/MCPService.ts index f9b43f039..cc6bbaa36 100644 --- a/src/main/services/MCPService.ts +++ b/src/main/services/MCPService.ts @@ -162,6 +162,7 @@ class McpService { this.cleanup = this.cleanup.bind(this) this.checkMcpConnectivity = this.checkMcpConnectivity.bind(this) this.getServerVersion = this.getServerVersion.bind(this) + this.getServerLogs = this.getServerLogs.bind(this) } private getServerKey(server: MCPServer): string { @@ -392,15 +393,8 @@ class McpService { source: 'stdio' }) }) - ;(stdioTransport as any).stdout?.on('data', (data: any) => { - const msg = data.toString() - this.emitServerLog(server, { - timestamp: Date.now(), - level: 'stdout', - message: msg.trim(), - source: 'stdio' - }) - }) + // StdioClientTransport does not expose stdout as a readable stream for raw logging + // (stdout is reserved for JSON-RPC). Avoid attaching a listener that would never fire. return stdioTransport } else { throw new Error('Either baseUrl or command must be provided') From ed695a8620919333b6363e9c1921ab5f364e7b05 Mon Sep 17 00:00:00 2001 From: beyondkmp Date: Thu, 11 Dec 2025 15:04:04 +0800 Subject: [PATCH 18/35] feat: Support custom git bash path (#11813) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: allow custom Git Bash path for Claude Code Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * format code * format code * update i18n * fix: correct Git Bash invalid path translation key Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * test: cover null inputs for validateGitBashPath Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * refactor: rely on findGitBash for env override check Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * fix: validate env override for Git Bash path Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * chore: align Git Bash path getter with platform guard Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * test: cover env override behavior in findGitBash Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * refactor: unify Git Bash path detection logic - Add customPath parameter to findGitBash() for config-based paths - Simplify checkGitBash IPC handler by delegating to findGitBash - Change validateGitBashPath success log level from info to debug - Only show success Alert when custom path is configured - Add tests for customPath parameter priority handling 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --------- Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> Co-authored-by: Claude --- packages/shared/IpcChannel.ts | 2 + src/main/ipc.ts | 36 ++++- src/main/services/ConfigManager.ts | 3 +- .../agents/services/claudecode/index.ts | 7 +- src/main/utils/__tests__/process.test.ts | 128 +++++++++++++++++- src/main/utils/process.ts | 50 ++++++- src/preload/index.ts | 5 +- .../components/Popups/agent/AgentModal.tsx | 77 ++++++++++- src/renderer/src/i18n/locales/en-us.json | 14 ++ src/renderer/src/i18n/locales/zh-cn.json | 14 ++ src/renderer/src/i18n/locales/zh-tw.json | 14 ++ src/renderer/src/i18n/translate/de-de.json | 14 ++ src/renderer/src/i18n/translate/el-gr.json | 14 ++ src/renderer/src/i18n/translate/es-es.json | 14 ++ src/renderer/src/i18n/translate/fr-fr.json | 16 ++- src/renderer/src/i18n/translate/ja-jp.json | 14 ++ src/renderer/src/i18n/translate/pt-pt.json | 14 ++ src/renderer/src/i18n/translate/ru-ru.json | 14 ++ 18 files changed, 438 insertions(+), 12 deletions(-) diff --git a/packages/shared/IpcChannel.ts b/packages/shared/IpcChannel.ts index 88e7ae85d..f3cf112fe 100644 --- a/packages/shared/IpcChannel.ts +++ b/packages/shared/IpcChannel.ts @@ -241,6 +241,8 @@ export enum IpcChannel { System_GetHostname = 'system:getHostname', System_GetCpuName = 'system:getCpuName', System_CheckGitBash = 'system:checkGitBash', + System_GetGitBashPath = 'system:getGitBashPath', + System_SetGitBashPath = 'system:setGitBashPath', // DevTools System_ToggleDevTools = 'system:toggleDevTools', diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 478564eb4..a960eb7dc 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -6,7 +6,7 @@ import { loggerService } from '@logger' import { isLinux, isMac, isPortable, isWin } from '@main/constant' import { generateSignature } from '@main/integration/cherryai' import anthropicService from '@main/services/AnthropicService' -import { findGitBash, getBinaryPath, isBinaryExists, runInstallScript } from '@main/utils/process' +import { findGitBash, getBinaryPath, isBinaryExists, runInstallScript, validateGitBashPath } from '@main/utils/process' import { handleZoomFactor } from '@main/utils/zoom' import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' import type { UpgradeChannel } from '@shared/config/constant' @@ -35,7 +35,7 @@ import appService from './services/AppService' import AppUpdater from './services/AppUpdater' import BackupManager from './services/BackupManager' import { codeToolsService } from './services/CodeToolsService' -import { configManager } from './services/ConfigManager' +import { ConfigKeys, configManager } from './services/ConfigManager' import CopilotService from './services/CopilotService' import DxtService from './services/DxtService' import { ExportService } from './services/ExportService' @@ -499,7 +499,8 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { } try { - const bashPath = findGitBash() + const customPath = configManager.get(ConfigKeys.GitBashPath) as string | undefined + const bashPath = findGitBash(customPath) if (bashPath) { logger.info('Git Bash is available', { path: bashPath }) @@ -513,6 +514,35 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { return false } }) + + ipcMain.handle(IpcChannel.System_GetGitBashPath, () => { + if (!isWin) { + return null + } + + const customPath = configManager.get(ConfigKeys.GitBashPath) as string | undefined + return customPath ?? null + }) + + ipcMain.handle(IpcChannel.System_SetGitBashPath, (_, newPath: string | null) => { + if (!isWin) { + return false + } + + if (!newPath) { + configManager.set(ConfigKeys.GitBashPath, null) + return true + } + + const validated = validateGitBashPath(newPath) + if (!validated) { + return false + } + + configManager.set(ConfigKeys.GitBashPath, validated) + return true + }) + ipcMain.handle(IpcChannel.System_ToggleDevTools, (e) => { const win = BrowserWindow.fromWebContents(e.sender) win && win.webContents.toggleDevTools() diff --git a/src/main/services/ConfigManager.ts b/src/main/services/ConfigManager.ts index 61e285ac1..c693d4b05 100644 --- a/src/main/services/ConfigManager.ts +++ b/src/main/services/ConfigManager.ts @@ -31,7 +31,8 @@ export enum ConfigKeys { DisableHardwareAcceleration = 'disableHardwareAcceleration', Proxy = 'proxy', EnableDeveloperMode = 'enableDeveloperMode', - ClientId = 'clientId' + ClientId = 'clientId', + GitBashPath = 'gitBashPath' } export class ConfigManager { diff --git a/src/main/services/agents/services/claudecode/index.ts b/src/main/services/agents/services/claudecode/index.ts index e5cefadd6..ba863f7c5 100644 --- a/src/main/services/agents/services/claudecode/index.ts +++ b/src/main/services/agents/services/claudecode/index.ts @@ -15,6 +15,8 @@ import { query } from '@anthropic-ai/claude-agent-sdk' import { loggerService } from '@logger' import { config as apiConfigService } from '@main/apiServer/config' import { validateModelId } from '@main/apiServer/utils' +import { ConfigKeys, configManager } from '@main/services/ConfigManager' +import { validateGitBashPath } from '@main/utils/process' import getLoginShellEnvironment from '@main/utils/shell-env' import { app } from 'electron' @@ -107,6 +109,8 @@ class ClaudeCodeService implements AgentServiceInterface { Object.entries(loginShellEnv).filter(([key]) => !key.toLowerCase().endsWith('_proxy')) ) as Record + const customGitBashPath = validateGitBashPath(configManager.get(ConfigKeys.GitBashPath) as string | undefined) + const env = { ...loginShellEnvWithoutProxies, // TODO: fix the proxy api server @@ -126,7 +130,8 @@ class ClaudeCodeService implements AgentServiceInterface { // Set CLAUDE_CONFIG_DIR to app's userData directory to avoid path encoding issues // on Windows when the username contains non-ASCII characters (e.g., Chinese characters) // This prevents the SDK from using the user's home directory which may have encoding problems - CLAUDE_CONFIG_DIR: path.join(app.getPath('userData'), '.claude') + CLAUDE_CONFIG_DIR: path.join(app.getPath('userData'), '.claude'), + ...(customGitBashPath ? { CLAUDE_CODE_GIT_BASH_PATH: customGitBashPath } : {}) } const errorChunks: string[] = [] diff --git a/src/main/utils/__tests__/process.test.ts b/src/main/utils/__tests__/process.test.ts index 45c0f8b42..0485ec5fa 100644 --- a/src/main/utils/__tests__/process.test.ts +++ b/src/main/utils/__tests__/process.test.ts @@ -3,7 +3,7 @@ import fs from 'fs' import path from 'path' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { findExecutable, findGitBash } from '../process' +import { findExecutable, findGitBash, validateGitBashPath } from '../process' // Mock dependencies vi.mock('child_process') @@ -289,7 +289,133 @@ describe.skipIf(process.platform !== 'win32')('process utilities', () => { }) }) + describe('validateGitBashPath', () => { + it('returns null when path is null', () => { + const result = validateGitBashPath(null) + + expect(result).toBeNull() + }) + + it('returns null when path is undefined', () => { + const result = validateGitBashPath(undefined) + + expect(result).toBeNull() + }) + + it('returns normalized path when valid bash.exe exists', () => { + const customPath = 'C:\\PortableGit\\bin\\bash.exe' + vi.mocked(fs.existsSync).mockImplementation((p) => p === 'C:\\PortableGit\\bin\\bash.exe') + + const result = validateGitBashPath(customPath) + + expect(result).toBe('C:\\PortableGit\\bin\\bash.exe') + }) + + it('returns null when file does not exist', () => { + vi.mocked(fs.existsSync).mockReturnValue(false) + + const result = validateGitBashPath('C:\\missing\\bash.exe') + + expect(result).toBeNull() + }) + + it('returns null when path is not bash.exe', () => { + const customPath = 'C:\\PortableGit\\bin\\git.exe' + vi.mocked(fs.existsSync).mockReturnValue(true) + + const result = validateGitBashPath(customPath) + + expect(result).toBeNull() + }) + }) + describe('findGitBash', () => { + describe('customPath parameter', () => { + beforeEach(() => { + delete process.env.CLAUDE_CODE_GIT_BASH_PATH + }) + + it('uses customPath when valid', () => { + const customPath = 'C:\\CustomGit\\bin\\bash.exe' + vi.mocked(fs.existsSync).mockImplementation((p) => p === customPath) + + const result = findGitBash(customPath) + + expect(result).toBe(customPath) + expect(execFileSync).not.toHaveBeenCalled() + }) + + it('falls back when customPath is invalid', () => { + const customPath = 'C:\\Invalid\\bash.exe' + const gitPath = 'C:\\Program Files\\Git\\cmd\\git.exe' + const bashPath = 'C:\\Program Files\\Git\\bin\\bash.exe' + + vi.mocked(fs.existsSync).mockImplementation((p) => { + if (p === customPath) return false + if (p === gitPath) return true + if (p === bashPath) return true + return false + }) + + vi.mocked(execFileSync).mockReturnValue(gitPath) + + const result = findGitBash(customPath) + + expect(result).toBe(bashPath) + }) + + it('prioritizes customPath over env override', () => { + const customPath = 'C:\\CustomGit\\bin\\bash.exe' + const envPath = 'C:\\EnvGit\\bin\\bash.exe' + process.env.CLAUDE_CODE_GIT_BASH_PATH = envPath + + vi.mocked(fs.existsSync).mockImplementation((p) => p === customPath || p === envPath) + + const result = findGitBash(customPath) + + expect(result).toBe(customPath) + }) + }) + + describe('env override', () => { + beforeEach(() => { + delete process.env.CLAUDE_CODE_GIT_BASH_PATH + }) + + it('uses CLAUDE_CODE_GIT_BASH_PATH when valid', () => { + const envPath = 'C:\\OverrideGit\\bin\\bash.exe' + process.env.CLAUDE_CODE_GIT_BASH_PATH = envPath + + vi.mocked(fs.existsSync).mockImplementation((p) => p === envPath) + + const result = findGitBash() + + expect(result).toBe(envPath) + expect(execFileSync).not.toHaveBeenCalled() + }) + + it('falls back when CLAUDE_CODE_GIT_BASH_PATH is invalid', () => { + const envPath = 'C:\\Invalid\\bash.exe' + const gitPath = 'C:\\Program Files\\Git\\cmd\\git.exe' + const bashPath = 'C:\\Program Files\\Git\\bin\\bash.exe' + + process.env.CLAUDE_CODE_GIT_BASH_PATH = envPath + + vi.mocked(fs.existsSync).mockImplementation((p) => { + if (p === envPath) return false + if (p === gitPath) return true + if (p === bashPath) return true + return false + }) + + vi.mocked(execFileSync).mockReturnValue(gitPath) + + const result = findGitBash() + + expect(result).toBe(bashPath) + }) + }) + describe('git.exe path derivation', () => { it('should derive bash.exe from standard Git installation (Git/cmd/git.exe)', () => { const gitPath = 'C:\\Program Files\\Git\\cmd\\git.exe' diff --git a/src/main/utils/process.ts b/src/main/utils/process.ts index b59a37a04..7175af7e7 100644 --- a/src/main/utils/process.ts +++ b/src/main/utils/process.ts @@ -131,15 +131,37 @@ export function findExecutable(name: string): string | null { /** * Find Git Bash executable on Windows + * @param customPath - Optional custom path from config * @returns Full path to bash.exe or null if not found */ -export function findGitBash(): string | null { +export function findGitBash(customPath?: string | null): string | null { // Git Bash is Windows-only if (!isWin) { return null } - // 1. Find git.exe and derive bash.exe path + // 1. Check custom path from config first + if (customPath) { + const validated = validateGitBashPath(customPath) + if (validated) { + logger.debug('Using custom Git Bash path from config', { path: validated }) + return validated + } + logger.warn('Custom Git Bash path provided but invalid', { path: customPath }) + } + + // 2. Check environment variable override + const envOverride = process.env.CLAUDE_CODE_GIT_BASH_PATH + if (envOverride) { + const validated = validateGitBashPath(envOverride) + if (validated) { + logger.debug('Using CLAUDE_CODE_GIT_BASH_PATH override for bash.exe', { path: validated }) + return validated + } + logger.warn('CLAUDE_CODE_GIT_BASH_PATH provided but path is invalid', { path: envOverride }) + } + + // 3. Find git.exe and derive bash.exe path const gitPath = findExecutable('git') if (gitPath) { // Try multiple possible locations for bash.exe relative to git.exe @@ -164,7 +186,7 @@ export function findGitBash(): string | null { }) } - // 2. Fallback: check common Git Bash paths directly + // 4. Fallback: check common Git Bash paths directly const commonBashPaths = [ path.join(process.env.ProgramFiles || 'C:\\Program Files', 'Git', 'bin', 'bash.exe'), path.join(process.env['ProgramFiles(x86)'] || 'C:\\Program Files (x86)', 'Git', 'bin', 'bash.exe'), @@ -181,3 +203,25 @@ export function findGitBash(): string | null { logger.debug('Git Bash not found - checked git derivation and common paths') return null } + +export function validateGitBashPath(customPath?: string | null): string | null { + if (!customPath) { + return null + } + + const resolved = path.resolve(customPath) + + if (!fs.existsSync(resolved)) { + logger.warn('Custom Git Bash path does not exist', { path: resolved }) + return null + } + + const isExe = resolved.toLowerCase().endsWith('bash.exe') + if (!isExe) { + logger.warn('Custom Git Bash path is not bash.exe', { path: resolved }) + return null + } + + logger.debug('Validated custom Git Bash path', { path: resolved }) + return resolved +} diff --git a/src/preload/index.ts b/src/preload/index.ts index 654e727cc..fda288f68 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -124,7 +124,10 @@ const api = { getDeviceType: () => ipcRenderer.invoke(IpcChannel.System_GetDeviceType), getHostname: () => ipcRenderer.invoke(IpcChannel.System_GetHostname), getCpuName: () => ipcRenderer.invoke(IpcChannel.System_GetCpuName), - checkGitBash: (): Promise => ipcRenderer.invoke(IpcChannel.System_CheckGitBash) + checkGitBash: (): Promise => ipcRenderer.invoke(IpcChannel.System_CheckGitBash), + getGitBashPath: (): Promise => ipcRenderer.invoke(IpcChannel.System_GetGitBashPath), + setGitBashPath: (newPath: string | null): Promise => + ipcRenderer.invoke(IpcChannel.System_SetGitBashPath, newPath) }, devTools: { toggle: () => ipcRenderer.invoke(IpcChannel.System_ToggleDevTools) diff --git a/src/renderer/src/components/Popups/agent/AgentModal.tsx b/src/renderer/src/components/Popups/agent/AgentModal.tsx index 0d3ce9473..8a8b4fe61 100644 --- a/src/renderer/src/components/Popups/agent/AgentModal.tsx +++ b/src/renderer/src/components/Popups/agent/AgentModal.tsx @@ -60,6 +60,7 @@ const PopupContainer: React.FC = ({ agent, afterSubmit, resolve }) => { const [form, setForm] = useState(() => buildAgentForm(agent)) const [hasGitBash, setHasGitBash] = useState(true) + const [customGitBashPath, setCustomGitBashPath] = useState('') useEffect(() => { if (open) { @@ -70,7 +71,11 @@ const PopupContainer: React.FC = ({ agent, afterSubmit, resolve }) => { const checkGitBash = useCallback( async (showToast = false) => { try { - const gitBashInstalled = await window.api.system.checkGitBash() + const [gitBashInstalled, savedPath] = await Promise.all([ + window.api.system.checkGitBash(), + window.api.system.getGitBashPath().catch(() => null) + ]) + setCustomGitBashPath(savedPath ?? '') setHasGitBash(gitBashInstalled) if (showToast) { if (gitBashInstalled) { @@ -93,6 +98,46 @@ const PopupContainer: React.FC = ({ agent, afterSubmit, resolve }) => { const selectedPermissionMode = form.configuration?.permission_mode ?? 'default' + const handlePickGitBash = useCallback(async () => { + try { + const selected = await window.api.file.select({ + title: t('agent.gitBash.pick.title', 'Select Git Bash executable'), + filters: [{ name: 'Executable', extensions: ['exe'] }], + properties: ['openFile'] + }) + + if (!selected || selected.length === 0) { + return + } + + const pickedPath = selected[0].path + const ok = await window.api.system.setGitBashPath(pickedPath) + if (!ok) { + window.toast.error( + t('agent.gitBash.pick.invalidPath', 'Selected file is not a valid Git Bash executable (bash.exe).') + ) + return + } + + setCustomGitBashPath(pickedPath) + await checkGitBash(true) + } catch (error) { + logger.error('Failed to pick Git Bash path', error as Error) + window.toast.error(t('agent.gitBash.pick.failed', 'Failed to set Git Bash path')) + } + }, [checkGitBash, t]) + + const handleClearGitBash = useCallback(async () => { + try { + await window.api.system.setGitBashPath(null) + setCustomGitBashPath('') + await checkGitBash(true) + } catch (error) { + logger.error('Failed to clear Git Bash path', error as Error) + window.toast.error(t('agent.gitBash.pick.failed', 'Failed to set Git Bash path')) + } + }, [checkGitBash, t]) + const onPermissionModeChange = useCallback((value: PermissionMode) => { setForm((prev) => { const parsedConfiguration = AgentConfigurationSchema.parse(prev.configuration ?? {}) @@ -324,6 +369,9 @@ const PopupContainer: React.FC = ({ agent, afterSubmit, resolve }) => { + } type="error" @@ -331,6 +379,33 @@ const PopupContainer: React.FC = ({ agent, afterSubmit, resolve }) => { style={{ marginBottom: 16 }} /> )} + + {hasGitBash && customGitBashPath && ( + +

+ {t('agent.gitBash.customPath', { + defaultValue: 'Using custom path: {{path}}', + path: customGitBashPath + })} +
+
+ + +
+ + } + type="success" + showIcon + style={{ marginBottom: 16 }} + /> + )}