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