mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-21 21:01:06 -05:00
Checkpoint on insert and search/replace tools
This commit is contained in:
@@ -3,6 +3,8 @@ import { getReadFileDescription } from "./read-file"
|
||||
import { getWriteToFileDescription } from "./write-to-file"
|
||||
import { getSearchFilesDescription } from "./search-files"
|
||||
import { getListFilesDescription } from "./list-files"
|
||||
import { getInsertCodeBlockDescription } from "./insert-code-block"
|
||||
import { getSearchAndReplaceDescription } from "./search-and-replace"
|
||||
import { getListCodeDefinitionNamesDescription } from "./list-code-definition-names"
|
||||
import { getBrowserActionDescription } from "./browser-action"
|
||||
import { getAskFollowupQuestionDescription } from "./ask-followup-question"
|
||||
@@ -30,6 +32,8 @@ const toolDescriptionMap: Record<string, (args: ToolArgs) => string | undefined>
|
||||
use_mcp_tool: (args) => getUseMcpToolDescription(args),
|
||||
access_mcp_resource: (args) => getAccessMcpResourceDescription(args),
|
||||
switch_mode: () => getSwitchModeDescription(),
|
||||
insert_code_block: (args) => getInsertCodeBlockDescription(args),
|
||||
search_and_replace: (args) => getSearchAndReplaceDescription(args),
|
||||
apply_diff: (args) =>
|
||||
args.diffStrategy ? args.diffStrategy.getToolDescription({ cwd: args.cwd, toolOptions: args.toolOptions }) : "",
|
||||
}
|
||||
@@ -100,4 +104,6 @@ export {
|
||||
getUseMcpToolDescription,
|
||||
getAccessMcpResourceDescription,
|
||||
getSwitchModeDescription,
|
||||
getInsertCodeBlockDescription,
|
||||
getSearchAndReplaceDescription,
|
||||
}
|
||||
|
||||
35
src/core/prompts/tools/insert-code-block.ts
Normal file
35
src/core/prompts/tools/insert-code-block.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { ToolArgs } from "./types"
|
||||
|
||||
export function getInsertCodeBlockDescription(args: ToolArgs): string {
|
||||
return `## insert_code_block
|
||||
Description: Inserts code blocks at specific line positions in a file. This is the primary tool for adding new code (functions/methods/classes, imports, attributes etc.) as it allows for precise insertions without overwriting existing content. The tool uses an efficient line-based insertion system that maintains file integrity and proper ordering of multiple insertions. Beware to use the proper indentation. This tool is the preferred way to add new code to files.
|
||||
Parameters:
|
||||
- path: (required) The path of the file to insert code into (relative to the current working directory ${args.cwd.toPosix()})
|
||||
- operations: (required) A JSON array of insertion operations. Each operation is an object with:
|
||||
* start_line: (required) The line number where the code block should be inserted
|
||||
* content: (required) The code block to insert at the specified position
|
||||
Usage:
|
||||
<insert_code_block>
|
||||
<path>File path here</path>
|
||||
<operations>[
|
||||
{
|
||||
"start_line": 10,
|
||||
"content": "Your code block here"
|
||||
}
|
||||
]</operations>
|
||||
</insert_code_block>
|
||||
Example: Insert a new function and its import statement
|
||||
<insert_code_block>
|
||||
<path>src/app.ts</path>
|
||||
<operations>[
|
||||
{
|
||||
"start_line": 1,
|
||||
"content": "import { sum } from './utils';"
|
||||
},
|
||||
{
|
||||
"start_line": 10,
|
||||
"content": "function calculateTotal(items: number[]): number {\n return items.reduce((sum, item) => sum + item, 0);\n}"
|
||||
}
|
||||
]</operations>
|
||||
</insert_code_block>`
|
||||
}
|
||||
52
src/core/prompts/tools/search-and-replace.ts
Normal file
52
src/core/prompts/tools/search-and-replace.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import { ToolArgs } from "./types"
|
||||
|
||||
export function getSearchAndReplaceDescription(args: ToolArgs): string {
|
||||
return `## search_and_replace
|
||||
Description: Request to perform search and replace operations on a file. Each operation can specify a search pattern (string or regex) and replacement text, with optional line range restrictions and regex flags. Shows a diff preview before applying changes.
|
||||
Parameters:
|
||||
- path: (required) The path of the file to modify (relative to the current working directory ${args.cwd.toPosix()})
|
||||
- operations: (required) A JSON array of search/replace operations. Each operation is an object with:
|
||||
* search: (required) The text or pattern to search for
|
||||
* replace: (required) The text to replace matches with
|
||||
* start_line: (optional) Starting line number for restricted replacement
|
||||
* end_line: (optional) Ending line number for restricted replacement
|
||||
* use_regex: (optional) Whether to treat search as a regex pattern
|
||||
* ignore_case: (optional) Whether to ignore case when matching
|
||||
* regex_flags: (optional) Additional regex flags when use_regex is true
|
||||
Usage:
|
||||
<search_and_replace>
|
||||
<path>File path here</path>
|
||||
<operations>[
|
||||
{
|
||||
"search": "text to find",
|
||||
"replace": "replacement text",
|
||||
"start_line": 1,
|
||||
"end_line": 10
|
||||
}
|
||||
]</operations>
|
||||
</search_and_replace>
|
||||
Example: Replace "foo" with "bar" in lines 1-10 of example.ts
|
||||
<search_and_replace>
|
||||
<path>example.ts</path>
|
||||
<operations>[
|
||||
{
|
||||
"search": "foo",
|
||||
"replace": "bar",
|
||||
"start_line": 1,
|
||||
"end_line": 10
|
||||
}
|
||||
]</operations>
|
||||
</search_and_replace>
|
||||
Example: Replace all occurrences of "old" with "new" using regex
|
||||
<search_and_replace>
|
||||
<path>example.ts</path>
|
||||
<operations>[
|
||||
{
|
||||
"search": "old\\w+",
|
||||
"replace": "new$&",
|
||||
"use_regex": true,
|
||||
"ignore_case": true
|
||||
}
|
||||
]</operations>
|
||||
</search_and_replace>`
|
||||
}
|
||||
Reference in New Issue
Block a user