chore: checkpoint local workspace changes
This commit is contained in:
@@ -42,7 +42,8 @@ use std::convert::Infallible;
|
||||
use crate::{
|
||||
api_response::json_success_body, auth::AuthenticatedAccessToken, http_error::AppError,
|
||||
custom_world_agent_turn::{
|
||||
CustomWorldAgentTurnRequest, build_finalize_record_input, run_custom_world_agent_turn,
|
||||
CustomWorldAgentTurnRequest, build_failed_finalize_record_input,
|
||||
build_finalize_record_input, run_custom_world_agent_turn,
|
||||
},
|
||||
request_context::RequestContext, state::AppState,
|
||||
};
|
||||
@@ -566,21 +567,47 @@ pub async fn submit_custom_world_agent_message(
|
||||
|_| {},
|
||||
)
|
||||
.await;
|
||||
let finalized_operation = state
|
||||
.spacetime_client()
|
||||
.finalize_custom_world_agent_message(build_finalize_record_input(
|
||||
session_id,
|
||||
owner_user_id,
|
||||
operation_id,
|
||||
let finalize_input = match turn_result {
|
||||
Ok(turn_result) => build_finalize_record_input(
|
||||
session_id.clone(),
|
||||
owner_user_id.clone(),
|
||||
operation_id.clone(),
|
||||
format!("assistant-{}", operation.operation_id),
|
||||
turn_result,
|
||||
current_utc_micros(),
|
||||
))
|
||||
),
|
||||
Err(error) => build_failed_finalize_record_input(
|
||||
session_id.clone(),
|
||||
owner_user_id.clone(),
|
||||
operation_id.clone(),
|
||||
&session,
|
||||
error.to_string(),
|
||||
current_utc_micros(),
|
||||
),
|
||||
};
|
||||
let finalized_operation = state
|
||||
.spacetime_client()
|
||||
.finalize_custom_world_agent_message(finalize_input)
|
||||
.await
|
||||
.map_err(|error| {
|
||||
custom_world_error_response(&request_context, map_custom_world_client_error(error))
|
||||
})?;
|
||||
|
||||
if finalized_operation.status == "failed" {
|
||||
let message = finalized_operation
|
||||
.error_message
|
||||
.clone()
|
||||
.unwrap_or_else(|| "消息处理失败".to_string());
|
||||
return Err(custom_world_error_response(
|
||||
&request_context,
|
||||
AppError::from_status(StatusCode::BAD_GATEWAY).with_details(json!({
|
||||
"provider": "custom-world-agent",
|
||||
"message": message,
|
||||
"operationId": finalized_operation.operation_id,
|
||||
})),
|
||||
));
|
||||
}
|
||||
|
||||
Ok(json_success_body(
|
||||
Some(&request_context),
|
||||
json!({
|
||||
@@ -695,16 +722,27 @@ pub async fn stream_custom_world_agent_message(
|
||||
));
|
||||
}
|
||||
|
||||
let finalize_result = state
|
||||
.spacetime_client()
|
||||
.finalize_custom_world_agent_message(build_finalize_record_input(
|
||||
let finalize_input = match turn_result {
|
||||
Ok(turn_result) => build_finalize_record_input(
|
||||
session_id_for_stream.clone(),
|
||||
owner_user_id_for_stream.clone(),
|
||||
operation_id.clone(),
|
||||
format!("assistant-{operation_id}"),
|
||||
turn_result,
|
||||
current_utc_micros(),
|
||||
))
|
||||
),
|
||||
Err(error) => build_failed_finalize_record_input(
|
||||
session_id_for_stream.clone(),
|
||||
owner_user_id_for_stream.clone(),
|
||||
operation_id.clone(),
|
||||
&session,
|
||||
error.to_string(),
|
||||
current_utc_micros(),
|
||||
),
|
||||
};
|
||||
let finalize_result = state
|
||||
.spacetime_client()
|
||||
.finalize_custom_world_agent_message(finalize_input)
|
||||
.await;
|
||||
let _finalized_operation = match finalize_result {
|
||||
Ok(operation) => operation,
|
||||
@@ -716,6 +754,18 @@ pub async fn stream_custom_world_agent_message(
|
||||
return;
|
||||
}
|
||||
};
|
||||
if _finalized_operation.status == "failed" {
|
||||
yield Ok::<Event, Infallible>(custom_world_sse_json_event_or_error(
|
||||
"error",
|
||||
json!({
|
||||
"message": _finalized_operation
|
||||
.error_message
|
||||
.clone()
|
||||
.unwrap_or_else(|| "消息处理失败".to_string())
|
||||
}),
|
||||
));
|
||||
return;
|
||||
}
|
||||
|
||||
let final_session = match state
|
||||
.spacetime_client()
|
||||
@@ -1113,6 +1163,14 @@ fn map_custom_world_client_error(error: SpacetimeClientError) -> AppError {
|
||||
{
|
||||
StatusCode::NOT_FOUND
|
||||
}
|
||||
SpacetimeClientError::Procedure(message)
|
||||
if message.contains("当前模型不可用")
|
||||
|| message.contains("设定生成失败")
|
||||
|| message.contains("解析失败")
|
||||
|| message.contains("缺少有效回复") =>
|
||||
{
|
||||
StatusCode::BAD_GATEWAY
|
||||
}
|
||||
SpacetimeClientError::Runtime(_) => StatusCode::BAD_REQUEST,
|
||||
_ => StatusCode::BAD_GATEWAY,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user