namespace BotSharp.Abstraction.Routing.Models; public class RoutingArgs { [JsonPropertyName("function")] public string Function { get; set; } /// /// The reason why you select this function or agent /// [JsonPropertyName("next_action_reason")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? NextActionReason { get; set; } [JsonPropertyName("reason")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Reason { get; set; } [JsonPropertyName("conversation_end")] public bool ConversationEnd { get; set; } /// /// The content of replying to user /// [JsonPropertyName("response")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string Response { get; set; } /// /// Agent for next action based on user latest response /// [JsonPropertyName("next_action_agent")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string AgentName { get; set; } /// /// Agent who can achieve user original goal /// [JsonPropertyName("user_goal_agent")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string OriginalAgent { get; set; } [JsonPropertyName("user_goal_description")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string UserGoal { get; set; } public override string ToString() { var route = string.IsNullOrEmpty(AgentName) ? "" : $""; if (string.IsNullOrEmpty(Response)) { return $"[{Function} {route}]"; } else { return $"[{Function} {route}] => {Response}"; } } }