AUDIT / src /lib /agentLoop /debateBudget.ts
Arypulka98's picture
feat(audit): deploy full backend cluster node (part 3)
95eb75a verified
Raw
History Blame Contribute Delete
1.62 kB
/**
* 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;
}