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 skill = input['skill'] as String?;
  if (skill == null || skill.trim().isEmpty) {
    return ValidationResult.invalid('Invalid skill format: $skill');
  }

  final trimmed = skill.trim();
  final normalizedName = trimmed.startsWith('/')
      ? trimmed.substring(1)
      : trimmed;

  // Check if command exists.
  final command = _registry.findCommand(normalizedName);
  if (command == null) {
    return ValidationResult.invalid('Unknown skill: $normalizedName');
  }

  // Check disableModelInvocation.
  if (command.disableModelInvocation) {
    return ValidationResult.invalid(
      'Skill $normalizedName cannot be used with $skillToolName tool '
      'due to disable-model-invocation',
    );
  }

  // Check if it's a prompt-based command.
  if (command.type != 'prompt') {
    return ValidationResult.invalid(
      'Skill $normalizedName is not a prompt-based skill',
    );
  }

  return const ValidationResult.valid();
}