@@ -6,6 +6,7 @@ use codex_protocol::account::PlanType;
66use codex_protocol:: approvals:: ExecPolicyAmendment as CoreExecPolicyAmendment ;
77use codex_protocol:: config_types:: ForcedLoginMethod ;
88use codex_protocol:: config_types:: ReasoningSummary ;
9+ use codex_protocol:: config_types:: SandboxMode as CoreSandboxMode ;
910use codex_protocol:: config_types:: Verbosity ;
1011use codex_protocol:: items:: AgentMessageContent as CoreAgentMessageContent ;
1112use codex_protocol:: items:: TurnItem as CoreTurnItem ;
@@ -125,17 +126,68 @@ impl From<CoreCodexErrorInfo> for CodexErrorInfo {
125126 }
126127}
127128
128- v2_enum_from_core ! (
129- pub enum AskForApproval from codex_protocol:: protocol:: AskForApproval {
130- UnlessTrusted , OnFailure , OnRequest , Never
129+ #[ derive( Serialize , Deserialize , Debug , Clone , Copy , PartialEq , Eq , JsonSchema , TS ) ]
130+ #[ serde( rename_all = "kebab-case" ) ]
131+ #[ ts( rename_all = "kebab-case" , export_to = "v2/" ) ]
132+ pub enum AskForApproval {
133+ #[ serde( rename = "untrusted" ) ]
134+ #[ ts( rename = "untrusted" ) ]
135+ UnlessTrusted ,
136+ OnFailure ,
137+ OnRequest ,
138+ Never ,
139+ }
140+
141+ impl AskForApproval {
142+ pub fn to_core ( self ) -> CoreAskForApproval {
143+ match self {
144+ AskForApproval :: UnlessTrusted => CoreAskForApproval :: UnlessTrusted ,
145+ AskForApproval :: OnFailure => CoreAskForApproval :: OnFailure ,
146+ AskForApproval :: OnRequest => CoreAskForApproval :: OnRequest ,
147+ AskForApproval :: Never => CoreAskForApproval :: Never ,
148+ }
131149 }
132- ) ;
150+ }
133151
134- v2_enum_from_core ! (
135- pub enum SandboxMode from codex_protocol:: config_types:: SandboxMode {
136- ReadOnly , WorkspaceWrite , DangerFullAccess
152+ impl From < CoreAskForApproval > for AskForApproval {
153+ fn from ( value : CoreAskForApproval ) -> Self {
154+ match value {
155+ CoreAskForApproval :: UnlessTrusted => AskForApproval :: UnlessTrusted ,
156+ CoreAskForApproval :: OnFailure => AskForApproval :: OnFailure ,
157+ CoreAskForApproval :: OnRequest => AskForApproval :: OnRequest ,
158+ CoreAskForApproval :: Never => AskForApproval :: Never ,
159+ }
137160 }
138- ) ;
161+ }
162+
163+ #[ derive( Serialize , Deserialize , Debug , Clone , Copy , PartialEq , Eq , JsonSchema , TS ) ]
164+ #[ serde( rename_all = "kebab-case" ) ]
165+ #[ ts( rename_all = "kebab-case" , export_to = "v2/" ) ]
166+ pub enum SandboxMode {
167+ ReadOnly ,
168+ WorkspaceWrite ,
169+ DangerFullAccess ,
170+ }
171+
172+ impl SandboxMode {
173+ pub fn to_core ( self ) -> CoreSandboxMode {
174+ match self {
175+ SandboxMode :: ReadOnly => CoreSandboxMode :: ReadOnly ,
176+ SandboxMode :: WorkspaceWrite => CoreSandboxMode :: WorkspaceWrite ,
177+ SandboxMode :: DangerFullAccess => CoreSandboxMode :: DangerFullAccess ,
178+ }
179+ }
180+ }
181+
182+ impl From < CoreSandboxMode > for SandboxMode {
183+ fn from ( value : CoreSandboxMode ) -> Self {
184+ match value {
185+ CoreSandboxMode :: ReadOnly => SandboxMode :: ReadOnly ,
186+ CoreSandboxMode :: WorkspaceWrite => SandboxMode :: WorkspaceWrite ,
187+ CoreSandboxMode :: DangerFullAccess => SandboxMode :: DangerFullAccess ,
188+ }
189+ }
190+ }
139191
140192v2_enum_from_core ! (
141193 pub enum ReviewDelivery from codex_protocol:: protocol:: ReviewDelivery {
@@ -190,11 +242,6 @@ pub struct ToolsV2 {
190242pub struct ProfileV2 {
191243 pub model : Option < String > ,
192244 pub model_provider : Option < String > ,
193- #[ serde(
194- default ,
195- deserialize_with = "deserialize_approval_policy" ,
196- serialize_with = "serialize_approval_policy"
197- ) ]
198245 pub approval_policy : Option < AskForApproval > ,
199246 pub model_reasoning_effort : Option < ReasoningEffort > ,
200247 pub model_reasoning_summary : Option < ReasoningSummary > ,
@@ -211,17 +258,7 @@ pub struct Config {
211258 pub model_context_window : Option < i64 > ,
212259 pub model_auto_compact_token_limit : Option < i64 > ,
213260 pub model_provider : Option < String > ,
214- #[ serde(
215- default ,
216- deserialize_with = "deserialize_approval_policy" ,
217- serialize_with = "serialize_approval_policy"
218- ) ]
219261 pub approval_policy : Option < AskForApproval > ,
220- #[ serde(
221- default ,
222- deserialize_with = "deserialize_sandbox_mode" ,
223- serialize_with = "serialize_sandbox_mode"
224- ) ]
225262 pub sandbox_mode : Option < SandboxMode > ,
226263 pub sandbox_workspace_write : Option < SandboxWorkspaceWrite > ,
227264 pub forced_chatgpt_workspace_id : Option < String > ,
@@ -240,45 +277,6 @@ pub struct Config {
240277 pub additional : HashMap < String , JsonValue > ,
241278}
242279
243- fn deserialize_approval_policy < ' de , D > ( deserializer : D ) -> Result < Option < AskForApproval > , D :: Error >
244- where
245- D : serde:: Deserializer < ' de > ,
246- {
247- let value = Option :: < CoreAskForApproval > :: deserialize ( deserializer) ?;
248- Ok ( value. map ( AskForApproval :: from) )
249- }
250-
251- fn serialize_approval_policy < S > (
252- value : & Option < AskForApproval > ,
253- serializer : S ,
254- ) -> Result < S :: Ok , S :: Error >
255- where
256- S : serde:: Serializer ,
257- {
258- value
259- . as_ref ( )
260- . map ( |policy| policy. to_core ( ) )
261- . serialize ( serializer)
262- }
263-
264- fn deserialize_sandbox_mode < ' de , D > ( deserializer : D ) -> Result < Option < SandboxMode > , D :: Error >
265- where
266- D : serde:: Deserializer < ' de > ,
267- {
268- let value = Option :: < codex_protocol:: config_types:: SandboxMode > :: deserialize ( deserializer) ?;
269- Ok ( value. map ( SandboxMode :: from) )
270- }
271-
272- fn serialize_sandbox_mode < S > ( value : & Option < SandboxMode > , serializer : S ) -> Result < S :: Ok , S :: Error >
273- where
274- S : serde:: Serializer ,
275- {
276- value
277- . as_ref ( )
278- . map ( |mode| mode. to_core ( ) )
279- . serialize ( serializer)
280- }
281-
282280#[ derive( Serialize , Deserialize , Debug , Clone , PartialEq , JsonSchema , TS ) ]
283281#[ serde( rename_all = "camelCase" ) ]
284282#[ ts( export_to = "v2/" ) ]
0 commit comments