Synced from monorepo
Synced from monorepo Changes: - Workspace server: report `/ready` as failed with dwell on hub connect failure - Refresh OIDC token for the Grok agent in the shell - ACP terminal output recorder - Cross-platform provider auth commands in the shell - Default `/resume` to Grok sessions with a hint for hidden external sessions - Resume sessions by title with `--resume` - Limit app-builder archive size - Data-driven tag labels for slash commands - Doctor fixes for tmux - Custom provider gateways and subprocess environment policy in the shell - `/tutorial` — opt-in onboarding tour of Grok Build - Soft and required CLI version checks in the shell - Privacy banner env overrides survive live settings updates - Add remote flag to override the image-edit model - Return profile fields from auth info even when the access token is expired - Add edit control on queued prompt rows - Keep fail-closed policy when clearing orphans with no team - Setting to disable the Ctrl+Space/F8 voice shortcut - Pass `--raw` to pw-record so Linux dictation works on older PipeWire - Validate git URLs when adding marketplace entries - Stop shipping stale tool-doc parameter and tool names - Re-point dashboard attach after `/fork` only when the parent was attached - Surface Grok Computer media-generation results as file-path chunks - Clear web background-task tray on kill and keep the task description - Show privacy upsell banner in agent view until acted on - Add tools-server client callback surface - Protect persistent global hook sources Source-Revision: 95d84f443eddcbed6cbfd6eed22e2eafe6b3939d
This commit is contained in:
parent
a5727c5960
commit
69f0ba880a
286 changed files with 22939 additions and 9624 deletions
|
|
@ -138,6 +138,63 @@ pub fn collect_doctor_tui<'a>(
|
|||
/// Collect standalone evidence without running live tmux subprocesses; skipped
|
||||
/// tmux evidence is reported unavailable so a stuck server cannot block doctor.
|
||||
pub fn collect_standalone<'a>(terminal: &'a TerminalContext) -> StandaloneDiagnosticSnapshot<'a> {
|
||||
collect_standalone_with_tmux(terminal, unavailable_tmux())
|
||||
}
|
||||
|
||||
/// Collect bounded live tmux facts for explicit fix planning.
|
||||
pub fn collect_standalone_fix<'a>(
|
||||
terminal: &'a TerminalContext,
|
||||
id: Option<crate::diagnostics::DiagnosticId>,
|
||||
) -> StandaloneDiagnosticSnapshot<'a> {
|
||||
collect_standalone_with_tmux(terminal, collect_tmux_fix(terminal, id, &LiveTmuxProbe))
|
||||
}
|
||||
|
||||
fn collect_tmux_fix(
|
||||
terminal: &TerminalContext,
|
||||
id: Option<crate::diagnostics::DiagnosticId>,
|
||||
tmux: &dyn TmuxOptionQuery,
|
||||
) -> TmuxProbeFacts {
|
||||
if !terminal.is_tmux_backed() {
|
||||
return unavailable_tmux();
|
||||
}
|
||||
let wants = |candidate| id.is_none() || id == Some(candidate);
|
||||
let set_clipboard = if wants(crate::diagnostics::TMUX_CLIPBOARD_ID) {
|
||||
tmux.show_option("set-clipboard")
|
||||
} else {
|
||||
TmuxProbeResult::Unavailable
|
||||
};
|
||||
let extended_keys = if wants(crate::diagnostics::TMUX_EXTENDED_KEYS_ID) {
|
||||
tmux.show_option("extended-keys")
|
||||
} else {
|
||||
TmuxProbeResult::Unavailable
|
||||
};
|
||||
let (allow_passthrough_support, allow_passthrough) =
|
||||
if wants(crate::diagnostics::DCS_PASSTHROUGH_ID) {
|
||||
let support = tmux.option_support("allow-passthrough");
|
||||
let value = match &support {
|
||||
TmuxProbeResult::Available(()) => tmux.show_option("allow-passthrough"),
|
||||
TmuxProbeResult::Unsupported => TmuxProbeResult::Unsupported,
|
||||
TmuxProbeResult::Unavailable => TmuxProbeResult::Unavailable,
|
||||
TmuxProbeResult::Error(error) => TmuxProbeResult::Error(error.clone()),
|
||||
};
|
||||
(support, value)
|
||||
} else {
|
||||
(TmuxProbeResult::Unavailable, TmuxProbeResult::Unavailable)
|
||||
};
|
||||
TmuxProbeFacts {
|
||||
version: TmuxProbeResult::Unavailable,
|
||||
extended_keys,
|
||||
set_clipboard,
|
||||
allow_passthrough_support,
|
||||
allow_passthrough,
|
||||
control_mode: TmuxProbeResult::Unavailable,
|
||||
}
|
||||
}
|
||||
|
||||
fn collect_standalone_with_tmux<'a>(
|
||||
terminal: &'a TerminalContext,
|
||||
tmux: TmuxProbeFacts,
|
||||
) -> StandaloneDiagnosticSnapshot<'a> {
|
||||
let host_os = crate::host::HostOs::current();
|
||||
let display_server = crate::host::DisplayServer::current();
|
||||
let is_wayland = display_server == crate::host::DisplayServer::Wayland;
|
||||
|
|
@ -146,7 +203,7 @@ pub fn collect_standalone<'a>(terminal: &'a TerminalContext) -> StandaloneDiagno
|
|||
let container_no_display = xai_grok_shell::util::clipboard::is_containerized_without_display();
|
||||
collect_standalone_from(
|
||||
terminal,
|
||||
unavailable_tmux(),
|
||||
tmux,
|
||||
WaylandProbeFacts {
|
||||
is_wayland,
|
||||
data_control,
|
||||
|
|
@ -292,7 +349,7 @@ fn collect_tmux(
|
|||
.tmux_extended_keys
|
||||
.clone()
|
||||
.map(TmuxProbeResult::Available)
|
||||
.unwrap_or(TmuxProbeResult::Unavailable),
|
||||
.unwrap_or_else(|| tmux.show_option("extended-keys")),
|
||||
set_clipboard: tmux.show_option("set-clipboard"),
|
||||
allow_passthrough_support,
|
||||
allow_passthrough,
|
||||
|
|
@ -387,7 +444,11 @@ mod tests {
|
|||
);
|
||||
assert_eq!(
|
||||
fake.calls.into_inner(),
|
||||
["support:allow-passthrough", "set-clipboard"]
|
||||
[
|
||||
"support:allow-passthrough",
|
||||
"extended-keys",
|
||||
"set-clipboard"
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -406,7 +467,12 @@ mod tests {
|
|||
assert_eq!(snapshot.tmux.control_mode, TmuxProbeResult::Available(true));
|
||||
assert_eq!(
|
||||
fake.calls.into_inner(),
|
||||
["support:allow-passthrough", "set-clipboard", "control-mode"]
|
||||
[
|
||||
"support:allow-passthrough",
|
||||
"extended-keys",
|
||||
"set-clipboard",
|
||||
"control-mode",
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue