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

bool

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

string

DisplayName

Human-readable label shown in Settings → Modules.

string DisplayName { get; }

Property Value

string

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; }

Property Value

string