mirror of
https://github.com/openai/codex.git
synced 2026-11-07 00:33:29 +00:00
## Disclaimer Do not use for now ## Why Extensions can already contribute prompt fragments and request same-turn item injection, but there was no host-owned hook for contributing structured `ResponseItem`s while Codex is assembling a new turn's initial model input. This change adds that seam so extensions can attach turn-local input that depends on the submitted user input and resolved turn environments without routing through prompt text or late injection. ## What changed - add `TurnInputContributor` to `codex_extension_api` and export the new `TurnInputContext` / `TurnInputEnvironment` types it receives - teach `ExtensionRegistry` to register and expose turn-input contributors alongside the existing extension hooks - call registered turn-input contributors from `core/src/session/turn.rs` while building the initial injected input for a turn, then append their returned `ResponseItem`s after the skill and plugin injections
26 lines
888 B
Rust
26 lines
888 B
Rust
use std::path::PathBuf;
|
|
|
|
use codex_protocol::user_input::UserInput;
|
|
|
|
/// Host-owned turn environment summary visible to turn-input contributors.
|
|
#[derive(Debug, Clone)]
|
|
pub struct TurnInputEnvironment {
|
|
/// Stable host environment id used to route executor-scoped capabilities.
|
|
pub environment_id: String,
|
|
/// Effective working directory for this turn in the environment.
|
|
pub cwd: PathBuf,
|
|
/// Whether this is the primary environment for the turn.
|
|
pub is_primary: bool,
|
|
}
|
|
|
|
/// Turn facts supplied before the host records turn-local model input items.
|
|
#[derive(Debug, Clone)]
|
|
pub struct TurnInputContext {
|
|
/// Stable host-owned turn identifier.
|
|
pub turn_id: String,
|
|
/// User input submitted for this turn.
|
|
pub user_input: Vec<UserInput>,
|
|
/// Resolved turn environments, in host priority order.
|
|
pub environments: Vec<TurnInputEnvironment>,
|
|
}
|