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 = '
' +
+ '' + 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);
}