refactor: 删除append_file工具,功能合并入write_file(mode=append),工具数39→38
This commit is contained in:
+1
-4
@@ -37,7 +37,6 @@ import {
|
||||
handleCopyFile,
|
||||
handleWebFetch,
|
||||
handleWebSearch,
|
||||
handleAppendFile,
|
||||
handleEditFile,
|
||||
handleGetFileInfo,
|
||||
handleTree,
|
||||
@@ -67,7 +66,6 @@ function summarizeResult(toolName: string, result: Record<string, unknown>): str
|
||||
case 'copy_file': return `${result.source} → ${result.destination}`;
|
||||
case 'web_fetch': return `${result.status} | ${result.length} chars`;
|
||||
case 'web_search': return `"${result.query}" → ${result.total} 条结果`;
|
||||
case 'append_file': return `${result.path} (${result.newSize}B)`;
|
||||
case 'edit_file': return `${result.path} (${result.replaceCount} 处替换)`;
|
||||
case 'get_file_info': return `${result.name} (${result.type}, ${result.size}B)`;
|
||||
case 'tree': return `${result.path} (${result.fileCount} 文件 / ${result.dirCount} 目录)`;
|
||||
@@ -180,8 +178,7 @@ export async function setupIPC(): Promise<void> {
|
||||
case 'copy_file': result = await handleCopyFile(args as { source: string; destination: string; recursive?: boolean }); break;
|
||||
case 'web_fetch': result = await handleWebFetch(args as { url: string; max_chars?: number; extract_mode?: string }); break;
|
||||
case 'web_search': result = await handleWebSearch(args as { query: string; max_results?: number }); break;
|
||||
case 'append_file': result = await handleAppendFile(args as { path: string; content: string; newline?: boolean }); break;
|
||||
case 'edit_file': result = await handleEditFile(args as { path: string; old_text: string; new_text: string; all?: boolean }); break;
|
||||
case 'edit_file': result = await handleEditFile(args as { path: string; old_text: string; new_text: string; all?: boolean; use_regex?: boolean }); break;
|
||||
case 'get_file_info': result = await handleGetFileInfo(args as { path: string }); break;
|
||||
case 'tree': result = await handleTree(args as { path: string; max_depth?: number; include_hidden?: boolean }); break;
|
||||
case 'download_file': result = await handleDownloadFile(args as { url: string; destination: string }); break;
|
||||
|
||||
@@ -450,27 +450,6 @@ export async function handleDeleteFile(params: { path: string; recursive?: boole
|
||||
}
|
||||
}
|
||||
|
||||
/** 当前工具命令进程(用于用户手动终止) */
|
||||
|
||||
export async function handleAppendFile(params: { path: string; content: string; newline?: boolean }): Promise<ToolResult> {
|
||||
try {
|
||||
const filePath = resolvePath(params.path);
|
||||
const allowed = checkPathAllowed(filePath, 'write');
|
||||
if (!allowed.ok) return { success: false, error: allowed.reason };
|
||||
|
||||
const prefix = params.newline !== false ? '\n' : '';
|
||||
sendLog('info', `➕ append_file`, `${filePath} (${params.content.length} chars)`);
|
||||
await fs.appendFile(filePath, prefix + params.content, 'utf-8');
|
||||
|
||||
const stat = await fs.stat(filePath);
|
||||
sendLog('success', `➕ append_file 完成`, `${stat.size}B`);
|
||||
return { success: true, path: filePath, newSize: stat.size };
|
||||
} catch (err) {
|
||||
sendLog('error', `➕ append_file 失败`, (err as Error).message);
|
||||
return { success: false, error: (err as Error).message };
|
||||
}
|
||||
}
|
||||
|
||||
export async function handleEditFile(params: { path: string; old_text: string; new_text: string; all?: boolean; use_regex?: boolean }): Promise<ToolResult> {
|
||||
try {
|
||||
const filePath = resolvePath(params.path);
|
||||
|
||||
Reference in New Issue
Block a user