Added enterprise-managed activation for assistant plugins (#939)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2026-08-29 14:12:14 +02:00
1 parent 3940ad7f29
commit c9b7f224cc
13 files changed
+462 -17

No files matched your search

@@ -85,6 +85,19 @@ public sealed class Data
/// </summary>
public List<PluginAssistantAudit> AssistantPluginAudits { get; set; } = [];
/// <summary>
/// The assistant plugin hashes whose organization default for the activation was already applied.
/// </summary>
/// <remarks>
/// An organization may enable an assistant plugin it approved while still letting the user switch
/// it off again. That is a default, not a rule, so it must be applied exactly once: applying it on
/// every start would keep switching the assistant back on against the user's decision. We remember
/// the hashes it was applied for, and forget one as soon as no approval asks for it anymore, so a
/// later rollout of the same plugin takes effect again. Activations the user may not override are
/// not listed here: those are decided live and never touch the list of enabled plugins.
/// </remarks>
public List<string> AppliedEnterpriseAssistantActivations { get; set; } = [];
/// <summary>
/// The next provider number to use.
/// </summary>
@@ -10,4 +10,27 @@ public sealed class DataAssistantPluginEnterpriseApproval
public string Comment { get; init; } = string.Empty;
public string ApprovedBy { get; init; } = string.Empty;
public DateTimeOffset? ApprovedAtUtc { get; init; }
/// <summary>
/// Whether the organization wants this assistant plugin to be enabled, instead of leaving that
/// to the user.
/// </summary>
/// <remarks>
/// An approval only ever states that a plugin is safe. Enabling it is a separate decision, and
/// without this field it stays with the user: a rolled-out assistant is approved, but every
/// colleague still has to switch it on. This field is how an organization makes that decision
/// instead.
/// </remarks>
public bool Activate { get; init; }
/// <summary>
/// Whether the user may switch an assistant plugin the organization activated off again.
/// </summary>
/// <remarks>
/// This follows the AllowUserOverride convention of every managed setting: without it, what the
/// organization set is locked; with it, the organization only provides a default the user may
/// change. It has no meaning of its own while Activate is false, because there is nothing to
/// override then.
/// </remarks>
public bool AllowUserOverride { get; init; }
}