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
SeverityBowireDiscoverySeverityHow 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.
MessagestringThe 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
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
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
Methods
Deconstruct(out BowireDiscoverySeverity, out string)
public void Deconstruct(out BowireDiscoverySeverity Severity, out string Message)
Parameters
SeverityBowireDiscoverySeverityMessagestring
Equals(BowireDiscoveryDiagnostic?)
public bool Equals(BowireDiscoveryDiagnostic? other)
Parameters
Returns
Equals(object?)
public override bool Equals(object? obj)
Parameters
objobject
Returns
GetHashCode()
public override int GetHashCode()
Returns
ToString()
public override string ToString()
Returns
Operators
operator ==(BowireDiscoveryDiagnostic?, BowireDiscoveryDiagnostic?)
public static bool operator ==(BowireDiscoveryDiagnostic? left, BowireDiscoveryDiagnostic? right)
Parameters
Returns
operator !=(BowireDiscoveryDiagnostic?, BowireDiscoveryDiagnostic?)
public static bool operator !=(BowireDiscoveryDiagnostic? left, BowireDiscoveryDiagnostic? right)