mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-06-27 17:16:28 +00:00
connecting allowed host settings to the ui
This commit is contained in:
parent
6da97c7c80
commit
8c8b557828
@ -26,7 +26,7 @@
|
|||||||
var field = property.Value;
|
var field = property.Value;
|
||||||
if (field.EnumValues.Count > 0)
|
if (field.EnumValues.Count > 0)
|
||||||
{
|
{
|
||||||
<MudSelect T="string" Label="@this.GetFieldLabel(fieldName, field)" Value="@this.GetValue(fieldName)" ValueChanged="@(value => this.UpdateValue(fieldName, value))" Variant="Variant.Outlined" Margin="Margin.Dense" HelperText="@this.GetFieldDescription(fieldName, field)" Class="mb-3">
|
<MudSelect T="string" Label="@this.GetFieldLabel(fieldName, field)" Value="@this.GetValue(fieldName)" ValueChanged="@(value => this.UpdateValue(fieldName, value))" Variant="Variant.Outlined" Margin="Margin.Dense" HelperText="@this.GetFieldDescription(fieldName, field)" Class="mb-3" Disabled="@this.IsFieldDisabled(fieldName)">
|
||||||
@foreach (var option in field.EnumValues)
|
@foreach (var option in field.EnumValues)
|
||||||
{
|
{
|
||||||
<MudSelectItem T="string" Value="@option">@option</MudSelectItem>
|
<MudSelectItem T="string" Value="@option">@option</MudSelectItem>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<MudTextField T="string" Label="@this.GetFieldLabel(fieldName, field)" Value="@this.GetValue(fieldName)" ValueChanged="@(value => this.UpdateValue(fieldName, value))" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3" HelperText="@this.GetFieldDescription(fieldName, field)" InputType="@(field.Secret ? InputType.Password : InputType.Text)" />
|
<MudTextField T="string" Label="@this.GetFieldLabel(fieldName, field)" Value="@this.GetValue(fieldName)" ValueChanged="@(value => this.UpdateValue(fieldName, value))" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3" HelperText="@this.GetFieldDescription(fieldName, field)" InputType="@(field.Secret ? InputType.Password : InputType.Text)" Disabled="@this.IsFieldDisabled(fieldName)" />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
using AIStudio.Settings;
|
||||||
using AIStudio.Tools.ToolCallingSystem;
|
using AIStudio.Tools.ToolCallingSystem;
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
@ -38,6 +39,12 @@ public partial class ToolSettingsDialog : SettingsDialogBase
|
|||||||
private string GetFieldDescription(string fieldName, ToolSettingsFieldDefinition fieldDefinition) =>
|
private string GetFieldDescription(string fieldName, ToolSettingsFieldDefinition fieldDefinition) =>
|
||||||
this.implementation?.GetSettingsFieldDescription(fieldName, fieldDefinition) ?? fieldDefinition.Description;
|
this.implementation?.GetSettingsFieldDescription(fieldName, fieldDefinition) ?? fieldDefinition.Description;
|
||||||
|
|
||||||
|
private bool IsFieldDisabled(string fieldName) =>
|
||||||
|
this.toolDefinition?.Id.Equals(ToolSelectionRules.READ_WEB_PAGE_TOOL_ID, StringComparison.Ordinal) is true &&
|
||||||
|
fieldName.Equals("allowedPrivateHosts", StringComparison.Ordinal) &&
|
||||||
|
ManagedConfiguration.TryGet(x => x.Tools, x => x.ReadWebPageAllowedPrivateHosts, out var meta) &&
|
||||||
|
meta.IsLocked;
|
||||||
|
|
||||||
private void UpdateValue(string fieldName, string? value) => this.values[fieldName] = value ?? string.Empty;
|
private void UpdateValue(string fieldName, string? value) => this.values[fieldName] = value ?? string.Empty;
|
||||||
|
|
||||||
private async Task Save()
|
private async Task Save()
|
||||||
|
|||||||
@ -5,6 +5,8 @@ namespace AIStudio.Tools.ToolCallingSystem;
|
|||||||
|
|
||||||
public sealed class ToolSettingsService(SettingsManager settingsManager, RustService rustService)
|
public sealed class ToolSettingsService(SettingsManager settingsManager, RustService rustService)
|
||||||
{
|
{
|
||||||
|
private const string READ_WEB_PAGE_ALLOWED_PRIVATE_HOSTS_FIELD = "allowedPrivateHosts";
|
||||||
|
|
||||||
public async Task<Dictionary<string, string>> GetSettingsAsync(ToolDefinition definition)
|
public async Task<Dictionary<string, string>> GetSettingsAsync(ToolDefinition definition)
|
||||||
{
|
{
|
||||||
var values = new Dictionary<string, string>(StringComparer.Ordinal);
|
var values = new Dictionary<string, string>(StringComparer.Ordinal);
|
||||||
@ -13,6 +15,12 @@ public sealed class ToolSettingsService(SettingsManager settingsManager, RustSer
|
|||||||
{
|
{
|
||||||
var fieldName = property.Key;
|
var fieldName = property.Key;
|
||||||
var fieldDefinition = property.Value;
|
var fieldDefinition = property.Value;
|
||||||
|
if (IsReadWebPageAllowedPrivateHostsField(definition, fieldName))
|
||||||
|
{
|
||||||
|
values[fieldName] = settingsManager.ConfigurationData.Tools.ReadWebPageAllowedPrivateHosts;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (fieldDefinition.Secret)
|
if (fieldDefinition.Secret)
|
||||||
{
|
{
|
||||||
var response = await rustService.GetSecret(new ToolSettingsSecretId(definition.Id, fieldName), isTrying: true);
|
var response = await rustService.GetSecret(new ToolSettingsSecretId(definition.Id, fieldName), isTrying: true);
|
||||||
@ -79,6 +87,14 @@ public sealed class ToolSettingsService(SettingsManager settingsManager, RustSer
|
|||||||
values.TryGetValue(fieldName, out var value);
|
values.TryGetValue(fieldName, out var value);
|
||||||
value ??= string.Empty;
|
value ??= string.Empty;
|
||||||
|
|
||||||
|
if (IsReadWebPageAllowedPrivateHostsField(definition, fieldName))
|
||||||
|
{
|
||||||
|
if (!IsReadWebPageAllowedPrivateHostsLocked())
|
||||||
|
settingsManager.ConfigurationData.Tools.ReadWebPageAllowedPrivateHosts = value;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (fieldDefinition.Secret)
|
if (fieldDefinition.Secret)
|
||||||
{
|
{
|
||||||
var secretId = new ToolSettingsSecretId(definition.Id, fieldName);
|
var secretId = new ToolSettingsSecretId(definition.Id, fieldName);
|
||||||
@ -96,4 +112,11 @@ public sealed class ToolSettingsService(SettingsManager settingsManager, RustSer
|
|||||||
await settingsManager.StoreSettings();
|
await settingsManager.StoreSettings();
|
||||||
await MessageBus.INSTANCE.SendMessage<object?>(null, Event.CONFIGURATION_CHANGED, null);
|
await MessageBus.INSTANCE.SendMessage<object?>(null, Event.CONFIGURATION_CHANGED, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool IsReadWebPageAllowedPrivateHostsField(ToolDefinition definition, string fieldName) =>
|
||||||
|
definition.Id.Equals(ToolSelectionRules.READ_WEB_PAGE_TOOL_ID, StringComparison.Ordinal) &&
|
||||||
|
fieldName.Equals(READ_WEB_PAGE_ALLOWED_PRIVATE_HOSTS_FIELD, StringComparison.Ordinal);
|
||||||
|
|
||||||
|
private static bool IsReadWebPageAllowedPrivateHostsLocked() =>
|
||||||
|
ManagedConfiguration.TryGet(x => x.Tools, x => x.ReadWebPageAllowedPrivateHosts, out var meta) && meta.IsLocked;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user