Interface IBowireModuleContribution
- Namespace
- Kuestenlogik.Bowire.Plugins
- Assembly
- Kuestenlogik.Bowire.dll
Descriptor contributed by a package that wants to add a cross-cutting module (AI assistant, MCP bridge, variable resolver, guided tour, …) to the Bowire workbench.
public interface IBowireModuleContribution
Remarks
Modules differ from rails in that they don't own a left-strip icon: they hook into the workbench across multiple surfaces (the AI module wires a chat pane into every rail, the variable-resolver module patches the URL bar & request-builder, the assistant module hooks the topbar overflow). Hosts that don't ship the package shouldn't see any trace of the module in the UI — that's the whole point of pulling them through descriptors.
Like rails, modules are auto-discovered by
Discover(ILogger?) via assembly scanning. They
can also be registered explicitly via
services.AddBowireModule<TModule>().
Properties
DefaultEnabled
Whether the module defaults to ON when the package is referenced.
Most modules should default to true — operators expect the
thing they explicitly installed to work. Set false only
for modules whose footprint is so heavy (network, disk, perf)
that opt-in is the right default.
bool DefaultEnabled { get; }
Property Value
Description
One-sentence description shown under the module name in Settings → Modules. Tells the operator what surface they're turning on or off (e.g. "Chat-with-your-API panel and contextual hints"). Defaults to empty — modules without a description just render the label, same as the rails toggle.
string Description { get; }
Property Value
DisplayName
Human-readable label shown in Settings → Modules.
string DisplayName { get; }
Property Value
Id
Stable identifier (e.g. "ai", "assistant",
"var-resolver"). Surfaced to the JS bundle so module-aware
render paths can opt into the module's hooks only when it's
loaded.
string Id { get; }