mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
chore: remove list_code_definition_names tool (#10005)
Co-authored-by: cte <cestreich@gmail.com>
This commit is contained in:
parent
0cbaed7e7b
commit
6a30d9488e
48 changed files with 18 additions and 1479 deletions
|
|
@ -24,7 +24,6 @@ export const toolNames = [
|
|||
"apply_patch",
|
||||
"search_files",
|
||||
"list_files",
|
||||
"list_code_definition_names",
|
||||
"browser_action",
|
||||
"use_mcp_tool",
|
||||
"access_mcp_resource",
|
||||
|
|
|
|||
|
|
@ -437,14 +437,6 @@ export class NativeToolCallParser {
|
|||
}
|
||||
break
|
||||
|
||||
case "list_code_definition_names":
|
||||
if (partialArgs.path !== undefined) {
|
||||
nativeArgs = {
|
||||
path: partialArgs.path,
|
||||
}
|
||||
}
|
||||
break
|
||||
|
||||
case "run_slash_command":
|
||||
if (partialArgs.command !== undefined) {
|
||||
nativeArgs = {
|
||||
|
|
@ -677,14 +669,6 @@ export class NativeToolCallParser {
|
|||
}
|
||||
break
|
||||
|
||||
case "list_code_definition_names":
|
||||
if (args.path !== undefined) {
|
||||
nativeArgs = {
|
||||
path: args.path,
|
||||
} as NativeArgsFor<TName>
|
||||
}
|
||||
break
|
||||
|
||||
case "run_slash_command":
|
||||
if (args.command !== undefined) {
|
||||
nativeArgs = {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ import { applyDiffTool } from "../tools/MultiApplyDiffTool"
|
|||
import { searchAndReplaceTool } from "../tools/SearchAndReplaceTool"
|
||||
import { searchReplaceTool } from "../tools/SearchReplaceTool"
|
||||
import { applyPatchTool } from "../tools/ApplyPatchTool"
|
||||
import { listCodeDefinitionNamesTool } from "../tools/ListCodeDefinitionNamesTool"
|
||||
import { searchFilesTool } from "../tools/SearchFilesTool"
|
||||
import { browserActionTool } from "../tools/BrowserActionTool"
|
||||
import { executeCommandTool } from "../tools/ExecuteCommandTool"
|
||||
|
|
@ -396,8 +395,6 @@ export async function presentAssistantMessage(cline: Task) {
|
|||
return `[${block.name}]`
|
||||
case "list_files":
|
||||
return `[${block.name} for '${block.params.path}']`
|
||||
case "list_code_definition_names":
|
||||
return `[${block.name} for '${block.params.path}']`
|
||||
case "browser_action":
|
||||
return `[${block.name} for '${block.params.action}']`
|
||||
case "use_mcp_tool":
|
||||
|
|
@ -919,15 +916,6 @@ export async function presentAssistantMessage(cline: Task) {
|
|||
toolProtocol,
|
||||
})
|
||||
break
|
||||
case "list_code_definition_names":
|
||||
await listCodeDefinitionNamesTool.handle(cline, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval,
|
||||
handleError,
|
||||
pushToolResult,
|
||||
removeClosingTag,
|
||||
toolProtocol,
|
||||
})
|
||||
break
|
||||
case "search_files":
|
||||
await searchFilesTool.handle(cline, block as ToolUse<"search_files">, {
|
||||
askApproval,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ export function isReadOnlyToolAction(tool: ClineSayTool): boolean {
|
|||
"listFiles",
|
||||
"listFilesTopLevel",
|
||||
"listFilesRecursive",
|
||||
"listCodeDefinitionNames",
|
||||
"searchFiles",
|
||||
"codebaseSearch",
|
||||
"runSlashCommand",
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## ask_followup_question
|
||||
Description: Ask the user a question to gather additional information needed to complete the task. Use when you need clarification or more details to proceed effectively.
|
||||
|
||||
|
|
|
|||
|
|
@ -148,27 +148,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -154,27 +154,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## apply_diff
|
||||
Description: Request to apply PRECISE, TARGETED modifications to an existing file by searching for specific sections of content and replacing them. This tool is for SURGICAL EDITS ONLY - specific changes to existing code.
|
||||
You can perform multiple distinct search and replace operations within a single `apply_diff` call by providing multiple SEARCH/REPLACE blocks in the `diff` parameter. This is the preferred way to make several targeted changes efficiently.
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -149,27 +149,6 @@ Example: Requesting to list all files in the current directory
|
|||
<recursive>false</recursive>
|
||||
</list_files>
|
||||
|
||||
## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory /test/path) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
## write_to_file
|
||||
Description: Request to write content to a file. This tool is primarily used for **creating new files** or for scenarios where a **complete rewrite of an existing file is intentionally required**. If the file exists, it will be overwritten. If it doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ customModes:
|
|||
or ensuring responsive web interfaces. This mode is especially effective with CSS,
|
||||
HTML, and modern frontend frameworks. # Optional but recommended
|
||||
groups: # Required: array of tool groups (can be empty)
|
||||
- read # Read files group (read_file, fetch_instructions, search_files, list_files, list_code_definition_names)
|
||||
- read # Read files group (read_file, fetch_instructions, search_files, list_files)
|
||||
- edit # Edit files group (apply_diff, write_to_file) - allows editing any file
|
||||
# Or with file restrictions:
|
||||
# - - edit
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ import { shouldUseSingleFileRead } from "@roo-code/types"
|
|||
import { getWriteToFileDescription } from "./write-to-file"
|
||||
import { getSearchFilesDescription } from "./search-files"
|
||||
import { getListFilesDescription } from "./list-files"
|
||||
import { getListCodeDefinitionNamesDescription } from "./list-code-definition-names"
|
||||
import { getBrowserActionDescription } from "./browser-action"
|
||||
import { getAskFollowupQuestionDescription } from "./ask-followup-question"
|
||||
import { getAttemptCompletionDescription } from "./attempt-completion"
|
||||
|
|
@ -42,7 +41,6 @@ const toolDescriptionMap: Record<string, (args: ToolArgs) => string | undefined>
|
|||
write_to_file: (args) => getWriteToFileDescription(args),
|
||||
search_files: (args) => getSearchFilesDescription(args),
|
||||
list_files: (args) => getListFilesDescription(args),
|
||||
list_code_definition_names: (args) => getListCodeDefinitionNamesDescription(args),
|
||||
browser_action: (args) => getBrowserActionDescription(args),
|
||||
ask_followup_question: () => getAskFollowupQuestionDescription(),
|
||||
attempt_completion: (args) => getAttemptCompletionDescription(args),
|
||||
|
|
@ -166,7 +164,6 @@ export {
|
|||
getWriteToFileDescription,
|
||||
getSearchFilesDescription,
|
||||
getListFilesDescription,
|
||||
getListCodeDefinitionNamesDescription,
|
||||
getBrowserActionDescription,
|
||||
getAskFollowupQuestionDescription,
|
||||
getAttemptCompletionDescription,
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
import { ToolArgs } from "./types"
|
||||
|
||||
export function getListCodeDefinitionNamesDescription(args: ToolArgs): string {
|
||||
return `## list_code_definition_names
|
||||
Description: Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory ${args.cwd}) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
Usage:
|
||||
<list_code_definition_names>
|
||||
<path>Directory path here</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
<list_code_definition_names>
|
||||
<path>src/main.ts</path>
|
||||
</list_code_definition_names>
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
<list_code_definition_names>
|
||||
<path>src/</path>
|
||||
</list_code_definition_names>`
|
||||
}
|
||||
|
|
@ -9,7 +9,6 @@ import codebaseSearch from "./codebase_search"
|
|||
import executeCommand from "./execute_command"
|
||||
import fetchInstructions from "./fetch_instructions"
|
||||
import generateImage from "./generate_image"
|
||||
import listCodeDefinitionNames from "./list_code_definition_names"
|
||||
import listFiles from "./list_files"
|
||||
import newTask from "./new_task"
|
||||
import { createReadFileTool } from "./read_file"
|
||||
|
|
@ -42,7 +41,6 @@ export function getNativeTools(partialReadsEnabled: boolean = true): OpenAI.Chat
|
|||
executeCommand,
|
||||
fetchInstructions,
|
||||
generateImage,
|
||||
listCodeDefinitionNames,
|
||||
listFiles,
|
||||
newTask,
|
||||
createReadFileTool(partialReadsEnabled),
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
import type OpenAI from "openai"
|
||||
|
||||
const LIST_CODE_DEFINITION_NAMES_DESCRIPTION = `Request to list definition names (classes, functions, methods, etc.) from source code. This tool can analyze either a single file or all files at the top level of a specified directory. It provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.
|
||||
|
||||
Parameters:
|
||||
- path: (required) The path of the file or directory (relative to the current working directory) to analyze. When given a directory, it lists definitions from all top-level source files.
|
||||
|
||||
Examples:
|
||||
|
||||
1. List definitions from a specific file:
|
||||
{ "path": "src/main.ts" }
|
||||
|
||||
2. List definitions from all files in a directory:
|
||||
{ "path": "src/" }`
|
||||
|
||||
const PATH_PARAMETER_DESCRIPTION = `Path to the file or directory to analyze, relative to the workspace`
|
||||
|
||||
export default {
|
||||
type: "function",
|
||||
function: {
|
||||
name: "list_code_definition_names",
|
||||
description: LIST_CODE_DEFINITION_NAMES_DESCRIPTION,
|
||||
strict: true,
|
||||
parameters: {
|
||||
type: "object",
|
||||
properties: {
|
||||
path: {
|
||||
type: "string",
|
||||
description: PATH_PARAMETER_DESCRIPTION,
|
||||
},
|
||||
},
|
||||
required: ["path"],
|
||||
additionalProperties: false,
|
||||
},
|
||||
},
|
||||
} satisfies OpenAI.Chat.ChatCompletionTool
|
||||
|
|
@ -1,108 +0,0 @@
|
|||
import path from "path"
|
||||
import fs from "fs/promises"
|
||||
|
||||
import { Task } from "../task/Task"
|
||||
import { ClineSayTool } from "../../shared/ExtensionMessage"
|
||||
import { getReadablePath } from "../../utils/path"
|
||||
import { isPathOutsideWorkspace } from "../../utils/pathUtils"
|
||||
import { parseSourceCodeForDefinitionsTopLevel, parseSourceCodeDefinitionsForFile } from "../../services/tree-sitter"
|
||||
import { RecordSource } from "../context-tracking/FileContextTrackerTypes"
|
||||
import { truncateDefinitionsToLineLimit } from "./helpers/truncateDefinitions"
|
||||
import { BaseTool, ToolCallbacks } from "./BaseTool"
|
||||
import type { ToolUse } from "../../shared/tools"
|
||||
|
||||
interface ListCodeDefinitionNamesParams {
|
||||
path: string
|
||||
}
|
||||
|
||||
export class ListCodeDefinitionNamesTool extends BaseTool<"list_code_definition_names"> {
|
||||
readonly name = "list_code_definition_names" as const
|
||||
|
||||
parseLegacy(params: Partial<Record<string, string>>): ListCodeDefinitionNamesParams {
|
||||
return {
|
||||
path: params.path || "",
|
||||
}
|
||||
}
|
||||
|
||||
async execute(params: ListCodeDefinitionNamesParams, task: Task, callbacks: ToolCallbacks): Promise<void> {
|
||||
const { askApproval, handleError, pushToolResult } = callbacks
|
||||
const { path: relPath } = params
|
||||
|
||||
if (!relPath) {
|
||||
task.consecutiveMistakeCount++
|
||||
task.recordToolError("list_code_definition_names")
|
||||
task.didToolFailInCurrentTurn = true
|
||||
pushToolResult(await task.sayAndCreateMissingParamError("list_code_definition_names", "path"))
|
||||
return
|
||||
}
|
||||
|
||||
task.consecutiveMistakeCount = 0
|
||||
|
||||
const absolutePath = path.resolve(task.cwd, relPath)
|
||||
const isOutsideWorkspace = isPathOutsideWorkspace(absolutePath)
|
||||
|
||||
const sharedMessageProps: ClineSayTool = {
|
||||
tool: "listCodeDefinitionNames",
|
||||
path: getReadablePath(task.cwd, relPath),
|
||||
isOutsideWorkspace,
|
||||
}
|
||||
|
||||
try {
|
||||
let result: string
|
||||
|
||||
try {
|
||||
const stats = await fs.stat(absolutePath)
|
||||
|
||||
if (stats.isFile()) {
|
||||
const fileResult = await parseSourceCodeDefinitionsForFile(absolutePath, task.rooIgnoreController)
|
||||
|
||||
if (fileResult) {
|
||||
const { maxReadFileLine = -1 } = (await task.providerRef.deref()?.getState()) ?? {}
|
||||
result = truncateDefinitionsToLineLimit(fileResult, maxReadFileLine)
|
||||
} else {
|
||||
result = "No source code definitions found in file."
|
||||
}
|
||||
} else if (stats.isDirectory()) {
|
||||
result = await parseSourceCodeForDefinitionsTopLevel(absolutePath, task.rooIgnoreController)
|
||||
} else {
|
||||
result = "The specified path is neither a file nor a directory."
|
||||
}
|
||||
} catch {
|
||||
result = `${absolutePath}: does not exist or cannot be accessed.`
|
||||
}
|
||||
|
||||
const completeMessage = JSON.stringify({ ...sharedMessageProps, content: result } satisfies ClineSayTool)
|
||||
const didApprove = await askApproval("tool", completeMessage)
|
||||
|
||||
if (!didApprove) {
|
||||
return
|
||||
}
|
||||
|
||||
if (relPath) {
|
||||
await task.fileContextTracker.trackFileContext(relPath, "read_tool" as RecordSource)
|
||||
}
|
||||
|
||||
pushToolResult(result)
|
||||
} catch (error) {
|
||||
await handleError("parsing source code definitions", error as Error)
|
||||
}
|
||||
}
|
||||
|
||||
override async handlePartial(task: Task, block: ToolUse<"list_code_definition_names">): Promise<void> {
|
||||
const relPath: string | undefined = block.params.path
|
||||
|
||||
const absolutePath = relPath ? path.resolve(task.cwd, relPath) : task.cwd
|
||||
const isOutsideWorkspace = isPathOutsideWorkspace(absolutePath)
|
||||
|
||||
const sharedMessageProps: ClineSayTool = {
|
||||
tool: "listCodeDefinitionNames",
|
||||
path: getReadablePath(task.cwd, relPath || ""),
|
||||
isOutsideWorkspace,
|
||||
}
|
||||
|
||||
const partialMessage = JSON.stringify({ ...sharedMessageProps, content: "" } satisfies ClineSayTool)
|
||||
await task.ask("tool", partialMessage, block.partial).catch(() => {})
|
||||
}
|
||||
}
|
||||
|
||||
export const listCodeDefinitionNamesTool = new ListCodeDefinitionNamesTool()
|
||||
|
|
@ -1,343 +0,0 @@
|
|||
// npx vitest src/core/tools/__tests__/listCodeDefinitionNamesTool.spec.ts
|
||||
|
||||
import { describe, it, expect, vi, beforeEach } from "vitest"
|
||||
import { listCodeDefinitionNamesTool } from "../ListCodeDefinitionNamesTool"
|
||||
import { Task } from "../../task/Task"
|
||||
import { ToolUse } from "../../../shared/tools"
|
||||
import * as treeSitter from "../../../services/tree-sitter"
|
||||
import fs from "fs/promises"
|
||||
|
||||
// Mock the tree-sitter service
|
||||
vi.mock("../../../services/tree-sitter", () => ({
|
||||
parseSourceCodeDefinitionsForFile: vi.fn(),
|
||||
parseSourceCodeForDefinitionsTopLevel: vi.fn(),
|
||||
}))
|
||||
|
||||
// Mock fs module
|
||||
vi.mock("fs/promises", () => ({
|
||||
default: {
|
||||
stat: vi.fn(),
|
||||
},
|
||||
}))
|
||||
|
||||
describe("listCodeDefinitionNamesTool", () => {
|
||||
let mockTask: Partial<Task>
|
||||
let mockAskApproval: any
|
||||
let mockHandleError: any
|
||||
let mockPushToolResult: any
|
||||
let mockRemoveClosingTag: any
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
|
||||
mockTask = {
|
||||
cwd: "/test/path",
|
||||
consecutiveMistakeCount: 0,
|
||||
recordToolError: vi.fn(),
|
||||
sayAndCreateMissingParamError: vi.fn(),
|
||||
ask: vi.fn(),
|
||||
fileContextTracker: {
|
||||
trackFileContext: vi.fn(),
|
||||
},
|
||||
providerRef: {
|
||||
deref: vi.fn(() => ({
|
||||
getState: vi.fn(async () => ({ maxReadFileLine: -1 })),
|
||||
})),
|
||||
},
|
||||
rooIgnoreController: undefined,
|
||||
} as any
|
||||
|
||||
mockAskApproval = vi.fn(async () => true)
|
||||
mockHandleError = vi.fn()
|
||||
mockPushToolResult = vi.fn()
|
||||
mockRemoveClosingTag = vi.fn((tag: string, value: string) => value)
|
||||
})
|
||||
|
||||
describe("truncateDefinitionsToLineLimit", () => {
|
||||
it("should not truncate when maxReadFileLine is -1 (no limit)", async () => {
|
||||
const mockDefinitions = `# test.ts
|
||||
10--20 | function foo() {
|
||||
30--40 | function bar() {
|
||||
50--60 | function baz() {`
|
||||
|
||||
vi.mocked(treeSitter.parseSourceCodeDefinitionsForFile).mockResolvedValue(mockDefinitions)
|
||||
|
||||
vi.mocked(fs.stat).mockResolvedValue({
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
} as any)
|
||||
|
||||
mockTask.providerRef = {
|
||||
deref: vi.fn(() => ({
|
||||
getState: vi.fn(async () => ({ maxReadFileLine: -1 })),
|
||||
})),
|
||||
} as any
|
||||
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: { path: "test.ts" },
|
||||
partial: false,
|
||||
}
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith(mockDefinitions)
|
||||
})
|
||||
|
||||
it("should not truncate when maxReadFileLine is 0 (definitions only mode)", async () => {
|
||||
const mockDefinitions = `# test.ts
|
||||
10--20 | function foo() {
|
||||
30--40 | function bar() {
|
||||
50--60 | function baz() {`
|
||||
|
||||
vi.mocked(treeSitter.parseSourceCodeDefinitionsForFile).mockResolvedValue(mockDefinitions)
|
||||
|
||||
vi.mocked(fs.stat).mockResolvedValue({
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
} as any)
|
||||
|
||||
mockTask.providerRef = {
|
||||
deref: vi.fn(() => ({
|
||||
getState: vi.fn(async () => ({ maxReadFileLine: 0 })),
|
||||
})),
|
||||
} as any
|
||||
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: { path: "test.ts" },
|
||||
partial: false,
|
||||
}
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith(mockDefinitions)
|
||||
})
|
||||
|
||||
it("should truncate definitions when maxReadFileLine is set", async () => {
|
||||
const mockDefinitions = `# test.ts
|
||||
10--20 | function foo() {
|
||||
30--40 | function bar() {
|
||||
50--60 | function baz() {`
|
||||
|
||||
vi.mocked(treeSitter.parseSourceCodeDefinitionsForFile).mockResolvedValue(mockDefinitions)
|
||||
|
||||
vi.mocked(fs.stat).mockResolvedValue({
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
} as any)
|
||||
|
||||
mockTask.providerRef = {
|
||||
deref: vi.fn(() => ({
|
||||
getState: vi.fn(async () => ({ maxReadFileLine: 25 })),
|
||||
})),
|
||||
} as any
|
||||
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: { path: "test.ts" },
|
||||
partial: false,
|
||||
}
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
// Should only include definitions starting at or before line 25
|
||||
const expectedResult = `# test.ts
|
||||
10--20 | function foo() {`
|
||||
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith(expectedResult)
|
||||
})
|
||||
|
||||
it("should include definitions that start within limit even if they end beyond it", async () => {
|
||||
const mockDefinitions = `# test.ts
|
||||
10--50 | function foo() {
|
||||
60--80 | function bar() {`
|
||||
|
||||
vi.mocked(treeSitter.parseSourceCodeDefinitionsForFile).mockResolvedValue(mockDefinitions)
|
||||
|
||||
vi.mocked(fs.stat).mockResolvedValue({
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
} as any)
|
||||
|
||||
mockTask.providerRef = {
|
||||
deref: vi.fn(() => ({
|
||||
getState: vi.fn(async () => ({ maxReadFileLine: 30 })),
|
||||
})),
|
||||
} as any
|
||||
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: { path: "test.ts" },
|
||||
partial: false,
|
||||
}
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
// Should include foo (starts at 10) but not bar (starts at 60)
|
||||
const expectedResult = `# test.ts
|
||||
10--50 | function foo() {`
|
||||
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith(expectedResult)
|
||||
})
|
||||
|
||||
it("should handle single-line definitions", async () => {
|
||||
const mockDefinitions = `# test.ts
|
||||
10 | const foo = 1
|
||||
20 | const bar = 2
|
||||
30 | const baz = 3`
|
||||
|
||||
vi.mocked(treeSitter.parseSourceCodeDefinitionsForFile).mockResolvedValue(mockDefinitions)
|
||||
|
||||
vi.mocked(fs.stat).mockResolvedValue({
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
} as any)
|
||||
|
||||
mockTask.providerRef = {
|
||||
deref: vi.fn(() => ({
|
||||
getState: vi.fn(async () => ({ maxReadFileLine: 25 })),
|
||||
})),
|
||||
} as any
|
||||
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: { path: "test.ts" },
|
||||
partial: false,
|
||||
}
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
// Should include foo and bar but not baz
|
||||
const expectedResult = `# test.ts
|
||||
10 | const foo = 1
|
||||
20 | const bar = 2`
|
||||
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith(expectedResult)
|
||||
})
|
||||
|
||||
it("should preserve header line when truncating", async () => {
|
||||
const mockDefinitions = `# test.ts
|
||||
100--200 | function foo() {`
|
||||
|
||||
vi.mocked(treeSitter.parseSourceCodeDefinitionsForFile).mockResolvedValue(mockDefinitions)
|
||||
|
||||
vi.mocked(fs.stat).mockResolvedValue({
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
} as any)
|
||||
|
||||
mockTask.providerRef = {
|
||||
deref: vi.fn(() => ({
|
||||
getState: vi.fn(async () => ({ maxReadFileLine: 50 })),
|
||||
})),
|
||||
} as any
|
||||
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: { path: "test.ts" },
|
||||
partial: false,
|
||||
}
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
// Should keep header but exclude all definitions beyond line 50
|
||||
const expectedResult = `# test.ts`
|
||||
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith(expectedResult)
|
||||
})
|
||||
})
|
||||
|
||||
it("should handle missing path parameter", async () => {
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: {},
|
||||
partial: false,
|
||||
}
|
||||
|
||||
mockTask.sayAndCreateMissingParamError = vi.fn(async () => "Missing parameter: path")
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
expect(mockTask.consecutiveMistakeCount).toBe(1)
|
||||
expect(mockTask.recordToolError).toHaveBeenCalledWith("list_code_definition_names")
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith("Missing parameter: path")
|
||||
})
|
||||
|
||||
it("should handle directory path", async () => {
|
||||
const mockDefinitions = "# Directory definitions"
|
||||
|
||||
vi.mocked(treeSitter.parseSourceCodeForDefinitionsTopLevel).mockResolvedValue(mockDefinitions)
|
||||
|
||||
vi.mocked(fs.stat).mockResolvedValue({
|
||||
isFile: () => false,
|
||||
isDirectory: () => true,
|
||||
} as any)
|
||||
|
||||
const block: ToolUse = {
|
||||
type: "tool_use",
|
||||
name: "list_code_definition_names",
|
||||
params: { path: "src" },
|
||||
partial: false,
|
||||
}
|
||||
|
||||
await listCodeDefinitionNamesTool.handle(mockTask as Task, block as ToolUse<"list_code_definition_names">, {
|
||||
askApproval: mockAskApproval,
|
||||
handleError: mockHandleError,
|
||||
pushToolResult: mockPushToolResult,
|
||||
removeClosingTag: mockRemoveClosingTag,
|
||||
toolProtocol: "xml",
|
||||
})
|
||||
|
||||
expect(mockPushToolResult).toHaveBeenCalledWith(mockDefinitions)
|
||||
})
|
||||
})
|
||||
|
|
@ -9,8 +9,6 @@ import { parseSourceCodeDefinitionsForFile } from "../../../services/tree-sitter
|
|||
import { isBinaryFile } from "isbinaryfile"
|
||||
import { ReadFileToolUse, ToolParamName, ToolResponse } from "../../../shared/tools"
|
||||
import { readFileTool } from "../ReadFileTool"
|
||||
import { formatResponse } from "../../prompts/responses"
|
||||
import { DEFAULT_MAX_IMAGE_FILE_SIZE_MB, DEFAULT_MAX_TOTAL_IMAGE_SIZE_MB } from "../helpers/imageHelpers"
|
||||
|
||||
vi.mock("path", async () => {
|
||||
const originalPath = await vi.importActual("path")
|
||||
|
|
|
|||
|
|
@ -1,443 +0,0 @@
|
|||
import * as fs from "fs/promises"
|
||||
import type { Mock } from "vitest"
|
||||
|
||||
import { parseSourceCodeForDefinitionsTopLevel } from "../index"
|
||||
import { listFiles } from "../../glob/list-files"
|
||||
import { loadRequiredLanguageParsers } from "../languageParser"
|
||||
import { fileExistsAtPath } from "../../../utils/fs"
|
||||
|
||||
// Mock dependencies
|
||||
vi.mock("../../glob/list-files")
|
||||
vi.mock("../languageParser")
|
||||
vi.mock("../../../utils/fs")
|
||||
vi.mock("fs/promises")
|
||||
|
||||
describe("Tree-sitter Service", () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
;(fileExistsAtPath as Mock).mockResolvedValue(true)
|
||||
})
|
||||
|
||||
describe("parseSourceCodeForDefinitionsTopLevel", () => {
|
||||
it("should handle non-existent directory", async () => {
|
||||
;(fileExistsAtPath as Mock).mockResolvedValue(false)
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/non/existent/path")
|
||||
expect(result).toBe("This directory does not exist or you do not have permission to access it.")
|
||||
})
|
||||
|
||||
it("should handle empty directory", async () => {
|
||||
;(listFiles as Mock).mockResolvedValue([[], new Set()])
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
expect(result).toBe("No source code definitions found.")
|
||||
})
|
||||
|
||||
it("should parse TypeScript files correctly", async () => {
|
||||
const mockFiles = ["/test/path/file1.ts", "/test/path/file2.tsx", "/test/path/readme.md"]
|
||||
|
||||
;(listFiles as Mock).mockResolvedValue([mockFiles, new Set()])
|
||||
|
||||
const mockParser = {
|
||||
parse: vi.fn().mockReturnValue({
|
||||
rootNode: "mockNode",
|
||||
}),
|
||||
}
|
||||
|
||||
const mockQuery = {
|
||||
captures: vi.fn().mockReturnValue([
|
||||
{
|
||||
// Must span 4 lines to meet MIN_COMPONENT_LINES
|
||||
node: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
parent: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
},
|
||||
text: () => "export class TestClass",
|
||||
},
|
||||
name: "name.definition",
|
||||
},
|
||||
]),
|
||||
}
|
||||
|
||||
;(loadRequiredLanguageParsers as Mock).mockResolvedValue({
|
||||
ts: { parser: mockParser, query: mockQuery },
|
||||
tsx: { parser: mockParser, query: mockQuery },
|
||||
})
|
||||
;(fs.readFile as Mock).mockResolvedValue("export class TestClass {\n constructor() {}\n}")
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
|
||||
expect(result).toContain("file1.ts")
|
||||
expect(result).toContain("file2.tsx")
|
||||
expect(result).not.toContain("readme.md")
|
||||
expect(result).toContain("export class TestClass")
|
||||
})
|
||||
|
||||
it("should handle multiple definition types", async () => {
|
||||
const mockFiles = ["/test/path/file.ts"]
|
||||
;(listFiles as Mock).mockResolvedValue([mockFiles, new Set()])
|
||||
|
||||
const mockParser = {
|
||||
parse: vi.fn().mockReturnValue({
|
||||
rootNode: "mockNode",
|
||||
}),
|
||||
}
|
||||
|
||||
const mockQuery = {
|
||||
captures: vi.fn().mockReturnValue([
|
||||
{
|
||||
node: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
parent: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
},
|
||||
text: () => "class TestClass",
|
||||
},
|
||||
name: "name.definition.class",
|
||||
},
|
||||
{
|
||||
node: {
|
||||
startPosition: { row: 2 },
|
||||
endPosition: { row: 5 },
|
||||
parent: {
|
||||
startPosition: { row: 2 },
|
||||
endPosition: { row: 5 },
|
||||
},
|
||||
text: () => "testMethod()",
|
||||
},
|
||||
name: "name.definition.function",
|
||||
},
|
||||
]),
|
||||
}
|
||||
|
||||
;(loadRequiredLanguageParsers as Mock).mockResolvedValue({
|
||||
ts: { parser: mockParser, query: mockQuery },
|
||||
})
|
||||
|
||||
const fileContent = "class TestClass {\n" + " constructor() {}\n" + " testMethod() {}\n" + "}"
|
||||
|
||||
;(fs.readFile as Mock).mockResolvedValue(fileContent)
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
|
||||
expect(result).toContain("class TestClass")
|
||||
expect(result).toContain("testMethod()")
|
||||
})
|
||||
|
||||
it("should handle parsing errors gracefully", async () => {
|
||||
const mockFiles = ["/test/path/file.ts"]
|
||||
;(listFiles as Mock).mockResolvedValue([mockFiles, new Set()])
|
||||
|
||||
const mockParser = {
|
||||
parse: vi.fn().mockImplementation(() => {
|
||||
throw new Error("Parsing error")
|
||||
}),
|
||||
}
|
||||
|
||||
const mockQuery = {
|
||||
captures: vi.fn(),
|
||||
}
|
||||
|
||||
;(loadRequiredLanguageParsers as Mock).mockResolvedValue({
|
||||
ts: { parser: mockParser, query: mockQuery },
|
||||
})
|
||||
;(fs.readFile as Mock).mockResolvedValue("invalid code")
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
expect(result).toBe("No source code definitions found.")
|
||||
})
|
||||
|
||||
it("should capture arrow functions in JSX attributes with 4+ lines", async () => {
|
||||
const mockFiles = ["/test/path/jsx-arrow.tsx"]
|
||||
;(listFiles as Mock).mockResolvedValue([mockFiles, new Set()])
|
||||
|
||||
// Embed the fixture content directly
|
||||
const fixtureContent = `import React from 'react';
|
||||
|
||||
export const CheckboxExample = () => (
|
||||
<VSCodeCheckbox
|
||||
checked={isCustomTemperature}
|
||||
onChange={(e: any) => {
|
||||
const isChecked = e.target.checked
|
||||
setIsCustomTemperature(isChecked)
|
||||
|
||||
if (!isChecked) {
|
||||
setInputValue(null) // Unset the temperature
|
||||
} else {
|
||||
setInputValue(value ?? 0) // Use value from config
|
||||
}
|
||||
}}>
|
||||
<label className="block font-medium mb-1">
|
||||
{t("settings:temperature.useCustom")}
|
||||
</label>
|
||||
</VSCodeCheckbox>
|
||||
);`
|
||||
;(fs.readFile as Mock).mockResolvedValue(fixtureContent)
|
||||
|
||||
const lines = fixtureContent.split("\n")
|
||||
|
||||
// Define the node type for proper TypeScript support
|
||||
interface TreeNode {
|
||||
type?: string
|
||||
toString?: () => string
|
||||
text?: () => string
|
||||
startPosition?: { row: number }
|
||||
endPosition?: { row: number }
|
||||
children?: TreeNode[]
|
||||
fields?: () => Record<string, any>
|
||||
printTree?: (depth?: number) => string
|
||||
}
|
||||
|
||||
// Create a more detailed mock rootNode for debugging Tree-sitter structure
|
||||
// Helper function to print tree nodes
|
||||
const printTree = (node: TreeNode, depth = 0): string => {
|
||||
let result = ""
|
||||
const indent = " ".repeat(depth)
|
||||
|
||||
// Print node details
|
||||
result += `${indent}Type: ${node.type || "ROOT"}\n`
|
||||
result += `${indent}Text: "${node.text ? node.text() : "root"}"`
|
||||
|
||||
// Print fields if available
|
||||
if (node.fields) {
|
||||
result += "\n" + indent + "Fields: " + JSON.stringify(node.fields(), null, 2)
|
||||
}
|
||||
|
||||
// Print children recursively
|
||||
if (node.children && node.children.length > 0) {
|
||||
result += "\n" + indent + "Children:"
|
||||
for (const child of node.children) {
|
||||
result += "\n" + printTree(child, depth + 1)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
const mockRootNode: TreeNode = {
|
||||
toString: () => fixtureContent,
|
||||
text: () => fixtureContent,
|
||||
printTree: function (depth = 0) {
|
||||
return printTree(this, depth)
|
||||
},
|
||||
children: [
|
||||
{
|
||||
type: "class_declaration",
|
||||
text: () => "class TestComponent extends React.Component",
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 20 },
|
||||
printTree: function (depth = 0) {
|
||||
return printTree(this, depth)
|
||||
},
|
||||
children: [
|
||||
{
|
||||
type: "type_identifier",
|
||||
text: () => "TestComponent",
|
||||
printTree: function (depth = 0) {
|
||||
return printTree(this, depth)
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "extends_clause",
|
||||
text: () => "extends React.Component",
|
||||
printTree: function (depth = 0) {
|
||||
return printTree(this, depth)
|
||||
},
|
||||
children: [
|
||||
{
|
||||
type: "generic_type",
|
||||
text: () => "React.Component",
|
||||
children: [{ type: "member_expression", text: () => "React.Component" }],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
// Debug output to see field names
|
||||
fields: () => {
|
||||
return {
|
||||
name: [{ type: "type_identifier", text: () => "TestComponent" }],
|
||||
class_heritage: [{ type: "extends_clause", text: () => "extends React.Component" }],
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const mockParser = {
|
||||
parse: vi.fn().mockReturnValue({
|
||||
rootNode: mockRootNode,
|
||||
}),
|
||||
}
|
||||
|
||||
const mockQuery = {
|
||||
captures: vi.fn().mockImplementation(() => {
|
||||
// Log tree structure for debugging
|
||||
console.log("TREE STRUCTURE:")
|
||||
if (mockRootNode.printTree) {
|
||||
console.log(mockRootNode.printTree())
|
||||
} else {
|
||||
console.log("Tree structure:", JSON.stringify(mockRootNode, null, 2))
|
||||
}
|
||||
|
||||
return [
|
||||
{
|
||||
node: {
|
||||
startPosition: { row: 4 },
|
||||
endPosition: { row: 14 },
|
||||
text: () => lines[4],
|
||||
parent: {
|
||||
startPosition: { row: 4 },
|
||||
endPosition: { row: 14 },
|
||||
text: () => lines[4],
|
||||
},
|
||||
},
|
||||
name: "definition.lambda",
|
||||
},
|
||||
]
|
||||
}),
|
||||
}
|
||||
|
||||
;(loadRequiredLanguageParsers as Mock).mockResolvedValue({
|
||||
tsx: { parser: mockParser, query: mockQuery },
|
||||
})
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
|
||||
// Verify function found and correctly parsed
|
||||
expect(result).toContain("jsx-arrow.tsx")
|
||||
expect(result).toContain("5--15 |")
|
||||
|
||||
// Verify line count
|
||||
const capture = mockQuery.captures.mock.results[0].value[0]
|
||||
expect(capture.node.endPosition.row - capture.node.startPosition.row).toBeGreaterThanOrEqual(4)
|
||||
})
|
||||
|
||||
it("should respect file limit", async () => {
|
||||
const mockFiles = Array(100)
|
||||
.fill(0)
|
||||
.map((_, i) => `/test/path/file${i}.ts`)
|
||||
;(listFiles as Mock).mockResolvedValue([mockFiles, new Set()])
|
||||
|
||||
const mockParser = {
|
||||
parse: vi.fn().mockReturnValue({
|
||||
rootNode: "mockNode",
|
||||
}),
|
||||
}
|
||||
|
||||
const mockQuery = {
|
||||
captures: vi.fn().mockReturnValue([]),
|
||||
}
|
||||
|
||||
;(loadRequiredLanguageParsers as Mock).mockResolvedValue({
|
||||
ts: { parser: mockParser, query: mockQuery },
|
||||
})
|
||||
|
||||
await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
|
||||
// Should only process first 50 files
|
||||
expect(mockParser.parse).toHaveBeenCalledTimes(50)
|
||||
})
|
||||
|
||||
it("should handle various supported file extensions", async () => {
|
||||
const mockFiles = [
|
||||
"/test/path/script.js",
|
||||
"/test/path/app.py",
|
||||
"/test/path/main.rs",
|
||||
"/test/path/program.cpp",
|
||||
"/test/path/code.go",
|
||||
"/test/path/app.kt",
|
||||
"/test/path/script.kts",
|
||||
]
|
||||
|
||||
;(listFiles as Mock).mockResolvedValue([mockFiles, new Set()])
|
||||
|
||||
const mockParser = {
|
||||
parse: vi.fn().mockReturnValue({
|
||||
rootNode: "mockNode",
|
||||
}),
|
||||
}
|
||||
|
||||
const mockQuery = {
|
||||
captures: vi.fn().mockReturnValue([
|
||||
{
|
||||
node: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
parent: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
},
|
||||
text: () => "function test() {}",
|
||||
},
|
||||
name: "name",
|
||||
},
|
||||
]),
|
||||
}
|
||||
|
||||
;(loadRequiredLanguageParsers as Mock).mockResolvedValue({
|
||||
js: { parser: mockParser, query: mockQuery },
|
||||
py: { parser: mockParser, query: mockQuery },
|
||||
rs: { parser: mockParser, query: mockQuery },
|
||||
cpp: { parser: mockParser, query: mockQuery },
|
||||
go: { parser: mockParser, query: mockQuery },
|
||||
kt: { parser: mockParser, query: mockQuery },
|
||||
kts: { parser: mockParser, query: mockQuery },
|
||||
})
|
||||
;(fs.readFile as Mock).mockResolvedValue("function test() {}")
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
|
||||
expect(result).toContain("script.js")
|
||||
expect(result).toContain("app.py")
|
||||
expect(result).toContain("main.rs")
|
||||
expect(result).toContain("program.cpp")
|
||||
expect(result).toContain("code.go")
|
||||
expect(result).toContain("app.kt")
|
||||
expect(result).toContain("script.kts")
|
||||
})
|
||||
|
||||
it("should normalize paths in output", async () => {
|
||||
const mockFiles = ["/test/path/dir\\file.ts"]
|
||||
;(listFiles as Mock).mockResolvedValue([mockFiles, new Set()])
|
||||
|
||||
const mockParser = {
|
||||
parse: vi.fn().mockReturnValue({
|
||||
rootNode: "mockNode",
|
||||
}),
|
||||
}
|
||||
|
||||
const mockQuery = {
|
||||
captures: vi.fn().mockReturnValue([
|
||||
{
|
||||
node: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
parent: {
|
||||
startPosition: { row: 0 },
|
||||
endPosition: { row: 3 },
|
||||
},
|
||||
text: () => "class Test {}",
|
||||
},
|
||||
name: "name",
|
||||
},
|
||||
]),
|
||||
}
|
||||
|
||||
;(loadRequiredLanguageParsers as Mock).mockResolvedValue({
|
||||
ts: { parser: mockParser, query: mockQuery },
|
||||
})
|
||||
;(fs.readFile as Mock).mockResolvedValue("class Test {}")
|
||||
|
||||
const result = await parseSourceCodeForDefinitionsTopLevel("/test/path")
|
||||
|
||||
// Should use forward slashes regardless of platform
|
||||
expect(result).toContain("dir/file.ts")
|
||||
expect(result).not.toContain("dir\\file.ts")
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
import * as fs from "fs/promises"
|
||||
import * as path from "path"
|
||||
import { listFiles } from "../glob/list-files"
|
||||
import { LanguageParser, loadRequiredLanguageParsers } from "./languageParser"
|
||||
import { fileExistsAtPath } from "../../utils/fs"
|
||||
import { parseMarkdown } from "./markdownParser"
|
||||
|
|
@ -149,89 +148,6 @@ export async function parseSourceCodeDefinitionsForFile(
|
|||
return undefined
|
||||
}
|
||||
|
||||
// TODO: implement caching behavior to avoid having to keep analyzing project for new tasks.
|
||||
export async function parseSourceCodeForDefinitionsTopLevel(
|
||||
dirPath: string,
|
||||
rooIgnoreController?: RooIgnoreController,
|
||||
): Promise<string> {
|
||||
// check if the path exists
|
||||
const dirExists = await fileExistsAtPath(path.resolve(dirPath))
|
||||
if (!dirExists) {
|
||||
return "This directory does not exist or you do not have permission to access it."
|
||||
}
|
||||
|
||||
// Get all files at top level (not gitignored)
|
||||
const [allFiles, _] = await listFiles(dirPath, false, 200)
|
||||
|
||||
let result = ""
|
||||
|
||||
// Separate files to parse and remaining files
|
||||
const { filesToParse } = separateFiles(allFiles)
|
||||
|
||||
// Filter filepaths for access if controller is provided
|
||||
const allowedFilesToParse = rooIgnoreController ? rooIgnoreController.filterPaths(filesToParse) : filesToParse
|
||||
|
||||
// Separate markdown files from other files
|
||||
const markdownFiles: string[] = []
|
||||
const otherFiles: string[] = []
|
||||
|
||||
for (const file of allowedFilesToParse) {
|
||||
const ext = path.extname(file).toLowerCase()
|
||||
if (ext === ".md" || ext === ".markdown") {
|
||||
markdownFiles.push(file)
|
||||
} else {
|
||||
otherFiles.push(file)
|
||||
}
|
||||
}
|
||||
|
||||
// Load language parsers only for non-markdown files
|
||||
const languageParsers = await loadRequiredLanguageParsers(otherFiles)
|
||||
|
||||
// Process markdown files
|
||||
for (const file of markdownFiles) {
|
||||
// Check if we have permission to access this file
|
||||
if (rooIgnoreController && !rooIgnoreController.validateAccess(file)) {
|
||||
continue
|
||||
}
|
||||
|
||||
try {
|
||||
// Read file content
|
||||
const fileContent = await fs.readFile(file, "utf8")
|
||||
|
||||
// Split the file content into individual lines
|
||||
const lines = fileContent.split("\n")
|
||||
|
||||
// Parse markdown content to get captures
|
||||
const markdownCaptures = parseMarkdown(fileContent)
|
||||
|
||||
// Process the captures
|
||||
const markdownDefinitions = processCaptures(markdownCaptures, lines, "markdown")
|
||||
|
||||
if (markdownDefinitions) {
|
||||
result += `# ${path.relative(dirPath, file).toPosix()}\n${markdownDefinitions}\n`
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`Error parsing markdown file: ${error}\n`)
|
||||
}
|
||||
}
|
||||
|
||||
// Process other files using tree-sitter
|
||||
for (const file of otherFiles) {
|
||||
const definitions = await parseFile(file, languageParsers, rooIgnoreController)
|
||||
if (definitions) {
|
||||
result += `# ${path.relative(dirPath, file).toPosix()}\n${definitions}\n`
|
||||
}
|
||||
}
|
||||
|
||||
return result ? result : "No source code definitions found."
|
||||
}
|
||||
|
||||
function separateFiles(allFiles: string[]): { filesToParse: string[]; remainingFiles: string[] } {
|
||||
const filesToParse = allFiles.filter((file) => extensions.includes(path.extname(file))).slice(0, 50) // 50 files max
|
||||
const remainingFiles = allFiles.filter((file) => !filesToParse.includes(file))
|
||||
return { filesToParse, remainingFiles }
|
||||
}
|
||||
|
||||
/*
|
||||
Parsing files using tree-sitter
|
||||
|
||||
|
|
|
|||
|
|
@ -371,7 +371,6 @@ export interface ClineSayTool {
|
|||
| "fetchInstructions"
|
||||
| "listFilesTopLevel"
|
||||
| "listFilesRecursive"
|
||||
| "listCodeDefinitionNames"
|
||||
| "searchFiles"
|
||||
| "switchMode"
|
||||
| "newTask"
|
||||
|
|
|
|||
|
|
@ -102,7 +102,6 @@ export type NativeToolArgs = {
|
|||
codebase_search: { query: string; path?: string }
|
||||
fetch_instructions: { task: string }
|
||||
generate_image: GenerateImageParams
|
||||
list_code_definition_names: { path: string }
|
||||
run_slash_command: { command: string; args?: string }
|
||||
search_files: { path: string; regex: string; file_pattern?: string | null }
|
||||
switch_mode: { mode_slug: string; reason: string }
|
||||
|
|
@ -184,11 +183,6 @@ export interface ListFilesToolUse extends ToolUse<"list_files"> {
|
|||
params: Partial<Pick<Record<ToolParamName, string>, "path" | "recursive">>
|
||||
}
|
||||
|
||||
export interface ListCodeDefinitionNamesToolUse extends ToolUse<"list_code_definition_names"> {
|
||||
name: "list_code_definition_names"
|
||||
params: Partial<Pick<Record<ToolParamName, string>, "path">>
|
||||
}
|
||||
|
||||
export interface BrowserActionToolUse extends ToolUse<"browser_action"> {
|
||||
name: "browser_action"
|
||||
params: Partial<Pick<Record<ToolParamName, string>, "action" | "url" | "coordinate" | "text" | "size" | "path">>
|
||||
|
|
@ -252,7 +246,6 @@ export const TOOL_DISPLAY_NAMES: Record<ToolName, string> = {
|
|||
apply_patch: "apply patches using codex format",
|
||||
search_files: "search files",
|
||||
list_files: "list files",
|
||||
list_code_definition_names: "list definitions",
|
||||
browser_action: "use a browser",
|
||||
use_mcp_tool: "use mcp tools",
|
||||
access_mcp_resource: "access mcp resources",
|
||||
|
|
@ -269,14 +262,7 @@ export const TOOL_DISPLAY_NAMES: Record<ToolName, string> = {
|
|||
// Define available tool groups.
|
||||
export const TOOL_GROUPS: Record<ToolGroup, ToolGroupConfig> = {
|
||||
read: {
|
||||
tools: [
|
||||
"read_file",
|
||||
"fetch_instructions",
|
||||
"search_files",
|
||||
"list_files",
|
||||
"list_code_definition_names",
|
||||
"codebase_search",
|
||||
],
|
||||
tools: ["read_file", "fetch_instructions", "search_files", "list_files", "codebase_search"],
|
||||
},
|
||||
edit: {
|
||||
tools: ["apply_diff", "write_to_file", "generate_image"],
|
||||
|
|
|
|||
|
|
@ -706,32 +706,6 @@ export const ChatRowContent = ({
|
|||
</div>
|
||||
</>
|
||||
)
|
||||
case "listCodeDefinitionNames":
|
||||
return (
|
||||
<>
|
||||
<div style={headerStyle}>
|
||||
{toolIcon("file-code")}
|
||||
<span style={{ fontWeight: "bold" }}>
|
||||
{message.type === "ask"
|
||||
? tool.isOutsideWorkspace
|
||||
? t("chat:directoryOperations.wantsToViewDefinitionsOutsideWorkspace")
|
||||
: t("chat:directoryOperations.wantsToViewDefinitions")
|
||||
: tool.isOutsideWorkspace
|
||||
? t("chat:directoryOperations.didViewDefinitionsOutsideWorkspace")
|
||||
: t("chat:directoryOperations.didViewDefinitions")}
|
||||
</span>
|
||||
</div>
|
||||
<div className="pl-6">
|
||||
<CodeAccordian
|
||||
path={tool.path}
|
||||
code={tool.content}
|
||||
language="markdown"
|
||||
isExpanded={isExpanded}
|
||||
onToggleExpand={handleToggleExpand}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
case "searchFiles":
|
||||
return (
|
||||
<>
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/ca/chat.json
generated
6
webview-ui/src/i18n/locales/ca/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo ha vist els fitxers de nivell superior en aquest directori",
|
||||
"wantsToViewRecursive": "Roo vol veure recursivament tots els fitxers en aquest directori",
|
||||
"didViewRecursive": "Roo ha vist recursivament tots els fitxers en aquest directori",
|
||||
"wantsToViewDefinitions": "Roo vol veure noms de definicions de codi font utilitzats en aquest directori",
|
||||
"didViewDefinitions": "Roo ha vist noms de definicions de codi font utilitzats en aquest directori",
|
||||
"wantsToSearch": "Roo vol cercar en aquest directori <code>{{regex}}</code>",
|
||||
"didSearch": "Roo ha cercat en aquest directori <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo vol cercar en aquest directori (fora de l'espai de treball) <code>{{regex}}</code>",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo vol veure els fitxers de nivell superior en aquest directori (fora de l'espai de treball)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo ha vist els fitxers de nivell superior en aquest directori (fora de l'espai de treball)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo vol veure recursivament tots els fitxers en aquest directori (fora de l'espai de treball)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo ha vist recursivament tots els fitxers en aquest directori (fora de l'espai de treball)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo vol veure noms de definicions de codi font utilitzats en aquest directori (fora de l'espai de treball)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo ha vist noms de definicions de codi font utilitzats en aquest directori (fora de l'espai de treball)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo ha vist recursivament tots els fitxers en aquest directori (fora de l'espai de treball)"
|
||||
},
|
||||
"commandOutput": "Sortida de la comanda",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/de/chat.json
generated
6
webview-ui/src/i18n/locales/de/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo hat die Dateien auf oberster Ebene in diesem Verzeichnis angezeigt",
|
||||
"wantsToViewRecursive": "Roo möchte rekursiv alle Dateien in diesem Verzeichnis anzeigen",
|
||||
"didViewRecursive": "Roo hat rekursiv alle Dateien in diesem Verzeichnis angezeigt",
|
||||
"wantsToViewDefinitions": "Roo möchte Quellcode-Definitionsnamen in diesem Verzeichnis anzeigen",
|
||||
"didViewDefinitions": "Roo hat Quellcode-Definitionsnamen in diesem Verzeichnis angezeigt",
|
||||
"wantsToSearch": "Roo möchte dieses Verzeichnis nach <code>{{regex}}</code> durchsuchen",
|
||||
"didSearch": "Roo hat dieses Verzeichnis nach <code>{{regex}}</code> durchsucht",
|
||||
"wantsToSearchOutsideWorkspace": "Roo möchte dieses Verzeichnis (außerhalb des Arbeitsbereichs) nach <code>{{regex}}</code> durchsuchen",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo möchte die Dateien auf oberster Ebene in diesem Verzeichnis (außerhalb des Arbeitsbereichs) anzeigen",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo hat die Dateien auf oberster Ebene in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo möchte rekursiv alle Dateien in diesem Verzeichnis (außerhalb des Arbeitsbereichs) anzeigen",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo hat rekursiv alle Dateien in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo möchte Quellcode-Definitionsnamen in diesem Verzeichnis (außerhalb des Arbeitsbereichs) anzeigen",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo hat Quellcode-Definitionsnamen in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo hat rekursiv alle Dateien in diesem Verzeichnis (außerhalb des Arbeitsbereichs) angezeigt"
|
||||
},
|
||||
"commandOutput": "Befehlsausgabe",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
|
|
@ -222,10 +222,6 @@
|
|||
"didViewRecursive": "Roo recursively viewed all files in this directory",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo wants to recursively view all files in this directory (outside workspace)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo recursively viewed all files in this directory (outside workspace)",
|
||||
"wantsToViewDefinitions": "Roo wants to view source code definition names used in this directory",
|
||||
"didViewDefinitions": "Roo viewed source code definition names used in this directory",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo wants to view source code definition names used in this directory (outside workspace)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo viewed source code definition names used in this directory (outside workspace)",
|
||||
"wantsToSearch": "Roo wants to search this directory for <code>{{regex}}</code>",
|
||||
"didSearch": "Roo searched this directory for <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo wants to search this directory (outside workspace) for <code>{{regex}}</code>",
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/es/chat.json
generated
6
webview-ui/src/i18n/locales/es/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo vio los archivos de nivel superior en este directorio",
|
||||
"wantsToViewRecursive": "Roo quiere ver recursivamente todos los archivos en este directorio",
|
||||
"didViewRecursive": "Roo vio recursivamente todos los archivos en este directorio",
|
||||
"wantsToViewDefinitions": "Roo quiere ver nombres de definiciones de código fuente utilizados en este directorio",
|
||||
"didViewDefinitions": "Roo vio nombres de definiciones de código fuente utilizados en este directorio",
|
||||
"wantsToSearch": "Roo quiere buscar en este directorio <code>{{regex}}</code>",
|
||||
"didSearch": "Roo buscó en este directorio <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo quiere buscar en este directorio (fuera del espacio de trabajo) <code>{{regex}}</code>",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo quiere ver los archivos de nivel superior en este directorio (fuera del espacio de trabajo)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo vio los archivos de nivel superior en este directorio (fuera del espacio de trabajo)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo quiere ver recursivamente todos los archivos en este directorio (fuera del espacio de trabajo)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo vio recursivamente todos los archivos en este directorio (fuera del espacio de trabajo)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo quiere ver nombres de definiciones de código fuente utilizados en este directorio (fuera del espacio de trabajo)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo vio nombres de definiciones de código fuente utilizados en este directorio (fuera del espacio de trabajo)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo vio recursivamente todos los archivos en este directorio (fuera del espacio de trabajo)"
|
||||
},
|
||||
"commandOutput": "Salida del comando",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/fr/chat.json
generated
6
webview-ui/src/i18n/locales/fr/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo a vu les fichiers de premier niveau dans ce répertoire",
|
||||
"wantsToViewRecursive": "Roo veut voir récursivement tous les fichiers dans ce répertoire",
|
||||
"didViewRecursive": "Roo a vu récursivement tous les fichiers dans ce répertoire",
|
||||
"wantsToViewDefinitions": "Roo veut voir les noms de définitions de code source utilisés dans ce répertoire",
|
||||
"didViewDefinitions": "Roo a vu les noms de définitions de code source utilisés dans ce répertoire",
|
||||
"wantsToSearch": "Roo veut rechercher dans ce répertoire <code>{{regex}}</code>",
|
||||
"didSearch": "Roo a recherché dans ce répertoire <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo veut rechercher dans ce répertoire (hors espace de travail) <code>{{regex}}</code>",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo veut voir les fichiers de premier niveau dans ce répertoire (hors espace de travail)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo a vu les fichiers de premier niveau dans ce répertoire (hors espace de travail)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo veut voir récursivement tous les fichiers dans ce répertoire (hors espace de travail)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo a vu récursivement tous les fichiers dans ce répertoire (hors espace de travail)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo veut voir les noms de définitions de code source utilisés dans ce répertoire (hors espace de travail)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo a vu les noms de définitions de code source utilisés dans ce répertoire (hors espace de travail)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo a vu récursivement tous les fichiers dans ce répertoire (hors espace de travail)"
|
||||
},
|
||||
"commandOutput": "Sortie de la Commande",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/hi/chat.json
generated
6
webview-ui/src/i18n/locales/hi/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo ने इस निर्देशिका में शीर्ष स्तर की फ़ाइलें देखीं",
|
||||
"wantsToViewRecursive": "Roo इस निर्देशिका में सभी फ़ाइलों को पुनरावर्ती रूप से देखना चाहता है",
|
||||
"didViewRecursive": "Roo ने इस निर्देशिका में सभी फ़ाइलों को पुनरावर्ती रूप से देखा",
|
||||
"wantsToViewDefinitions": "Roo इस निर्देशिका में उपयोग किए गए सोर्स कोड परिभाषा नामों को देखना चाहता है",
|
||||
"didViewDefinitions": "Roo ने इस निर्देशिका में उपयोग किए गए सोर्स कोड परिभाषा नामों को देखा",
|
||||
"wantsToSearch": "Roo इस निर्देशिका में <code>{{regex}}</code> के लिए खोज करना चाहता है",
|
||||
"didSearch": "Roo ने इस निर्देशिका में <code>{{regex}}</code> के लिए खोज की",
|
||||
"wantsToSearchOutsideWorkspace": "Roo इस निर्देशिका (कार्यक्षेत्र के बाहर) में <code>{{regex}}</code> के लिए खोज करना चाहता है",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo इस निर्देशिका (कार्यक्षेत्र के बाहर) में शीर्ष स्तर की फ़ाइलें देखना चाहता है",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में शीर्ष स्तर की फ़ाइलें देखीं",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo इस निर्देशिका (कार्यक्षेत्र के बाहर) में सभी फ़ाइलों को पुनरावर्ती रूप से देखना चाहता है",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में सभी फ़ाइलों को पुनरावर्ती रूप से देखा",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo इस निर्देशिका (कार्यक्षेत्र के बाहर) में उपयोग किए गए सोर्स कोड परिभाषा नामों को देखना चाहता है",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में उपयोग किए गए सोर्स कोड परिभाषा नामों को देखा"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo ने इस निर्देशिका (कार्यक्षेत्र के बाहर) में सभी फ़ाइलों को पुनरावर्ती रूप से देखा"
|
||||
},
|
||||
"commandOutput": "कमांड आउटपुट",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/id/chat.json
generated
6
webview-ui/src/i18n/locales/id/chat.json
generated
|
|
@ -223,8 +223,6 @@
|
|||
"didViewTopLevel": "Roo melihat file tingkat atas di direktori ini",
|
||||
"wantsToViewRecursive": "Roo ingin melihat semua file secara rekursif di direktori ini",
|
||||
"didViewRecursive": "Roo melihat semua file secara rekursif di direktori ini",
|
||||
"wantsToViewDefinitions": "Roo ingin melihat nama definisi source code yang digunakan di direktori ini",
|
||||
"didViewDefinitions": "Roo melihat nama definisi source code yang digunakan di direktori ini",
|
||||
"wantsToSearch": "Roo ingin mencari direktori ini untuk <code>{{regex}}</code>",
|
||||
"didSearch": "Roo mencari direktori ini untuk <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo ingin mencari direktori ini (di luar workspace) untuk <code>{{regex}}</code>",
|
||||
|
|
@ -232,9 +230,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo ingin melihat file tingkat atas di direktori ini (di luar workspace)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo melihat file tingkat atas di direktori ini (di luar workspace)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo ingin melihat semua file secara rekursif di direktori ini (di luar workspace)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo melihat semua file secara rekursif di direktori ini (di luar workspace)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo ingin melihat nama definisi source code yang digunakan di direktori ini (di luar workspace)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo melihat nama definisi source code yang digunakan di direktori ini (di luar workspace)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo melihat semua file secara rekursif di direktori ini (di luar workspace)"
|
||||
},
|
||||
"codebaseSearch": {
|
||||
"wantsToSearch": "Roo ingin mencari codebase untuk <code>{{query}}</code>",
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/it/chat.json
generated
6
webview-ui/src/i18n/locales/it/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo ha visualizzato i file di primo livello in questa directory",
|
||||
"wantsToViewRecursive": "Roo vuole visualizzare ricorsivamente tutti i file in questa directory",
|
||||
"didViewRecursive": "Roo ha visualizzato ricorsivamente tutti i file in questa directory",
|
||||
"wantsToViewDefinitions": "Roo vuole visualizzare i nomi delle definizioni di codice sorgente utilizzate in questa directory",
|
||||
"didViewDefinitions": "Roo ha visualizzato i nomi delle definizioni di codice sorgente utilizzate in questa directory",
|
||||
"wantsToSearch": "Roo vuole cercare in questa directory <code>{{regex}}</code>",
|
||||
"didSearch": "Roo ha cercato in questa directory <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo vuole cercare in questa directory (fuori dall'area di lavoro) <code>{{regex}}</code>",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo vuole visualizzare i file di primo livello in questa directory (fuori dall'area di lavoro)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo ha visualizzato i file di primo livello in questa directory (fuori dall'area di lavoro)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo vuole visualizzare ricorsivamente tutti i file in questa directory (fuori dall'area di lavoro)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo ha visualizzato ricorsivamente tutti i file in questa directory (fuori dall'area di lavoro)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo vuole visualizzare i nomi delle definizioni di codice sorgente utilizzate in questa directory (fuori dall'area di lavoro)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo ha visualizzato i nomi delle definizioni di codice sorgente utilizzate in questa directory (fuori dall'area di lavoro)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo ha visualizzato ricorsivamente tutti i file in questa directory (fuori dall'area di lavoro)"
|
||||
},
|
||||
"commandOutput": "Output del Comando",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/ja/chat.json
generated
6
webview-ui/src/i18n/locales/ja/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Rooはこのディレクトリのトップレベルファイルを表示しました",
|
||||
"wantsToViewRecursive": "Rooはこのディレクトリのすべてのファイルを再帰的に表示したい",
|
||||
"didViewRecursive": "Rooはこのディレクトリのすべてのファイルを再帰的に表示しました",
|
||||
"wantsToViewDefinitions": "Rooはこのディレクトリで使用されているソースコード定義名を表示したい",
|
||||
"didViewDefinitions": "Rooはこのディレクトリで使用されているソースコード定義名を表示しました",
|
||||
"wantsToSearch": "Rooはこのディレクトリで <code>{{regex}}</code> を検索したい",
|
||||
"didSearch": "Rooはこのディレクトリで <code>{{regex}}</code> を検索しました",
|
||||
"wantsToSearchOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)で <code>{{regex}}</code> を検索したい",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のトップレベルファイルを表示したい",
|
||||
"didViewTopLevelOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のトップレベルファイルを表示しました",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のすべてのファイルを再帰的に表示したい",
|
||||
"didViewRecursiveOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のすべてのファイルを再帰的に表示しました",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)で使用されているソースコード定義名を表示したい",
|
||||
"didViewDefinitionsOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)で使用されているソースコード定義名を表示しました"
|
||||
"didViewRecursiveOutsideWorkspace": "Rooはこのディレクトリ(ワークスペース外)のすべてのファイルを再帰的に表示しました"
|
||||
},
|
||||
"commandOutput": "コマンド出力",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/ko/chat.json
generated
6
webview-ui/src/i18n/locales/ko/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo가 이 디렉토리의 최상위 파일을 보았습니다",
|
||||
"wantsToViewRecursive": "Roo가 이 디렉토리의 모든 파일을 재귀적으로 보고 싶어합니다",
|
||||
"didViewRecursive": "Roo가 이 디렉토리의 모든 파일을 재귀적으로 보았습니다",
|
||||
"wantsToViewDefinitions": "Roo가 이 디렉토리에서 사용된 소스 코드 정의 이름을 보고 싶어합니다",
|
||||
"didViewDefinitions": "Roo가 이 디렉토리에서 사용된 소스 코드 정의 이름을 보았습니다",
|
||||
"wantsToSearch": "Roo가 이 디렉토리에서 <code>{{regex}}</code>을(를) 검색하고 싶어합니다",
|
||||
"didSearch": "Roo가 이 디렉토리에서 <code>{{regex}}</code>을(를) 검색했습니다",
|
||||
"wantsToSearchOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)에서 <code>{{regex}}</code>을(를) 검색하고 싶어합니다",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)의 최상위 파일을 보고 싶어합니다",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)의 최상위 파일을 보았습니다",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)의 모든 파일을 재귀적으로 보고 싶어합니다",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)의 모든 파일을 재귀적으로 보았습니다",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)에서 사용된 소스 코드 정의 이름을 보고 싶어합니다",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)에서 사용된 소스 코드 정의 이름을 보았습니다"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo가 이 디렉토리(워크스페이스 외부)의 모든 파일을 재귀적으로 보았습니다"
|
||||
},
|
||||
"commandOutput": "명령 출력",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/nl/chat.json
generated
6
webview-ui/src/i18n/locales/nl/chat.json
generated
|
|
@ -194,8 +194,6 @@
|
|||
"didViewTopLevel": "Roo heeft de bovenliggende bestanden in deze map bekeken",
|
||||
"wantsToViewRecursive": "Roo wil alle bestanden in deze map recursief bekijken",
|
||||
"didViewRecursive": "Roo heeft alle bestanden in deze map recursief bekeken",
|
||||
"wantsToViewDefinitions": "Roo wil broncode-definitienamen bekijken die in deze map worden gebruikt",
|
||||
"didViewDefinitions": "Roo heeft broncode-definitienamen bekeken die in deze map worden gebruikt",
|
||||
"wantsToSearch": "Roo wil deze map doorzoeken op <code>{{regex}}</code>",
|
||||
"didSearch": "Roo heeft deze map doorzocht op <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo wil deze map (buiten werkruimte) doorzoeken op <code>{{regex}}</code>",
|
||||
|
|
@ -203,9 +201,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo wil de bovenliggende bestanden in deze map (buiten werkruimte) bekijken",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo heeft de bovenliggende bestanden in deze map (buiten werkruimte) bekeken",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo wil alle bestanden in deze map (buiten werkruimte) recursief bekijken",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo heeft alle bestanden in deze map (buiten werkruimte) recursief bekeken",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo wil broncode-definitienamen bekijken die in deze map (buiten werkruimte) worden gebruikt",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo heeft broncode-definitienamen bekeken die in deze map (buiten werkruimte) worden gebruikt"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo heeft alle bestanden in deze map (buiten werkruimte) recursief bekeken"
|
||||
},
|
||||
"commandOutput": "Commando-uitvoer",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/pl/chat.json
generated
6
webview-ui/src/i18n/locales/pl/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo zobaczył pliki najwyższego poziomu w tym katalogu",
|
||||
"wantsToViewRecursive": "Roo chce rekurencyjnie zobaczyć wszystkie pliki w tym katalogu",
|
||||
"didViewRecursive": "Roo rekurencyjnie zobaczył wszystkie pliki w tym katalogu",
|
||||
"wantsToViewDefinitions": "Roo chce zobaczyć nazwy definicji kodu źródłowego używane w tym katalogu",
|
||||
"didViewDefinitions": "Roo zobaczył nazwy definicji kodu źródłowego używane w tym katalogu",
|
||||
"wantsToSearch": "Roo chce przeszukać ten katalog w poszukiwaniu <code>{{regex}}</code>",
|
||||
"didSearch": "Roo przeszukał ten katalog w poszukiwaniu <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo chce przeszukać ten katalog (poza obszarem roboczym) w poszukiwaniu <code>{{regex}}</code>",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo chce zobaczyć pliki najwyższego poziomu w tym katalogu (poza obszarem roboczym)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo zobaczył pliki najwyższego poziomu w tym katalogu (poza obszarem roboczym)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo chce rekurencyjnie zobaczyć wszystkie pliki w tym katalogu (poza obszarem roboczym)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo rekurencyjnie zobaczył wszystkie pliki w tym katalogu (poza obszarem roboczym)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo chce zobaczyć nazwy definicji kodu źródłowego używane w tym katalogu (poza obszarem roboczym)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo zobaczył nazwy definicji kodu źródłowego używane w tym katalogu (poza obszarem roboczym)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo rekurencyjnie zobaczył wszystkie pliki w tym katalogu (poza obszarem roboczym)"
|
||||
},
|
||||
"commandOutput": "Wyjście polecenia",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/pt-BR/chat.json
generated
6
webview-ui/src/i18n/locales/pt-BR/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo visualizou os arquivos de nível superior neste diretório",
|
||||
"wantsToViewRecursive": "Roo quer visualizar recursivamente todos os arquivos neste diretório",
|
||||
"didViewRecursive": "Roo visualizou recursivamente todos os arquivos neste diretório",
|
||||
"wantsToViewDefinitions": "Roo quer visualizar nomes de definição de código-fonte usados neste diretório",
|
||||
"didViewDefinitions": "Roo visualizou nomes de definição de código-fonte usados neste diretório",
|
||||
"wantsToSearch": "Roo quer pesquisar neste diretório por <code>{{regex}}</code>",
|
||||
"didSearch": "Roo pesquisou neste diretório por <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo quer pesquisar neste diretório (fora do espaço de trabalho) por <code>{{regex}}</code>",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo quer visualizar os arquivos de nível superior neste diretório (fora do espaço de trabalho)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo visualizou os arquivos de nível superior neste diretório (fora do espaço de trabalho)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo quer visualizar recursivamente todos os arquivos neste diretório (fora do espaço de trabalho)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo visualizou recursivamente todos os arquivos neste diretório (fora do espaço de trabalho)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo quer visualizar nomes de definição de código-fonte usados neste diretório (fora do espaço de trabalho)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo visualizou nomes de definição de código-fonte usados neste diretório (fora do espaço de trabalho)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo visualizou recursivamente todos os arquivos neste diretório (fora do espaço de trabalho)"
|
||||
},
|
||||
"commandOutput": "Saída do comando",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/ru/chat.json
generated
6
webview-ui/src/i18n/locales/ru/chat.json
generated
|
|
@ -194,8 +194,6 @@
|
|||
"didViewTopLevel": "Roo просмотрел файлы верхнего уровня в этой директории",
|
||||
"wantsToViewRecursive": "Roo хочет рекурсивно просмотреть все файлы в этой директории",
|
||||
"didViewRecursive": "Roo рекурсивно просмотрел все файлы в этой директории",
|
||||
"wantsToViewDefinitions": "Roo хочет просмотреть имена определений исходного кода в этой директории",
|
||||
"didViewDefinitions": "Roo просмотрел имена определений исходного кода в этой директории",
|
||||
"wantsToSearch": "Roo хочет выполнить поиск в этой директории по <code>{{regex}}</code>",
|
||||
"didSearch": "Roo выполнил поиск в этой директории по <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo хочет выполнить поиск в этой директории (вне рабочего пространства) по <code>{{regex}}</code>",
|
||||
|
|
@ -203,9 +201,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo хочет просмотреть файлы верхнего уровня в этой директории (вне рабочего пространства)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo просмотрел файлы верхнего уровня в этой директории (вне рабочего пространства)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo хочет рекурсивно просмотреть все файлы в этой директории (вне рабочего пространства)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo рекурсивно просмотрел все файлы в этой директории (вне рабочего пространства)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo хочет просмотреть имена определений исходного кода в этой директории (вне рабочего пространства)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo просмотрел имена определений исходного кода в этой директории (вне рабочего пространства)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo рекурсивно просмотрел все файлы в этой директории (вне рабочего пространства)"
|
||||
},
|
||||
"commandOutput": "Вывод команды",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/tr/chat.json
generated
6
webview-ui/src/i18n/locales/tr/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo bu dizindeki üst düzey dosyaları görüntüledi",
|
||||
"wantsToViewRecursive": "Roo bu dizindeki tüm dosyaları özyinelemeli olarak görüntülemek istiyor",
|
||||
"didViewRecursive": "Roo bu dizindeki tüm dosyaları özyinelemeli olarak görüntüledi",
|
||||
"wantsToViewDefinitions": "Roo bu dizinde kullanılan kaynak kod tanımlama isimlerini görüntülemek istiyor",
|
||||
"didViewDefinitions": "Roo bu dizinde kullanılan kaynak kod tanımlama isimlerini görüntüledi",
|
||||
"wantsToSearch": "Roo bu dizinde <code>{{regex}}</code> için arama yapmak istiyor",
|
||||
"didSearch": "Roo bu dizinde <code>{{regex}}</code> için arama yaptı",
|
||||
"wantsToSearchOutsideWorkspace": "Roo bu dizinde (çalışma alanı dışında) <code>{{regex}}</code> için arama yapmak istiyor",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) üst düzey dosyaları görüntülemek istiyor",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) üst düzey dosyaları görüntüledi",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) tüm dosyaları özyinelemeli olarak görüntülemek istiyor",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) tüm dosyaları özyinelemeli olarak görüntüledi",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo bu dizinde (çalışma alanı dışında) kullanılan kaynak kod tanımlama isimlerini görüntülemek istiyor",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo bu dizinde (çalışma alanı dışında) kullanılan kaynak kod tanımlama isimlerini görüntüledi"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo bu dizindeki (çalışma alanı dışında) tüm dosyaları özyinelemeli olarak görüntüledi"
|
||||
},
|
||||
"commandOutput": "Komut Çıktısı",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/vi/chat.json
generated
6
webview-ui/src/i18n/locales/vi/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "Roo đã xem các tệp cấp cao nhất trong thư mục này",
|
||||
"wantsToViewRecursive": "Roo muốn xem đệ quy tất cả các tệp trong thư mục này",
|
||||
"didViewRecursive": "Roo đã xem đệ quy tất cả các tệp trong thư mục này",
|
||||
"wantsToViewDefinitions": "Roo muốn xem tên định nghĩa mã nguồn được sử dụng trong thư mục này",
|
||||
"didViewDefinitions": "Roo đã xem tên định nghĩa mã nguồn được sử dụng trong thư mục này",
|
||||
"wantsToSearch": "Roo muốn tìm kiếm trong thư mục này cho <code>{{regex}}</code>",
|
||||
"didSearch": "Roo đã tìm kiếm trong thư mục này cho <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo muốn tìm kiếm trong thư mục này (ngoài không gian làm việc) cho <code>{{regex}}</code>",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "Roo muốn xem các tệp cấp cao nhất trong thư mục này (ngoài không gian làm việc)",
|
||||
"didViewTopLevelOutsideWorkspace": "Roo đã xem các tệp cấp cao nhất trong thư mục này (ngoài không gian làm việc)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo muốn xem đệ quy tất cả các tệp trong thư mục này (ngoài không gian làm việc)",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo đã xem đệ quy tất cả các tệp trong thư mục này (ngoài không gian làm việc)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo muốn xem tên định nghĩa mã nguồn được sử dụng trong thư mục này (ngoài không gian làm việc)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo đã xem tên định nghĩa mã nguồn được sử dụng trong thư mục này (ngoài không gian làm việc)"
|
||||
"didViewRecursiveOutsideWorkspace": "Roo đã xem đệ quy tất cả các tệp trong thư mục này (ngoài không gian làm việc)"
|
||||
},
|
||||
"commandOutput": "Kết quả lệnh",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
6
webview-ui/src/i18n/locales/zh-CN/chat.json
generated
6
webview-ui/src/i18n/locales/zh-CN/chat.json
generated
|
|
@ -199,8 +199,6 @@
|
|||
"didViewTopLevel": "已查看目录文件列表",
|
||||
"wantsToViewRecursive": "需要查看目录所有文件",
|
||||
"didViewRecursive": "已查看目录所有文件",
|
||||
"wantsToViewDefinitions": "Roo想查看此目录中使用的源代码定义名称",
|
||||
"didViewDefinitions": "Roo已查看此目录中使用的源代码定义名称",
|
||||
"wantsToSearch": "需要搜索内容: {{regex}}",
|
||||
"didSearch": "已完成内容搜索: {{regex}}",
|
||||
"wantsToSearchOutsideWorkspace": "需要搜索内容(工作区外): {{regex}}",
|
||||
|
|
@ -208,9 +206,7 @@
|
|||
"wantsToViewTopLevelOutsideWorkspace": "需要查看目录文件列表(工作区外)",
|
||||
"didViewTopLevelOutsideWorkspace": "已查看目录文件列表(工作区外)",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "需要查看目录所有文件(工作区外)",
|
||||
"didViewRecursiveOutsideWorkspace": "已查看目录所有文件(工作区外)",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo想查看此目录中使用的源代码定义名称(工作区外)",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo已查看此目录中使用的源代码定义名称(工作区外)"
|
||||
"didViewRecursiveOutsideWorkspace": "已查看目录所有文件(工作区外)"
|
||||
},
|
||||
"commandOutput": "命令输出",
|
||||
"commandExecution": {
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/zh-TW/chat.json
generated
4
webview-ui/src/i18n/locales/zh-TW/chat.json
generated
|
|
@ -224,10 +224,6 @@
|
|||
"didViewRecursive": "Roo 已遞迴檢視此目錄中的所有檔案",
|
||||
"wantsToViewRecursiveOutsideWorkspace": "Roo 想要遞迴檢視此目錄(工作區外)中的所有檔案",
|
||||
"didViewRecursiveOutsideWorkspace": "Roo 已遞迴檢視此目錄(工作區外)中的所有檔案",
|
||||
"wantsToViewDefinitions": "Roo 想要檢視此目錄中使用的原始碼定義名稱",
|
||||
"didViewDefinitions": "Roo 已檢視此目錄中使用的原始碼定義名稱",
|
||||
"wantsToViewDefinitionsOutsideWorkspace": "Roo 想要檢視此目錄(工作區外)中使用的原始碼定義名稱",
|
||||
"didViewDefinitionsOutsideWorkspace": "Roo 已檢視此目錄(工作區外)中使用的原始碼定義名稱",
|
||||
"wantsToSearch": "Roo 想要在此目錄中搜尋 <code>{{regex}}</code>",
|
||||
"didSearch": "Roo 已在此目錄中搜尋 <code>{{regex}}</code>",
|
||||
"wantsToSearchOutsideWorkspace": "Roo 想要在此目錄(工作區外)中搜尋 <code>{{regex}}</code>",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue