using AIStudio.Settings; namespace AIStudio.Tools; /// /// Contains the allowed and selected data sources, plus the ones which cannot be searched right now. /// /// /// The selected data sources are a subset of the allowed data sources. /// /// The data sources waiting for a re-index are deliberately kept apart from the allowed ones rather /// than mixed in. Everything reading the allowed list -- the data source selection agent above all /// -- takes it to mean "may be used to answer with", and a source whose index is being rebuilt /// cannot answer anything. It is listed separately so the user interface can still show it and say /// why it is greyed out, instead of letting it vanish without a word. /// /// The same holds for the ones waiting for a repair, and they are a list of their own because the /// two reasons call for different words: one passes by itself, the other one waits for the user. /// A data source is in at most one of the two lists. /// /// The allowed data sources. /// The selected data sources, which are a subset of the allowed data sources. /// The data sources which passed every check but cannot be searched until their index has been rebuilt. /// The data sources which passed every check but whose index cannot be read anymore, so that only the user can get them back. public readonly record struct AllowedSelectedDataSources(IReadOnlyList AllowedDataSources, IReadOnlyList SelectedDataSources, IReadOnlyList DataSourcesAwaitingReindex, IReadOnlyList DataSourcesNeedingRepair);