// Combiner Agent - 整合多个 Agent 的执行结果
import { BaseAgent } from '../base-agent';
import type { AgentTask } from '../types';

const COMBINER_SYSTEM_PROMPT = `你是一个结果整合专家。你的职责是将多个执行步骤的结果整合为一份完整、结构化的报告。

要求：
1. 综合分析所有步骤的执行结果
2. 提取关键信息
3. 生成简洁清晰的最终报告
4. 如果某些步骤失败，说明缺失的信息
5. 输出格式清晰，适合通过 IM 发送给用户`;

export class CombinerAgent extends BaseAgent {
  protected getCapabilities(): string[] {
    return ['result_combination', 'report_generation', 'data_synthesis'];
  }

  protected async run(task: AgentTask): Promise<any> {
    const results = task.params.results || [];
    const goal = task.params.goal || task.description;

    this.log.info(`Combining ${results.length} results for: ${goal}`);

    const prompt = `原始目标: ${goal}

各步骤执行结果:
${results.map((r: any, i: number) => `
--- 步骤 ${i + 1} ---
描述: ${r.description || '未知'}
状态: ${r.success ? '成功' : '失败'}
结果: ${JSON.stringify(r.data || r.error, null, 2)}
`).join('\n')}

请整合上述结果，生成一份完整的报告。输出应该清晰、有条理，适合通过即时通讯发送给用户。`;

    const report = await this.ai.ask(prompt, COMBINER_SYSTEM_PROMPT);
    return { report, stepsCount: results.length, successCount: results.filter((r: any) => r.success).length };
  }
}
