"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArbitrationAgent = void 0;
class ArbitrationAgent {
    brain;
    constructor(brain) {
        this.brain = brain;
    }
    async arbitrate(goal, branches) {
        const prompt = `
Você é o Arbitration Agent do OpenLife.

Objetivo:
${goal}

Branches paralelos:
${branches.map((b, i) => `## Branch ${i + 1}\n${b}`).join('\n\n')}

Responda em JSON com:
- selectedIndex (0-based)
- rationale
- synthesis
`;
        const raw = await this.brain.think('Escolha o melhor branch e produza uma síntese.', prompt);
        try {
            const jsonStart = raw.indexOf('{');
            const parsed = JSON.parse(jsonStart >= 0 ? raw.slice(jsonStart) : raw);
            return {
                selectedIndex: typeof parsed.selectedIndex === 'number' ? parsed.selectedIndex : 0,
                rationale: parsed.rationale || 'Branch escolhido por melhor alinhamento.',
                synthesis: parsed.synthesis || branches[0] || ''
            };
        }
        catch {
            return {
                selectedIndex: 0,
                rationale: 'Fallback de arbitragem para o primeiro branch.',
                synthesis: branches[0] || ''
            };
        }
    }
}
exports.ArbitrationAgent = ArbitrationAgent;
