@@ -41,11 +39,17 @@
@foreach (var assistantPlugin in this.AssistantPlugins)
{
+ var securityState = PluginAssistantSecurityResolver.Resolve(this.SettingsManager, assistantPlugin);
+ Disabled="@(!securityState.CanStartAssistant)"
+ Link="@($"{Routes.ASSISTANT_DYNAMIC}?assistantId={assistantPlugin.Id}")">
+
+
+
+
}
}
diff --git a/app/MindWork AI Studio/Pages/Assistants.razor.cs b/app/MindWork AI Studio/Pages/Assistants.razor.cs
index 6bf93226..b2f7ddd4 100644
--- a/app/MindWork AI Studio/Pages/Assistants.razor.cs
+++ b/app/MindWork AI Studio/Pages/Assistants.razor.cs
@@ -1,15 +1,28 @@
using AIStudio.Components;
using AIStudio.Tools.PluginSystem;
using AIStudio.Tools.PluginSystem.Assistants;
-using System.Collections.Generic;
-using System.Linq;
+using Microsoft.AspNetCore.Components;
namespace AIStudio.Pages;
public partial class Assistants : MSGComponentBase
{
+ protected override async Task OnInitializedAsync()
+ {
+ this.ApplyFilters([], [ Event.CONFIGURATION_CHANGED, Event.PLUGINS_RELOADED ]);
+ await base.OnInitializedAsync();
+ }
+
private IReadOnlyCollection
AssistantPlugins =>
PluginFactory.RunningPlugins.OfType()
.Where(plugin => this.SettingsManager.IsPluginEnabled(plugin))
.ToList();
+
+ protected override Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default
+ {
+ if (triggeredEvent is Event.CONFIGURATION_CHANGED or Event.PLUGINS_RELOADED)
+ return this.InvokeAsync(this.StateHasChanged);
+
+ return Task.CompletedTask;
+ }
}