v0.2.5
v0.2.5 — 2026-03-23
Fixed
- Anthropic
input_schemamissingtypefor parameterless tools: MCP tools with no parameters produceinput_schema: {}, but Anthropic requires"type"to be present. Now defaults to{"type": "object"}when the schema dict lacks atypefield — fixestools.0.custom.input_schema.type: Field requirederrors when routing Google GenAI or OpenAI Responses tool calls to Anthropic upstream - Google GenAI full-stack camelCase field handling: Gemini CLI and Google REST API use camelCase (
inlineData,fileData,mimeType,fileUri,functionCall,functionResponse,finishReason,usageMetadata,responseMimeType,responseSchema,thinkingConfig,maxOutputTokens,stopSequences, etc.) but converters previously only accepted snake_case. All P→IR methods now accept both conventions; all IR→P methods output camelCase for REST API compatibility - Google→IR conversion dropping image/audio/file data:
p_part_to_ironly checkedinline_data(snake_case) but Gemini CLI sendsinlineData(camelCase). Fixed by normalizing camelCase keys at the dispatch entry point - Cross-format image conversion failure (Google → OpenAI/Anthropic): All three target converters now handle the top-level
data+media_typefield layout as fallback (#68) - Google GenAI tool_call_id reconciliation: New
_reconcile_tool_call_idsmethod matches tool results to tool calls by function name - tool_call_id exceeding OpenAI 40-char limit: Shortened to
call_{24hex}(fixed 29 chars) - Google→IR tool result role mapping:
functionResponsenow separates intorole: "tool"messages - Mixed content message ordering: Tool results now precede content parts
- Google built-in tools (googleSearch, codeExecution): Skipped instead of producing empty
function.nameerrors - Gateway: Starlette
on_shutdowndeprecation: Replaced withlifespanasync context manager
Added
- StreamContext:
get_tool_call_args()andget_pending_tool_calls()methods for querying accumulated tool call state during streaming
Changed
BaseToolOps.p_tool_definition_to_irreturn type: NowToolDefinition | list[ToolDefinition] | None
Full changelog: https://github.com/Oaklight/llm-rosetta/blob/master/docs_en/docs/changelog.md