.NET: Durable Agent samples and automated validation for non-Azure Functions (#3042)

* Durable Agent samples and automated validation for non-Azure Functions

* Update test projects

* fix file encoding

* Remove AgentThreadMetadata usage

* Absorb breaking change from #3152

* Absorb newer breaking changes (AgentRunResponse --> AgentResponse)

* Absorb more breaking changes (see #3222)

* Improve integration test reliability (isolated task hubs, etc.)

* Fix flakey streaming test

---------

Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
This commit is contained in:
Chris Gillum
2026-01-20 14:45:10 -08:00
committed by GitHub
Unverified
parent 83e6229c11
commit db8a59bd3d
34 changed files with 4043 additions and 12 deletions
@@ -26,13 +26,6 @@ public readonly struct AgentSessionId : IEquatable<AgentSessionId>
this._entityId = new EntityInstanceId(ToEntityName(name), key);
}
/// <summary>
/// Converts an agent name to its underlying entity name representation.
/// </summary>
/// <param name="name">The agent name.</param>
/// <returns>The entity name used by Durable Task for this agent.</returns>
public static string ToEntityName(string name) => $"{EntityNamePrefix}{name}";
/// <summary>
/// Gets the name of the agent that owns the session. Names are case-insensitive.
/// </summary>
@@ -43,6 +36,17 @@ public readonly struct AgentSessionId : IEquatable<AgentSessionId>
/// </summary>
public string Key => this._entityId.Key;
/// <summary>
/// Converts an agent name to its underlying entity name representation.
/// </summary>
/// <param name="name">The agent name.</param>
/// <returns>The entity name used by Durable Task for this agent.</returns>
internal static string ToEntityName(string name) => $"{EntityNamePrefix}{name}";
/// <summary>
/// Converts the <see cref="AgentSessionId"/> to an <see cref="EntityInstanceId"/>.
/// </summary>
/// <returns>The <see cref="EntityInstanceId"/> representation of the <see cref="AgentSessionId"/>.</returns>
internal EntityInstanceId ToEntityId() => this._entityId;
/// <summary>