using AIStudio.Chat;
namespace AIStudio.Agents;
public interface IAgent
{
///
/// Gets the name of the agent.
///
public string Id { get; }
///
/// The provider to use for this agent.
///
public AIStudio.Settings.Provider? ProviderSettings { get; set; }
///
/// Processes a chat thread (i.e., context) and returns the updated thread.
///
/// The chat thread to process. The thread is the context for the agent.
/// Additional data to use for processing the chat thread.
/// The updated chat thread. The last content block of the thread is the agent's response.
public Task ProcessContext(ChatThread chatThread, IDictionary additionalData);
///
/// Processes the input content block and returns the agent's response.
///
/// The content block to process. It represents the input.
/// Additional data to use for processing the input.
/// The content block representing the agent's response.
public Task ProcessInput(ContentBlock input, IDictionary additionalData);
///
/// The agent makes a decision based on the input.
///
/// The content block to process. Should be a question or a request.
///
/// True if a decision has been made based on the input, false otherwise.
///
public Task MadeDecision(ContentBlock input);
///
/// Retrieves the context of the agent.
///
/// The collection of content blocks representing the agent's context. This includes the user's and the other agent's messages.
public IReadOnlyCollection GetContext();
///
/// Retrieves the answers from the agent's context.
///
///
/// The collection of content blocks representing the answers provided by this agent.
///
public IReadOnlyCollection GetAnswers();
}