using AIStudio.Tools.PluginSystem; namespace AIStudio.Chat; /// /// Possible roles in the chat. /// public enum ChatRole { NONE, UNKNOWN, SYSTEM, USER, AI, AGENT, } /// /// Extensions for the ChatRole enum. /// public static class ExtensionsChatRole { private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ChatRole).Namespace, nameof(ChatRole)); /// /// Returns the name of the role. /// /// The role. /// The name of the role. public static string ToName(this ChatRole role) => role switch { ChatRole.SYSTEM => TB("System"), ChatRole.USER => TB("You"), ChatRole.AI => TB("AI"), _ => TB("Unknown"), }; /// /// Returns the color of the role. /// /// The role. /// The color of the role. public static Color ToColor(this ChatRole role) => role switch { ChatRole.SYSTEM => Color.Info, ChatRole.USER => Color.Primary, ChatRole.AI => Color.Tertiary, _ => Color.Error, }; /// /// Returns the icon of the role. /// /// The role. /// The icon of the role. public static string ToIcon(this ChatRole role) => role switch { ChatRole.SYSTEM => Icons.Material.Filled.Settings, ChatRole.USER => Icons.Material.Filled.Person, ChatRole.AI => Icons.Material.Filled.AutoAwesome, _ => Icons.Material.Filled.Help, }; /// /// Returns the specific name of the role for the chat template. /// /// The role. /// The name of the role. public static string ToChatTemplateName(this ChatRole role) => role switch { ChatRole.SYSTEM => TB("System"), ChatRole.USER => TB("User"), ChatRole.AI => TB("Assistant"), _ => TB("Unknown"), }; }