namespace ClaudeDo.Data.Models;
///
/// The reasoning-effort levels the claude CLI accepts for --effort.
///
public static class EffortRegistry
{
public static readonly IReadOnlyList Levels = new[] { "low", "medium", "high", "xhigh", "max" };
public const string DefaultLevel = "high";
///
/// Validate an effort level from external input. Null/blank → null (don't pass --effort).
/// Returns the canonical lowercase level; throws on an unknown value.
///
public static string? NormalizeLevel(string? effort)
{
var e = effort?.Trim();
if (string.IsNullOrEmpty(e)) return null;
foreach (var level in Levels)
if (string.Equals(level, e, StringComparison.OrdinalIgnoreCase))
return level;
throw new ArgumentException($"Unknown effort '{effort}'. Allowed: {string.Join(", ", Levels)}.");
}
}