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"),
};
}