import { PlannerAgent, ResearcherAgent, WriterAgent } from './factory'; import { AgentEngine, PipelineStage } from '../lib/engine'; export class AgentWorkflowManager { /** * 리팩토링된 고성능 에이전트 엔진을 통해 워크플로우를 실행합니다. */ public static async runStrictWorkflow( prompt: string, modelName: string, brainContext: string, signal: AbortSignal, onProgress: (step: string, message: string) => void ): Promise { const planner = new PlannerAgent(modelName); const researcher = new ResearcherAgent(modelName); const writer = new WriterAgent(modelName); const engine = new AgentEngine(planner, researcher, writer); const missionId = `mission_${Date.now()}`; try { return await engine.runMission( missionId, prompt, brainContext, signal, (stage: PipelineStage, message: string) => { onProgress(this.mapStageToUI(stage), message); } ); } catch (error: any) { if (error.name === 'AbortError' || error.message.includes('cancelled')) { throw error; } throw new Error(`[Workflow Manager] ${error.message}`); } } private static mapStageToUI(stage: PipelineStage): string { const maps: Record = { idle: '대기', planner: 'Planner', researcher: 'Researcher', writer: 'Writer', completed: '완료', error: '오류' }; return maps[stage] || '진행 중'; } }