namespace ClaudeDo.Worker.Runner;

/// <summary>The list handler's phase parameter, threaded from handoff_list_handler (External)
/// through HubBroadcaster/WorkerHub down to InteractiveLaunchSpecService, which picks the next
/// session's system prompt and model from it. Validated centrally here so an unknown value is
/// rejected outright instead of silently falling back to a default.</summary>
public static class MergeHelperPhase
{
    public const string Wait = "wait";
    public const string Merge = "merge";
    public const string WaitFinal = "wait_final";
    public const string MergeFinal = "merge_final";

    public static readonly IReadOnlyList<string> All = new[] { Wait, Merge, WaitFinal, MergeFinal };

    public static void Validate(string phase)
    {
        if (!All.Contains(phase, StringComparer.Ordinal))
            throw new ArgumentException($"Unknown list-handler phase '{phase}'. Allowed: {string.Join(", ", All)}.");
    }
}
