using System.Text.Json; namespace backend.Tools; public record DeviceContext(Guid DeviceId, Guid ConversationId, IDeviceChannel Channel); public record ToolInvocation(string CallId, JsonElement Arguments); public record ToolResult(JsonElement Output); public interface ITool { string Name { get; } string Description { get; } JsonElement ParameterSchema { get; } bool RunsDuringResponse { get; } Task ExecuteAsync( ToolInvocation invocation, DeviceContext device, CancellationToken ct); }