using System.Linq.Expressions;
using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
///
/// Stores the settings of the BeyondFacts Lab, which an organization may manage.
///
/// The managed-configuration selector.
public sealed class DataBeyondFactsLab(Expression>? configSelection = null)
{
///
/// The lowest minimum confidence the BeyondFacts Lab accepts, whatever the person or their organization configures.
///
///
/// Unpublished research is the usual material of the lab. The built-in confidence schemes give this level
/// to the cloud providers of the region one trusts and to self-hosted models; HIGH alone would leave only
/// self-hosted models. A higher minimum of the person or the organization wins.
///
public const ConfidenceLevel MINIMUM_CONFIDENCE_FLOOR = ConfidenceLevel.MEDIUM;
///
/// Initializes unmanaged settings of the BeyondFacts Lab.
///
public DataBeyondFactsLab() : this(null)
{
}
///
/// Gets or sets the provider which new preparations start with.
///
public string PreselectedProvider { get; set; } = ManagedConfiguration.Register(configSelection, value => value.PreselectedProvider, string.Empty);
///
/// Gets or sets the minimum confidence a provider needs for the lab.
///
///
/// A value below MINIMUM_CONFIDENCE_FLOOR has no effect, see ComponentsExtensions.MinimumConfidence.
///
public ConfidenceLevel MinimumProviderConfidence { get; set; } = ManagedConfiguration.Register(configSelection, value => value.MinimumProviderConfidence, MINIMUM_CONFIDENCE_FLOOR);
///
/// Gets or sets how the lab addresses the person in languages with a formal and an informal address.
///
public AddressForm AddressForm { get; set; } = ManagedConfiguration.Register(configSelection, value => value.AddressForm, AddressForm.FORMAL);
///
/// Gets or sets whether files in the folder for prompt overrides replace the prompts which come with the lab.
///
///
/// The option serves the further development of the prompts, e.g., by the research team behind the lab, not the
/// preparation of an appearance. An organization may switch it off and lock it.
///
public bool AllowPromptOverrides { get; set; } = ManagedConfiguration.Register(configSelection, value => value.AllowPromptOverrides, false);
///
/// Gets or sets the hash of the notes the person confirmed, see BflNotice; empty while they confirmed none.
///
///
/// Only the person can confirm the notes, so an organization cannot manage this setting.
///
public string AcceptedNoticeHash { get; set; } = string.Empty;
}