validateInput method

  1. @override
ValidationResult validateInput(
  1. Map<String, dynamic> input
)
override

Validate input before execution and permission checks.

Implementation

@override
ValidationResult validateInput(Map<String, dynamic> input) {
  final path = input['notebook_path'] as String?;
  if (path == null || path.isEmpty) {
    return const ValidationResult.invalid('notebook_path is required');
  }
  if (!path.endsWith('.ipynb')) {
    return const ValidationResult.invalid('File must be a .ipynb notebook');
  }
  final cmd = input['command'] as String?;
  if (cmd == null || !['add', 'edit', 'delete', 'move'].contains(cmd)) {
    return const ValidationResult.invalid(
      'command must be one of: add, edit, delete, move',
    );
  }
  if ((cmd == 'add' || cmd == 'edit') && input['content'] == null) {
    return ValidationResult.invalid('content is required for $cmd');
  }
  if (cmd == 'move' && input['target_index'] == null) {
    return const ValidationResult.invalid(
      'target_index is required for move',
    );
  }
  return const ValidationResult.valid();
}