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}