<#@ template language="C#" inherits="ActionTemplate" visibility="internal" linePragmas="false" #> <#@ output extension=".cs" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Collections.Generic" #> <#@ import namespace="Microsoft.Agents.AI.Workflows.Declarative.Extensions" #> <#@ import namespace="Microsoft.Agents.ObjectModel" #> <#@ import namespace="Microsoft.Extensions.AI" #> <#@ include file="Snippets/AssignVariableTemplate.tt" once="true" #> <#@ include file="Snippets/EvaluateBoolExpressionTemplate.tt" once="true" #> <#@ include file="Snippets/EvaluateListExpressionTemplate.tt" once="true" #> <#@ include file="Snippets/EvaluateStringExpressionTemplate.tt" once="true" #> /// /// Invokes an agent to process messages and return a response within a conversation context. /// internal sealed class <#= this.Name #>Executor(FormulaSession session, ResponseAgentProvider agentProvider) : AgentExecutor(id: "<#= this.Id #>", session, agentProvider) { // protected override async ValueTask ExecuteAsync(IWorkflowContext context, CancellationToken cancellationToken) {<# EvaluateStringExpression(this.Model.Agent.Name, "agentName", isNullable: true);#> if (string.IsNullOrWhiteSpace(agentName)) { throw new DeclarativeActionException($"Agent name must be defined: {this.Id}"); } <# EvaluateStringExpression(this.Model.ConversationId, "conversationId", isNullable: true); EvaluateBoolExpression(this.Model.Output?.AutoSend, "autoSend", defaultValue: true); EvaluateListExpression(this.Model.Input?.Messages, "inputMessages");#> AgentResponse agentResponse = await InvokeAgentAsync( context, agentName, conversationId, autoSend, inputMessages, cancellationToken).ConfigureAwait(false); if (autoSend) { await context.AddEventAsync(new AgentResponseEvent(this.Id, agentResponse)).ConfigureAwait(false); } <# AssignVariable(this.Messages, "agentResponse.Messages"); #> return default; } }