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.
The template host discovers v2 plugins from the verified plugins-space snapshot. Registry state and valid manifests in that snapshot are reconciled on every load. Discovery diagnostics expose only aggregate counts for unrecognized legacy content. File-changing Admin operations remain disabled until installation and removal are backed by persistent Storage boot tasks.
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