Skip to content

Normalize malformed OpenAI tool arguments#304

Merged
everettjf merged 1 commit intomicroclaw:mainfrom
perrylau:fix/openai-tool-input-sanitization
Mar 30, 2026
Merged

Normalize malformed OpenAI tool arguments#304
everettjf merged 1 commit intomicroclaw:mainfrom
perrylau:fix/openai-tool-input-sanitization

Conversation

@perrylau
Copy link
Copy Markdown
Contributor

Summary

  • ignore empty and null trailing tool-call chunks from OpenAI-compatible streaming providers
  • normalize malformed or stringified historical tool inputs before sending chat completions and responses requests
  • add regression coverage for MiniMax/Qwen stream parsing and request-side tool argument sanitization

Test Plan

  • cargo test
  • cargo test llm::tests --lib
  • cargo build --release

@perrylau perrylau requested a review from everettjf as a code owner March 26, 2026 16:15
Copilot AI review requested due to automatic review settings March 26, 2026 16:15
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR hardens OpenAI-compatible streaming and request translation against malformed tool-call argument payloads from certain providers, ensuring tool inputs are consistently normalized before being sent back to chat-completions / responses endpoints.

Changes:

  • Ignore empty/null trailing tool_calls streaming chunks (id/name/arguments) so they don’t corrupt previously collected tool-call state.
  • Normalize ContentBlock::ToolUse.input into a JSON object (or {}) when building OpenAI request payloads, including handling historically stringified JSON.
  • Add regression tests covering MiniMax/Qwen stream parsing and request-side tool argument sanitization.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@everettjf
Copy link
Copy Markdown
Contributor

Thank you. I will check later today

@everettjf
Copy link
Copy Markdown
Contributor

Thank you :)

@everettjf everettjf merged commit 2820d0a into microclaw:main Mar 30, 2026
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants