aboutsummaryrefslogtreecommitdiff
path: root/src/terminal
diff options
context:
space:
mode:
authorEric Yue <yue1995pro@gmail.com>2026-06-15 21:50:24 +0800
committerGitHub <noreply@github.com>2026-06-15 16:50:24 +0300
commit07261e09be60ac0c145685fd11f94351cc0e5ba6 (patch)
tree771b0180c7a1560189547e6d23ef004ec1cf6d5c /src/terminal
parent08bb0768ae224c8db04bbe016b050353ce13eee7 (diff)
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 <ogulcancelik@gmail.com>
Diffstat (limited to 'src/terminal')
-rw-r--r--src/terminal/state.rs48
1 files changed, 27 insertions, 21 deletions
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]