{"version":3,"file":"validation.mjs","names":[],"sources":["../../../../src/batteries/generation/local_diffusion/validation.ts"],"sourcesContent":["/** Runtime validation for local diffusion options.\n * @module @nhtio/adk/batteries/generation/local_diffusion/validation\n */\nimport { validator, ValidationError } from '@nhtio/validation'\nimport { E_INVALID_LOCAL_DIFFUSION_OPTIONS } from './exceptions'\nimport type { LocalDiffusionGenerationAdapterOptions } from './types'\n\n/** Validator schema for local diffusion adapter options. */\nexport const localDiffusionOptionsSchema = validator\n  .object<LocalDiffusionGenerationAdapterOptions>({\n    model: validator.string().min(1).required(),\n    command: validator.string().min(1).required(),\n    args: validator.array().items(validator.string()).optional(),\n    spawn: validator.function().optional(),\n    fs: validator\n      .object({\n        readFile: validator.function().required(),\n        unlink: validator.function().required(),\n      })\n      .unknown(false)\n      .optional(),\n    outputDir: validator.string().optional(),\n    maxDecodedBytes: validator\n      .number()\n      .integer()\n      .min(1)\n      .default(50 * 1024 * 1024),\n    maxLineBytes: validator\n      .number()\n      .integer()\n      .min(1)\n      .default(1024 * 1024),\n    protocol: validator.object().unknown(false).optional(),\n    commandPrefix: validator.string().optional(),\n    eventPrefix: validator.string().optional(),\n    ops: validator.object().unknown(false).optional(),\n    control: validator.object().unknown(false).optional(),\n    events: validator.object().unknown(false).optional(),\n    startupTimeoutMs: validator.number().integer().min(1).default(30_000),\n    requestTimeoutMs: validator.number().integer().min(0).default(0),\n    abortGraceMs: validator.number().integer().min(0).default(5000),\n    disposeGraceMs: validator.number().integer().min(0).default(5000),\n    negativePrompt: validator.string().optional(),\n    steps: validator.number().integer().min(1).optional(),\n    cfgScale: validator.number().min(0).optional(),\n    sampler: validator.string().optional(),\n    seed: validator.number().integer().optional(),\n    width: validator.number().integer().min(1).optional(),\n    height: validator.number().integer().min(1).optional(),\n    isAvailable: validator.function().optional(),\n    onLifecycle: validator.function().optional(),\n    onLoading: validator.function().optional(),\n    onCompiling: validator.function().optional(),\n    onReady: validator.function().optional(),\n    onGenerating: validator.function().optional(),\n    onComplete: validator.function().optional(),\n    onError: validator.function().optional(),\n  })\n  .unknown(false)\n\nconst formatDetails = (error: ValidationError): string =>\n  error.details.map((detail) => detail.message).join(' and ')\n\n/** Validate and resolve adapter options. */\nexport const validateOptions = (input: unknown): LocalDiffusionGenerationAdapterOptions => {\n  const result = localDiffusionOptionsSchema.validate(input, { abortEarly: false, convert: false })\n  if (result.error) {\n    throw new E_INVALID_LOCAL_DIFFUSION_OPTIONS([formatDetails(result.error)])\n  }\n  return result.value as LocalDiffusionGenerationAdapterOptions\n}\n"],"mappings":";;;;;;;AAQA,IAAa,8BAA8B,UACxC,OAA+C;CAC9C,OAAO,UAAU,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;CAC1C,SAAS,UAAU,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;CAC5C,MAAM,UAAU,MAAM,EAAE,MAAM,UAAU,OAAO,CAAC,EAAE,SAAS;CAC3D,OAAO,UAAU,SAAS,EAAE,SAAS;CACrC,IAAI,UACD,OAAO;EACN,UAAU,UAAU,SAAS,EAAE,SAAS;EACxC,QAAQ,UAAU,SAAS,EAAE,SAAS;CACxC,CAAC,EACA,QAAQ,KAAK,EACb,SAAS;CACZ,WAAW,UAAU,OAAO,EAAE,SAAS;CACvC,iBAAiB,UACd,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,EACL,QAAQ,KAAK,OAAO,IAAI;CAC3B,cAAc,UACX,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,EACL,QAAQ,OAAO,IAAI;CACtB,UAAU,UAAU,OAAO,EAAE,QAAQ,KAAK,EAAE,SAAS;CACrD,eAAe,UAAU,OAAO,EAAE,SAAS;CAC3C,aAAa,UAAU,OAAO,EAAE,SAAS;CACzC,KAAK,UAAU,OAAO,EAAE,QAAQ,KAAK,EAAE,SAAS;CAChD,SAAS,UAAU,OAAO,EAAE,QAAQ,KAAK,EAAE,SAAS;CACpD,QAAQ,UAAU,OAAO,EAAE,QAAQ,KAAK,EAAE,SAAS;CACnD,kBAAkB,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAM;CACpE,kBAAkB,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC/D,cAAc,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAI;CAC9D,gBAAgB,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAI;CAChE,gBAAgB,UAAU,OAAO,EAAE,SAAS;CAC5C,OAAO,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS;CACpD,UAAU,UAAU,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;CAC7C,SAAS,UAAU,OAAO,EAAE,SAAS;CACrC,MAAM,UAAU,OAAO,EAAE,QAAQ,EAAE,SAAS;CAC5C,OAAO,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS;CACpD,QAAQ,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS;CACrD,aAAa,UAAU,SAAS,EAAE,SAAS;CAC3C,aAAa,UAAU,SAAS,EAAE,SAAS;CAC3C,WAAW,UAAU,SAAS,EAAE,SAAS;CACzC,aAAa,UAAU,SAAS,EAAE,SAAS;CAC3C,SAAS,UAAU,SAAS,EAAE,SAAS;CACvC,cAAc,UAAU,SAAS,EAAE,SAAS;CAC5C,YAAY,UAAU,SAAS,EAAE,SAAS;CAC1C,SAAS,UAAU,SAAS,EAAE,SAAS;AACzC,CAAC,EACA,QAAQ,KAAK;AAEhB,IAAM,iBAAiB,UACrB,MAAM,QAAQ,KAAK,WAAW,OAAO,OAAO,EAAE,KAAK,OAAO;;AAG5D,IAAa,mBAAmB,UAA2D;CACzF,MAAM,SAAS,4BAA4B,SAAS,OAAO;EAAE,YAAY;EAAO,SAAS;CAAM,CAAC;CAChG,IAAI,OAAO,OACT,MAAM,IAAI,kCAAkC,CAAC,cAAc,OAAO,KAAK,CAAC,CAAC;CAE3E,OAAO,OAAO;AAChB"}