namespace AxCopilot.Services.Agent;

/// <summary>
/// Phase 30-B: 에이전트 타입별 메모리 저장소 인터페이스 (DIP).
/// 구체 구현(<see cref="AgentTypeMemoryRepository"/>)에 의존하지 않고
/// 인터페이스에만 의존하여 테스트 가능성과 확장성을 확보합니다.
/// </summary>
public interface IAgentMemoryRepository
{
    /// <summary>에이전트 타입 메모리를 로드합니다.</summary>
    Task<string?> LoadMemoryAsync(string agentType);

    /// <summary>에이전트 타입 메모리를 저장합니다.</summary>
    Task SaveMemoryAsync(string agentType, string content);

    /// <summary>학습 내용을 기존 메모리에 추가합니다.</summary>
    Task AppendLearnAsync(string agentType, string learning);

    /// <summary>등록된 에이전트 타입 목록을 반환합니다.</summary>
    IReadOnlyList<string> GetAgentTypes();

    /// <summary>에이전트 타입 메모리를 삭제합니다.</summary>
    void DeleteMemory(string agentType);
}
