Spaces:
Running
Running
| /** | |
| * debateBudget.ts — ORCH-4: Coordinatore budget debate (anti-doppia attivazione) | |
| * | |
| * Problema identificato nell'analisi pro-level: | |
| * debateBlock (pre-loop, llama-3.3-70b, 40s max, 2 round) + | |
| * dualAgentDebate (AgentRuntime, post-loop, quality<7) | |
| * → possono entrambi attivarsi per lo stesso task nello stesso turno. | |
| * Risultato: fino a 4 LLM debate calls × 70B = 80s di overhead + burst Groq 429. | |
| * | |
| * Soluzione: flag module-level con reset esplicito a inizio di ogni run agentLoop. | |
| * - resetDebateBudget(): chiamato da agentLoop all'inizio del turn (garantisce isolamento) | |
| * - markDebateUsed(): chiamato dopo pre-loop debate riuscito (consensus != null) | |
| * - isDebateUsed(): controllato da AgentRuntime prima del post-loop debate | |
| * | |
| * Design: | |
| * - Zero dipendenze — modulo standalone | |
| * - Browser single-thread: nessun race condition possibile | |
| * - Fail-safe: isDebateUsed() ritorna false se modulo non inizializzato → fallback sicuro | |
| * | |
| * @module debateBudget | |
| */ | |
| let _debateUsed = false; | |
| /** Reset all'inizio di ogni run agentLoop — isola turni conversazionali. */ | |
| export function resetDebateBudget(): void { | |
| _debateUsed = false; | |
| } | |
| /** | |
| * Segnala che il pre-loop debate ha prodotto consensus. | |
| * Chiamato da agentLoop.ts dopo runDebateIfNeeded() con risultato non-null. | |
| */ | |
| export function markDebateUsed(): void { | |
| _debateUsed = true; | |
| } | |
| /** | |
| * Verifica se il debate è già stato consumato in questo turno. | |
| * AgentRuntime lo chiama prima di runDualAgentDebate — se true, skip. | |
| */ | |
| export function isDebateUsed(): boolean { | |
| return _debateUsed; | |
| } | |