diamond-in commited on
Commit
8f15b28
·
verified ·
1 Parent(s): 365c112

Update src/main.rs

Browse files
Files changed (1) hide show
  1. src/main.rs +12 -13
src/main.rs CHANGED
@@ -1,31 +1,30 @@
1
  use axum::{routing::{get, post}, Router};
2
  use std::net::SocketAddr;
3
  use tower_http::services::ServeDir;
4
- use tower_http::cors::CorsLayer;
 
5
 
6
  mod agent;
7
  mod browser;
8
  mod sse;
9
  mod ui;
10
 
 
 
 
 
11
  #[tokio::main]
12
  async fn main() {
13
  tracing_subscriber::fmt::init();
 
 
14
 
15
  let app = Router::new()
16
- // API for the Chat interface
17
  .route("/api/chat", post(agent::chat_handler))
18
- // SSE Stream for Browser frames and Agent logs
19
- .route("/api/stream", get(sse::sse_handler))
20
- // Serve the frontend (Agent can modify this folder!)
21
- .fallback_service(ServeDir::new("./dist"))
22
- .layer(CorsLayer::permissive());
23
 
24
  let addr = SocketAddr::from(([0, 0, 0, 0], 7860));
25
- println!("🚀 Agent Server running on http://localhost:7860");
26
-
27
- axum::Server::bind(&addr)
28
- .serve(app.into_make_service())
29
- .await
30
- .unwrap();
31
  }
 
1
  use axum::{routing::{get, post}, Router};
2
  use std::net::SocketAddr;
3
  use tower_http::services::ServeDir;
4
+ use std::sync::Arc;
5
+ use tokio::sync::broadcast;
6
 
7
  mod agent;
8
  mod browser;
9
  mod sse;
10
  mod ui;
11
 
12
+ pub struct AppState {
13
+ pub tx: broadcast::Sender<String>,
14
+ }
15
+
16
  #[tokio::main]
17
  async fn main() {
18
  tracing_subscriber::fmt::init();
19
+ let (tx, _) = broadcast::channel(100);
20
+ let state = Arc::new(AppState { tx });
21
 
22
  let app = Router::new()
 
23
  .route("/api/chat", post(agent::chat_handler))
24
+ .route("/api/stream", get(sse::stream::sse_handler))
25
+ .fallback_service(ServeDir::new("./frontend/dist"))
26
+ .with_state(state);
 
 
27
 
28
  let addr = SocketAddr::from(([0, 0, 0, 0], 7860));
29
+ axum::Server::bind(&addr).serve(app.into_make_service()).await.unwrap();
 
 
 
 
 
30
  }