using Luna.Configuration; using Microsoft.Extensions.AI; namespace Luna.Agents.Abstractions; public interface IAgent { public static virtual string Name { get; } = null!; public string DisplayName { get; } public string Description { get; } public AgentOptions Options { get; init; } Task> ProcessAsync(IReadOnlyList messages, CancellationToken ct = default); IAsyncEnumerable ProcessStreamingAsync(IReadOnlyList messages, CancellationToken ct = default); }