use super::*;
pub(super) async fn health_handler(State(state): State<Arc<BridgeState>>) -> Json<Value> {
let runtime = state.runtime_snapshot_for_client().await;
let runtimes = state.runtime_summaries_for_client().await;
Json(build_health_payload(&runtime, &runtimes))
}
pub(super) fn build_health_payload(
runtime: &RuntimeStatusSnapshot,
runtimes: &[RuntimeSummary],
) -> Value {
let primary_runtime_id = runtimes
.iter()
.find(|item| item.is_primary)
.map(|item| item.runtime_id.clone());
json!({
"ok": true,
"bridgeVersion": crate::BRIDGE_VERSION,
"buildHash": crate::BRIDGE_BUILD_HASH,
"protocolVersion": crate::BRIDGE_PROTOCOL_VERSION,
"runtimeCount": runtimes.len(),
"primaryRuntimeId": primary_runtime_id,
"runtime": runtime,
})
}