Skip to content

Commit d7db623

Browse files
committed
Fix ReasoningResponseItem's Status property not generating correctly
1 parent 26f12ea commit d7db623

File tree

5 files changed

+65
-8
lines changed

5 files changed

+65
-8
lines changed

src/Custom/Responses/Items/ReasoningResponseItem.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ public partial class ReasoningResponseItem
1919

2020
// CUSTOM: Enable reuse as an input model
2121
public ReasoningResponseItem(IEnumerable<ReasoningSummaryPart> summaryParts)
22-
: this(id: null, summaryParts)
23-
{ }
22+
: this(id: null, status: null, summaryParts)
23+
{
24+
}
2425

2526
// CUSTOM: Facilitate typical single-item summary text input model use
2627
public ReasoningResponseItem(string summaryText)
2728
: this(summaryParts: [new ReasoningSummaryTextPart(summaryText)])
28-
{ }
29+
{
30+
}
2931

3032
// CUSTOM: Provide convenience for typical single-item or text-concatenation scenario
3133
public string GetSummaryText()

src/Custom/Responses/Items/ReasoningStatus.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace OpenAI.Responses;
66
// - Added Experimental attribute.
77
// - Renamed.
88
[Experimental("OPENAI001")]
9-
[CodeGenType("ReasoningItemStatus")]
9+
[CodeGenType("ReasoningItemResourceStatus")]
1010
public enum ReasoningStatus
1111
{
1212
InProgress,

src/Generated/Models/Responses/ReasoningResponseItem.Serialization.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace OpenAI.Responses
1212
{
1313
public partial class ReasoningResponseItem : IJsonModel<ReasoningResponseItem>
1414
{
15-
internal ReasoningResponseItem() : this(InternalItemType.Reasoning, null, null, null, null)
15+
internal ReasoningResponseItem() : this(InternalItemType.Reasoning, null, null, null, default, null)
1616
{
1717
}
1818

@@ -36,6 +36,11 @@ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWri
3636
writer.WritePropertyName("encrypted_content"u8);
3737
writer.WriteStringValue(EncryptedContent);
3838
}
39+
if (_additionalBinaryDataProperties?.ContainsKey("status") != true)
40+
{
41+
writer.WritePropertyName("status"u8);
42+
writer.WriteStringValue(Status.Value.ToSerialString());
43+
}
3944
if (_additionalBinaryDataProperties?.ContainsKey("summary") != true)
4045
{
4146
writer.WritePropertyName("summary"u8);
@@ -71,6 +76,7 @@ internal static ReasoningResponseItem DeserializeReasoningResponseItem(JsonEleme
7176
string id = default;
7277
IDictionary<string, BinaryData> additionalBinaryDataProperties = new ChangeTrackingDictionary<string, BinaryData>();
7378
string encryptedContent = default;
79+
ReasoningStatus? status = default;
7480
IReadOnlyList<ReasoningSummaryPart> summaryParts = default;
7581
foreach (var prop in element.EnumerateObject())
7682
{
@@ -94,6 +100,11 @@ internal static ReasoningResponseItem DeserializeReasoningResponseItem(JsonEleme
94100
encryptedContent = prop.Value.GetString();
95101
continue;
96102
}
103+
if (prop.NameEquals("status"u8))
104+
{
105+
status = prop.Value.GetString().ToReasoningStatus();
106+
continue;
107+
}
97108
if (prop.NameEquals("summary"u8))
98109
{
99110
List<ReasoningSummaryPart> array = new List<ReasoningSummaryPart>();
@@ -107,7 +118,13 @@ internal static ReasoningResponseItem DeserializeReasoningResponseItem(JsonEleme
107118
// Plugin customization: remove options.Format != "W" check
108119
additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText()));
109120
}
110-
return new ReasoningResponseItem(kind, id, additionalBinaryDataProperties, encryptedContent, summaryParts);
121+
return new ReasoningResponseItem(
122+
kind,
123+
id,
124+
additionalBinaryDataProperties,
125+
encryptedContent,
126+
status,
127+
summaryParts);
111128
}
112129

113130
BinaryData IPersistableModel<ReasoningResponseItem>.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);

src/Generated/Models/Responses/ReasoningResponseItem.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@ namespace OpenAI.Responses
1313
[Experimental("OPENAI001")]
1414
public partial class ReasoningResponseItem : ResponseItem
1515
{
16-
internal ReasoningResponseItem(string id, IEnumerable<ReasoningSummaryPart> summaryParts) : base(InternalItemType.Reasoning, id)
16+
internal ReasoningResponseItem(string id, ReasoningStatus? status, IEnumerable<ReasoningSummaryPart> summaryParts) : base(InternalItemType.Reasoning, id)
1717
{
18+
Status = status;
1819
SummaryParts = summaryParts.ToList();
1920
}
2021

21-
internal ReasoningResponseItem(InternalItemType kind, string id, IDictionary<string, BinaryData> additionalBinaryDataProperties, string encryptedContent, IReadOnlyList<ReasoningSummaryPart> summaryParts) : base(kind, id, additionalBinaryDataProperties)
22+
internal ReasoningResponseItem(InternalItemType kind, string id, IDictionary<string, BinaryData> additionalBinaryDataProperties, string encryptedContent, ReasoningStatus? status, IReadOnlyList<ReasoningSummaryPart> summaryParts) : base(kind, id, additionalBinaryDataProperties)
2223
{
2324
// Plugin customization: ensure initialization of collections
2425
EncryptedContent = encryptedContent;
26+
Status = status;
2527
SummaryParts = summaryParts ?? new ChangeTrackingList<ReasoningSummaryPart>();
2628
}
2729

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// <auto-generated/>
2+
3+
#nullable disable
4+
5+
using System;
6+
7+
namespace OpenAI.Responses
8+
{
9+
internal static partial class ReasoningStatusExtensions
10+
{
11+
public static string ToSerialString(this ReasoningStatus value) => value switch
12+
{
13+
ReasoningStatus.InProgress => "in_progress",
14+
ReasoningStatus.Completed => "completed",
15+
ReasoningStatus.Incomplete => "incomplete",
16+
_ => throw new ArgumentOutOfRangeException(nameof(value), value, "Unknown ReasoningStatus value.")
17+
};
18+
19+
public static ReasoningStatus ToReasoningStatus(this string value)
20+
{
21+
if (StringComparer.OrdinalIgnoreCase.Equals(value, "in_progress"))
22+
{
23+
return ReasoningStatus.InProgress;
24+
}
25+
if (StringComparer.OrdinalIgnoreCase.Equals(value, "completed"))
26+
{
27+
return ReasoningStatus.Completed;
28+
}
29+
if (StringComparer.OrdinalIgnoreCase.Equals(value, "incomplete"))
30+
{
31+
return ReasoningStatus.Incomplete;
32+
}
33+
throw new ArgumentOutOfRangeException(nameof(value), value, "Unknown ReasoningStatus value.");
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)