From 295b09ca25edbccac65401ee84fa420dd3888aad Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 2 Jun 2026 21:20:28 +0300 Subject: feat: make claude codex opencode hooks session-only --- src/terminal/state.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/terminal/state.rs') diff --git a/src/terminal/state.rs b/src/terminal/state.rs index 09c5812a..e6ac3c00 100644 --- a/src/terminal/state.rs +++ b/src/terminal/state.rs @@ -428,6 +428,34 @@ impl TerminalState { self.persisted_agent_session = Some(session); } + pub fn set_agent_session_ref( + &mut self, + source: String, + agent_label: String, + session_ref: Option, + seq: Option, + ) -> Option { + let session_ref = session_ref?; + if !self.accept_hook_report(&source, seq) { + return None; + } + if self.known_agent_label_conflicts_with_detected_agent(&agent_label) { + return None; + } + + let previous_session = self.current_session_identity_for_persistence(); + self.persisted_agent_session = Some(crate::agent_resume::PersistedAgentSession { + source, + agent: agent_label, + session_ref, + }); + let current_session = self.current_session_identity_for_persistence(); + Some(TerminalStateMutation { + effective_state_change: None, + session_ref_changed: previous_session != current_session, + }) + } + fn known_agent_label_conflicts_with_detected_agent(&self, agent_label: &str) -> bool { let Some(detected_agent) = self.detected_agent else { return false; -- cgit v1.2.3