Avatar-aktivointi vain omille agents-tehtäville, ei broadcast-viesteille

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) <noreply@anthropic.com>
This commit is contained in:
Jaakko Vanhala
2026-04-05 13:55:58 +03:00
parent 7eca426e77
commit 24d29d9ba9

View File

@@ -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;
}
}
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');
// 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');
}
}
// Emme enää aseta oletusagenttia, jottei tuntemattomissa verkkopyynnöissä mikään turhaan hypi silmille.
}
} catch(e) {}
};