smart_refactor
Refactor code efficiently by renaming symbols across multiple files with intelligent search and replace, streamlining code maintenance and updates.
Instructions
Intelligently refactor code by renaming symbols across multiple files
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | List of files to search and refactor | |
| newName | Yes | The new symbol name | |
| oldName | Yes | The symbol name to replace |
Input Schema (JSON Schema)
{
"properties": {
"files": {
"description": "List of files to search and refactor",
"type": "array"
},
"newName": {
"description": "The new symbol name",
"type": "string"
},
"oldName": {
"description": "The symbol name to replace",
"type": "string"
}
},
"required": [
"files",
"oldName",
"newName"
],
"type": "object"
}
Implementation Reference
- src/router/operation-router.ts:503-530 (handler)Main handler function that implements the smart_refactor tool logic: searches for oldName regex in affected files using filesystem, identifies files with matches, and performs multi-file replacement using edit manager.case 'smart_refactor': // Use file system to find occurrences, then Edit for precision const searchResults = await Promise.all( operation.affectedFiles.map(file => this.fileSystemManager.findInFile( file, new RegExp(operation.params.oldName, 'g') ) ) ); // If we found occurrences, use Edit to refactor const filesToEdit = operation.affectedFiles.filter((file, index) => searchResults[index].length > 0); if (filesToEdit.length > 0) { return this.editInstanceManager.coordinateMultiFileEdit({ files: filesToEdit, operation: { type: 'replace', params: { pattern: operation.params.oldName, replacement: operation.params.newName } } }); } return { message: 'No occurrences found to refactor' };
- src/index.ts:335-362 (registration)Registers the smart_refactor tool with the MCP server, defining its metadata, input schema, and annotations.mcpServer.registerTool({ name: 'smart_refactor', description: 'Intelligently refactor code by renaming symbols across multiple files', inputSchema: { type: 'object', properties: { files: { type: 'array', description: 'List of files to search and refactor' }, oldName: { type: 'string', description: 'The symbol name to replace' }, newName: { type: 'string', description: 'The new symbol name' } }, required: ['files', 'oldName', 'newName'] }, annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false } });
- src/index.ts:338-355 (schema)Input schema definition for the smart_refactor tool, specifying parameters: files (array), oldName (string), newName (string).inputSchema: { type: 'object', properties: { files: { type: 'array', description: 'List of files to search and refactor' }, oldName: { type: 'string', description: 'The symbol name to replace' }, newName: { type: 'string', description: 'The new symbol name' } }, required: ['files', 'oldName', 'newName'] },
- Classifies 'smart_refactor' as a hybrid operation in the complexity analyzer, leading to medium complexity and hybrid executor.const hybridOperations = [ 'smart_refactor', 'validate_and_edit', 'backup_and_edit', 'atomic_multi_file_edit'