-
Notifications
You must be signed in to change notification settings - Fork 1k
fix: allow empty elicitation form data when all fields are optional #926
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
bolinfest
wants to merge
2
commits into
modelcontextprotocol:main
Choose a base branch
from
bolinfest:sapling-pr-archive-bolinfest
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
fix: allow empty elicitation form data when all fields are optional #926
bolinfest
wants to merge
2
commits into
modelcontextprotocol:main
from
bolinfest:sapling-pr-archive-bolinfest
+41
−4
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Author
|
I don't understand what happened: why did an action in an unrelated repo close this PR? |
olaservo
reviewed
Nov 23, 2025
| expect(generateDefaultValue({ type: "object" })).toBe(undefined); | ||
| test("generates empty object for optional root object", () => { | ||
| expect(generateDefaultValue({ type: "object" })).toEqual({}); | ||
| }); |
Member
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be good to add tests for these cases as well?
test("generates undefined for nested optional object", () => {
// When called WITH propertyName and parentSchema, and the property is NOT required,
// nested optional objects should return undefined
const parentSchema = {
type: "object" as const,
required: ["otherField"],
properties: {
optionalObject: { type: "object" as const },
otherField: { type: "string" as const },
},
};
expect(
generateDefaultValue({ type: "object" }, "optionalObject", parentSchema),
).toBe(undefined);
});
test("generates empty object for root-level object with all optional properties", () => {
// Root-level schema with properties but no required array
// This is the exact scenario from PR #926 - elicitation with all optional fields
const schema: JsonSchemaType = {
type: "object",
properties: {
optionalField1: { type: "string" },
optionalField2: { type: "number" },
},
// No required array - all fields are optional
};
expect(generateDefaultValue(schema)).toEqual({});
});
e1e8bf9 to
4b20f15
Compare
Author
|
@olaservo added proposed tests |
takumi-earth
pushed a commit
to earthlings-dev/codex
that referenced
this pull request
Dec 2, 2025
Using appropriate message/title fields, I think this looks better now: <img width="3370" height="3208" alt="image" src="https://github.com/user-attachments/assets/e9bbf906-4ba8-4563-affc-62cdc6c97342" /> Though note that in the current version of the Inspector (`0.17.2`), you cannot hit **Submit** until you fill out the field. I believe this is a bug in the Inspector, as it does not properly handle the case when all fields are optional. I put up a fix: modelcontextprotocol/inspector#926
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
When all of the fields of the schema for an elicitation are optional, it should be possible to hit the Submit button (sending
"accept") without filling in any of the fields. Prior to this change, this would fail in the UI with:Previously, in this case,
generateDefaultValue()would produceundefinedas the default value, but as of this change, it produces{}instead. Theundefinedwould fail the check here:inspector/client/src/components/ElicitationRequest.tsx
Lines 82 to 90 in dff91a8
Now it passes.
Type of Change
Changes Made
Related Issues
Testing
Test Results and/or Instructions
Screenshots are encouraged to share your testing results for this change.
Checklist
npm run prettier-fix)Breaking Changes
Additional Context