mirror of
https://github.com/openai/codex.git
synced 2026-11-09 20:50:33 +00:00
## Why First-party async traits should expose their `Send` contracts explicitly without requiring `async_trait`. This completes the migration pattern established in #27303 and #27304. ## What changed - Replaced the remaining first-party `async_trait` traits with native return-position `impl Future + Send` where statically dispatched and explicit boxed `Send` futures where object safety is required. - Kept implementations behavior-preserving, outlining existing async bodies into inherent methods where that keeps the diff reviewable. - Removed all direct first-party `async-trait` dependencies and the workspace dependency declaration. - Added a cargo-deny policy that permits `async-trait` only through the remaining transitive wrapper crates. - Updated `rand` from 0.8.5 to 0.8.6 to resolve RUSTSEC-2026-0097 and keep the full cargo-deny check passing. ## Validation - `just test -p codex-exec-server`: 216 passed, 2 skipped. - `just test -p codex-model-provider`: 39 passed. - `just test -p codex-core` and `just test`: changed tests passed; remaining failures are environment-sensitive suites unrelated to this migration. - `cargo deny check` - `just fix` - `just fmt` - `cargo shear` - `just bazel-lock-check`
20 lines
582 B
Rust
20 lines
582 B
Rust
use std::future::Future;
|
|
use std::pin::Pin;
|
|
|
|
use codex_utils_absolute_path::AbsolutePathBuf;
|
|
|
|
use crate::unix::escalate_protocol::EscalationDecision;
|
|
|
|
/// Decides what action to take in response to an execve request from a client.
|
|
pub trait EscalationPolicy: Send + Sync {
|
|
fn determine_action<'a>(
|
|
&'a self,
|
|
file: &'a AbsolutePathBuf,
|
|
argv: &'a [String],
|
|
workdir: &'a AbsolutePathBuf,
|
|
) -> EscalationPolicyFuture<'a>;
|
|
}
|
|
|
|
pub type EscalationPolicyFuture<'a> =
|
|
Pin<Box<dyn Future<Output = anyhow::Result<EscalationDecision>> + Send + 'a>>;
|