using BotSharp.Plugin.Planner.SqlGeneration.Models; namespace BotSharp.Plugin.Planner.SqlGeneration.Functions; public class SqlReviewFn : IFunctionCallback { public string Name => "sql_review"; public string Indication => "Currently reviewing SQL statement"; private readonly IServiceProvider _services; private readonly ILogger _logger; public SqlReviewFn( IServiceProvider services, ILogger logger) { _services = services; _logger = logger; } public async Task Execute(RoleDialogModel message) { var args = JsonSerializer.Deserialize(message.FunctionArgs); if (!message.Content.StartsWith("```sql")) { message.Content = $"```sql\r\n{args.SqlStatement}\r\n```"; } if (args != null && !args.IsSqlTemplate && args.ContainsSqlStatements) { await HookEmitter.Emit(_services, async hook => await hook.OnSourceCodeGenerated(nameof(SqlGenerationPlanner), message, "sql"), message.CurrentAgentId ); } return true; } }