pub struct ClaudeCodeDriverBuilder { /* private fields */ }Expand description
Fluent configuration for ClaudeCodeDriver.
use cap_rs::driver::stream_json::ClaudeCodeDriver;
// Persistent multi-turn session (default).
let chat = ClaudeCodeDriver::builder("/path/to/workspace").spawn().await?;
// One-shot, with a specific model.
let oneshot = ClaudeCodeDriver::builder(".")
.model("claude-opus-4-7")
.replay_user_messages(false)
.spawn()
.await?;
// Resume an earlier session.
let resumed = ClaudeCodeDriver::builder(".")
.resume("00000000-0000-0000-0000-deadbeefcafe")
.spawn()
.await?;Implementations§
Source§impl ClaudeCodeDriverBuilder
impl ClaudeCodeDriverBuilder
Sourcepub fn bin(self, bin: impl Into<String>) -> Self
pub fn bin(self, bin: impl Into<String>) -> Self
Override the binary used (default: claude on PATH, or $CLAUDE_BIN).
Sourcepub fn model(self, model: impl Into<String>) -> Self
pub fn model(self, model: impl Into<String>) -> Self
Override the model (default: claude’s own default).
Sourcepub fn session_id(self, uuid: impl Into<String>) -> Self
pub fn session_id(self, uuid: impl Into<String>) -> Self
Use a specific session UUID for this session (must be a valid UUID
per claude’s --session-id requirements). If unset, claude
generates one and reports it in the Ready event.
Sourcepub fn resume(self, uuid: impl Into<String>) -> Self
pub fn resume(self, uuid: impl Into<String>) -> Self
Resume a previously persisted conversation by session UUID. Pass
the session_id you got from a prior session’s Ready event.
Sourcepub fn replay_user_messages(self, on: bool) -> Self
pub fn replay_user_messages(self, on: bool) -> Self
Whether to start in persistent session mode (default: true).
When true, claude stays alive after each turn waiting for more
user messages — this is what enables real-time multi-turn
conversation in a single process. When false, claude reads one
prompt, responds, and exits (one-shot, lower latency to first
answer but no follow-ups in the same process).
Implementation note: this maps directly to claude’s
--replay-user-messages flag.
Sourcepub fn dangerously_skip_permissions(self, on: bool) -> Self
pub fn dangerously_skip_permissions(self, on: bool) -> Self
Whether to pass --dangerously-skip-permissions (default: true).
When false, claude will prompt for permission on tool calls;
the driver currently has no way to route those prompts back
through CAP — set this to false only if you don’t care about
auto-approving (or you trust the agent to deny dangerous ops).
Sourcepub async fn spawn(self) -> Result<ClaudeCodeDriver, DriverError>
pub async fn spawn(self) -> Result<ClaudeCodeDriver, DriverError>
Spawn the configured Claude Code session.
Trait Implementations§
Source§impl Clone for ClaudeCodeDriverBuilder
impl Clone for ClaudeCodeDriverBuilder
Source§fn clone(&self) -> ClaudeCodeDriverBuilder
fn clone(&self) -> ClaudeCodeDriverBuilder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ClaudeCodeDriverBuilder
impl RefUnwindSafe for ClaudeCodeDriverBuilder
impl Send for ClaudeCodeDriverBuilder
impl Sync for ClaudeCodeDriverBuilder
impl Unpin for ClaudeCodeDriverBuilder
impl UnsafeUnpin for ClaudeCodeDriverBuilder
impl UnwindSafe for ClaudeCodeDriverBuilder
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.