diff --git a/internal/agent/tools/multiedit.go b/internal/agent/tools/multiedit.go index 1956653f49ea49194e8435f668339fb0b6e7dbac..c4a3aa200c8325db87a6bb8d860cade1a8e7025d 100644 --- a/internal/agent/tools/multiedit.go +++ b/internal/agent/tools/multiedit.go @@ -165,13 +165,20 @@ func processMultiEditWithCreation(edit editContext, params MultiEditParams, call // Check permissions _, additions, removals := diff.GenerateDiff("", currentContent, strings.TrimPrefix(params.FilePath, edit.workingDir)) + editsApplied := len(params.Edits) - len(failedEdits) + var description string + if len(failedEdits) > 0 { + description = fmt.Sprintf("Create file %s with %d of %d edits (%d failed)", params.FilePath, editsApplied, len(params.Edits), len(failedEdits)) + } else { + description = fmt.Sprintf("Create file %s with %d edits", params.FilePath, editsApplied) + } p := edit.permissions.Request(permission.CreatePermissionRequest{ SessionID: sessionID, Path: fsext.PathOrPrefix(params.FilePath, edit.workingDir), ToolCallID: call.ID, ToolName: MultiEditToolName, Action: "write", - Description: fmt.Sprintf("Create file %s with %d edits", params.FilePath, len(params.Edits)), + Description: description, Params: MultiEditPermissionsParams{ FilePath: params.FilePath, OldContent: "", @@ -202,7 +209,6 @@ func processMultiEditWithCreation(edit editContext, params MultiEditParams, call recordFileWrite(params.FilePath) recordFileRead(params.FilePath) - editsApplied := len(params.Edits) - len(failedEdits) var message string if len(failedEdits) > 0 { message = fmt.Sprintf("File created with %d of %d edits: %s (%d edit(s) failed)", editsApplied, len(params.Edits), params.FilePath, len(failedEdits)) @@ -299,13 +305,21 @@ func processMultiEditExistingFile(edit editContext, params MultiEditParams, call // Generate diff and check permissions _, additions, removals := diff.GenerateDiff(oldContent, currentContent, strings.TrimPrefix(params.FilePath, edit.workingDir)) + + editsApplied := len(params.Edits) - len(failedEdits) + var description string + if len(failedEdits) > 0 { + description = fmt.Sprintf("Apply %d of %d edits to file %s (%d failed)", editsApplied, len(params.Edits), params.FilePath, len(failedEdits)) + } else { + description = fmt.Sprintf("Apply %d edits to file %s", editsApplied, params.FilePath) + } p := edit.permissions.Request(permission.CreatePermissionRequest{ SessionID: sessionID, Path: fsext.PathOrPrefix(params.FilePath, edit.workingDir), ToolCallID: call.ID, ToolName: MultiEditToolName, Action: "write", - Description: fmt.Sprintf("Apply %d edits to file %s", len(params.Edits), params.FilePath), + Description: description, Params: MultiEditPermissionsParams{ FilePath: params.FilePath, OldContent: oldContent, @@ -351,7 +365,6 @@ func processMultiEditExistingFile(edit editContext, params MultiEditParams, call recordFileWrite(params.FilePath) recordFileRead(params.FilePath) - editsApplied := len(params.Edits) - len(failedEdits) var message string if len(failedEdits) > 0 { message = fmt.Sprintf("Applied %d of %d edits to file: %s (%d edit(s) failed)", editsApplied, len(params.Edits), params.FilePath, len(failedEdits))