Update ConnectAI codebase

This commit is contained in:
g1nation
2026-05-18 08:15:01 +09:00
parent 88664c7c6e
commit 86cacaeb03
38 changed files with 1043 additions and 99 deletions
+36
View File
@@ -1011,6 +1011,42 @@
});
break;
}
case 'devilRebuttal': {
// Devil Agent (도현) 카드. main assistant 답변 직후 chat 하단에 한 장 추가.
// 사용자가 '재반박' 누르면 그 텍스트가 다음 user prompt 로 가서 main turn 한 번 더 돌고,
// 재반박-입장 hint 가 prompt 에 prepend 됨.
const v = msg.value || {};
const chatEl = document.getElementById('chat');
if (!chatEl) break;
const card = document.createElement('div');
card.className = 'devil-rebuttal-card';
const persona = String(v.persona || '도현');
const text = String(v.text || '');
card.innerHTML = `
<div class="devil-rebuttal-head">🎭 <strong>${escAttr(persona)}</strong>이(가) 반박합니다</div>
<div class="devil-rebuttal-body"></div>
<div class="devil-rebuttal-actions">
<button class="devil-reply">재반박</button>
<button class="devil-dismiss ghost">넘기기</button>
</div>`;
// body 는 textContent 로 안전하게.
card.querySelector('.devil-rebuttal-body').textContent = text;
chatEl.appendChild(card);
chatEl.scrollTop = chatEl.scrollHeight;
card.querySelector('.devil-dismiss').addEventListener('click', () => card.remove());
card.querySelector('.devil-reply').addEventListener('click', () => {
// 입력창에 prefix 채워서 사용자가 자기 반박 입력하게.
const input = document.getElementById('input');
if (input) {
input.value = `[${persona}의 반박에 답변] `;
input.focus();
// 커서 끝으로.
try { input.setSelectionRange(input.value.length, input.value.length); } catch {}
}
card.remove();
});
break;
}
case 'companyAlignmentCard': {
// Intent Alignment 카드. kind에 따라 4가지 모드:
// - 'auto-proceed' : confidence high → 자동 진행 안내(읽기 전용)