{"version":3,"file":"validation.mjs","names":[],"sources":["../../../../src/batteries/llm/bedrock_converse/validation.ts"],"sourcesContent":["/**\n * Runtime option validation for the native Bedrock Converse battery.\n *\n * @module @nhtio/adk/batteries/llm/bedrock_converse/validation\n */\n\nimport { validator } from '@nhtio/validation'\nimport { TokenEncoding } from '@nhtio/adk/common'\nimport { E_INVALID_BEDROCK_CONVERSE_OPTIONS } from './exceptions'\nimport type { BedrockConverseAdapterOptions } from './types'\n\n/** Schema for {@link BedrockConverseAdapterOptions}. */\nconst tokenEncodingSchema = validator\n  .alternatives(\n    // Known values are suggestions from the canonical list, not a whitelist: consumers may provide\n    // a custom or newer tokenizer name. The field accepts any non-empty string, explicit null, or\n    // absent (undefined = \"no token counting\"). `.optional()` preserves the null/undefined\n    // disposition required by adk/require-validator-any-required.\n    validator\n      .string()\n      .min(1)\n      .description(`Known encodings: ${TokenEncoding.join(', ')}`),\n    validator.any().valid(null).optional()\n  )\n  .default(null)\n\n/** Schema for {@link BedrockConverseAdapterOptions}. */\nexport const bedrockConverseOptionsSchema = validator.object({\n  model: validator.string().min(1).required(),\n  apiKey: validator.string().optional(),\n  region: validator.string().optional(),\n  baseURL: validator.string().optional(),\n  stream: validator.boolean().optional(),\n  contextWindow: validator.number().integer().min(1).optional(),\n  autoAck: validator.boolean().default(true),\n  maxTokens: validator.number().integer().positive().optional(),\n  temperature: validator.number().min(0).max(1).optional(),\n  topP: validator.number().min(0).max(1).optional(),\n  stopSequences: validator.array().items(validator.string()).optional(),\n  toolChoice: validator.object().unknown(true).optional(),\n  additionalModelRequestFields: validator.object().unknown(true).optional(),\n  alternationPolicy: validator.string().valid('merge', 'filler', 'reject').optional(),\n  timeoutMs: validator.number().integer().positive().optional(),\n  retry: validator\n    .object({\n      maxAttempts: validator.number().integer().positive().optional(),\n      baseDelayMs: validator.number().integer().positive().optional(),\n      maxDelayMs: validator.number().integer().positive().optional(),\n      retriableStatuses: validator.array().items(validator.number()).optional(),\n      honorRetryAfter: validator.boolean().optional(),\n    })\n    .optional(),\n  fetch: validator.function().optional(),\n  tokenEncoding: tokenEncodingSchema,\n  spoolStore: validator.any().optional(),\n  bucketOrder: validator.any().optional(),\n  thoughtSurfacing: validator.string().valid('all-self', 'latest-self', 'all').optional(),\n  unsupportedMediaPolicy: validator.string().optional(),\n  localToolCallParser: validator.any().optional(),\n  toolCallIdFilter: validator.function().optional(),\n  onRawGeneration: validator.function().optional(),\n  onPromptAssembled: validator.function().optional(),\n  helpers: validator.object().unknown(true).optional(),\n  forgeToolsFilter: validator.function().optional(),\n})\n\n/**\n * Validate and normalise adapter options.\n *\n * @throws {@link E_INVALID_BEDROCK_CONVERSE_OPTIONS} when validation fails.\n */\nexport const validateOptions = (input: unknown): BedrockConverseAdapterOptions => {\n  const { error, value } = bedrockConverseOptionsSchema.validate(input, {\n    allowUnknown: false,\n    stripUnknown: false,\n  })\n  if (error) {\n    throw new E_INVALID_BEDROCK_CONVERSE_OPTIONS([\n      error.details.map((detail: { message: string }) => detail.message).join(' '),\n    ])\n  }\n  return value as BedrockConverseAdapterOptions\n}\n"],"mappings":";;;;;;;;;;;AAYA,IAAM,sBAAsB,UACzB,aAKC,UACG,OAAO,EACP,IAAI,CAAC,EACL,YAAY,oBAAoB,cAAc,KAAK,IAAI,GAAG,GAC7D,UAAU,IAAI,EAAE,MAAM,IAAI,EAAE,SAAS,CACvC,EACC,QAAQ,IAAI;;AAGf,IAAa,+BAA+B,UAAU,OAAO;CAC3D,OAAO,UAAU,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;CAC1C,QAAQ,UAAU,OAAO,EAAE,SAAS;CACpC,QAAQ,UAAU,OAAO,EAAE,SAAS;CACpC,SAAS,UAAU,OAAO,EAAE,SAAS;CACrC,QAAQ,UAAU,QAAQ,EAAE,SAAS;CACrC,eAAe,UAAU,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS;CAC5D,SAAS,UAAU,QAAQ,EAAE,QAAQ,IAAI;CACzC,WAAW,UAAU,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;CAC5D,aAAa,UAAU,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;CACvD,MAAM,UAAU,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;CAChD,eAAe,UAAU,MAAM,EAAE,MAAM,UAAU,OAAO,CAAC,EAAE,SAAS;CACpE,YAAY,UAAU,OAAO,EAAE,QAAQ,IAAI,EAAE,SAAS;CACtD,8BAA8B,UAAU,OAAO,EAAE,QAAQ,IAAI,EAAE,SAAS;CACxE,mBAAmB,UAAU,OAAO,EAAE,MAAM,SAAS,UAAU,QAAQ,EAAE,SAAS;CAClF,WAAW,UAAU,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;CAC5D,OAAO,UACJ,OAAO;EACN,aAAa,UAAU,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;EAC9D,aAAa,UAAU,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;EAC9D,YAAY,UAAU,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;EAC7D,mBAAmB,UAAU,MAAM,EAAE,MAAM,UAAU,OAAO,CAAC,EAAE,SAAS;EACxE,iBAAiB,UAAU,QAAQ,EAAE,SAAS;CAChD,CAAC,EACA,SAAS;CACZ,OAAO,UAAU,SAAS,EAAE,SAAS;CACrC,eAAe;CACf,YAAY,UAAU,IAAI,EAAE,SAAS;CACrC,aAAa,UAAU,IAAI,EAAE,SAAS;CACtC,kBAAkB,UAAU,OAAO,EAAE,MAAM,YAAY,eAAe,KAAK,EAAE,SAAS;CACtF,wBAAwB,UAAU,OAAO,EAAE,SAAS;CACpD,qBAAqB,UAAU,IAAI,EAAE,SAAS;CAC9C,kBAAkB,UAAU,SAAS,EAAE,SAAS;CAChD,iBAAiB,UAAU,SAAS,EAAE,SAAS;CAC/C,mBAAmB,UAAU,SAAS,EAAE,SAAS;CACjD,SAAS,UAAU,OAAO,EAAE,QAAQ,IAAI,EAAE,SAAS;CACnD,kBAAkB,UAAU,SAAS,EAAE,SAAS;AAClD,CAAC;;;;;;AAOD,IAAa,mBAAmB,UAAkD;CAChF,MAAM,EAAE,OAAO,UAAU,6BAA6B,SAAS,OAAO;EACpE,cAAc;EACd,cAAc;CAChB,CAAC;CACD,IAAI,OACF,MAAM,IAAI,mCAAmC,CAC3C,MAAM,QAAQ,KAAK,WAAgC,OAAO,OAAO,EAAE,KAAK,GAAG,CAC7E,CAAC;CAEH,OAAO;AACT"}