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

@ -341,9 +341,18 @@ pub fn attach_result_usage_fail_closed(result: &mut serde_json::Value, usage: &s
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
#[serde(rename_all = "camelCase", tag = "status")]
pub enum HookRunStatusDto {
Success { elapsed_ms: u64 },
Success {
elapsed_ms: u64,
},
Skipped,
Failed { error: String, elapsed_ms: u64 },
Failed {
error: String,
elapsed_ms: u64,
/// Stop-gate block (the hook's decision, not a failure). Rides `failed`
/// so old pagers keep rendering it. TODO: promote to a dedicated status.
#[serde(default, skip_serializing_if = "std::ops::Not::not")]
blocked: bool,
},
}
/// A single hook run entry (wire format).
@ -461,7 +470,6 @@ pub enum SessionUpdate {
HookExecution {
/// The hook event name ("pre_tool_use" or "post_tool_use").
event_name: String,
/// The tool name this hook is associated with.
#[serde(default, skip_serializing_if = "Option::is_none")]
tool_name: Option<String>,
/// The prompt turn this batch belongs to, when known; lets the
@ -469,7 +477,6 @@ pub enum SessionUpdate {
/// turn's marker.
#[serde(default, skip_serializing_if = "Option::is_none")]
prompt_id: Option<String>,
/// Individual hook run results.
runs: Vec<HookRunEntryDto>,
},
/// Hooks registry changed (after reload or trust/untrust).
@ -691,6 +698,8 @@ pub enum SessionUpdate {
prompt: String,
human_schedule: String,
next_fire_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
subagent_id: Option<String>,
},
/// A scheduled task was deleted/cancelled.
ScheduledTaskDeleted { task_id: String },