trackFileModification method

AttributionState trackFileModification({
  1. required AttributionState attrState,
  2. required String filePath,
  3. required String oldContent,
  4. required String newContent,
  5. bool userModified = false,
  6. int? mtime,
})

Track a file modification by Neomage. Called after Edit/Write tool completes.

Implementation

AttributionState trackFileModification({
  required AttributionState attrState,
  required String filePath,
  required String oldContent,
  required String newContent,
  bool userModified = false,
  int? mtime,
}) {
  final normalizedPath = normalizeFilePath(filePath);
  final effectiveMtime = mtime ?? DateTime.now().millisecondsSinceEpoch;

  final newFileState = _computeFileModificationState(
    existingFileStates: attrState.fileStates,
    filePath: filePath,
    oldContent: oldContent,
    newContent: newContent,
    mtime: effectiveMtime,
  );
  if (newFileState == null) return attrState;

  final newFileStates = Map<String, FileAttributionState>.from(
    attrState.fileStates,
  );
  newFileStates[normalizedPath] = newFileState;

  return attrState.copyWith(fileStates: newFileStates);
}