mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-22 13:21:07 -05:00
feat: implement experimental features system
- Add experiments.ts to manage experimental features - Refactor experimental diff strategy into experiments system - Add UI components for managing experimental features - Add tests for experimental tools - Update system prompts to handle experiments
This commit is contained in:
@@ -14,6 +14,12 @@ describe("isToolAllowedForMode", () => {
|
||||
roleDefinition: "You are a CSS editor",
|
||||
groups: ["read", ["edit", { fileRegex: "\\.css$" }], "browser"],
|
||||
},
|
||||
{
|
||||
slug: "test-exp-mode",
|
||||
name: "Test Exp Mode",
|
||||
roleDefinition: "You are an experimental tester",
|
||||
groups: ["read", "edit", "browser"],
|
||||
},
|
||||
]
|
||||
|
||||
it("allows always available tools", () => {
|
||||
@@ -240,6 +246,87 @@ describe("isToolAllowedForMode", () => {
|
||||
|
||||
expect(isToolAllowedForMode("write_to_file", "markdown-editor", customModes, toolRequirements)).toBe(false)
|
||||
})
|
||||
|
||||
describe("experimental tools", () => {
|
||||
it("disables tools when experiment is disabled", () => {
|
||||
const experiments = {
|
||||
search_and_replace: false,
|
||||
insert_code_block: false,
|
||||
}
|
||||
|
||||
expect(
|
||||
isToolAllowedForMode(
|
||||
"search_and_replace",
|
||||
"test-exp-mode",
|
||||
customModes,
|
||||
undefined,
|
||||
undefined,
|
||||
experiments,
|
||||
),
|
||||
).toBe(false)
|
||||
|
||||
expect(
|
||||
isToolAllowedForMode(
|
||||
"insert_code_block",
|
||||
"test-exp-mode",
|
||||
customModes,
|
||||
undefined,
|
||||
undefined,
|
||||
experiments,
|
||||
),
|
||||
).toBe(false)
|
||||
})
|
||||
|
||||
it("allows tools when experiment is enabled", () => {
|
||||
const experiments = {
|
||||
search_and_replace: true,
|
||||
insert_code_block: true,
|
||||
}
|
||||
|
||||
expect(
|
||||
isToolAllowedForMode(
|
||||
"search_and_replace",
|
||||
"test-exp-mode",
|
||||
customModes,
|
||||
undefined,
|
||||
undefined,
|
||||
experiments,
|
||||
),
|
||||
).toBe(true)
|
||||
|
||||
expect(
|
||||
isToolAllowedForMode(
|
||||
"insert_code_block",
|
||||
"test-exp-mode",
|
||||
customModes,
|
||||
undefined,
|
||||
undefined,
|
||||
experiments,
|
||||
),
|
||||
).toBe(true)
|
||||
})
|
||||
|
||||
it("allows non-experimental tools when experiments are disabled", () => {
|
||||
const experiments = {
|
||||
search_and_replace: false,
|
||||
insert_code_block: false,
|
||||
}
|
||||
|
||||
expect(
|
||||
isToolAllowedForMode("read_file", "markdown-editor", customModes, undefined, undefined, experiments),
|
||||
).toBe(true)
|
||||
expect(
|
||||
isToolAllowedForMode(
|
||||
"write_to_file",
|
||||
"markdown-editor",
|
||||
customModes,
|
||||
undefined,
|
||||
{ path: "test.md" },
|
||||
experiments,
|
||||
),
|
||||
).toBe(true)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe("FileRestrictionError", () => {
|
||||
|
||||
Reference in New Issue
Block a user