Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Features.Plugins
Overview
This feature contains both the legacy v1 plugin runtime and the canonical v2 host runtime. For new work in this repository, treat v2/ as the source of truth.
Canonical baseline:
IEltheonPlugin,PluginManifest,PluginBase,AddEltheonPluginHost(...),PluginManagerunderv2/, and the PackTool-based.elpkgflow.Legacy baseline:
IPlugin,PluginLoader, andPluginManagerunderv1/. Keep it only for historical compatibility and upgrade work.
Canonical v2 Elements
Extensions/PluginHostServiceCollectionExtensions.csregisters the host runtime.Manager/PluginManager.csactivates manifest-driven plugins and applies plugin infrastructure.Models/PluginDescriptor.csholds runtime state, manifests, navigation, permissions, and database metadata.UsePluginStaticFiles(...), application parts, navigation providers, permission providers, and plugin DB wiring are part of the active v2 path.
Legacy v1 Elements
v1/Loader/PluginLoader.csv1/Manager/PluginManager.csv1/Interfaces/IPlugin.cs
Canonical Usage
builder.Services.AddEltheonPluginHost(GlobalConfig.Instance.PluginPath);
- Use
Redeon.SuperSiteEngineCore.Web.Eltheon.Plugins.Abstractionsand.SDKfor plugin contracts. - Use
Plugins/Redeon.Eltheon.TestPluginas the current reference implementation. - Use the PackTool for
.elpkgpackaging.
Diagnostics
Enable Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Features.Plugins logging to trace activation, manifest loading, DbContext wiring, and post-build lifecycle execution.
Canonical Events
AddEltheonPluginHost(...) registers plugin lifecycle event metadata and emits events from the v2 manager after successful state changes. Event payloads are limited to safe identifiers, names, versions, status values, uninstall mode, validation stage, and reason codes.
Eltheon.Plugins.PluginInstallStartedEltheon.Plugins.PluginInstalledEltheon.Plugins.PluginInstallFailedEltheon.Plugins.PackageValidationFailedEltheon.Plugins.PluginActivatedEltheon.Plugins.PluginDeactivatedEltheon.Plugins.PluginRemoved
Plugin lifecycle events are Critical, InternalOnly, audit-relevant, and security-relevant by default. Set PluginEventOptions.EnableEvents = false through AddEltheonPluginHost(..., configureEvents: options => options.EnableEvents = false) to opt out.
For repository-level guidance, prefer:
docs/plugins/current-plugin-architecture.mddocs/plugins/legacy-to-v2-upgrade.md