From 24d29d9ba9821ad1420125408b002e47fcf48026 Mon Sep 17 00:00:00 2001 From: Jaakko Vanhala Date: Sun, 5 Apr 2026 13:55:58 +0300 Subject: [PATCH] =?UTF-8?q?Avatar-aktivointi=20vain=20omille=20agents-teht?= =?UTF-8?q?=C3=A4ville,=20ei=20broadcast-viesteille?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agenttiavatarit vilkkuivat itsestään koska llm_prompt-handler reagoi kaikkiin broadcastattuihin viesteihin (hubin automaattiset 10s-tehtävät, warmup jne.). Nyt avatar-logiikka laukeaa VAIN jos viestissä on task_id joka löytyy activeStreams:stä — eli kyseessä on käyttäjän oma agents-pipelinen tehtävä. Co-Authored-By: Claude Opus 4.6 (1M context) --- network-poc/static/index.html | 41 ++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/network-poc/static/index.html b/network-poc/static/index.html index e8ba4c8..c9e3ead 100644 --- a/network-poc/static/index.html +++ b/network-poc/static/index.html @@ -2446,7 +2446,8 @@ : `→ ${msg} — generoidaan...`; } } else if (data.type === "llm_prompt") { - if (data.task_id) { + // Reagoidaan VAIN agents-pipelinen tehtäviin (task_id + activeStreams) + if (data.task_id && activeStreams[data.task_id]) { const term = document.getElementById('agent-terminal'); if (term) { const model = data.model || 'llm'; @@ -2458,26 +2459,26 @@ while (term.children.length > 50 && !term.firstChild.querySelector('.stream-content')) term.removeChild(term.firstChild); term.scrollTop = term.scrollHeight; } + + // Avatar-aktivointi vain omille tehtäville + document.querySelectorAll('.avatar-card').forEach(c => c.classList.remove('active')); + const model = data.model || ''; + const p = data.prompt ? data.prompt.toLowerCase() : ''; + + if (p.includes('tiiminvetäjä') || p.includes('pilko')) { + document.getElementById('avatar-kpn')?.classList.add('active'); + } else if (p.includes('arvioi seuraava koodi') || p.includes('ohjelmiston julkaisu')) { + document.getElementById('avatar-tester')?.classList.add('active'); + } else if (p.includes('tervehdi')) { + document.getElementById('avatar-client')?.classList.add('active'); + } else if (p.includes('test')) { + document.getElementById('avatar-qa')?.classList.add('active'); + } else if (model.includes('coder') || model.includes('Coder')) { + document.getElementById('avatar-coder')?.classList.add('active'); + } else if (model.includes('deepseek') || model.includes('r1')) { + document.getElementById('avatar-observer')?.classList.add('active'); + } } - document.querySelectorAll('.avatar-card').forEach(c => c.classList.remove('active')); - const model = data.model || ''; - const p = data.prompt ? data.prompt.toLowerCase() : ''; - - if (p.includes('tiiminvetäjä') || p.includes('pilko')) { - document.getElementById('avatar-kpn')?.classList.add('active'); - } else if (p.includes('arvioi seuraava koodi') || p.includes('ohjelmiston julkaisu')) { - document.getElementById('avatar-tester')?.classList.add('active'); - } else if (p.includes('tervehdi')) { - document.getElementById('avatar-client')?.classList.add('active'); - } else if (p.includes('test')) { - document.getElementById('avatar-qa')?.classList.add('active'); - } else if (model.includes('coder') || model.includes('Coder')) { - // Koodari aktivoituu, jos kyse on suoraan koodarille osoitetusta mallitehtävästä (esim. network task) - document.getElementById('avatar-coder')?.classList.add('active'); - } else if (model.includes('deepseek') || model.includes('r1')) { - document.getElementById('avatar-observer')?.classList.add('active'); - } - // Emme enää aseta oletusagenttia, jottei tuntemattomissa verkkopyynnöissä mikään turhaan hypi silmille. } } catch(e) {} };