Explorar el Código

refactor: remove footgun prompting (file-based system prompt override) (#11387)

Hannes Rudolph hace 1 día
padre
commit
4e659b459d
Se han modificado 48 ficheros con 23 adiciones y 720 borrados
  1. 1 1
      packages/evals/README.md
  2. 0 2
      packages/types/src/vscode-extension-host.ts
  3. 0 201
      src/core/prompts/__tests__/custom-system-prompt.spec.ts
  4. 0 134
      src/core/prompts/sections/__tests__/custom-system-prompt.spec.ts
  5. 0 87
      src/core/prompts/sections/custom-system-prompt.ts
  6. 0 41
      src/core/prompts/system.ts
  7. 19 0
      src/core/task/__tests__/Task.spec.ts
  8. 1 20
      src/core/webview/ClineProvider.ts
  9. 0 8
      webview-ui/src/components/chat/ChatView.tsx
  10. 0 17
      webview-ui/src/components/chat/SystemPromptWarning.tsx
  11. 0 62
      webview-ui/src/components/modes/ModesView.tsx
  12. 0 1
      webview-ui/src/context/ExtensionStateContext.tsx
  13. 0 1
      webview-ui/src/i18n/locales/ca/chat.json
  14. 0 7
      webview-ui/src/i18n/locales/ca/prompts.json
  15. 0 1
      webview-ui/src/i18n/locales/de/chat.json
  16. 0 7
      webview-ui/src/i18n/locales/de/prompts.json
  17. 2 3
      webview-ui/src/i18n/locales/en/chat.json
  18. 0 7
      webview-ui/src/i18n/locales/en/prompts.json
  19. 0 1
      webview-ui/src/i18n/locales/es/chat.json
  20. 0 7
      webview-ui/src/i18n/locales/es/prompts.json
  21. 0 1
      webview-ui/src/i18n/locales/fr/chat.json
  22. 0 7
      webview-ui/src/i18n/locales/fr/prompts.json
  23. 0 1
      webview-ui/src/i18n/locales/hi/chat.json
  24. 0 7
      webview-ui/src/i18n/locales/hi/prompts.json
  25. 0 1
      webview-ui/src/i18n/locales/id/chat.json
  26. 0 7
      webview-ui/src/i18n/locales/id/prompts.json
  27. 0 1
      webview-ui/src/i18n/locales/it/chat.json
  28. 0 7
      webview-ui/src/i18n/locales/it/prompts.json
  29. 0 1
      webview-ui/src/i18n/locales/ja/chat.json
  30. 0 7
      webview-ui/src/i18n/locales/ja/prompts.json
  31. 0 1
      webview-ui/src/i18n/locales/ko/chat.json
  32. 0 7
      webview-ui/src/i18n/locales/ko/prompts.json
  33. 0 1
      webview-ui/src/i18n/locales/nl/chat.json
  34. 0 7
      webview-ui/src/i18n/locales/nl/prompts.json
  35. 0 1
      webview-ui/src/i18n/locales/pl/chat.json
  36. 0 7
      webview-ui/src/i18n/locales/pl/prompts.json
  37. 0 1
      webview-ui/src/i18n/locales/pt-BR/chat.json
  38. 0 7
      webview-ui/src/i18n/locales/pt-BR/prompts.json
  39. 0 1
      webview-ui/src/i18n/locales/ru/chat.json
  40. 0 7
      webview-ui/src/i18n/locales/ru/prompts.json
  41. 0 1
      webview-ui/src/i18n/locales/tr/chat.json
  42. 0 7
      webview-ui/src/i18n/locales/tr/prompts.json
  43. 0 1
      webview-ui/src/i18n/locales/vi/chat.json
  44. 0 7
      webview-ui/src/i18n/locales/vi/prompts.json
  45. 0 1
      webview-ui/src/i18n/locales/zh-CN/chat.json
  46. 0 7
      webview-ui/src/i18n/locales/zh-CN/prompts.json
  47. 0 1
      webview-ui/src/i18n/locales/zh-TW/chat.json
  48. 0 7
      webview-ui/src/i18n/locales/zh-TW/prompts.json

+ 1 - 1
packages/evals/README.md

@@ -37,7 +37,7 @@ Additionally, you'll find in Docker Desktop that database and redis services are
 
 
 Navigate to [localhost:3446](http://localhost:3446/) in your browser and click the 🚀 button.
 Navigate to [localhost:3446](http://localhost:3446/) in your browser and click the 🚀 button.
 
 
-By default a evals run will run all programming exercises in [Roo Code Evals](https://github.com/RooCodeInc/Roo-Code-Evals) repository with the Claude Sonnet 4 model and default settings. For basic configuration you can specify the LLM to use and any subset of the exercises you'd like. For advanced configuration you can import a Roo Code settings file which will allow you to run the evals with Roo Code configured any way you'd like (this includes custom modes, a footgun prompt, etc).
+By default a evals run will run all programming exercises in [Roo Code Evals](https://github.com/RooCodeInc/Roo-Code-Evals) repository with the Claude Sonnet 4 model and default settings. For basic configuration you can specify the LLM to use and any subset of the exercises you'd like. For advanced configuration you can import a Roo Code settings file which will allow you to run the evals with Roo Code configured any way you'd like (this includes custom modes, custom instructions, etc).
 
 
 <img width="1053" src="https://github.com/user-attachments/assets/2367eef4-6ae9-4ac2-8ee4-80f981046486" />
 <img width="1053" src="https://github.com/user-attachments/assets/2367eef4-6ae9-4ac2-8ee4-80f981046486" />
 
 

+ 0 - 2
packages/types/src/vscode-extension-host.ts

@@ -381,7 +381,6 @@ export type ExtensionState = Pick<
 	lastShownAnnouncementId?: string
 	lastShownAnnouncementId?: string
 	apiModelId?: string
 	apiModelId?: string
 	mcpServers?: McpServer[]
 	mcpServers?: McpServer[]
-	hasSystemPromptOverride?: boolean
 	mdmCompliant?: boolean
 	mdmCompliant?: boolean
 	remoteControlEnabled: boolean
 	remoteControlEnabled: boolean
 	taskSyncEnabled: boolean
 	taskSyncEnabled: boolean
@@ -645,7 +644,6 @@ export interface WebviewMessage {
 	newSkillModeSlugs?: string[] // For updateSkillModes (new mode restrictions)
 	newSkillModeSlugs?: string[] // For updateSkillModes (new mode restrictions)
 	requestId?: string
 	requestId?: string
 	ids?: string[]
 	ids?: string[]
-	hasSystemPromptOverride?: boolean
 	terminalOperation?: "continue" | "abort"
 	terminalOperation?: "continue" | "abort"
 	messageTs?: number
 	messageTs?: number
 	restoreCheckpoint?: boolean
 	restoreCheckpoint?: boolean

+ 0 - 201
src/core/prompts/__tests__/custom-system-prompt.spec.ts

@@ -1,201 +0,0 @@
-// Mocks must come first, before imports
-vi.mock("vscode", () => ({
-	env: {
-		language: "en",
-	},
-	workspace: {
-		workspaceFolders: [{ uri: { fsPath: "/test/path" } }],
-		getWorkspaceFolder: vi.fn().mockReturnValue({ uri: { fsPath: "/test/path" } }),
-	},
-	window: {
-		activeTextEditor: undefined,
-	},
-	EventEmitter: vi.fn().mockImplementation(() => ({
-		event: vi.fn(),
-		fire: vi.fn(),
-		dispose: vi.fn(),
-	})),
-}))
-
-vi.mock("fs/promises", () => {
-	const mockReadFile = vi.fn()
-	const mockMkdir = vi.fn().mockResolvedValue(undefined)
-	const mockAccess = vi.fn().mockResolvedValue(undefined)
-
-	return {
-		default: {
-			readFile: mockReadFile,
-			mkdir: mockMkdir,
-			access: mockAccess,
-		},
-		readFile: mockReadFile,
-		mkdir: mockMkdir,
-		access: mockAccess,
-	}
-})
-
-vi.mock("../../../utils/fs", () => ({
-	fileExistsAtPath: vi.fn().mockResolvedValue(true),
-	createDirectoriesForFile: vi.fn().mockResolvedValue([]),
-}))
-
-import { SYSTEM_PROMPT } from "../system"
-import { defaultModeSlug, modes } from "../../../shared/modes"
-import * as vscode from "vscode"
-import * as fs from "fs/promises"
-import { toPosix } from "./utils"
-
-// Get the mocked fs module
-const mockedFs = vi.mocked(fs)
-
-// Create a mock ExtensionContext with relative paths instead of absolute paths
-const mockContext = {
-	extensionPath: "mock/extension/path",
-	globalStoragePath: "mock/storage/path",
-	storagePath: "mock/storage/path",
-	logPath: "mock/log/path",
-	subscriptions: [],
-	workspaceState: {
-		get: () => undefined,
-		update: () => Promise.resolve(),
-	},
-	globalState: {
-		get: () => undefined,
-		update: () => Promise.resolve(),
-		setKeysForSync: () => {},
-	},
-	extensionUri: { fsPath: "mock/extension/path" },
-	globalStorageUri: { fsPath: "mock/settings/path" },
-	asAbsolutePath: (relativePath: string) => `mock/extension/path/${relativePath}`,
-	extension: {
-		packageJSON: {
-			version: "1.0.0",
-		},
-	},
-} as unknown as vscode.ExtensionContext
-
-describe("File-Based Custom System Prompt", () => {
-	beforeEach(() => {
-		// Reset mocks before each test
-		vi.clearAllMocks()
-
-		// Default behavior: file doesn't exist
-		mockedFs.readFile.mockRejectedValue({ code: "ENOENT" })
-	})
-
-	// Skipped on Windows due to timeout/flake issues
-	it.skipIf(process.platform === "win32")(
-		"should use default generation when no file-based system prompt is found",
-		async () => {
-			const customModePrompts = {
-				[defaultModeSlug]: {
-					roleDefinition: "Test role definition",
-				},
-			}
-
-			const prompt = await SYSTEM_PROMPT(
-				mockContext,
-				"test/path", // Using a relative path without leading slash
-				false, // supportsImages
-				undefined, // mcpHub
-				undefined, // diffStrategy
-				undefined, // browserViewportSize
-				defaultModeSlug, // mode
-				customModePrompts, // customModePrompts
-				undefined, // customModes
-				undefined, // globalCustomInstructions
-				undefined, // experiments
-				undefined, // language
-				undefined, // rooIgnoreInstructions
-				undefined, // partialReadsEnabled
-			)
-
-			// Should contain default sections
-			expect(prompt).toContain("TOOL USE")
-			expect(prompt).toContain("CAPABILITIES")
-			expect(prompt).toContain("MODES")
-			expect(prompt).toContain("Test role definition")
-		},
-	)
-
-	it("should use file-based custom system prompt when available", async () => {
-		// Mock the readFile to return content from a file
-		const fileCustomSystemPrompt = "Custom system prompt from file"
-		// When called with utf-8 encoding, return a string
-		mockedFs.readFile.mockImplementation((filePath, options) => {
-			if (toPosix(filePath).includes(`.roo/system-prompt-${defaultModeSlug}`) && options === "utf-8") {
-				return Promise.resolve(fileCustomSystemPrompt)
-			}
-			return Promise.reject({ code: "ENOENT" })
-		})
-
-		const prompt = await SYSTEM_PROMPT(
-			mockContext,
-			"test/path", // Using a relative path without leading slash
-			false, // supportsImages
-			undefined, // mcpHub
-			undefined, // diffStrategy
-			undefined, // browserViewportSize
-			defaultModeSlug, // mode
-			undefined, // customModePrompts
-			undefined, // customModes
-			undefined, // globalCustomInstructions
-			undefined, // experiments
-			undefined, // language
-			undefined, // rooIgnoreInstructions
-			undefined, // partialReadsEnabled
-		)
-
-		// Should contain role definition and file-based system prompt
-		expect(prompt).toContain(modes[0].roleDefinition)
-		expect(prompt).toContain(fileCustomSystemPrompt)
-
-		// Should not contain any of the default sections
-		expect(prompt).not.toContain("CAPABILITIES")
-		expect(prompt).not.toContain("MODES")
-	})
-
-	it("should combine file-based system prompt with role definition and custom instructions", async () => {
-		// Mock the readFile to return content from a file
-		const fileCustomSystemPrompt = "Custom system prompt from file"
-		mockedFs.readFile.mockImplementation((filePath, options) => {
-			if (toPosix(filePath).includes(`.roo/system-prompt-${defaultModeSlug}`) && options === "utf-8") {
-				return Promise.resolve(fileCustomSystemPrompt)
-			}
-			return Promise.reject({ code: "ENOENT" })
-		})
-
-		// Define custom role definition
-		const customRoleDefinition = "Custom role definition"
-		const customModePrompts = {
-			[defaultModeSlug]: {
-				roleDefinition: customRoleDefinition,
-			},
-		}
-
-		const prompt = await SYSTEM_PROMPT(
-			mockContext,
-			"test/path", // Using a relative path without leading slash
-			false, // supportsImages
-			undefined, // mcpHub
-			undefined, // diffStrategy
-			undefined, // browserViewportSize
-			defaultModeSlug, // mode
-			customModePrompts, // customModePrompts
-			undefined, // customModes
-			undefined, // globalCustomInstructions
-			undefined, // experiments
-			undefined, // language
-			undefined, // rooIgnoreInstructions
-			undefined, // partialReadsEnabled
-		)
-
-		// Should contain custom role definition and file-based system prompt
-		expect(prompt).toContain(customRoleDefinition)
-		expect(prompt).toContain(fileCustomSystemPrompt)
-
-		// Should not contain any of the default sections
-		expect(prompt).not.toContain("CAPABILITIES")
-		expect(prompt).not.toContain("MODES")
-	})
-})

+ 0 - 134
src/core/prompts/sections/__tests__/custom-system-prompt.spec.ts

@@ -1,134 +0,0 @@
-// Mocks must come first, before imports
-
-vi.mock("fs/promises")
-
-// Then imports
-import type { Mock } from "vitest"
-import path from "path"
-import { readFile } from "fs/promises"
-import type { Mode } from "../../../../shared/modes" // Type-only import
-import { loadSystemPromptFile, PromptVariables } from "../custom-system-prompt"
-
-// Cast the mocked readFile to the correct Mock type
-const mockedReadFile = readFile as Mock<typeof readFile>
-
-describe("loadSystemPromptFile", () => {
-	// Corrected PromptVariables type and added mockMode
-	const mockVariables: PromptVariables = {
-		workspace: "/path/to/workspace",
-	}
-	const mockCwd = "/mock/cwd"
-	const mockMode: Mode = "test" // Use Mode type, e.g., 'test'
-	// Corrected expected file path format
-	const expectedFilePath = path.join(mockCwd, ".roo", `system-prompt-${mockMode}`)
-
-	beforeEach(() => {
-		// Clear mocks before each test
-		mockedReadFile.mockClear()
-	})
-
-	it("should return an empty string if the file does not exist (ENOENT)", async () => {
-		const error: NodeJS.ErrnoException = new Error("File not found")
-		error.code = "ENOENT"
-		mockedReadFile.mockRejectedValue(error)
-
-		// Added mockMode argument
-		const result = await loadSystemPromptFile(mockCwd, mockMode, mockVariables)
-
-		expect(result).toBe("")
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-
-	// Updated test: should re-throw unexpected errors
-	it("should re-throw unexpected errors from readFile", async () => {
-		const expectedError = new Error("Some other error")
-		mockedReadFile.mockRejectedValue(expectedError)
-
-		// Assert that the promise rejects with the specific error
-		await expect(loadSystemPromptFile(mockCwd, mockMode, mockVariables)).rejects.toThrow(expectedError)
-
-		// Verify readFile was still called correctly
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-
-	it("should return an empty string if the file content is empty", async () => {
-		mockedReadFile.mockResolvedValue("")
-
-		// Added mockMode argument
-		const result = await loadSystemPromptFile(mockCwd, mockMode, mockVariables)
-
-		expect(result).toBe("")
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-
-	// Updated test to only check workspace interpolation
-	it("should correctly interpolate workspace variable", async () => {
-		const template = "Workspace is: {{workspace}}"
-		mockedReadFile.mockResolvedValue(template)
-
-		// Added mockMode argument
-		const result = await loadSystemPromptFile(mockCwd, mockMode, mockVariables)
-
-		expect(result).toBe("Workspace is: /path/to/workspace")
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-
-	// Updated test for multiple occurrences of workspace
-	it("should handle multiple occurrences of the workspace variable", async () => {
-		const template = "Path: {{workspace}}/{{workspace}}"
-		mockedReadFile.mockResolvedValue(template)
-
-		// Added mockMode argument
-		const result = await loadSystemPromptFile(mockCwd, mockMode, mockVariables)
-
-		expect(result).toBe("Path: /path/to/workspace//path/to/workspace")
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-
-	// Updated test for mixed used/unused
-	it("should handle mixed used workspace and unused variables", async () => {
-		const template = "Workspace: {{workspace}}, Unused: {{unusedVar}}, Another: {{another}}"
-		mockedReadFile.mockResolvedValue(template)
-
-		// Added mockMode argument
-		const result = await loadSystemPromptFile(mockCwd, mockMode, mockVariables)
-
-		// Unused variables should remain untouched
-		expect(result).toBe("Workspace: /path/to/workspace, Unused: {{unusedVar}}, Another: {{another}}")
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-
-	// Test remains valid, just needs the mode argument and updated template
-	it("should handle templates with placeholders not present in variables", async () => {
-		const template = "Workspace: {{workspace}}, Missing: {{missingPlaceholder}}"
-		mockedReadFile.mockResolvedValue(template)
-
-		// Added mockMode argument
-		const result = await loadSystemPromptFile(mockCwd, mockMode, mockVariables)
-
-		expect(result).toBe("Workspace: /path/to/workspace, Missing: {{missingPlaceholder}}")
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-
-	// Removed the test for extra keys as PromptVariables is simple now
-
-	// Test remains valid, just needs the mode argument
-	it("should handle template with no variables", async () => {
-		const template = "This is a static prompt."
-		mockedReadFile.mockResolvedValue(template)
-
-		// Added mockMode argument
-		const result = await loadSystemPromptFile(mockCwd, mockMode, mockVariables)
-
-		expect(result).toBe("This is a static prompt.")
-		expect(mockedReadFile).toHaveBeenCalledTimes(1)
-		expect(mockedReadFile).toHaveBeenCalledWith(expectedFilePath, "utf-8")
-	})
-})

+ 0 - 87
src/core/prompts/sections/custom-system-prompt.ts

@@ -1,87 +0,0 @@
-import fs from "fs/promises"
-import path from "path"
-import { Mode } from "../../../shared/modes"
-import { fileExistsAtPath } from "../../../utils/fs"
-
-export type PromptVariables = {
-	workspace?: string
-	mode?: string
-	language?: string
-	shell?: string
-	operatingSystem?: string
-}
-
-function interpolatePromptContent(content: string, variables: PromptVariables): string {
-	let interpolatedContent = content
-	for (const key in variables) {
-		if (
-			Object.prototype.hasOwnProperty.call(variables, key) &&
-			variables[key as keyof PromptVariables] !== undefined
-		) {
-			const placeholder = new RegExp(`\\{\\{${key}\\}\\}`, "g")
-			interpolatedContent = interpolatedContent.replace(placeholder, variables[key as keyof PromptVariables]!)
-		}
-	}
-	return interpolatedContent
-}
-
-/**
- * Safely reads a file, returning an empty string if the file doesn't exist
- */
-async function safeReadFile(filePath: string): Promise<string> {
-	try {
-		const content = await fs.readFile(filePath, "utf-8")
-		// When reading with "utf-8" encoding, content should be a string
-		return content.trim()
-	} catch (err) {
-		const errorCode = (err as NodeJS.ErrnoException).code
-		if (!errorCode || !["ENOENT", "EISDIR"].includes(errorCode)) {
-			throw err
-		}
-		return ""
-	}
-}
-
-/**
- * Get the path to a system prompt file for a specific mode
- */
-export function getSystemPromptFilePath(cwd: string, mode: Mode): string {
-	return path.join(cwd, ".roo", `system-prompt-${mode}`)
-}
-
-/**
- * Loads custom system prompt from a file at .roo/system-prompt-[mode slug]
- * If the file doesn't exist, returns an empty string
- */
-export async function loadSystemPromptFile(cwd: string, mode: Mode, variables: PromptVariables): Promise<string> {
-	const filePath = getSystemPromptFilePath(cwd, mode)
-	const rawContent = await safeReadFile(filePath)
-	if (!rawContent) {
-		return ""
-	}
-	const interpolatedContent = interpolatePromptContent(rawContent, variables)
-	return interpolatedContent
-}
-
-/**
- * Ensures the .roo directory exists, creating it if necessary
- */
-export async function ensureRooDirectory(cwd: string): Promise<void> {
-	const rooDir = path.join(cwd, ".roo")
-
-	// Check if directory already exists
-	if (await fileExistsAtPath(rooDir)) {
-		return
-	}
-
-	// Create the directory
-	try {
-		await fs.mkdir(rooDir, { recursive: true })
-	} catch (err) {
-		// If directory already exists (race condition), ignore the error
-		const errorCode = (err as NodeJS.ErrnoException).code
-		if (errorCode !== "EEXIST") {
-			throw err
-		}
-	}
-}

+ 0 - 41
src/core/prompts/system.ts

@@ -1,5 +1,4 @@
 import * as vscode from "vscode"
 import * as vscode from "vscode"
-import * as os from "os"
 
 
 import { type ModeConfig, type PromptComponent, type CustomModePrompts, type TodoItem } from "@roo-code/types"
 import { type ModeConfig, type PromptComponent, type CustomModePrompts, type TodoItem } from "@roo-code/types"
 
 
@@ -12,8 +11,6 @@ import { McpHub } from "../../services/mcp/McpHub"
 import { CodeIndexManager } from "../../services/code-index/manager"
 import { CodeIndexManager } from "../../services/code-index/manager"
 import { SkillsManager } from "../../services/skills/SkillsManager"
 import { SkillsManager } from "../../services/skills/SkillsManager"
 
 
-import { PromptVariables, loadSystemPromptFile } from "./sections/custom-system-prompt"
-
 import type { SystemPromptSettings } from "./types"
 import type { SystemPromptSettings } from "./types"
 import {
 import {
 	getRulesSection,
 	getRulesSection,
@@ -136,50 +133,12 @@ export const SYSTEM_PROMPT = async (
 		throw new Error("Extension context is required for generating system prompt")
 		throw new Error("Extension context is required for generating system prompt")
 	}
 	}
 
 
-	// Try to load custom system prompt from file
-	const variablesForPrompt: PromptVariables = {
-		workspace: cwd,
-		mode: mode,
-		language: language ?? formatLanguage(vscode.env.language),
-		shell: vscode.env.shell,
-		operatingSystem: os.type(),
-	}
-	const fileCustomSystemPrompt = await loadSystemPromptFile(cwd, mode, variablesForPrompt)
-
 	// Check if it's a custom mode
 	// Check if it's a custom mode
 	const promptComponent = getPromptComponent(customModePrompts, mode)
 	const promptComponent = getPromptComponent(customModePrompts, mode)
 
 
 	// Get full mode config from custom modes or fall back to built-in modes
 	// Get full mode config from custom modes or fall back to built-in modes
 	const currentMode = getModeBySlug(mode, customModes) || modes.find((m) => m.slug === mode) || modes[0]
 	const currentMode = getModeBySlug(mode, customModes) || modes.find((m) => m.slug === mode) || modes[0]
 
 
-	// If a file-based custom system prompt exists, use it
-	if (fileCustomSystemPrompt) {
-		const { roleDefinition, baseInstructions: baseInstructionsForFile } = getModeSelection(
-			mode,
-			promptComponent,
-			customModes,
-		)
-
-		const customInstructions = await addCustomInstructions(
-			baseInstructionsForFile,
-			globalCustomInstructions || "",
-			cwd,
-			mode,
-			{
-				language: language ?? formatLanguage(vscode.env.language),
-				rooIgnoreInstructions,
-				settings,
-			},
-		)
-
-		// For file-based prompts, don't include the tool sections
-		return `${roleDefinition}
-
-${fileCustomSystemPrompt}
-
-${customInstructions}`
-	}
-
 	return generatePrompt(
 	return generatePrompt(
 		context,
 		context,
 		cwd,
 		cwd,

+ 19 - 0
src/core/task/__tests__/Task.spec.ts

@@ -65,6 +65,8 @@ vi.mock("fs/promises", async (importOriginal) => {
 		}),
 		}),
 		unlink: vi.fn().mockResolvedValue(undefined),
 		unlink: vi.fn().mockResolvedValue(undefined),
 		rmdir: vi.fn().mockResolvedValue(undefined),
 		rmdir: vi.fn().mockResolvedValue(undefined),
+		stat: vi.fn().mockRejectedValue({ code: "ENOENT" }),
+		readdir: vi.fn().mockResolvedValue([]),
 	}
 	}
 
 
 	return {
 	return {
@@ -962,9 +964,15 @@ describe("Cline", () => {
 				mockProvider = {
 				mockProvider = {
 					context: {
 					context: {
 						globalStorageUri: { fsPath: "/test/storage" },
 						globalStorageUri: { fsPath: "/test/storage" },
+						globalState: {
+							get: vi.fn().mockImplementation(() => undefined),
+							update: vi.fn().mockResolvedValue(undefined),
+							keys: vi.fn().mockReturnValue([]),
+						},
 					},
 					},
 					getState: vi.fn().mockResolvedValue({
 					getState: vi.fn().mockResolvedValue({
 						apiConfiguration: mockApiConfig,
 						apiConfiguration: mockApiConfig,
+						mcpEnabled: false,
 					}),
 					}),
 					getMcpHub: vi.fn().mockReturnValue(undefined),
 					getMcpHub: vi.fn().mockReturnValue(undefined),
 					getSkillsManager: vi.fn().mockReturnValue(undefined),
 					getSkillsManager: vi.fn().mockReturnValue(undefined),
@@ -996,6 +1004,7 @@ describe("Cline", () => {
 					task: "parent task",
 					task: "parent task",
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(parent as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				// Mock the API stream response
 				// Mock the API stream response
 				const mockStream = {
 				const mockStream = {
@@ -1032,6 +1041,7 @@ describe("Cline", () => {
 					rootTask: parent,
 					rootTask: parent,
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(child as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				// Spy on child.say to verify the emitted message type
 				// Spy on child.say to verify the emitted message type
 				const saySpy = vi.spyOn(child, "say")
 				const saySpy = vi.spyOn(child, "say")
@@ -1083,6 +1093,7 @@ describe("Cline", () => {
 					task: "parent task",
 					task: "parent task",
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(parent as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				// Mock the API stream response
 				// Mock the API stream response
 				const mockStream = {
 				const mockStream = {
@@ -1121,6 +1132,7 @@ describe("Cline", () => {
 					rootTask: parent,
 					rootTask: parent,
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(child as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				vi.spyOn(child.api, "createMessage").mockReturnValue(mockStream)
 				vi.spyOn(child.api, "createMessage").mockReturnValue(mockStream)
 
 
@@ -1143,6 +1155,7 @@ describe("Cline", () => {
 					task: "parent task",
 					task: "parent task",
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(parent as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				// Mock the API stream response
 				// Mock the API stream response
 				const mockStream = {
 				const mockStream = {
@@ -1176,6 +1189,7 @@ describe("Cline", () => {
 					rootTask: parent,
 					rootTask: parent,
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(child1 as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				vi.spyOn(child1.api, "createMessage").mockReturnValue(mockStream)
 				vi.spyOn(child1.api, "createMessage").mockReturnValue(mockStream)
 
 
@@ -1199,6 +1213,7 @@ describe("Cline", () => {
 					rootTask: parent,
 					rootTask: parent,
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(child2 as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				vi.spyOn(child2.api, "createMessage").mockReturnValue(mockStream)
 				vi.spyOn(child2.api, "createMessage").mockReturnValue(mockStream)
 
 
@@ -1215,6 +1230,7 @@ describe("Cline", () => {
 				mockApiConfig.rateLimitSeconds = 0
 				mockApiConfig.rateLimitSeconds = 0
 				mockProvider.getState.mockResolvedValue({
 				mockProvider.getState.mockResolvedValue({
 					apiConfiguration: mockApiConfig,
 					apiConfiguration: mockApiConfig,
+					mcpEnabled: false,
 				})
 				})
 
 
 				// Create parent task
 				// Create parent task
@@ -1224,6 +1240,7 @@ describe("Cline", () => {
 					task: "parent task",
 					task: "parent task",
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(parent as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				// Mock the API stream response
 				// Mock the API stream response
 				const mockStream = {
 				const mockStream = {
@@ -1257,6 +1274,7 @@ describe("Cline", () => {
 					rootTask: parent,
 					rootTask: parent,
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(child as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				vi.spyOn(child.api, "createMessage").mockReturnValue(mockStream)
 				vi.spyOn(child.api, "createMessage").mockReturnValue(mockStream)
 
 
@@ -1276,6 +1294,7 @@ describe("Cline", () => {
 					task: "test task",
 					task: "test task",
 					startTask: false,
 					startTask: false,
 				})
 				})
+				vi.spyOn(task as any, "getSystemPrompt").mockResolvedValue("mock system prompt")
 
 
 				// Mock the API stream response
 				// Mock the API stream response
 				const mockStream = {
 				const mockStream = {

+ 1 - 20
src/core/webview/ClineProvider.ts

@@ -94,7 +94,6 @@ import { ContextProxy } from "../config/ContextProxy"
 import { ProviderSettingsManager } from "../config/ProviderSettingsManager"
 import { ProviderSettingsManager } from "../config/ProviderSettingsManager"
 import { CustomModesManager } from "../config/CustomModesManager"
 import { CustomModesManager } from "../config/CustomModesManager"
 import { Task } from "../task/Task"
 import { Task } from "../task/Task"
-import { getSystemPromptFilePath } from "../prompts/sections/custom-system-prompt"
 
 
 import { webviewMessageHandler } from "./webviewMessageHandler"
 import { webviewMessageHandler } from "./webviewMessageHandler"
 import type { ClineMessage, TodoItem } from "@roo-code/types"
 import type { ClineMessage, TodoItem } from "@roo-code/types"
@@ -2018,14 +2017,6 @@ export class ClineProvider
 		}
 		}
 	}
 	}
 
 
-	/**
-	 * Checks if there is a file-based system prompt override for the given mode
-	 */
-	async hasFileBasedSystemPromptOverride(mode: Mode): Promise<boolean> {
-		const promptFilePath = getSystemPromptFilePath(this.cwd, mode)
-		return await fileExistsAtPath(promptFilePath)
-	}
-
 	/**
 	/**
 	 * Merges allowed commands from global state and workspace configuration
 	 * Merges allowed commands from global state and workspace configuration
 	 * with proper validation and deduplication
 	 * with proper validation and deduplication
@@ -2204,10 +2195,6 @@ export class ClineProvider
 		const mergedDeniedCommands = this.mergeDeniedCommands(deniedCommands)
 		const mergedDeniedCommands = this.mergeDeniedCommands(deniedCommands)
 		const cwd = this.cwd
 		const cwd = this.cwd
 
 
-		// Check if there's a system prompt override for the current mode
-		const currentMode = mode ?? defaultModeSlug
-		const hasSystemPromptOverride = await this.hasFileBasedSystemPromptOverride(currentMode)
-
 		return {
 		return {
 			version: this.context.extension?.packageJSON?.version ?? "",
 			version: this.context.extension?.packageJSON?.version ?? "",
 			apiConfiguration,
 			apiConfiguration,
@@ -2288,7 +2275,6 @@ export class ClineProvider
 			maxImageFileSize: maxImageFileSize ?? 5,
 			maxImageFileSize: maxImageFileSize ?? 5,
 			maxTotalImageSize: maxTotalImageSize ?? 20,
 			maxTotalImageSize: maxTotalImageSize ?? 20,
 			settingsImportedAt: this.settingsImportedAt,
 			settingsImportedAt: this.settingsImportedAt,
-			hasSystemPromptOverride,
 			historyPreviewCollapsed: historyPreviewCollapsed ?? false,
 			historyPreviewCollapsed: historyPreviewCollapsed ?? false,
 			reasoningBlockCollapsed: reasoningBlockCollapsed ?? true,
 			reasoningBlockCollapsed: reasoningBlockCollapsed ?? true,
 			enterBehavior: enterBehavior ?? "send",
 			enterBehavior: enterBehavior ?? "send",
@@ -2358,12 +2344,7 @@ export class ClineProvider
 	async getState(): Promise<
 	async getState(): Promise<
 		Omit<
 		Omit<
 			ExtensionState,
 			ExtensionState,
-			| "clineMessages"
-			| "renderContext"
-			| "hasOpenedModeSelector"
-			| "version"
-			| "shouldShowAnnouncement"
-			| "hasSystemPromptOverride"
+			"clineMessages" | "renderContext" | "hasOpenedModeSelector" | "version" | "shouldShowAnnouncement"
 		>
 		>
 	> {
 	> {
 		const stateValues = this.contextProxy.getValues()
 		const stateValues = this.contextProxy.getValues()

+ 0 - 8
webview-ui/src/components/chat/ChatView.tsx

@@ -44,7 +44,6 @@ import ChatRow from "./ChatRow"
 import WarningRow from "./WarningRow"
 import WarningRow from "./WarningRow"
 import { ChatTextArea } from "./ChatTextArea"
 import { ChatTextArea } from "./ChatTextArea"
 import TaskHeader from "./TaskHeader"
 import TaskHeader from "./TaskHeader"
-import SystemPromptWarning from "./SystemPromptWarning"
 import ProfileViolationWarning from "./ProfileViolationWarning"
 import ProfileViolationWarning from "./ProfileViolationWarning"
 import { CheckpointWarning } from "./CheckpointWarning"
 import { CheckpointWarning } from "./CheckpointWarning"
 import { QueuedMessages } from "./QueuedMessages"
 import { QueuedMessages } from "./QueuedMessages"
@@ -92,7 +91,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
 		alwaysAllowModeSwitch,
 		alwaysAllowModeSwitch,
 		customModes,
 		customModes,
 		telemetrySetting,
 		telemetrySetting,
-		hasSystemPromptOverride,
 		soundEnabled,
 		soundEnabled,
 		soundVolume,
 		soundVolume,
 		cloudIsAuthenticated,
 		cloudIsAuthenticated,
@@ -1707,12 +1705,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
 						todos={latestTodos}
 						todos={latestTodos}
 					/>
 					/>
 
 
-					{hasSystemPromptOverride && (
-						<div className="px-3">
-							<SystemPromptWarning />
-						</div>
-					)}
-
 					{checkpointWarning && (
 					{checkpointWarning && (
 						<div className="px-3">
 						<div className="px-3">
 							<CheckpointWarning warning={checkpointWarning} />
 							<CheckpointWarning warning={checkpointWarning} />

+ 0 - 17
webview-ui/src/components/chat/SystemPromptWarning.tsx

@@ -1,17 +0,0 @@
-import React from "react"
-import { useAppTranslation } from "@/i18n/TranslationContext"
-
-export const SystemPromptWarning: React.FC = () => {
-	const { t } = useAppTranslation()
-
-	return (
-		<div className="flex items-center px-4 py-2 mb-2 text-sm rounded bg-vscode-editorWarning-foreground text-vscode-editor-background">
-			<div className="flex items-center justify-center w-5 h-5 mr-2">
-				<span className="codicon codicon-warning" />
-			</div>
-			<span>{t("chat:systemPromptWarning")}</span>
-		</div>
-	)
-}
-
-export default SystemPromptWarning

+ 0 - 62
webview-ui/src/components/modes/ModesView.tsx

@@ -92,7 +92,6 @@ const ModesView = () => {
 	const [isToolsEditMode, setIsToolsEditMode] = useState(false)
 	const [isToolsEditMode, setIsToolsEditMode] = useState(false)
 	const [showConfigMenu, setShowConfigMenu] = useState(false)
 	const [showConfigMenu, setShowConfigMenu] = useState(false)
 	const [isCreateModeDialogOpen, setIsCreateModeDialogOpen] = useState(false)
 	const [isCreateModeDialogOpen, setIsCreateModeDialogOpen] = useState(false)
-	const [isSystemPromptDisclosureOpen, setIsSystemPromptDisclosureOpen] = useState(false)
 	const [isExporting, setIsExporting] = useState(false)
 	const [isExporting, setIsExporting] = useState(false)
 	const [isImporting, setIsImporting] = useState(false)
 	const [isImporting, setIsImporting] = useState(false)
 	const [showImportDialog, setShowImportDialog] = useState(false)
 	const [showImportDialog, setShowImportDialog] = useState(false)
@@ -1328,67 +1327,6 @@ const ModesView = () => {
 							</Button>
 							</Button>
 						</StandardTooltip>
 						</StandardTooltip>
 					</div>
 					</div>
-
-					{/* Advanced Features Disclosure */}
-					<div className="mt-4">
-						<button
-							onClick={() => setIsSystemPromptDisclosureOpen(!isSystemPromptDisclosureOpen)}
-							className="flex items-center text-xs text-vscode-foreground hover:text-vscode-textLink-foreground focus:outline-none"
-							aria-expanded={isSystemPromptDisclosureOpen}>
-							<span
-								className={`codicon codicon-${isSystemPromptDisclosureOpen ? "chevron-down" : "chevron-right"} mr-1`}></span>
-							<span>{t("prompts:advanced.title")}</span>
-						</button>
-
-						{isSystemPromptDisclosureOpen && (
-							<div className="mt-2 ml-5 space-y-4">
-								{/* Override System Prompt Section */}
-								<div>
-									<h4 className="text-xs font-semibold text-vscode-foreground mb-2">
-										Override System Prompt
-									</h4>
-									<div className="text-xs text-vscode-descriptionForeground">
-										<Trans
-											i18nKey="prompts:advancedSystemPrompt.description"
-											values={{
-												slug: getCurrentMode()?.slug || "code",
-											}}
-											components={{
-												span: (
-													<span
-														className="text-vscode-textLink-foreground cursor-pointer underline"
-														onClick={() => {
-															const currentMode = getCurrentMode()
-															if (!currentMode) return
-
-															vscode.postMessage({
-																type: "openFile",
-																text: `./.roo/system-prompt-${currentMode.slug}`,
-																values: {
-																	create: true,
-																	content: "",
-																},
-															})
-														}}
-													/>
-												),
-												"1": (
-													<VSCodeLink
-														href={buildDocLink(
-															"features/footgun-prompting",
-															"prompts_advanced_system_prompt",
-														)}
-														style={{ display: "inline" }}
-														aria-label="Read important information about overriding system prompts"></VSCodeLink>
-												),
-												"2": <strong />,
-											}}
-										/>
-									</div>
-								</div>
-							</div>
-						)}
-					</div>
 				</div>
 				</div>
 
 
 				<div className="pb-5">
 				<div className="pb-5">

+ 0 - 1
webview-ui/src/context/ExtensionStateContext.tsx

@@ -37,7 +37,6 @@ export interface ExtensionStateContextType extends ExtensionState {
 	showWelcome: boolean
 	showWelcome: boolean
 	theme: any
 	theme: any
 	mcpServers: McpServer[]
 	mcpServers: McpServer[]
-	hasSystemPromptOverride?: boolean
 	currentCheckpoint?: string
 	currentCheckpoint?: string
 	currentTaskTodos?: TodoItem[] // Initial todos for the current task
 	currentTaskTodos?: TodoItem[] // Initial todos for the current task
 	filePaths: string[]
 	filePaths: string[]

+ 0 - 1
webview-ui/src/i18n/locales/ca/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Copiar codi"
 			"copy_code": "Copiar codi"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "ADVERTÈNCIA: S'ha activat una substitució personalitzada d'instruccions del sistema. Això pot trencar greument la funcionalitat i causar un comportament impredictible.",
 	"profileViolationWarning": "El perfil actual no és compatible amb la configuració de la teva organització",
 	"profileViolationWarning": "El perfil actual no és compatible amb la configuració de la teva organització",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Advertència d'execució d'ordres",
 		"title": "Advertència d'execució d'ordres",

+ 0 - 7
webview-ui/src/i18n/locales/ca/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Només disponible en aquest espai de treball. Si el mode exportat contenia fitxers de regles, es tornaran a crear a la carpeta .roo/rules-{slug}/."
 			"description": "Només disponible en aquest espai de treball. Si el mode exportat contenia fitxers de regles, es tornaran a crear a la carpeta .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Avançat"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Instruccions personalitzades per a tots els modes",
 		"title": "Instruccions personalitzades per a tots els modes",
 		"description": "Aquestes instruccions s'apliquen a tots els modes. Proporcionen un conjunt bàsic de comportaments que es poden millorar amb instruccions específiques de cada mode a continuació. <0>Més informació</0>",
 		"description": "Aquestes instruccions s'apliquen a tots els modes. Proporcionen un conjunt bàsic de comportaments que es poden millorar amb instruccions específiques de cada mode a continuació. <0>Més informació</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Avançat: Sobreescriure prompt del sistema",
-		"description": "<2>⚠️ Avís:</2> Aquesta funcionalitat avançada eludeix les salvaguardes. <1>LLEGIU AIXÒ ABANS D'UTILITZAR!</1>Sobreescriviu el prompt del sistema per defecte creant un fitxer a <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Crear nou mode",
 		"title": "Crear nou mode",
 		"close": "Tancar",
 		"close": "Tancar",

+ 0 - 1
webview-ui/src/i18n/locales/de/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Code kopieren"
 			"copy_code": "Code kopieren"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "WARNUNG: Benutzerdefinierte Systemaufforderung aktiv. Dies kann die Funktionalität erheblich beeinträchtigen und zu unvorhersehbarem Verhalten führen.",
 	"profileViolationWarning": "Das aktuelle Profil ist nicht kompatibel mit den Einstellungen deiner Organisation",
 	"profileViolationWarning": "Das aktuelle Profil ist nicht kompatibel mit den Einstellungen deiner Organisation",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Befehlsausführungswarnung",
 		"title": "Befehlsausführungswarnung",

+ 0 - 7
webview-ui/src/i18n/locales/de/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Nur in diesem Arbeitsbereich verfügbar. Wenn der exportierte Modus Regeldateien enthielt, werden diese im Ordner .roo/rules-{slug}/ neu erstellt."
 			"description": "Nur in diesem Arbeitsbereich verfügbar. Wenn der exportierte Modus Regeldateien enthielt, werden diese im Ordner .roo/rules-{slug}/ neu erstellt."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Erweitert"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Benutzerdefinierte Anweisungen für alle Modi",
 		"title": "Benutzerdefinierte Anweisungen für alle Modi",
 		"description": "Diese Anweisungen gelten für alle Modi. Sie bieten einen grundlegenden Satz von Verhaltensweisen, die durch modusspezifische Anweisungen unten erweitert werden können. <0>Mehr erfahren</0>",
 		"description": "Diese Anweisungen gelten für alle Modi. Sie bieten einen grundlegenden Satz von Verhaltensweisen, die durch modusspezifische Anweisungen unten erweitert werden können. <0>Mehr erfahren</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Erweitert: System-Prompt überschreiben",
-		"description": "<2>⚠️ Warnung:</2> Diese erweiterte Funktion umgeht Sicherheitsvorkehrungen. <1>LESEN SIE DIES VOR DER VERWENDUNG!</1>Überschreiben Sie den Standard-System-Prompt, indem Sie eine Datei unter <span>.roo/system-prompt-{{slug}}</span> erstellen."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Neuen Modus erstellen",
 		"title": "Neuen Modus erstellen",
 		"close": "Schließen",
 		"close": "Schließen",

+ 2 - 3
webview-ui/src/i18n/locales/en/chat.json

@@ -174,14 +174,14 @@
 		"rateLimitWait": "Rate limiting",
 		"rateLimitWait": "Rate limiting",
 		"errorTitle": "Provider Error {{code}}",
 		"errorTitle": "Provider Error {{code}}",
 		"errorMessage": {
 		"errorMessage": {
-			"docs": "Docs",
-			"goToSettings": "Settings",
 			"400": "The provider couldn't process the request as made. Stop the task and try a different approach.",
 			"400": "The provider couldn't process the request as made. Stop the task and try a different approach.",
 			"401": "Couldn't authenticate with provider. Please check your API key configuration.",
 			"401": "Couldn't authenticate with provider. Please check your API key configuration.",
 			"402": "You seem to have run out of funds/credits in your account. Go to your provider and add more to continue.",
 			"402": "You seem to have run out of funds/credits in your account. Go to your provider and add more to continue.",
 			"403": "Unauthorized. Your API key is valid, but the provider refused to complete this request.",
 			"403": "Unauthorized. Your API key is valid, but the provider refused to complete this request.",
 			"429": "Too many requests. You're being rate-limited by the provider. Please wait a bit before your next API call.",
 			"429": "Too many requests. You're being rate-limited by the provider. Please wait a bit before your next API call.",
 			"500": "Provider server error. Something is wrong on the provider side, there's nothing wrong with your request.",
 			"500": "Provider server error. Something is wrong on the provider side, there's nothing wrong with your request.",
+			"docs": "Docs",
+			"goToSettings": "Settings",
 			"connection": "Connection error. Make sure you have a working internet connection.",
 			"connection": "Connection error. Make sure you have a working internet connection.",
 			"unknown": "Unknown API error. Please contact Roo Code support.",
 			"unknown": "Unknown API error. Please contact Roo Code support.",
 			"claudeCodeNotAuthenticated": "You need to sign in to use Claude Code. Go to Settings and click \"Sign in to Claude Code\" to authenticate."
 			"claudeCodeNotAuthenticated": "You need to sign in to use Claude Code. Go to Settings and click \"Sign in to Claude Code\" to authenticate."
@@ -435,7 +435,6 @@
 			"copy_code": "Copy code"
 			"copy_code": "Copy code"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "WARNING: Custom system prompt override active. This can severely break functionality and cause unpredictable behavior.",
 	"profileViolationWarning": "The current profile isn't compatible with your organization's settings",
 	"profileViolationWarning": "The current profile isn't compatible with your organization's settings",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Command Execution Warning",
 		"title": "Command Execution Warning",

+ 0 - 7
webview-ui/src/i18n/locales/en/prompts.json

@@ -70,9 +70,6 @@
 			"description": "Only available in this workspace. If the exported mode contained rules files, they will be recreated in .roo/rules-{slug}/ folder."
 			"description": "Only available in this workspace. If the exported mode contained rules files, they will be recreated in .roo/rules-{slug}/ folder."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Advanced: Override System Prompt"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Custom Instructions for All Modes",
 		"title": "Custom Instructions for All Modes",
 		"description": "These instructions apply to all modes. They provide a base set of behaviors that can be enhanced by mode-specific instructions below. <0>Learn more</0>",
 		"description": "These instructions apply to all modes. They provide a base set of behaviors that can be enhanced by mode-specific instructions below. <0>Learn more</0>",
@@ -145,10 +142,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Advanced: Override System Prompt",
-		"description": "<2>⚠️ Warning:</2> This advanced feature bypasses safeguards. <1>READ THIS BEFORE USING!</1>Override the default system prompt by creating a file at <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Create New Mode",
 		"title": "Create New Mode",
 		"close": "Close",
 		"close": "Close",

+ 0 - 1
webview-ui/src/i18n/locales/es/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Copiar código"
 			"copy_code": "Copiar código"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "ADVERTENCIA: Anulación de instrucciones del sistema personalizada activa. Esto puede romper gravemente la funcionalidad y causar un comportamiento impredecible.",
 	"profileViolationWarning": "El perfil actual no es compatible con la configuración de tu organización",
 	"profileViolationWarning": "El perfil actual no es compatible con la configuración de tu organización",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Advertencia de ejecución de comandos",
 		"title": "Advertencia de ejecución de comandos",

+ 0 - 7
webview-ui/src/i18n/locales/es/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Solo disponible en este espacio de trabajo. Si el modo exportado contenía archivos de reglas, se volverán a crear en la carpeta .roo/rules-{slug}/."
 			"description": "Solo disponible en este espacio de trabajo. Si el modo exportado contenía archivos de reglas, se volverán a crear en la carpeta .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Avanzado"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Instrucciones personalizadas para todos los modos",
 		"title": "Instrucciones personalizadas para todos los modos",
 		"description": "Estas instrucciones se aplican a todos los modos. Proporcionan un conjunto base de comportamientos que pueden ser mejorados por instrucciones específicas de cada modo a continuación. <0>Más información</0>",
 		"description": "Estas instrucciones se aplican a todos los modos. Proporcionan un conjunto base de comportamientos que pueden ser mejorados por instrucciones específicas de cada modo a continuación. <0>Más información</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Avanzado: Anular solicitud del sistema",
-		"description": "<2>⚠️ Advertencia:</2> Esta función avanzada omite las medidas de seguridad. <1>¡LEE ESTO ANTES DE USAR!</1>Anula la solicitud del sistema predeterminada creando un archivo en <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Crear nuevo modo",
 		"title": "Crear nuevo modo",
 		"close": "Cerrar",
 		"close": "Cerrar",

+ 0 - 1
webview-ui/src/i18n/locales/fr/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Copier le code"
 			"copy_code": "Copier le code"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "AVERTISSEMENT : Remplacement d'instructions système personnalisées actif. Cela peut gravement perturber la fonctionnalité et provoquer un comportement imprévisible.",
 	"profileViolationWarning": "Le profil actuel n'est pas compatible avec les paramètres de votre organisation",
 	"profileViolationWarning": "Le profil actuel n'est pas compatible avec les paramètres de votre organisation",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Avertissement d'exécution de commande",
 		"title": "Avertissement d'exécution de commande",

+ 0 - 7
webview-ui/src/i18n/locales/fr/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Disponible uniquement dans cet espace de travail. Si le mode exporté contenait des fichiers de règles, ils seront recréés dans le dossier .roo/rules-{slug}/."
 			"description": "Disponible uniquement dans cet espace de travail. Si le mode exporté contenait des fichiers de règles, ils seront recréés dans le dossier .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Avancé"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Instructions personnalisées pour tous les modes",
 		"title": "Instructions personnalisées pour tous les modes",
 		"description": "Ces instructions s'appliquent à tous les modes. Elles fournissent un ensemble de comportements de base qui peuvent être améliorés par des instructions spécifiques au mode ci-dessous. <0>En savoir plus</0>",
 		"description": "Ces instructions s'appliquent à tous les modes. Elles fournissent un ensemble de comportements de base qui peuvent être améliorés par des instructions spécifiques au mode ci-dessous. <0>En savoir plus</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Avancé : Remplacer le prompt système",
-		"description": "<2>⚠️ Attention :</2> Cette fonctionnalité avancée contourne les mesures de protection. <1>LISEZ CECI AVANT UTILISATION !</1>Remplacez le prompt système par défaut en créant un fichier à l'emplacement <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Créer un nouveau mode",
 		"title": "Créer un nouveau mode",
 		"close": "Fermer",
 		"close": "Fermer",

+ 0 - 1
webview-ui/src/i18n/locales/hi/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "कोड कॉपी करें"
 			"copy_code": "कोड कॉपी करें"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "चेतावनी: कस्टम सिस्टम प्रॉम्प्ट ओवरराइड सक्रिय है। यह कार्यक्षमता को गंभीर रूप से बाधित कर सकता है और अनियमित व्यवहार का कारण बन सकता है.",
 	"profileViolationWarning": "वर्तमान प्रोफ़ाइल आपके संगठन की सेटिंग्स के साथ संगत नहीं है",
 	"profileViolationWarning": "वर्तमान प्रोफ़ाइल आपके संगठन की सेटिंग्स के साथ संगत नहीं है",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "कमांड निष्पादन चेतावनी",
 		"title": "कमांड निष्पादन चेतावनी",

+ 0 - 7
webview-ui/src/i18n/locales/hi/prompts.json

@@ -71,9 +71,6 @@
 			"description": "केवल इस कार्यक्षेत्र में उपलब्ध। यदि निर्यात किए गए मोड में नियम फाइलें थीं, तो उन्हें .roo/rules-{slug}/ फ़ोल्डर में फिर से बनाया जाएगा।"
 			"description": "केवल इस कार्यक्षेत्र में उपलब्ध। यदि निर्यात किए गए मोड में नियम फाइलें थीं, तो उन्हें .roo/rules-{slug}/ फ़ोल्डर में फिर से बनाया जाएगा।"
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "उन्नत"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "सभी मोड्स के लिए कस्टम निर्देश",
 		"title": "सभी मोड्स के लिए कस्टम निर्देश",
 		"description": "ये निर्देश सभी मोड्स पर लागू होते हैं। वे व्यवहारों का एक आधार सेट प्रदान करते हैं जिन्हें नीचे दिए गए मोड-विशिष्ट निर्देशों द्वारा बढ़ाया जा सकता है। <0>और जानें</0>",
 		"description": "ये निर्देश सभी मोड्स पर लागू होते हैं। वे व्यवहारों का एक आधार सेट प्रदान करते हैं जिन्हें नीचे दिए गए मोड-विशिष्ट निर्देशों द्वारा बढ़ाया जा सकता है। <0>और जानें</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "उन्नत: सिस्टम प्रॉम्प्ट ओवरराइड करें",
-		"description": "<2>⚠️ चेतावनी:</2> यह उन्नत सुविधा सुरक्षा उपायों को दरकिनार करती है। <1>उपयोग करने से पहले इसे पढ़ें!</1>अपने वर्कस्पेस में <span>.roo/system-prompt-{{slug}}</span> पर एक फ़ाइल बनाकर डिफ़ॉल्ट सिस्टम प्रॉम्प्ट को ओवरराइड करें।"
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "नया मोड बनाएँ",
 		"title": "नया मोड बनाएँ",
 		"close": "बंद करें",
 		"close": "बंद करें",

+ 0 - 1
webview-ui/src/i18n/locales/id/chat.json

@@ -445,7 +445,6 @@
 			"copy_code": "Salin kode"
 			"copy_code": "Salin kode"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "PERINGATAN: Override system prompt kustom aktif. Ini dapat merusak fungsionalitas secara serius dan menyebabkan perilaku yang tidak terduga.",
 	"profileViolationWarning": "Profil saat ini tidak kompatibel dengan pengaturan organisasi kamu",
 	"profileViolationWarning": "Profil saat ini tidak kompatibel dengan pengaturan organisasi kamu",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Peringatan Eksekusi Perintah",
 		"title": "Peringatan Eksekusi Perintah",

+ 0 - 7
webview-ui/src/i18n/locales/id/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Hanya tersedia di ruang kerja ini. Jika mode yang diekspor berisi file aturan, file tersebut akan dibuat ulang di folder .roo/rules-{slug}/."
 			"description": "Hanya tersedia di ruang kerja ini. Jika mode yang diekspor berisi file aturan, file tersebut akan dibuat ulang di folder .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Lanjutan"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Instruksi Kustom untuk Semua Mode",
 		"title": "Instruksi Kustom untuk Semua Mode",
 		"description": "Instruksi ini berlaku untuk semua mode. Mereka menyediakan set dasar perilaku yang dapat ditingkatkan oleh instruksi khusus mode di bawah. <0>Pelajari lebih lanjut</0>",
 		"description": "Instruksi ini berlaku untuk semua mode. Mereka menyediakan set dasar perilaku yang dapat ditingkatkan oleh instruksi khusus mode di bawah. <0>Pelajari lebih lanjut</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Lanjutan: Override System Prompt",
-		"description": "<2>⚠️ Peringatan:</2> Fitur lanjutan ini melewati pengamanan. <1>BACA INI SEBELUM MENGGUNAKAN!</1>Override system prompt default dengan membuat file di <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Buat Mode Baru",
 		"title": "Buat Mode Baru",
 		"close": "Tutup",
 		"close": "Tutup",

+ 0 - 1
webview-ui/src/i18n/locales/it/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Copia codice"
 			"copy_code": "Copia codice"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "ATTENZIONE: Sovrascrittura personalizzata delle istruzioni di sistema attiva. Questo può compromettere gravemente le funzionalità e causare comportamenti imprevedibili.",
 	"profileViolationWarning": "Il profilo corrente non è compatibile con le impostazioni della tua organizzazione",
 	"profileViolationWarning": "Il profilo corrente non è compatibile con le impostazioni della tua organizzazione",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Avviso di esecuzione comando",
 		"title": "Avviso di esecuzione comando",

+ 0 - 7
webview-ui/src/i18n/locales/it/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Disponibile solo in questo spazio di lavoro. Se la modalità esportata conteneva file di regole, verranno ricreati nella cartella .roo/rules-{slug}/."
 			"description": "Disponibile solo in questo spazio di lavoro. Se la modalità esportata conteneva file di regole, verranno ricreati nella cartella .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Avanzato"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Istruzioni personalizzate per tutte le modalità",
 		"title": "Istruzioni personalizzate per tutte le modalità",
 		"description": "Queste istruzioni si applicano a tutte le modalità. Forniscono un insieme base di comportamenti che possono essere migliorati dalle istruzioni specifiche per modalità qui sotto. <0>Scopri di più</0>",
 		"description": "Queste istruzioni si applicano a tutte le modalità. Forniscono un insieme base di comportamenti che possono essere migliorati dalle istruzioni specifiche per modalità qui sotto. <0>Scopri di più</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Avanzato: Sovrascrivi prompt di sistema",
-		"description": "<2>⚠️ Attenzione:</2> Questa funzionalità avanzata bypassa le misure di sicurezza. <1>LEGGI QUESTO PRIMA DI USARE!</1>Sovrascrivi il prompt di sistema predefinito creando un file in <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Crea nuova modalità",
 		"title": "Crea nuova modalità",
 		"close": "Chiudi",
 		"close": "Chiudi",

+ 0 - 1
webview-ui/src/i18n/locales/ja/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "コードをコピー"
 			"copy_code": "コードをコピー"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "警告:カスタムシステムプロンプトの上書きが有効です。これにより機能が深刻に損なわれ、予測不可能な動作が発生する可能性があります。",
 	"profileViolationWarning": "現在のプロファイルは組織の設定と互換性がありません",
 	"profileViolationWarning": "現在のプロファイルは組織の設定と互換性がありません",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "コマンド実行警告",
 		"title": "コマンド実行警告",

+ 0 - 7
webview-ui/src/i18n/locales/ja/prompts.json

@@ -71,9 +71,6 @@
 			"description": "このワークスペースでのみ利用可能です。エクスポートされたモードにルールファイルが含まれていた場合、それらは.roo/rules-{slug}/フォルダに再作成されます。"
 			"description": "このワークスペースでのみ利用可能です。エクスポートされたモードにルールファイルが含まれていた場合、それらは.roo/rules-{slug}/フォルダに再作成されます。"
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "詳細設定"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "すべてのモードのカスタム指示",
 		"title": "すべてのモードのカスタム指示",
 		"description": "これらの指示はすべてのモードに適用されます。モード固有の指示で強化できる基本的な動作セットを提供します。<0>詳細はこちら</0>",
 		"description": "これらの指示はすべてのモードに適用されます。モード固有の指示で強化できる基本的な動作セットを提供します。<0>詳細はこちら</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "詳細設定:システムプロンプトの上書き",
-		"description": "<2>⚠️ 警告:</2> この高度な機能は安全対策をバイパスします。<1>使用前にこれを読んでください!</1>ワークスペースの<span>.roo/system-prompt-{{slug}}</span>にファイルを作成することで、デフォルトのシステムプロンプトを上書きします。"
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "新しいモードを作成",
 		"title": "新しいモードを作成",
 		"close": "閉じる",
 		"close": "閉じる",

+ 0 - 1
webview-ui/src/i18n/locales/ko/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "코드 복사"
 			"copy_code": "코드 복사"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "경고: 사용자 정의 시스템 프롬프트 재정의가 활성화되었습니다. 이로 인해 기능이 심각하게 손상되고 예측할 수 없는 동작이 발생할 수 있습니다.",
 	"profileViolationWarning": "현재 프로필이 조직 설정과 호환되지 않습니다",
 	"profileViolationWarning": "현재 프로필이 조직 설정과 호환되지 않습니다",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "명령 실행 경고",
 		"title": "명령 실행 경고",

+ 0 - 7
webview-ui/src/i18n/locales/ko/prompts.json

@@ -71,9 +71,6 @@
 			"description": "이 작업 공간에서만 사용할 수 있습니다. 내보낸 모드에 규칙 파일이 포함된 경우 .roo/rules-{slug}/ 폴더에 다시 생성됩니다."
 			"description": "이 작업 공간에서만 사용할 수 있습니다. 내보낸 모드에 규칙 파일이 포함된 경우 .roo/rules-{slug}/ 폴더에 다시 생성됩니다."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "고급"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "모든 모드에 대한 사용자 지정 지침",
 		"title": "모든 모드에 대한 사용자 지정 지침",
 		"description": "이 지침은 모든 모드에 적용됩니다. 아래의 모드별 지침으로 향상될 수 있는 기본 동작 세트를 제공합니다. <0>더 알아보기</0>",
 		"description": "이 지침은 모든 모드에 적용됩니다. 아래의 모드별 지침으로 향상될 수 있는 기본 동작 세트를 제공합니다. <0>더 알아보기</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "고급: 시스템 프롬프트 재정의",
-		"description": "<2>⚠️ 경고:</2> 이 고급 기능은 안전 장치를 우회합니다. <1>사용하기 전에 이것을 읽으십시오!</1>작업 공간의 <span>.roo/system-prompt-{{slug}}</span>에 파일을 생성하여 기본 시스템 프롬프트를 재정의합니다."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "새 모드 만들기",
 		"title": "새 모드 만들기",
 		"close": "닫기",
 		"close": "닫기",

+ 0 - 1
webview-ui/src/i18n/locales/nl/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Code kopiëren"
 			"copy_code": "Code kopiëren"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "WAARSCHUWING: Aangepaste systeemprompt actief. Dit kan de functionaliteit ernstig verstoren en onvoorspelbaar gedrag veroorzaken.",
 	"profileViolationWarning": "Het huidige profiel is niet compatibel met de instellingen van uw organisatie",
 	"profileViolationWarning": "Het huidige profiel is niet compatibel met de instellingen van uw organisatie",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Waarschuwing commando-uitvoering",
 		"title": "Waarschuwing commando-uitvoering",

+ 0 - 7
webview-ui/src/i18n/locales/nl/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Alleen beschikbaar in deze werkruimte. Als de geëxporteerde modus regelbestanden bevatte, worden deze opnieuw gemaakt in de map .roo/rules-{slug}/."
 			"description": "Alleen beschikbaar in deze werkruimte. Als de geëxporteerde modus regelbestanden bevatte, worden deze opnieuw gemaakt in de map .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Geavanceerd"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Aangepaste instructies voor alle modi",
 		"title": "Aangepaste instructies voor alle modi",
 		"description": "Deze instructies gelden voor alle modi. Ze bieden een basisset aan gedragingen die kunnen worden uitgebreid met modusspecifieke instructies hieronder. <0>Meer informatie</0>",
 		"description": "Deze instructies gelden voor alle modi. Ze bieden een basisset aan gedragingen die kunnen worden uitgebreid met modusspecifieke instructies hieronder. <0>Meer informatie</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Geavanceerd: Systeemprompt overschrijven",
-		"description": "<2>⚠️ Waarschuwing:</2> Deze geavanceerde functie omzeilt beveiligingen. <1>LEES DIT VOOR GEBRUIK!</1>Overschrijf de standaard systeemprompt door een bestand aan te maken op <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Nieuwe modus aanmaken",
 		"title": "Nieuwe modus aanmaken",
 		"close": "Sluiten",
 		"close": "Sluiten",

+ 0 - 1
webview-ui/src/i18n/locales/pl/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Kopiuj kod"
 			"copy_code": "Kopiuj kod"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "OSTRZEŻENIE: Aktywne niestandardowe zastąpienie instrukcji systemowych. Może to poważnie zakłócić funkcjonalność i powodować nieprzewidywalne zachowanie.",
 	"profileViolationWarning": "Bieżący profil nie jest kompatybilny z ustawieniami Twojej organizacji",
 	"profileViolationWarning": "Bieżący profil nie jest kompatybilny z ustawieniami Twojej organizacji",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Ostrzeżenie wykonania polecenia",
 		"title": "Ostrzeżenie wykonania polecenia",

+ 0 - 7
webview-ui/src/i18n/locales/pl/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Dostępne tylko w tym obszarze roboczym. Jeśli wyeksportowany tryb zawierał pliki reguł, zostaną one odtworzone w folderze .roo/rules-{slug}/."
 			"description": "Dostępne tylko w tym obszarze roboczym. Jeśli wyeksportowany tryb zawierał pliki reguł, zostaną one odtworzone w folderze .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Zaawansowane"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Niestandardowe instrukcje dla wszystkich trybów",
 		"title": "Niestandardowe instrukcje dla wszystkich trybów",
 		"description": "Te instrukcje dotyczą wszystkich trybów. Zapewniają podstawowy zestaw zachowań, które mogą być rozszerzone przez instrukcje specyficzne dla trybów poniżej. <0>Dowiedz się więcej</0>",
 		"description": "Te instrukcje dotyczą wszystkich trybów. Zapewniają podstawowy zestaw zachowań, które mogą być rozszerzone przez instrukcje specyficzne dla trybów poniżej. <0>Dowiedz się więcej</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Zaawansowane: Zastąp podpowiedź systemową",
-		"description": "<2>⚠️ Ostrzeżenie:</2> Ta zaawansowana funkcja omija zabezpieczenia. <1>PRZECZYTAJ TO PRZED UŻYCIEM!</1>Zastąp domyślną podpowiedź systemową, tworząc plik w <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Utwórz nowy tryb",
 		"title": "Utwórz nowy tryb",
 		"close": "Zamknij",
 		"close": "Zamknij",

+ 0 - 1
webview-ui/src/i18n/locales/pt-BR/chat.json

@@ -408,7 +408,6 @@
 			"copy_code": "Copiar código"
 			"copy_code": "Copiar código"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "AVISO: Substituição personalizada de instrução do sistema ativa. Isso pode comprometer gravemente a funcionalidade e causar comportamento imprevisível.",
 	"profileViolationWarning": "O perfil atual não é compatível com as configurações da sua organização",
 	"profileViolationWarning": "O perfil atual não é compatível com as configurações da sua organização",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Aviso de execução de comando",
 		"title": "Aviso de execução de comando",

+ 0 - 7
webview-ui/src/i18n/locales/pt-BR/prompts.json

@@ -71,9 +71,6 @@
 			"description": "Disponível apenas neste espaço de trabalho. Se o modo exportado continha arquivos de regras, eles serão recriados na pasta .roo/rules-{slug}/."
 			"description": "Disponível apenas neste espaço de trabalho. Se o modo exportado continha arquivos de regras, eles serão recriados na pasta .roo/rules-{slug}/."
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "Avançado"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "Instruções personalizadas para todos os modos",
 		"title": "Instruções personalizadas para todos os modos",
 		"description": "Estas instruções se aplicam a todos os modos. Elas fornecem um conjunto base de comportamentos que podem ser aprimorados por instruções específicas do modo abaixo. <0>Saiba mais</0>",
 		"description": "Estas instruções se aplicam a todos os modos. Elas fornecem um conjunto base de comportamentos que podem ser aprimorados por instruções específicas do modo abaixo. <0>Saiba mais</0>",
@@ -146,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Avançado: Substituir prompt do sistema",
-		"description": "<2>⚠️ Aviso:</2> Este recurso avançado ignora as proteções. <1>LEIA ISTO ANTES DE USAR!</1>Substitua o prompt do sistema padrão criando um arquivo em <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Criar novo modo",
 		"title": "Criar novo modo",
 		"close": "Fechar",
 		"close": "Fechar",

+ 0 - 1
webview-ui/src/i18n/locales/ru/chat.json

@@ -409,7 +409,6 @@
 			"copy_code": "Копировать код"
 			"copy_code": "Копировать код"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "ПРЕДУПРЕЖДЕНИЕ: Активна пользовательская системная подсказка. Это может серьезно нарушить работу и вызвать непредсказуемое поведение.",
 	"profileViolationWarning": "Текущий профиль несовместим с настройками вашей организации",
 	"profileViolationWarning": "Текущий профиль несовместим с настройками вашей организации",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Предупреждение о выполнении команды",
 		"title": "Предупреждение о выполнении команды",

+ 0 - 7
webview-ui/src/i18n/locales/ru/prompts.json

@@ -143,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Дополнительно: переопределить системный промпт",
-		"description": "<2>⚠️ Внимание:</2> Эта расширенная функция обходит средства защиты. <1>ПРОЧТИТЕ ЭТО ПЕРЕД ИСПОЛЬЗОВАНИЕМ!</1>Переопределите системный промпт по умолчанию, создав файл в <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Создать новый режим",
 		"title": "Создать новый режим",
 		"close": "Закрыть",
 		"close": "Закрыть",
@@ -197,9 +193,6 @@
 		"deleteMode": "Удалить режим"
 		"deleteMode": "Удалить режим"
 	},
 	},
 	"allFiles": "все файлы",
 	"allFiles": "все файлы",
-	"advanced": {
-		"title": "Дополнительно"
-	},
 	"deleteMode": {
 	"deleteMode": {
 		"title": "Удалить режим",
 		"title": "Удалить режим",
 		"message": "Вы уверены, что хотите удалить режим \"{{modeName}}\"?",
 		"message": "Вы уверены, что хотите удалить режим \"{{modeName}}\"?",

+ 0 - 1
webview-ui/src/i18n/locales/tr/chat.json

@@ -409,7 +409,6 @@
 			"copy_code": "Kodu kopyala"
 			"copy_code": "Kodu kopyala"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "UYARI: Özel sistem komut geçersiz kılma aktif. Bu işlevselliği ciddi şekilde bozabilir ve öngörülemeyen davranışlara neden olabilir.",
 	"profileViolationWarning": "Geçerli profil kuruluşunuzun ayarlarıyla uyumlu değil",
 	"profileViolationWarning": "Geçerli profil kuruluşunuzun ayarlarıyla uyumlu değil",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Komut Çalıştırma Uyarısı",
 		"title": "Komut Çalıştırma Uyarısı",

+ 0 - 7
webview-ui/src/i18n/locales/tr/prompts.json

@@ -143,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Gelişmiş: Sistem Promptunu Geçersiz Kıl",
-		"description": "<2>⚠️ Uyarı:</2> Bu gelişmiş özellik güvenlik önlemlerini atlar. <1>KULLANMADAN ÖNCE BUNU OKUYUN!</1>Çalışma alanınızda <span>.roo/system-prompt-{{slug}}</span> adresinde bir dosya oluşturarak varsayılan sistem istemini geçersiz kılın."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Yeni Mod Oluştur",
 		"title": "Yeni Mod Oluştur",
 		"close": "Kapat",
 		"close": "Kapat",
@@ -197,9 +193,6 @@
 		"deleteMode": "Modu sil"
 		"deleteMode": "Modu sil"
 	},
 	},
 	"allFiles": "tüm dosyalar",
 	"allFiles": "tüm dosyalar",
-	"advanced": {
-		"title": "Gelişmiş"
-	},
 	"deleteMode": {
 	"deleteMode": {
 		"title": "Modu Sil",
 		"title": "Modu Sil",
 		"message": "\"{{modeName}}\" modunu silmek istediğinizden emin misiniz?",
 		"message": "\"{{modeName}}\" modunu silmek istediğinizden emin misiniz?",

+ 0 - 1
webview-ui/src/i18n/locales/vi/chat.json

@@ -409,7 +409,6 @@
 			"copy_code": "Sao chép mã"
 			"copy_code": "Sao chép mã"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "CẢNH BÁO: Đã kích hoạt ghi đè lệnh nhắc hệ thống tùy chỉnh. Điều này có thể phá vỡ nghiêm trọng chức năng và gây ra hành vi không thể dự đoán.",
 	"profileViolationWarning": "Hồ sơ hiện tại không tương thích với cài đặt của tổ chức của bạn",
 	"profileViolationWarning": "Hồ sơ hiện tại không tương thích với cài đặt của tổ chức của bạn",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "Cảnh báo thực thi lệnh",
 		"title": "Cảnh báo thực thi lệnh",

+ 0 - 7
webview-ui/src/i18n/locales/vi/prompts.json

@@ -143,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "Nâng cao: Ghi đè lời nhắc hệ thống",
-		"description": "<2>⚠️ Cảnh báo:</2> Tính năng nâng cao này bỏ qua các biện pháp bảo vệ. <1>ĐỌC KỸ TRƯỚC KHI SỬ DỤNG!</1>Ghi đè lời nhắc hệ thống mặc định bằng cách tạo một tệp tại <span>.roo/system-prompt-{{slug}}</span>."
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "Tạo chế độ mới",
 		"title": "Tạo chế độ mới",
 		"close": "Đóng",
 		"close": "Đóng",
@@ -197,9 +193,6 @@
 		"deleteMode": "Xóa chế độ"
 		"deleteMode": "Xóa chế độ"
 	},
 	},
 	"allFiles": "tất cả các tệp",
 	"allFiles": "tất cả các tệp",
-	"advanced": {
-		"title": "Nâng cao"
-	},
 	"deleteMode": {
 	"deleteMode": {
 		"title": "Xóa chế độ",
 		"title": "Xóa chế độ",
 		"message": "Bạn có chắc chắn muốn xóa chế độ \"{{modeName}}\" không?",
 		"message": "Bạn có chắc chắn muốn xóa chế độ \"{{modeName}}\" không?",

+ 0 - 1
webview-ui/src/i18n/locales/zh-CN/chat.json

@@ -409,7 +409,6 @@
 			"copy_code": "复制代码"
 			"copy_code": "复制代码"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "警告:自定义系统提示词覆盖已激活。这可能严重破坏功能并导致不可预测的行为。",
 	"profileViolationWarning": "当前配置文件与您的组织设置不兼容",
 	"profileViolationWarning": "当前配置文件与您的组织设置不兼容",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "命令执行警告",
 		"title": "命令执行警告",

+ 0 - 7
webview-ui/src/i18n/locales/zh-CN/prompts.json

@@ -143,10 +143,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "高级:覆盖系统提示词",
-		"description": "<2>⚠️ 警告:</2> 此高级功能会绕过安全措施。<1>使用前请阅读!</1>通过在您的工作区中创建文件 <span>.roo/system-prompt-{{slug}}</span> 来覆盖默认系统提示。"
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "创建新模式",
 		"title": "创建新模式",
 		"close": "关闭",
 		"close": "关闭",
@@ -197,9 +193,6 @@
 		"deleteMode": "删除模式"
 		"deleteMode": "删除模式"
 	},
 	},
 	"allFiles": "所有文件",
 	"allFiles": "所有文件",
-	"advanced": {
-		"title": "高级"
-	},
 	"deleteMode": {
 	"deleteMode": {
 		"title": "删除模式",
 		"title": "删除模式",
 		"message": "您确定要删除\"{{modeName}}\"模式吗?",
 		"message": "您确定要删除\"{{modeName}}\"模式吗?",

+ 0 - 1
webview-ui/src/i18n/locales/zh-TW/chat.json

@@ -438,7 +438,6 @@
 			"copy_code": "複製程式碼"
 			"copy_code": "複製程式碼"
 		}
 		}
 	},
 	},
-	"systemPromptWarning": "警告:自訂系統提示詞覆寫已啟用。這可能嚴重破壞功能並導致不可預測的行為。",
 	"profileViolationWarning": "目前設定檔與您的組織設定不相容",
 	"profileViolationWarning": "目前設定檔與您的組織設定不相容",
 	"shellIntegration": {
 	"shellIntegration": {
 		"title": "命令執行警告",
 		"title": "命令執行警告",

+ 0 - 7
webview-ui/src/i18n/locales/zh-TW/prompts.json

@@ -70,9 +70,6 @@
 			"description": "僅在此工作區可用。如果匯出的模式包含規則檔案,則將在 .roo/rules-{slug}/ 資料夾中重新建立這些檔案。"
 			"description": "僅在此工作區可用。如果匯出的模式包含規則檔案,則將在 .roo/rules-{slug}/ 資料夾中重新建立這些檔案。"
 		}
 		}
 	},
 	},
-	"advanced": {
-		"title": "進階:覆寫系統提示"
-	},
 	"globalCustomInstructions": {
 	"globalCustomInstructions": {
 		"title": "所有模式的自訂指令",
 		"title": "所有模式的自訂指令",
 		"description": "這些指令適用於所有模式。它們提供了一套可透過下方特定模式指令強化的基本行為。<0>了解更多</0>",
 		"description": "這些指令適用於所有模式。它們提供了一套可透過下方特定模式指令強化的基本行為。<0>了解更多</0>",
@@ -145,10 +142,6 @@
 			}
 			}
 		}
 		}
 	},
 	},
-	"advancedSystemPrompt": {
-		"title": "進階:覆寫系統提示詞",
-		"description": "<2>⚠️ 警告:</2> 此進階功能會繞過安全措施。<1>使用前請詳閱!</1>透過在 <span>.roo/system-prompt-{{slug}}</span> 建立檔案來覆寫預設的系統提示詞。"
-	},
 	"createModeDialog": {
 	"createModeDialog": {
 		"title": "建立新模式",
 		"title": "建立新模式",
 		"close": "關閉",
 		"close": "關閉",