{"version":3,"sources":["../../../src/internals/helpers/schema.ts"],"names":["validateSchema","schema","errorOptions","ZodEffects","ValueError","toJsonSchema","options","ZodType","zodToJsonSchema","createSchemaValidator","jsonSchema","ajv","Ajv","coerceTypes","useDefaults","strict","strictSchema","strictTuples","strictNumbers","strictTypes","strictRequired","parseDate","allowDate","allowUnionTypes","addFormats","default","compile","parseBrokenJson","input","trim","JSON","parse","pair","outer","findFirstPair","jsonrepair"],"mappings":";;;;;;;;;;;;;;;;AAiBO,SAASA,cAAAA,CACdC,QACAC,YAAAA,EAAoC;AAEpC,EAAA,IAAID,MAAAA,IAAUA,kBAAkBE,cAAAA,EAAY;AAC1C,IAAA,MAAM,IAAIC,qBAAAA,CACR,sFAAA,EACA,IACAF,YAAAA,CAAAA;AAEJ,EAAA;AACF;AAXgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAaT,SAASK,YAAAA,CACdJ,QACAK,OAAAA,EAA0B;AAE1BN,EAAAA,cAAAA,CAAeC,MAAAA,CAAAA;AACf,EAAA,IAAIA,kBAAkBM,WAAAA,EAAS;AAC7B,IAAA,OAAOC,+BAAAA,CAAgBP,QAAQK,OAAAA,CAAAA;AACjC,EAAA;AACA,EAAA,OAAOL,MAAAA;AACT;AATgBI,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAWT,SAASI,qBAAAA,CACdR,QACAK,OAAAA,EAAoB;AAEpB,EAAA,MAAMI,UAAAA,GAAaL,aAAaJ,MAAAA,CAAAA;AAEhC,EAAA,MAAMU,KAAAA,GAAM,IAAIC,OAAAA,CAAI;IAClBC,WAAAA,EAAa,OAAA;IACbC,WAAAA,EAAa,IAAA;IACbC,MAAAA,EAAQ,KAAA;IACRC,YAAAA,EAAc,KAAA;IACdC,YAAAA,EAAc,IAAA;IACdC,aAAAA,EAAe,IAAA;IACfC,WAAAA,EAAa,IAAA;IACbC,cAAAA,EAAgB,IAAA;IAChBC,SAAAA,EAAW,IAAA;IACXC,SAAAA,EAAW,IAAA;IACXC,eAAAA,EAAiB,IAAA;IACjB,GAAGjB;GACL,CAAA;AACAkB,EAAAA,2BAAAA,CAAWC,QAAQd,KAAAA,CAAAA;AACnB,EAAA,OAAOA,KAAAA,CAAIe,QAA2BhB,UAAAA,CAAAA;AACxC;AAtBgBD,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AA2BT,SAASkB,eAAAA,CAAgBC,OAA2BtB,OAAAA,EAAgC;AACzFsB,EAAAA,KAAAA,GAAAA,CAASA,KAAAA,IAAS,KAAKC,IAAAA,EAAAA;AAEvB,EAAA,IAAI;AACF,IAAA,IAAI;AACF,MAAA,OAAOC,IAAAA,CAAKC,MAAMH,KAAAA,CAAAA;IACpB,CAAA,CAAA,MAAQ;AACN,MAAA,MAAMI,OAAO1B,OAAAA,EAAS0B,IAAAA;AACtB,MAAA,IAAIA,IAAAA,EAAM;AACR,QAAA,MAAM,EAAEC,KAAAA,EAAK,GAAKC,wBAAAA,CAAcN,KAAAA,EAAOI,IAAAA,CAAAA,IAAS;UAAEC,KAAAA,EAAOL;AAAM,SAAA;AAC/D,QAAA,OAAOE,IAAAA,CAAKC,KAAAA,CAAMI,qBAAAA,CAAWF,KAAAA,CAAAA,CAAAA;MAC/B,CAAA,MAAO;AACL,QAAA,OAAOH,IAAAA,CAAKC,KAAAA,CAAMI,qBAAAA,CAAWP,KAAAA,CAAAA,CAAAA;AAC/B,MAAA;AACF,IAAA;EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AACT,EAAA;AACF;AAlBgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA","file":"schema.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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  validateSchema(schema);\n  if (schema instanceof ZodType) {\n    return zodToJsonSchema(schema, options);\n  }\n  return schema;\n}\n\nexport function createSchemaValidator<T extends AnySchemaLike>(\n  schema: T,\n  options?: AjvOptions,\n): ValidateFunction<FromSchemaLike<T>> {\n  const jsonSchema = toJsonSchema(schema);\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  addFormats.default(ajv);\n  return ajv.compile<FromSchemaLike<T>>(jsonSchema);\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"]}