diff --git a/app/MindWork AI Studio/Pages/Plugins.razor.cs b/app/MindWork AI Studio/Pages/Plugins.razor.cs index ec2aee00..e99c6ea2 100644 --- a/app/MindWork AI Studio/Pages/Plugins.razor.cs +++ b/app/MindWork AI Studio/Pages/Plugins.razor.cs @@ -23,6 +23,9 @@ public partial class Plugins : MSGComponentBase [Inject] private IDialogService DialogService { get; init; } = null!; + [Inject] + private AssistantPluginAuditService AssistantPluginAuditService { get; init; } = null!; + #region Overrides of ComponentBase protected override async Task OnInitializedAsync() @@ -72,6 +75,31 @@ public partial class Plugins : MSGComponentBase return; var securityState = PluginAssistantSecurityResolver.Resolve(this.SettingsManager, assistantPlugin); + if (securityState.RequiresAudit) + { + if (this.AssistantPluginAuditSettings.AutomaticallyAuditAssistants) + { + var audit = await this.AssistantPluginAuditService.RunAuditAsync(assistantPlugin); + if (audit.Level is AssistantAuditLevel.UNKNOWN) + { + await MessageBus.INSTANCE.SendError(new (Icons.Material.Filled.SettingsSuggest, string.Format(T("The Audit returned an invalid result, please try again.")))); + await this.OpenAssistantAuditDialogAsync(pluginMeta.Id); + return; + } + + this.UpsertAuditCard(audit); + await this.SettingsManager.StoreSettings(); + await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); + + securityState = PluginAssistantSecurityResolver.Resolve(this.SettingsManager, assistantPlugin); + } + else + { + await this.OpenAssistantAuditDialogAsync(pluginMeta.Id); + return; + } + } + if (securityState.RequiresAudit) { await this.OpenAssistantAuditDialogAsync(pluginMeta.Id); diff --git a/app/MindWork AI Studio/Program.cs b/app/MindWork AI Studio/Program.cs index f75c25a4..f2b9b06c 100644 --- a/app/MindWork AI Studio/Program.cs +++ b/app/MindWork AI Studio/Program.cs @@ -4,6 +4,7 @@ using AIStudio.Settings; using AIStudio.Tools.Databases; using AIStudio.Tools.Databases.Qdrant; using AIStudio.Tools.PluginSystem; +using AIStudio.Tools.PluginSystem.Assistants; using AIStudio.Tools.Services; using Microsoft.AspNetCore.Server.Kestrel.Core; @@ -178,6 +179,7 @@ internal sealed class Program builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); + builder.Services.AddTransient(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs index 4ef9aa57..42159070 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs @@ -254,7 +254,6 @@ public static partial class PluginFactory wasConfigurationChanged = true; // Check if security audits are invoked automatically and transparent for the user - // TODO: USE THIS SETTING if(ManagedConfiguration.IsConfigurationLeftOver(x => x.AssistantPluginAudit, x => x.AutomaticallyAuditAssistants, AVAILABLE_PLUGINS)) wasConfigurationChanged = true;