change poll mcp again status

This commit is contained in:
larssand
2026-07-02 21:14:43 +02:00
parent 7d1bdd35c9
commit f45c275e20
2 changed files with 21 additions and 1 deletions

View File

@@ -226,6 +226,21 @@ function table(rows, columns, id = '') {
return `<div class="table-wrap"><table><thead><tr>${head}</tr></thead><tbody>${body}</tbody></table></div>`;
}
function capability(label, state, detail) { return `<span class="capability ${state}">${esc(label)}: ${esc(detail)}</span>`; }
function mcpCapability(mcp, configuration, pollRunningSeconds=0) {
if (configuration.log_source !== 'graylog_mcp') return {state: 'warn', detail: 'not selected'};
const status = String(mcp.status || 'checking');
if (status === 'connected') return {state: 'on', detail: 'connected'};
if (status === 'partial') return {state: 'warn', detail: 'partial'};
if (status === 'refreshing') {
const previous = String(mcp.previous_status || '');
if (['connected', 'partial'].includes(previous) || Number(mcp.previous_events_fetched || mcp.events_fetched || 0) > 0 || Number(mcp.previous_aggregate_events || mcp.aggregate_events || 0) > 0) {
const suffix = pollRunningSeconds ? `polling ${pollRunningSeconds}s` : 'polling';
return {state: 'on', detail: previous === 'partial' ? `partial, ${suffix}` : `connected, ${suffix}`};
}
return {state: 'warn', detail: 'starting poll'};
}
return {state: 'warn', detail: status};
}
function actionItem(severity, title, detail, action) {
return `<div class="action-item ${esc(severity)}"><strong>${esc(title)}</strong><div>${esc(detail)}</div><div class="muted">Next: ${esc(action)}</div></div>`;
}
@@ -560,11 +575,12 @@ async function refresh() {
].join('');
const llm = data.llm_assessment || {};
const llmEnabled = Boolean(llm.enabled || configuration.llm_enabled);
const mcpBadge = mcpCapability(mcp, configuration, pollRunningSeconds);
document.getElementById('capabilities').innerHTML = [
capability('Baseline', baseline.enabled ? 'on' : 'warn', baseline.enabled ? `${baseline.sources_ready || 0} sources ready` : 'disabled'),
capability('Ollama', llmEnabled && llm.status !== 'error' ? 'on' : 'warn', llmEnabled ? (llm.status || 'starting') : 'disabled'),
capability('Threat Intel', threat.enabled && threat.configured ? 'on' : 'warn', threat.enabled ? `${threat.provider || 'unknown'}${threat.configured ? '' : ', key missing'}` : 'disabled'),
capability('Graylog MCP', mcp.status === 'connected' ? 'on' : 'warn', configuration.log_source === 'graylog_mcp' ? (mcp.status || 'checking') : 'not selected')
capability('Graylog MCP', mcpBadge.state, mcpBadge.detail)
].join('');
document.getElementById('liveStatus').innerHTML = [
data.stale ? `<span class="sev-high">Showing cached dashboard data because live MCP fetch failed.</span>` : '',