v0.2.3
Fixed
- Tool schema sanitization applied to all converters:
_sanitize_schema()was previously only called in the OpenAI Chat converter. Google GenAI, OpenAI Responses, and Anthropic converters now also sanitize tool parameter schemas before sending to upstream, preventing rejections from strict endpoints like Vertex AI (#80) - Non-standard
refand$schemakeywords stripped: OpenCode's built-in tools use a barereffield (without$prefix) and$schemaat the top level, both rejected by Vertex AI. Added to the unsupported keywords blocklist (#80) $ref/$defsresolved by inlining: JSON Schema$refreferences are now resolved by inlining the referenced definition from$defs/definitions, and both keys are removed from the output. Supports nested and chained references (#80)- Streaming tool call arguments not accumulated: OpenAI Chat, Anthropic, and Google GenAI converters registered tool calls in
StreamContextbut never calledappend_tool_call_args()to accumulate argument deltas during streaming. This caused tool call arguments to arrive empty at upstream. Only the OpenAI Responses converter was correct (#81) - OpenAI Chat streaming tool call ID resolution: Delta-only chunks (carrying
indexbut noid) produced an empty-stringtool_call_id. Now resolves the effective ID fromStreamContext._tool_call_orderusing the chunk index (#81)
Changed
sanitize_schemaextracted toconverters/base/tools.py: The schema sanitization utility is now a public shared function inconverters/base/tools.py, exported viaconverters.base. All 4 convertertool_ops.pyfiles import from the shared location instead of cross-importing fromopenai_chat(#66)
Full changelog: v0.2.2...v0.2.3
PyPI: https://pypi.org/project/llm-rosetta/0.2.3/