feat(cli): add reasoning_effort field to CliAction::Prompt/Repl variants — ROADMAP #34 struct groundwork

Adds reasoning_effort: Option<String> 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.
This commit is contained in:
YeonGyu-Kim
2026-04-09 10:34:28 +09:00
parent 8e25611064
commit c1b1ce465e

View File

@@ -209,6 +209,7 @@ fn run() -> Result<(), Box<dyn std::error::Error>> {
permission_mode, permission_mode,
compact, compact,
base_commit, base_commit,
..
} => { } => {
run_stale_base_preflight(base_commit.as_deref()); run_stale_base_preflight(base_commit.as_deref());
// Only consume piped stdin as prompt context when the permission // Only consume piped stdin as prompt context when the permission
@@ -243,6 +244,7 @@ fn run() -> Result<(), Box<dyn std::error::Error>> {
allowed_tools, allowed_tools,
permission_mode, permission_mode,
base_commit, base_commit,
..
} => run_repl(model, allowed_tools, permission_mode, base_commit)?, } => run_repl(model, allowed_tools, permission_mode, base_commit)?,
CliAction::HelpTopic(topic) => print_help_topic(topic), CliAction::HelpTopic(topic) => print_help_topic(topic),
CliAction::Help { output_format } => print_help(output_format)?, CliAction::Help { output_format } => print_help(output_format)?,
@@ -304,6 +306,7 @@ enum CliAction {
permission_mode: PermissionMode, permission_mode: PermissionMode,
compact: bool, compact: bool,
base_commit: Option<String>, base_commit: Option<String>,
reasoning_effort: Option<String>,
}, },
Login { Login {
output_format: CliOutputFormat, output_format: CliOutputFormat,
@@ -330,6 +333,7 @@ enum CliAction {
allowed_tools: Option<AllowedToolSet>, allowed_tools: Option<AllowedToolSet>,
permission_mode: PermissionMode, permission_mode: PermissionMode,
base_commit: Option<String>, base_commit: Option<String>,
reasoning_effort: Option<String>,
}, },
HelpTopic(LocalHelpTopic), HelpTopic(LocalHelpTopic),
// prompt-mode formatting is only supported for non-interactive runs // prompt-mode formatting is only supported for non-interactive runs
@@ -453,6 +457,7 @@ fn parse_args(args: &[String]) -> Result<CliAction, String> {
.unwrap_or_else(default_permission_mode), .unwrap_or_else(default_permission_mode),
compact, compact,
base_commit: base_commit.clone(), base_commit: base_commit.clone(),
reasoning_effort: None,
}); });
} }
"--print" => { "--print" => {
@@ -511,6 +516,7 @@ fn parse_args(args: &[String]) -> Result<CliAction, String> {
allowed_tools, allowed_tools,
permission_mode, permission_mode,
base_commit, base_commit,
reasoning_effort: None,
}); });
} }
if rest.first().map(String::as_str) == Some("--resume") { if rest.first().map(String::as_str) == Some("--resume") {
@@ -549,6 +555,7 @@ fn parse_args(args: &[String]) -> Result<CliAction, String> {
permission_mode, permission_mode,
compact, compact,
base_commit, base_commit,
reasoning_effort: None,
}), }),
SkillSlashDispatch::Local => Ok(CliAction::Skills { SkillSlashDispatch::Local => Ok(CliAction::Skills {
args, args,
@@ -574,6 +581,7 @@ fn parse_args(args: &[String]) -> Result<CliAction, String> {
permission_mode, permission_mode,
compact, compact,
base_commit: base_commit.clone(), base_commit: base_commit.clone(),
reasoning_effort: None,
}) })
} }
other if other.starts_with('/') => parse_direct_slash_cli_action( other if other.starts_with('/') => parse_direct_slash_cli_action(
@@ -593,6 +601,7 @@ fn parse_args(args: &[String]) -> Result<CliAction, String> {
permission_mode, permission_mode,
compact, compact,
base_commit, base_commit,
reasoning_effort: None,
}), }),
} }
} }
@@ -713,6 +722,7 @@ fn parse_direct_slash_cli_action(
permission_mode, permission_mode,
compact, compact,
base_commit, base_commit,
reasoning_effort: None,
}), }),
SkillSlashDispatch::Local => Ok(CliAction::Skills { SkillSlashDispatch::Local => Ok(CliAction::Skills {
args, args,
@@ -8174,6 +8184,7 @@ mod tests {
allowed_tools: None, allowed_tools: None,
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8337,6 +8348,7 @@ mod tests {
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8426,6 +8438,7 @@ mod tests {
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8455,6 +8468,7 @@ mod tests {
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
compact: true, compact: true,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8496,6 +8510,7 @@ mod tests {
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8573,6 +8588,7 @@ mod tests {
allowed_tools: None, allowed_tools: None,
permission_mode: PermissionMode::ReadOnly, permission_mode: PermissionMode::ReadOnly,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8592,6 +8608,7 @@ mod tests {
allowed_tools: None, allowed_tools: None,
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8620,6 +8637,7 @@ mod tests {
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8645,6 +8663,7 @@ mod tests {
), ),
permission_mode: PermissionMode::DangerFullAccess, permission_mode: PermissionMode::DangerFullAccess,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -8754,6 +8773,7 @@ mod tests {
permission_mode: crate::default_permission_mode(), permission_mode: crate::default_permission_mode(),
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
assert_eq!( assert_eq!(
@@ -9137,6 +9157,7 @@ mod tests {
permission_mode: crate::default_permission_mode(), permission_mode: crate::default_permission_mode(),
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
} }
@@ -9203,6 +9224,7 @@ mod tests {
permission_mode: crate::default_permission_mode(), permission_mode: crate::default_permission_mode(),
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
assert_eq!( assert_eq!(
@@ -9228,6 +9250,7 @@ mod tests {
permission_mode: crate::default_permission_mode(), permission_mode: crate::default_permission_mode(),
compact: false, compact: false,
base_commit: None, base_commit: None,
reasoning_effort: None,
} }
); );
let error = parse_args(&["/status".to_string()]) let error = parse_args(&["/status".to_string()])