{"version":3,"sources":["../../../src/internals/helpers/schema.ts"],"names":["validateSchema","schema","errorOptions","ZodEffects","ValueError","toJsonSchema","options","console","log","constructor","name","convertToJsonSchema","inputSchema","_def","typeName","startsWith","converted","zodToJsonSchema","target","errorMessages","JSON","stringify","jsonSchema","schemaObj","type","properties","required","Array","isArray","Object","keys","entries","forEach","key","value","createSchemaValidator","ajv","Ajv","coerceTypes","useDefaults","strict","strictSchema","strictTuples","strictNumbers","strictTypes","strictRequired","parseDate","allowDate","allowUnionTypes","addFormats","default","validator","compile","error","parseBrokenJson","input","trim","parse","pair","outer","findFirstPair","jsonrepair"],"mappings":"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","file":"schema.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypeOf, ZodType, ZodEffects, ZodTypeAny, AnyZodObject, input } from \"zod\";\nimport { zodToJsonSchema, Options } from \"zod-to-json-schema\";\nimport { Ajv, SchemaObject, ValidateFunction, Options as AjvOptions } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\nimport { FrameworkErrorOptions, ValueError } from \"@/errors.js\";\nimport { jsonrepair } from \"jsonrepair\";\nexport type AnyToolSchemaLike = AnyZodObject | SchemaObject;\nexport type AnySchemaLike = ZodTypeAny | SchemaObject;\nexport type FromSchemaLike<T> = T extends ZodTypeAny ? TypeOf<T> : unknown;\nexport type FromSchemaLikeRaw<T> = T extends ZodTypeAny ? input<T> : unknown;\n\nexport function validateSchema<T extends AnySchemaLike>(\n  schema: T | ZodEffects<any>,\n  errorOptions?: FrameworkErrorOptions,\n): asserts schema is T {\n  if (schema && schema instanceof ZodEffects) {\n    throw new ValueError(\n      \"zod effects (refine, superRefine, transform, ...) cannot be converted to JSONSchema!\",\n      [],\n      errorOptions,\n    );\n  }\n}\n\nexport function toJsonSchema<T extends AnySchemaLike>(\n  schema: T,\n  options?: Partial<Options>,\n): SchemaObject {\n  console.log('Input schema type:', schema?.constructor?.name);\n  validateSchema(schema);\n\n  // Handle both ZodType and raw SchemaObject\n  const convertToJsonSchema = (inputSchema: AnySchemaLike): SchemaObject => {\n    // Check if it's a Zod object by looking for _def and typeName\n    if (inputSchema && typeof inputSchema === 'object' && '_def' in inputSchema && \n        (inputSchema as any)._def?.typeName?.startsWith('Zod')) {\n      console.log('Converting Zod schema to JSON Schema');\n      const converted = zodToJsonSchema(inputSchema as ZodType, {\n        ...options,\n        target: \"jsonSchema7\",\n        errorMessages: true,\n      });\n      console.log('Converted schema:', JSON.stringify(converted, null, 2));\n      return converted;\n    }\n    console.log('Using raw schema object');\n    return inputSchema;\n  };\n\n  const jsonSchema = convertToJsonSchema(schema);\n\n  // Ensure schema has proper structure\n  if (typeof jsonSchema === \"object\" && jsonSchema !== null) {\n    const schemaObj = jsonSchema as SchemaObject & {\n      properties?: Record<string, unknown>;\n      required?: string[];\n      type?: string;\n    };\n\n    // Handle required fields for objects\n    if (schemaObj.type === \"object\" || schemaObj.properties) {\n      if (!schemaObj.required) {\n        schemaObj.required = [];\n      } else if (!Array.isArray(schemaObj.required)) {\n        schemaObj.required = Object.keys(schemaObj.properties || {});\n      }\n    }\n\n    // Ensure all nested objects also have proper required arrays\n    if (schemaObj.properties) {\n      Object.entries(schemaObj.properties).forEach(([key, value]) => {\n        if (typeof value === 'object' && value !== null) {\n          schemaObj.properties![key] = toJsonSchema(value as AnySchemaLike);\n        }\n      });\n    }\n  }\n\n  return jsonSchema;\n}\n\nexport function createSchemaValidator<T extends AnySchemaLike>(\n  schema: T,\n  options?: AjvOptions,\n): ValidateFunction<FromSchemaLike<T>> {\n  console.log('Creating schema validator');\n  const jsonSchema = toJsonSchema(schema);\n  console.log('Schema for validation:', JSON.stringify(jsonSchema, null, 2));\n\n  const ajv = new Ajv({\n    coerceTypes: \"array\",\n    useDefaults: true,\n    strict: false,\n    strictSchema: false,\n    strictTuples: true,\n    strictNumbers: true,\n    strictTypes: true,\n    strictRequired: true,\n    parseDate: true,\n    allowDate: true,\n    allowUnionTypes: true,\n    ...options,\n  });\n  console.log('Ajv options:', {\n    coerceTypes: \"array\",\n    useDefaults: true,\n    strict: false,\n    strictSchema: false,\n    strictTuples: true,\n    strictNumbers: true,\n    strictTypes: true,\n    strictRequired: true,\n    parseDate: true,\n    allowDate: true,\n    allowUnionTypes: true,\n    ...options,\n  });\n  \n  addFormats.default(ajv);\n  try {\n    const validator = ajv.compile<FromSchemaLike<T>>(jsonSchema);\n    console.log('Validator compiled successfully');\n    return validator;\n  } catch (error) {\n    console.error('Error compiling schema:', error);\n    throw error;\n  }\n}\n\ninterface ParseBrokenJsonOptions {\n  pair?: [string, string] | null;\n}\nexport function parseBrokenJson(input: string | undefined, options?: ParseBrokenJsonOptions) {\n  input = (input ?? \"\")?.trim();\n\n  try {\n    try {\n      return JSON.parse(input);\n    } catch {\n      const pair = options?.pair;\n      if (pair) {\n        const { outer } = findFirstPair(input, pair) ?? { outer: input };\n        return JSON.parse(jsonrepair(outer));\n      } else {\n        return JSON.parse(jsonrepair(input));\n      }\n    }\n  } catch {\n    return null;\n  }\n}\n"]}