From 07261e09be60ac0c145685fd11f94351cc0e5ba6 Mon Sep 17 00:00:00 2001 From: Eric Yue Date: Mon, 15 Jun 2026 21:50:24 +0800 Subject: feat: add devin cli detection and restore support (#622) * feat: add devin cli detection and restore support refs #606 * fix: keep devin integration session-only --------- Co-authored-by: Ogulcan Celik --- src/terminal/state.rs | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) (limited to 'src/terminal') diff --git a/src/terminal/state.rs b/src/terminal/state.rs index 932e0735..9b9b6d43 100644 --- a/src/terminal/state.rs +++ b/src/terminal/state.rs @@ -1073,31 +1073,37 @@ mod tests { #[test] fn session_only_report_does_not_create_hook_authority() { - let mut terminal = test_terminal(); - terminal.set_detected_state(Some(Agent::Codex), AgentState::Idle); + for (agent, source, label, session_id) in [ + (Agent::Codex, "herdr:codex", "codex", "codex-session"), + (Agent::Devin, "herdr:devin", "devin", "devin-session"), + ] { + let mut terminal = test_terminal(); + terminal.set_detected_state(Some(agent), AgentState::Idle); - let mutation = terminal.set_agent_session_ref( - "herdr:codex".into(), - "codex".into(), - crate::agent_resume::AgentSessionRef::id("codex-session"), - Some(1), - ); + let mutation = terminal.set_agent_session_ref( + source.into(), + label.into(), + crate::agent_resume::AgentSessionRef::id(session_id), + Some(1), + ); - assert!(mutation.is_some()); - assert!(terminal.hook_authority.is_none()); - assert_eq!(terminal.state, AgentState::Idle); + assert!(mutation.is_some()); + assert!(terminal.hook_authority.is_none()); + assert!(!terminal.full_lifecycle_hook_authority_active()); + assert_eq!(terminal.state, AgentState::Idle); - terminal.set_detected_state_with_screen_signals_at( - Some(Agent::Codex), - AgentState::Working, - false, - false, - false, - false, - Instant::now(), - ); + terminal.set_detected_state_with_screen_signals_at( + Some(agent), + AgentState::Working, + false, + false, + false, + false, + Instant::now(), + ); - assert_eq!(terminal.state, AgentState::Working); + assert_eq!(terminal.state, AgentState::Working); + } } #[test] -- cgit v1.2.3