sprints work

This commit is contained in:
master
2026-01-10 20:32:13 +02:00
parent 0d5eda86fc
commit 17d0631b8e
189 changed files with 40667 additions and 497 deletions

View File

@@ -345,16 +345,31 @@ public sealed record ConversationContext
/// </summary>
public string? TenantId { get; init; }
/// <summary>
/// Gets the conversation topic.
/// </summary>
public string? Topic { get; init; }
/// <summary>
/// Gets the current CVE being discussed.
/// </summary>
public string? CurrentCveId { get; init; }
/// <summary>
/// Gets the focused CVE ID (alias for CurrentCveId).
/// </summary>
public string? FocusedCveId => CurrentCveId;
/// <summary>
/// Gets the current component PURL.
/// </summary>
public string? CurrentComponent { get; init; }
/// <summary>
/// Gets the focused component (alias for CurrentComponent).
/// </summary>
public string? FocusedComponent => CurrentComponent;
/// <summary>
/// Gets the current image digest.
/// </summary>
@@ -370,6 +385,49 @@ public sealed record ConversationContext
/// </summary>
public string? SbomId { get; init; }
/// <summary>
/// Gets the finding ID in context.
/// Sprint: SPRINT_20260109_011_005 Task: EVPK-006
/// </summary>
public string? FindingId { get; init; }
/// <summary>
/// Gets the run ID in context.
/// Sprint: SPRINT_20260109_011_005 Task: EVPK-006
/// </summary>
public string? RunId { get; init; }
/// <summary>
/// Gets the user ID.
/// Sprint: SPRINT_20260109_011_005 Task: EVPK-006
/// </summary>
public string? UserId { get; init; }
/// <summary>
/// Gets the vulnerability severity.
/// </summary>
public string? Severity { get; init; }
/// <summary>
/// Gets whether the vulnerability is reachable.
/// </summary>
public bool? IsReachable { get; init; }
/// <summary>
/// Gets the CVSS score.
/// </summary>
public double? CvssScore { get; init; }
/// <summary>
/// Gets the EPSS score.
/// </summary>
public double? EpssScore { get; init; }
/// <summary>
/// Gets context tags.
/// </summary>
public ImmutableArray<string> Tags { get; init; } = ImmutableArray<string>.Empty;
/// <summary>
/// Gets accumulated evidence links.
/// </summary>
@@ -413,11 +471,21 @@ public sealed record ConversationTurn
/// </summary>
public required string TurnId { get; init; }
/// <summary>
/// Gets the turn number in the conversation (1-based).
/// </summary>
public int TurnNumber { get; init; }
/// <summary>
/// Gets the role (user/assistant/system).
/// </summary>
public required TurnRole Role { get; init; }
/// <summary>
/// Gets the actor identifier (user ID or system ID).
/// </summary>
public string? ActorId { get; init; }
/// <summary>
/// Gets the message content.
/// </summary>
@@ -536,11 +604,27 @@ public sealed record ProposedAction
/// </summary>
public required string Label { get; init; }
/// <summary>
/// Gets the action subject (CVE, component, etc.).
/// </summary>
public string? Subject { get; init; }
/// <summary>
/// Gets the action rationale.
/// </summary>
public string? Rationale { get; init; }
/// <summary>
/// Gets the action payload (JSON).
/// </summary>
public string? Payload { get; init; }
/// <summary>
/// Gets action parameters.
/// </summary>
public ImmutableDictionary<string, string> Parameters { get; init; } =
ImmutableDictionary<string, string>.Empty;
/// <summary>
/// Gets whether this action requires confirmation.
/// </summary>