From a3c638946ed0779e4e013e6bf72b66849156306d Mon Sep 17 00:00:00 2001 From: MyPrototypeWhat Date: Tue, 23 Sep 2025 18:02:38 +0800 Subject: [PATCH] feat(tools): enhance type definitions for agent tools - Added detailed JSDoc comments for clarity on tool input types, including ReadToolInput, TaskToolInput, BashToolInput, and others. - Introduced new input types such as ListMcpResourcesToolInput and ReadMcpResourceToolInput to expand functionality. - Improved existing types to ensure better documentation and usability for developers. --- .../Messages/Tools/MessageAgentTools/types.ts | 240 ++++++++++++++++-- 1 file changed, 221 insertions(+), 19 deletions(-) diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/types.ts b/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/types.ts index 46baaa3693..1abd474860 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/types.ts +++ b/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/types.ts @@ -23,15 +23,35 @@ export type TextOutput = { // Read 工具的类型定义 export interface ReadToolInput { + /** + * The absolute path to the file to read + */ file_path: string + /** + * The line number to start reading from + */ + offset?: number + /** + * The number of lines to read + */ + limit?: number } export type ReadToolOutput = string | TextOutput[] // Task 工具的类型定义 export type TaskToolInput = { + /** + * A short (3-5 word) description of the task + */ description: string + /** + * The task for the agent to perform + */ prompt: string + /** + * The type of specialized agent to use for this task + */ subagent_type: string } @@ -39,8 +59,22 @@ export type TaskToolOutput = TextOutput[] // Bash 工具的类型定义 export type BashToolInput = { + /** + * The command to execute + */ command: string - description: string + /** + * Optional timeout in milliseconds (max 600000) + */ + timeout?: number + /** + * Clear, concise description of what this command does in 5-10 words + */ + description?: string + /** + * Set to true to run this command in the background + */ + run_in_background?: boolean } export type BashToolOutput = string @@ -52,16 +86,32 @@ export type SearchToolOutput = string // Glob 工具的类型定义 export interface GlobToolInput { + /** + * The glob pattern to match files against + */ pattern: string + /** + * The directory to search in (defaults to cwd) + */ + path?: string } export type GlobToolOutput = string // TodoWrite 工具的类型定义 export interface TodoItem { + /** + * The task description + */ content: string - status: 'completed' | 'in_progress' | 'pending' - activeForm?: string + /** + * The task status + */ + status: 'pending' | 'in_progress' | 'completed' + /** + * Active form of the task description + */ + activeForm: string } export type TodoWriteToolInput = { @@ -72,88 +122,240 @@ export type TodoWriteToolOutput = string // WebSearch 工具的类型定义 export interface WebSearchToolInput { + /** + * The search query to use + */ query: string + /** + * Only include results from these domains + */ + allowed_domains?: string[] + /** + * Never include results from these domains + */ + blocked_domains?: string[] } export type WebSearchToolOutput = string // WebFetch 工具的类型定义 export type WebFetchToolInput = { - prompt: string + /** + * The URL to fetch content from + */ url: string + /** + * The prompt to run on the fetched content + */ + prompt: string } export type WebFetchToolOutput = string // Grep 工具的类型定义 export interface GrepToolInput { + /** + * The regular expression pattern to search for + */ pattern: string - output_mode: string + /** + * File or directory to search in (defaults to cwd) + */ + path?: string + /** + * Glob pattern to filter files (e.g. "*.js") + */ + glob?: string + /** + * File type to search (e.g. "js", "py", "rust") + */ + type?: string + /** + * Output mode: "content", "files_with_matches", or "count" + */ + output_mode?: 'content' | 'files_with_matches' | 'count' + /** + * Case insensitive search + */ + '-i'?: boolean + /** + * Show line numbers (for content mode) + */ + '-n'?: boolean + /** + * Lines to show before each match + */ + '-B'?: number + /** + * Lines to show after each match + */ + '-A'?: number + /** + * Lines to show before and after each match + */ + '-C'?: number + /** + * Limit output to first N lines/entries + */ + head_limit?: number + /** + * Enable multiline mode + */ + multiline?: boolean } export type GrepToolOutput = string // Write 工具的类型定义 export type WriteToolInput = { - content: string + /** + * The absolute path to the file to write + */ file_path: string + /** + * The content to write to the file + */ + content: string } export type WriteToolOutput = string // Edit 工具的类型定义 export type EditToolInput = { + /** + * The absolute path to the file to modify + */ file_path: string + /** + * The text to replace + */ old_string: string + /** + * The text to replace it with (must be different from old_string) + */ new_string: string + /** + * Replace all occurrences of old_string (default false) + */ + replace_all?: boolean } export type EditToolOutput = string // MultiEdit 工具的类型定义 export type MultiEditToolInput = { + /** + * The absolute path to the file to modify + */ file_path: string - edits: { + /** + * Array of edit operations to perform sequentially + */ + edits: Array<{ + /** + * The text to replace + */ old_string: string + /** + * The text to replace it with + */ new_string: string - }[] + /** + * Replace all occurrences (default false) + */ + replace_all?: boolean + }> } export type MultiEditToolOutput = string // BashOutput 工具的类型定义 export type BashOutputToolInput = { + /** + * The ID of the background shell to retrieve output from + */ bash_id: string + /** + * Optional regex to filter output lines + */ + filter?: string } export type BashOutputToolOutput = string // NotebookEdit 工具的类型定义 export type NotebookEditToolInput = { + /** + * The absolute path to the Jupyter notebook file + */ notebook_path: string - edit_mode: string - cell_type: string + /** + * The ID of the cell to edit + */ + cell_id?: string + /** + * The new source for the cell + */ new_source: string + /** + * The type of the cell (code or markdown) + */ + cell_type?: 'code' | 'markdown' + /** + * The type of edit (replace, insert, delete) + */ + edit_mode?: 'replace' | 'insert' | 'delete' } export type NotebookEditToolOutput = string +// ExitPlanModeToolInput export type ExitPlanModeToolInput = { + /** + * The plan to run by the user for approval + */ plan: string } export type ExitPlanModeToolOutput = string +// ListMcpResourcesToolInput +export type ListMcpResourcesToolInput = { + /** + * Optional server name to filter resources by + */ + server?: string +} +// ReadMcpResourceToolInput +export type ReadMcpResourceToolInput = { + /** + * The MCP server name + */ + server: string + /** + * The resource URI to read + */ + uri: string +} +export type KillBashToolInput = { + /** + * The ID of the background shell to kill + */ + shell_id: string +} // 联合类型 export type ToolInput = - | ReadToolInput | TaskToolInput | BashToolInput - | SearchToolInput - | GlobToolInput - | TodoWriteToolInput - | WebSearchToolInput - | WebFetchToolInput - | GrepToolInput - | WriteToolInput + | BashOutputToolInput | EditToolInput | MultiEditToolInput - | BashOutputToolInput + | ReadToolInput + | WriteToolInput + | GlobToolInput + | GrepToolInput + | KillBashToolInput | NotebookEditToolInput + | WebFetchToolInput + | WebSearchToolInput + | TodoWriteToolInput | ExitPlanModeToolInput + | ListMcpResourcesToolInput + | ReadMcpResourceToolInput + export type ToolOutput = | ReadToolOutput | TaskToolOutput