mirror of
https://github.com/openai/codex.git
synced 2026-05-02 04:11:39 +03:00
Add non-interactive resume filter option (#15339)
## Summary - add `codex resume --include-non-interactive` to include non-interactive sessions in the picker and `--last` - keep current-provider and cwd filtering behavior unchanged - replace the picker API boolean with a `SessionSourceFilter` enum to avoid a boolean trap ## Tests - `cargo test -p codex-cli` - `cargo test -p codex-tui` - `just fmt` - `just fix -p codex-cli` - `just fix -p codex-tui`
This commit is contained in:
@@ -208,6 +208,10 @@ struct ResumeCommand {
|
||||
#[arg(long = "all", default_value_t = false)]
|
||||
all: bool,
|
||||
|
||||
/// Include non-interactive sessions in the resume picker and --last selection.
|
||||
#[arg(long = "include-non-interactive", default_value_t = false)]
|
||||
include_non_interactive: bool,
|
||||
|
||||
#[clap(flatten)]
|
||||
remote: InteractiveRemoteOptions,
|
||||
|
||||
@@ -691,6 +695,7 @@ async fn cli_main(arg0_paths: Arg0DispatchPaths) -> anyhow::Result<()> {
|
||||
session_id,
|
||||
last,
|
||||
all,
|
||||
include_non_interactive,
|
||||
remote,
|
||||
config_overrides,
|
||||
})) => {
|
||||
@@ -700,6 +705,7 @@ async fn cli_main(arg0_paths: Arg0DispatchPaths) -> anyhow::Result<()> {
|
||||
session_id,
|
||||
last,
|
||||
all,
|
||||
include_non_interactive,
|
||||
config_overrides,
|
||||
);
|
||||
let exit_info = run_interactive_tui(
|
||||
@@ -1169,6 +1175,7 @@ fn finalize_resume_interactive(
|
||||
session_id: Option<String>,
|
||||
last: bool,
|
||||
show_all: bool,
|
||||
include_non_interactive: bool,
|
||||
resume_cli: TuiCli,
|
||||
) -> TuiCli {
|
||||
// Start with the parsed interactive CLI so resume shares the same
|
||||
@@ -1178,6 +1185,7 @@ fn finalize_resume_interactive(
|
||||
interactive.resume_last = last;
|
||||
interactive.resume_session_id = resume_session_id;
|
||||
interactive.resume_show_all = show_all;
|
||||
interactive.resume_include_non_interactive = include_non_interactive;
|
||||
|
||||
// Merge resume-scoped flags and overrides with highest precedence.
|
||||
merge_interactive_cli_flags(&mut interactive, resume_cli);
|
||||
@@ -1290,6 +1298,7 @@ mod tests {
|
||||
session_id,
|
||||
last,
|
||||
all,
|
||||
include_non_interactive,
|
||||
remote: _,
|
||||
config_overrides: resume_cli,
|
||||
}) = subcommand.expect("resume present")
|
||||
@@ -1303,6 +1312,7 @@ mod tests {
|
||||
session_id,
|
||||
last,
|
||||
all,
|
||||
include_non_interactive,
|
||||
resume_cli,
|
||||
)
|
||||
}
|
||||
@@ -1498,6 +1508,15 @@ mod tests {
|
||||
assert!(interactive.resume_show_all);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn resume_include_non_interactive_flag_sets_source_filter_override() {
|
||||
let interactive =
|
||||
finalize_resume_from_args(["codex", "resume", "--include-non-interactive"].as_ref());
|
||||
|
||||
assert!(interactive.resume_picker);
|
||||
assert!(interactive.resume_include_non_interactive);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn resume_merges_option_flags_and_full_auto() {
|
||||
let interactive = finalize_resume_from_args(
|
||||
|
||||
Reference in New Issue
Block a user