pub struct CodexProvider;Expand description
Codex provider. Argv mirrors codex.py (codex exec --json ... /
codex exec resume <id> --json ...); the stream parser is pinned to the
codex 0.130 JSONL vocabulary captured in
cli/tests/agents/fixtures/codex-jsonl-sample.jsonl.
Trait Implementations§
Source§impl Provider for CodexProvider
impl Provider for CodexProvider
Source§fn create_argv(&self, ctx: &CreateContext) -> Vec<String>
fn create_argv(&self, ctx: &CreateContext) -> Vec<String>
Argv for a fresh session.
Source§fn resume_argv(&self, ctx: &ResumeContext) -> Vec<String>
fn resume_argv(&self, ctx: &ResumeContext) -> Vec<String>
Argv for continuing a session.
Source§fn create_interactive_argv(&self, ctx: &CreateContext) -> Option<Vec<String>>
fn create_interactive_argv(&self, ctx: &CreateContext) -> Option<Vec<String>>
Argv for a fresh interactive session (
host_mode = interactive, the
fno agents host verb). Default None: claude has no abi-hosted
interactive form (it drives via its own --bg surface), so host
rejects provider=claude before reaching here. codex/gemini override.
Returning None keeps the “not interactive-hostable” fact in the type
system rather than as a panicking no-op (the same discipline as
Provider::as_pty).Source§fn resume_interactive_argv(&self, ctx: &ResumeContext) -> Option<Vec<String>>
fn resume_interactive_argv(&self, ctx: &ResumeContext) -> Option<Vec<String>>
Argv for resuming an existing session interactively (the
fno agents promote --from <uuid> verb). ctx.session_id is the resume
target UUID. Default None (claude); codex/gemini override.Source§fn parse_stream_event(&self, chunk: &str) -> ParsedEvent
fn parse_stream_event(&self, chunk: &str) -> ParsedEvent
Parse one unit of provider stream output into the sealed
ParsedEvent
vocabulary. The unit is provider-shaped: codex is fed one JSONL line at a
time; gemini is fed its complete JSON blob (it emits a single document at
EOF, so per-line feeding yields ParsedEvent::Unknown until the daemon
has the whole blob). Unrecognized input becomes ParsedEvent::Unknown
rather than an error, so a provider version bump degrades gracefully.Source§fn reachability(
&self,
entry: &AgentEntry,
_timeout: Duration,
) -> Result<bool, ReachabilityProbeError>
fn reachability( &self, entry: &AgentEntry, _timeout: Duration, ) -> Result<bool, ReachabilityProbeError>
Probe whether
entry’s session is still reachable. Returns Ok(true) /
Ok(false) for a definitive answer, Err(ReachabilityProbeError) when
the probe is inconclusive. timeout bounds any I/O the probe performs.Source§fn as_pty(&self) -> Option<&dyn ProviderWithPty>
fn as_pty(&self) -> Option<&dyn ProviderWithPty>
Downcast to the PTY-managed extension, or
None for shellout providers
(claude). The daemon’s spawn handler matches on this to route between the
portable-pty path and the shellout path.Source§impl ProviderWithPty for CodexProvider
impl ProviderWithPty for CodexProvider
Source§fn readiness_detector(&self) -> Box<dyn ReadinessDetector>
fn readiness_detector(&self) -> Box<dyn ReadinessDetector>
Per-CLI readiness signal over the terminal grid.
Source§fn envelope(&self) -> Box<dyn Envelope>
fn envelope(&self) -> Box<dyn Envelope>
Structural anti-injection envelope for input on the PTY stdin path.
Source§fn default_restart_policy(&self) -> RestartPolicy
fn default_restart_policy(&self) -> RestartPolicy
Provider-recommended restart policy. The daemon’s enforcer still imposes
the hard ceiling (
crate::supervisor::HARD_FAILURE_CEILING, LD36)
regardless of what a provider returns.Auto Trait Implementations§
impl Freeze for CodexProvider
impl RefUnwindSafe for CodexProvider
impl Send for CodexProvider
impl Sync for CodexProvider
impl Unpin for CodexProvider
impl UnsafeUnpin for CodexProvider
impl UnwindSafe for CodexProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.