1use std::ffi::OsString;
2
3use crate::{
4 ApplyDiffArtifacts, CodexClient, CodexError, DebugAppServerHelpRequest, DebugAppServerRequest,
5 DebugAppServerSendMessageV2Request, DebugCommandRequest, DebugHelpRequest, DebugModelsRequest,
6 DebugPromptInputRequest,
7};
8
9impl CodexClient {
10 pub async fn debug(
12 &self,
13 request: DebugCommandRequest,
14 ) -> Result<ApplyDiffArtifacts, CodexError> {
15 self.run_simple_command_with_overrides(vec![OsString::from("debug")], request.overrides)
16 .await
17 }
18
19 pub async fn debug_help(
21 &self,
22 request: DebugHelpRequest,
23 ) -> Result<ApplyDiffArtifacts, CodexError> {
24 let DebugHelpRequest { command, overrides } = request;
25 let mut args = vec![OsString::from("debug"), OsString::from("help")];
26 args.extend(command.into_iter().map(OsString::from));
27 self.run_simple_command_with_overrides(args, overrides)
28 .await
29 }
30
31 pub async fn debug_app_server(
33 &self,
34 request: DebugAppServerRequest,
35 ) -> Result<ApplyDiffArtifacts, CodexError> {
36 self.run_simple_command_with_overrides(
37 vec![OsString::from("debug"), OsString::from("app-server")],
38 request.overrides,
39 )
40 .await
41 }
42
43 pub async fn debug_app_server_help(
45 &self,
46 request: DebugAppServerHelpRequest,
47 ) -> Result<ApplyDiffArtifacts, CodexError> {
48 let DebugAppServerHelpRequest { command, overrides } = request;
49 let mut args = vec![
50 OsString::from("debug"),
51 OsString::from("app-server"),
52 OsString::from("help"),
53 ];
54 args.extend(command.into_iter().map(OsString::from));
55 self.run_simple_command_with_overrides(args, overrides)
56 .await
57 }
58
59 pub async fn debug_app_server_send_message_v2(
61 &self,
62 request: DebugAppServerSendMessageV2Request,
63 ) -> Result<ApplyDiffArtifacts, CodexError> {
64 let DebugAppServerSendMessageV2Request {
65 user_message,
66 overrides,
67 } = request;
68 self.run_simple_command_with_overrides(
69 vec![
70 OsString::from("debug"),
71 OsString::from("app-server"),
72 OsString::from("send-message-v2"),
73 OsString::from(user_message),
74 ],
75 overrides,
76 )
77 .await
78 }
79
80 pub async fn debug_models(
82 &self,
83 request: DebugModelsRequest,
84 ) -> Result<ApplyDiffArtifacts, CodexError> {
85 let DebugModelsRequest { bundled, overrides } = request;
86 let mut args = vec![OsString::from("debug"), OsString::from("models")];
87 if bundled {
88 args.push(OsString::from("--bundled"));
89 }
90 self.run_simple_command_with_overrides(args, overrides)
91 .await
92 }
93
94 pub async fn debug_prompt_input(
96 &self,
97 request: DebugPromptInputRequest,
98 ) -> Result<ApplyDiffArtifacts, CodexError> {
99 let DebugPromptInputRequest {
100 prompt,
101 images,
102 overrides,
103 } = request;
104 let mut args = vec![OsString::from("debug"), OsString::from("prompt-input")];
105 for image in images {
106 args.push(OsString::from("--image"));
107 args.push(image.into_os_string());
108 }
109 if let Some(prompt) = prompt {
110 args.push(OsString::from(prompt));
111 }
112 self.run_simple_command_with_overrides(args, overrides)
113 .await
114 }
115}