fileBackup static method
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.
},
);
}