diff options
Diffstat (limited to 'packages/core/src/utils/schemaValidator.ts')
| -rw-r--r-- | packages/core/src/utils/schemaValidator.ts | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/packages/core/src/utils/schemaValidator.ts b/packages/core/src/utils/schemaValidator.ts index cb025774..f397c0b1 100644 --- a/packages/core/src/utils/schemaValidator.ts +++ b/packages/core/src/utils/schemaValidator.ts @@ -4,7 +4,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { Schema } from '@google/genai'; import AjvPkg from 'ajv'; // Ajv's ESM/CJS interop: use 'any' for compatibility as recommended by Ajv docs // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -19,50 +18,18 @@ export class SchemaValidator { * Returns null if the data confroms to the schema described by schema (or if schema * is null). Otherwise, returns a string describing the error. */ - static validate(schema: Schema | undefined, data: unknown): string | null { + static validate(schema: unknown | undefined, data: unknown): string | null { if (!schema) { return null; } if (typeof data !== 'object' || data === null) { return 'Value of params must be an object'; } - const validate = ajValidator.compile(this.toObjectSchema(schema)); + const validate = ajValidator.compile(schema); const valid = validate(data); if (!valid && validate.errors) { return ajValidator.errorsText(validate.errors, { dataVar: 'params' }); } return null; } - - /** - * Converts @google/genai's Schema to an object compatible with avj. - * This is necessary because it represents Types as an Enum (with - * UPPERCASE values) and minItems and minLength as strings, when they should be numbers. - */ - private static toObjectSchema(schema: Schema): object { - const newSchema: Record<string, unknown> = { ...schema }; - if (newSchema.anyOf && Array.isArray(newSchema.anyOf)) { - newSchema.anyOf = newSchema.anyOf.map((v) => this.toObjectSchema(v)); - } - if (newSchema.items) { - newSchema.items = this.toObjectSchema(newSchema.items); - } - if (newSchema.properties && typeof newSchema.properties === 'object') { - const newProperties: Record<string, unknown> = {}; - for (const [key, value] of Object.entries(newSchema.properties)) { - newProperties[key] = this.toObjectSchema(value as Schema); - } - newSchema.properties = newProperties; - } - if (newSchema.type) { - newSchema.type = String(newSchema.type).toLowerCase(); - } - if (newSchema.minItems) { - newSchema.minItems = Number(newSchema.minItems); - } - if (newSchema.minLength) { - newSchema.minLength = Number(newSchema.minLength); - } - return newSchema; - } } |
