//! # df-relay
//!
//! 跨端 AI Chat 云中继服务(设计文档 Layer2)。
//!
//! ## 职责
//! - axum WS Server 接受两类连接:小程序(device_id 鉴权)+ 桌面端(token 配对)
//! - 广播中继:小程序操作 → 桌面端;桌面端事件 → 小程序
//! - 纯转发,无业务逻辑(保持轻量,设计文档明确)
//!
//! ## 边界
//! - 不依赖 df-tunnel / df-types / src-tauri(独立消息骨架,避免跨 crate 强耦合)
//! - 不含业务逻辑(Phase2 填连接生命周期 / 注册表 / 广播分发)
//!
//! ## 模块
//! - [`broadcast`]:广播消息骨架(BroadcastMessage / ClientKind / ControlMessage / MessageKind)
//! - [`conn`]:连接注册表(ConnId / ConnHandle / ConnRegistry / RelayState)
//! - [`relay`]:RelayServer trait + DefaultRelayServer + axum WS 路由与连接生命周期
//! - [`error`]:RelayError 错误类型

pub mod broadcast;
pub mod conn;
pub mod error;
pub mod relay;

// 顶层再导出常用项
pub use broadcast::{BroadcastMessage, ClientKind, ControlMessage, MessageKind, PresenceState};
pub use conn::{next_conn_id, ConnHandle, ConnId, ConnRegistry, RelayState};
pub use error::{RelayError, Result};
pub use relay::{build_router, DefaultRelayServer, RelayServer};
