pub struct PhaseContext<'a> {Show 19 fields
pub config: &'a Config,
pub registry: &'a AgentRegistry,
pub logger: &'a Logger,
pub colors: &'a Colors,
pub timer: &'a mut Timer,
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 executor: &'a dyn ProcessExecutor,
pub executor_arc: Arc<dyn ProcessExecutor>,
pub repo_root: &'a Path,
pub workspace: &'a dyn Workspace,
pub workspace_arc: Arc<dyn Workspace>,
pub run_log_context: &'a RunLogContext,
pub cloud_reporter: Option<&'a dyn CloudReporter>,
pub cloud: &'a CloudConfig,
}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.
§Phase Name Convention
When working with phase names (e.g., for log file naming), use lowercase identifiers with underscores for multi-word phases. The canonical phase names are:
"planning"- Planning phase"analysis"- Analysis sub-phase of development (when role ==AgentRole::Analysis)"developer"- Development phase (when role ==AgentRole::Developer)"reviewer"- Review phase"commit"- Commit message generation phase"final_validation"- Final validation phase"finalizing"- Finalizing phase"complete"- Complete phase"awaiting_dev_fix"- Awaiting dev fix phase"interrupted"- Interrupted phase
These phase names are used for log file naming under .agent/logs-<run_id>/agents/
(e.g., planning_1.log, developer_2_a1.log).
When adding new phases or extending the phase system, maintain this lowercase convention for consistency.
Fields§
§config: &'a ConfigConfiguration settings for the pipeline.
registry: &'a AgentRegistryAgent registry for looking up agent configurations.
logger: &'a LoggerLogger for output and diagnostics.
colors: &'a ColorsTerminal color configuration.
timer: &'a mut TimerTimer for tracking elapsed time.
developer_agent: &'a strName of the developer agent.
reviewer_agent: &'a strName of the reviewer agent.
review_guidelines: Option<&'a ReviewGuidelines>Review guidelines based on detected project stack.
template_context: &'a TemplateContextTemplate context for loading user templates.
run_context: RunContextRun context for tracking execution lineage and state.
execution_history: ExecutionHistoryExecution history for tracking pipeline steps.
executor: &'a dyn ProcessExecutorProcess 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 PathRepository 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 WorkspaceWorkspace 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)
workspace_arc: Arc<dyn Workspace>Arc-wrapped workspace for spawning into threads (e.g., file activity monitor).
run_log_context: &'a RunLogContextRun log context for per-run log path resolution.
Provides paths to all log files under the per-run directory
(.agent/logs-<run_id>/). This ensures all logs from a single
pipeline invocation are grouped together for easy debugging.
cloud_reporter: Option<&'a dyn CloudReporter>Cloud reporter for progress updates (None in CLI mode).
When cloud mode is disabled, this is None and no cloud reporting occurs.
When enabled, this is Some(&dyn CloudReporter) for API communication.
cloud: &'a CloudConfigCloud configuration.
When cloud mode is disabled (enabled=false), all cloud-specific logic is skipped throughout the pipeline.
Implementations§
Source§impl PhaseContext<'_>
impl PhaseContext<'_>
Sourcepub const fn record_developer_iteration(&mut self)
pub const fn record_developer_iteration(&mut self)
Record a completed developer iteration.
Sourcepub const fn record_reviewer_pass(&mut self)
pub const fn record_reviewer_pass(&mut self)
Record a completed reviewer pass.
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> UnsafeUnpin for PhaseContext<'a>
impl<'a> !UnwindSafe for PhaseContext<'a>
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> 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>
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>
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