diff --git a/app.js b/app.js index b26114fa..2ce18438 100644 --- a/app.js +++ b/app.js @@ -1229,19 +1229,21 @@ function updateDevQueue(issues) { async function updateSovereignHealth() { const container = document.getElementById('sovereign-health-content'); if (!container) return; - + let metrics = { sovereignty_score: 100, local_sessions: 0, total_sessions: 0 }; + let daemonReachable = false; try { const res = await fetch('http://localhost:8082/metrics'); if (res.ok) { metrics = await res.json(); + daemonReachable = true; } } catch (e) { - // Fallback to static if local daemon not running console.log('Local health daemon not reachable, using static baseline.'); } const services = [ + { name: 'LOCAL DAEMON', status: daemonReachable ? 'ONLINE' : 'OFFLINE' }, { name: 'FORGE / GITEA', url: 'https://forge.alexanderwhitestone.com', status: 'ONLINE' }, { name: 'NEXUS CORE', url: 'https://forge.alexanderwhitestone.com/Timmy_Foundation/the-nexus', status: 'ONLINE' }, { name: 'HERMES WS', url: 'ws://143.198.27.163:8765', status: wsConnected ? 'ONLINE' : 'OFFLINE' }, @@ -1249,7 +1251,7 @@ async function updateSovereignHealth() { ]; container.innerHTML = ''; - + // Add Sovereignty Bar const barDiv = document.createElement('div'); barDiv.className = 'meta-stat'; @@ -1266,13 +1268,28 @@ async function updateSovereignHealth() { `; container.appendChild(barDiv); + // Session metrics (if daemon provides them) + if (daemonReachable && (metrics.local_sessions || metrics.total_sessions)) { + const sessDiv = document.createElement('div'); + sessDiv.className = 'meta-stat'; + sessDiv.innerHTML = `SESSIONS${metrics.local_sessions || 0} local / ${metrics.total_sessions || 0} total`; + container.appendChild(sessDiv); + } + services.forEach(s => { const div = document.createElement('div'); div.className = 'meta-stat'; div.innerHTML = `${s.name} ${s.status}`; container.appendChild(div); }); -}); + + // Last updated timestamp + const tsDiv = document.createElement('div'); + tsDiv.className = 'meta-stat'; + tsDiv.style.opacity = '0.5'; + tsDiv.style.fontSize = '0.7em'; + tsDiv.textContent = `UPDATED ${new Date().toLocaleTimeString()}`; + container.appendChild(tsDiv); } function updateNexusCommand(state) {