diff --git a/app/MindWork AI Studio/Tools/PluginSystem/IPluginMetadata.cs b/app/MindWork AI Studio/Tools/PluginSystem/IPluginMetadata.cs new file mode 100644 index 00000000..28e77b8b --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/IPluginMetadata.cs @@ -0,0 +1,64 @@ +namespace AIStudio.Tools.PluginSystem; + +public interface IPluginMetadata +{ + /// + /// The type of this plugin. + /// + public PluginType Type { get; } + + /// + /// The ID of this plugin. + /// + public Guid Id { get; } + + /// + /// The name of this plugin. + /// + public string Name { get; } + + /// + /// The description of this plugin. + /// + public string Description { get; } + + /// + /// The version of this plugin. + /// + public PluginVersion Version { get; } + + /// + /// The authors of this plugin. + /// + public string[] Authors { get; } + + /// + /// The support contact for this plugin. + /// + public string SupportContact { get; } + + /// + /// The source URL of this plugin. + /// + public string SourceURL { get; } + + /// + /// The categories of this plugin. + /// + public PluginCategory[] Categories { get; } + + /// + /// The target groups of this plugin. + /// + public PluginTargetGroup[] TargetGroups { get; } + + /// + /// True, when the plugin is maintained. + /// + public bool IsMaintained { get; } + + /// + /// The message that should be displayed when the plugin is deprecated. + /// + public string? DeprecationMessage { get; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs index 4f719d18..91b3e166 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs @@ -7,71 +7,47 @@ namespace AIStudio.Tools.PluginSystem; /// /// Represents the base of any AI Studio plugin. /// -public abstract class PluginBase +public abstract class PluginBase : IPluginMetadata { private readonly IReadOnlyCollection baseIssues; protected readonly LuaState state; protected readonly List pluginIssues = []; - /// - /// The type of this plugin. - /// + /// public PluginType Type { get; } - /// - /// The ID of this plugin. - /// + /// public Guid Id { get; } - /// - /// The name of this plugin. - /// + /// public string Name { get; } = string.Empty; - /// - /// The description of this plugin. - /// + /// public string Description { get; } = string.Empty; - /// - /// The version of this plugin. - /// + /// public PluginVersion Version { get; } - /// - /// The authors of this plugin. - /// + /// public string[] Authors { get; } = []; - /// - /// The support contact for this plugin. - /// + /// public string SupportContact { get; } = string.Empty; - /// - /// The source URL of this plugin. - /// + /// public string SourceURL { get; } = string.Empty; - /// - /// The categories of this plugin. - /// + /// public PluginCategory[] Categories { get; } = []; - /// - /// The target groups of this plugin. - /// + /// public PluginTargetGroup[] TargetGroups { get; } = []; - /// - /// True, when the plugin is maintained. - /// + /// public bool IsMaintained { get; } - /// - /// The message that should be displayed when the plugin is deprecated. - /// + /// public string? DeprecationMessage { get; } /// diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginMetadata.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginMetadata.cs new file mode 100644 index 00000000..0e8980bb --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginMetadata.cs @@ -0,0 +1,44 @@ +namespace AIStudio.Tools.PluginSystem; + +public sealed class PluginMetadata(PluginBase plugin) : IPluginMetadata +{ + #region Implementation of IPluginMetadata + + /// + public PluginType Type { get; } = plugin.Type; + + /// + public Guid Id { get; } = plugin.Id; + + /// + public string Name { get; } = plugin.Name; + + /// + public string Description { get; } = plugin.Description; + + /// + public PluginVersion Version { get; } = plugin.Version; + + /// + public string[] Authors { get; } = plugin.Authors; + + /// + public string SupportContact { get; } = plugin.SupportContact; + + /// + public string SourceURL { get; } = plugin.SourceURL; + + /// + public PluginCategory[] Categories { get; } = plugin.Categories; + + /// + public PluginTargetGroup[] TargetGroups { get; } = plugin.TargetGroups; + + /// + public bool IsMaintained { get; } = plugin.IsMaintained; + + /// + public string? DeprecationMessage { get; } = plugin.DeprecationMessage; + + #endregion +} \ No newline at end of file