namespace ClawdDotNet.Core.Engine;

public sealed record AgentRunResult(
    string AgentId,
    AgentRunStatus Status,
    string? FinalMessage,
    int StepCount,
    int TokensUsed,
    TimeSpan Duration,
    Exception? Error = null
)
{
    /// <summary>Summe der Eingabe-Tokens über alle Schritte des Runs.</summary>
    public int PromptTokens { get; init; }

    /// <summary>Summe der Ausgabe-Tokens über alle Schritte des Runs.</summary>
    public int CompletionTokens { get; init; }

    /// <summary>
    /// Anteil der Eingabe-Tokens, der aus dem Prompt-Cache kam. Diese Tokens sind bereits
    /// in <see cref="PromptTokens"/> enthalten, kosten aber nur einen Bruchteil.
    /// </summary>
    public int CachedTokens { get; init; }
}

public enum AgentRunStatus
{
    Completed,
    Failed,
    Cancelled,
    LoopLimitExceeded,

    /// <summary>Der Lauf fand nicht statt, weil das Tagesbudget erschöpft ist.</summary>
    BudgetExceeded
}
