namespace Agent.Core.Sessions; public sealed class AgentSession(Guid sessionId) { private readonly object _sync = new(); private readonly List _conversation = []; public Guid SessionId { get; } = sessionId; public DateTimeOffset CreatedAt { get; } = DateTimeOffset.UtcNow; public DateTimeOffset LastAccessAt { get; private set; } = DateTimeOffset.UtcNow; public IReadOnlyList Conversation { get { lock (_sync) return _conversation.ToArray(); } } public void Append(ConversationMessage message) { ArgumentNullException.ThrowIfNull(message); lock (_sync) { _conversation.Add(message); LastAccessAt = DateTimeOffset.UtcNow; } } }