mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-23 12:37:09 +00:00
Follow-up to #49292: - **Bug fix in `push_any_of_constraint`**: when both an `anyOf` and a non-empty `allOf` were already present at the same level, the existing `anyOf` was silently dropped. Now it's always preserved. - **Canonical OpenAPI nullability**: collapse `{nullable: true}`-only entries out of `anyOf` onto the parent so `anyOf: [{type: "string"}, {type: "null"}]` becomes `{type: "string", nullable: true}` (the form Gemini actually expects) instead of `anyOf: [{type: "string"}, {nullable: true}]`. - **Compile-time path consistency**: route `ToJsonSchemaSubsetTransform` through the same `convert_null_in_types_to_nullable` helper so Rust-defined tools using `Option<T>` also keep nullability on Gemini, instead of silently truncating to the non-null type. - Drop an unnecessary clone in `push_any_of_constraint` and simplify `convert_types_to_any_of_defs`. - Add a small `obj()` test helper and a regression test for the `anyOf + allOf + multi-type` case. Release Notes: - Fixed `Option<T>` tool parameters being sent to Gemini without their nullability, and fixed tool schemas with `anyOf` + `allOf` losing constraints during the OpenAPI 3.0 conversion Co-authored-by: Daniel Strobusch <1438302+dastrobu@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| LICENSE-GPL | ||