import type { AgentTurnSummary } from '../types'; // ==================== Peer Context ==================== /** * Build a context section summarizing what other agents said this round. * Returns empty string if no agents have spoken yet. */ export function buildPeerContextSection( agentResponses: AgentTurnSummary[] | undefined, currentAgentName: string, ): string { if (!agentResponses || agentResponses.length === 0) return ''; // Filter out self (defensive — director shouldn't dispatch same agent twice) const peers = agentResponses.filter((r) => r.agentName !== currentAgentName); if (peers.length === 0) return ''; const peerLines = peers.map((r) => `- ${r.agentName}: "${r.contentPreview}"`).join('\n'); return ` # This Round's Context (CRITICAL — READ BEFORE RESPONDING) The following agents have already spoken in this discussion round: ${peerLines} You are ${currentAgentName}, responding AFTER the agents above. You MUST: 1. NOT repeat greetings or introductions — they have already been made 2. NOT restate what previous speakers already explained 3. Add NEW value from YOUR unique perspective as ${currentAgentName} 4. Build on, question, or extend what was said — do not echo it 5. If you agree with a previous point, say so briefly and then ADD something new `; }