mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-05-21 10:32:16 +00:00
integrating the security rules and badge to the assistant page and block
This commit is contained in:
parent
b579129535
commit
09d13e66c2
@ -22,15 +22,23 @@
|
|||||||
</MudStack>
|
</MudStack>
|
||||||
</MudCardContent>
|
</MudCardContent>
|
||||||
<MudCardActions>
|
<MudCardActions>
|
||||||
<MudButtonGroup Variant="Variant.Outlined">
|
<MudStack Row="@true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Style="width: 100%;">
|
||||||
<MudButton Size="Size.Large" Variant="Variant.Filled" StartIcon="@this.Icon" Color="Color.Default" Href="@this.Link">
|
<MudButtonGroup Variant="Variant.Outlined">
|
||||||
@this.ButtonText
|
<MudButton Size="Size.Large" Variant="Variant.Filled" StartIcon="@this.Icon" Color="Color.Default" Href="@this.Link" Disabled="@this.Disabled">
|
||||||
</MudButton>
|
@this.ButtonText
|
||||||
@if (this.HasSettingsPanel)
|
</MudButton>
|
||||||
|
@if (this.HasSettingsPanel)
|
||||||
|
{
|
||||||
|
<MudIconButton Variant="Variant.Text" Icon="@Icons.Material.Filled.Settings" Color="Color.Default" OnClick="@this.OpenSettingsDialog"/>
|
||||||
|
}
|
||||||
|
</MudButtonGroup>
|
||||||
|
@if (this.SecurityBadge is not null)
|
||||||
{
|
{
|
||||||
<MudIconButton Variant="Variant.Text" Icon="@Icons.Material.Filled.Settings" Color="Color.Default" OnClick="@this.OpenSettingsDialog"/>
|
<MudElement>
|
||||||
|
@this.SecurityBadge
|
||||||
|
</MudElement>
|
||||||
}
|
}
|
||||||
</MudButtonGroup>
|
</MudStack>
|
||||||
</MudCardActions>
|
</MudCardActions>
|
||||||
</MudCard>
|
</MudCard>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
using AIStudio.Settings.DataModel;
|
|
||||||
using AIStudio.Dialogs.Settings;
|
using AIStudio.Dialogs.Settings;
|
||||||
|
using AIStudio.Settings.DataModel;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
using DialogOptions = AIStudio.Dialogs.DialogOptions;
|
using DialogOptions = AIStudio.Dialogs.DialogOptions;
|
||||||
|
|
||||||
namespace AIStudio.Components;
|
namespace AIStudio.Components;
|
||||||
@ -24,6 +22,12 @@ public partial class AssistantBlock<TSettings> : MSGComponentBase where TSetting
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public string Link { get; set; } = string.Empty;
|
public string Link { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public bool Disabled { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public RenderFragment? SecurityBadge { get; set; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public Tools.Components Component { get; set; } = Tools.Components.NONE;
|
public Tools.Components Component { get; set; } = Tools.Components.NONE;
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
|
@attribute [Route(Routes.ASSISTANTS)]
|
||||||
@using AIStudio.Dialogs.Settings
|
@using AIStudio.Dialogs.Settings
|
||||||
@using AIStudio.Settings.DataModel
|
@using AIStudio.Settings.DataModel
|
||||||
@using AIStudio.Tools.PluginSystem
|
|
||||||
@using AIStudio.Tools.PluginSystem.Assistants
|
@using AIStudio.Tools.PluginSystem.Assistants
|
||||||
@using ReverseMarkdown.Converters
|
|
||||||
@attribute [Route(Routes.ASSISTANTS)]
|
|
||||||
@inherits MSGComponentBase
|
@inherits MSGComponentBase
|
||||||
|
|
||||||
<div class="inner-scrolling-context">
|
<div class="inner-scrolling-context">
|
||||||
@ -41,11 +39,17 @@
|
|||||||
<MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3">
|
<MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3">
|
||||||
@foreach (var assistantPlugin in this.AssistantPlugins)
|
@foreach (var assistantPlugin in this.AssistantPlugins)
|
||||||
{
|
{
|
||||||
|
var securityState = PluginAssistantSecurityResolver.Resolve(this.SettingsManager, assistantPlugin);
|
||||||
<AssistantBlock TSettings="SettingsDialogDynamic"
|
<AssistantBlock TSettings="SettingsDialogDynamic"
|
||||||
Name="@T(assistantPlugin.AssistantTitle)"
|
Name="@T(assistantPlugin.AssistantTitle)"
|
||||||
Description="@T(assistantPlugin.Description)"
|
Description="@T(assistantPlugin.Description)"
|
||||||
Icon="@Icons.Material.Filled.FindInPage"
|
Icon="@Icons.Material.Filled.FindInPage"
|
||||||
Link="@($"{Routes.ASSISTANT_DYNAMIC}?assistantId={assistantPlugin.Id}")"/>
|
Disabled="@(!securityState.CanStartAssistant)"
|
||||||
|
Link="@($"{Routes.ASSISTANT_DYNAMIC}?assistantId={assistantPlugin.Id}")">
|
||||||
|
<SecurityBadge>
|
||||||
|
<AssistantPluginSecurityCard Plugin="@assistantPlugin" Compact="@true" />
|
||||||
|
</SecurityBadge>
|
||||||
|
</AssistantBlock>
|
||||||
}
|
}
|
||||||
</MudStack>
|
</MudStack>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,28 @@
|
|||||||
using AIStudio.Components;
|
using AIStudio.Components;
|
||||||
using AIStudio.Tools.PluginSystem;
|
using AIStudio.Tools.PluginSystem;
|
||||||
using AIStudio.Tools.PluginSystem.Assistants;
|
using AIStudio.Tools.PluginSystem.Assistants;
|
||||||
using System.Collections.Generic;
|
using Microsoft.AspNetCore.Components;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace AIStudio.Pages;
|
namespace AIStudio.Pages;
|
||||||
|
|
||||||
public partial class Assistants : MSGComponentBase
|
public partial class Assistants : MSGComponentBase
|
||||||
{
|
{
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
this.ApplyFilters([], [ Event.CONFIGURATION_CHANGED, Event.PLUGINS_RELOADED ]);
|
||||||
|
await base.OnInitializedAsync();
|
||||||
|
}
|
||||||
|
|
||||||
private IReadOnlyCollection<PluginAssistants> AssistantPlugins =>
|
private IReadOnlyCollection<PluginAssistants> AssistantPlugins =>
|
||||||
PluginFactory.RunningPlugins.OfType<PluginAssistants>()
|
PluginFactory.RunningPlugins.OfType<PluginAssistants>()
|
||||||
.Where(plugin => this.SettingsManager.IsPluginEnabled(plugin))
|
.Where(plugin => this.SettingsManager.IsPluginEnabled(plugin))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
|
protected override Task ProcessIncomingMessage<T>(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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user