pub struct ClaudeRunner { /* private fields */ }Expand description
Manages a running Claude subprocess, allowing it to be killed for cleanup.
The ClaudeRunner stores the child process handle in a thread-safe manner,
allowing the kill() method to be called from a signal handler while the
main thread is reading output.
Implementations§
Source§impl ClaudeRunner
impl ClaudeRunner
Sourcepub fn kill(&self) -> Result<bool>
pub fn kill(&self) -> Result<bool>
Kills the subprocess if it is running.
This method:
- Terminates the subprocess using SIGKILL
- Closes stdin/stdout/stderr handles by dropping the Child
- Is safe to call multiple times or when no subprocess is running
Returns Ok(true) if a process was killed, Ok(false) if no process was running.
Sourcepub fn is_running(&self) -> bool
pub fn is_running(&self) -> bool
Returns true if the runner currently has an active subprocess.
Source§impl ClaudeRunner
impl ClaudeRunner
Sourcepub fn run<F>(
&self,
spec: &Spec,
story: &UserStory,
spec_path: &Path,
previous_iterations: &[IterationRecord],
knowledge: &ProjectKnowledge,
on_output: F,
) -> Result<ClaudeStoryResult>
pub fn run<F>( &self, spec: &Spec, story: &UserStory, spec_path: &Path, previous_iterations: &[IterationRecord], knowledge: &ProjectKnowledge, on_output: F, ) -> Result<ClaudeStoryResult>
Runs Claude to implement a user story.
This method stores the child process handle internally, allowing
kill() to be called from another thread (e.g., a signal handler)
to terminate the subprocess.
§Arguments
spec- The spec containing project informationstory- The user story to implementspec_path- Path to the spec JSON fileprevious_iterations- Previous iteration records for contextknowledge- Project knowledge for contexton_output- Callback for streaming output
Trait Implementations§
Source§impl Clone for ClaudeRunner
impl Clone for ClaudeRunner
Source§fn clone(&self) -> ClaudeRunner
fn clone(&self) -> ClaudeRunner
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for ClaudeRunner
impl RefUnwindSafe for ClaudeRunner
impl Send for ClaudeRunner
impl Sync for ClaudeRunner
impl Unpin for ClaudeRunner
impl UnwindSafe for ClaudeRunner
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> 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>
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more