From a4d52ab60282b2ad021cb90978a7ed4d3898704b Mon Sep 17 00:00:00 2001 From: Can Celik Date: Thu, 13 Aug 2026 03:00:35 +0300 Subject: feat: add qwen code detection and restore (#2743) refs #2730 --- src/agent_resume.rs | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'src/agent_resume.rs') diff --git a/src/agent_resume.rs b/src/agent_resume.rs index e2fc47e9..cd1ae7bb 100644 --- a/src/agent_resume.rs +++ b/src/agent_resume.rs @@ -71,9 +71,10 @@ pub fn session_ref_from_report( pub fn normalize_session_start_source(value: Option) -> Option { match value.as_deref().map(str::trim) { - Some(source @ ("startup" | "resume" | "clear" | "compact" | "new" | "fork" | "select")) => { - Some(source.to_string()) - } + Some( + source @ ("startup" | "resume" | "clear" | "compact" | "branch" | "new" | "fork" + | "select"), + ) => Some(source.to_string()), _ => None, } } @@ -87,6 +88,7 @@ pub fn is_reserved_native_state_source(source: &str, agent: &str) -> bool { | ("herdr:devin", "devin") | ("herdr:droid", "droid") | ("herdr:qodercli", "qodercli") + | ("herdr:qwen", "qwen") | ("herdr:cursor", "cursor") | ("herdr:grok", "grok") ) @@ -177,6 +179,9 @@ pub fn plan(source: &str, agent: &str, session_ref: &AgentSessionRef) -> Option< session_ref.value.clone(), ] } + ("herdr:qwen", "qwen", AgentSessionRefKind::Id) => { + vec!["qwen".into(), "--resume".into(), session_ref.value.clone()] + } ("herdr:kilo", "kilo", AgentSessionRefKind::Id) => { vec!["kilo".into(), "--session".into(), session_ref.value.clone()] } @@ -234,6 +239,7 @@ pub(crate) fn is_official_agent_source(source: &str, agent: &str) -> bool { | ("herdr:hermes", "hermes") | ("herdr:opencode", "opencode") | ("herdr:qodercli", "qodercli") + | ("herdr:qwen", "qwen") | ("herdr:kilo", "kilo") | ("herdr:cursor", "cursor") | ("herdr:antigravity_cli", "agy") @@ -400,6 +406,16 @@ mod tests { .argv, vec!["qodercli", "--resume", "qoder-session"] ); + assert_eq!( + plan( + "herdr:qwen", + "qwen", + &AgentSessionRef::id("qwen-session").unwrap() + ) + .unwrap() + .argv, + vec!["qwen", "--resume", "qwen-session"] + ); assert_eq!( plan( "herdr:kilo", @@ -575,6 +591,11 @@ mod tests { assert_eq!(session_ref.kind, AgentSessionRefKind::Id); assert_eq!(session_ref.value, "qoder-id"); + let session_ref = + session_ref_from_report("herdr:qwen", "qwen", Some("qwen-id".into()), None).unwrap(); + assert_eq!(session_ref.kind, AgentSessionRefKind::Id); + assert_eq!(session_ref.value, "qwen-id"); + let session_ref = session_ref_from_report("herdr:antigravity_cli", "agy", Some("agy-id".into()), None) .unwrap(); @@ -600,6 +621,10 @@ mod tests { normalize_session_start_source(Some("compact".into())), Some("compact".into()) ); + assert_eq!( + normalize_session_start_source(Some("branch".into())), + Some("branch".into()) + ); assert_eq!( normalize_session_start_source(Some("new".into())), Some("new".into()) -- cgit v1.2.3