Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions dotnet/src/Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1052,16 +1052,16 @@ private sealed class LoggerTraceListener(ILogger logger) : TraceListener
public override void TraceEvent(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, string? message) =>
logger.Log(MapLevel(eventType), "[{Source}] {Message}", source, message);

public override void TraceEvent(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, string? format, params object?[]? args) =>
public override void TraceEvent(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, string? format, params object?[]? args) =>
logger.Log(MapLevel(eventType), "[{Source}] {Message}", source, args is null || args.Length == 0 ? format : string.Format(format ?? "", args));

public override void TraceData(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, object? data) =>
public override void TraceData(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, object? data) =>
logger.Log(MapLevel(eventType), "[{Source}] {Data}", source, data);

public override void TraceData(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, params object?[]? data) =>
public override void TraceData(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, params object?[]? data) =>
logger.Log(MapLevel(eventType), "[{Source}] {Data}", source, data is null ? null : string.Join(", ", data));

public override void Write(string? message) =>
public override void Write(string? message) =>
logger.LogTrace("{Message}", message);

public override void WriteLine(string? message) =>
Expand Down
98 changes: 61 additions & 37 deletions dotnet/src/Generated/SessionEvents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//
// Generated from: @github/copilot/session-events.schema.json
// Generated by: scripts/generate-session-types.ts
// Generated at: 2026-01-22T13:45:56.468Z
// Generated at: 2026-01-22T14:30:57.371Z
//
// To update these types:
// 1. Update the schema in copilot-agent-runtime
Expand All @@ -21,7 +21,7 @@ namespace GitHub.Copilot.SDK;
/// Base class for all session events with polymorphic JSON serialization.
/// </summary>
[JsonPolymorphic(
TypeDiscriminatorPropertyName = "type",
TypeDiscriminatorPropertyName = "type",
UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FailSerialization)]
[JsonDerivedType(typeof(AbortEvent), "abort")]
[JsonDerivedType(typeof(AssistantIntentEvent), "assistant.intent")]
Expand Down Expand Up @@ -53,6 +53,7 @@ namespace GitHub.Copilot.SDK;
[JsonDerivedType(typeof(SystemMessageEvent), "system.message")]
[JsonDerivedType(typeof(ToolExecutionCompleteEvent), "tool.execution_complete")]
[JsonDerivedType(typeof(ToolExecutionPartialResultEvent), "tool.execution_partial_result")]
[JsonDerivedType(typeof(ToolExecutionProgressEvent), "tool.execution_progress")]
[JsonDerivedType(typeof(ToolExecutionStartEvent), "tool.execution_start")]
[JsonDerivedType(typeof(ToolUserRequestedEvent), "tool.user_requested")]
[JsonDerivedType(typeof(UserMessageEvent), "user.message")]
Expand Down Expand Up @@ -384,6 +385,18 @@ public partial class ToolExecutionPartialResultEvent : SessionEvent
public required ToolExecutionPartialResultData Data { get; set; }
}

/// <summary>
/// Event: tool.execution_progress
/// </summary>
public partial class ToolExecutionProgressEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "tool.execution_progress";

[JsonPropertyName("data")]
public required ToolExecutionProgressData Data { get; set; }
}

/// <summary>
/// Event: tool.execution_complete
/// </summary>
Expand Down Expand Up @@ -845,6 +858,15 @@ public partial class ToolExecutionPartialResultData
public required string PartialOutput { get; set; }
}

public partial class ToolExecutionProgressData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }

[JsonPropertyName("progressMessage")]
public required string ProgressMessage { get; set; }
}

public partial class ToolExecutionCompleteData
{
[JsonPropertyName("toolCallId")]
Expand Down Expand Up @@ -1099,41 +1121,41 @@ public partial class SystemMessageDataMetadata
public Dictionary<string, object>? Variables { get; set; }
}

[JsonConverter(typeof(JsonStringEnumConverter<SessionHandoffDataSourceType>))]
public enum SessionHandoffDataSourceType
{
[JsonStringEnumMemberName("remote")]
Remote,
[JsonStringEnumMemberName("local")]
Local,
}

[JsonConverter(typeof(JsonStringEnumConverter<UserMessageDataAttachmentsItemType>))]
public enum UserMessageDataAttachmentsItemType
{
[JsonStringEnumMemberName("file")]
File,
[JsonStringEnumMemberName("directory")]
Directory,
}

[JsonConverter(typeof(JsonStringEnumConverter<AssistantMessageDataToolRequestsItemType>))]
public enum AssistantMessageDataToolRequestsItemType
{
[JsonStringEnumMemberName("function")]
Function,
[JsonStringEnumMemberName("custom")]
Custom,
}

[JsonConverter(typeof(JsonStringEnumConverter<SystemMessageDataRole>))]
public enum SystemMessageDataRole
{
[JsonStringEnumMemberName("system")]
System,
[JsonStringEnumMemberName("developer")]
Developer,
}
[JsonConverter(typeof(JsonStringEnumConverter<SessionHandoffDataSourceType>))]
public enum SessionHandoffDataSourceType
{
[JsonStringEnumMemberName("remote")]
Remote,
[JsonStringEnumMemberName("local")]
Local,
}

[JsonConverter(typeof(JsonStringEnumConverter<UserMessageDataAttachmentsItemType>))]
public enum UserMessageDataAttachmentsItemType
{
[JsonStringEnumMemberName("file")]
File,
[JsonStringEnumMemberName("directory")]
Directory,
}

[JsonConverter(typeof(JsonStringEnumConverter<AssistantMessageDataToolRequestsItemType>))]
public enum AssistantMessageDataToolRequestsItemType
{
[JsonStringEnumMemberName("function")]
Function,
[JsonStringEnumMemberName("custom")]
Custom,
}

[JsonConverter(typeof(JsonStringEnumConverter<SystemMessageDataRole>))]
public enum SystemMessageDataRole
{
[JsonStringEnumMemberName("system")]
System,
[JsonStringEnumMemberName("developer")]
Developer,
}

[JsonSourceGenerationOptions(
JsonSerializerDefaults.Web,
Expand Down Expand Up @@ -1210,6 +1232,8 @@ public enum SystemMessageDataRole
[JsonSerializable(typeof(ToolExecutionCompleteEvent))]
[JsonSerializable(typeof(ToolExecutionPartialResultData))]
[JsonSerializable(typeof(ToolExecutionPartialResultEvent))]
[JsonSerializable(typeof(ToolExecutionProgressData))]
[JsonSerializable(typeof(ToolExecutionProgressEvent))]
[JsonSerializable(typeof(ToolExecutionStartData))]
[JsonSerializable(typeof(ToolExecutionStartEvent))]
[JsonSerializable(typeof(ToolUserRequestedData))]
Expand Down
14 changes: 7 additions & 7 deletions nodejs/scripts/generate-csharp-session-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,15 +169,15 @@ function getOrCreateEnum(

// Generate the enum code with JsonConverter and JsonStringEnumMemberName attributes
const lines: string[] = [];
lines.push(` [JsonConverter(typeof(JsonStringEnumConverter<${enumName}>))]`);
lines.push(` public enum ${enumName}`);
lines.push(` {`);
lines.push(`[JsonConverter(typeof(JsonStringEnumConverter<${enumName}>))]`);
lines.push(`public enum ${enumName}`);
lines.push(`{`);
for (const value of values) {
const memberName = toPascalCaseEnumMember(value);
lines.push(` [JsonStringEnumMemberName("${value}")]`);
lines.push(` ${memberName},`);
lines.push(` [JsonStringEnumMemberName("${value}")]`);
lines.push(` ${memberName},`);
}
lines.push(` }`);
lines.push(`}`);
lines.push("");

enumOutput.push(lines.join("\n"));
Expand Down Expand Up @@ -501,7 +501,7 @@ namespace GitHub.Copilot.SDK;
);
lines.push(`/// </summary>`);
lines.push(`[JsonPolymorphic(`);
lines.push(` TypeDiscriminatorPropertyName = "type", `);
lines.push(` TypeDiscriminatorPropertyName = "type",`);
lines.push(
` UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FailSerialization)]`
);
Expand Down
Loading