pub struct PipelineExecutor<R: CommandRunner> {
pub runner: Arc<R>,
pub github: Arc<GhClient<R>>,
pub issues: Arc<dyn IssueProvider>,
pub db: Arc<Mutex<Connection>>,
pub config: Config,
pub cancel_token: CancellationToken,
pub repo_dir: PathBuf,
}Expand description
Runs a single issue through the full pipeline.
Fields§
§runner: Arc<R>§github: Arc<GhClient<R>>§issues: Arc<dyn IssueProvider>§db: Arc<Mutex<Connection>>§config: Config§cancel_token: CancellationToken§repo_dir: PathBufImplementations§
Source§impl<R: CommandRunner + 'static> PipelineExecutor<R>
impl<R: CommandRunner + 'static> PipelineExecutor<R>
Sourcepub async fn run_issue(
&self,
issue: &PipelineIssue,
auto_merge: bool,
) -> Result<()>
pub async fn run_issue( &self, issue: &PipelineIssue, auto_merge: bool, ) -> Result<()>
Run the full pipeline for a single issue.
Sourcepub async fn run_issue_with_complexity(
&self,
issue: &PipelineIssue,
auto_merge: bool,
complexity: Option<Complexity>,
) -> Result<()>
pub async fn run_issue_with_complexity( &self, issue: &PipelineIssue, auto_merge: bool, complexity: Option<Complexity>, ) -> Result<()>
Run the full pipeline for a single issue with an optional complexity classification.
Sourcepub async fn run_issue_pipeline(
&self,
issue: &PipelineIssue,
auto_merge: bool,
complexity: Option<Complexity>,
) -> Result<PipelineOutcome>
pub async fn run_issue_pipeline( &self, issue: &PipelineIssue, auto_merge: bool, complexity: Option<Complexity>, ) -> Result<PipelineOutcome>
Run the pipeline up to (but not including) finalization.
Returns a PipelineOutcome with the run ID and PR number.
The caller is responsible for calling finalize_run or finalize_merge
at the appropriate time (e.g., after the PR is actually merged).
Sourcepub async fn finalize_merge(
&self,
outcome: &PipelineOutcome,
issue: &PipelineIssue,
) -> Result<()>
pub async fn finalize_merge( &self, outcome: &PipelineOutcome, issue: &PipelineIssue, ) -> Result<()>
Finalize a run after its PR has been merged.
Transitions labels, closes issues, marks the run as complete, cleans up the worktree, and deletes the local branch. The worktree must be removed before the branch because git refuses to delete a branch that is checked out in a worktree.
Sourcepub async fn plan_issues(
&self,
issues: &[PipelineIssue],
graph_context: &[GraphContextNode],
) -> Option<PlannerGraphOutput>
pub async fn plan_issues( &self, issues: &[PipelineIssue], graph_context: &[GraphContextNode], ) -> Option<PlannerGraphOutput>
Invoke the planner agent to decide dependency ordering for a set of issues.
graph_context describes the current dependency graph state so the planner
can avoid scheduling conflicting work alongside in-flight issues.
Returns None if the planner fails or returns unparseable output (fallback to default).
Sourcepub async fn reconstruct_outcome(
&self,
issue: &PipelineIssue,
run_id: &str,
pr_number: u32,
) -> Result<PipelineOutcome>
pub async fn reconstruct_outcome( &self, issue: &PipelineIssue, run_id: &str, pr_number: u32, ) -> Result<PipelineOutcome>
Reconstruct a PipelineOutcome from graph node data (for merge polling).
Worktree paths are deterministic, so we can rebuild the outcome from the issue metadata stored on the graph node. The branch name is looked up from the runs table (it was recorded when the worktree was created).