change cleanSchemaForGemini to cleanSchema
This commit is contained in:
@@ -9,7 +9,7 @@ import {
|
||||
isThinkingModel
|
||||
} from '../constants.js';
|
||||
import { convertContentToParts, convertRole } from './content-converter.js';
|
||||
import { sanitizeSchema, cleanSchemaForGemini } from './schema-sanitizer.js';
|
||||
import { sanitizeSchema, cleanSchema } from './schema-sanitizer.js';
|
||||
import {
|
||||
restoreThinkingSignatures,
|
||||
removeTrailingThinkingBlocks,
|
||||
@@ -214,7 +214,7 @@ export function convertAnthropicToGoogle(anthropicRequest) {
|
||||
// Cloud Code API which validates schemas using Google's protobuf format.
|
||||
// This fixes issue #82: /compact command fails with schema transformation error
|
||||
// "Proto field is not repeating, cannot start list" for Claude models.
|
||||
parameters = cleanSchemaForGemini(parameters);
|
||||
parameters = cleanSchema(parameters);
|
||||
|
||||
return {
|
||||
name: String(name).replace(/[^a-zA-Z0-9_-]/g, '_').slice(0, 64),
|
||||
|
||||
@@ -592,9 +592,9 @@ function toGoogleType(type) {
|
||||
* @param {Object} schema - The JSON schema to clean
|
||||
* @returns {Object} Cleaned schema safe for Gemini API
|
||||
*/
|
||||
export function cleanSchemaForGemini(schema) {
|
||||
export function cleanSchema(schema) {
|
||||
if (!schema || typeof schema !== 'object') return schema;
|
||||
if (Array.isArray(schema)) return schema.map(cleanSchemaForGemini);
|
||||
if (Array.isArray(schema)) return schema.map(cleanSchema);
|
||||
|
||||
// Phase 1: Convert $refs to hints
|
||||
let result = convertRefsToHints(schema);
|
||||
@@ -641,16 +641,16 @@ export function cleanSchemaForGemini(schema) {
|
||||
if (result.properties && typeof result.properties === 'object') {
|
||||
const newProps = {};
|
||||
for (const [key, value] of Object.entries(result.properties)) {
|
||||
newProps[key] = cleanSchemaForGemini(value);
|
||||
newProps[key] = cleanSchema(value);
|
||||
}
|
||||
result.properties = newProps;
|
||||
}
|
||||
|
||||
if (result.items) {
|
||||
if (Array.isArray(result.items)) {
|
||||
result.items = result.items.map(cleanSchemaForGemini);
|
||||
result.items = result.items.map(cleanSchema);
|
||||
} else if (typeof result.items === 'object') {
|
||||
result.items = cleanSchemaForGemini(result.items);
|
||||
result.items = cleanSchema(result.items);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -664,7 +664,7 @@ export function cleanSchemaForGemini(schema) {
|
||||
}
|
||||
|
||||
// Phase 5: Convert type to Google's uppercase format (STRING, OBJECT, ARRAY, etc.)
|
||||
// Only convert at current level - nested types already converted by recursive cleanSchemaForGemini calls
|
||||
// Only convert at current level - nested types already converted by recursive cleanSchema calls
|
||||
if (result.type && typeof result.type === 'string') {
|
||||
result.type = toGoogleType(result.type);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user