"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PlannerAgent = void 0;
class PlannerAgent {
    brain;
    constructor(brain) {
        this.brain = brain;
    }
    async plan(input, recentHistory) {
        const prompt = `
Você é o Planner do OpenLife.

Objetivo do usuário:
${input}

Histórico recente:
${recentHistory}

Responda em JSON com:
- normalizedGoal
- plan (array curto, 3 a 6 passos)
- successCriteria (array curto)
- executionMode ('single' ou 'review_loop')
`;
        const raw = await this.brain.think('Planeje a execução de forma objetiva e estruturada.', prompt);
        try {
            const jsonStart = raw.indexOf('{');
            const parsed = JSON.parse(jsonStart >= 0 ? raw.slice(jsonStart) : raw);
            return {
                normalizedGoal: parsed.normalizedGoal || input,
                plan: Array.isArray(parsed.plan) ? parsed.plan : ['Executar a tarefa principal'],
                successCriteria: Array.isArray(parsed.successCriteria) ? parsed.successCriteria : ['Entregar resultado útil e coerente'],
                executionMode: parsed.executionMode === 'single' ? 'single' : 'review_loop'
            };
        }
        catch {
            return {
                normalizedGoal: input,
                plan: ['Entender objetivo', 'Executar tarefa principal', 'Validar resultado', 'Entregar síntese final'],
                successCriteria: ['Resultado útil', 'Sem erro crítico', 'Resposta coerente'],
                executionMode: 'review_loop'
            };
        }
    }
}
exports.PlannerAgent = PlannerAgent;
