2026-08-06 08:42:20 +00:00
|
|
|
using AIStudio.Tools.PluginSystem;
|
|
|
|
|
|
|
|
|
|
namespace AIStudio.Tools.Services;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// What the user gets to see before a plugin archive is installed. It is not bound to a specific
|
|
|
|
|
/// plugin type, so it also serves upcoming import paths for other plugin types.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="Plugin">The plugin from the archive, with the metadata it declares about itself.</param>
|
|
|
|
|
/// <param name="ExistingPlugin">The installed plugin that gets replaced or null when the archive adds a new plugin.</param>
|
2026-08-09 17:01:58 +00:00
|
|
|
/// <param name="ConfigurationSummary">
|
|
|
|
|
/// What a configuration plugin would set up. Null for every other plugin type.
|
|
|
|
|
/// </param>
|
|
|
|
|
public sealed record PluginImportPreview(IPluginMetadata Plugin, IAvailablePlugin? ExistingPlugin, ConfigurationPluginImportSummary? ConfigurationSummary = null)
|
2026-08-06 08:42:20 +00:00
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// True when an installed plugin with the same ID gets replaced.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool ReplacesExisting => this.ExistingPlugin is not null;
|
|
|
|
|
}
|