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
|
|
@ -70,7 +70,8 @@ fn wait_for_raw_bytes(harness: &mut PtyHarness, needle: &[u8], timeout: Duration
|
|||
async fn unknown_brand_probe_round_trip() {
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut harness =
|
||||
PtyHarness::new(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV).expect("spawn pager");
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV, None)
|
||||
.expect("spawn pager");
|
||||
|
||||
assert!(
|
||||
wait_for_raw_bytes(&mut harness, XTVERSION_QUERY, WELCOME_TIMEOUT),
|
||||
|
|
@ -106,7 +107,8 @@ async fn allowlisted_brand_probe_fires() {
|
|||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut env = UNKNOWN_BRAND_ENV.to_vec();
|
||||
env.push(("TERM_PROGRAM", "WezTerm"));
|
||||
let mut harness = PtyHarness::new(&binary, ROWS, COLS, &[], &env).expect("spawn pager");
|
||||
let mut harness =
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], &env, None).expect("spawn pager");
|
||||
|
||||
assert!(
|
||||
wait_for_raw_bytes(&mut harness, XTVERSION_QUERY, WELCOME_TIMEOUT),
|
||||
|
|
@ -136,8 +138,15 @@ async fn allowlisted_brand_probe_fires() {
|
|||
#[ignore]
|
||||
async fn non_allowlisted_brand_skips_probe() {
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut harness = PtyHarness::new(&binary, ROWS, COLS, &[], &[("TERM_PROGRAM", "vscode")])
|
||||
.expect("spawn pager");
|
||||
let mut harness = PtyHarness::new_inherited_env(
|
||||
&binary,
|
||||
ROWS,
|
||||
COLS,
|
||||
&[],
|
||||
&[("TERM_PROGRAM", "vscode")],
|
||||
None,
|
||||
)
|
||||
.expect("spawn pager");
|
||||
|
||||
harness
|
||||
.wait_for_text(WELCOME_SCREEN_SENTINEL, WELCOME_TIMEOUT)
|
||||
|
|
@ -161,7 +170,8 @@ async fn multiplexer_skips_probe() {
|
|||
let mut env = UNKNOWN_BRAND_ENV.to_vec();
|
||||
env.push(("TMUX", "/tmp/tmux-1000/default,12345,0"));
|
||||
env.push(("TMUX_PANE", "%0"));
|
||||
let mut harness = PtyHarness::new(&binary, ROWS, COLS, &[], &env).expect("spawn pager");
|
||||
let mut harness =
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], &env, None).expect("spawn pager");
|
||||
|
||||
harness
|
||||
.wait_for_text(WELCOME_SCREEN_SENTINEL, WELCOME_TIMEOUT)
|
||||
|
|
@ -182,7 +192,8 @@ async fn multiplexer_skips_probe() {
|
|||
async fn unknown_brand_no_reply_starts_cleanly() {
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut harness =
|
||||
PtyHarness::new(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV).expect("spawn pager");
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV, None)
|
||||
.expect("spawn pager");
|
||||
|
||||
harness
|
||||
.wait_for_text(WELCOME_SCREEN_SENTINEL, WELCOME_TIMEOUT)
|
||||
|
|
@ -211,7 +222,8 @@ async fn unknown_brand_no_reply_starts_cleanly() {
|
|||
async fn unknown_brand_malformed_reply_is_discarded() {
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut harness =
|
||||
PtyHarness::new(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV).expect("spawn pager");
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV, None)
|
||||
.expect("spawn pager");
|
||||
|
||||
assert!(
|
||||
wait_for_raw_bytes(&mut harness, XTVERSION_QUERY, WELCOME_TIMEOUT),
|
||||
|
|
@ -248,7 +260,8 @@ async fn unknown_brand_malformed_reply_is_discarded() {
|
|||
async fn unknown_brand_late_reply_swallowed_and_recorded() {
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut harness =
|
||||
PtyHarness::new(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV).expect("spawn pager");
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV, None)
|
||||
.expect("spawn pager");
|
||||
|
||||
assert!(
|
||||
wait_for_raw_bytes(&mut harness, XTVERSION_QUERY, WELCOME_TIMEOUT),
|
||||
|
|
@ -283,7 +296,8 @@ async fn unknown_brand_late_reply_swallowed_and_recorded() {
|
|||
async fn unknown_brand_keystrokes_interleaved_with_reply() {
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut harness =
|
||||
PtyHarness::new(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV).expect("spawn pager");
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV, None)
|
||||
.expect("spawn pager");
|
||||
|
||||
assert!(
|
||||
wait_for_raw_bytes(&mut harness, XTVERSION_QUERY, WELCOME_TIMEOUT),
|
||||
|
|
@ -315,7 +329,8 @@ async fn unknown_brand_keystrokes_interleaved_with_reply() {
|
|||
async fn unknown_brand_split_reply_round_trip() {
|
||||
let binary = pager_binary().expect("resolve pager binary");
|
||||
let mut harness =
|
||||
PtyHarness::new(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV).expect("spawn pager");
|
||||
PtyHarness::new_inherited_env(&binary, ROWS, COLS, &[], UNKNOWN_BRAND_ENV, None)
|
||||
.expect("spawn pager");
|
||||
|
||||
assert!(
|
||||
wait_for_raw_bytes(&mut harness, XTVERSION_QUERY, WELCOME_TIMEOUT),
|
||||
|
|
|
|||
Loading…
Reference in a new issue