use actix_web::web; pub fn init_routes(cfg: &mut web::ServiceConfig) { cfg.service( web::scope("/ws") .route("", web::get().to(transport::handler::ws::ws_handler)) .route( "/ai-stream/{room_id}/{message_id}", web::get().to(transport::handler::sse::ws_ai_stream), ), ); cfg.service( web::scope("/api") .configure(crate::auth::init_auth_routes) .configure(crate::git::init_git_routes) .configure(crate::git::init_git_toplevel_routes) .configure(crate::chat::init_chat_routes) .configure(crate::issue::init_issue_routes) .configure(crate::project::init_project_routes) .configure(crate::user::init_user_routes) .configure(crate::pull_request::init_pull_request_routes) .configure(crate::agent::init_agent_routes) .configure(crate::search::init_search_routes) .configure(crate::room::init_room_routes), ); // SPA fallback — must be registered last so /api/* takes precedence cfg.route("/{path:.*}", web::get().to(crate::dist::serve_frontend)); }