add from agent filter

This commit is contained in:
Jicheng Lu 2025-07-22 10:26:00 -05:00
parent e7ff969c0b
commit b1eb7543d4

View file

@ -4,6 +4,7 @@ using BotSharp.Abstraction.Templating;
using BotSharp.Abstraction.Translation.Models;
using Fluid;
using Fluid.Ast;
using Fluid.Values;
using System.Collections;
using System.IO;
using System.Reflection;
@ -37,6 +38,8 @@ public class TemplateRender : ITemplateRender
_options.MemberAccessStrategy.Register<UserIdentity>();
_options.MemberAccessStrategy.Register<TranslationInput>();
_options.Filters.AddFilter("from_agent", FromAgentFilter);
_parser.RegisterExpressionTag("link", (Expression expression, TextWriter writer, TextEncoder encoder, TemplateContext context) =>
{
return RenderTag("link", expression, writer, encoder, context, services);
@ -99,7 +102,7 @@ public class TemplateRender : ITemplateRender
value = await context.Model.GetValueAsync(TemplateRenderConstant.RENDER_AGENT, context);
var agent = value?.ToObjectValue() as Agent;
var splited = Regex.Split(expStr, @"\s*from\s*", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)
var splited = Regex.Split(expStr, @"\s*from_agent\s*", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)
.Where(x => !string.IsNullOrWhiteSpace(x))
.Select(x => x.Trim())
.ToArray();
@ -142,6 +145,16 @@ public class TemplateRender : ITemplateRender
return Completion.Normal;
}
private static ValueTask<FluidValue> FromAgentFilter(
FluidValue input,
FilterArguments arguments,
TemplateContext context)
{
var inputStr = input?.ToStringValue() ?? string.Empty;
var fromAgent = arguments.At(0).ToStringValue();
return new StringValue($"{inputStr} from_agent {fromAgent}");
}
private static bool IsStringType(Type type)
{
return type == typeof(string);