Matt Rubens 11 месяцев назад
Родитель
Сommit
8bbb64d27f

+ 5 - 0
.changeset/cyan-camels-explode.md

@@ -0,0 +1,5 @@
+---
+"roo-cline": patch
+---
+
+Fix bug where language selector wasn't working

+ 3 - 1
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,
 			)
 		})()
 

+ 28 - 0
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")
+	})
+})

+ 4 - 1
src/core/prompts/system.ts

@@ -37,6 +37,7 @@ async function generatePrompt(
 	promptComponent?: PromptComponent,
 	customModeConfigs?: ModeConfig[],
 	globalCustomInstructions?: string,
+	preferredLanguage?: string,
 ): Promise<string> {
 	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<string> => {
 	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,
 	)
 }