Conversation
Documents the approved design for separating command execution options from tool-specific options to eliminate naming conflicts and improve Single Responsibility Principle compliance. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Detailed step-by-step plan covering: - Core type changes (CommandExecutionOptions, CommandLineToolOptions) - Interface and implementation updates - Generator template updates - Tool package regeneration - Test and example updates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add new CommandExecutionOptions record that will hold command execution configuration separate from tool-specific arguments. This is the first step in separating execution options from CommandLineOptions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make CommandLineToolOptions abstract with only tool-related properties - Remove inheritance from CommandLineOptions - Delete CommandLineOptions.cs (replaced by CommandExecutionOptions) Part of #1811 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Updated ExecuteCommandLineTool method signature to accept CommandExecutionOptions? executionOptions parameter - Added execOpts resolution at the start of the method - Updated all references to use execOpts instead of options for: - WorkingDirectory - EnvironmentVariables - ExecutionTimeout - GracefulShutdownTimeout - ThrowOnNonZeroExitCode - Sudo - InputLoggingManipulator - OutputLoggingManipulator - InternalDryRun - Updated Of method signature to accept CommandExecutionOptions - Updated all _commandLogger.Log calls to pass execOpts parameter 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update the ICommandLogger interface and CommandLogger implementation to accept CommandExecutionOptions instead of relying on properties from CommandLineToolOptions. LogSettings and InternalDryRun are now read from the execOpts parameter. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add GenericCommandLineToolOptions for creating generic CLI tool options - Update CommandExtensions to use CommandExecutionOptions instead of deleted CommandLineOptions - Fix all ExecuteCommandLineTool calls to use new 3-parameter signature - Update CommandLogger to not reference removed CommandLogging property on tool options - Update Command.GetOptionsObject to not reference removed OptionsObject property - Remove Sudo assignments from Linux options (now handled by CommandExecutionOptions) Part of #1811 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated the code generators to include the new executionOptions parameter: - ServiceInterfaceGenerator: Added executionOptions parameter to method signatures - GeneratorUtils.GenerateServiceMethod: Added executionOptions parameter and docs - SubDomainClassGenerator: Updated GenerateExecuteMethod with executionOptions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…1811) BREAKING CHANGE: All CLI tool service methods now use a 3-parameter signature. This major refactoring separates concerns by moving execution-related properties (WorkingDirectory, ThrowOnNonZeroExitCode, EnvironmentVariables, LogSettings) from CommandLineToolOptions to a dedicated CommandExecutionOptions parameter. Changes: - Update all CLI tool interfaces and implementations to use 3-parameter methods - Update DotNet, Git, Docker, Kubernetes, Helm, Terraform, and other tool services - Update build modules, tests, and examples to use the new API - Slimmed-down CommandLineToolOptions to only contain tool-specific properties New API pattern: await context.DotNet().Build( new DotNetBuildOptions { Configuration = "Release" }, new CommandExecutionOptions { WorkingDirectory = "src" }, cancellationToken); 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SummaryThis PR introduces a breaking change that separates execution-related properties from tool-specific options by introducing a new 3-parameter signature for all CLI tool service methods. Critical IssuesNone found ✅ Based on the PR description and codebase review, this change:
Suggestions1. Documentation & Migration GuideGiven the scope of this breaking change (1720 files), consider:
2. Backward Compatibility Helper (Optional)For such a large breaking change, consider whether an [Obsolete("Use the 3-parameter overload")]
Task<CommandResult> Build(DotNetBuildOptions? options, CancellationToken token);Though given this is a major version change, a clean break is also reasonable. 3. Test CoverageThe PR description shows:
Ensure the full CI pipeline completes successfully before merging to validate all 1720 file changes. Previous Review StatusNo previous comments found. Verdict✅ APPROVE - No critical issues This is a well-motivated breaking change that improves the API design by properly separating concerns. The systematic application across all tool integrations demonstrates thoroughness. The change aligns with SOLID principles (SRP) and resolves concrete issues (#1811) around naming conflicts. |
…meter Updated all Azure service files to use named parameter syntax `cancellationToken: token` instead of positional `token` to match the new 3-parameter API signature for ExecuteCommandLineTool. This is part of Issue #1811 - separating command execution options from tool-specific options. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
(options, executionOptions, cancellationToken)WorkingDirectory,ThrowOnNonZeroExitCode,EnvironmentVariables,LogSettings) from tool-specific options intoCommandExecutionOptionsCommandLineToolOptionsto only contain tool-specific propertiesMotivation
Resolves #1811 - The previous design mixed tool-specific options with execution-related settings, leading to:
WorkingDirectoryor similar propertiesNew API Pattern
Test plan
🤖 Generated with Claude Code