execute method

  1. @override
Future<ToolResult> execute(
  1. Map<String, dynamic> input
)
override

Execute the tool with the given input.

Implementation

@override
Future<ToolResult> execute(Map<String, dynamic> input) async {
  final validation = validateInput(input);
  if (!validation.isValid) return ToolResult.error(validation.error!);

  final parsed = ValidateInput.fromJson(input);
  String content;

  if (parsed.content != null) {
    content = parsed.content!;
  } else {
    final file = File(parsed.filePath!);
    if (!await file.exists()) {
      return ToolResult.error('File not found: ${parsed.filePath}');
    }
    content = await file.readAsString();
  }

  switch (parsed.validatorType) {
    case 'json':
      return _validateJson(content);
    case 'yaml':
      return _validateYaml(content);
    case 'toml':
      return _validateToml(content);
    case 'xml':
      return _validateXml(content);
    case 'schema':
      return _validateSchema(content);
    default:
      return ToolResult.error(
        'Unsupported validator: ${parsed.validatorType}',
      );
  }
}