diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-08-13 03:00:35 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-13 03:00:35 +0300 |
| commit | a4d52ab60282b2ad021cb90978a7ed4d3898704b (patch) | |
| tree | cdd5f55d6d392d54541b86da7f1a00a48c211d03 /src/agent_resume.rs | |
| parent | 8b635c918066dd184bacc29b4c06c40a3efea3f5 (diff) | |
feat: add qwen code detection and restore (#2743)
refs #2730
Diffstat (limited to 'src/agent_resume.rs')
| -rw-r--r-- | src/agent_resume.rs | 31 |
1 files changed, 28 insertions, 3 deletions
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<String>) -> Option<String> { 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") @@ -402,6 +408,16 @@ mod tests { ); assert_eq!( plan( + "herdr:qwen", + "qwen", + &AgentSessionRef::id("qwen-session").unwrap() + ) + .unwrap() + .argv, + vec!["qwen", "--resume", "qwen-session"] + ); + assert_eq!( + plan( "herdr:kilo", "kilo", &AgentSessionRef::id("kilo-session").unwrap() @@ -576,6 +592,11 @@ mod tests { 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(); assert_eq!(session_ref.kind, AgentSessionRefKind::Id); @@ -601,6 +622,10 @@ mod tests { 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()) ); |
