namespace AIStudio.Settings.DataModel; /// /// Where a chat may still send data, and which data source demands it. /// /// /// The data source travels along so a tool which is kept from running can name it, and the user /// learns which mailbox stands in the way. It is its id rather than its name, because a mailbox /// may be renamed after a chat read from it. /// /// Where the chat may still send data. /// The id of the data source which demands the restriction, or an empty text when nothing restricts the chat. public sealed record OutboundDataRequirement(OutboundDataRestriction Restriction, string DataSourceId) { /// /// Demands nothing: what a chat holds before it read from any mailbox, and what a result /// demands which brought no content of one in. /// public static readonly OutboundDataRequirement NONE = new(OutboundDataRestriction.UNRESTRICTED, string.Empty); /// /// The stricter of this requirement and another one. /// /// /// On a tie, this one is kept, so the data source which set a level first stays the one which /// is named, and a chat does not name another mailbox with every search. /// /// The other requirement. /// The requirement whose restriction is the stricter one. public OutboundDataRequirement StricterOf(OutboundDataRequirement other) => other.Restriction < this.Restriction ? other : this; }