Restore codex-tui resume hint on exit (#17415)

Addresses #17303

Problem: The standalone codex-tui entrypoint only printed token usage on
exit, so resumable sessions could omit the codex resume footer even when
thread metadata was available.

Solution: Format codex-tui exit output from AppExitInfo so it includes
the same resume hint as the main CLI and reports fatal exits
consistently.
This commit is contained in:
Eric Traut
2026-04-11 15:46:54 -07:00
committed by GitHub
parent 1e27028360
commit 7a6266323c

View File

@@ -2,9 +2,37 @@ use clap::Parser;
use codex_app_server_client::legacy_core;
use codex_arg0::Arg0DispatchPaths;
use codex_arg0::arg0_dispatch_or_else;
use codex_tui::AppExitInfo;
use codex_tui::Cli;
use codex_tui::ExitReason;
use codex_tui::run_main;
use codex_utils_cli::CliConfigOverrides;
use supports_color::Stream;
fn format_exit_messages(exit_info: AppExitInfo, color_enabled: bool) -> Vec<String> {
let AppExitInfo {
token_usage,
thread_id,
thread_name,
..
} = exit_info;
let mut lines = Vec::new();
if !token_usage.is_zero() {
lines.push(codex_protocol::protocol::FinalOutput::from(token_usage).to_string());
}
if let Some(resume_cmd) = legacy_core::util::resume_command(thread_name.as_deref(), thread_id) {
let command = if color_enabled {
format!("\u{1b}[36m{resume_cmd}\u{1b}[39m")
} else {
resume_cmd
};
lines.push(format!("To continue this session, run {command}"));
}
lines
}
#[derive(Parser, Debug)]
struct TopCli {
@@ -31,12 +59,17 @@ fn main() -> anyhow::Result<()> {
/*remote_auth_token*/ None,
)
.await?;
let token_usage = exit_info.token_usage;
if !token_usage.is_zero() {
println!(
"{}",
codex_protocol::protocol::FinalOutput::from(token_usage),
);
match exit_info.exit_reason {
ExitReason::Fatal(message) => {
eprintln!("ERROR: {message}");
std::process::exit(1);
}
ExitReason::UserRequested => {}
}
let color_enabled = supports_color::on(Stream::Stdout).is_some();
for line in format_exit_messages(exit_info, color_enabled) {
println!("{line}");
}
Ok(())
})