using AIStudio.Assistants.Coding;
using AIStudio.Assistants.IconFinder;
using AIStudio.Assistants.TextSummarizer;
namespace AIStudio.Settings.DataModel.PreviousModels;
///
/// The data model for the settings file.
///
public sealed class DataV1V3
{
///
/// The version of the settings file. Allows us to upgrade the settings
/// when a new version is available.
///
public Version Version { get; init; } = Version.V3;
///
/// List of configured providers.
///
public List Providers { get; init; } = [];
///
/// The next provider number to use.
///
public uint NextProviderNum { get; set; } = 1;
#region App Settings
///
/// Should we save energy? When true, we will update content streamed
/// from the server, i.e., AI, less frequently.
///
public bool IsSavingEnergy { get; set; }
///
/// Should we enable spellchecking for all input fields?
///
public bool EnableSpellchecking { get; set; }
///
/// If and when we should look for updates.
///
public UpdateBehavior UpdateBehavior { get; set; } = UpdateBehavior.ONCE_STARTUP;
///
/// The navigation behavior.
///
public NavBehavior NavigationBehavior { get; set; } = NavBehavior.EXPAND_ON_HOVER;
#endregion
#region Chat Settings
///
/// Shortcuts to send the input to the AI.
///
public SendBehavior ShortcutSendBehavior { get; set; } = SendBehavior.MODIFER_ENTER_IS_SENDING;
///
/// Preselect any chat options?
///
public bool PreselectChatOptions { get; set; }
///
/// Should we preselect a provider for the chat?
///
public string PreselectedChatProvider { get; set; } = string.Empty;
#endregion
#region Workspace Settings
///
/// The chat storage behavior.
///
public WorkspaceStorageBehavior WorkspaceStorageBehavior { get; set; } = WorkspaceStorageBehavior.STORE_CHATS_AUTOMATICALLY;
///
/// The chat storage maintenance behavior.
///
public WorkspaceStorageTemporaryMaintenancePolicy WorkspaceStorageTemporaryMaintenancePolicy { get; set; } = WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_90_DAYS;
#endregion
#region Assiatant: Icon Finder Settings
///
/// Do we want to preselect any icon options?
///
public bool PreselectIconOptions { get; set; }
///
/// The preselected icon source.
///
public IconSources PreselectedIconSource { get; set; }
///
/// The preselected icon provider.
///
public string PreselectedIconProvider { get; set; } = string.Empty;
#endregion
#region Assistant: Translation Settings
///
/// The live translation interval for debouncing in milliseconds.
///
public int LiveTranslationDebounceIntervalMilliseconds { get; set; } = 1_500;
///
/// Do we want to preselect any translator options?
///
public bool PreselectTranslationOptions { get; set; }
///
/// Preselect the live translation?
///
public bool PreselectLiveTranslation { get; set; }
///
/// Hide the web content reader?
///
public bool HideWebContentReaderForTranslation { get; set; }
///
/// Preselect the web content reader?
///
public bool PreselectWebContentReaderForTranslation { get; set; }
///
/// Preselect the content cleaner agent?
///
public bool PreselectContentCleanerAgentForTranslation { get; set; }
///
/// Preselect the target language?
///
public CommonLanguages PreselectedTranslationTargetLanguage { get; set; } = CommonLanguages.EN_US;
///
/// Preselect any other language?
///
public string PreselectTranslationOtherLanguage { get; set; } = string.Empty;
///
/// The preselected translator provider.
///
public string PreselectedTranslationProvider { get; set; } = string.Empty;
#endregion
#region Assistant: Coding Settings
///
/// Preselect any coding options?
///
public bool PreselectCodingOptions { get; set; }
///
/// Preselect the compiler messages?
///
public bool PreselectCodingCompilerMessages { get; set; }
///
/// Preselect the coding language for new contexts?
///
public CommonCodingLanguages PreselectedCodingLanguage { get; set; }
///
/// Do you want to preselect any other language?
///
public string PreselectedCodingOtherLanguage { get; set; } = string.Empty;
///
/// Which coding provider should be preselected?
///
public string PreselectedCodingProvider { get; set; } = string.Empty;
#endregion
#region Assistant: Text Summarizer Settings
///
/// Preselect any text summarizer options?
///
public bool PreselectTextSummarizerOptions { get; set; }
///
/// Hide the web content reader?
///
public bool HideWebContentReaderForTextSummarizer { get; set; }
///
/// Preselect the web content reader?
///
public bool PreselectWebContentReaderForTextSummarizer { get; set; }
///
/// Preselect the content cleaner agent?
///
public bool PreselectContentCleanerAgentForTextSummarizer { get; set; }
///
/// Preselect the target language?
///
public CommonLanguages PreselectedTextSummarizerTargetLanguage { get; set; }
///
/// Preselect any other language?
///
public string PreselectedTextSummarizerOtherLanguage { get; set; } = string.Empty;
///
/// Preselect the complexity?
///
public Complexity PreselectedTextSummarizerComplexity { get; set; }
///
/// Preselect any expertise in a field?
///
public string PreselectedTextSummarizerExpertInField { get; set; } = string.Empty;
///
/// Preselect a text summarizer provider?
///
public string PreselectedTextSummarizerProvider { get; set; } = string.Empty;
#endregion
#region Agent: Text Content Cleaner Settings
///
/// Preselect any text content cleaner options?
///
public bool PreselectAgentTextContentCleanerOptions { get; set; }
///
/// Preselect a text content cleaner provider?
///
public string PreselectedAgentTextContentCleanerProvider { get; set; } = string.Empty;
#endregion
}