// engine/llm-security/eu-ai-act-checker.ts — SPEC-045
// EU AI Act compliance detection and checklist generation.
/**
 * Generate EU AI Act compliance checklist for high-risk systems.
 * Covers obligations from the EU AI Act 2024 for Annex III high-risk systems.
 */
function buildHighRiskChecklist() {
    return [
        'El sistema tiene documentación de explicabilidad — el usuario puede obtener una explicación comprensible de por qué el sistema tomó una decisión que le afecta (EU AI Act Art. 13)',
        'Existe mecanismo de human oversight — un operador humano puede revisar, corregir y revertir cualquier decisión automatizada del sistema (EU AI Act Art. 14)',
        'Los logs de decisiones se retienen durante 10 años para auditoría regulatoria, incluyendo los inputs, outputs y versión del modelo usado en cada decisión (EU AI Act Art. 12)',
        'El sistema está registrado en la EU AI Act database antes del despliegue (EU AI Act Art. 49)',
        'Se ha realizado evaluación de conformidad antes del despliegue (EU AI Act Art. 43)',
        'El proveedor tiene sistema de gestión de calidad documentado (EU AI Act Art. 17)',
    ];
}
/**
 * Generate EU AI Act compliance checklist for GDPR Art. 22 automated decisions.
 */
function buildGdprAutomatedDecisionChecklist() {
    return [
        'Se implementa GDPR Art. 22: el usuario tiene derecho a no ser sujeto de decisión automatizada que le afecte significativamente; se ofrece intervención humana cuando se solicita',
        'Se documenta la lógica de toma de decisiones automatizada en el privacy policy (GDPR Art. 22.2c + Art. 13/14)',
    ];
}
/**
 * Generate EU AI Act assessment and checklist from LLM detection.
 */
export function generateEuAiActAssessment(detection) {
    const riskLevel = detection.euAiActRisk;
    const detectedDomains = detection.detectedHighRiskDomains;
    let complianceChecklist = [];
    if (riskLevel === 'unacceptable') {
        complianceChecklist = [
            'ALERTA: Sistema potencialmente prohibido bajo EU AI Act — el uso de IA para scoring social, manipulación subliminal o reconocimiento biométrico masivo no supervisado está prohibido (EU AI Act Art. 5)',
            'Revisar con asesoría legal antes de cualquier despliegue en la UE',
        ];
    }
    else if (riskLevel === 'high-risk') {
        complianceChecklist = [...buildHighRiskChecklist(), ...buildGdprAutomatedDecisionChecklist()];
    }
    else if (riskLevel === 'limited-risk') {
        complianceChecklist = [
            'Transparencia obligatoria: los usuarios deben ser informados de que interactúan con un sistema de IA (EU AI Act Art. 52)',
            'Si el sistema genera contenido deepfake, debe etiquetarse como generado por IA (EU AI Act Art. 52.3)',
        ];
    }
    return {
        riskLevel,
        detectedDomains,
        complianceChecklist,
    };
}
/**
 * Format EU AI Act assessment as HU.md lines.
 */
export function formatEuAiActAsLines(assessment) {
    if (assessment.complianceChecklist.length === 0) {
        return [];
    }
    const riskLabel = {
        unacceptable: 'PROHIBIDO',
        'high-risk': 'Alto Riesgo',
        'limited-risk': 'Riesgo Limitado',
        'minimal-risk': 'Riesgo Mínimo',
    };
    const lines = [
        '',
        '## EU AI Act Compliance',
        '',
        `**Nivel de riesgo detectado:** ${riskLabel[assessment.riskLevel] ?? assessment.riskLevel}`,
    ];
    if (assessment.detectedDomains.length > 0) {
        lines.push(`**Dominios detectados:** ${assessment.detectedDomains.join(', ')}`);
    }
    lines.push('');
    for (const item of assessment.complianceChecklist) {
        lines.push(`- [ ] ${item}`);
    }
    lines.push('');
    return lines;
}
/**
 * Generate the EU AI Act finding for audit output (critical level).
 */
export function generateEuAiActAuditFinding(detection) {
    if (!detection.isLlmProject) {
        return null;
    }
    if (detection.euAiActRisk !== 'high-risk' && detection.euAiActRisk !== 'unacceptable') {
        return null;
    }
    const domains = detection.detectedHighRiskDomains.length > 0
        ? `Dominios: ${detection.detectedHighRiskDomains.join(', ')}.`
        : '';
    return `[CRITICAL] Sistema potencialmente high-risk bajo EU AI Act — requiere conformidad. ${domains} Revisar obligaciones del Annex III antes del despliegue en la UE.`;
}
//# sourceMappingURL=eu-ai-act-checker.js.map