Skip to main content

PhaseContext

Struct PhaseContext 

Source
pub struct PhaseContext<'a> {
Show 17 fields pub config: &'a Config, pub registry: &'a AgentRegistry, pub logger: &'a Logger, pub colors: &'a Colors, pub timer: &'a mut Timer, pub stats: &'a mut Stats, pub developer_agent: &'a str, pub reviewer_agent: &'a str, pub review_guidelines: Option<&'a ReviewGuidelines>, pub template_context: &'a TemplateContext, pub run_context: RunContext, pub execution_history: ExecutionHistory, pub prompt_history: HashMap<String, String>, pub executor: &'a dyn ProcessExecutor, pub executor_arc: Arc<dyn ProcessExecutor>, pub repo_root: &'a Path, pub workspace: &'a dyn Workspace,
}
Expand description

Shared context for all pipeline phases.

This struct holds references to all the shared state that phases need to access. It is passed by mutable reference to each phase function.

Fields§

§config: &'a Config

Configuration settings for the pipeline.

§registry: &'a AgentRegistry

Agent registry for looking up agent configurations.

§logger: &'a Logger

Logger for output and diagnostics.

§colors: &'a Colors

Terminal color configuration.

§timer: &'a mut Timer

Timer for tracking elapsed time.

§stats: &'a mut Stats

Statistics for tracking pipeline progress.

§developer_agent: &'a str

Name of the developer agent.

§reviewer_agent: &'a str

Name of the reviewer agent.

§review_guidelines: Option<&'a ReviewGuidelines>

Review guidelines based on detected project stack.

§template_context: &'a TemplateContext

Template context for loading user templates.

§run_context: RunContext

Run context for tracking execution lineage and state.

§execution_history: ExecutionHistory

Execution history for tracking pipeline steps.

§prompt_history: HashMap<String, String>

Prompt history for storing prompts used during execution.

§executor: &'a dyn ProcessExecutor

Process executor for external process execution.

§executor_arc: Arc<dyn ProcessExecutor>

Arc-wrapped executor for spawning into threads (e.g., idle timeout monitor).

§repo_root: &'a Path

Repository root path for explicit file operations.

This eliminates CWD dependencies by providing an explicit path for all file operations. Code should use repo_root.join("relative/path") instead of Path::new("relative/path").

§workspace: &'a dyn Workspace

Workspace for explicit path resolution and file operations.

Provides convenient methods for file operations and path resolution without depending on the current working directory.

This uses trait object (&dyn Workspace) for proper dependency injection:

  • Production code passes &WorkspaceFs (real filesystem)
  • Tests can pass &MemoryWorkspace (in-memory storage)

Implementations§

Source§

impl PhaseContext<'_>

Source

pub fn record_developer_iteration(&mut self)

Record a completed developer iteration.

Source

pub fn record_reviewer_pass(&mut self)

Record a completed reviewer pass.

Source

pub fn capture_prompt(&mut self, key: &str, prompt: &str)

Capture a prompt in the prompt history.

This method stores a prompt with a key for later retrieval on resume. The key should uniquely identify the prompt (e.g., “development_1”, “review_2”).

§Arguments
  • key - Unique identifier for this prompt
  • prompt - The prompt text to store
Source

pub fn clone_prompt_history(&self) -> HashMap<String, String>

Clone the prompt history without consuming it.

This is used when building checkpoints to include the prompts while keeping them in the context for subsequent checkpoint saves.

Auto Trait Implementations§

§

impl<'a> Freeze for PhaseContext<'a>

§

impl<'a> !RefUnwindSafe for PhaseContext<'a>

§

impl<'a> Send for PhaseContext<'a>

§

impl<'a> Sync for PhaseContext<'a>

§

impl<'a> Unpin for PhaseContext<'a>

§

impl<'a> !UnwindSafe for PhaseContext<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.