feat: Expose self-delivery for InProcessRuntime in AgentsApp (#5240)

* Enable configuring SelfDelivery (defaults to false) when using
AgentsAppBuilder
* Also fixes the predicate for self-delivery

---------

Co-authored-by: Griffin Bassman <griffinbassman@gmail.com>
This commit is contained in:
Jacob Alber
2025-01-28 16:06:10 -05:00
committed by GitHub
parent 43e9c266c1
commit e6926352aa
3 changed files with 6 additions and 5 deletions

View File

@@ -15,11 +15,14 @@ TerminationF runUntilFunc = (int x) =>
};
AgentsAppBuilder appBuilder = new AgentsAppBuilder();
appBuilder.UseInProcessRuntime();
appBuilder.Services.TryAddSingleton(modifyFunc);
appBuilder.Services.TryAddSingleton(runUntilFunc);
appBuilder.AddAgent<Checker>("Checker");
appBuilder.AddAgent<Modifier>("Modifier");
var app = await appBuilder.BuildAsync();
await app.StartAsync();

View File

@@ -18,8 +18,6 @@ public class AgentsAppBuilder
public AgentsAppBuilder(HostApplicationBuilder? baseBuilder = null)
{
this.builder = baseBuilder ?? new HostApplicationBuilder();
this.AddInProcessRuntime();
}
public IServiceCollection Services => this.builder.Services;
@@ -29,9 +27,9 @@ public class AgentsAppBuilder
this.AddAgentsFromAssemblies(AppDomain.CurrentDomain.GetAssemblies());
}
public AgentsAppBuilder AddInProcessRuntime()
public AgentsAppBuilder UseInProcessRuntime(bool deliverToSelf = false)
{
this.Services.AddSingleton<IAgentRuntime, InProcessRuntime>();
this.Services.AddSingleton<IAgentRuntime, InProcessRuntime>(_ => new InProcessRuntime { DeliverToSelf = deliverToSelf });
this.Services.AddHostedService<InProcessRuntime>(services =>
{
return (services.GetRequiredService<IAgentRuntime>() as InProcessRuntime)!;

View File

@@ -55,7 +55,7 @@ public sealed class InProcessRuntime : IAgentRuntime, IHostedService
};
AgentId agentId = subscription.MapToAgent(topic);
if (this.DeliverToSelf || sender.HasValue && sender == agentId)
if (!this.DeliverToSelf && sender.HasValue && sender == agentId)
{
continue;
}