-
Notifications
You must be signed in to change notification settings - Fork 485
Add ElicitAsync<T> (#630) #715
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
base: main
Are you sure you want to change the base?
Conversation
- Refactored `ElicitResult` to a generic class `ElicitResult<T>` for typed content. - Added `ElicitAsync<T>` method in `McpServerExtensions.cs` to request user input and construct schemas based on type `T`. - Implemented schema building logic to handle primitive types and enums, ignoring unsupported types. - Introduced `ElicitationTypedTests.cs` for testing the new elicitation functionality with typed forms. - Verified naming policies in tests to ensure correct serialization casing. - Defined `SampleForm` and `CamelForm` classes for expected input shapes, including unsupported properties for schema testing. - Created JSON serialization contexts for both forms using source generation for improved performance.
@stephentoub Could you review this, please? |
return new ElicitResult<T?> { Action = raw.Action, Content = typed }; | ||
} | ||
|
||
private static ElicitRequestParams.RequestSchema BuildRequestSchemaFor<T>(JsonSerializerOptions serializerOptions) |
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.
I'm guessing we'll want to leverage AIFunction.ReturnJsonSchema, but @eiriktsarpalis would be the best person to ask about this.
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.
Because there's no AIFunction here, we'd probably want to call AIJsonUtilities.CreateJsonSchema
directly.
…ion. modelcontextprotocol#630 Renamed `BuildRequestSchemaFor<T>` to `BuildRequestSchema<T>`. Updated the implementation to use `CreatePrimitiveSchema` and enhanced type checks for supported primitives with `AIJsonUtilities.CreateJsonSchema`. Streamlined handling of unsupported types by consolidating return statements.
@eiriktsarpalis I've made the changes based on your suggestions, utilizing |
ElicitResult<T>
for typed content.ElicitAsync<T>
method inMcpServerExtensions.cs
to request user input and construct schemas based on typeT
.ElicitationTypedTests.cs
for testing the new elicitation functionality with typed forms.SampleForm
andCamelForm
classes for expected input shapes, including unsupported properties for schema testing.Motivation and Context
It resolves #630
How Has This Been Tested?
I've added proper unit tests for it.
Breaking Changes
No breaking changes
Types of changes
Checklist
Additional context
No additional notes.