// Copyright (c) Microsoft. All rights reserved.
namespace Harness.Shared.Console;
///
/// Configuration options for .
///
public class HarnessConsoleOptions
{
///
/// Gets or sets the optional maximum context window size in tokens.
/// When set, token usage is displayed as a percentage of the budget.
///
public int? MaxContextWindowTokens { get; set; }
///
/// Gets or sets the optional maximum output tokens.
/// Used with to show input/output budget breakdown.
///
public int? MaxOutputTokens { get; set; }
///
/// Gets or sets a value indicating whether the planning UX is enabled.
/// When and the agent is in the mode specified by ,
/// the console uses structured output to present clarification questions and approval requests
/// instead of streaming free-form text.
///
/// Defaults to .
public bool EnablePlanningUx { get; set; }
///
/// Gets or sets the name of the agent mode that activates the planning UX.
/// Must be set when is .
///
public string? PlanningModeName { get; set; }
///
/// Gets or sets the name of the agent mode to switch to when the user approves a plan.
/// Must be set when is .
///
public string? ExecutionModeName { get; set; }
///
/// Gets or sets a mapping of agent mode names to console colors.
/// When a mode is not found in this dictionary, the default color () is used.
///
public Dictionary ModeColors { get; set; } = new(StringComparer.OrdinalIgnoreCase)
{
["plan"] = ConsoleColor.Cyan,
["execute"] = ConsoleColor.Green,
};
}