use crate::agents::AgentRole;
pub use crate::common::domain_types::AgentName;
pub use crate::reducer::event::{PipelineEvent, PipelinePhase};
pub use crate::reducer::state::{AgentChainState, CommitState, PipelineState, RebaseState};
pub use crate::reducer::state_reduction::reduce;
mod agent_chain;
mod commit_phase;
mod continuation;
mod development_phase;
mod phase_transitions;
mod pipeline_lifecycle;
mod planning_phase;
mod rebase;
mod review_phase;
#[must_use]
pub fn create_test_state() -> PipelineState {
let mut state = PipelineState::initial(5, 2);
state.agent_chain = AgentChainState::initial().with_agents(
vec!["agent1".to_string(), "agent2".to_string()],
vec![
vec!["model1".to_string(), "model2".to_string()],
vec!["fallback".to_string()],
],
AgentRole::Developer,
);
state.prompt_permissions.locked = true;
state.prompt_permissions.restore_needed = true;
state
}
#[must_use]
pub fn create_state_in_phase(phase: PipelinePhase) -> PipelineState {
PipelineState {
phase,
..create_test_state()
}
}