import { MutableChatRequestModel } from '@theia/ai-chat'; import { ChangeSetFileElementFactory } from '@theia/ai-chat/lib/browser/change-set-file-element'; import { ChangeSetElement } from '@theia/ai-chat/lib/common/change-set'; import { Replacement } from '@theia/core/lib/common/content-replacer'; import { URI } from '@theia/core/lib/common/uri'; import { FileService } from '@theia/filesystem/lib/browser/file-service'; import { WorkspaceService } from '@theia/workspace/lib/browser'; import { FileEditBackupService } from './claude-code-file-edit-backup-service'; import { ILogger } from '@theia/core'; export interface EditToolInput { file_path: string; old_string: string; new_string: string; } export interface MultiEditToolInput { file_path: string; edits: Array<{ old_string: string; new_string: string; }>; } export interface WriteToolInput { file_path: string; content: string; } export interface ToolUseBlock { name: string; input: EditToolInput | MultiEditToolInput | WriteToolInput; } export interface EditToolContext { sessionId: string | undefined; isEditMode: boolean; } export declare const ClaudeCodeEditToolService: unique symbol; /** * Service for handling edit tool operations. * * Invoked by the ClaudeCodeChatAgent on each finished edit tool request. * This can be used to track and manage file edits made by the agent, e.g. * to propagate them to ChangeSets (see ClaudeCodeEditToolServiceImpl below). */ export interface ClaudeCodeEditToolService { handleEditTool(toolUse: ToolUseBlock, request: MutableChatRequestModel, context: EditToolContext): Promise; } /** * Propagates edit tool results to change sets in the specified request's session. */ export declare class ClaudeCodeEditToolServiceImpl implements ClaudeCodeEditToolService { protected readonly fileChangeFactory: ChangeSetFileElementFactory; protected readonly fileService: FileService; protected readonly workspaceService: WorkspaceService; protected readonly backupService: FileEditBackupService; protected readonly logger: ILogger; private readonly contentReplacer; handleEditTool(toolUse: ToolUseBlock, request: MutableChatRequestModel, context: EditToolContext): Promise; protected handleEditSingle(input: EditToolInput, request: MutableChatRequestModel, context: EditToolContext): Promise; protected handleEditMultiple(input: MultiEditToolInput, request: MutableChatRequestModel, context: EditToolContext): Promise; protected handleWriteFile(input: WriteToolInput, request: MutableChatRequestModel, context: EditToolContext): Promise; protected handleEditModeCommon(workspaceUri: URI, currentContentString: string, replacements: Replacement[], existingChangeSetElement: ChangeSetElement | undefined, request: MutableChatRequestModel, context: EditToolContext): Promise; protected handleNonEditModeCommon(workspaceUri: URI, currentContentString: string, replacements: Replacement[], existingChangeSetElement: ChangeSetElement | undefined, request: MutableChatRequestModel): Promise; protected toWorkspaceUri(absolutePath: string): Promise; } //# sourceMappingURL=claude-code-edit-tool-service.d.ts.map