diff --git a/desktop/src-tauri/src/intelligence_hooks.rs b/desktop/src-tauri/src/intelligence_hooks.rs index de244d6..ea2e9d0 100644 --- a/desktop/src-tauri/src/intelligence_hooks.rs +++ b/desktop/src-tauri/src/intelligence_hooks.rs @@ -112,12 +112,15 @@ pub async fn post_conversation_hook( // Step 2: Record conversation for reflection let mut engine = reflection_state.lock().await; - // Apply restored state on first call (one-shot after app restart) - if let Some(restored_state) = crate::intelligence::reflection::pop_restored_state(agent_id) { + // Apply restored state on first call (peek-then-pop to avoid race with getHistory) + if let Some(restored_state) = crate::intelligence::reflection::peek_restored_state(agent_id) { engine.apply_restored_state(restored_state); + // Pop after successful apply to prevent re-processing + crate::intelligence::reflection::pop_restored_state(agent_id); } - if let Some(restored_result) = crate::intelligence::reflection::pop_restored_result(agent_id) { + if let Some(restored_result) = crate::intelligence::reflection::peek_restored_result(agent_id) { engine.apply_restored_result(restored_result); + crate::intelligence::reflection::pop_restored_result(agent_id); } engine.record_conversation();