summaryrefslogtreecommitdiff
path: root/src/Agent.Core/Sessions/AgentSession.cs
blob: d561c8da63c0f0420d1409790bcee98d5b31293b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
namespace Agent.Core.Sessions;

public sealed class AgentSession(Guid sessionId)
{
    private readonly object _sync = new();
    private readonly List<ConversationMessage> _conversation = [];

    public Guid SessionId { get; } = sessionId;
    public DateTimeOffset CreatedAt { get; } = DateTimeOffset.UtcNow;
    public DateTimeOffset LastAccessAt { get; private set; } = DateTimeOffset.UtcNow;

    public IReadOnlyList<ConversationMessage> Conversation
    {
        get { lock (_sync) return _conversation.ToArray(); }
    }

    public void Append(ConversationMessage message)
    {
        ArgumentNullException.ThrowIfNull(message);
        lock (_sync)
        {
            _conversation.Add(message);
            LastAccessAt = DateTimeOffset.UtcNow;
        }
    }
}