.NET API
ITraconBuilder
Tracon.Core.dllThe fluent chain that configures Tracon. Returned from the
AddTracon call.
public interface ITraconBuilder- Extension Methods
- TraconBuilderExtensions.AddAgent(ITraconBuilder, AgentDefinition), TraconBuilderExtensions.AddAgent(ITraconBuilder, string, Func<IServiceProvider, AIAgent>, string?), TraconBuilderExtensions.AddAgentDecorator<TDecorator>(ITraconBuilder), TraconBuilderExtensions.AddAgentDecorator(ITraconBuilder, IAgentDecorator), TraconBuilderExtensions.AddAgentDecorator(ITraconBuilder, Func<IServiceProvider, IAgentDecorator>), TraconBuilderExtensions.AddAgentExtension<TExtension>(ITraconBuilder), TraconBuilderExtensions.AddAgentExtension(ITraconBuilder, IAgentExtension), TraconBuilderExtensions.AddAgentExtension(ITraconBuilder, string, Action<AgentExtensionContext>, string?), TraconBuilderExtensions.AddAgentSource<TSource>(ITraconBuilder), TraconBuilderExtensions.AddAgentSource(ITraconBuilder, IAgentSource), TraconBuilderExtensions.AddAgentSource(ITraconBuilder, Func<IServiceProvider, IAgentSource>), TraconClientToolExtensions.AddClientTool(ITraconBuilder, string, string, JsonElement), TraconContentGuardBuilderExtensions.AddContentGuard<TGuard>(ITraconBuilder), TraconContentGuardBuilderExtensions.AddContentGuard(ITraconBuilder, IContentGuard), TraconContentGuardBuilderExtensions.AddContentGuard(ITraconBuilder, Func<IServiceProvider, IContentGuard>), TraconContentProtectionExtensions.AddContentProtection(ITraconBuilder, Action<TraconContentProtectionOptions>?), TraconContentProtectionExtensions.AddContentProtection<TProtector>(ITraconBuilder), TraconBuilderExtensions.AddEvalCheck(ITraconBuilder, string, EvalCheck), TraconOnlineEvaluationBuilderExtensions.AddEvalEvaluatorFactory<TFactory>(ITraconBuilder), TraconOnlineEvaluationBuilderExtensions.AddEvalEvaluatorFactory(ITraconBuilder, IEvalEvaluatorFactory), TraconOnlineEvaluationBuilderExtensions.AddEvaluatorJudge(ITraconBuilder, string, IEvaluator), TraconOnlineEvaluationBuilderExtensions.AddEvaluatorJudge(ITraconBuilder, string, IEvaluator, Action<ModelRunJudgeOptions>), TraconBuilderExtensions.AddHostedTool(ITraconBuilder, string, HostedToolKind, Func<HostedToolContext, AITool>, string?), TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, LoopEvaluator), TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, LoopEvaluator, string?), TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, Func<IServiceProvider, LoopEvaluator>), TraconBuilderExtensions.AddLoopEvaluator(ITraconBuilder, string, Func<IServiceProvider, LoopEvaluator>, string?), TraconBuilderExtensions.AddModelProvider<TProvider>(ITraconBuilder), TraconBuilderExtensions.AddModelProvider(ITraconBuilder, IModelProvider), TraconBuilderExtensions.AddModelProvider(ITraconBuilder, Func<IServiceProvider, IModelProvider>), TraconOnlineEvaluationBuilderExtensions.AddModelRunJudge(ITraconBuilder, Action<ModelRunJudgeOptions>), TraconContentGuardBuilderExtensions.AddPatternContentGuard(ITraconBuilder, Action<PatternContentGuardOptions>?), TraconBuilderExtensions.AddRunJudge<TJudge>(ITraconBuilder), TraconBuilderExtensions.AddRunJudge(ITraconBuilder, IRunJudge), TraconBuilderExtensions.AddRunJudge(ITraconBuilder, Func<IServiceProvider, IRunJudge>), TraconBuilderExtensions.AddScopedTool(ITraconBuilder, AIFunction, Action<ToolRegistrationOptions>), TraconBuilderExtensions.AddScopedTool(ITraconBuilder, AIFunction), TraconBuilderExtensions.AddSkill(ITraconBuilder, AgentSkillDefinition), TraconBuilderExtensions.AddSpeechSynthesizer(ITraconBuilder, string, Func<IServiceProvider, ISpeechSynthesizer>), TraconBuilderExtensions.AddSpeechSynthesizer(ITraconBuilder, string, TextToSpeechClientBinding), TraconBuilderExtensions.AddSpeechTranscriber(ITraconBuilder, string, Func<IServiceProvider, ISpeechTranscriber>), TraconBuilderExtensions.AddSpeechTranscriber(ITraconBuilder, string, SpeechToTextClientBinding), TraconBuilderExtensions.AddTool(ITraconBuilder, AIFunction, Action<ToolRegistrationOptions>), TraconBuilderExtensions.AddTool(ITraconBuilder, AIFunction), TraconBuilderExtensions.AddTool(ITraconBuilder, Delegate, string?, string?, Action<ToolRegistrationOptions>?), TraconToolApprovalPolicyExtensions.AddToolApprovalPolicy(ITraconBuilder, string, Func<ToolApprovalContext, ToolApprovalPolicyDecision>), TraconBuilderExtensions.AddToolsFrom<T>(ITraconBuilder), TraconBuilderExtensions.AddToolsFrom(ITraconBuilder, Type), TraconBuilderExtensions.Configure(ITraconBuilder, Action<TraconOptions>), TraconBuilderExtensions.RequireCustomBinding<T>(ITraconBuilder), TraconBuilderExtensions.RequireProductionProfile(ITraconBuilder, Action<TraconProductionProfileOptions>?), TraconBuilderConversationMemoryExtensions.UseConversationMemory(ITraconBuilder, Action<TraconConversationMemoryOptions>), LiveVoiceBuilderExtensions.UseLiveVoice(ITraconBuilder, IConfiguration), LiveVoiceBuilderExtensions.UseLiveVoice(ITraconBuilder), LiveVoiceBuilderExtensions.UseLiveVoice(ITraconBuilder, Action<VoiceLiveOptions>), TraconSkillScriptBuilderExtensions.UseSkillScripts(ITraconBuilder, Action<TraconSkillScriptOptions>), VoiceConversationBuilderExtensions.UseVoiceConversation(ITraconBuilder, IConfiguration), VoiceConversationBuilderExtensions.UseVoiceConversation(ITraconBuilder), VoiceConversationBuilderExtensions.UseVoiceConversation(ITraconBuilder, Action<VoiceConversationOptions>)
Remarks
Section titled “Remarks”The chain carries only ITraconBuilder.Services. Every registration
capability is an extension method: Tracon’s own live in
TraconBuilderExtensions, and provider and storage packages
add theirs (UsePostgreSql, UseOpenAI, and so on).
AddTracon returns Tracon’s implementation, and this interface is for
calling, not for implementing in an application. The one other implementation it is
meant for is a test double: a chain of your own only has to supply
ITraconBuilder.Services, and the extension methods run the same way against it.
Properties
Section titled “Properties”Services
Section titled “ Services”The underlying service collection.
IServiceCollection Services { get; }Property Value
Section titled “Property Value”Remarks
Section titled “Remarks”The escape hatch: anything Tracon does not model is registered here.
Every Tracon service is registered with TryAdd, so registration
ORDER decides who wins, and the two seam shapes behave differently.
For a single-instance seam (for example ITenantContext): a
registration made before AddTracon wins outright, and only
one registration remains. A registration made after AddTracon
also wins for a direct resolve, but Tracon’s own registration is not
removed - it stays behind as a second, unused entry.
For a multi-registration seam (for example IAgentDecorator):
a registration made before AddTracon joins the list alongside
the built-in ones. A registration made after AddTracon also
joins the list - the built-in implementation keeps running too, which is a
real behavior difference from the single-instance case above.
// Runs before AddTracon(), so this registration wins outright.builder.Services.AddSingleton(new OrderGateway());builder.AddTracon();