import { toggleSidebar, dom, setRpgEnabled } from './state.js'; import { initSessions, createNewChat } from './sessions.js'; import { loadPersonas, initPersonaModals } from './personas.js'; import { sendMessage, clearHistory } from './chat.js'; document.getElementById('sidebarToggle').addEventListener('click', () => { const open = toggleSidebar(); document.getElementById('sidebar').classList.toggle('collapsed', !open); }); document.getElementById('newChatBtn').addEventListener('click', createNewChat); dom.inputEl.addEventListener('input', () => { dom.inputEl.style.height = 'auto'; dom.inputEl.style.height = dom.inputEl.scrollHeight + 'px'; }); dom.inputEl.addEventListener('keydown', (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMessage(); } }); dom.sendBtn.addEventListener('click', sendMessage); dom.clearBtn.addEventListener('click', clearHistory); dom.rpgToggle?.addEventListener('change', async () => { setRpgEnabled(dom.rpgToggle.checked); const { sessionId } = await import('./state.js'); if (!sessionId) return; await fetch(`/sessions/${sessionId}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ rpg_enabled: dom.rpgToggle.checked }), }); // Debug: immediately bootstrap plot arc and show it in chat if (dom.rpgToggle.checked) { const { currentPersona } = await import('./state.js'); const res = await fetch('/chat/rpg/bootstrap', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ session_id: sessionId, persona_id: currentPersona }), }); if (res.ok) { const data = await res.json(); if (data.plot_arc) { const { addMessage } = await import('./chat.js'); const title = data.plot_arc.title || 'PlotArc'; const phase = data.plot_arc.phase || ''; const hint = data.plot_arc.next_beat_hint || ''; addMessage('assistant', `--- PlotArc ---\n${title}\nphase: ${phase}\nnext: ${hint}\n---`); } } } }); dom.systemBlobToggle?.addEventListener('click', () => { const hidden = dom.systemBlobContent.classList.toggle('hidden'); dom.systemBlobToggle.textContent = hidden ? 'Показать' : 'Скрыть'; }); initPersonaModals(); await initSessions(); loadPersonas();