validate method
Validates the input map against inputSchema.
Returns null on success, or a human-readable error string.
Implementation
String? validate(Map<String, dynamic> input) {
final missing = inputSchema.keys
.where((k) => !input.containsKey(k) || input[k] == null)
.toList();
if (missing.isEmpty) return null;
return 'Missing required input(s): ${missing.join(", ")}';
}