RefactorSetDefinition.cs

using Microsoft.VisualBasic.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace GenXdev.Helpers
{
 
    public class RefactorDefinition
    {
        public string Name { get; set; }
        public int Priority { get; set; }
        public RefactorSettings RefactorSettings { get; set; } = new RefactorSettings();
        public SelectionSettings SelectionSettings { get; set; } = new SelectionSettings();
        public List<RefactorLogItem> Log { get; set; } = new List<RefactorLogItem>();
        public RefactorState State { get; set; } = new RefactorState();
    }
 
    public class RefactorSettings
    {
        public string PromptKey { get; set; }
        public string Prompt { get; set; }
        public List<string> KeysToSend { get; set; } = new List<string>();
        public int Code { get; set; } = -1;
        public int VisualStudio { get; set; } = -1;
    }
 
    public class SelectionSettings
    {
        public string Script { get; set; }
        public bool AutoAddModifiedFiles { get; set; }
 
        public RefactorSelectionLLMSettings LLM { get; set; } = new RefactorSelectionLLMSettings();
    }
 
    public class RefactorSelectionLLMSettings
    {
        public string Prompt { get; set; }
        public string Model { get; set; }
        public string ModelLMSGetIdentifier { get; set; }
        public double Temperature { get; set; }
        public int MaxToken { get; set; } = -1;
        public int TTLSeconds { get; set; } = 0;
        public double Gpu { get; set; }
        public bool Force { get; set; }
        public string ApiEndpoint { get; set; }
        public string ApiKey { get; set; }
        public List<ExposedCmdletDefinition> ExposedCmdlets { get; set; } = new List<ExposedCmdletDefinition>();
    }
 
    public class RefactorLogItem
    {
        public System.DateTime Timestamp { get; set; } = System.DateTime.UtcNow;
        public string Message { get; set; } = "";
    }
 
    public class RefactorState
    {
        public string Status { get; set; } = "Definition Created";
        public System.DateTime LastUpdated { get; set; } = System.DateTime.UtcNow;
        public System.DateTime? LastRefactoring { get; set; }
        public int PercentageComplete { get; set; }
        public int RefactoredIndex { get; set; } = -1;
        public int SelectedIndex { get; set; } = -1;
        public int UnselectedIndex { get; set; } = -1;
        public List<string> Selected { get; set; } = new List<string>();
        public List<string> Refactored { get; set; } = new List<string>();
        public List<string> Unselected { get; set; } = new List<string>();
    }
}