using System;

namespace PolyTrader.Core.Agents
{
    /// <summary>
    /// Kostendeckel für einen einzelnen Agenten-Lauf (aus ClawdDotNet übernommen und erweitert): begrenzt
    /// Schritte, Gesamt-Tokens und Wanduhr-Zeit. Wird pro Lauf mit einem frischen <see cref="LoopGuard"/>
    /// erzwungen – so kann ein LLM-Agent nicht in eine teure Endlosschleife laufen.
    /// </summary>
    public sealed record AgentBudget
    {
        /// <summary>Maximale Anzahl Modell-Runden (Function-Calling-Iterationen).</summary>
        public int MaxSteps { get; init; } = 8;

        /// <summary>Maximale Summe aus Prompt- und Completion-Tokens über den gesamten Lauf.</summary>
        public int MaxTokens { get; init; } = 120_000;

        /// <summary>Maximale Wanduhr-Dauer des gesamten Laufs.</summary>
        public TimeSpan Timeout { get; init; } = TimeSpan.FromMinutes(3);

        /// <summary>Voreinstellung (moderat: 8 Schritte, 120k Tokens, 3 Minuten).</summary>
        public static AgentBudget Default { get; } = new();
    }
}
