Skip to content
Tracon

SubAgentSettings

Namespace Tracon · Assembly Tracon.Abstractions.dll

Determines how long an agent waits for the agents it calls.

public sealed record SubAgentSettings : IEquatable<SubAgentSettings>

objectSubAgentSettings

IEquatable<SubAgentSettings>

object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

A router that hands work to a sub-agent that must answer within 10 seconds, with a 20-second hard cutoff if it hangs:

new AgentDefinition
{
Name = "router",
Model = new ModelBinding { Provider = "openai", Model = "gpt-5" },
CallableAgentNames = ["researcher"],
SubAgents = new SubAgentSettings
{
ChildDeadline = TimeSpan.FromSeconds(10),
WaitTimeout = TimeSpan.FromSeconds(20),
},
};

The limit is enforced in two independent layers, the same pattern OnlineEvaluationOptions.JudgeTimeout uses for a judge call: SubAgentSettings.ChildDeadline is a cooperative cutoff — the sub-agent’s own cancellation token is canceled, and a sub-agent that reads it genuinely stops and releases its resources. SubAgentSettings.WaitTimeout is a hard cutoff for the one case the cooperative layer cannot catch: a sub-agent that ignores cancellation. Past SubAgentSettings.WaitTimeout the caller stops waiting; the sub-agent keeps running in the background and its eventual result — success or failure — is discarded without writing a further event, a metric, or producing an unobserved exception.

When left null, both fields fall back to TraconAgentGraphOptions.ChildDeadline and TraconAgentGraphOptions.WaitTimeout. An invalid combination (zero, negative, or SubAgentSettings.WaitTimeout not greater than SubAgentSettings.ChildDeadline) is rejected while the agent is built, with TraconCompilationException; it is not ignored silently.

public SubAgentSettings()

Gets the deadline applied to a single sub-agent run (the cooperative layer).

public TimeSpan? ChildDeadline { get; init; }

TimeSpan?

Gets the hard wait cutoff handed to the framework (the hard-cutoff layer). Must be greater than ChildDeadline.

public TimeSpan? WaitTimeout { get; init; }

TimeSpan?

public override bool Equals(object? obj)

obj object?

bool

public bool Equals(SubAgentSettings? other)

other SubAgentSettings?

bool

public override int GetHashCode()

int

public override string ToString()

string

operator ==(SubAgentSettings?, SubAgentSettings?)

Section titled “ operator ==(SubAgentSettings?, SubAgentSettings?)”
public static bool operator ==(SubAgentSettings? left, SubAgentSettings? right)

left SubAgentSettings?

right SubAgentSettings?

bool

operator !=(SubAgentSettings?, SubAgentSettings?)

Section titled “ operator !=(SubAgentSettings?, SubAgentSettings?)”
public static bool operator !=(SubAgentSettings? left, SubAgentSettings? right)

left SubAgentSettings?

right SubAgentSettings?

bool