mirror of
https://github.com/openai/codex.git
synced 2026-11-12 14:41:42 +00:00
## What changed - Add an extension API for spawning host-owned internal sessions and a `ThreadReadyInput` lifecycle callback that runs after thread registration. - Add Guardian reviewer session scaffolding that records the parent thread and effective model, plus the under-development `guardian_ext` feature flag. - Start internal sessions with fresh history while preserving parent lineage, shared session controls, and internal-thread visibility rules. - Scope internal-session prompt cache keys to their source and parent thread, and expose `guardian` as an internal session source. ## Testing - Cover internal-session spawning, parent metadata, history isolation, prompt cache keys, and extension spawner argument forwarding. GitOrigin-RevId: 682dae80397d62bb36247796b447042e760ca364
39 lines
1.2 KiB
Rust
39 lines
1.2 KiB
Rust
use codex_protocol::ThreadId;
|
|
|
|
use super::agent::AgentSpawnFuture;
|
|
|
|
/// Future returned by one host-owned internal-session spawning request.
|
|
pub type InternalSessionSpawnFuture<'a, T, E> = AgentSpawnFuture<'a, T, E>;
|
|
|
|
/// Constructor-injected host helper for extensions that need private internal sessions.
|
|
///
|
|
/// The extension owns the request shape and resulting handle types. The host
|
|
/// provides the implementation when it constructs the extension.
|
|
pub trait InternalSessionSpawner<R>: Send + Sync {
|
|
type Spawned;
|
|
type Error;
|
|
|
|
/// Starts a fresh host-owned internal session associated with its parent.
|
|
fn spawn_internal_session<'a>(
|
|
&'a self,
|
|
parent_thread_id: ThreadId,
|
|
request: R,
|
|
) -> InternalSessionSpawnFuture<'a, Self::Spawned, Self::Error>;
|
|
}
|
|
|
|
impl<R, S, E, F> InternalSessionSpawner<R> for F
|
|
where
|
|
F: Fn(ThreadId, R) -> InternalSessionSpawnFuture<'static, S, E> + Send + Sync,
|
|
{
|
|
type Spawned = S;
|
|
type Error = E;
|
|
|
|
fn spawn_internal_session<'a>(
|
|
&'a self,
|
|
parent_thread_id: ThreadId,
|
|
request: R,
|
|
) -> InternalSessionSpawnFuture<'a, Self::Spawned, Self::Error> {
|
|
self(parent_thread_id, request)
|
|
}
|
|
}
|