From 8bbb64d27fca56ad22524b29e2357ca8a466389e Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 21 Jan 2025 15:39:59 -0500 Subject: [PATCH] Fix language selector --- .changeset/cyan-camels-explode.md | 5 ++++ src/core/Cline.ts | 4 ++- src/core/prompts/__tests__/sections.test.ts | 28 +++++++++++++++++++++ src/core/prompts/system.ts | 5 +++- 4 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 .changeset/cyan-camels-explode.md create mode 100644 src/core/prompts/__tests__/sections.test.ts diff --git a/.changeset/cyan-camels-explode.md b/.changeset/cyan-camels-explode.md new file mode 100644 index 0000000..7bc47f8 --- /dev/null +++ b/.changeset/cyan-camels-explode.md @@ -0,0 +1,5 @@ +--- +"roo-cline": patch +--- + +Fix bug where language selector wasn't working diff --git a/src/core/Cline.ts b/src/core/Cline.ts index f26b43b..9d82086 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -809,7 +809,8 @@ export class Cline { }) } - const { browserViewportSize, mode, customPrompts } = (await this.providerRef.deref()?.getState()) ?? {} + const { browserViewportSize, mode, customPrompts, preferredLanguage } = + (await this.providerRef.deref()?.getState()) ?? {} const { customModes } = (await this.providerRef.deref()?.getState()) ?? {} const systemPrompt = await (async () => { const provider = this.providerRef.deref() @@ -826,6 +827,7 @@ export class Cline { mode, customPrompts, customModes, + preferredLanguage, ) })() diff --git a/src/core/prompts/__tests__/sections.test.ts b/src/core/prompts/__tests__/sections.test.ts new file mode 100644 index 0000000..064639f --- /dev/null +++ b/src/core/prompts/__tests__/sections.test.ts @@ -0,0 +1,28 @@ +import { addCustomInstructions } from "../sections/custom-instructions" + +describe("addCustomInstructions", () => { + test("adds preferred language to custom instructions", async () => { + const result = await addCustomInstructions( + "mode instructions", + "global instructions", + "/test/path", + "test-mode", + { preferredLanguage: "French" }, + ) + + expect(result).toContain("Language Preference:") + expect(result).toContain("You should always speak and think in the French language") + }) + + test("works without preferred language", async () => { + const result = await addCustomInstructions( + "mode instructions", + "global instructions", + "/test/path", + "test-mode", + ) + + expect(result).not.toContain("Language Preference:") + expect(result).not.toContain("You should always speak and think in") + }) +}) diff --git a/src/core/prompts/system.ts b/src/core/prompts/system.ts index 3d30a96..bb7797f 100644 --- a/src/core/prompts/system.ts +++ b/src/core/prompts/system.ts @@ -37,6 +37,7 @@ async function generatePrompt( promptComponent?: PromptComponent, customModeConfigs?: ModeConfig[], globalCustomInstructions?: string, + preferredLanguage?: string, ): Promise { if (!context) { throw new Error("Extension context is required for generating system prompt") @@ -79,7 +80,7 @@ ${getSystemInfoSection(cwd, mode, customModeConfigs)} ${getObjectiveSection()} -${await addCustomInstructions(modeConfig.customInstructions || "", globalCustomInstructions || "", cwd, mode, {})}` +${await addCustomInstructions(modeConfig.customInstructions || "", globalCustomInstructions || "", cwd, mode, { preferredLanguage })}` return basePrompt } @@ -95,6 +96,7 @@ export const SYSTEM_PROMPT = async ( customPrompts?: CustomPrompts, customModes?: ModeConfig[], globalCustomInstructions?: string, + preferredLanguage?: string, ): Promise => { if (!context) { throw new Error("Extension context is required for generating system prompt") @@ -123,5 +125,6 @@ export const SYSTEM_PROMPT = async ( promptComponent, customModes, globalCustomInstructions, + preferredLanguage, ) }