// Copyright (c) Microsoft. All rights reserved. using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.AI; namespace Microsoft.Agents.AI.Workflows.Specialized; /// /// Provides an executor that aggregates received chat messages that it then releases when /// receiving a . /// internal sealed class AggregateTurnMessagesExecutor(string id) : ChatProtocolExecutor(id, declareCrossRunShareable: true), IResettableExecutor { /// protected override ValueTask TakeTurnAsync(List messages, IWorkflowContext context, bool? emitEvents, CancellationToken cancellationToken = default) => context.SendMessageAsync(messages, cancellationToken: cancellationToken); ValueTask IResettableExecutor.ResetAsync() => this.ResetAsync(); }