Synced from monorepo
Changes: - Non-blocking coding-data sharing upsell banner - Consolidate remediation in Doctor - Auto mode defers fail-closed gate asks to the classifier - Coalesce marketplace list fetches - Allow removing a marketplace source by name - Contain hung git marketplace sources (timeouts, non-blocking refresh, unbrick modal) - Label failed workspace RPCs with error_kind - Drop redundant explicit tonic/prost deps from xai-grok-shell - Report real exit codes for completed background shells - Narrow the date-rollover reminder to date-bearing templates - Wire toolOverrides through the session and agent - Security: Bash(git:*) allowlist matches whole command chain by prefix - Split prompt-trigger telemetry and record classifier provenance - Raise connectors-manager timeout to 60s - Auto classifier honors recorded approvals for repeat actions - Apply doctor fixes in the TUI - Auto-mode classifier timeouts prompt instead of silently denying - Scope subagent completion drains to the owning session - Add the toolOverrides wire types - Set client_identifier=grok-agent-sdk - Accept both spellings of the workspace-teleport kill switch - Persist one-shot occurrence journal - Stop turns that poll the exact same tool call 16x in a row - Copy compaction checkpoint files when forking sessions - Auto-focus permission prompt from scrollback - Esc cancels the running turn in non-vim and minimal modes - List Ctrl+Z undo and redo in keyboard shortcuts - Out-of-process macOS mic capture - Show active auth mode on session-info - Install the npm binary under $GROK_HOME - Remove hover/click dead zones between dashboard items - Route startup warnings to doctor - Document [feedback.user] author identity config - Extend bang command timeout - Close combine-queued edit-hold race - Integrate relocation recovery - Expose privacy notice rollout flag - Break harness discovery ref cycle so connections can idle-evict - Shift/Alt+Enter inserts newline when editing a queued prompt - Gate project Claude permissions on folder trust - Echo response.create.event_id on response.created - Toast when session creation fails from disk full - Add shared test process lifecycle - Enable dynamic workflows by default - Add relocation transaction state machine - Add shared test sandbox - Surface auth failures on model-switch compact - Persist durable scheduler expiry - Confirm before removing extensions-modal items - Re-run compact and prompt after login when compact hit expired auth - Recap sends hosted tools under backend search
This commit is contained in:
parent
3af4d5d398
commit
a5727c5960
482 changed files with 37627 additions and 13402 deletions
|
|
@ -57,16 +57,14 @@ async fn campaign_leader_mode_remote_dismiss_on_model_pick() {
|
|||
// structurally unreachable (see `spawn_polling_session`'s doc).
|
||||
seed_fake_oauth(&content, "pty-campaign-leader");
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let env = oauth_env_for_pager(&content);
|
||||
let spawn = || -> PtyHarness {
|
||||
let env_refs: Vec<(&str, &str)> =
|
||||
env.iter().map(|(k, v)| (k.as_str(), v.as_str())).collect();
|
||||
PtyHarness::new(
|
||||
PtyHarness::spawn_with_content_env_ops(
|
||||
&binary,
|
||||
DEFAULT_ROWS,
|
||||
DEFAULT_COLS,
|
||||
&content,
|
||||
&["--leader", "--leader-socket", &socket],
|
||||
&env_refs,
|
||||
&oauth_credential_ops(),
|
||||
)
|
||||
.expect("spawn leader-mode pager")
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ pub(crate) use serde_json::json;
|
|||
pub(crate) use std::time::{Duration, Instant};
|
||||
pub(crate) use xai_grok_pager_pty_harness::{
|
||||
ContentController, LeaderCluster, MockModel, PtyHarness, inference_request_count, keys,
|
||||
oauth_env_for_pager, pager_binary, seed_fake_oauth, submit_turn, wait_for_labels_absent,
|
||||
oauth_credential_ops, pager_binary, seed_fake_oauth, submit_turn, wait_for_labels_absent,
|
||||
wait_for_model_via_new_sessions,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ async fn leader_n_clients_shared_session() {
|
|||
for (i, v) in viewers.iter_mut().enumerate() {
|
||||
v.update(Duration::from_secs(3));
|
||||
assert!(
|
||||
v.is_running(),
|
||||
v.is_running().expect("poll pager liveness"),
|
||||
"viewer {i} exited after the driver quit\nscreen:\n{}",
|
||||
v.screen_contents()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ async fn leader_reattach_cancellation_roundtrips_durable_log() {
|
|||
a.wait_for_text(&turn_sentinel(1), STREAM_TIMEOUT)
|
||||
.expect("A turn streaming");
|
||||
|
||||
// Ctrl+C on an empty prompt cancels while streaming (Esc no longer cancels).
|
||||
// Ctrl+C on an empty prompt cancels while streaming.
|
||||
a.inject_keys(keys::CTRL_C).expect("A press ctrl+c");
|
||||
a.update(Duration::from_millis(200));
|
||||
// Generous budget: the heavy multi-client leader cluster drains the paced
|
||||
|
|
@ -85,7 +85,7 @@ async fn leader_reattach_cancellation_roundtrips_durable_log() {
|
|||
// the durable replay (not a fixed long sleep that would mask a hang).
|
||||
c.update(Duration::from_millis(500));
|
||||
assert!(
|
||||
c.is_running(),
|
||||
c.is_running().expect("poll pager liveness"),
|
||||
"C exited after A quit\nscreen:\n{}",
|
||||
c.screen_contents()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ async fn leader_reattach_completion_roundtrips_durable_log() {
|
|||
wait_for_labels_absent(&mut c, &["Waiting"], Duration::from_secs(5));
|
||||
|
||||
assert!(
|
||||
c.is_running(),
|
||||
c.is_running().expect("poll pager liveness"),
|
||||
"C exited unexpectedly\nscreen:\n{}",
|
||||
c.screen_contents()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ async fn leader_two_clients_shared_session() {
|
|||
}
|
||||
|
||||
assert!(
|
||||
h.is_running(),
|
||||
h.is_running().expect("poll pager liveness"),
|
||||
"pager {name} exited\nscreen:\n{}",
|
||||
h.screen_contents()
|
||||
);
|
||||
|
|
@ -132,7 +132,7 @@ async fn leader_two_clients_shared_session() {
|
|||
drop(a);
|
||||
b.update(Duration::from_secs(3));
|
||||
assert!(
|
||||
b.is_running(),
|
||||
b.is_running().expect("poll pager liveness"),
|
||||
"B exited after A quit\nscreen:\n{}",
|
||||
b.screen_contents()
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in a new issue