codex-mobile-bridge 0.3.10

Remote bridge and service manager for codex-mobile.
Documentation
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,
    })
}