Skip to content

Commit cc194cd

Browse files
Copilotstephentoub
andcommitted
Delete EnumSchema type and update references to use LegacyTitledEnumSchema
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
1 parent 750d0d1 commit cc194cd

3 files changed

Lines changed: 10 additions & 77 deletions

File tree

src/ModelContextProtocol.Core/Protocol/ElicitRequestParams.cs

Lines changed: 2 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -315,11 +315,9 @@ public sealed class Converter : JsonConverter<PrimitiveSchemaDefinition>
315315
{
316316
if (enumNames is not null)
317317
{
318-
// EnumSchema is deprecated but supported for backward compatibility.
319-
// Use the EnumSchema class, which is an alias for LegacyTitledEnumSchema,
320-
// to ensure backward compatibility with existing code relying on that type.
318+
// LegacyTitledEnumSchema is deprecated but supported for backward compatibility.
321319
#pragma warning disable MCP9001
322-
psd = new EnumSchema
320+
psd = new LegacyTitledEnumSchema
323321
#pragma warning restore MCP9001
324322
{
325323
Enum = enumValues,
@@ -647,25 +645,6 @@ public override void Write(Utf8JsonWriter writer, PrimitiveSchemaDefinition valu
647645
}
648646
break;
649647

650-
#pragma warning disable MCP9001 // EnumSchema is deprecated but supported for backward compatibility
651-
case EnumSchema enumSchema:
652-
#pragma warning restore MCP9001
653-
if (enumSchema.Enum is not null)
654-
{
655-
writer.WritePropertyName("enum");
656-
JsonSerializer.Serialize(writer, enumSchema.Enum, McpJsonUtilities.JsonContext.Default.IListString);
657-
}
658-
if (enumSchema.EnumNames is not null)
659-
{
660-
writer.WritePropertyName("enumNames");
661-
JsonSerializer.Serialize(writer, enumSchema.EnumNames, McpJsonUtilities.JsonContext.Default.IListString);
662-
}
663-
if (enumSchema.Default is not null)
664-
{
665-
writer.WriteString("default", enumSchema.Default);
666-
}
667-
break;
668-
669648
default:
670649
throw new JsonException($"Unexpected schema type: {value.GetType().Name}");
671650
}
@@ -1013,52 +992,6 @@ public override string Type
1013992
public IList<string>? Default { get; set; }
1014993
}
1015994

1016-
/// <summary>
1017-
/// Represents a legacy schema for an enum type with enumNames.
1018-
/// This is a compatibility alias for <see cref="LegacyTitledEnumSchema"/>.
1019-
/// </summary>
1020-
/// <remarks>
1021-
/// This schema is deprecated in favor of <see cref="TitledSingleSelectEnumSchema"/>.
1022-
/// </remarks>
1023-
[Obsolete(Obsoletions.LegacyTitledEnumSchema_Message, DiagnosticId = Obsoletions.LegacyTitledEnumSchema_DiagnosticId, UrlFormat = Obsoletions.LegacyTitledEnumSchema_Url)]
1024-
public sealed class EnumSchema : PrimitiveSchemaDefinition
1025-
{
1026-
/// <inheritdoc/>
1027-
[JsonPropertyName("type")]
1028-
public override string Type
1029-
{
1030-
get => "string";
1031-
set
1032-
{
1033-
if (value is not "string")
1034-
{
1035-
throw new ArgumentException("Type must be 'string'.", nameof(value));
1036-
}
1037-
}
1038-
}
1039-
1040-
/// <summary>Gets or sets the list of allowed string values for the enum.</summary>
1041-
[JsonPropertyName("enum")]
1042-
[field: MaybeNull]
1043-
public IList<string> Enum
1044-
{
1045-
get => field ??= [];
1046-
set
1047-
{
1048-
Throw.IfNull(value);
1049-
field = value;
1050-
}
1051-
}
1052-
1053-
/// <summary>Gets or sets optional display names corresponding to the enum values.</summary>
1054-
[JsonPropertyName("enumNames")]
1055-
public IList<string>? EnumNames { get; set; }
1056-
1057-
/// <summary>Gets or sets the default value for the enum.</summary>
1058-
[JsonPropertyName("default")]
1059-
public string? Default { get; set; }
1060-
}
1061-
1062995
/// <summary>
1063996
/// Represents a legacy schema for an enum type with enumNames.
1064997
/// </summary>

tests/ModelContextProtocol.Tests/Protocol/EnumSchemaTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ public void LegacyTitledEnumSchema_Serializes_Correctly()
298298

299299
// Assert
300300
Assert.NotNull(deserialized);
301-
var result = Assert.IsType<ElicitRequestParams.EnumSchema>(deserialized);
301+
var result = Assert.IsType<ElicitRequestParams.LegacyTitledEnumSchema>(deserialized);
302302
Assert.Equal("string", result.Type);
303303
Assert.Equal("Environment", result.Title);
304304
Assert.Equal("Deployment environment", result.Description);
@@ -309,10 +309,10 @@ public void LegacyTitledEnumSchema_Serializes_Correctly()
309309
}
310310

311311
[Fact]
312-
public void EnumSchema_Serializes_Correctly()
312+
public void LegacyTitledEnumSchema_Direct_Serializes_Correctly()
313313
{
314314
// Arrange
315-
var schema = new ElicitRequestParams.EnumSchema
315+
var schema = new ElicitRequestParams.LegacyTitledEnumSchema
316316
{
317317
Title = "Environment",
318318
Description = "Deployment environment",
@@ -327,7 +327,7 @@ public void EnumSchema_Serializes_Correctly()
327327

328328
// Assert
329329
Assert.NotNull(deserialized);
330-
var result = Assert.IsType<ElicitRequestParams.EnumSchema>(deserialized);
330+
var result = Assert.IsType<ElicitRequestParams.LegacyTitledEnumSchema>(deserialized);
331331
Assert.Equal("string", result.Type);
332332
Assert.Equal("Environment", result.Title);
333333
Assert.Equal("Deployment environment", result.Description);
@@ -338,9 +338,9 @@ public void EnumSchema_Serializes_Correctly()
338338
}
339339

340340
[Fact]
341-
public void Enum_WithEnumNames_Deserializes_As_EnumSchema()
341+
public void Enum_WithEnumNames_Deserializes_As_LegacyTitledEnumSchema()
342342
{
343-
// Arrange - JSON with enumNames should deserialize as (deprecated) EnumSchema
343+
// Arrange - JSON with enumNames should deserialize as (deprecated) LegacyTitledEnumSchema
344344
string json = """
345345
{
346346
"type": "string",
@@ -356,7 +356,7 @@ public void Enum_WithEnumNames_Deserializes_As_EnumSchema()
356356

357357
// Assert
358358
Assert.NotNull(deserialized);
359-
var result = Assert.IsType<ElicitRequestParams.EnumSchema>(deserialized);
359+
var result = Assert.IsType<ElicitRequestParams.LegacyTitledEnumSchema>(deserialized);
360360
Assert.Equal("string", result.Type);
361361
Assert.Equal("Environment", result.Title);
362362
Assert.Equal("Deployment environment", result.Description);

tests/ModelContextProtocol.Tests/Protocol/PrimitiveSchemaDefinitionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ public static void LegacyTitledEnumSchema_UnknownProperties_AreIgnored()
283283
json,
284284
McpJsonUtilities.DefaultOptions);
285285
Assert.NotNull(result);
286-
var enumSchema = Assert.IsType<ElicitRequestParams.EnumSchema>(result);
286+
var enumSchema = Assert.IsType<ElicitRequestParams.LegacyTitledEnumSchema>(result);
287287
Assert.Equal("string", enumSchema.Type);
288288
Assert.Equal(2, enumSchema.Enum.Count);
289289
Assert.Contains("option1", enumSchema.Enum);

0 commit comments

Comments
 (0)