using System.Text.Json.Serialization;
namespace AIStudio.Agents.AssistantAudit;
///
/// Represents a single structured security finding produced by the assistant audit agent.
///
public sealed class AssistantAuditFinding
{
#pragma warning disable MWAIS0005
///
/// Gets the normalized internal severity level derived from .
///
#pragma warning restore MWAIS0005
[JsonIgnore]
public AssistantAuditLevel Severity { get; private init; } = AssistantAuditLevel.UNKNOWN;
///
/// Gets or initializes the JSON-facing severity label used by the audit model response.
///
[JsonPropertyName("severity")]
public string SeverityText
{
get => this.Severity switch
{
AssistantAuditLevel.DANGEROUS => "critical",
AssistantAuditLevel.CAUTION => "medium",
AssistantAuditLevel.SAFE => "low",
_ => "unknown",
};
init => this.Severity = value.Trim().ToLowerInvariant() switch
{
"critical" => AssistantAuditLevel.DANGEROUS,
"medium" => AssistantAuditLevel.CAUTION,
"low" => AssistantAuditLevel.SAFE,
_ => AssistantAuditLevel.UNKNOWN,
};
}
public string Category { get; init; } = string.Empty;
public string Location { get; init; } = string.Empty;
public string Description { get; init; } = string.Empty;
}