fixed time out aria-core
This commit is contained in:
@@ -201,6 +201,9 @@
|
||||
<button class="btn secondary" onclick="toggleChatFullscreen()" id="btn-chat-fs" style="padding:4px 10px;font-size:11px;">Vollbild</button>
|
||||
</div>
|
||||
<div class="chat-box" id="chat-box"></div>
|
||||
<div id="thinking-indicator" style="display:none;padding:6px 10px;font-size:12px;color:#FFD60A;background:#1E1E2E;border-radius:0 0 6px 6px;margin-top:-8px;margin-bottom:8px;">
|
||||
<span style="animation:pulse 1s infinite;">💭</span> <span id="thinking-text">ARIA denkt...</span>
|
||||
</div>
|
||||
<div class="input-row">
|
||||
<input type="text" id="chat-input" placeholder="Nachricht an ARIA...">
|
||||
<button class="btn" id="btn-gw" onclick="testGateway()">Gateway senden</button>
|
||||
@@ -216,6 +219,9 @@
|
||||
<button class="btn secondary" onclick="toggleChatFullscreen()" style="padding:6px 14px;">Schliessen</button>
|
||||
</div>
|
||||
<div id="chat-box-fs" class="chat-box" style="flex:1;max-height:none;min-height:0;overflow-y:auto;"></div>
|
||||
<div id="thinking-indicator-fs" style="display:none;padding:6px 10px;font-size:12px;color:#FFD60A;background:#1E1E2E;border-radius:6px;margin-top:4px;">
|
||||
<span style="animation:pulse 1s infinite;">💭</span> <span id="thinking-text-fs">ARIA denkt...</span>
|
||||
</div>
|
||||
<div class="input-row" style="margin-top:8px;">
|
||||
<input type="text" id="chat-input-fs" placeholder="Nachricht an ARIA..." onkeydown="if(event.key==='Enter'){testRVSFS();event.preventDefault();}">
|
||||
<button class="btn" onclick="testGatewayFS()">Gateway senden</button>
|
||||
@@ -507,6 +513,11 @@
|
||||
if (msg.type === 'state') { updateState(msg.state); return; }
|
||||
if (msg.type === 'log') { addLog(msg.entry.level, msg.entry.source, msg.entry.message, msg.entry.ts); return; }
|
||||
|
||||
if (msg.type === 'agent_activity') {
|
||||
updateThinkingIndicator(msg);
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg.type === 'chat_final') {
|
||||
addChat('received', msg.text, 'chat:final');
|
||||
return;
|
||||
@@ -883,6 +894,10 @@
|
||||
return `<a href="${match}" target="_blank">${match}</a><img src="${match}" class="chat-media" onclick="openLightbox('image','${match}')" onerror="this.style.display='none'">`;
|
||||
});
|
||||
const html = `${linked}<div class="meta">${escapeHtml(meta)} — ${new Date().toLocaleTimeString('de-DE')}</div>`;
|
||||
|
||||
// Thinking-Indikator ausblenden bei neuer Nachricht
|
||||
updateThinkingIndicator({ activity: 'idle' });
|
||||
|
||||
// In beide Chat-Boxen schreiben (normal + Vollbild)
|
||||
for (const box of [chatBox, document.getElementById('chat-box-fs')]) {
|
||||
if (!box) continue;
|
||||
@@ -930,6 +945,52 @@
|
||||
if (e.key === 'Escape' && chatFullscreen) toggleChatFullscreen();
|
||||
});
|
||||
|
||||
// ── Thinking-Indikator ─────────────────────────────
|
||||
let thinkingTimeout = null;
|
||||
const TOOL_LABELS = {
|
||||
'Bash': '\uD83D\uDDA5\uFE0F Shell-Befehl',
|
||||
'WebFetch': '\uD83C\uDF10 Webseite abrufen',
|
||||
'WebSearch': '\uD83D\uDD0D Suche',
|
||||
'Read': '\uD83D\uDCC4 Datei lesen',
|
||||
'Write': '\u270D\uFE0F Datei schreiben',
|
||||
'Edit': '\u270D\uFE0F Datei bearbeiten',
|
||||
'Grep': '\uD83D\uDD0D Code durchsuchen',
|
||||
'Glob': '\uD83D\uDCC1 Dateien suchen',
|
||||
'Agent': '\uD83E\uDD16 Sub-Agent',
|
||||
};
|
||||
function updateThinkingIndicator(msg) {
|
||||
const indicators = [
|
||||
document.getElementById('thinking-indicator'),
|
||||
document.getElementById('thinking-indicator-fs'),
|
||||
];
|
||||
const texts = [
|
||||
document.getElementById('thinking-text'),
|
||||
document.getElementById('thinking-text-fs'),
|
||||
];
|
||||
|
||||
if (msg.activity === 'idle') {
|
||||
indicators.forEach(el => { if (el) el.style.display = 'none'; });
|
||||
if (thinkingTimeout) { clearTimeout(thinkingTimeout); thinkingTimeout = null; }
|
||||
return;
|
||||
}
|
||||
|
||||
let label = 'ARIA denkt...';
|
||||
if (msg.activity === 'tool' && msg.tool) {
|
||||
label = TOOL_LABELS[msg.tool] || `\uD83D\uDD27 ${msg.tool}`;
|
||||
} else if (msg.activity === 'assistant') {
|
||||
label = 'ARIA schreibt...';
|
||||
}
|
||||
|
||||
indicators.forEach(el => { if (el) el.style.display = 'block'; });
|
||||
texts.forEach(el => { if (el) el.textContent = label; });
|
||||
|
||||
// Auto-Hide nach 2min (falls idle Event verpasst wird — ARIA arbeitet max 15min)
|
||||
if (thinkingTimeout) clearTimeout(thinkingTimeout);
|
||||
thinkingTimeout = setTimeout(() => {
|
||||
indicators.forEach(el => { if (el) el.style.display = 'none'; });
|
||||
}, 120000);
|
||||
});
|
||||
|
||||
function openLightbox(mediaType, url) {
|
||||
const lb = document.getElementById('lightbox');
|
||||
if (mediaType === 'video') {
|
||||
|
||||
Reference in New Issue
Block a user