namespace ClaudeDo.Data.Models;

public sealed class AppSettingsEntity
{
    public const int SingletonId = 1;

    public int Id { get; set; } = SingletonId;

    public string DefaultClaudeInstructions { get; set; } = string.Empty;
    public string DefaultModel { get; set; } = "sonnet";
    public int DefaultMaxTurns { get; set; } = 100;
    public string DefaultPermissionMode { get; set; } = "auto";

    public int MaxParallelExecutions { get; set; } = 1;

    public string WorktreeStrategy { get; set; } = "sibling";
    public string? CentralWorktreeRoot { get; set; }
    public bool WorktreeAutoCleanupEnabled { get; set; }
    public int WorktreeAutoCleanupDays { get; set; } = 7;

    // JSON array of parent folders remembered by the repo-import modal.
    public string? RepoImportFolders { get; set; }
    // JSON array of path prefixes whose sessions are excluded from the weekly report.
    public string? ReportExcludedPaths { get; set; }
    // DayOfWeek the standup happens on; default Wednesday. Drives the report's default range.
    public int StandupWeekday { get; set; } = (int)DayOfWeek.Wednesday;

    // Max number of open tasks the daily prep ("Prime Claude") may place in MyDay.
    public int DailyPrepMaxTasks { get; set; } = 5;

    // JSON array of session skill names applied by default to new tasks.
    public string? SessionSkills { get; set; }
}
