namespace Jibo.Runtime.Abstractions; public sealed class ConversationSession { public string SessionId { get; init; } = Guid.NewGuid().ToString("N"); public DateTimeOffset StartedUtc { get; init; } = DateTimeOffset.UtcNow; public DateTimeOffset LastActivityUtc { get; set; } = DateTimeOffset.UtcNow; public string? ActiveTopic { get; set; } public string? LastIntent { get; set; } public IDictionary Slots { get; } = new Dictionary(); public DateTimeOffset? FollowUpExpiresUtc { get; set; } public bool FollowUpOpen => FollowUpExpiresUtc.HasValue && FollowUpExpiresUtc > DateTimeOffset.UtcNow; }