(function () { "use strict"; var endpoint = "/api/cortex-os/runtime-health"; var states = ["healthy", "degraded", "unavailable", "unknown", "loading", "error", "redacted"]; if (window.__cortexOsRuntimeHealthLoaded) { return; } window.__cortexOsRuntimeHealthLoaded = true; function ensurePanel() { var panel = document.querySelector("[data-cortex-os-runtime-health]"); if (panel) { return panel; } panel = document.createElement("section"); panel.className = "cortex-os-runtime-health"; panel.setAttribute("data-cortex-os-runtime-health", "true"); panel.setAttribute("data-state", "loading"); var title = document.createElement("h2"); title.textContent = "Cortex OS Runtime Health"; var badge = document.createElement("span"); badge.className = "cortex-os-runtime-health__badge"; badge.setAttribute("data-role", "status"); badge.textContent = "loading"; var summary = document.createElement("p"); summary.className = "cortex-os-runtime-health__summary"; summary.setAttribute("data-role", "summary"); summary.textContent = "Checking Runtime Health."; var list = document.createElement("dl"); list.className = "cortex-os-runtime-health__signals"; list.setAttribute("data-role", "signals"); panel.appendChild(title); panel.appendChild(badge); panel.appendChild(summary); panel.appendChild(list); var target = document.querySelector("main.main"); if (!target) { return panel; } target.appendChild(panel); return panel; } function setState(panel, state, summary, signals) { var nextState = states.indexOf(state) >= 0 ? state : "unknown"; panel.setAttribute("data-state", nextState); panel.querySelector("[data-role='status']").textContent = nextState; panel.querySelector("[data-role='summary']").textContent = summary || "redacted"; renderSignals(panel.querySelector("[data-role='signals']"), signals || []); } function renderSignals(list, signals) { list.textContent = ""; signals.slice(0, 3).forEach(function (signal) { var name = document.createElement("dt"); var value = document.createElement("dd"); name.textContent = signal.name || "redacted"; value.textContent = signal.status || "unknown"; list.appendChild(name); list.appendChild(value); }); } function renderPayload(panel, payload) { if (!payload || payload.ok !== true || !payload.result) { setState(panel, "error", "Runtime Health is unavailable.", []); return; } setState(panel, payload.result.status, payload.result.summary, payload.result.signals); } function loadRuntimeHealth() { var panel = ensurePanel(); setState(panel, "loading", "Checking Runtime Health.", []); fetch(endpoint, { method: "GET", headers: { Accept: "application/json" }, credentials: "same-origin", cache: "no-store" }) .then(function (response) { if (!response.ok) { throw new Error("runtime-health-unavailable"); } return response.json(); }) .then(function (payload) { renderPayload(panel, payload); }) .catch(function () { setState(panel, "error", "Runtime Health is unavailable.", []); }); } function handlePanelSwitch(event) { var detail = (event && event.detail) || {}; if (detail.name === "cortex-os") { loadRuntimeHealth(); } } window.addEventListener("svrnty:panel-switch", handlePanelSwitch); var main = document.querySelector("main.main"); if (main && main.classList.contains("svrnty-showing-cortex-os")) { loadRuntimeHealth(); } })();