using BotSharp.Abstraction.Functions.Models;
using BotSharp.Abstraction.Hooks;
namespace BotSharp.Abstraction.Agents;
public interface IAgentHook : IHookBase
{
Agent Agent { get; }
void SetAgent(Agent agent);
///
/// Triggered when agent is loading.
/// Return different agent for redirection purpose.
///
/// Agent Id
///
bool OnAgentLoading(ref string id);
bool OnInstructionLoaded(string template, Dictionary dict);
bool OnFunctionsLoaded(List functions);
bool OnSamplesLoaded(List samples);
void OnAgentUtilityLoaded(Agent agent);
void OnAgentMcpToolLoaded(Agent agent);
///
/// Triggered when agent is loaded completely.
///
///
///
void OnAgentLoaded(Agent agent);
}