Skip to main content

codex/commands/
debug.rs

1use std::ffi::OsString;
2
3use crate::{
4    ApplyDiffArtifacts, CodexClient, CodexError, DebugAppServerHelpRequest, DebugAppServerRequest,
5    DebugAppServerSendMessageV2Request, DebugCommandRequest, DebugHelpRequest,
6};
7
8impl CodexClient {
9    /// Runs `codex debug` and returns captured output.
10    pub async fn debug(
11        &self,
12        request: DebugCommandRequest,
13    ) -> Result<ApplyDiffArtifacts, CodexError> {
14        self.run_simple_command_with_overrides(vec![OsString::from("debug")], request.overrides)
15            .await
16    }
17
18    /// Runs `codex debug help [COMMAND]...` and returns captured output.
19    pub async fn debug_help(
20        &self,
21        request: DebugHelpRequest,
22    ) -> Result<ApplyDiffArtifacts, CodexError> {
23        let DebugHelpRequest { command, overrides } = request;
24        let mut args = vec![OsString::from("debug"), OsString::from("help")];
25        args.extend(command.into_iter().map(OsString::from));
26        self.run_simple_command_with_overrides(args, overrides)
27            .await
28    }
29
30    /// Runs `codex debug app-server` and returns captured output.
31    pub async fn debug_app_server(
32        &self,
33        request: DebugAppServerRequest,
34    ) -> Result<ApplyDiffArtifacts, CodexError> {
35        self.run_simple_command_with_overrides(
36            vec![OsString::from("debug"), OsString::from("app-server")],
37            request.overrides,
38        )
39        .await
40    }
41
42    /// Runs `codex debug app-server help [COMMAND]...` and returns captured output.
43    pub async fn debug_app_server_help(
44        &self,
45        request: DebugAppServerHelpRequest,
46    ) -> Result<ApplyDiffArtifacts, CodexError> {
47        let DebugAppServerHelpRequest { command, overrides } = request;
48        let mut args = vec![
49            OsString::from("debug"),
50            OsString::from("app-server"),
51            OsString::from("help"),
52        ];
53        args.extend(command.into_iter().map(OsString::from));
54        self.run_simple_command_with_overrides(args, overrides)
55            .await
56    }
57
58    /// Runs `codex debug app-server send-message-v2 <USER_MESSAGE>` and returns captured output.
59    pub async fn debug_app_server_send_message_v2(
60        &self,
61        request: DebugAppServerSendMessageV2Request,
62    ) -> Result<ApplyDiffArtifacts, CodexError> {
63        let DebugAppServerSendMessageV2Request {
64            user_message,
65            overrides,
66        } = request;
67        self.run_simple_command_with_overrides(
68            vec![
69                OsString::from("debug"),
70                OsString::from("app-server"),
71                OsString::from("send-message-v2"),
72                OsString::from(user_message),
73            ],
74            overrides,
75        )
76        .await
77    }
78}