diff --git a/sidecar/src/Kopaya.AgentHost/Services/CopilotConnectionMetadataResolver.cs b/sidecar/src/Kopaya.AgentHost/Services/CopilotConnectionMetadataResolver.cs index 72d4fbe..06b9ce4 100644 --- a/sidecar/src/Kopaya.AgentHost/Services/CopilotConnectionMetadataResolver.cs +++ b/sidecar/src/Kopaya.AgentHost/Services/CopilotConnectionMetadataResolver.cs @@ -32,9 +32,10 @@ internal static partial class CopilotConnectionMetadataResolver { try { + (string executablePath, string[] arguments) = CreateCliCommand(cliContext, "version"); CommandResult result = await RunProcessAsync( - executablePath: cliContext.CliPath, - arguments: ["version"], + executablePath: executablePath, + arguments: arguments, environment: cliContext.Environment, timeout: CopilotVersionTimeout, cancellationToken).ConfigureAwait(false); @@ -59,6 +60,18 @@ internal static partial class CopilotConnectionMetadataResolver } } + internal static (string ExecutablePath, string[] Arguments) CreateCliCommand( + CopilotCliContext cliContext, + params string[] arguments) + { + ArgumentNullException.ThrowIfNull(cliContext); + ArgumentNullException.ThrowIfNull(arguments); + + return ( + cliContext.LaunchPath, + [.. cliContext.LaunchArgs, .. arguments]); + } + internal static SidecarCopilotCliVersionDiagnosticsDto ParseCliVersionOutput( string? standardOutput, string? standardError = null, diff --git a/sidecar/tests/Kopaya.AgentHost.Tests/CopilotConnectionMetadataResolverTests.cs b/sidecar/tests/Kopaya.AgentHost.Tests/CopilotConnectionMetadataResolverTests.cs index 4dbe16f..a126503 100644 --- a/sidecar/tests/Kopaya.AgentHost.Tests/CopilotConnectionMetadataResolverTests.cs +++ b/sidecar/tests/Kopaya.AgentHost.Tests/CopilotConnectionMetadataResolverTests.cs @@ -36,6 +36,22 @@ public sealed class CopilotConnectionMetadataResolverTests Assert.Equal("1.0.10", diagnostics.LatestVersion); } + [Fact] + public void CreateCliCommand_UsesLaunchPathAndAppendsCommandArguments() + { + CopilotCliContext cliContext = new( + CliPath: @"C:\tools\copilot.exe", + LaunchPath: @"C:\Windows\System32\cmd.exe", + LaunchArgs: ["/d", "/s", "/c", "copilot"], + Environment: new Dictionary(StringComparer.OrdinalIgnoreCase)); + + (string executablePath, string[] arguments) = + CopilotConnectionMetadataResolver.CreateCliCommand(cliContext, "version"); + + Assert.Equal(@"C:\Windows\System32\cmd.exe", executablePath); + Assert.Equal(["/d", "/s", "/c", "copilot", "version"], arguments); + } + [Fact] public void NormalizeHost_StripsSchemeAndTrailingSlash() {