Readonly[ReadonlyactivationReadonlyactiveReadonlycapabilitiesReadonlycoreReadonlydevIds of currently-registered plugins that came from a dev source (loaded
via LoadedPlugin with dev: true). Subscribers can use this to
badge dev-overridden plugins or to derive the id of the active dev plugin
for an "uninstall dev plugin" affordance.
ReadonlyenabledReadonlyeventsReadonlyfailedPlugins that failed to load or activate. Subscribers (e.g. the registry UI) can use this to flag unhealthy entries; a plugin id appears here at most once with its most recent failure.
ReadonlymodulesReadonlypendingReadonlypluginCached registry catalog state plus pass-throughs for listVersions /
getPlugin. Always present — the host supplies a pluginRegistryProvider
via ManagerOptions for real backends, or it falls back to a no-op
implementation that yields an empty catalog.
ReadonlypluginsReadonlyregistryOptionalparams: { after?: string; before?: string }Clears the failure record for a plugin so it can be retried. Returns whether a failure record existed and was removed.
Disables a plugin.
By default, cascades to currently-enabled dependents (transitively, leaves
first) so disabling a depended-upon plugin never leaves its dependents
stranded. Pass cascade: false to disable only the named plugin and leave
its dependents enabled-but-broken — VS Code-style disable parity for
callers that want the escape hatch (e.g. when swapping in an alternative
implementation that satisfies the dependents' needs in its own way).
Fails with Plugin.PluginDependencyError (reason: 'core-dependent')
when cascading would require disabling a core plugin; UI flows should
surface their own confirmation before calling disable with the default.
Optionalopts: { cascade?: boolean }Enables a plugin.
Default behavior auto-resolves the plugin's declared dependsOn closure:
missing entries that exist in the plugin registry catalog are installed via
add, then enabled in dependency-first order. Set resolveDependencies
to false to enable only the named plugin and skip the closure walk
entirely — useful when substituting an alternative plugin that satisfies
the dependent's capability needs in its own way.
Optionalopts: { resolveDependencies?: boolean }Returns the plugin ids that the given plugin declares as dependencies.
Walks meta.dependsOn from both registered plugins and the plugin registry
catalog so callers can preview the closure for a plugin that isn't yet
installed. With transitive: true (default), returns the full dependency
closure in dependency-first order (deps before dependents). Without it,
returns the direct declarations only.
Optionalopts: { transitive?: boolean }Returns the plugin ids that declare the given plugin as a dependency.
Walks meta.dependsOn over registered plugins. With transitive: true
(default), returns the full reverse closure. With enabledOnly: true,
filters to currently-enabled dependents — used by UI flows to preview what
a cascading disable would touch.
Optionalopts: { enabledOnly?: boolean; transitive?: boolean }Removes a plugin from the manager (disables then unregisters).
Honors the same cascade option as disable.
Optionalopts: { cascade?: boolean }Shuts down the manager by deactivating all active modules in reverse activation order, clearing all capabilities, and resetting lifecycle bookkeeping. Plugins, core, enabled, and modules remain intact so the manager can be reused.
Interface for the Plugin Manager.