abstract class AIAgent { String get agentName; String getSystemPrompt(); Future validator(String aiResponse); Future outputFormatter(String validatedResponse); } extension SystemPromptTemplating on String { String substitutePromptVariable(String variable, String value) { return this.replaceAll(":$variable:", value); } } class AgentInputs { final String? query; final Map? variables; AgentInputs({this.query, this.variables}); }