Skip to main content

ralph/agent/resolve/
types.rs

1//! Purpose: Define shared data types for resolved CLI agent overrides.
2//!
3//! Responsibilities:
4//! - Represent the fully resolved override set used by run, scan, and task
5//!   workflows.
6//! - Keep the stable `AgentOverrides` shape re-exported through `crate::agent`.
7//!
8//! Scope:
9//! - Data modeling only; parsing and resolution live in sibling modules.
10//!
11//! Usage:
12//! - Constructed by `resolve_run_agent_overrides` and
13//!   `resolve_agent_overrides`.
14//!
15//! Invariants/Assumptions:
16//! - These overrides always take precedence over task-level and config
17//!   defaults.
18//! - Phase-specific overrides are only populated when at least one phase flag
19//!   is set.
20
21use crate::contracts::{
22    GitPublishMode, GitRevertMode, Model, PhaseOverrides, ReasoningEffort, Runner,
23    RunnerCliOptionsPatch,
24};
25
26/// Agent overrides from CLI arguments.
27///
28/// These overrides take precedence over task.agent and config defaults.
29#[derive(Debug, Clone, Default)]
30pub struct AgentOverrides {
31    /// Named configuration profile to apply.
32    pub profile: Option<String>,
33    pub runner: Option<Runner>,
34    pub model: Option<Model>,
35    pub reasoning_effort: Option<ReasoningEffort>,
36    pub runner_cli: RunnerCliOptionsPatch,
37    /// Execution shape override:
38    /// - 1 => single-pass execution
39    /// - 2 => two-pass execution (plan then implement)
40    /// - 3 => three-pass execution (plan, implement+CI, review+complete)
41    pub phases: Option<u8>,
42    pub repoprompt_plan_required: Option<bool>,
43    pub repoprompt_tool_injection: Option<bool>,
44    pub git_revert_mode: Option<GitRevertMode>,
45    pub git_publish_mode: Option<GitPublishMode>,
46    pub include_draft: Option<bool>,
47    /// Enable/disable desktop notification on task completion.
48    pub notify_on_complete: Option<bool>,
49    /// Enable/disable desktop notification on task failure.
50    pub notify_on_fail: Option<bool>,
51    /// Enable/disable desktop notification when loop completes.
52    pub notify_on_loop_complete: Option<bool>,
53    /// Enable sound alert with notification.
54    pub notify_sound: Option<bool>,
55    /// Enable strict LFS validation before commit.
56    pub lfs_check: Option<bool>,
57    /// Disable progress indicators and celebrations.
58    pub no_progress: Option<bool>,
59    /// Per-phase overrides from CLI (phase1, phase2, phase3).
60    pub phase_overrides: Option<PhaseOverrides>,
61}