diff --git a/wevia-agent.html b/wevia-agent.html index 2d6a82146..432501a77 100644 --- a/wevia-agent.html +++ b/wevia-agent.html @@ -322,6 +322,26 @@ async function executeTask() { addEvent('summary', data, {provider: data.provider}); } else if (eventType === 'done') { addEvent('done', data); + } else if (eventType === 'consensus_query') { + pendingThinking = addEvent('thinking', '🗳 Vote ' + data.model + '...'); + } else if (eventType === 'consensus_response') { + const voteIcon = data.vote === 'approve' ? '✅' : (data.vote === 'reject' ? '❌' : (data.vote === 'modify' ? '✏️' : '⚠️')); + const ev = document.createElement('div'); + ev.className = 'event plan'; + ev.innerHTML = '
' + voteIcon + 'Vote ' + data.model + '' + (data.provider || '?') + 'conf ' + (data.confidence||'?') + '/10
' + + '
' + data.vote.toUpperCase() + '
' + + (data.rationale ? '
' + escapeHtml(data.rationale) + '
' : '') + + (data.concerns && data.concerns.length ? '
⚠ ' + data.concerns.map(escapeHtml).join('
⚠ ') + '
' : '') + + (data.suggested_changes && data.suggested_changes.length ? '
↻ ' + data.suggested_changes.map(escapeHtml).join('
↻ ') + '
' : ''); + transcript.appendChild(ev); + transcript.scrollTop = transcript.scrollHeight; + } else if (eventType === 'consensus_decision') { + const decisionIcon = data.decision === 'approved' ? '✅' : (data.decision === 'rejected_by_majority' ? '❌' : (data.decision === 'modify_recommended' ? '✏️' : '⚠️')); + addEvent('summary', {content: decisionIcon + ' DÉCISION CONSENSUS: ' + data.decision.toUpperCase() + '\n\nVotes: approve=' + data.tally.approve + ' · reject=' + data.tally.reject + ' · modify=' + data.tally.modify + ' / ' + data.tally.total + '\n\n' + (data.concerns_aggregated.length ? 'Concerns:\n• ' + data.concerns_aggregated.join('\n• ') + '\n\n' : '') + (data.suggestions_aggregated.length ? 'Suggestions intégrées:\n• ' + data.suggestions_aggregated.join('\n• ') : '')}); + } else if (eventType === 'plan_revised') { + addEvent('plan', data, {provider: 'WEVIA-revised'}); + } else if (eventType === 'aborted') { + addEvent('error', {msg: '🛑 ABORTED: ' + data.reason + '\n\nConcerns: ' + (data.concerns||[]).join(' · ')}); } else if (eventType === 'error') { addEvent('error', data); }