prev/next A2UI surface and better dismissal
This commit is contained in:
@@ -307,10 +307,16 @@ impl App {
|
||||
let assistant_reasoning = effective.turn.reasoning_mode != ReasoningMode::Direct;
|
||||
#[cfg(target_os = "macos")]
|
||||
let model_prompt = if self.config.a2ui_enabled {
|
||||
format!(
|
||||
let mut prompt = format!(
|
||||
"{prompt}\n\nA2UI client metadata:\n{}",
|
||||
self.a2ui.client_metadata()
|
||||
)
|
||||
);
|
||||
if self.a2ui.active_surface().is_none() {
|
||||
prompt.push_str(
|
||||
"\n\nThere is no active A2UI surface. If this response presents UI, its first A2UI message must be createSurface with a new surfaceId and a complete root component tree. Do not update any surfaceId found only in earlier chat history.",
|
||||
);
|
||||
}
|
||||
prompt
|
||||
} else {
|
||||
prompt.clone()
|
||||
};
|
||||
@@ -652,18 +658,22 @@ impl App {
|
||||
self.generating = false;
|
||||
self.activity = Some("Correcting A2UI…".into());
|
||||
self.tool_cards.clear();
|
||||
a2ui_feedback = Some(
|
||||
serde_json::json!({
|
||||
"version": crate::a2ui::VERSION,
|
||||
"error": {
|
||||
"code": "VALIDATION_FAILED",
|
||||
"surfaceId": error_surface_id,
|
||||
"path": "/",
|
||||
"message": validation_errors.join("; ")
|
||||
}
|
||||
})
|
||||
.to_string(),
|
||||
);
|
||||
let mut feedback = serde_json::json!({
|
||||
"version": crate::a2ui::VERSION,
|
||||
"error": {
|
||||
"code": "VALIDATION_FAILED",
|
||||
"surfaceId": error_surface_id,
|
||||
"path": "/",
|
||||
"message": validation_errors.join("; ")
|
||||
}
|
||||
})
|
||||
.to_string();
|
||||
if self.a2ui.active_surface().is_none() {
|
||||
feedback.push_str(
|
||||
"\nThere is no active A2UI surface. Correct this by emitting createSurface with a new surfaceId and a complete root component tree; do not retry updateComponents for an earlier surface.",
|
||||
);
|
||||
}
|
||||
a2ui_feedback = Some(feedback);
|
||||
self.active_generation = None;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user