- openai-responses-function-call-output-input
- openai-responses-image-attachments
- openai-responses-image-generation-call
- openai-responses-mixed-input-order
- openai-responses-mixed-output-order
- openai-responses-real-world-tool-loop
- openai-responses-reasoning-blocks
- openai-responses-reasoning-only-output
- openai-responses-web-search
-
Loosen importer pre-check for Responses item arrays
- Current gap:
has_message_structurerejects arrays that do not haveroleor nestedmessage.role. - Goal: allow Responses-only arrays (
reasoning,function_call_output,web_search_call, etc.) to reach typed OpenAI conversion logic. - Acceptance: mixed/output-only Responses fixtures are not dropped at import pre-check.
- Current gap:
-
Handle raw string span input as user messages
- Current gap: string-valued
span.inputis ignored. - Goal: map string input to
Message::Userwith string content. - Acceptance: string-input fixtures (for example image generation and web search) include the expected leading user message.
- Current gap: string-valued
-
Expand lenient text-type parsing for content blocks
- Current gap: lenient parser only accepts
type: "text". - Goal: also accept OpenAI Responses block types
input_textandoutput_text. - Acceptance: fixtures containing these block types parse into expected user/assistant text messages.
- Current gap: lenient parser only accepts
-
Add typed compatibility for
callIdaliasing- Current gap: some fixtures use
callIdwhile generated OpenAI types expectcall_id. - Goal: normalize or alias
callIdat import boundary before typed conversion. - Acceptance: tool call and tool result linkage is preserved for both
call_idandcallId.
- Current gap: some fixtures use
-
Add typed compatibility for
function_call_result- Current gap: fixtures include
type: "function_call_result"which is not represented in generated enums. - Goal: normalize this to the canonical supported shape before conversion, without raw fallback parsing.
- Acceptance: output/input-order and tool-loop fixtures parse tool result messages correctly.
- Current gap: fixtures include
-
Add typed compatibility for non-string tool output payloads
- Current gap: fixtures include object-valued
output, while generated OpenAI types model output as string. - Goal: normalize object payloads to canonical representation for strict typed conversion.
- Acceptance: function/tool-result fixtures preserve structured output content in imported tool messages.
- Current gap: fixtures include object-valued
-
Decide and implement reasoning message aggregation behavior
- Current gap: reasoning output items become standalone assistant messages; some fixtures expect reasoning merged with adjacent assistant text.
- Goal: define canonical import behavior for reasoning-plus-message sequences and implement consistently.
- Acceptance:
openai-responses-reasoning-blocksandopenai-responses-reasoning-only-outputmatch expected message counts and roles.
-
Re-run and verify fixture suite after each fix
- Command:
cargo test -p lingua --test import_fixtures -- --nocapture - Process: update one behavior at a time and confirm no regressions in previously passing fixtures.
- Command: