Skip to content

Commit 81922da

Browse files
rranabhaclaude
andcommitted
feat: add OutputOpenAIResponseReasoningItem to Output union
The Output discriminated union was missing a ReasoningItem variant, causing type="reasoning" output items from the Responses API to fall back to OutputOpenAIResponseMessageOutput with Pydantic warnings and broken content access. Adds OutputOpenAIResponseReasoningItem (with Content and Summary subtypes) to both non-streaming and streaming response types. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 3eb32ab commit 81922da

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed

src/llama_stack_client/types/response_object.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
"OutputOpenAIResponseOutputMessageMcpListTools",
4141
"OutputOpenAIResponseOutputMessageMcpListToolsTool",
4242
"OutputOpenAIResponseMcpApprovalRequest",
43+
"OutputOpenAIResponseReasoningItem",
44+
"OutputOpenAIResponseReasoningItemContent",
45+
"OutputOpenAIResponseReasoningItemSummary",
4346
"Error",
4447
"IncompleteDetails",
4548
"Prompt",
@@ -403,12 +406,49 @@ class OutputOpenAIResponseMcpApprovalRequest(BaseModel):
403406
type: Optional[Literal["mcp_approval_request"]] = None
404407

405408

409+
class OutputOpenAIResponseReasoningItemContent(BaseModel):
410+
"""Reasoning text content from the model's chain-of-thought."""
411+
412+
text: str
413+
414+
type: Optional[Literal["reasoning_text"]] = None
415+
416+
417+
class OutputOpenAIResponseReasoningItemSummary(BaseModel):
418+
"""Summary of the model's reasoning output."""
419+
420+
text: str
421+
422+
type: Optional[Literal["summary_text"]] = None
423+
424+
425+
class OutputOpenAIResponseReasoningItem(BaseModel):
426+
"""Reasoning output item for OpenAI responses.
427+
428+
Contains the model's chain-of-thought reasoning, either as raw content
429+
(open-source models) or as a summary (closed-source models).
430+
"""
431+
432+
id: str
433+
434+
summary: List[OutputOpenAIResponseReasoningItemSummary]
435+
436+
content: Optional[List[OutputOpenAIResponseReasoningItemContent]] = None
437+
438+
encrypted_content: Optional[str] = None
439+
440+
status: Optional[Literal["in_progress", "completed", "incomplete"]] = None
441+
442+
type: Optional[Literal["reasoning"]] = None
443+
444+
406445
Output: TypeAlias = Annotated[
407446
Union[
408447
OutputOpenAIResponseMessageOutput,
409448
OutputOpenAIResponseOutputMessageWebSearchToolCall,
410449
OutputOpenAIResponseOutputMessageFileSearchToolCall,
411450
OutputOpenAIResponseOutputMessageFunctionToolCall,
451+
OutputOpenAIResponseReasoningItem,
412452
OutputOpenAIResponseOutputMessageMcpCall,
413453
OutputOpenAIResponseOutputMessageMcpListTools,
414454
OutputOpenAIResponseMcpApprovalRequest,

src/llama_stack_client/types/response_object_stream.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
"OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListTools",
4343
"OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListToolsTool",
4444
"OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMcpApprovalRequest",
45+
"OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItem",
46+
"OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItemContent",
47+
"OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItemSummary",
4548
"OpenAIResponseObjectStreamResponseOutputItemDone",
4649
"OpenAIResponseObjectStreamResponseOutputItemDoneItem",
4750
"OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessage",
@@ -67,6 +70,9 @@
6770
"OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListTools",
6871
"OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListToolsTool",
6972
"OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMcpApprovalRequest",
73+
"OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItem",
74+
"OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItemContent",
75+
"OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItemSummary",
7076
"OpenAIResponseObjectStreamResponseOutputTextDelta",
7177
"OpenAIResponseObjectStreamResponseOutputTextDeltaLogprob",
7278
"OpenAIResponseObjectStreamResponseOutputTextDeltaLogprobTopLogprob",
@@ -491,12 +497,45 @@ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMcpAppr
491497
type: Optional[Literal["mcp_approval_request"]] = None
492498

493499

500+
class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItemContent(BaseModel):
501+
"""Reasoning text content from the model's chain-of-thought."""
502+
503+
text: str
504+
505+
type: Optional[Literal["reasoning_text"]] = None
506+
507+
508+
class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItemSummary(BaseModel):
509+
"""Summary of the model's reasoning output."""
510+
511+
text: str
512+
513+
type: Optional[Literal["summary_text"]] = None
514+
515+
516+
class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItem(BaseModel):
517+
"""Reasoning output item for OpenAI responses."""
518+
519+
id: str
520+
521+
summary: List[OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItemSummary]
522+
523+
content: Optional[List[OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItemContent]] = None
524+
525+
encrypted_content: Optional[str] = None
526+
527+
status: Optional[str] = None
528+
529+
type: Optional[Literal["reasoning"]] = None
530+
531+
494532
OpenAIResponseObjectStreamResponseOutputItemAddedItem: TypeAlias = Annotated[
495533
Union[
496534
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessage,
497535
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageWebSearchToolCall,
498536
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageFileSearchToolCall,
499537
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageFunctionToolCall,
538+
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseReasoningItem,
500539
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpCall,
501540
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListTools,
502541
OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMcpApprovalRequest,
@@ -860,12 +899,45 @@ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMcpAppro
860899
type: Optional[Literal["mcp_approval_request"]] = None
861900

862901

902+
class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItemContent(BaseModel):
903+
"""Reasoning text content from the model's chain-of-thought."""
904+
905+
text: str
906+
907+
type: Optional[Literal["reasoning_text"]] = None
908+
909+
910+
class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItemSummary(BaseModel):
911+
"""Summary of the model's reasoning output."""
912+
913+
text: str
914+
915+
type: Optional[Literal["summary_text"]] = None
916+
917+
918+
class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItem(BaseModel):
919+
"""Reasoning output item for OpenAI responses."""
920+
921+
id: str
922+
923+
summary: List[OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItemSummary]
924+
925+
content: Optional[List[OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItemContent]] = None
926+
927+
encrypted_content: Optional[str] = None
928+
929+
status: Optional[str] = None
930+
931+
type: Optional[Literal["reasoning"]] = None
932+
933+
863934
OpenAIResponseObjectStreamResponseOutputItemDoneItem: TypeAlias = Annotated[
864935
Union[
865936
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessage,
866937
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageWebSearchToolCall,
867938
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageFileSearchToolCall,
868939
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageFunctionToolCall,
940+
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseReasoningItem,
869941
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpCall,
870942
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListTools,
871943
OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMcpApprovalRequest,

0 commit comments

Comments
 (0)