///|
/// Modern MRTR and legacy duplex requests share the same fail-closed form
/// validation. Compile before calling user code so it cannot weaken the schema.
fn invoke_elicitation(
handler : (Json) -> Result[@types.ElicitationResult, @types.MCPError],
params : Json,
) -> Json raise @types.MCPError {
let validator = @validation.ElicitationValidator::compile(params)
let result = match handler(params) {
Ok(result) => result
Err(error) => raise error
}
let response = result.to_json()
validator.check_response(response)
response
}