import { YAMLMap } from 'yaml';
import { registrarDetectorGithubActions } from './analyst-github-actions.js';
registrarDetectorGithubActions({
    nome: 'security-hardening',
    descricao: 'Regras adicionais de segurança para workflows',
    severidade: 'alta',
    testar: (workflow) => {
        const problemas = [];
        const wf = workflow;
        if (!wf || !wf.jobs)
            return problemas;
        for (const [jobId, job] of Object.entries(wf.jobs)) {
            if (!job.permissions && !wf.permissions) {
                problemas.push({
                    tipo: 'security-hardening',
                    descricao: `Job '${jobId}' não define permissões explícitas (usa default GITHUB_TOKEN)`,
                    severidade: 'media',
                    linha: 1,
                    sugestao: 'Adicionar campo permissions: ao job ou ao workflow para seguir o princípio do menor privilégio',
                });
            }
        }
        return problemas;
    },
    corrigir: (doc) => {
        const jobs = doc.get('jobs');
        if (!jobs || !(jobs instanceof YAMLMap))
            return;
        jobs.items.forEach((pair) => {
            const job = pair.value;
            if (job instanceof YAMLMap && !job.has('permissions') && !doc.has('permissions')) {
                job.set('permissions', { contents: 'read' });
            }
        });
    }
});
//# sourceMappingURL=analyst-github-actions-security-hardening.js.map