using BotSharp.Abstraction.Conversations.Models; using BotSharp.Abstraction.MLTasks; namespace BotSharp.Abstraction.Conversations; public interface IConversationCompletionHook { Agent Agent { get; } IConversationCompletionHook SetAgent(Agent agent); Conversation Conversation { get; } IConversationCompletionHook SetConversation(Conversation conversation); List Dialogs { get; } IConversationCompletionHook SetDialogs(List dialogs); IChatCompletion ChatCompletion { get; } IConversationCompletionHook SetChatCompletion(IChatCompletion chatCompletion); Task OnStateLoaded(ConversationState state, Action? onAgentSwitched = null); Task BeforeCompletion(); Task OnFunctionExecuting(string name, string args); Task AfterCompletion(RoleDialogModel message); }