Synced from monorepo
Synced from monorepo Changes: - Temporarily disable session share link creation in the TUI - Do not approve plan on empty Enter from the revise prompt - Expose chat product Skills via ACP available_commands_update - Return immediately from a blocking wait on an already-completed ACP task - Split headless pager module for clearer structure - Stop git worktree prune from removing user registrations on resume - Use compaction sampler tokenizer for item token counts - Opt-in extra root CAs via GROK_EXTRA_CA_BUNDLE - Cancel all session subagents when the user stops - Let the session persistence actor exit when its session ends - Make fullscreen terminal resize much cheaper on long sessions - Report honestly from kill_task when an ACP task does not exist - Hide /usage for external-auth deployments - Forward the history-load trailer’s computer_reason to the client - Remove ineffective no-op tool reminder - Declare slash-command screen-mode support in one place - Keep settings enum picker on the committed value until Enter - Reap a PTY’s full process tree - Stream tool calls from headless mode over ACP - Bridge gateway task lifecycle to ACP for chat session background tasks - Don’t warn about truncated history on a suppressed replay - Fit full-replace summarizer input and recover on context-length errors - Stop dropping agents over an unrecognized frontmatter color - Add /undo as a slash alias for /rewind - Harden sleep/wake token-refresh paths against forced re-login - Add session/list ACP method - Give each sampling backend its own conversion module - Treat an unenrolled child process as a lint error - Suppress the cancelled marker on send-now wake turns - Stop tearing down Roslyn on every edit, and read C# diagnostics Source-Revision: 2a28b4a86cfc4a4c133c35b7fc2a6a9964387c39
This commit is contained in:
parent
500129c714
commit
dd04f397b1
367 changed files with 29489 additions and 10051 deletions
|
|
@ -901,6 +901,7 @@ mod tests {
|
|||
.stderr(std::process::Stdio::null())
|
||||
.envs(xai_tty_utils::pager_env());
|
||||
xai_tty_utils::detach_std_command(&mut cmd);
|
||||
#[allow(clippy::disallowed_methods)] // test fixture; the test reaps it
|
||||
let child = cmd.spawn().expect("spawn fake persistent leader");
|
||||
let pid = child.id();
|
||||
let tree = TestProcessTree::try_attach(pid, "fake persistent leader")
|
||||
|
|
|
|||
|
|
@ -58,6 +58,10 @@ impl LogEntry {
|
|||
}
|
||||
}
|
||||
|
||||
/// Requests kept for inspection; each holds a whole conversation, so an
|
||||
/// unbounded log outgrows what it is testing. `request_count` stays exact.
|
||||
const MAX_LOGGED_REQUESTS: usize = 1024;
|
||||
|
||||
pub struct RequestLog {
|
||||
count: AtomicU32,
|
||||
entries: std::sync::Mutex<Vec<LogEntry>>,
|
||||
|
|
@ -80,7 +84,11 @@ impl RequestLog {
|
|||
headers: Vec<(String, String)>,
|
||||
) {
|
||||
self.count.fetch_add(1, Ordering::SeqCst);
|
||||
self.entries.lock().unwrap().push(LogEntry {
|
||||
let mut entries = self.entries.lock().unwrap();
|
||||
if entries.len() >= MAX_LOGGED_REQUESTS {
|
||||
entries.remove(0);
|
||||
}
|
||||
entries.push(LogEntry {
|
||||
method: method.to_string(),
|
||||
path: path.to_string(),
|
||||
body: body.cloned(),
|
||||
|
|
|
|||
|
|
@ -1006,6 +1006,7 @@ mod tests {
|
|||
let mut command = std::process::Command::new("/bin/sh");
|
||||
command.args(["-c", "exit 23"]);
|
||||
xai_tty_utils::detach_std_command(&mut command);
|
||||
#[allow(clippy::disallowed_methods)] // test fixture; the test reaps it
|
||||
let mut child = command.spawn().expect("spawn observation fixture");
|
||||
let deadline = std::time::Instant::now() + Duration::from_secs(2);
|
||||
while !process_has_exited_without_reap(child.id(), "observation fixture")
|
||||
|
|
|
|||
Loading…
Reference in a new issue