"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SynthesizerAgent = void 0;
class SynthesizerAgent {
    brain;
    constructor(brain) {
        this.brain = brain;
    }
    async synthesize(state, lastOutput, review) {
        const governanceRules = (state.governanceEvents || []).map((event) => `${event.type}: ${event.summary}`).join('\n- ');
        const artifacts = (state.artifacts || []).join('\n- ');
        const isResearch = state.missionScope === 'research';
        const prompt = isResearch ? `
Você é o Synthesizer do OpenLife.

O usuário pediu uma resposta de pesquisa, não um relatório interno de execução.

Pergunta do usuário:
${state.goal}

Material coletado pelos agentes:
${lastOutput}

Review final: approved=${review.approved}, score=${review.score}, critique=${review.critique}

Responda em português natural, direto e útil.
- NÃO diga "status da execução", "mission state", "artefato", "orquestração multiagente" ou caminhos internos.
- Entregue a resposta final para o usuário.
- Se houver incerteza sobre uma função, diga explicitamente "não encontrei evidência oficial suficiente".
- Para cada função mencionada, explique: significado, uso prático, e nível de confiança.
` : `
Você é o Synthesizer do OpenLife.

Objetivo do serviço:
${state.goal}

Plano executado:
${state.plan.join('\n- ')}

Definição de serviço completo (obrigatória):
- Provisionamento concluído
- Integração entre módulos validada
- Fluxo ponta-a-ponta testado
- Observabilidade mínima registrada
- Operação real documentada

Regras de segurança/governança aplicadas nesta missão:
- ${governanceRules || 'baseline-safe-scope: missão autorizada sem bloqueios críticos'}

Evidências coletadas:
- Critérios atendidos: ${state.successCriteria.join('; ')}
- Artefatos: ${artifacts || 'nenhum artefato explícito'}
- Último output útil: ${lastOutput}
- Review final: approved=${review.approved}, score=${review.score}, critique=${review.critique}

Responda em português EXATAMENTE neste formato:
Objetivo do serviço: ...
Execução ponta a ponta: ...
Regras de segurança aplicadas: ...
Evidências: ...
Operação recomendada: ...
Status final: ...
`;
        return this.brain.think('Sintetize o resultado final como serviço completo com evidências e regras de segurança.', prompt);
    }
}
exports.SynthesizerAgent = SynthesizerAgent;
