Synced from monorepo

Synced from monorepo

Changes:
- Release a shell session's resources in one drop
- Make the tools blocking-wait cap client-configurable and self-describing
- Recognize API "exceeds budget" errors as context overflow
- Retry /btw on model overload
- Carry running background tasks and subagents across compaction
- Require round-trip time for SDK liveness checks
- Background-subagent completion reminders with a selectable delivery surface
- Make a PTY shell reap itself until it reaches the registry
- Recover the OS error code from a TLS-phase connection reset
- Consume the attached-client signal and report why idle is withheld
- Treat `.grok/sandbox.toml` edits as protected so auto mode prompts before writing
- Surface history/search in the Ctrl+. cheatsheet and keep it working in history view
- Delete sessions from the dashboard and welcome list
- Release a session's activity record when the session ends
- Stop charging auth-retry budget for fail-closed 401s; reset it across suspends
- Scope skills watches on project vendor roots
- Make [stop] cancel in-flight compaction
- Make the leader soak measure the leader, not its harness

Source-Revision: 8d69c91f02bcacf01e98d5aebbf2f92547c45738
This commit is contained in:
grokkybara[bot] 2026-07-31 18:08:03 +00:00
commit a422116582
165 changed files with 15161 additions and 1969 deletions

View file

@ -418,6 +418,25 @@ pub struct HookRunEntryDto {
pub output: Option<String>,
}
/// Why auto-compaction stopped before completing.
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
serde::Serialize,
serde::Deserialize,
strum::Display,
strum::EnumString,
strum::AsRefStr,
)]
#[serde(rename_all = "snake_case")]
#[strum(serialize_all = "snake_case")]
pub enum AutoCompactCancelReason {
UserCancelled,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
#[serde(rename_all = "snake_case", tag = "sessionUpdate")]
pub enum SessionUpdate {
@ -483,7 +502,7 @@ pub enum SessionUpdate {
/// Auto-compact was cancelled (user pressed Ctrl+C)
AutoCompactCancelled {
/// Reason for cancellation
reason: String,
reason: AutoCompactCancelReason,
},
/// Auto-continue completed after compaction
/// This signals the TUI to flush pending agent messages and end the turn
@ -1704,6 +1723,16 @@ mod tests {
let update: SessionUpdate = serde_json::from_str(json).unwrap();
assert_eq!(update, SessionUpdate::MemoryFlushStarted);
// AutoCompactCancelled (strenum reason)
let json = r#"{"sessionUpdate": "auto_compact_cancelled", "reason": "user_cancelled"}"#;
let update: SessionUpdate = serde_json::from_str(json).unwrap();
assert_eq!(
update,
SessionUpdate::AutoCompactCancelled {
reason: AutoCompactCancelReason::UserCancelled,
}
);
// AutoCompactFailed (struct variant)
let json = r#"{"sessionUpdate": "auto_compact_failed", "error": "oom"}"#;
let update: SessionUpdate = serde_json::from_str(json).unwrap();