+
Laskenta:
- Ei käynnissä ⟩
+ —
+
@@ -1457,9 +1458,9 @@
}));
}
- // Agents- ja codelab-sivuille: käynnistetään oma laskentasolmu
- // jotta käyttäjän oma kone voi suorittaa tehtäviä
- if (tab === 'agents' || tab === 'codelab') {
+ // Codelab: käynnistetään oma laskentasolmu automaattisesti
+ // Agents: käyttäjä käynnistää itse "Alusta laskentasolmu" -napista
+ if (tab === 'codelab') {
if (typeof ensureCoderNode === 'function') ensureCoderNode();
}
};
@@ -1847,12 +1848,13 @@
}
if (sub === 'load') {
- const cl = document.getElementById('agent-compute-label');
- if (cl && cl.style.color === 'rgb(63, 185, 80)') {
+ const btn = document.getElementById('agent-compute-btn');
+ if (btn && btn.dataset.state === 'ready') {
termLog(' ✓ Kielimalli on jo ladattu ja valmis', '#3fb950');
} else {
- termLog(' Ladataan kielimallia...', '#d29922');
- ensureCoderNode();
+ termLog(' Alustetaan laskentasolmua...', '#d29922');
+ if (btn) btn.click(); // Käytetään samaa logiikkaa kuin napissa
+ else ensureCoderNode();
}
return;
}
@@ -2521,13 +2523,17 @@
if (msg.includes('[Coder]') && msg.includes('model') && msg.includes('tallennettu')) { setStep('step-model', 'done', '100%'); }
if (msg.includes('[Coder]') && msg.includes('Rakennetaan')) { setStep('step-build', 'active'); }
if (msg.includes('Agent Node käynnistyy') || msg.includes('Rakennetaan')) {
- // Laskenta käynnistymässä
const cd = document.getElementById('agent-compute-dot');
const cl = document.getElementById('agent-compute-label');
- const cs = document.getElementById('agent-compute-status');
+ const btn = document.getElementById('agent-compute-btn');
if (cd) cd.style.background = '#d29922';
- if (cl) { cl.textContent = 'Ladataan mallia...'; cl.style.color = '#d29922'; }
- if (cs) cs.title = 'Kielimallia ladataan — tämä kestää ensimmäisellä kerralla pidempään';
+ if (cl) { cl.textContent = 'Ladataan...'; cl.style.color = '#d29922'; }
+ if (btn && btn.dataset.state !== 'ready') {
+ btn.dataset.state = 'loading';
+ btn.textContent = 'Peruuta';
+ btn.style.borderColor = '#f85149';
+ btn.style.color = '#f85149';
+ }
}
if (msg.includes('[Coder]') && msg.includes('Malli ladattu')) {
// Malli on valmis — merkataan kaikki vaiheet valmiiksi
@@ -2547,10 +2553,10 @@
// Agents-sivun compute-status: valmis
const cd = document.getElementById('agent-compute-dot');
const cl = document.getElementById('agent-compute-label');
- const cs = document.getElementById('agent-compute-status');
+ const btn = document.getElementById('agent-compute-btn');
if (cd) cd.style.background = '#3fb950';
- if (cl) { cl.textContent = 'Valmis (Qwen2.5-Coder)'; cl.style.color = '#3fb950'; }
- if (cs) { cs.title = 'Kielimalli ladattu — oma kone on valmis suorittamaan tehtäviä'; cs.style.cursor = 'default'; }
+ if (cl) { cl.textContent = 'Qwen2.5-Coder'; cl.style.color = '#3fb950'; }
+ if (btn) { btn.dataset.state = 'ready'; btn.textContent = '✓ Valmis'; btn.style.borderColor = '#3fb950'; btn.style.color = '#3fb950'; btn.style.cursor = 'default'; btn.title = 'Kielimalli ladattu — oma kone on valmis laskentaan'; }
}
if (msg.includes('[Coder]') && msg.includes('Syöte:')) {
// Pipeline piiloon kun generointi alkaa
@@ -2637,15 +2643,31 @@
}
}
- // Automaattinen coder-noden käynnistys agents-sivulle (suora navigointi #agents)
- if (window.location.hash === '#agents') {
- ensureCoderNode();
- }
+ // Agents-sivun coder-node käynnistetään "Alusta laskentasolmu" -napista tai kpn load -komennolla
- // Klikkaa compute-statusta käynnistääksesi laskentasolmu
- document.getElementById('agent-compute-status')?.addEventListener('click', () => {
+ // Laskentasolmun käynnistys/pysäytys -nappi
+ let computeAbortController = null;
+ document.getElementById('agent-compute-btn')?.addEventListener('click', () => {
+ const btn = document.getElementById('agent-compute-btn');
const cl = document.getElementById('agent-compute-label');
- if (cl && cl.style.color === 'rgb(63, 185, 80)') return; // Jo valmis
+ if (!btn) return;
+
+ if (btn.dataset.state === 'ready') return; // Jo valmis, ei tehdä mitään
+
+ if (btn.dataset.state === 'loading') {
+ // Cancel — ladataan sivua uudelleen koska Wasm-latausta ei voi pysäyttää
+ btn.textContent = 'Peruutetaan...';
+ btn.disabled = true;
+ window.location.reload();
+ return;
+ }
+
+ // Käynnistetään
+ btn.dataset.state = 'loading';
+ btn.textContent = 'Peruuta';
+ btn.style.borderColor = '#f85149';
+ btn.style.color = '#f85149';
+ btn.title = 'Peruuta kielimallin lataus';
ensureCoderNode();
});