Skip to content

v0.2.5

Choose a tag to compare

@Oaklight Oaklight released this 22 Mar 19:27
· 325 commits to master since this release

v0.2.5 — 2026-03-23

Fixed

  • Anthropic input_schema missing type for parameterless tools: MCP tools with no parameters produce input_schema: {}, but Anthropic requires "type" to be present. Now defaults to {"type": "object"} when the schema dict lacks a type field — fixes tools.0.custom.input_schema.type: Field required errors 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_ir only checked inline_data (snake_case) but Gemini CLI sends inlineData (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_type field layout as fallback (#68)
  • Google GenAI tool_call_id reconciliation: New _reconcile_tool_call_ids method 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: functionResponse now separates into role: "tool" messages
  • Mixed content message ordering: Tool results now precede content parts
  • Google built-in tools (googleSearch, codeExecution): Skipped instead of producing empty function.name errors
  • Gateway: Starlette on_shutdown deprecation: Replaced with lifespan async context manager

Added

  • StreamContext: get_tool_call_args() and get_pending_tool_calls() methods for querying accumulated tool call state during streaming

Changed

  • BaseToolOps.p_tool_definition_to_ir return type: Now ToolDefinition | list[ToolDefinition] | None

Full changelog: https://github.com/Oaklight/llm-rosetta/blob/master/docs_en/docs/changelog.md