Skip to content

Commit 45dcfe0

Browse files
authored
Fix CreateMessageRule.Role to be of type Role (#264)
1 parent 77871c5 commit 45dcfe0

File tree

11 files changed

+13
-13
lines changed

11 files changed

+13
-13
lines changed

src/ModelContextProtocol/Client/McpClientExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -926,7 +926,7 @@ internal static CreateMessageResult ToCreateMessageResult(this ChatResponse chat
926926
{
927927
Content = content,
928928
Model = chatResponse.ModelId ?? "unknown",
929-
Role = lastMessage?.Role == ChatRole.User ? "user" : "assistant",
929+
Role = lastMessage?.Role == ChatRole.User ? Role.User : Role.Assistant,
930930
StopReason = chatResponse.FinishReason == ChatFinishReason.Length ? "maxTokens" : "endTurn",
931931
};
932932
}

src/ModelContextProtocol/Protocol/Types/CreateMessageResult.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,5 @@ public class CreateMessageResult
5050
/// Gets or sets the role of the user who generated the message.
5151
/// </summary>
5252
[JsonPropertyName("role")]
53-
public required string Role { get; init; }
53+
public required Role Role { get; init; }
5454
}

src/ModelContextProtocol/Server/McpServerExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public static async Task<ChatResponse> RequestSamplingAsync(
142142
ModelPreferences = modelPreferences,
143143
}, cancellationToken).ConfigureAwait(false);
144144

145-
return new(new ChatMessage(new(result.Role), [result.Content.ToAIContent()]))
145+
return new(new ChatMessage(result.Role is Role.User ? ChatRole.User : ChatRole.Assistant, [result.Content.ToAIContent()]))
146146
{
147147
ModelId = result.Model,
148148
FinishReason = result.StopReason switch

tests/ModelContextProtocol.AspNetCore.Tests/SseServerIntegrationTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ public async Task Sampling_Sse_TestServer()
219219
return new CreateMessageResult
220220
{
221221
Model = "test-model",
222-
Role = "assistant",
222+
Role = Role.Assistant,
223223
Content = new Content
224224
{
225225
Type = "text",

tests/ModelContextProtocol.AspNetCore.Tests/Utils/TestServerTransport.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private async Task Sampling(JsonRpcRequest request, CancellationToken cancellati
7272
await WriteMessageAsync(new JsonRpcResponse
7373
{
7474
Id = request.Id,
75-
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = "role" }),
75+
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = Role.Assistant }),
7676
}, cancellationToken);
7777
}
7878

tests/ModelContextProtocol.Tests/Client/McpClientExtensionsTests.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public async Task CreateSamplingHandler_ShouldHandleTextMessages(float? temperat
8484
Assert.NotNull(result);
8585
Assert.Equal("Hello, World!", result.Content.Text);
8686
Assert.Equal("test-model", result.Model);
87-
Assert.Equal("assistant", result.Role);
87+
Assert.Equal(Role.Assistant, result.Role);
8888
Assert.Equal("endTurn", result.StopReason);
8989
}
9090

@@ -139,7 +139,7 @@ public async Task CreateSamplingHandler_ShouldHandleImageMessages()
139139
Assert.NotNull(result);
140140
Assert.Equal(expectedData, result.Content.Data);
141141
Assert.Equal("test-model", result.Model);
142-
Assert.Equal("assistant", result.Role);
142+
Assert.Equal(Role.Assistant, result.Role);
143143
Assert.Equal("endTurn", result.StopReason);
144144
}
145145

@@ -201,7 +201,7 @@ public async Task CreateSamplingHandler_ShouldHandleResourceMessages()
201201
// Assert
202202
Assert.NotNull(result);
203203
Assert.Equal("test-model", result.Model);
204-
Assert.Equal(ChatRole.Assistant.ToString(), result.Role);
204+
Assert.Equal(Role.Assistant, result.Role);
205205
Assert.Equal("endTurn", result.StopReason);
206206
}
207207

tests/ModelContextProtocol.Tests/Client/McpClientFactoryTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public async Task CreateAsync_WithCapabilitiesOptions(Type transportType)
4444
new CreateMessageResult {
4545
Content = new Content { Text = "result" },
4646
Model = "test-model",
47-
Role = "test-role",
47+
Role = Role.User,
4848
StopReason = "endTurn"
4949
}),
5050
},

tests/ModelContextProtocol.Tests/ClientIntegrationTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ public async Task Sampling_Stdio(string clientId)
374374
return Task.FromResult(new CreateMessageResult
375375
{
376376
Model = "test-model",
377-
Role = "assistant",
377+
Role = Role.Assistant,
378378
Content = new Content
379379
{
380380
Type = "text",

tests/ModelContextProtocol.Tests/DockerEverythingServerTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public async Task Sampling_Sse_EverythingServer()
8383
return Task.FromResult(new CreateMessageResult
8484
{
8585
Model = "test-model",
86-
Role = "assistant",
86+
Role = Role.Assistant,
8787
Content = new Content
8888
{
8989
Type = "text",

tests/ModelContextProtocol.Tests/Server/McpServerTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ public Task<JsonRpcResponse> SendRequestAsync(JsonRpcRequest request, Cancellati
601601
{
602602
Content = new() { Text = "The Eiffel Tower.", Type = "text" },
603603
Model = "amazingmodel",
604-
Role = "assistant",
604+
Role = Role.Assistant,
605605
StopReason = "endTurn",
606606
};
607607

tests/ModelContextProtocol.Tests/Utils/TestServerTransport.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private async Task Sampling(JsonRpcRequest request, CancellationToken cancellati
7272
await WriteMessageAsync(new JsonRpcResponse
7373
{
7474
Id = request.Id,
75-
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = "role" }),
75+
Result = JsonSerializer.SerializeToNode(new CreateMessageResult { Content = new(), Model = "model", Role = Role.User }),
7676
}, cancellationToken);
7777
}
7878

0 commit comments

Comments
 (0)