Skip to main content

codex_mobile_bridge/server/
mod.rs

1use std::sync::Arc;
2
3use axum::extract::ws::{Message, WebSocket, WebSocketUpgrade};
4use axum::extract::{Query, State};
5use axum::http::{HeaderMap, StatusCode};
6use axum::response::{IntoResponse, Response};
7use axum::routing::get;
8use axum::{Json, Router};
9use futures_util::{SinkExt, StreamExt};
10use serde::Deserialize;
11use serde_json::{Value, json};
12use tracing::{info, warn};
13
14use crate::bridge_protocol::{
15    ApiError, ClientEnvelope, RuntimeStatusSnapshot, RuntimeSummary, ServerEnvelope,
16    error_response, event_envelope, ok_response,
17};
18use crate::state::BridgeState;
19
20mod health;
21#[cfg(test)]
22mod tests;
23mod websocket;
24
25#[derive(Debug, Deserialize, Default)]
26struct WsQuery {
27    token: Option<String>,
28}
29
30pub fn build_router(state: Arc<BridgeState>) -> Router {
31    Router::new()
32        .route("/health", get(health::health_handler))
33        .route("/ws", get(websocket::ws_handler))
34        .with_state(state)
35}