diff --git a/network-poc/static/index.html b/network-poc/static/index.html index acd0e12..c89790f 100644 --- a/network-poc/static/index.html +++ b/network-poc/static/index.html @@ -2828,9 +2828,7 @@ ${fixableFiles}`;

${task} — ${new Date().toLocaleString('fi-FI')} — ${fileEntries.length} tiedostoa, ${steps.length} vaihetta

🔄 Agenttien workflow

-
-${generateMermaidDiagram(steps)} -
+${generateWorkflowSwimlane(steps)}

📋 Pipeline-vaiheet

${stepsHtml} @@ -2843,41 +2841,44 @@ ${filesHtml}

Generoitu Kipinä Agentic Playground v0.2.2 — kipina.studio

-<` + `script type="module"> -import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs'; -mermaid.initialize({ startOnLoad: true, theme: 'dark', themeVariables: { primaryColor: '#58a6ff', primaryTextColor: '#c9d1d9', lineColor: '#30363d', primaryBorderColor: '#30363d' } }); - `; } - function generateMermaidDiagram(steps) { + function generateWorkflowSwimlane(steps) { const agentLabels = { manager: 'Manageri', coder: 'Koodari', tester: 'DevOps', qa: 'QA', data: 'Data' }; - const agentStyles = { manager: 'fill:#1c1206,stroke:#d29922,color:#d29922', coder: 'fill:#0d1a0d,stroke:#3fb950,color:#3fb950', tester: 'fill:#0d1117,stroke:#58a6ff,color:#58a6ff', qa: 'fill:#170d22,stroke:#a371f7,color:#a371f7', data: 'fill:#1a0d22,stroke:#d2a8ff,color:#d2a8ff' }; + const agentColors = { manager: '#d29922', coder: '#3fb950', tester: '#58a6ff', qa: '#a371f7', data: '#d2a8ff' }; + const agentBgs = { manager: '#1c1206', coder: '#0d1a0d', tester: '#0d1520', qa: '#170d22', data: '#1a0d22' }; const stepDescs = { 'Suunnittelu': 'Jakaa projektin tiedostoiksi', 'Review': 'Tarkistaa koodin laadun', 'Testit': 'Kirjoittaa pytest-testit', 'Dockerfile': 'Generoi Docker-imagen', 'Compose': 'Palvelumääritys', 'README': 'Käyttöohjeet', 'Validointi': 'Tarkistaa yhteensopivuuden', 'Korjaukset': 'Korjaa löydetyt ongelmat' }; - let lines = ['graph LR']; - let prevId = null; + var agents = []; + var agentMap = {}; + for (var si = 0; si < steps.length; si++) { + var s = steps[si]; + if (!agentMap[s.agent]) { agentMap[s.agent] = []; agents.push(s.agent); } + agentMap[s.agent].push(s); + } - steps.forEach((s, i) => { - const id = `S${i}`; - const agent = agentLabels[s.agent] || s.agent; - const label = s.label.replace(/"/g, "'").replace(/[<>]/g, ''); - const desc = stepDescs[s.label] || s.label; - const outputPreview = (s.output || '').substring(0, 80).replace(/"/g, "'").replace(/\n/g, ' ').replace(/[<>]/g, ''); - - lines.push(` ${id}["${agent}
${label}"]`); - // Mermaid tooltip: click event + title - lines.push(` click ${id} callback "${desc}${outputPreview ? ' — ' + outputPreview : ''}"`); - if (prevId) { - lines.push(` ${prevId} --> ${id}`); + var rows = ''; + for (var ai = 0; ai < agents.length; ai++) { + var agent = agents[ai]; + var color = agentColors[agent] || '#8b949e'; + var bg = agentBgs[agent] || '#161b22'; + var label = agentLabels[agent] || agent; + var badges = ''; + var aSteps = agentMap[agent]; + for (var bi = 0; bi < aSteps.length; bi++) { + var st = aSteps[bi]; + var desc = stepDescs[st.label] || st.label; + var outPrev = (st.output || '').substring(0, 100).replace(/ 0) badges += ''; + badges += '' + icon + ' ' + st.label.replace(/'; } - if (agentStyles[s.agent]) { - lines.push(` style ${id} ${agentStyles[s.agent]}`); - } - prevId = id; - }); + rows += '
' + label + '
' + badges + '
'; + } - return lines.join('\n'); + return '
' + rows + '
'; } // Yksinkertainen pipeline (vanha: manageri → koodari → testaaja)