diff --git a/dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentSession.cs b/dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentSession.cs index 400bfbcaf6..102aee83e6 100644 --- a/dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentSession.cs +++ b/dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgentSession.cs @@ -21,8 +21,13 @@ internal ChatClientAgentSession() { } + /// + /// Initializes a new instance of the class with optional conversation and state data. + /// + /// The underlying service chat history identifier, if available. + /// The state bag to initialize the session with. [JsonConstructor] - internal ChatClientAgentSession(string? conversationId, AgentSessionStateBag? stateBag) : base(stateBag ?? new()) + internal ChatClientAgentSession(string? conversationId = null, AgentSessionStateBag? stateBag = null) : base(stateBag ?? new()) { this.ConversationId = conversationId; } diff --git a/dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgentSessionTests.cs b/dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgentSessionTests.cs index 1f5e5aa9cd..20bf40c393 100644 --- a/dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgentSessionTests.cs +++ b/dotnet/tests/Microsoft.Agents.AI.UnitTests/ChatClient/ChatClientAgentSessionTests.cs @@ -3,6 +3,7 @@ using System; using System.Linq; using System.Text.Json; +using System.Text.Json.Serialization; using Microsoft.Extensions.AI; #pragma warning disable CA1861 // Avoid constant arrays as arguments @@ -117,6 +118,27 @@ public void DeserializeWithInvalidJsonThrows() Assert.Throws(() => ChatClientAgentSession.Deserialize(invalidJson)); } + [Fact] + public void VerifyDeserializeWithWhenWritingNullOptions() + { + // Arrange + var session = new ChatClientAgentSession(); + JsonSerializerOptions options = new() + { + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + RespectRequiredConstructorParameters = true, + }; + options.TypeInfoResolverChain.Add(AgentJsonUtilities.DefaultOptions.TypeInfoResolver!); + + // Act + var serializedSession = JsonSerializer.SerializeToElement(session, options.GetTypeInfo(typeof(ChatClientAgentSession))); + var deserializedSession = ChatClientAgentSession.Deserialize(serializedSession, options); + + // Assert + Assert.False(serializedSession.TryGetProperty("conversationId", out _)); + Assert.Null(deserializedSession.ConversationId); + } + #endregion Deserialize Tests #region Serialize Tests