{"version":3,"sources":["../src/strategies/bracket-and-quote-fixer.ts","../src/strategies/extract-json-block.ts","../src/strategies/finalize.ts","../src/strategies/sanitizers.ts","../src/strategies/schema-align.ts","../src/strategies/separator-normalizer.ts","../src/strategies/tolerant-parse.ts","../src/guard.ts","../src/adapters/ajv-adapter.ts","../src/adapters/zod-adapter.ts"],"names":["Ajv"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { Strategy, StrategyInput, StrategyOutput } from '../types.js';\n\n/**\n * Attempts to fix unbalanced brackets and quotes\n *\n * Fixes:\n * - Missing closing brackets/braces\n * - Missing opening brackets/braces\n * - Unbalanced quotes\n */\nexport const bracketAndQuoteFixer: Strategy = {\n  name: 'bracketAndQuoteFixer',\n  priority: 'optional',\n\n  async apply(input: StrategyInput): Promise<StrategyOutput> {\n    const { rawInput, value } = input;\n    const diagnostics: StrategyOutput['diagnostics'] = [];\n\n    // Skip if already parsed\n    if (value !== undefined) {\n      return { diagnostics: [] };\n    }\n\n    let fixed = rawInput;\n\n    // Fix unbalanced brackets\n    const brackets = { '{': '}', '[': ']' };\n    const stack: string[] = [];\n    let inString = false;\n    let escapeNext = false;\n\n    for (let i = 0; i < fixed.length; i++) {\n      const char = fixed[i];\n\n      if (escapeNext) {\n        escapeNext = false;\n        continue;\n      }\n\n      if (char === '\\\\') {\n        escapeNext = true;\n        continue;\n      }\n\n      if (char === '\"' && !inString) {\n        inString = true;\n      } else if (char === '\"' && inString) {\n        inString = false;\n      }\n\n      if (!inString) {\n        if (char === '{' || char === '[') {\n          stack.push(char);\n        } else if (char === '}' || char === ']') {\n          const last = stack.pop();\n          // Check if it matches\n          if (last && brackets[last as keyof typeof brackets] !== char) {\n            // Mismatched bracket - this is more complex to fix\n            stack.push(last);\n          }\n        }\n      }\n    }\n\n    // Add missing closing brackets\n    if (stack.length > 0) {\n      for (let i = stack.length - 1; i >= 0; i--) {\n        const opener = stack[i];\n        fixed += brackets[opener as keyof typeof brackets];\n      }\n      diagnostics.push({\n        severity: 'info',\n        message: `Added ${stack.length} missing closing bracket(s)`,\n        strategy: 'bracketAndQuoteFixer',\n      });\n    }\n\n    // Fix unbalanced quotes (simple heuristic: add closing quote at end if odd count)\n    const quoteCount = (fixed.match(/\"/g) || []).length;\n    if (quoteCount % 2 !== 0) {\n      fixed += '\"';\n      diagnostics.push({\n        severity: 'info',\n        message: 'Added missing closing quote',\n        strategy: 'bracketAndQuoteFixer',\n      });\n    }\n\n    // Try to parse the fixed version\n    if (fixed !== rawInput) {\n      try {\n        const parsed = JSON.parse(fixed);\n        return {\n          rawInput: fixed,\n          value: parsed,\n          diagnostics,\n        };\n      } catch {\n        // Return the attempted fix\n        return {\n          rawInput: fixed,\n          diagnostics,\n        };\n      }\n    }\n\n    return { diagnostics: [] };\n  },\n};\n","import type { Strategy, StrategyInput, StrategyOutput } from '../types.js';\n\n/**\n * Extracts JSON from markdown code blocks or other wrapping text\n *\n * Common patterns:\n * - ```json\\n{...}\\n```\n * - ```\\n{...}\\n```\n * - Some text: {...}\n * - {...} <- extra text\n */\nexport const extractJsonBlock: Strategy = {\n  name: 'extractJsonBlock',\n  priority: 'optional',\n\n  async apply(input: StrategyInput): Promise<StrategyOutput> {\n    const { rawInput } = input;\n    const diagnostics: StrategyOutput['diagnostics'] = [];\n\n    // Pattern 1: Extract from markdown code block\n    const codeBlockMatch = rawInput.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)\\n?```/);\n    if (codeBlockMatch) {\n      const extracted = codeBlockMatch[1].trim();\n      diagnostics.push({\n        severity: 'info',\n        message: 'Extracted JSON from markdown code block',\n        strategy: 'extractJsonBlock',\n      });\n      return {\n        rawInput: extracted,\n        diagnostics,\n      };\n    }\n\n    // Pattern 2: Extract first {...} or [...] block\n    const jsonMatch = rawInput.match(/[{[][\\s\\S]*[}\\]]/);\n    if (jsonMatch) {\n      const extracted = jsonMatch[0].trim();\n      if (extracted !== rawInput.trim()) {\n        diagnostics.push({\n          severity: 'info',\n          message: 'Extracted JSON block from surrounding text',\n          strategy: 'extractJsonBlock',\n        });\n        return {\n          rawInput: extracted,\n          diagnostics,\n        };\n      }\n    }\n\n    // No extraction needed\n    return { diagnostics: [] };\n  },\n};\n","import type { Strategy, StrategyInput, StrategyOutput } from '../types.js';\n\n/**\n * Final validation and serialization strategy\n *\n * - Validates the final value against schema\n * - Re-serializes to ensure valid JSON string\n * - Reports final validation status\n */\nexport const finalize: Strategy = {\n  name: 'finalize',\n  priority: 'critical',\n\n  async apply(input: StrategyInput): Promise<StrategyOutput> {\n    const { value, schema } = input;\n    const diagnostics: StrategyOutput['diagnostics'] = [];\n\n    if (value === undefined) {\n      diagnostics.push({\n        severity: 'error',\n        message: 'No value available for final validation',\n        strategy: 'finalize',\n      });\n      return { diagnostics };\n    }\n\n    // Validate against schema\n    const validation = schema.validate(value);\n\n    if (validation.valid) {\n      // Re-serialize to ensure clean JSON (validates serialization)\n      JSON.stringify(value);\n\n      diagnostics.push({\n        severity: 'info',\n        message: 'Final validation successful',\n        strategy: 'finalize',\n      });\n\n      return {\n        value,\n        diagnostics,\n      };\n    }\n    // Validation failed\n    if (validation.errors) {\n      for (const error of validation.errors) {\n        diagnostics.push({\n          severity: 'error',\n          message: `Validation error: ${error}`,\n          strategy: 'finalize',\n        });\n      }\n    }\n\n    return {\n      value,\n      diagnostics,\n    };\n  },\n};\n","import type { Strategy, StrategyInput, StrategyOutput } from '../types.js';\n\n/**\n * Removes invalid or disallowed properties according to schema\n *\n * Fixes:\n * - Removes properties not defined in schema (when additionalProperties: false)\n * - Removes null values where not allowed\n * - Removes undefined values\n */\nexport const sanitizers: Strategy = {\n  name: 'sanitizers',\n  priority: 'critical',\n\n  async apply(input: StrategyInput): Promise<StrategyOutput> {\n    const { value, schema } = input;\n    const diagnostics: StrategyOutput['diagnostics'] = [];\n\n    if (!value || typeof value !== 'object' || Array.isArray(value)) {\n      return { diagnostics: [] };\n    }\n\n    const result = sanitizeObject(value, schema, '', diagnostics);\n\n    // Only return if changes were made\n    if (diagnostics.length > 0) {\n      return {\n        value: result.value,\n        diagnostics,\n      };\n    }\n\n    return { diagnostics: [] };\n  },\n};\n\nfunction sanitizeObject(\n  obj: any,\n  schema: any,\n  path: string,\n  diagnostics: any[]\n): { value: any; modified: boolean } {\n  const result: any = {};\n  const allowedProps = schema.getProperties();\n  const allowsAdditional = schema.allowsAdditionalProperties();\n  let modified = false;\n\n  for (const [key, val] of Object.entries(obj)) {\n    const propPath = path ? `${path}/${key}` : key;\n\n    // Skip undefined values\n    if (val === undefined) {\n      diagnostics.push({\n        severity: 'info',\n        message: `Removed undefined value at ${propPath}`,\n        strategy: 'sanitizers',\n        path: propPath,\n      });\n      modified = true;\n      continue;\n    }\n\n    // Check if property is allowed (only at root level)\n    if (!path && !allowsAdditional && !allowedProps.includes(key)) {\n      diagnostics.push({\n        severity: 'info',\n        message: `Removed disallowed property \"${key}\" (not in schema)`,\n        strategy: 'sanitizers',\n        path: propPath,\n      });\n      modified = true;\n      continue;\n    }\n\n    // Process the value\n    if (val !== null && typeof val === 'object' && !Array.isArray(val)) {\n      // Don't recursively sanitize nested objects - just keep them as is\n      result[key] = val;\n    } else if (Array.isArray(val)) {\n      // Keep arrays as-is\n      result[key] = val;\n    } else {\n      result[key] = val;\n    }\n  }\n\n  return { value: result, modified };\n}\n","import type { Strategy, StrategyInput, StrategyOutput } from '../types.js';\n\n/**\n * Aligns values to match schema expectations\n *\n * Fixes:\n * - Type coercion (string to number, etc.)\n * - Case normalization for enums\n * - Adding default values for missing required fields\n * - Converting strings to booleans\n */\nexport const schemaAlign: Strategy = {\n  name: 'schemaAlign',\n  priority: 'critical',\n\n  async apply(input: StrategyInput): Promise<StrategyOutput> {\n    const { value, schema } = input;\n    const diagnostics: StrategyOutput['diagnostics'] = [];\n\n    if (!value || typeof value !== 'object') {\n      return { diagnostics: [] };\n    }\n\n    const result = alignValue(value, schema, '', diagnostics);\n\n    // Only return if changes were made (diagnostics were added)\n    if (diagnostics.length > 0) {\n      return {\n        value: result,\n        diagnostics,\n      };\n    }\n\n    return { diagnostics: [] };\n  },\n};\n\nfunction alignValue(value: any, schema: any, path: string, diagnostics: any[]): any {\n  if (value === null || value === undefined) {\n    return value;\n  }\n\n  // Handle arrays\n  if (Array.isArray(value)) {\n    return value.map((item, index) => alignValue(item, schema, `${path}[${index}]`, diagnostics));\n  }\n\n  // Handle objects\n  if (typeof value === 'object') {\n    const aligned: any = {};\n    const properties = schema.getProperties();\n\n    // Process existing properties\n    for (const [key, val] of Object.entries(value)) {\n      const propPath = path ? `${path}/${key}` : key;\n      const expectedType = schema.getType(propPath);\n      const enumValues = schema.getEnum(propPath);\n\n      let alignedVal = val;\n\n      // Check for enum and normalize case\n      if (enumValues && typeof val === 'string') {\n        const normalized = enumValues.find(\n          (e: unknown) => String(e).toLowerCase() === val.toLowerCase()\n        );\n        if (normalized && normalized !== val) {\n          alignedVal = normalized;\n          diagnostics.push({\n            severity: 'info',\n            message: `Normalized enum value \"${val}\" to \"${normalized}\" at ${propPath}`,\n            strategy: 'schemaAlign',\n            path: propPath,\n          });\n        }\n      }\n\n      // Type coercion\n      if (expectedType) {\n        const coerced = coerceType(alignedVal, expectedType, propPath, diagnostics);\n        if (coerced !== alignedVal) {\n          alignedVal = coerced;\n        }\n      }\n\n      aligned[key] = alignedVal;\n    }\n\n    // Add missing required fields with defaults\n    for (const prop of properties) {\n      if (!(prop in aligned) && schema.isRequired(prop)) {\n        const defaultValue = schema.getDefault(prop);\n        if (defaultValue !== undefined) {\n          aligned[prop] = defaultValue;\n          diagnostics.push({\n            severity: 'info',\n            message: `Added missing required field \"${prop}\" with default value`,\n            strategy: 'schemaAlign',\n            path: prop,\n          });\n        }\n      }\n    }\n\n    return aligned;\n  }\n\n  return value;\n}\n\nfunction coerceType(value: any, expectedType: string, path: string, diagnostics: any[]): any {\n  const currentType = typeof value;\n\n  // Already correct type\n  if (currentType === expectedType) {\n    return value;\n  }\n\n  // String to number\n  if (expectedType === 'number' && currentType === 'string') {\n    const num = Number(value);\n    if (!Number.isNaN(num)) {\n      diagnostics.push({\n        severity: 'info',\n        message: `Coerced string \"${value}\" to number ${num} at ${path}`,\n        strategy: 'schemaAlign',\n        path,\n      });\n      return num;\n    }\n  }\n\n  // Number to string\n  if (expectedType === 'string' && currentType === 'number') {\n    diagnostics.push({\n      severity: 'info',\n      message: `Coerced number ${value} to string at ${path}`,\n      strategy: 'schemaAlign',\n      path,\n    });\n    return String(value);\n  }\n\n  // String to boolean\n  if (expectedType === 'boolean' && currentType === 'string') {\n    const lower = value.toLowerCase();\n    if (lower === 'true') {\n      diagnostics.push({\n        severity: 'info',\n        message: `Coerced string \"true\" to boolean at ${path}`,\n        strategy: 'schemaAlign',\n        path,\n      });\n      return true;\n    }\n    if (lower === 'false') {\n      diagnostics.push({\n        severity: 'info',\n        message: `Coerced string \"false\" to boolean at ${path}`,\n        strategy: 'schemaAlign',\n        path,\n      });\n      return false;\n    }\n  }\n\n  // Number to boolean\n  if (expectedType === 'boolean' && currentType === 'number') {\n    diagnostics.push({\n      severity: 'info',\n      message: `Coerced number ${value} to boolean at ${path}`,\n      strategy: 'schemaAlign',\n      path,\n    });\n    return Boolean(value);\n  }\n\n  return value;\n}\n","import type { Strategy, StrategyInput, StrategyOutput } from '../types.js';\n\n/**\n * Normalizes separators and whitespace issues\n *\n * Fixes:\n * - Missing commas between properties/items\n * - Extra commas\n * - Semicolons instead of commas or colons\n */\nexport const separatorNormalizer: Strategy = {\n  name: 'separatorNormalizer',\n  priority: 'optional',\n\n  async apply(input: StrategyInput): Promise<StrategyOutput> {\n    const { rawInput, value } = input;\n    const diagnostics: StrategyOutput['diagnostics'] = [];\n\n    // Only process if we don't have a valid value yet\n    if (value !== undefined) {\n      return { diagnostics: [] };\n    }\n\n    let fixed = rawInput;\n\n    // Fix semicolons used as commas in arrays/objects\n    const semicolonPattern = /;(\\s*[}\\]])/g;\n    if (semicolonPattern.test(fixed)) {\n      fixed = fixed.replace(/;(\\s*[}\\]])/g, '$1');\n      diagnostics.push({\n        severity: 'info',\n        message: 'Removed semicolons before closing brackets',\n        strategy: 'separatorNormalizer',\n      });\n    }\n\n    // Fix semicolons used as separators\n    const semicolonSepPattern = /;(\\s*\"[^\"]*\"\\s*:)/g;\n    if (semicolonSepPattern.test(fixed)) {\n      fixed = fixed.replace(/;(\\s*\"[^\"]*\"\\s*:)/g, ',$1');\n      diagnostics.push({\n        severity: 'info',\n        message: 'Replaced semicolons with commas',\n        strategy: 'separatorNormalizer',\n      });\n    }\n\n    // Fix missing commas between object properties (basic heuristic)\n    // Pattern: \"value\" followed by whitespace and then \"key\":\n    const missingCommaPattern = /([\"'\\d}\\]]\\s*)(\\s*\"[^\"]*\"\\s*:)/g;\n    const beforeFix = fixed;\n    fixed = fixed.replace(missingCommaPattern, (match, before, after) => {\n      // Don't add comma if there's already one or if it's at the start\n      if (before.trim().endsWith(',') || before.trim() === '') {\n        return match;\n      }\n      return `${before},${after}`;\n    });\n\n    if (fixed !== beforeFix) {\n      diagnostics.push({\n        severity: 'info',\n        message: 'Added missing commas between properties',\n        strategy: 'separatorNormalizer',\n      });\n    }\n\n    // Try to parse the fixed version\n    if (fixed !== rawInput) {\n      try {\n        const parsed = JSON.parse(fixed);\n        return {\n          rawInput: fixed,\n          value: parsed,\n          diagnostics,\n        };\n      } catch {\n        // Return the attempted fix even if it doesn't parse\n        return {\n          rawInput: fixed,\n          diagnostics,\n        };\n      }\n    }\n\n    return { diagnostics: [] };\n  },\n};\n","import type { Strategy, StrategyInput, StrategyOutput } from '../types.js';\n\n/**\n * Attempts to parse JSON with tolerant handling of common syntax errors\n *\n * Fixes:\n * - Single quotes to double quotes\n * - Unquoted keys\n * - Trailing commas\n * - Comments (both line and block style)\n */\nexport const tolerantParse: Strategy = {\n  name: 'tolerantParse',\n  priority: 'optional',\n\n  async apply(input: StrategyInput): Promise<StrategyOutput> {\n    const { rawInput } = input;\n    const diagnostics: StrategyOutput['diagnostics'] = [];\n\n    // Try standard JSON.parse first\n    try {\n      const value = JSON.parse(rawInput);\n      return { value, diagnostics: [] };\n    } catch {\n      // Continue with tolerant parsing\n    }\n\n    let fixed = rawInput;\n\n    // Remove comments\n    const commentPattern = /\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?\\*\\//g;\n    if (commentPattern.test(fixed)) {\n      fixed = fixed.replace(commentPattern, '');\n      diagnostics.push({\n        severity: 'info',\n        message: 'Removed comments from JSON',\n        strategy: 'tolerantParse',\n      });\n    }\n\n    // Fix single quotes to double quotes (simple approach)\n    if (fixed.includes(\"'\")) {\n      fixed = fixed.replace(/'/g, '\"');\n      diagnostics.push({\n        severity: 'info',\n        message: 'Replaced single quotes with double quotes',\n        strategy: 'tolerantParse',\n      });\n    }\n\n    // Fix unquoted keys (basic pattern)\n    const unquotedKeyPattern = /([{,]\\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*:/g;\n    if (unquotedKeyPattern.test(fixed)) {\n      fixed = fixed.replace(unquotedKeyPattern, '$1\"$2\":');\n      diagnostics.push({\n        severity: 'info',\n        message: 'Added quotes to unquoted keys',\n        strategy: 'tolerantParse',\n      });\n    }\n\n    // Remove trailing commas\n    const trailingCommaPattern = /,(\\s*[}\\]])/g;\n    if (trailingCommaPattern.test(fixed)) {\n      fixed = fixed.replace(trailingCommaPattern, '$1');\n      diagnostics.push({\n        severity: 'info',\n        message: 'Removed trailing commas',\n        strategy: 'tolerantParse',\n      });\n    }\n\n    // Try parsing the fixed version\n    try {\n      const value = JSON.parse(fixed);\n      return {\n        rawInput: fixed,\n        value,\n        diagnostics,\n      };\n    } catch (error) {\n      // If still can't parse, return what we have\n      diagnostics.push({\n        severity: 'warning',\n        message: `Tolerant parse attempted but still invalid: ${error instanceof Error ? error.message : 'unknown error'}`,\n        strategy: 'tolerantParse',\n      });\n      return {\n        rawInput: fixed !== rawInput ? fixed : undefined,\n        diagnostics,\n      };\n    }\n  },\n};\n","import { bracketAndQuoteFixer } from './strategies/bracket-and-quote-fixer.js';\nimport { extractJsonBlock } from './strategies/extract-json-block.js';\nimport { finalize } from './strategies/finalize.js';\nimport { sanitizers } from './strategies/sanitizers.js';\nimport { schemaAlign } from './strategies/schema-align.js';\nimport { separatorNormalizer } from './strategies/separator-normalizer.js';\nimport { tolerantParse } from './strategies/tolerant-parse.js';\nimport type {\n  Diagnostic,\n  Guard,\n  GuardResult,\n  RepairOptions,\n  Strategy,\n  StrategyInput,\n} from './types.js';\n\n/**\n * Default strategies in order of execution\n */\nexport const DEFAULT_STRATEGIES = [\n  'extractJsonBlock',\n  'tolerantParse',\n  'separatorNormalizer',\n  'bracketAndQuoteFixer',\n  'schemaAlign',\n  'sanitizers',\n  'finalize',\n];\n\n/**\n * Built-in strategy implementations\n */\nconst builtInStrategies: Record<string, Strategy> = {\n  extractJsonBlock,\n  tolerantParse,\n  separatorNormalizer,\n  bracketAndQuoteFixer,\n  schemaAlign,\n  sanitizers,\n  finalize,\n};\n\n/**\n * Guard implementation\n */\nclass GuardImpl implements Guard {\n  async repair<T = unknown>(rawInput: string, options: RepairOptions): Promise<GuardResult<T>> {\n    const { schema, defaultStrategies = DEFAULT_STRATEGIES, customStrategies = [] } = options;\n\n    // Build strategy execution list\n    const strategies: Strategy[] = [];\n\n    // Add selected default strategies\n    for (const name of defaultStrategies) {\n      const strategy = builtInStrategies[name];\n      if (!strategy) {\n        throw new Error(`Unknown default strategy: ${name}`);\n      }\n      strategies.push(strategy);\n    }\n\n    // Add custom strategies\n    strategies.push(...customStrategies);\n\n    // Execute strategy pipeline\n    const currentInput: StrategyInput = {\n      rawInput,\n      schema,\n    };\n\n    const allDiagnostics: Diagnostic[] = [];\n    let _totalEditDistance = 0;\n\n    for (const strategy of strategies) {\n      try {\n        // Early exit optimization: skip optional strategies if value is already valid\n        if (strategy.priority === 'optional' && currentInput.value !== undefined) {\n          const validationResult = schema.validate(currentInput.value);\n          if (validationResult.valid) {\n            // Skip without adding diagnostic (doesn't affect confidence)\n            continue;\n          }\n        }\n\n        const output = await strategy.apply(currentInput);\n\n        // Update current input for next strategy\n        if (output.rawInput !== undefined) {\n          currentInput.rawInput = output.rawInput;\n        }\n        if (output.value !== undefined) {\n          currentInput.value = output.value;\n        }\n\n        // Collect diagnostics\n        if (output.diagnostics) {\n          allDiagnostics.push(...output.diagnostics);\n        }\n\n        // Track edit distance\n        if (output.editDistanceDelta !== undefined) {\n          _totalEditDistance += output.editDistanceDelta;\n        }\n      } catch (error) {\n        allDiagnostics.push({\n          severity: 'error',\n          message: `Strategy \"${strategy.name}\" failed: ${error instanceof Error ? error.message : 'unknown error'}`,\n          strategy: strategy.name,\n        });\n      }\n    }\n\n    // Validate final value\n    const finalValue = currentInput.value;\n    const finalValidation =\n      finalValue !== undefined\n        ? schema.validate(finalValue)\n        : { valid: false, errors: ['No value produced'] };\n    const isValid = finalValidation.valid;\n\n    // If final validation passes, filter out any error diagnostics from intermediate steps\n    // (custom strategies may have fixed errors that were reported earlier)\n    const filteredDiagnostics = isValid\n      ? allDiagnostics.filter((d) => d.severity !== 'error')\n      : allDiagnostics;\n\n    const warningCount = filteredDiagnostics.filter((d) => d.severity === 'warning').length;\n    const infoCount = filteredDiagnostics.filter((d) => d.severity === 'info').length;\n\n    // Confidence calculation\n    let confidence = isValid ? 1.0 : 0.0;\n\n    if (isValid) {\n      // Reduce confidence based on number of repairs needed\n      confidence -= infoCount * 0.05; // Each repair reduces confidence by 5%\n      confidence -= warningCount * 0.1; // Each warning reduces by 10%\n      confidence = Math.max(0.1, confidence); // Minimum 10% if valid\n    }\n\n    // Create result\n    const result: GuardResult<T> = {\n      ok: isValid,\n      value: isValid ? (finalValue as T) : undefined,\n      json: isValid ? JSON.stringify(finalValue) : undefined,\n      diagnostics: filteredDiagnostics,\n      confidence,\n    };\n\n    return result;\n  }\n}\n\n/**\n * Create a new Guard instance\n */\nexport function createGuard(): Guard {\n  return new GuardImpl();\n}\n","import Ajv, { type JSONSchemaType, type ValidateFunction } from 'ajv';\nimport type { SchemaAdapter } from '../types.js';\n\n/**\n * Ajv-based schema adapter for JSON Schema validation\n */\nexport class AjvAdapter<T = unknown> implements SchemaAdapter {\n  private validator: ValidateFunction<T>;\n  private schema: JSONSchemaType<T> | Record<string, unknown>;\n\n  constructor(schema: JSONSchemaType<T> | Record<string, unknown>, ajv?: Ajv) {\n    this.schema = schema;\n    const ajvInstance =\n      ajv ||\n      new Ajv({\n        allErrors: true,\n        coerceTypes: false,\n        useDefaults: false,\n      });\n    this.validator = ajvInstance.compile(schema) as ValidateFunction<T>;\n  }\n\n  validate(value: unknown): { valid: boolean; errors?: string[] } {\n    const valid = this.validator(value);\n    if (valid) {\n      return { valid: true };\n    }\n    const errors = this.validator.errors?.map(\n      (err) => `${err.instancePath || '/'} ${err.message || 'validation failed'}`\n    ) || ['Unknown validation error'];\n    return { valid: false, errors };\n  }\n\n  getType(path: string): string | undefined {\n    const normalized = path.startsWith('/') ? path : `/${path}`;\n    const parts = normalized.split('/').filter(Boolean);\n\n    let current: any = this.schema;\n    for (const part of parts) {\n      if (current.properties?.[part]) {\n        current = current.properties[part];\n      } else if (current.items) {\n        current = current.items;\n      } else {\n        return undefined;\n      }\n    }\n\n    return current?.type as string | undefined;\n  }\n\n  getDefault(path: string): unknown {\n    const normalized = path.startsWith('/') ? path : `/${path}`;\n    const parts = normalized.split('/').filter(Boolean);\n\n    let current: any = this.schema;\n    for (const part of parts) {\n      if (current.properties?.[part]) {\n        current = current.properties[part];\n      } else {\n        return undefined;\n      }\n    }\n\n    return current?.default;\n  }\n\n  isRequired(path: string): boolean {\n    const parts = path.split('/').filter(Boolean);\n    if (parts.length === 0) return false;\n\n    const propertyName = parts[parts.length - 1];\n    const parentPath = parts.slice(0, -1);\n\n    let current: any = this.schema;\n    for (const part of parentPath) {\n      if (current.properties?.[part]) {\n        current = current.properties[part];\n      } else {\n        return false;\n      }\n    }\n\n    return Array.isArray(current?.required) && current.required.includes(propertyName);\n  }\n\n  getProperties(): string[] {\n    if (this.schema && typeof this.schema === 'object' && 'properties' in this.schema) {\n      return Object.keys(this.schema.properties || {});\n    }\n    return [];\n  }\n\n  allowsAdditionalProperties(): boolean {\n    if (this.schema && typeof this.schema === 'object' && 'additionalProperties' in this.schema) {\n      return this.schema.additionalProperties !== false;\n    }\n    return true; // Default JSON Schema behavior\n  }\n\n  getEnum(path: string): unknown[] | undefined {\n    const normalized = path.startsWith('/') ? path : `/${path}`;\n    const parts = normalized.split('/').filter(Boolean);\n\n    let current: any = this.schema;\n    for (const part of parts) {\n      if (current.properties?.[part]) {\n        current = current.properties[part];\n      } else {\n        return undefined;\n      }\n    }\n\n    return current?.enum as unknown[] | undefined;\n  }\n}\n\n/**\n * Factory function to create an Ajv adapter\n */\nexport function ajvAdapter() {\n  return {\n    fromJsonSchema<T = unknown>(\n      schema: JSONSchemaType<T> | Record<string, unknown>,\n      ajv?: Ajv\n    ): AjvAdapter<T> {\n      return new AjvAdapter<T>(schema, ajv);\n    },\n  };\n}\n","import type { ZodSchema } from 'zod';\nimport type { SchemaAdapter } from '../types.js';\n\n/**\n * Zod-based schema adapter for validation\n */\nexport class ZodAdapter<T = unknown> implements SchemaAdapter {\n  private schema: ZodSchema<T>;\n\n  constructor(schema: ZodSchema<T>) {\n    this.schema = schema;\n  }\n\n  validate(value: unknown): { valid: boolean; errors?: string[] } {\n    const result = this.schema.safeParse(value);\n    if (result.success) {\n      return { valid: true };\n    }\n    const errors = result.error.errors.map((err) => `${err.path.join('/') || '/'} ${err.message}`);\n    return { valid: false, errors };\n  }\n\n  getType(path: string): string | undefined {\n    const parts = path.split('/').filter(Boolean);\n    let current: any = this.schema;\n\n    for (const part of parts) {\n      // Unwrap ZodOptional, ZodNullable, etc.\n      while (current._def?.innerType) {\n        current = current._def.innerType;\n      }\n\n      if (current._def?.typeName === 'ZodObject') {\n        const shape = current._def.shape();\n        current = shape[part];\n        if (!current) return undefined;\n      } else if (current._def?.typeName === 'ZodArray') {\n        current = current._def.type;\n      } else {\n        return undefined;\n      }\n    }\n\n    // Unwrap final type\n    while (current?._def?.innerType) {\n      current = current._def.innerType;\n    }\n\n    const typeName = current?._def?.typeName;\n    if (!typeName) return undefined;\n\n    // Map Zod types to JSON Schema types\n    const typeMap: Record<string, string> = {\n      ZodString: 'string',\n      ZodNumber: 'number',\n      ZodBoolean: 'boolean',\n      ZodArray: 'array',\n      ZodObject: 'object',\n      ZodNull: 'null',\n    };\n\n    return typeMap[typeName];\n  }\n\n  getDefault(path: string): unknown {\n    const parts = path.split('/').filter(Boolean);\n    let current: any = this.schema;\n\n    for (const part of parts) {\n      while (current._def?.innerType) {\n        current = current._def.innerType;\n      }\n\n      if (current._def?.typeName === 'ZodObject') {\n        const shape = current._def.shape();\n        current = shape[part];\n        if (!current) return undefined;\n      } else {\n        return undefined;\n      }\n    }\n\n    // Check for default\n    while (current?._def) {\n      if (current._def.defaultValue !== undefined) {\n        return typeof current._def.defaultValue === 'function'\n          ? current._def.defaultValue()\n          : current._def.defaultValue;\n      }\n      if (current._def.innerType) {\n        current = current._def.innerType;\n      } else {\n        break;\n      }\n    }\n\n    return undefined;\n  }\n\n  isRequired(path: string): boolean {\n    const parts = path.split('/').filter(Boolean);\n    if (parts.length === 0) return false;\n\n    const propertyName = parts[parts.length - 1];\n    const parentPath = parts.slice(0, -1);\n\n    let current: any = this.schema;\n    for (const part of parentPath) {\n      while (current._def?.innerType) {\n        current = current._def.innerType;\n      }\n\n      if (current._def?.typeName === 'ZodObject') {\n        const shape = current._def.shape();\n        current = shape[part];\n        if (!current) return false;\n      } else {\n        return false;\n      }\n    }\n\n    // Get the parent object\n    while (current._def?.innerType) {\n      current = current._def.innerType;\n    }\n\n    if (current._def?.typeName === 'ZodObject') {\n      const shape = current._def.shape();\n      const field = shape[propertyName];\n\n      // A field is required if it's not optional and not nullable\n      return field && !field.isOptional() && !field.isNullable();\n    }\n\n    return false;\n  }\n\n  getProperties(): string[] {\n    let current: any = this.schema;\n\n    while (current._def?.innerType) {\n      current = current._def.innerType;\n    }\n\n    if (current._def?.typeName === 'ZodObject') {\n      const shape = current._def.shape();\n      return Object.keys(shape);\n    }\n\n    return [];\n  }\n\n  allowsAdditionalProperties(): boolean {\n    let current: any = this.schema;\n\n    while (current._def?.innerType) {\n      current = current._def.innerType;\n    }\n\n    if (current._def?.typeName === 'ZodObject') {\n      // Zod objects are strict by default (no additional properties)\n      // unless .passthrough() or .catchall() is used\n      return (\n        current._def.unknownKeys === 'passthrough' ||\n        current._def.catchall?._def?.typeName !== 'ZodNever'\n      );\n    }\n\n    return false;\n  }\n\n  getEnum(path: string): unknown[] | undefined {\n    const parts = path.split('/').filter(Boolean);\n    let current: any = this.schema;\n\n    for (const part of parts) {\n      while (current._def?.innerType) {\n        current = current._def.innerType;\n      }\n\n      if (current._def?.typeName === 'ZodObject') {\n        const shape = current._def.shape();\n        current = shape[part];\n        if (!current) return undefined;\n      } else {\n        return undefined;\n      }\n    }\n\n    while (current?._def?.innerType) {\n      current = current._def.innerType;\n    }\n\n    if (current?._def?.typeName === 'ZodEnum') {\n      return current._def.values as unknown[];\n    }\n\n    if (current?._def?.typeName === 'ZodLiteral') {\n      return [current._def.value];\n    }\n\n    return undefined;\n  }\n}\n\n/**\n * Factory function to create a Zod adapter\n */\nexport function zodAdapter() {\n  return {\n    fromZodSchema<T = unknown>(schema: ZodSchema<T>): ZodAdapter<T> {\n      return new ZodAdapter<T>(schema);\n    },\n  };\n}\n"]}