Class BowireDiscoveryDiagnostic

Namespace
Kuestenlogik.Bowire.Models
Assembly
Kuestenlogik.Bowire.dll

What a protocol plugin has to say about a probe besides the services it returned (#544).

DiscoverAsync(string, bool, CancellationToken) is all-or-nothing: a plugin either returns a list or throws. A plugin whose probe half-worked — an MCP server with one malformed tool but perfectly good resources and prompts — therefore had to choose between hiding the fault (return the partial list) and hiding the results (throw). This record is the third option, handed back alongside the services through IBowireDiscoveryDiagnostics.

public sealed record BowireDiscoveryDiagnostic : IEquatable<BowireDiscoveryDiagnostic>
Inheritance
BowireDiscoveryDiagnostic
Implements
Inherited Members

Constructors

BowireDiscoveryDiagnostic(BowireDiscoverySeverity, string)

What a protocol plugin has to say about a probe besides the services it returned (#544).

DiscoverAsync(string, bool, CancellationToken) is all-or-nothing: a plugin either returns a list or throws. A plugin whose probe half-worked — an MCP server with one malformed tool but perfectly good resources and prompts — therefore had to choose between hiding the fault (return the partial list) and hiding the results (throw). This record is the third option, handed back alongside the services through IBowireDiscoveryDiagnostics.

public BowireDiscoveryDiagnostic(BowireDiscoverySeverity Severity, string Message)

Parameters

Severity BowireDiscoverySeverity

How bad it is. The plugin does not pick the wire outcome — BowireDiscoveryProbe does, because only the probe knows how many services actually came back. See BowireDiscoverySeverity for the mapping.

Message string

The one-liner that becomes Message. Never prefixed with the plugin name — the attempt already carries it.

Properties

Details

The per-step breakdown behind Message: one line per faulted MCP surface, one line per well-known path a REST sweep tried, … Reaches the wire as the attempt's optional details array.

Leave it null (not empty) when there is nothing to break down — the endpoint's serializer ignores nulls, so the field simply does not appear.

public IReadOnlyList<string>? Details { get; init; }

Property Value

IReadOnlyList<string>

Message

The one-liner that becomes Message. Never prefixed with the plugin name — the attempt already carries it.

public string Message { get; init; }

Property Value

string

Severity

How bad it is. The plugin does not pick the wire outcome — BowireDiscoveryProbe does, because only the probe knows how many services actually came back. See BowireDiscoverySeverity for the mapping.

public BowireDiscoverySeverity Severity { get; init; }

Property Value

BowireDiscoverySeverity

Methods

Deconstruct(out BowireDiscoverySeverity, out string)

public void Deconstruct(out BowireDiscoverySeverity Severity, out string Message)

Parameters

Severity BowireDiscoverySeverity
Message string

Equals(BowireDiscoveryDiagnostic?)

public bool Equals(BowireDiscoveryDiagnostic? other)

Parameters

other BowireDiscoveryDiagnostic

Returns

bool

Equals(object?)

public override bool Equals(object? obj)

Parameters

obj object

Returns

bool

GetHashCode()

public override int GetHashCode()

Returns

int

ToString()

public override string ToString()

Returns

string

Operators

operator ==(BowireDiscoveryDiagnostic?, BowireDiscoveryDiagnostic?)

public static bool operator ==(BowireDiscoveryDiagnostic? left, BowireDiscoveryDiagnostic? right)

Parameters

left BowireDiscoveryDiagnostic
right BowireDiscoveryDiagnostic

Returns

bool

operator !=(BowireDiscoveryDiagnostic?, BowireDiscoveryDiagnostic?)

public static bool operator !=(BowireDiscoveryDiagnostic? left, BowireDiscoveryDiagnostic? right)

Parameters

left BowireDiscoveryDiagnostic
right BowireDiscoveryDiagnostic

Returns

bool