본문으로 건너뛰기
LVIS AI

Host · Chat

메시지 큐 & TODO 패널

컴포저 바로 위에 쌓이는 두 개의 패널 — SessionTodoPanel (세션 TODO) 과 MessageQueuePanel (대기 중인 외부 신호). 둘 다 ChatComposerDock 이 렌더하고, 담을 항목이 없으면 아무것도 그리지 않습니다.

ChatComposerDock 이 렌더
MessageQueuePanel + SessionTodoPanel
비어 있으면 표시 안 함
메시지 큐와 TODO 리스트가 채팅 본문 위에 떠 있는 상태

MessageQueuePanel

외부 신호 (Outlook 새 메일, meeting 종료 등) 가 들어오면 ChatView 본문을 막지 않고 패널에 카드 형태로 쌓입니다. 구현: src/ui/renderer/components/MessageQueuePanel.tsx. 사용자가 카드를 클릭하면 채팅 본문에 ask-user question card 또는 도구 호출로 전환.

SessionTodoPanel

세션 단위 TODO. 사용자가 직접 추가한 항목과 에이전트가 컨텍스트에서 만든 항목이 같은 리스트. 구현: src/ui/renderer/components/SessionTodoPanel.tsx. 각 항목은 출처 라벨이 함께 표시.

신호가 패널에 닿기까지

  1. 플러그인 (예: ms-graph) 이 hostApi.emitEvent('email.new', payload) 호출.
  2. 구독 중인 work-assistant 가 onEvent('email.new', …) 에서 detector 평가.
  3. detector 가 surface 결정 시 hostApi.triggerConversation({ …spec }) 호출.
  4. host UI가 MessageQueuePanel 또는 카드로 노출.
  5. 모든 흐름 → ~/.lvis/audit/<YYYY-MM-DD>.jsonl 한 줄 JSONL append.
enqueueMessage 같은 API는 없다
SDK 표면에 hostApi.enqueueMessage 가 존재하지 않습니다. 패널에 항목을 넣는 표준 경로는 이벤트 emit → host UI 가 감지 → 렌더 또는 triggerConversation 입니다.