namespace AxCopilot.Services.Agent;

/// <summary>Phase 17-D: SkillDefinition 확장 필드를 저장하는 사전식 저장소.</summary>
public static class SkillExtensionStore
{
    private static readonly Dictionary<string, SkillExtData> _store = new();

    public static void Set(string skillId, SkillExtData data)
        => _store[skillId] = data;

    public static SkillExtData? Get(string skillId)
        => _store.TryGetValue(skillId, out var d) ? d : null;

    public static void Clear() => _store.Clear();
}

/// <summary>Phase 17-D 스킬 확장 데이터.</summary>
public class SkillExtData
{
    /// <summary>스킬 격리 컨텍스트. Fork = 독립 서브에이전트 실행.</summary>
    public SkillContextMode ContextMode { get; set; } = SkillContextMode.Default;

    /// <summary>자동 활성화 glob 패턴 목록 (paths: 프론트매터).</summary>
    public List<string> PathPatterns { get; set; } = new();

    /// <summary>스킬별 모델 오버라이드. null이면 현재 설정 모델 사용.</summary>
    public string? ModelOverride { get; set; }

    /// <summary>슬래시 목록 노출 여부. false이면 AI 전용 (사용자 /목록 미표시).</summary>
    public bool UserInvocable { get; set; } = true;
}

public enum SkillContextMode { Default, Fork }
