pub struct ClaudeInteractiveProvider;Expand description
Interactive subscription-billed claude, PTY-hosted by the daemon exactly as
codex/gemini are (inside-out-multiplexer E1, the keystone). This is the
ProviderWithPty counterpart to the shellout ClaudeProvider and the
stream-json lane (claude_stream_json_resume_argv): the grid tiles it, the
relay injects through it, the inside leg reports against it - one PTY, three
consumers.
Billing posture (Locked Decision 2 / D2): the argv is interactive claude
with --session-id <uuid> pinned for transcript discovery + the claim
interlock, NEVER claude -p/--print (that bills the Agent SDK pool). The
daemon’s billing guard rejects any -p/--print argv before spawning; this
provider only ever emits the interactive form.
Trait Implementations§
Source§impl Provider for ClaudeInteractiveProvider
impl Provider for ClaudeInteractiveProvider
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 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). Marks a provider as PTY-capable; the readiness/envelope/restart
surface hangs off it.Source§impl ProviderWithPty for ClaudeInteractiveProvider
impl ProviderWithPty for ClaudeInteractiveProvider
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 ClaudeInteractiveProvider
impl RefUnwindSafe for ClaudeInteractiveProvider
impl Send for ClaudeInteractiveProvider
impl Sync for ClaudeInteractiveProvider
impl Unpin for ClaudeInteractiveProvider
impl UnsafeUnpin for ClaudeInteractiveProvider
impl UnwindSafe for ClaudeInteractiveProvider
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