fileBackup static method

ToolLifecycle fileBackup({
  1. required Future<void> writeBackup(
    1. String path,
    2. String content
    ),
  2. required Future<String?> readFile(
    1. String path
    ),
})

File backup lifecycle hooks.

Creates backup copies of files before modifications.

Implementation

static ToolLifecycle fileBackup({
  required Future<void> Function(String path, String content) writeBackup,
  required Future<String?> Function(String path) readFile,
}) {
  return ToolLifecycle(
    onToolBeforeExecution: (event) async {
      // Only intercept file-writing tools.
      final tool = event.toolName.toLowerCase();
      if (tool != 'write' && tool != 'edit') return null;

      final path =
          event.input['file_path'] as String? ??
          event.input['path'] as String?;
      if (path == null) return null;

      final content = await readFile(path);
      if (content != null) {
        await writeBackup('$path.bak', content);
      }

      return null; // Do not modify input.
    },
  );
}