using AIStudio.Assistants.ERI;
using OperatingSystem = AIStudio.Assistants.ERI.OperatingSystem;
namespace AIStudio.Settings.DataModel;
public sealed class DataERIServer
{
///
/// Preselect the server name?
///
public string ServerName { get; set; } = string.Empty;
///
/// Preselect the server description?
///
public string ServerDescription { get; set; } = string.Empty;
///
/// Preselect the ERI version?
///
public ERIVersion ERIVersion { get; set; } = ERIVersion.NONE;
///
/// Preselect the language for implementing the ERI?
///
public ProgrammingLanguages ProgrammingLanguage { get; set; }
///
/// Do you want to preselect any other language?
///
public string OtherProgrammingLanguage { get; set; } = string.Empty;
///
/// Preselect a data source?
///
public DataSources DataSource { get; set; }
///
/// Do you want to preselect a product name for the data source?
///
public string DataSourceProductName { get; set; } = string.Empty;
///
/// Do you want to preselect any other data source?
///
public string OtherDataSource { get; set; } = string.Empty;
///
/// Do you want to preselect a hostname for the data source?
///
public string DataSourceHostname { get; set; } = string.Empty;
///
/// Do you want to preselect a port for the data source?
///
public int? DataSourcePort { get; set; }
///
/// Did the user type the port number?
///
public bool UserTypedPort { get; set; } = false;
///
/// Preselect any authentication methods?
///
public HashSet AuthMethods { get; set; } = [];
///
/// Do you want to preselect any authentication description?
///
public string AuthDescription { get; set; } = string.Empty;
///
/// Do you want to preselect an operating system? This is necessary when SSO with Kerberos is used.
///
public OperatingSystem OperatingSystem { get; set; } = OperatingSystem.NONE;
///
/// Do you want to preselect which LLM providers are allowed?
///
public AllowedLLMProviders AllowedLLMProviders { get; set; } = AllowedLLMProviders.NONE;
///
/// Do you want to predefine any embedding information?
///
public List EmbeddingInfos { get; set; } = new();
///
/// Do you want to predefine any retrieval information?
///
public List RetrievalInfos { get; set; } = new();
///
/// Do you want to preselect any additional libraries?
///
public string AdditionalLibraries { get; set; } = string.Empty;
///
/// Do you want to write all generated code to the filesystem?
///
public bool WriteToFilesystem { get; set; }
///
/// The base directory where to write the generated code to.
///
public string BaseDirectory { get; set; } = string.Empty;
///
/// We save which files were generated previously.
///
public List PreviouslyGeneratedFiles { get; set; } = new();
}