Skip to main content

ralph/commands/run/
mod.rs

1//! Run command entrypoints and module wiring.
2//!
3//! Responsibilities:
4//! - Define the public `commands::run` API used by CLI and UI clients.
5//! - Re-export stable types used across the crate (e.g., `PhaseType`).
6//!
7//! Not handled here:
8//! - Actual run loop implementation (see `run_loop`).
9//! - Run-one orchestration (see `run_one`).
10//! - Phase execution internals (see `phases`).
11//! - Queue lock management (see `queue_lock`).
12//! - Dry-run UX (see `dry_run`).
13//!
14//! Invariants/assumptions:
15//! - Public entrypoint signatures must remain stable for CLI and interactive flows.
16//! - All orchestration logic lives in submodules; this file is a thin facade.
17
18mod context;
19mod dry_run;
20mod execution_history_cli;
21mod execution_timings;
22mod iteration;
23mod logging;
24pub mod parallel;
25mod parallel_ops;
26mod phases;
27mod queue_lock;
28mod run_loop;
29mod run_one;
30mod run_session;
31mod selection;
32mod supervision;
33
34// Re-export types that are used by other modules via crate::commands::run::* paths.
35// These are used by phase modules.
36pub(crate) use supervision::post_run_supervise;
37
38// Re-export PhaseType for use by runner module.
39pub(crate) use phases::PhaseType;
40
41pub use crate::agent::AgentOverrides;
42
43// Re-export parallel state types for UI clients.
44pub use parallel::state::{
45    ParallelStateFile, WorkerLifecycle, WorkerRecord, load_state, state_file_path,
46};
47
48// Re-export run loop types
49pub use run_loop::{RunLoopOptions, run_loop};
50
51// Re-export run-one entrypoints
52pub use run_one::{
53    RunOutcome, run_one, run_one_parallel_worker, run_one_with_id, run_one_with_id_locked,
54};
55
56// Re-export dry-run functions
57pub use dry_run::{dry_run_loop, dry_run_one};
58
59// Re-export parallel operation commands
60pub use parallel_ops::{parallel_retry, parallel_status};
61
62#[cfg(test)]
63fn resolve_run_agent_settings(
64    resolved: &crate::config::Resolved,
65    task: &crate::contracts::Task,
66    overrides: &AgentOverrides,
67) -> anyhow::Result<crate::runner::AgentSettings> {
68    crate::runner::resolve_agent_settings(
69        overrides.runner.clone(),
70        overrides.model.clone(),
71        overrides.reasoning_effort,
72        &overrides.runner_cli,
73        task.agent.as_ref(),
74        &resolved.config.agent,
75    )
76}
77
78#[cfg(test)]
79mod tests;