using AIStudio.Tools.PluginSystem; namespace AIStudio.Chat; public static class ChatRoleExtensions { private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ChatRoleExtensions).Namespace, nameof(ChatRoleExtensions)); /// /// 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"), }; /// /// Selects the next role for a chat template. /// /// The current role. /// The next role for the chat template. public static ChatRole SelectNextRoleForTemplate(this ChatRole currentRole) => currentRole switch { ChatRole.USER => ChatRole.AI, _ => ChatRole.USER, }; }