Repository navigation
fix(model): accept URL elicitation requests without elicitationId - #1383
Iamsohungrynow wants to merge 1 commit into
Conversation
|
@DaleSeo (assignment failed) is on triage rotation this week and is the reviewer for this one. Labels come from the PR labeler. Please review the change. Automated triage. Labels are a first pass and the assigned maintainer has the final say. |
| /// The unique identifier for this elicitation request. | ||
| /// Protocol `2026-07-28` removed this field: it is empty when absent, | ||
| /// and an empty id is not serialized. | ||
| #[serde(skip_serializing_if = "String::is_empty")] |
There was a problem hiding this comment.
With this skip, a server that builds URL parameters with an empty ID and sends them to a client released before 2026-07-28, now leaves out elicitationId, which the client still requires.
There was a problem hiding this comment.
Dropped the skip so an empty id still goes out as "", the test checks that now
|
|
||
| #[test] | ||
| fn test_url_elicitation_without_elicitation_id() { | ||
| // 2026-07-28 removed `elicitationId` from URL mode requests. |
There was a problem hiding this comment.
nit: This comment repeats the field's doc comment, and the test name already makes it clear what's being tested.
| // 2026-07-28 removed `elicitationId` from URL mode requests. |
There was a problem hiding this comment.
removed, and dropped the mrtr.rs test too since it went through the same parse path
2026-07-28 removed elicitationId from URL mode elicitation requests, so the spec's own URL example failed to parse and an input_required result carrying it fell through to CustomResult. A missing id now reads as empty and is still serialized, so clients from before 2026-07-28 keep getting it; the field stays a String so the public API is unchanged.
d2c635b to
6660989
Compare
2026-07-28 dropped
elicitationIdfrom url mode elicitation, so aninput_requiredresult with the spec's url example fell through toCustomResultandcall_toolfailed. a missing id now reads as empty and still goes out as""for older clients, kept it aStringso the public api doesn't change