Skip to main content

codex/cli/
session.rs

1use crate::CliOverridesPatch;
2
3/// Request for `codex resume [OPTIONS] [SESSION_ID] [PROMPT]`.
4#[derive(Clone, Debug, Eq, PartialEq)]
5pub struct ResumeSessionRequest {
6    pub session_id: Option<String>,
7    pub prompt: Option<String>,
8    pub all: bool,
9    pub last: bool,
10    pub include_non_interactive: bool,
11    /// Per-call CLI overrides layered on top of the builder.
12    pub overrides: CliOverridesPatch,
13}
14
15impl ResumeSessionRequest {
16    pub fn new() -> Self {
17        Self {
18            session_id: None,
19            prompt: None,
20            all: false,
21            last: false,
22            include_non_interactive: false,
23            overrides: CliOverridesPatch::default(),
24        }
25    }
26
27    pub fn session_id(mut self, session_id: impl Into<String>) -> Self {
28        let session_id = session_id.into();
29        self.session_id = (!session_id.trim().is_empty()).then_some(session_id);
30        self
31    }
32
33    pub fn prompt(mut self, prompt: impl Into<String>) -> Self {
34        let prompt = prompt.into();
35        self.prompt = (!prompt.trim().is_empty()).then_some(prompt);
36        self
37    }
38
39    pub fn all(mut self, enable: bool) -> Self {
40        self.all = enable;
41        self
42    }
43
44    pub fn last(mut self, enable: bool) -> Self {
45        self.last = enable;
46        self
47    }
48
49    pub fn include_non_interactive(mut self, enable: bool) -> Self {
50        self.include_non_interactive = enable;
51        self
52    }
53
54    pub fn with_overrides(mut self, overrides: CliOverridesPatch) -> Self {
55        self.overrides = overrides;
56        self
57    }
58}
59
60impl Default for ResumeSessionRequest {
61    fn default() -> Self {
62        Self::new()
63    }
64}
65
66/// Request for `codex fork [OPTIONS] [SESSION_ID] [PROMPT]`.
67#[derive(Clone, Debug, Eq, PartialEq)]
68pub struct ForkSessionRequest {
69    pub session_id: Option<String>,
70    pub prompt: Option<String>,
71    pub all: bool,
72    pub last: bool,
73    /// Per-call CLI overrides layered on top of the builder.
74    pub overrides: CliOverridesPatch,
75}
76
77impl ForkSessionRequest {
78    pub fn new() -> Self {
79        Self {
80            session_id: None,
81            prompt: None,
82            all: false,
83            last: false,
84            overrides: CliOverridesPatch::default(),
85        }
86    }
87
88    pub fn session_id(mut self, session_id: impl Into<String>) -> Self {
89        let session_id = session_id.into();
90        self.session_id = (!session_id.trim().is_empty()).then_some(session_id);
91        self
92    }
93
94    pub fn prompt(mut self, prompt: impl Into<String>) -> Self {
95        let prompt = prompt.into();
96        self.prompt = (!prompt.trim().is_empty()).then_some(prompt);
97        self
98    }
99
100    pub fn all(mut self, enable: bool) -> Self {
101        self.all = enable;
102        self
103    }
104
105    pub fn last(mut self, enable: bool) -> Self {
106        self.last = enable;
107        self
108    }
109
110    pub fn with_overrides(mut self, overrides: CliOverridesPatch) -> Self {
111        self.overrides = overrides;
112        self
113    }
114}
115
116impl Default for ForkSessionRequest {
117    fn default() -> Self {
118        Self::new()
119    }
120}