using System.Linq.Expressions; using AIStudio.Settings; namespace AIStudio.Settings.DataModel; public sealed class DataTools(Expression>? configSelection = null) { public DataTools() : this(null) { } public Dictionary> Settings { get; set; } = []; public Dictionary> DefaultToolIdsByComponent { get; set; } = []; public HashSet VisibleToolSelectionComponents { get; set; } = []; public bool EnableTools { get; set; } = ManagedConfiguration.Register( configSelection, x => x.EnableTools, true); public HashSet DisabledToolIds { get; set; } = ManagedConfiguration.Register( configSelection, x => x.DisabledToolIds, []); public Dictionary MinimumProviderConfidenceByToolId { get; set; } = ManagedConfiguration.Register>( configSelection, x => x.MinimumProviderConfidenceByToolId, new Dictionary(StringComparer.Ordinal)); public string WebSearchBaseUrl { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchBaseUrl, string.Empty); public string WebSearchDefaultLanguage { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchDefaultLanguage, string.Empty); public string WebSearchDefaultSafeSearch { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchDefaultSafeSearch, string.Empty); public string WebSearchMaxResults { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchMaxResults, string.Empty); public string WebSearchTimeoutSeconds { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchTimeoutSeconds, string.Empty); public string WebSearchMaxTotalContentCharacters { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchMaxTotalContentCharacters, string.Empty); public string WebSearchMinContentCharactersPerResult { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchMinContentCharactersPerResult, string.Empty); public string WebSearchPageTimeoutSeconds { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchPageTimeoutSeconds, string.Empty); public string WebSearchRetrievalTimeoutSeconds { get; set; } = ManagedConfiguration.Register( configSelection, x => x.WebSearchRetrievalTimeoutSeconds, string.Empty); public string ReadWebPageTimeoutSeconds { get; set; } = ManagedConfiguration.Register( configSelection, x => x.ReadWebPageTimeoutSeconds, string.Empty); public string ReadWebPageMaxContentCharacters { get; set; } = ManagedConfiguration.Register( configSelection, x => x.ReadWebPageMaxContentCharacters, string.Empty); public string ReadWebPageAllowedPrivateHosts { get; set; } = ManagedConfiguration.Register( configSelection, x => x.ReadWebPageAllowedPrivateHosts, string.Empty); }