Skip to content

Commit 1dde7e9

Browse files
CopilotKSemenenko
andcommitted
Sync upstream claude-code v2.1.77: add --name flag, Opus/Sonnet 4.6 models, update submodule
Co-authored-by: KSemenenko <4385716+KSemenenko@users.noreply.github.com>
1 parent c7929f7 commit 1dde7e9

File tree

5 files changed

+45
-1
lines changed

5 files changed

+45
-1
lines changed

ClaudeCodeSharpSDK.Tests/Unit/ClaudeExecTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public class ClaudeExecTests
3434
private const string HealthCheckInput = "Health check";
3535
private const string HooksKey = "hooks";
3636
private const string InputFormatFlag = "--input-format";
37+
private const string NameFlag = "--name";
38+
private const string SessionNameValue = "my-session";
3739
private const string MaxBudgetFlag = "--max-budget-usd";
3840
private const string MaxBudgetValue = "0.25";
3941
private const string McpConfigFlag = "--mcp-config";
@@ -206,6 +208,33 @@ public async Task BuildCommandArgs_WithReservedAdditionalCliFlag_Throws()
206208
await Assert.That(exception!.Message).Contains(ReservedOutputFormatFlag);
207209
}
208210

211+
[Test]
212+
public async Task BuildCommandArgs_WithSessionName_IncludesNameFlag()
213+
{
214+
var exec = new ClaudeExec(executablePath: TestConstants.ClaudeExecutablePath);
215+
216+
var commandArgs = exec.BuildCommandArgs(new ClaudeExecArgs
217+
{
218+
Input = SummarizeInput,
219+
SessionName = SessionNameValue,
220+
});
221+
222+
await Assert.That(GetRequiredFlagValue(commandArgs, NameFlag)).IsEqualTo(SessionNameValue);
223+
}
224+
225+
[Test]
226+
public async Task BuildCommandArgs_WithoutSessionName_DoesNotIncludeNameFlag()
227+
{
228+
var exec = new ClaudeExec(executablePath: TestConstants.ClaudeExecutablePath);
229+
230+
var commandArgs = exec.BuildCommandArgs(new ClaudeExecArgs
231+
{
232+
Input = SummarizeInput,
233+
});
234+
235+
await Assert.That(FindFlagIndex(commandArgs, NameFlag)).IsEqualTo(-1);
236+
}
237+
209238
private static JsonObject CreateBaseSettings()
210239
{
211240
return new JsonObject

ClaudeCodeSharpSDK/Execution/ClaudeExec.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public sealed class ClaudeExec
3838
private const string ContinueFlag = "--continue";
3939
private const string ResumeFlag = "--resume";
4040
private const string SessionIdFlag = "--session-id";
41+
private const string NameFlag = "--name";
4142
private const string ForkSessionFlag = "--fork-session";
4243
private const string NoSessionPersistenceFlag = "--no-session-persistence";
4344
private const string MaxBudgetUsdFlag = "--max-budget-usd";
@@ -227,6 +228,12 @@ internal IReadOnlyList<string> BuildCommandArgs(ClaudeExecArgs args)
227228
commandArgs.Add(args.SessionId);
228229
}
229230

231+
if (!string.IsNullOrWhiteSpace(args.SessionName))
232+
{
233+
commandArgs.Add(NameFlag);
234+
commandArgs.Add(args.SessionName);
235+
}
236+
230237
if (args.ForkSession)
231238
{
232239
commandArgs.Add(ForkSessionFlag);

ClaudeCodeSharpSDK/Execution/ClaudeExecArgs.cs

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

4848
public string? SessionId { get; init; }
4949

50+
public string? SessionName { get; init; }
51+
5052
public bool ForkSession { get; init; }
5153

5254
public bool NoSessionPersistence { get; init; }

ClaudeCodeSharpSDK/Models/ClaudeModels.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ public static class ClaudeModels
1010
private const string ClaudeHaiku35DisplayName = "Claude Haiku 3.5";
1111
private const string ClaudeHaiku35SnapshotDisplayName = "Claude Haiku 3.5 (2024-10-22)";
1212
private const string ClaudeHaiku3DisplayName = "Claude Haiku 3";
13+
private const string ClaudeOpus46AliasDisplayName = "Claude Opus 4.6";
1314
private const string ClaudeOpus45AliasDisplayName = "Claude Opus 4.5";
1415
private const string ClaudeOpus45SnapshotDisplayName = "Claude Opus 4.5 (2025-11-01)";
1516
private const string ClaudeOpus41AliasDisplayName = "Claude Opus 4.1";
1617
private const string ClaudeOpus41SnapshotDisplayName = "Claude Opus 4.1 (2025-08-05)";
1718
private const string ClaudeOpus40DisplayName = "Claude Opus 4";
19+
private const string ClaudeSonnet46AliasDisplayName = "Claude Sonnet 4.6";
1820
private const string ClaudeSonnet45DisplayName = "Claude Sonnet 4.5";
1921
private const string ClaudeSonnet45SnapshotDisplayName = "Claude Sonnet 4.5 (2025-09-29)";
2022
private const string ClaudeSonnet40DisplayName = "Claude Sonnet 4";
@@ -34,6 +36,8 @@ public static class ClaudeModels
3436
public const string ClaudeSonnet45 = "claude-sonnet-4-5-20250929";
3537
public const string ClaudeHaiku45Alias = "claude-haiku-4-5";
3638
public const string ClaudeHaiku45 = "claude-haiku-4-5-20251001";
39+
public const string ClaudeOpus46Alias = "claude-opus-4-6";
40+
public const string ClaudeSonnet46Alias = "claude-sonnet-4-6";
3741
public const string ClaudeOpus45Alias = "claude-opus-4-5";
3842
public const string ClaudeOpus45 = "claude-opus-4-5-20251101";
3943
public const string ClaudeOpus41Alias = "claude-opus-4-1";
@@ -56,6 +60,8 @@ public static class ClaudeModels
5660
new(Sonnet, Sonnet, LatestSonnetDescription, true),
5761
new(Opus, Opus, LatestOpusDescription, true),
5862
new(Haiku, Haiku, LatestHaikuDescription, true),
63+
new(ClaudeOpus46Alias, ClaudeOpus46AliasDisplayName, null, true),
64+
new(ClaudeSonnet46Alias, ClaudeSonnet46AliasDisplayName, null, true),
5965
new(ClaudeSonnet45Alias, ClaudeSonnet45DisplayName, null, true),
6066
new(ClaudeSonnet45, ClaudeSonnet45SnapshotDisplayName, null, true),
6167
new(ClaudeHaiku45Alias, ClaudeHaiku45DisplayName, null, true),

0 commit comments

Comments
 (0)