namespace Sdt.Core;

public enum RunEventType
{
    WorkflowStarted,
    WorkflowPlanned,
    WorkflowStepStarted,
    WorkflowStepCompleted,
    ProbeChecked,
    ProbeFailed,
    InstallPlanPrepared,
    InstallDeclined,
    InstallCommandStarted,
    InstallCommandCompleted,
    WorkflowCompleted,
    DebugStarted,
    DebugCommandStarted,
    DebugCommandCompleted,
    DebugCompleted,
}

public sealed record RunEvent(
    string Category,
    RunEventType Type,
    string Message,
    string? WorkflowId = null,
    string? StepId = null,
    string? Tool = null,
    bool? Success = null,
    int? ExitCode = null,
    DateTimeOffset? Timestamp = null)
{
    public DateTimeOffset OccurredAt { get; init; } = Timestamp ?? DateTimeOffset.Now;
}
