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 action = input['action'] as String?;
  if (action == null) {
    return const ValidationResult.invalid('action is required');
  }
  if (![
    'diagnostics',
    'hover',
    'definition',
    'references',
    'completions',
  ].contains(action)) {
    return const ValidationResult.invalid(
      'action must be diagnostics, hover, definition, references, or completions',
    );
  }
  if (input['file_path'] == null) {
    return const ValidationResult.invalid('file_path is required');
  }
  if (_positionActions.contains(action)) {
    if (input['line'] == null || input['column'] == null) {
      return ValidationResult.invalid(
        'line and column are required for $action',
      );
    }
  }
  return const ValidationResult.valid();
}