diff --git a/app/MindWork AI Studio/Settings/ConfigMeta.cs b/app/MindWork AI Studio/Settings/ConfigMeta.cs index 71b8b33f..8c597906 100644 --- a/app/MindWork AI Studio/Settings/ConfigMeta.cs +++ b/app/MindWork AI Studio/Settings/ConfigMeta.cs @@ -151,7 +151,7 @@ public record ConfigMeta : ConfigMetaBase /// private void Reset() { - var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManager.ConfigurationData); + var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManagerAccess.ConfigurationData); var memberExpression = this.PropertyExpression.GetMemberExpression(); if (memberExpression.Member is System.Reflection.PropertyInfo propertyInfo) propertyInfo.SetValue(configInstance, this.Default); @@ -163,7 +163,7 @@ public record ConfigMeta : ConfigMetaBase /// The value to set for the configuration property. public void SetValue(TValue value) { - var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManager.ConfigurationData); + var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManagerAccess.ConfigurationData); var memberExpression = this.PropertyExpression.GetMemberExpression(); if (memberExpression.Member is System.Reflection.PropertyInfo propertyInfo) propertyInfo.SetValue(configInstance, value); @@ -174,7 +174,7 @@ public record ConfigMeta : ConfigMetaBase /// public TValue GetValue() { - var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManager.ConfigurationData); + var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManagerAccess.ConfigurationData); var memberExpression = this.PropertyExpression.GetMemberExpression(); if (memberExpression.Member is System.Reflection.PropertyInfo propertyInfo && propertyInfo.GetValue(configInstance) is TValue value) return value; diff --git a/app/MindWork AI Studio/Settings/ConfigMetaBase.cs b/app/MindWork AI Studio/Settings/ConfigMetaBase.cs index bd30e0fa..d077a701 100644 --- a/app/MindWork AI Studio/Settings/ConfigMetaBase.cs +++ b/app/MindWork AI Studio/Settings/ConfigMetaBase.cs @@ -2,5 +2,5 @@ namespace AIStudio.Settings; public abstract record ConfigMetaBase : IConfig { - protected static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); + protected static SettingsManager SettingsManagerAccess => Program.SERVICE_PROVIDER.GetRequiredService(); } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs b/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs index 7004e093..e9dd8b41 100644 --- a/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs +++ b/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs @@ -654,7 +654,7 @@ public static partial class ManagedConfiguration if (successful) { - var configInstance = configSelection.Compile().Invoke(SettingsManager.ConfigurationData); + var configInstance = configSelection.Compile().Invoke(SettingsManagerAccess.ConfigurationData); var currentValue = propertyExpression.Compile().Invoke(configInstance); var merged = new HashSet(currentValue); merged.UnionWith(configuredValue); diff --git a/app/MindWork AI Studio/Settings/ManagedConfiguration.cs b/app/MindWork AI Studio/Settings/ManagedConfiguration.cs index 572acf68..84607ed0 100644 --- a/app/MindWork AI Studio/Settings/ManagedConfiguration.cs +++ b/app/MindWork AI Studio/Settings/ManagedConfiguration.cs @@ -9,7 +9,7 @@ namespace AIStudio.Settings; public static partial class ManagedConfiguration { private static readonly ConcurrentDictionary METADATA = new(); - private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManagerAccess => Program.SERVICE_PROVIDER.GetRequiredService(); /// /// Attempts to retrieve the configuration metadata for a given configuration selection and @@ -418,19 +418,19 @@ public static partial class ManagedConfiguration private static bool TryGetEditableDefaultState(string settingName, out ManagedEditableDefaultState editableDefaultState) { - return SettingsManager.ConfigurationData.ManagedEditableDefaults.TryGetValue(settingName, out editableDefaultState!); + return SettingsManagerAccess.ConfigurationData.ManagedEditableDefaults.TryGetValue(settingName, out editableDefaultState!); } private static void SetEditableDefaultState(string settingName, Guid pluginId, string lastAppliedValue) { - SettingsManager.ConfigurationData.ManagedEditableDefaults[settingName] = new() + SettingsManagerAccess.ConfigurationData.ManagedEditableDefaults[settingName] = new() { ConfigPluginId = pluginId, LastAppliedValue = lastAppliedValue, }; } - private static bool ClearEditableDefaultState(string settingName) => SettingsManager.ConfigurationData.ManagedEditableDefaults.Remove(settingName); + private static bool ClearEditableDefaultState(string settingName) => SettingsManagerAccess.ConfigurationData.ManagedEditableDefaults.Remove(settingName); private static bool CleanupEditableDefaultState( ConfigMeta configMeta, diff --git a/app/MindWork AI Studio/Tools/ExternalHttpClientTimeout.cs b/app/MindWork AI Studio/Tools/ExternalHttpClientTimeout.cs index 3d465737..de13f40d 100644 --- a/app/MindWork AI Studio/Tools/ExternalHttpClientTimeout.cs +++ b/app/MindWork AI Studio/Tools/ExternalHttpClientTimeout.cs @@ -26,7 +26,7 @@ public static class ExternalHttpClientTimeout private static string TB(string fallbackEN) => PluginSystem.I18N.I.T(fallbackEN, typeof(ExternalHttpClientTimeout).Namespace, nameof(ExternalHttpClientTimeout)); private static readonly Lazy LOGGER = new(() => Program.LOGGER_FACTORY.CreateLogger(nameof(ExternalHttpClientTimeout))); - private static readonly Lazy SETTINGS_MANAGER = new(() => Program.SERVICE_PROVIDER.GetRequiredService()); + private static SettingsManager SettingsManagerAccess => Program.SERVICE_PROVIDER.GetRequiredService(); private static readonly Lock CUSTOM_ROOT_CERTIFICATE_LOCK = new(); private static CustomRootCertificateCache? CUSTOM_ROOT_CERTIFICATE_CACHE; @@ -91,7 +91,7 @@ public static class ExternalHttpClientTimeout private static TimeSpan GetTimeout() { - var seconds = SETTINGS_MANAGER.Value.ConfigurationData.App.HttpClientTimeoutSeconds; + var seconds = SettingsManagerAccess.ConfigurationData.App.HttpClientTimeoutSeconds; if (seconds <= 0) seconds = DEFAULT_HTTP_CLIENT_TIMEOUT_SECONDS; @@ -129,11 +129,11 @@ public static class ExternalHttpClientTimeout var enabled = TryParseBooleanEnvironmentValue(envEnabled, out var parsedEnvEnabled) ? parsedEnvEnabled - : SETTINGS_MANAGER.Value.ConfigurationData.App.ExternalHttpCustomRootCertificatesEnabled; + : SettingsManagerAccess.ConfigurationData.App.ExternalHttpCustomRootCertificatesEnabled; var bundlePath = !string.IsNullOrWhiteSpace(envBundlePath) ? envBundlePath.Trim() - : SETTINGS_MANAGER.Value.ConfigurationData.App.ExternalHttpCustomRootCertificateBundlePath.Trim(); + : SettingsManagerAccess.ConfigurationData.App.ExternalHttpCustomRootCertificateBundlePath.Trim(); var allowedHostPatterns = ReadAllowedHostPatterns(envAllowedHosts); var source = ReadCustomRootCertificateConfigurationSource(envEnabled, envBundlePath, envAllowedHosts); @@ -158,7 +158,7 @@ public static class ExternalHttpClientTimeout { IEnumerable rawPatterns = !string.IsNullOrWhiteSpace(envAllowedHosts) ? envAllowedHosts.Split([';', ','], StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) - : SETTINGS_MANAGER.Value.ConfigurationData.App.ExternalHttpCustomRootCertificateAllowedHosts; + : SettingsManagerAccess.ConfigurationData.App.ExternalHttpCustomRootCertificateAllowedHosts; var patterns = new HashSet(StringComparer.OrdinalIgnoreCase); foreach (var rawPattern in rawPatterns) diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs index d5d62e8d..8bd55c93 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs @@ -9,7 +9,7 @@ namespace AIStudio.Tools.PluginSystem; public sealed class PluginConfiguration(bool isInternal, LuaState state, PluginType type) : PluginBase(isInternal, state, type) { private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(PluginConfiguration).Namespace, nameof(PluginConfiguration)); - private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManagerAccess => Program.SERVICE_PROVIDER.GetRequiredService(); private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger(nameof(PluginConfiguration)); private List configObjects = []; @@ -41,7 +41,7 @@ public sealed class PluginConfiguration(bool isInternal, LuaState state, PluginT await StoreEnterpriseApiKeysAsync(); await StoreEnterpriseSecretsAsync(); - await SettingsManager.StoreSettings(); + await SettingsManagerAccess.StoreSettings(); await MessageBus.INSTANCE.SendMessage(null, Event.CONFIGURATION_CHANGED); } } diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs index 4af834cb..620ca5a7 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs @@ -14,8 +14,9 @@ namespace AIStudio.Tools.PluginSystem; /// public sealed record PluginConfigurationObject { - private static readonly RustService RUST_SERVICE = Program.SERVICE_PROVIDER.GetRequiredService(); - private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); + private static RustService RustService => Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManagerAccess => Program.SERVICE_PROVIDER.GetRequiredService(); + private static ThreadSafeRandom Rng => Program.SERVICE_PROVIDER.GetRequiredService(); private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger(); /// @@ -91,7 +92,7 @@ public sealed record PluginConfigurationObject return false; } - var localSettingsManager = SettingsManager; + var localSettingsManager = SettingsManagerAccess; var storedObjects = configObjectSelection.Compile()(localSettingsManager.ConfigurationData); var numberObjects = luaTable.ArrayLength; ThreadSafeRandom? random = null; @@ -151,7 +152,7 @@ public sealed record PluginConfigurationObject else { // Case: The next number could not be incremented, we use a random number - random ??= new ThreadSafeRandom(); + random ??= Rng; configObject = configObject with { Num = (uint)random.Next(500_000, 1_000_000) }; storedObjects.Add((TClass)configObject); LOG.LogWarning("The next number for the configuration object '{ConfigObjectName}' (id={ConfigObjectId}) could not be incremented. Using a random number instead (config plugin id: {ConfigPluginId}).", configObject.Name, configObject.Id, configPluginId); @@ -186,7 +187,7 @@ public sealed record PluginConfigurationObject return false; } - var localSettingsManager = SettingsManager; + var localSettingsManager = SettingsManagerAccess; var storedObjects = localSettingsManager.ConfigurationData.DataSources; var numberObjects = luaTable.ArrayLength; ThreadSafeRandom? random = null; @@ -231,7 +232,7 @@ public sealed record PluginConfigurationObject } else { - random ??= new ThreadSafeRandom(); + random ??= Rng; configObject = configObject with { Num = (uint)random.Next(500_000, 1_000_000) }; storedObjects.Add(configObject); LOG.LogWarning("The next number for the data source '{ConfigObjectName}' (id={ConfigObjectId}) could not be incremented. Using a random number instead (config plugin id: {ConfigPluginId}).", configObject.Name, configObject.Id, configPluginId); @@ -266,7 +267,7 @@ public sealed record PluginConfigurationObject SecretStoreType? secretStoreType = null, bool deleteSecret = false) where TClass : IConfigurationObject { - var localSettingsManager = SettingsManager; + var localSettingsManager = SettingsManagerAccess; var configuredObjects = configObjectSelection.Compile()(localSettingsManager.ConfigurationData); var leftOverObjects = new List(); foreach (var configuredObject in configuredObjects) @@ -310,7 +311,7 @@ public sealed record PluginConfigurationObject // Delete the API key from the OS keyring if the removed object has one: if(deleteSecret && item is ISecretId regularSecretId) { - var deleteResult = await RUST_SERVICE.DeleteSecret(regularSecretId, secretStoreType ?? SecretStoreType.DATA_SOURCE); + var deleteResult = await RustService.DeleteSecret(regularSecretId, secretStoreType ?? SecretStoreType.DATA_SOURCE); if (deleteResult.Success) LOG.LogInformation($"Successfully deleted secret for removed enterprise object '{item.Name}' from the OS keyring."); else @@ -318,7 +319,7 @@ public sealed record PluginConfigurationObject } else if(secretStoreType is not null && item is ISecretId secretId) { - var deleteResult = await RUST_SERVICE.DeleteAPIKey(secretId, secretStoreType.Value); + var deleteResult = await RustService.DeleteAPIKey(secretId, secretStoreType.Value); if (deleteResult.Success) LOG.LogInformation($"Successfully deleted API key for removed enterprise provider '{item.Name}' from the OS keyring."); else diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs index 87b89ede..f7a5aabf 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs @@ -191,7 +191,7 @@ public static partial class PluginFactory wasConfigurationChanged = true; // Check left-over mandatory info acceptances: - if (SettingsManager.ConfigurationData.MandatoryInformation.RemoveLeftOverAcceptances(GetMandatoryInfos())) + if (SettingsManagerAccess.ConfigurationData.MandatoryInformation.RemoveLeftOverAcceptances(GetMandatoryInfos())) wasConfigurationChanged = true; // Check for a preselected provider: @@ -285,7 +285,7 @@ public static partial class PluginFactory if (wasConfigurationChanged) { - await SettingsManager.StoreSettings(); + await SettingsManagerAccess.StoreSettings(); await MessageBus.INSTANCE.SendMessage(null, Event.CONFIGURATION_CHANGED); } } diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs index d200f08f..3df2e224 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs @@ -64,7 +64,7 @@ public static partial class PluginFactory try { - if (availablePlugin.IsInternal || SettingsManager.IsPluginEnabled(availablePlugin) || availablePlugin.Type == PluginType.CONFIGURATION || availablePlugin.Type == PluginType.ASSISTANT) + if (availablePlugin.IsInternal || SettingsManagerAccess.IsPluginEnabled(availablePlugin) || availablePlugin.Type == PluginType.CONFIGURATION || availablePlugin.Type == PluginType.ASSISTANT) if(await Start(availablePlugin, cancellationToken) is { IsValid: true } plugin) { if (plugin is PluginConfiguration configPlugin) diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs index 8a59e240..ce0ae866 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs @@ -6,7 +6,7 @@ namespace AIStudio.Tools.PluginSystem; public static partial class PluginFactory { private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger(nameof(PluginFactory)); - private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManagerAccess => Program.SERVICE_PROVIDER.GetRequiredService(); private static string DATA_DIR = string.Empty; private static string PLUGINS_ROOT = string.Empty; diff --git a/app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs b/app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs index 74ff4e58..24b1d24e 100644 --- a/app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs +++ b/app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs @@ -6,7 +6,7 @@ namespace AIStudio.Tools.RAG; public static class IRetrievalContextExtensions { - private static readonly ILogger LOGGER = Program.SERVICE_PROVIDER.GetService>()!; + private static readonly ILogger LOGGER = Program.LOGGER_FACTORY.CreateLogger(); public static async Task AsMarkdown(this IReadOnlyList retrievalContexts, StringBuilder? sb = null, CancellationToken token = default) {