mirror of
https://github.com/morluto/rea.git
synced 2026-10-26 17:35:11 +00:00
fix(mcp): advertise reduced array elements with Gemini-compatible item types (#7107)
Reduced compact input schemas gave every array property an any-value item
schema, a six-member type list beside nested `items`. Gemini function
declarations accept `items` only beside the single `array` type, so every
request through a Gemini-backed client failed with
`properties[functions].items.items: field predicate failed: $type == Type.ARRAY`.
Reduced array properties now advertise the element types their canonical item
schemas accept. Unknown, tuple, and mixed array elements use the empty item
schema, and properties that may be arrays or another type list typed anyOf
branches. An inline `not: {}` keeps the empty schema. The compact catalog test
now rejects `items` beside a non-array type as well as untyped item unions.
Fixes #5201
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0eb3919d69
commit
58a5275aa2
5 files changed
+420
-55
No files matched your search
@@ -1269,6 +1269,16 @@ This addresses the emitted shape reported through a Gemini-backed gateway in
|
||||
[#5201](https://github.com/morluto/rea/issues/5201). Gateway conversion and
|
||||
live provider acceptance have not been verified for this projection.
|
||||
|
||||
Gemini function declarations accept `items` only beside the single `array`
|
||||
type. Reduced array properties therefore advertise the element types their
|
||||
canonical item schemas accept, such as `{"type": "object"}` for a union of
|
||||
object actions, instead of an any-value type list with nested `items`. An
|
||||
element whose type is unknown, a tuple, or an array alongside other types uses
|
||||
the empty item schema, and a property that may be an array or another type
|
||||
lists typed `anyOf` branches. A boundary test rejects any compact
|
||||
advertisement that places `items` beside another type or uses an untyped item
|
||||
union.
|
||||
|
||||
The compact profile renders the same tool set, output schemas, annotations,
|
||||
and canonical server-side validation. It changes only the advertised input
|
||||
JSON Schema:
|
||||
|
||||
Reference in new issue
Block a user