using AIStudio.Provider; using AIStudio.Settings; namespace AIStudio.Components.Settings; public partial class SettingsPanelConfidence : SettingsPanelBase { private string GetCurrentConfidenceLevelName(LLMProviders llmProvider) { if (this.TryGetShownConfidenceLevel(llmProvider, out var level)) return level.GetName(); return T("Not yet configured"); } private string SetCurrentConfidenceLevelColorStyle(LLMProviders llmProvider) { if (this.TryGetShownConfidenceLevel(llmProvider, out var level)) return $"background-color: {level.GetColor(this.SettingsManager)};"; return $"background-color: {ConfidenceLevel.UNKNOWN.GetColor(this.SettingsManager)};"; } /// /// Determines the confidence level the table shows for a provider. /// /// /// A prohibited provider is untrusted, whatever level was chosen for it, see /// SettingsManager.GetConfiguredConfidenceLevel. The chosen level stays stored, so the table /// shows it again once the prohibition ends. /// private bool TryGetShownConfidenceLevel(LLMProviders llmProvider, out ConfidenceLevel level) { if (this.SettingsManager.IsProviderProhibited(llmProvider)) { level = ConfidenceLevel.UNTRUSTED; return true; } return this.SettingsManager.ConfigurationData.Confidence.CustomConfidenceScheme.TryGetValue(llmProvider, out level); } private bool IsCustomConfidenceSchemeLocked() { return ManagedConfiguration.TryGet(x => x.Confidence, x => x.CustomConfidenceScheme, out var meta) && meta.IsLocked; } private bool IsConfidenceLevelLocked(LLMProviders llmProvider) => this.IsCustomConfidenceSchemeLocked() || this.SettingsManager.IsProviderProhibited(llmProvider); private async Task ChangeCustomConfidenceLevel(LLMProviders llmProvider, ConfidenceLevel level) { if (this.IsConfidenceLevelLocked(llmProvider)) return; this.SettingsManager.ConfigurationData.Confidence.CustomConfidenceScheme[llmProvider] = level; await this.SettingsManager.StoreSettings(); await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); } }