fix: use default provider and model when provider in session no longer exists (#8035)

This commit is contained in:
Lifei Zhou
2026-03-21 09:48:30 +11:00
committed by GitHub
parent 1f7f234326
commit 0ace570e28
4 changed files with 85 additions and 11 deletions
+17 -4
View File
@@ -385,7 +385,7 @@ async fn resume_agent(
}
})?;
let extension_results = if payload.load_model_and_extensions {
let (extension_results, session) = if payload.load_model_and_extensions {
let agent = state
.get_agent_for_route(payload.session_id.clone())
.await
@@ -394,7 +394,7 @@ async fn resume_agent(
status: code,
})?;
agent
let provider_changed = agent
.restore_provider_from_session(&session)
.await
.map_err(|e| ErrorResponse {
@@ -402,6 +402,19 @@ async fn resume_agent(
status: StatusCode::INTERNAL_SERVER_ERROR,
})?;
let session = if provider_changed {
state
.session_manager()
.get_session(&payload.session_id, true)
.await
.map_err(|err| ErrorResponse {
message: format!("Failed to re-fetch session: {}", err),
status: StatusCode::INTERNAL_SERVER_ERROR,
})?
} else {
session
};
let extension_results =
if let Some(results) = state.take_extension_loading_task(&payload.session_id).await {
tracing::debug!(
@@ -420,9 +433,9 @@ async fn resume_agent(
agent.load_extensions_from_session(&session).await
};
Some(extension_results)
(Some(extension_results), session)
} else {
None
(None, session)
};
Ok(Json(ResumeAgentResponse {