.NET: Change type of props representing continuation token (#2430)

* change type of props representing continuation token

* use explict cast instead of the as operator
This commit is contained in:
SergeyMenshykh
2025-11-25 09:59:43 +00:00
committed by GitHub
Unverified
parent 27b3a517eb
commit a89c15d6e6
10 changed files with 14 additions and 14 deletions
@@ -44,7 +44,7 @@ while (response.ContinuationToken is not null)
await Task.Delay(TimeSpan.FromSeconds(10));
RestoreAgentState(agent, out thread, out object? continuationToken);
RestoreAgentState(agent, out thread, out ResponseContinuationToken? continuationToken);
options.ContinuationToken = continuationToken;
response = await agent.RunAsync(thread, options);
@@ -52,19 +52,19 @@ while (response.ContinuationToken is not null)
Console.WriteLine(response.Text);
void PersistAgentState(AgentThread thread, object? continuationToken)
void PersistAgentState(AgentThread thread, ResponseContinuationToken? continuationToken)
{
stateStore["thread"] = thread.Serialize();
stateStore["continuationToken"] = JsonSerializer.SerializeToElement(continuationToken, AgentAbstractionsJsonUtilities.DefaultOptions.GetTypeInfo(typeof(ResponseContinuationToken)));
}
void RestoreAgentState(AIAgent agent, out AgentThread thread, out object? continuationToken)
void RestoreAgentState(AIAgent agent, out AgentThread thread, out ResponseContinuationToken? continuationToken)
{
JsonElement serializedThread = stateStore["thread"] ?? throw new InvalidOperationException("No serialized thread found in state store.");
JsonElement? serializedToken = stateStore["continuationToken"];
thread = agent.DeserializeThread(serializedThread);
continuationToken = serializedToken?.Deserialize(AgentAbstractionsJsonUtilities.DefaultOptions.GetTypeInfo(typeof(ResponseContinuationToken)));
continuationToken = (ResponseContinuationToken?)serializedToken?.Deserialize(AgentAbstractionsJsonUtilities.DefaultOptions.GetTypeInfo(typeof(ResponseContinuationToken)));
}
[Description("Researches relevant space facts and scientific information for writing a science fiction novel")]
@@ -49,7 +49,7 @@ public class AgentRunOptions
/// can be polled for completion by obtaining the token from the <see cref="AgentRunResponse.ContinuationToken"/> property
/// and passing it via this property on subsequent calls to <see cref="AIAgent.RunAsync(AgentThread?, AgentRunOptions?, System.Threading.CancellationToken)"/>.
/// </remarks>
public object? ContinuationToken { get; set; }
public ResponseContinuationToken? ContinuationToken { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the background responses are allowed.
@@ -175,7 +175,7 @@ public class AgentRunResponse
/// to poll for completion.
/// </para>
/// </remarks>
public object? ContinuationToken { get; set; }
public ResponseContinuationToken? ContinuationToken { get; set; }
/// <summary>
/// Gets or sets the timestamp indicating when this response was created.
@@ -42,7 +42,7 @@ public static class AgentRunResponseExtensions
RawRepresentation = response,
ResponseId = response.ResponseId,
Usage = response.Usage,
ContinuationToken = response.ContinuationToken as ResponseContinuationToken,
ContinuationToken = response.ContinuationToken,
};
}
@@ -75,7 +75,7 @@ public static class AgentRunResponseExtensions
RawRepresentation = responseUpdate,
ResponseId = responseUpdate.ResponseId,
Role = responseUpdate.Role,
ContinuationToken = responseUpdate.ContinuationToken as ResponseContinuationToken,
ContinuationToken = responseUpdate.ContinuationToken,
};
}
@@ -159,7 +159,7 @@ public class AgentRunResponseUpdate
/// to resume streaming from the point of interruption.
/// </para>
/// </remarks>
public object? ContinuationToken { get; set; }
public ResponseContinuationToken? ContinuationToken { get; set; }
/// <inheritdoc/>
public override string ToString() => this.Text;
@@ -551,7 +551,7 @@ public sealed partial class ChatClientAgent : AIAgent
{
chatOptions ??= new ChatOptions();
chatOptions.AllowBackgroundResponses = agentRunOptions.AllowBackgroundResponses;
chatOptions.ContinuationToken = agentRunOptions.ContinuationToken as ResponseContinuationToken;
chatOptions.ContinuationToken = agentRunOptions.ContinuationToken;
}
return chatOptions;
@@ -17,7 +17,7 @@ public class AgentRunOptionsTests
// Arrange
var options = new AgentRunOptions
{
ContinuationToken = new object(),
ContinuationToken = ResponseContinuationToken.FromBytes(new byte[] { 1, 2, 3 }),
AllowBackgroundResponses = true,
AdditionalProperties = new AdditionalPropertiesDictionary
{
@@ -25,7 +25,7 @@ internal static class Step10EntryPoint
foreach (string input in inputs)
{
AgentRunResponse response;
object? continuationToken = null;
ResponseContinuationToken? continuationToken = null;
do
{
response = await hostAgent.RunAsync(input, thread, new AgentRunOptions { ContinuationToken = continuationToken });
@@ -37,7 +37,7 @@ internal static class Step11EntryPoint
foreach (string input in inputs)
{
AgentRunResponse response;
object? continuationToken = null;
ResponseContinuationToken? continuationToken = null;
do
{
response = await hostAgent.RunAsync(input, thread, new AgentRunOptions { ContinuationToken = continuationToken });
@@ -73,7 +73,7 @@ internal static class Step12EntryPoint
foreach (string input in inputs)
{
AgentRunResponse response;
object? continuationToken = null;
ResponseContinuationToken? continuationToken = null;
do
{
response = await hostAgent.RunAsync(input, thread, new AgentRunOptions { ContinuationToken = continuationToken });