Synced from monorepo

Changes:
- Stop hooks for session lifecycle
- Add x.ai/session/state and x.ai/session/import ACP methods
- Deny-and-continue for auto-mode classifier blocks with denial limits
- Drop codebase-upload from dhat soak test
- scheduler_create upsert via task_id; retire one-shot tasks
- Clipboard: copy file fallback + honest toasts for SSH/Apple Terminal
- Polarity-safe syntax colors in minimal mode
- Auto mode classifies unvetted env prefixes instead of hard-prompting
- Add GROK_CLIPBOARD_NO_OSC52 kill switch to force OSC 52 off
This commit is contained in:
grokkybara[bot] 2026-07-19 18:40:33 +01:00
commit ba76b0a683
143 changed files with 9465 additions and 3419 deletions

View file

@ -556,6 +556,20 @@ impl ChatStateHandle {
.flatten()
}
/// Get the current turn's last assistant message text, or `None` when the
/// turn produced none (or the actor is dead). Turn-scoped, unlike
/// [`get_last_assistant_text`], and cheaper than [`get_conversation`].
///
/// [`get_conversation`]: Self::get_conversation
/// [`get_last_assistant_text`]: Self::get_last_assistant_text
pub async fn get_last_assistant_text_in_turn(&self) -> Option<String> {
self.query("GetLastAssistantTextInTurn", |reply| {
ChatStateCommand::GetLastAssistantTextInTurn { reply }
})
.await
.flatten()
}
/// Get the text of the first `Text` content part in the first `User` message.
///
/// Returns `None` if no user message with text content exists or the actor