fix: restore provider and extensions for LRU-evicted sessions (#7616)

This commit is contained in:
Will Pfleger
2026-03-03 19:35:41 -05:00
committed by GitHub
parent e727cea130
commit d883e6e55d
+24 -4
View File
@@ -95,10 +95,30 @@ impl AgentManager {
GoosePlatform::GooseDesktop,
);
let agent = Arc::new(Agent::with_config(config));
if let Some(provider) = &*self.default_provider.read().await {
agent
.update_provider(Arc::clone(provider), &session_id)
.await?;
if let Ok(session) = self.session_manager.get_session(&session_id, false).await {
if session.provider_name.is_some() {
info!(
"Restoring evicted session {} (provider: {:?})",
session_id, session.provider_name
);
if let Err(e) = agent.restore_provider_from_session(&session).await {
tracing::warn!(
"Failed to restore provider for session {}: {}",
session_id,
e
);
}
}
agent.load_extensions_from_session(&session).await;
}
if agent.provider().await.is_err() {
if let Some(provider) = &*self.default_provider.read().await {
agent
.update_provider(Arc::clone(provider), &session_id)
.await?;
}
}
let mut sessions = self.sessions.write().await;