Fix CreateMessageRule.Role to be of type Role (#264)

This commit is contained in:
Stephen Toub 2025-04-10 10:51:41 -04:00 • committed by GitHub
commit 45dcfe07ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 13 additions and 13 deletions

View file

@ -926,7 +926,7 @@ public static class McpClientExtensions
{
Content = content,
Model = chatResponse.ModelId ?? "unknown",
Role = lastMessage?.Role == ChatRole.User ? "user" : "assistant",
Role = lastMessage?.Role == ChatRole.User ? Role.User : Role.Assistant,
StopReason = chatResponse.FinishReason == ChatFinishReason.Length ? "maxTokens" : "endTurn",
};
}

View file

@ -50,5 +50,5 @@ public class CreateMessageResult
/// Gets or sets the role of the user who generated the message.
/// </summary>
[JsonPropertyName("role")]
public required string Role { get; init; }
public required Role Role { get; init; }
}

View file

@ -142,7 +142,7 @@ public static class McpServerExtensions
ModelPreferences = modelPreferences,
}, cancellationToken).ConfigureAwait(false);
return new(new ChatMessage(new(result.Role), [result.Content.ToAIContent()]))
return new(new ChatMessage(result.Role is Role.User ? ChatRole.User : ChatRole.Assistant, [result.Content.ToAIContent()]))
{
ModelId = result.Model,
FinishReason = result.StopReason switch

View file

@ -219,7 +219,7 @@ public class SseServerIntegrationTests : LoggedTest, IClassFixture<SseServerInte
return new CreateMessageResult
{
Model = "test-model",
Role = "assistant",
Role = Role.Assistant,
Content = new Content
{
Type = "text",

View file

@ -72,7 +72,7 @@ public class TestServerTransport : ITransport
await WriteMessageAsync(new JsonRpcResponse
{
Id = request.Id,
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = "role" }),
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = Role.Assistant }),
}, cancellationToken);
}

View file

@ -84,7 +84,7 @@ public class McpClientExtensionsTests : ClientServerTestBase
Assert.NotNull(result);
Assert.Equal("Hello, World!", result.Content.Text);
Assert.Equal("test-model", result.Model);
Assert.Equal("assistant", result.Role);
Assert.Equal(Role.Assistant, result.Role);
Assert.Equal("endTurn", result.StopReason);
}
@ -139,7 +139,7 @@ public class McpClientExtensionsTests : ClientServerTestBase
Assert.NotNull(result);
Assert.Equal(expectedData, result.Content.Data);
Assert.Equal("test-model", result.Model);
Assert.Equal("assistant", result.Role);
Assert.Equal(Role.Assistant, result.Role);
Assert.Equal("endTurn", result.StopReason);
}
@ -201,7 +201,7 @@ public class McpClientExtensionsTests : ClientServerTestBase
// Assert
Assert.NotNull(result);
Assert.Equal("test-model", result.Model);
Assert.Equal(ChatRole.Assistant.ToString(), result.Role);
Assert.Equal(Role.Assistant, result.Role);
Assert.Equal("endTurn", result.StopReason);
}

View file

@ -44,7 +44,7 @@ public class McpClientFactoryTests
new CreateMessageResult {
Content = new Content { Text = "result" },
Model = "test-model",
Role = "test-role",
Role = Role.User,
StopReason = "endTurn"
}),
},

View file

@ -374,7 +374,7 @@ public class ClientIntegrationTests : LoggedTest, IClassFixture<ClientIntegratio
return Task.FromResult(new CreateMessageResult
{
Model = "test-model",
Role = "assistant",
Role = Role.Assistant,
Content = new Content
{
Type = "text",

View file

@ -83,7 +83,7 @@ public class DockerEverythingServerTests(ITestOutputHelper testOutputHelper) : L
return Task.FromResult(new CreateMessageResult
{
Model = "test-model",
Role = "assistant",
Role = Role.Assistant,
Content = new Content
{
Type = "text",

View file

@ -601,7 +601,7 @@ public class McpServerTests : LoggedTest
{
Content = new() { Text = "The Eiffel Tower.", Type = "text" },
Model = "amazingmodel",
Role = "assistant",
Role = Role.Assistant,
StopReason = "endTurn",
};

View file

@ -72,7 +72,7 @@ public class TestServerTransport : ITransport
await WriteMessageAsync(new JsonRpcResponse
{
Id = request.Id,
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = "role" }),
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = Role.User }),
}, cancellationToken);
}