diff --git a/network-poc/frontend/src/pages/index.astro b/network-poc/frontend/src/pages/index.astro
index 0868d06..bf50d73 100644
--- a/network-poc/frontend/src/pages/index.astro
+++ b/network-poc/frontend/src/pages/index.astro
@@ -612,7 +612,7 @@ OUTPUT FORMAT:
// === Terminal commands ===
const kpnCommands = {
- 'kpn': ['help','run','project','pipeline','load','status','models','clear'],
+ 'kpn': ['help','run','project','pipeline','stop','load','status','models','clear'],
'kpn run': ['coder','coder-3b','manager','tester','qa','qwen-coder','smollm-135m'],
'kpn load': ['1','2'],
'kpn project': ['"'],
@@ -682,11 +682,21 @@ OUTPUT FORMAT:
if (sub === 'help' || !sub) {
termLog(' kpn run <malli> "prompti" — aja tehtävä', '#a5d6ff');
termLog(' kpn project "kuvaus" — monivaiheinen projekti', '#a5d6ff');
- termLog(' kpn pipeline "tehtävä" — nopea: manageri→koodari→testaaja', '#a5d6ff');
+ termLog(' kpn pipeline "tehtävä" — nopea: asiakas→manageri→koodari→testaaja', '#a5d6ff');
+ termLog(' kpn stop — keskeytä pipeline', '#a5d6ff');
termLog(' kpn load — lataa kielimalli', '#a5d6ff');
termLog(' kpn models — mallit', '#a5d6ff');
termLog(' kpn status — verkon tila', '#a5d6ff');
termLog(' kpn clear — tyhjennä', '#a5d6ff');
+ } else if (sub === 'stop') {
+ if (pipelineAbort) {
+ pipelineAbort.abort();
+ pipelineAbort = null;
+ termLog(' ✋ Pipeline keskeytetty', '#d29922');
+ highlightAgent(null);
+ } else {
+ termLog(' Ei käynnissä olevaa pipelinea', '#8b949e');
+ }
} else if (sub === 'clear') { termPanel.innerHTML = '';
} else if (sub === 'load') {
const btn = document.getElementById('compute-btn');
@@ -785,6 +795,7 @@ OUTPUT FORMAT:
}
async function kpnProject(task) {
+ pipelineAbort = new AbortController();
const cli = agents.client || Object.values(agents)[0];
const mgr = agents.manager || Object.values(agents)[1];
const cdr = agents.coder || Object.values(agents)[2];
@@ -1034,6 +1045,7 @@ OUTPUT FORMAT:
}
async function kpnPipelineSimple(task) {
+ pipelineAbort = new AbortController();
const cli = agents.client || Object.values(agents)[0];
termLog(`━━━ Pipeline ━━━`);
termLog(`\n[1/4] ${esc(cli.name)} — vaatimukset`);
diff --git a/network-poc/nodes.db b/network-poc/nodes.db
index 19e9928..ee0f37a 100644
Binary files a/network-poc/nodes.db and b/network-poc/nodes.db differ