feat: use acp list sessions and manage sessions in Desktop (#9687)

This commit is contained in:
Lifei Zhou
2026-06-10 07:48:35 +10:00
committed by GitHub
parent e3090836e4
commit f4ecdaefc0
9 changed files with 325 additions and 257 deletions
+1 -14
View File
@@ -314,19 +314,6 @@ fn encode_session_list_cursor(
Ok(URL_SAFE_NO_PAD.encode(bytes))
}
fn display_title(s: &Session) -> Option<String> {
if !s.user_set_name {
if let Some(recipe) = &s.recipe {
return Some(recipe.title.clone());
}
}
if s.name.is_empty() {
None
} else {
Some(s.name.clone())
}
}
pub(super) fn session_meta(session: &Session) -> serde_json::Map<String, serde_json::Value> {
let mut meta = serde_json::Map::new();
meta.insert(
@@ -2861,7 +2848,7 @@ impl GooseAcpAgent {
.into_iter()
.map(|s| {
let meta = session_meta(&s);
let title = display_title(&s);
let title = s.display_title();
let mut info = SessionInfo::new(SessionId::new(s.id), s.working_dir)
.updated_at(s.updated_at.to_rfc3339())
.meta(meta);
@@ -88,6 +88,21 @@ pub struct Session {
pub project_id: Option<String>,
}
impl Session {
pub fn display_title(&self) -> Option<String> {
if !self.user_set_name && self.session_type != SessionType::Scheduled {
if let Some(recipe) = &self.recipe {
return Some(recipe.title.clone());
}
}
if self.name.is_empty() {
None
} else {
Some(self.name.clone())
}
}
}
pub struct SessionUpdateBuilder<'a> {
session_manager: &'a SessionManager,
session_id: String,