fix: use default provider and model when provider in session no longer exists (#8035)
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user