Protocol types for 2026-07-28: superset monolith, committed per-version packages, and wire-method maps (#2849)

This commit is contained in:
Max 2026-06-16 17:40:14 +01:00 • committed by GitHub
commit 65be5a7147
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19076 additions and 371 deletions

View file

@ -1338,7 +1338,10 @@ REQUIREMENTS: dict[str, Requirement] = {
note=(
"ServerSession.elicit_form forwards an arbitrary dict[str, Any] schema unchanged; no shape "
"validation at the low-level session layer (the high-level Context.elicit / "
"elicit_with_validation helper enforces primitive-only fields before generating the schema)."
"elicit_with_validation helper enforces primitive-only fields before generating the schema). "
"ClientSession likewise does not enforce it: the inbound surface gate is relaxed for "
"requestedSchema.properties so older servers that emit anyOf for Optional fields still reach "
"the elicitation callback."
),
),
),

View file

@ -415,6 +415,7 @@ async def test_elicit_form_schema_with_every_primitive_and_enum_type_reaches_the
"subscribe": {"type": "boolean", "default": False},
"tier": {"type": "string", "enum": ["free", "pro", "team"]},
"region": {
"type": "string",
"oneOf": [
{"const": "eu", "title": "Europe"},
{"const": "na", "title": "North America"},
@ -459,7 +460,8 @@ async def test_elicit_form_with_a_nested_schema_is_forwarded_unchanged(connect:
The spec restricts form-mode requested schemas to flat objects with primitive-typed properties;
this test pins that the SDK does not enforce that restriction on either side (see the
divergence on the requirement).
divergence on the requirement). The inbound surface gate is deliberately relaxed here so older
servers that emit `anyOf` for `Optional` form fields still reach the elicitation callback.
"""
schema: ElicitRequestedSchema = {
"type": "object",

View file

@ -81,7 +81,9 @@ async def test_list_resources_returns_registered_resources(connect: Connect) ->
description="The project's front page.",
mime_type="text/markdown",
size=1024,
annotations=Annotations(audience=["user", "assistant"], priority=0.8),
annotations=Annotations(
audience=["user", "assistant"], priority=0.8, last_modified="2025-01-01T00:00:00Z"
),
icons=[Icon(src="https://example.com/readme.png", mime_type="image/png", sizes=["48x48"])],
),
]