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, Content = content,
Model = chatResponse.ModelId ?? "unknown", 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", 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. /// Gets or sets the role of the user who generated the message.
/// </summary> /// </summary>
[JsonPropertyName("role")] [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, ModelPreferences = modelPreferences,
}, cancellationToken).ConfigureAwait(false); }, 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, ModelId = result.Model,
FinishReason = result.StopReason switch FinishReason = result.StopReason switch

View file

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

View file

@ -72,7 +72,7 @@ public class TestServerTransport : ITransport
await WriteMessageAsync(new JsonRpcResponse await WriteMessageAsync(new JsonRpcResponse
{ {
Id = request.Id, 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); }, cancellationToken);
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -72,7 +72,7 @@ public class TestServerTransport : ITransport
await WriteMessageAsync(new JsonRpcResponse await WriteMessageAsync(new JsonRpcResponse
{ {
Id = request.Id, 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); }, cancellationToken);
} }