Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/purple-grapes-destroy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"roo-cline": patch
---

Fix bug with role definition overrides for built-in modes
50 changes: 50 additions & 0 deletions src/core/prompts/__tests__/system.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,56 @@ describe("SYSTEM_PROMPT", () => {
expect(customInstructionsIndex).toBeGreaterThan(userInstructionsHeader)
})

it("should use promptComponent roleDefinition when available", async () => {
const customPrompts = {
[defaultModeSlug]: {
roleDefinition: "Custom prompt role definition",
customInstructions: "Custom prompt instructions",
},
}

const prompt = await SYSTEM_PROMPT(
mockContext,
"/test/path",
false,
undefined,
undefined,
undefined,
defaultModeSlug,
customPrompts,
undefined,
)

// Role definition from promptComponent should be at the top
expect(prompt.indexOf("Custom prompt role definition")).toBeLessThan(prompt.indexOf("TOOL USE"))
// Should not contain the default mode's role definition
expect(prompt).not.toContain(modes[0].roleDefinition)
})

it("should fallback to modeConfig roleDefinition when promptComponent has no roleDefinition", async () => {
const customPrompts = {
[defaultModeSlug]: {
customInstructions: "Custom prompt instructions",
// No roleDefinition provided
},
}

const prompt = await SYSTEM_PROMPT(
mockContext,
"/test/path",
false,
undefined,
undefined,
undefined,
defaultModeSlug,
customPrompts,
undefined,
)

// Should use the default mode's role definition
expect(prompt.indexOf(modes[0].roleDefinition)).toBeLessThan(prompt.indexOf("TOOL USE"))
})

afterAll(() => {
jest.restoreAllMocks()
})
Expand Down
2 changes: 1 addition & 1 deletion src/core/prompts/system.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ async function generatePrompt(

// Get the full mode config to ensure we have the role definition
const modeConfig = getModeBySlug(mode, customModeConfigs) || modes.find((m) => m.slug === mode) || modes[0]
const roleDefinition = modeConfig.roleDefinition
const roleDefinition = promptComponent?.roleDefinition || modeConfig.roleDefinition

const basePrompt = `${roleDefinition}

Expand Down
Loading