data/tools/file_edit_tool library

Classes

DesanitizeResult
Normalize a match string by applying desanitization replacements. Returns the normalized string and which replacements were applied.
FileEdit
A single file edit operation.
FileEditInput
Input parameters for the FileEditTool.
FileEditOutput
Output data from a file edit operation.
FileEditTool
Edit file with exact string replacement -- full port of neomage FileEditTool.
FileReadMetadata
Result of reading a file with metadata.
NormalizedEditInput
Normalize the input for the FileEditTool. If the string to replace is not found in the file, try with a normalized version. Returns the normalized input if successful.
SnippetResult
Gets a snippet from a file showing the context around a single edit.

Enums

LineEndingType
Encoding detection result.

Constants

diffSnippetMaxBytes → const int
Max snippet size for diff attachment display (8KB).
fileEditToolName → const String
Tool name matching the TS original.
fileUnexpectedlyModifiedError → const String
Error when file was unexpectedly modified between read and write.
leftDoubleCurlyQuote → const String
leftSingleCurlyQuote → const String
maxEditFileSize → const int
Max file size for editing (1 GiB).
rightDoubleCurlyQuote → const String
rightSingleCurlyQuote → const String
snippetContextLines → const int
Context lines around changes in snippets.

Functions

addLineNumbers(String content, {int startLine = 1}) String
Add line numbers to content starting from a given line.
applyEditsToFile(String fileContents, List<FileEdit> edits) String
Apply a list of edits to file content and return the updated content. Throws if any edit fails or produces overlapping changes.
applyEditToFile(String originalContent, String oldString, String newString, {bool replaceAll = false}) String
Apply a single edit to file content.
areFileEditsEquivalent(List<FileEdit> edits1, List<FileEdit> edits2, String originalContent) bool
Compare two sets of edits to determine if they are equivalent by applying both sets to the original content and comparing results.
areFileEditsInputsEquivalent(String filePath1, List<FileEdit> edits1, String filePath2, List<FileEdit> edits2) bool
Check if two file edit inputs are equivalent.
buildDesanitizations() Map<String, String>
Desanitization map for Neomage API tag normalization. Neomage cannot see the full XML tags (they are sanitized), so it outputs shortened versions. This map restores them.
desanitizeMatchString(String matchString) DesanitizeResult
findActualString(String fileContent, String searchString) String?
Finds the actual string in the file content that matches the search string, accounting for quote normalization.
formatFileSize(int bytes) String
Format file size in human-readable format.
getSnippet(String originalFile, String oldString, String newString, {int contextLines = 4}) SnippetResult
normalizeFileEditInput(String filePath, List<FileEdit> edits) NormalizedEditInput
normalizeQuotes(String str) String
Normalizes curly quotes to straight quotes.
preserveQuoteStyle(String oldString, String actualOldString, String newString) String
When old_string matched via quote normalization, apply the same curly quote style to new_string so the edit preserves the file's typography.
readFileForEdit(String absoluteFilePath) FileReadMetadata
Read a file with encoding and line-ending detection.
stripTrailingWhitespace(String str) String
Strips trailing whitespace from each line while preserving line endings.
writeTextContent(String absoluteFilePath, String content, String encoding, LineEndingType lineEndings) → void
Write text content to a file preserving encoding and line endings.