diff --git a/src/session/session.rs b/src/session/session.rs index be3a403..9d5b3a1 100644 --- a/src/session/session.rs +++ b/src/session/session.rs @@ -370,28 +370,34 @@ impl SessionManager { } } "info" => { - if let Some(sid) = current_session_id { - let session = self.get_or_create_session(sid).await?; - let session_guard = session.lock().await; - let message_count = session_guard.get_history().len(); - let session_id_str = session_guard.session_id(); - Ok((None, format!( - "Session ID: {}\nMessage count: {}", - session_id_str, message_count - ))) + let sid = if let Some(s) = current_session_id { + s.clone() } else { - Ok((None, "No active session.".to_string())) - } + // Create a new session if none exists (e.g., Feishu first message) + let (new_id, _) = self.create_session(channel, chat_id, None).await?; + new_id + }; + let session = self.get_or_create_session(&sid).await?; + let session_guard = session.lock().await; + let message_count = session_guard.get_history().len(); + let session_id_str = session_guard.session_id(); + Ok((None, format!( + "Session ID: {}\nMessage count: {}", + session_id_str, message_count + ))) } "dump" => { - if let Some(sid) = current_session_id { - let session = self.get_or_create_session(sid).await?; - let session_guard = session.lock().await; - let md = session_guard.dump_as_markdown(); - Ok((None, md)) + let sid = if let Some(s) = current_session_id { + s.clone() } else { - Ok((None, "No active session.".to_string())) - } + // Create a new session if none exists (e.g., Feishu first message) + let (new_id, _) = self.create_session(channel, chat_id, None).await?; + new_id + }; + let session = self.get_or_create_session(&sid).await?; + let session_guard = session.lock().await; + let md = session_guard.dump_as_markdown(); + Ok((None, md)) } _ => Err(AgentError::Other(format!("Command not implemented: {}", cmd.name))), }