Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

Commit f5ed31c

Browse files
wpfleger96craigwalkeruk
authored andcommitted
fix: restore provider and extensions for LRU-evicted sessions (aaif-goose#7616)
1 parent ebac9f2 commit f5ed31c

1 file changed

Lines changed: 24 additions & 4 deletions

File tree

crates/goose/src/execution/manager.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,30 @@ impl AgentManager {
9595
GoosePlatform::GooseDesktop,
9696
);
9797
let agent = Arc::new(Agent::with_config(config));
98-
if let Some(provider) = &*self.default_provider.read().await {
99-
agent
100-
.update_provider(Arc::clone(provider), &session_id)
101-
.await?;
98+
99+
if let Ok(session) = self.session_manager.get_session(&session_id, false).await {
100+
if session.provider_name.is_some() {
101+
info!(
102+
"Restoring evicted session {} (provider: {:?})",
103+
session_id, session.provider_name
104+
);
105+
if let Err(e) = agent.restore_provider_from_session(&session).await {
106+
tracing::warn!(
107+
"Failed to restore provider for session {}: {}",
108+
session_id,
109+
e
110+
);
111+
}
112+
}
113+
agent.load_extensions_from_session(&session).await;
114+
}
115+
116+
if agent.provider().await.is_err() {
117+
if let Some(provider) = &*self.default_provider.read().await {
118+
agent
119+
.update_provider(Arc::clone(provider), &session_id)
120+
.await?;
121+
}
102122
}
103123

104124
let mut sessions = self.sessions.write().await;

0 commit comments

Comments
 (0)