fix: add missing type:string to enum properties in Gemini tool schema translation (#380)
Gemini API requires enum properties to have an explicit type:"string" declaration. Without it, tool calls with enum parameters return 400 Bad Request. Fixes #359.
This commit is contained in:
parent
1154244f1d
commit
4d7ddbfffe
1 changed files with 5 additions and 1 deletions
|
|
@ -138,12 +138,16 @@ function convertConstToEnum(obj) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert enum values to strings (Gemini requires string enum values)
|
// Convert enum values to strings (Gemini requires string enum values + explicit type:"string")
|
||||||
function convertEnumValuesToStrings(obj) {
|
function convertEnumValuesToStrings(obj) {
|
||||||
if (!obj || typeof obj !== "object") return;
|
if (!obj || typeof obj !== "object") return;
|
||||||
|
|
||||||
if (obj.enum && Array.isArray(obj.enum)) {
|
if (obj.enum && Array.isArray(obj.enum)) {
|
||||||
obj.enum = obj.enum.map(v => String(v));
|
obj.enum = obj.enum.map(v => String(v));
|
||||||
|
// Gemini API requires type:"string" when enum is present — without it returns 400
|
||||||
|
if (!obj.type) {
|
||||||
|
obj.type = "string";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const value of Object.values(obj)) {
|
for (const value of Object.values(obj)) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue