From c1b1ce465ef366b45c97e6f98ba1a92dc0e64def Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 9 Apr 2026 10:34:28 +0900 Subject: [PATCH] =?UTF-8?q?feat(cli):=20add=20reasoning=5Feffort=20field?= =?UTF-8?q?=20to=20CliAction::Prompt/Repl=20variants=20=E2=80=94=20ROADMAP?= =?UTF-8?q?=20#34=20struct=20groundwork?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds reasoning_effort: Option to CliAction::Prompt and CliAction::Repl enum variants. All constructor and pattern sites updated. All test literals updated with reasoning_effort: None. 156 cli tests pass, fmt clean. The --reasoning-effort flag parse and propagation to AnthropicRuntimeClient remains as follow-up work. --- rust/crates/rusty-claude-cli/src/main.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index c3f0545..e5c018e 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -209,6 +209,7 @@ fn run() -> Result<(), Box> { permission_mode, compact, base_commit, + .. } => { run_stale_base_preflight(base_commit.as_deref()); // Only consume piped stdin as prompt context when the permission @@ -243,6 +244,7 @@ fn run() -> Result<(), Box> { allowed_tools, permission_mode, base_commit, + .. } => run_repl(model, allowed_tools, permission_mode, base_commit)?, CliAction::HelpTopic(topic) => print_help_topic(topic), CliAction::Help { output_format } => print_help(output_format)?, @@ -304,6 +306,7 @@ enum CliAction { permission_mode: PermissionMode, compact: bool, base_commit: Option, + reasoning_effort: Option, }, Login { output_format: CliOutputFormat, @@ -330,6 +333,7 @@ enum CliAction { allowed_tools: Option, permission_mode: PermissionMode, base_commit: Option, + reasoning_effort: Option, }, HelpTopic(LocalHelpTopic), // prompt-mode formatting is only supported for non-interactive runs @@ -453,6 +457,7 @@ fn parse_args(args: &[String]) -> Result { .unwrap_or_else(default_permission_mode), compact, base_commit: base_commit.clone(), + reasoning_effort: None, }); } "--print" => { @@ -511,6 +516,7 @@ fn parse_args(args: &[String]) -> Result { allowed_tools, permission_mode, base_commit, + reasoning_effort: None, }); } if rest.first().map(String::as_str) == Some("--resume") { @@ -549,6 +555,7 @@ fn parse_args(args: &[String]) -> Result { permission_mode, compact, base_commit, + reasoning_effort: None, }), SkillSlashDispatch::Local => Ok(CliAction::Skills { args, @@ -574,6 +581,7 @@ fn parse_args(args: &[String]) -> Result { permission_mode, compact, base_commit: base_commit.clone(), + reasoning_effort: None, }) } other if other.starts_with('/') => parse_direct_slash_cli_action( @@ -593,6 +601,7 @@ fn parse_args(args: &[String]) -> Result { permission_mode, compact, base_commit, + reasoning_effort: None, }), } } @@ -713,6 +722,7 @@ fn parse_direct_slash_cli_action( permission_mode, compact, base_commit, + reasoning_effort: None, }), SkillSlashDispatch::Local => Ok(CliAction::Skills { args, @@ -8174,6 +8184,7 @@ mod tests { allowed_tools: None, permission_mode: PermissionMode::DangerFullAccess, base_commit: None, + reasoning_effort: None, } ); } @@ -8337,6 +8348,7 @@ mod tests { permission_mode: PermissionMode::DangerFullAccess, compact: false, base_commit: None, + reasoning_effort: None, } ); } @@ -8426,6 +8438,7 @@ mod tests { permission_mode: PermissionMode::DangerFullAccess, compact: false, base_commit: None, + reasoning_effort: None, } ); } @@ -8455,6 +8468,7 @@ mod tests { permission_mode: PermissionMode::DangerFullAccess, compact: true, base_commit: None, + reasoning_effort: None, } ); } @@ -8496,6 +8510,7 @@ mod tests { permission_mode: PermissionMode::DangerFullAccess, compact: false, base_commit: None, + reasoning_effort: None, } ); } @@ -8573,6 +8588,7 @@ mod tests { allowed_tools: None, permission_mode: PermissionMode::ReadOnly, base_commit: None, + reasoning_effort: None, } ); } @@ -8592,6 +8608,7 @@ mod tests { allowed_tools: None, permission_mode: PermissionMode::DangerFullAccess, base_commit: None, + reasoning_effort: None, } ); } @@ -8620,6 +8637,7 @@ mod tests { permission_mode: PermissionMode::DangerFullAccess, compact: false, base_commit: None, + reasoning_effort: None, } ); } @@ -8645,6 +8663,7 @@ mod tests { ), permission_mode: PermissionMode::DangerFullAccess, base_commit: None, + reasoning_effort: None, } ); } @@ -8754,6 +8773,7 @@ mod tests { permission_mode: crate::default_permission_mode(), compact: false, base_commit: None, + reasoning_effort: None, } ); assert_eq!( @@ -9137,6 +9157,7 @@ mod tests { permission_mode: crate::default_permission_mode(), compact: false, base_commit: None, + reasoning_effort: None, } ); } @@ -9203,6 +9224,7 @@ mod tests { permission_mode: crate::default_permission_mode(), compact: false, base_commit: None, + reasoning_effort: None, } ); assert_eq!( @@ -9228,6 +9250,7 @@ mod tests { permission_mode: crate::default_permission_mode(), compact: false, base_commit: None, + reasoning_effort: None, } ); let error = parse_args(&["/status".to_string()])