namespace AIStudio.Chat;

/// <summary>
/// Data structure for a chat thread.
/// </summary>
/// <param name="name">The name of the chat thread.</param>
/// <param name="seed">The seed for the chat thread. Some providers use this to generate deterministic results.</param>
/// <param name="systemPrompt">The system prompt for the chat thread.</param>
/// <param name="blocks">The content blocks of the chat thread.</param>
public sealed class ChatThread(string name, int seed, string systemPrompt, IEnumerable<ContentBlock> blocks)
{
    /// <summary>
    /// The name of the chat thread. Usually generated by an AI model or manually edited by the user.
    /// </summary>
    public string Name { get; set; } = name;

    /// <summary>
    /// The seed for the chat thread. Some providers use this to generate deterministic results.
    /// </summary>
    public int Seed { get; set; } = seed;
    
    /// <summary>
    /// The current system prompt for the chat thread.
    /// </summary>
    public string SystemPrompt { get; set; } = systemPrompt;
    
    /// <summary>
    /// The content blocks of the chat thread.
    /// </summary>
    public List<ContentBlock> Blocks { get; init; } = blocks.ToList();
}