From b03c776b4f710783ae53c00afab178f2544a1c45 Mon Sep 17 00:00:00 2001 From: Haiping Chen Date: Wed, 20 Nov 2024 10:34:12 -0600 Subject: [PATCH] Fix validate_sql removing comments in sql. --- .../Functions/SqlValidateFn.cs | 35 +++++++------------ .../BotSharp.Plugin.SqlDriver/Using.cs | 20 ++++++++--- .../LlmContexts/LlmContextIn.cs | 15 ++++---- .../LlmContexts/LlmContextOut.cs | 13 ++++--- .../BotSharp.Plugin.Twilio/TwilioPlugin.cs | 5 +-- 5 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/Functions/SqlValidateFn.cs b/src/Plugins/BotSharp.Plugin.SqlDriver/Functions/SqlValidateFn.cs index 5f33a74a9..f47e022d8 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/Functions/SqlValidateFn.cs +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/Functions/SqlValidateFn.cs @@ -1,19 +1,3 @@ -using BotSharp.Abstraction.Agents.Enums; -using BotSharp.Abstraction.Agents.Models; -using BotSharp.Abstraction.Instructs; -using BotSharp.Abstraction.Instructs.Models; -using BotSharp.Abstraction.Routing; -using BotSharp.Core.Agents.Services; -using BotSharp.Core.Infrastructures; -using BotSharp.Core.Instructs; -using BotSharp.Plugin.SqlDriver.Interfaces; -using BotSharp.Plugin.SqlDriver.Models; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Text.RegularExpressions; - namespace BotSharp.Plugin.SqlDriver.Functions; public class SqlValidateFn : IFunctionCallback @@ -22,26 +6,33 @@ public class SqlValidateFn : IFunctionCallback public string Indication => "Performing data validate operation."; private readonly IServiceProvider _services; private readonly ILogger _logger; - public SqlValidateFn(IServiceProvider services) + public SqlValidateFn(IServiceProvider services, ILogger logger) { _services = services; + _logger = logger; } public async Task Execute(RoleDialogModel message) { - string pattern = @"```sql\s*([\s\S]*?)\s*```"; - var sqls = Regex.Match(message.Content, pattern); - if (!sqls.Success) + // remove comments start with "--" + string pattern = @"--.*"; + string sql = Regex.Replace(message.Content, pattern, string.Empty); + + pattern = @"```sql\s*([\s\S]*?)\s*```"; + sql = Regex.Match(sql, pattern)?.Value; + + if (!Regex.IsMatch(sql, pattern)) { return false; } - var sql = sqls.Groups[1].Value; + + sql = Regex.Match(sql, pattern).Groups[1].Value; var dbHook = _services.GetRequiredService(); var dbType = dbHook.GetDatabaseType(message); var validateSql = dbType.ToLower() switch { - "mysql" => $"explain\r\n{sql.Replace("SET ", "-- SET ", StringComparison.InvariantCultureIgnoreCase).Replace(";", "; explain ").TrimEnd("explain ".ToCharArray())}", + "mysql" => $"EXPLAIN\r\n{sql.Replace("SET ", "-- SET ", StringComparison.InvariantCultureIgnoreCase).Replace(";", "; EXPLAIN ").TrimEnd("EXPLAIN ".ToCharArray())}", "sqlserver" => $"SET PARSEONLY ON;\r\n{sql}\r\nSET PARSEONLY OFF;", "redshift" => $"explain\r\n{sql}", _ => throw new NotImplementedException($"Database type {dbType} is not supported.") diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/Using.cs b/src/Plugins/BotSharp.Plugin.SqlDriver/Using.cs index 905c4f05d..9f63a8410 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/Using.cs +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/Using.cs @@ -1,17 +1,23 @@ global using System; global using System.Collections.Generic; global using System.Text; +global using System.Data.Common; +global using System.Text.RegularExpressions; +global using System.Threading.Tasks; +global using System.Linq; +global using System.Text.Json; + +global using Microsoft.Extensions.Configuration; +global using Microsoft.Extensions.Logging; + global using BotSharp.Abstraction.Conversations; global using BotSharp.Abstraction.Plugins; -global using System.Text.Json; global using BotSharp.Abstraction.Conversations.Models; -global using Microsoft.Extensions.Configuration; -global using System.Threading.Tasks; +global using BotSharp.Plugin.SqlDriver.Models; global using BotSharp.Abstraction.Functions; global using BotSharp.Abstraction.Agents.Models; global using BotSharp.Abstraction.Templating; global using Microsoft.Extensions.DependencyInjection; -global using System.Linq; global using BotSharp.Abstraction.Agents; global using BotSharp.Abstraction.Utilities; global using BotSharp.Abstraction.Knowledges; @@ -21,4 +27,8 @@ global using BotSharp.Plugin.SqlDriver.Services; global using BotSharp.Plugin.SqlDriver.Enum; global using BotSharp.Plugin.SqlHero.Settings; -global using System.Drawing; +global using BotSharp.Abstraction.Agents.Enums; +global using BotSharp.Abstraction.Instructs; +global using BotSharp.Abstraction.Instructs.Models; +global using BotSharp.Abstraction.Routing; +global using BotSharp.Plugin.SqlDriver.Interfaces; diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs index eec737c62..cde85aa92 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextIn.cs @@ -1,13 +1,12 @@ using System.Text.Json.Serialization; -namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.LlmContexts +namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.LlmContexts; + +public class LlmContextIn { - public class LlmContextIn - { - [JsonPropertyName("phone_number")] - public string PhoneNumber { get; set; } + [JsonPropertyName("phone_number")] + public string PhoneNumber { get; set; } - [JsonPropertyName("initial_message")] - public string InitialMessage { get; set; } - } + [JsonPropertyName("initial_message")] + public string InitialMessage { get; set; } } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextOut.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextOut.cs index 40e37fbc4..d2687f1b0 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextOut.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/LlmContexts/LlmContextOut.cs @@ -1,11 +1,10 @@ using System.Text.Json.Serialization; -namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.LlmContexts +namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.LlmContexts; + +public class LlmContextOut { - public class LlmContextOut - { - [JsonPropertyName("conversation_id")] - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] - public string ConversationId { get; set; } - } + [JsonPropertyName("conversation_id")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string ConversationId { get; set; } } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/TwilioPlugin.cs b/src/Plugins/BotSharp.Plugin.Twilio/TwilioPlugin.cs index 2907276c5..484a5eaf0 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/TwilioPlugin.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/TwilioPlugin.cs @@ -12,6 +12,7 @@ public class TwilioPlugin : IBotSharpPlugin public string Id => "943ffd4d-ac8b-44aa-8a1c-38c9279c1b65"; public string Name => "Twilio"; public string Description => "Communication APIs for SMS, Voice, Video & Authentication"; + public string IconUrl => "https://w7.pngwing.com/pngs/918/671/png-transparent-twilio-full-logo-tech-companies.png"; public void RegisterDI(IServiceCollection services, IConfiguration config) { @@ -20,10 +21,10 @@ public void RegisterDI(IServiceCollection services, IConfiguration config) var settingService = provider.GetRequiredService(); return settingService.Bind("Twilio"); }); - TwilioClient.Init(config["Twilio:AccountSid"], config["Twilio:AuthToken"]); + TwilioClient.Init(config["Twilio:AccountSid"], config["Twilio:RequestValidation:AuthToken"]); services.AddScoped(); - var conn = ConnectionMultiplexer.Connect(config["Twilio:RedisConnectionString"]); + var conn = ConnectionMultiplexer.Connect(config["Database:Redis"]); var sessionManager = new TwilioSessionManager(conn); services.AddSingleton(sessionManager);