orchflow_core/manager/handlers/
session.rs1use crate::error::Result;
2use crate::manager::Manager;
3use serde_json::Value;
4
5pub async fn create_session(manager: &Manager, name: String) -> Result<Value> {
6 let session = manager.state_manager.create_session(name.clone()).await?;
8
9 manager.mux_backend.create_session(&session.id).await?;
11
12 Ok(serde_json::to_value(&session).unwrap())
13}
14
15pub async fn delete_session(manager: &Manager, session_id: String) -> Result<Value> {
16 let _session = manager
18 .state_manager
19 .get_session(&session_id)
20 .await
21 .ok_or_else(|| {
22 crate::error::OrchflowError::NotFound(format!("Session not found: {session_id}"))
23 })?;
24
25 if let Err(e) = manager.mux_backend.kill_session(&session_id).await {
27 tracing::error!("Failed to kill backend session: {}", e);
28 }
29
30 manager.state_manager.delete_session(&session_id).await?;
32
33 Ok(serde_json::json!({
34 "status": "ok",
35 "session_id": session_id
36 }))
37}