Skip to content

Commit 4398dd8

Browse files
CopilotKSemenenko
andcommitted
feat: sync Claude Code upstream changes da80366 -> 079dc85 (v2.1.77); add --name flag
Co-authored-by: KSemenenko <4385716+KSemenenko@users.noreply.github.com>
1 parent 02a3bb4 commit 4398dd8

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed

ClaudeCodeSharpSDK.Tests/Unit/ClaudeExecTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ public class ClaudeExecTests
7272
private const string TmpDirectory = "/tmp";
7373
private const string UserProjectSettingSources = "user,project";
7474
private const string VerboseFlag = "--verbose";
75+
private const string NameFlag = "--name";
76+
private const string SessionDisplayName = "My review session";
7577
private const string WriteToolName = "Write";
7678
private static readonly string[] AdditionalDirectories = [RepoDirectory, TmpDirectory];
7779
private static readonly string[] AllowedTools = [ReadToolName, WriteToolName];
@@ -159,6 +161,33 @@ public async Task BuildCommandArgs_RepeatsVarArgFlagsWithoutCommaPacking()
159161
await Assert.That(GetAllFlagValues(commandArgs, BetasFlag)).IsEquivalentTo(BetaFlags);
160162
}
161163

164+
[Test]
165+
public async Task BuildCommandArgs_WithSessionName_IncludesNameFlag()
166+
{
167+
var exec = new ClaudeExec(executablePath: TestConstants.ClaudeExecutablePath);
168+
169+
var commandArgs = exec.BuildCommandArgs(new ClaudeExecArgs
170+
{
171+
Input = SummarizeInput,
172+
SessionName = SessionDisplayName,
173+
});
174+
175+
await Assert.That(GetRequiredFlagValue(commandArgs, NameFlag)).IsEqualTo(SessionDisplayName);
176+
}
177+
178+
[Test]
179+
public async Task BuildCommandArgs_WithoutSessionName_OmitsNameFlag()
180+
{
181+
var exec = new ClaudeExec(executablePath: TestConstants.ClaudeExecutablePath);
182+
183+
var commandArgs = exec.BuildCommandArgs(new ClaudeExecArgs
184+
{
185+
Input = SummarizeInput,
186+
});
187+
188+
await Assert.That(commandArgs.Contains(NameFlag)).IsFalse();
189+
}
190+
162191
[Test]
163192
public async Task BuildEnvironment_IncludesAnthropicOverrides()
164193
{

ClaudeCodeSharpSDK/Execution/ClaudeExec.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public sealed class ClaudeExec
5151
private const string BetasFlag = "--betas";
5252
private const string AgentsFlag = "--agents";
5353
private const string VerboseFlag = "--verbose";
54+
private const string NameFlag = "--name";
5455

5556
private const string StreamJsonFormat = "stream-json";
5657
private const string TextFormat = "text";
@@ -284,6 +285,12 @@ internal IReadOnlyList<string> BuildCommandArgs(ClaudeExecArgs args)
284285
commandArgs.Add(JsonSerializer.Serialize(inlineAgents, ClaudeJsonSerializerContext.Default.DictionaryStringInlineAgentDefinition));
285286
}
286287

288+
if (!string.IsNullOrWhiteSpace(args.SessionName))
289+
{
290+
commandArgs.Add(NameFlag);
291+
commandArgs.Add(args.SessionName);
292+
}
293+
287294
if (args.AdditionalCliArguments is not null)
288295
{
289296
foreach (var argument in args.AdditionalCliArguments)

ClaudeCodeSharpSDK/Execution/ClaudeExecArgs.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public sealed record ClaudeExecArgs
7575

7676
public bool ReplayUserMessages { get; init; }
7777

78+
public string? SessionName { get; init; }
79+
7880
public IReadOnlyList<string>? AdditionalCliArguments { get; init; }
7981

8082
public CancellationToken CancellationToken { get; init; } = CancellationToken.None;

0 commit comments

Comments
 (0)