< Summary

Information
Class: UIBlazor.Models.ConversationSession
Assembly: UIBlazor
File(s): /home/runner/work/InvAit/InvAit/UIBlazor/Models/ConversationSession.cs
Tag: 14_22728831704
Line coverage
43%
Covered lines: 16
Uncovered lines: 21
Coverable lines: 37
Total lines: 120
Line coverage: 43.2%
Branch coverage
12%
Covered branches: 1
Total branches: 8
Branch coverage: 12.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_Messages()100%11100%
get_CreatedAt()100%11100%
get_LastUpdated()100%11100%
get_MaxMessages()100%11100%
get_TotalTokens()100%210%
get_Mode()100%210%
AddMessage(...)100%11100%
AddMessage(...)50%2280%
RemoveMessage(...)0%620%
UpdateMessage(...)0%620%
GetFormattedMessages(...)0%620%

File(s)

/home/runner/work/InvAit/InvAit/UIBlazor/Models/ConversationSession.cs

#LineLine coverage
 1namespace UIBlazor.Models;
 2
 3public class ConversationSession
 4{
 5    /// <summary>
 6    /// Gets or sets the unique identifier for the conversation session.
 7    /// </summary>
 8    [JsonIgnore]
 219    public string Id { get; set; } = string.Empty;
 10
 11    /// <summary>
 12    /// Gets or sets the list of messages in the conversation.
 13    /// </summary>
 1914    public List<VisualChatMessage> Messages { get; set; } = [];
 15
 16    /// <summary>
 17    /// Gets or sets the timestamp when the conversation was created.
 18    /// </summary>
 819    public DateTime CreatedAt { get; set; } = DateTime.Now;
 20
 21    /// <summary>
 22    /// Gets or sets the timestamp when the conversation was last updated.
 23    /// </summary>
 924    public DateTime LastUpdated { get; set; } = DateTime.Now;
 25
 26    /// <summary>
 27    /// Gets or sets the maximum number of messages to keep in memory.
 28    /// </summary>
 29    [JsonIgnore]
 1230    public int MaxMessages { get; set; } = 50;
 31
 32    /// <summary>
 33    /// Gets or sets the total tokens used in the conversation.
 34    /// </summary>
 035    public int TotalTokens { get; set; }
 36
 37    /// <summary>
 38    /// Gets or sets the current application mode for this session.
 39    /// </summary>
 040    public AppMode Mode { get; set; } = AppMode.Chat;
 41
 42    /// <summary>
 43    /// Adds a message to the conversation and manages memory limits.
 44    /// </summary>
 45    /// <param name="role">The role of the message sender.</param>
 46    /// <param name="content">The message content.</param>
 47    public void AddMessage(string role, string content)
 48    {
 149        AddMessage(new VisualChatMessage
 150        {
 151            Role = role,
 152            Content = content,
 153            Timestamp = DateTime.Now
 154        });
 155    }
 56
 57    /// <summary>
 58    /// Adds a message object to the conversation and manages memory limits.
 59    /// </summary>
 60    public void AddMessage(VisualChatMessage message)
 61    {
 162        Messages.Add(message);
 163        LastUpdated = DateTime.Now;
 64
 65        // Remove oldest messages if we exceed the limit
 166        while (Messages.Count > MaxMessages)
 67        {
 068            Messages.RemoveAt(0);
 69        }
 170    }
 71
 72    /// <summary>
 73    /// Removes a message from the conversation.
 74    /// </summary>
 75    public void RemoveMessage(string id)
 76    {
 077        var message = Messages.FirstOrDefault(m => m.Id == id);
 078        if (message != null)
 79        {
 080            Messages.Remove(message);
 081            LastUpdated = DateTime.Now;
 82        }
 083    }
 84
 85    /// <summary>
 86    /// Updates the content of a message.
 87    /// </summary>
 88    public void UpdateMessage(string id, string content)
 89    {
 090        var message = Messages.FirstOrDefault(m => m.Id == id);
 091        if (message != null)
 92        {
 093            message.Content = content;
 094            LastUpdated = DateTime.Now;
 95        }
 096    }
 97
 98    /// <summary>
 99    /// Gets the conversation messages formatted for the AI API.
 100    /// </summary>
 101    /// <param name="systemPrompt">The system prompt to include.</param>
 102    /// <returns>A list of message objects for the AI API.</returns>
 103    public List<object> GetFormattedMessages(string systemPrompt)
 104    {
 0105        var messages = new List<object>
 0106        {
 0107            // Add system message
 0108            new { role = "system", content = systemPrompt }
 0109        };
 110
 111        // Add conversation messages
 0112        foreach (var message in Messages)
 113        {
 0114            messages.Add(new { role = message.Role, content = message.Content });
 115        }
 116
 0117        return messages;
 118    }
 119}
 120