using Agent.Core.Ollama; using Agent.Core.Tools; namespace Agent.Core.Runtime; public interface IAgentRuntimeObserver { void LlmRequest(AgentLlmCallContext context, IReadOnlyList messages); void LlmResponse(AgentLlmCallContext context, OllamaResult result); void LlmFailure(AgentLlmCallContext context, string errorCode, string message); void ToolResult(AgentLlmCallContext context, string toolName, ToolExecutionResult result); } public sealed record AgentLlmCallContext(Guid CallId, Guid SessionId, Guid TaskId, Guid? PlannerTaskId, string Phase, int Iteration, int Replan, string Model); public sealed class NullAgentRuntimeObserver : IAgentRuntimeObserver { public static NullAgentRuntimeObserver Instance { get; } = new(); public void LlmRequest(AgentLlmCallContext context, IReadOnlyList messages) { } public void LlmResponse(AgentLlmCallContext context, OllamaResult result) { } public void LlmFailure(AgentLlmCallContext context, string errorCode, string message) { } public void ToolResult(AgentLlmCallContext context, string toolName, ToolExecutionResult result) { } }