Bug Description
OpenAI Responses items have type-specific top-level fields such as content for message, call_id/arguments for function_call, and summary/content for reasoning.
In SMG, the response persistence path stores output items other than message as the whole item JSON inside the CONTENT column. Some item types are reconstructed back to the expected top-level shape on readback, but others are not.
This causes /v1/conversations/{id}/items to return an OpenAI-incompatible shape for reasoning items.
Steps to Reproduce
smg_test.txt
openai_test.txt
Full test steps are in 2 test files. One for openai, one for smg
Expected Behavior
Expected OpenAI-style reasoning item:
{
"id": "rs_xxx",
"type": "reasoning",
"summary": []
}
Actual Behavior
Actual SMG result:
{
"id": "rs_xxx",
"type": "reasoning",
"content": {
"id": "rs_xxx",
"type": "reasoning",
"summary": []
},
"status": "completed"
}
Component
reasoning-parser
Routing Policy (if applicable)
None
Connection Mode
None
Configuration
Logs / Error Output
Environment
Cargo
Deployment Environment
Local development
Streaming Context
Additional Context
No response
Pre-submission Checklist
Bug Description
OpenAI Responses items have type-specific top-level fields such as content for message, call_id/arguments for function_call, and summary/content for reasoning.
In SMG, the response persistence path stores output items other than message as the whole item JSON inside the CONTENT column. Some item types are reconstructed back to the expected top-level shape on readback, but others are not.
This causes /v1/conversations/{id}/items to return an OpenAI-incompatible shape for reasoning items.
Steps to Reproduce
smg_test.txt
openai_test.txt
Full test steps are in 2 test files. One for openai, one for smg
Expected Behavior
Expected OpenAI-style reasoning item:
Actual Behavior
Actual SMG result:
Component
reasoning-parser
Routing Policy (if applicable)
None
Connection Mode
None
Configuration
Logs / Error Output
Environment
Cargo
Deployment Environment
Local development
Streaming Context
Additional Context
No response
Pre-submission Checklist