Skip to main content

Request Mapping

Antigravity Manager acts as a universal protocol translator, converting requests from OpenAI and Claude formats into Gemini’s native v1internal format. This enables seamless integration with AI clients while leveraging Google’s powerful models.

Architecture Overview

OpenAI to Gemini Conversion

Location: src-tauri/src/proxy/mappers/openai/request.rs

Message Transformation

OpenAI messages are converted to Gemini’s contents format with role mapping:
Role Mapping:
  • assistantmodel
  • useruser
  • tool/functionuser (tool results are user messages)
  • system/developer → Extracted to systemInstruction

System Instructions

System messages are extracted and combined with:
  1. Antigravity Identity (if not already present)
  2. Global System Prompt (if configured)
  3. User-provided system messages

Tool Calls Conversion

OpenAI tool calls are transformed into Gemini’s functionCall format: OpenAI Format:
Gemini Format:

Thinking Mode Support

For thinking models (containing -thinking or pro variants):
Budget Configuration:
  • Passthrough Mode: Uses user-specified budget
  • Custom Mode: Uses configured budget (capped at model limit)
  • Auto Mode: Uses model-specific default (24576 for Gemini Pro)
  • Adaptive Mode: Dynamic based on request complexity

Multimodal Content

Image URLs are converted to inline data:

Generation Config Mapping

Claude to Gemini Conversion

Location: src-tauri/src/proxy/mappers/claude/request.rs

Message Structure

Claude’s message format is more complex, supporting thinking blocks:
Converted to Gemini:

Block Ordering

Claude requires strict block ordering: Thinking → Text → Tool Use The mapper enforces this with triple-stage partitioning (see src-tauri/src/proxy/mappers/claude/request.rs:178-252).

Signature Management

Thinking blocks require signatures for validation:
  1. Client-provided signature (highest priority)
  2. Context signature (from previous messages)
  3. Session cache (conversation-level)
  4. Tool cache (tool-specific)
  5. Global store (deprecated, for compatibility)
Signatures are validated for:
  • Minimum length (50 characters)
  • Model compatibility (family matching)
  • Not from retry attempts

Cache Control Cleanup

Claude clients may send cache_control fields from history:
This prevents “Extra inputs are not permitted” errors.

Tool Schema Conversion

Claude tool schemas are converted to Gemini’s uppercase type format:
Invalid fields are cleaned:
  • format (JSON Schema validation)
  • strict (OpenAI-specific)
  • additionalProperties
  • definitions / $ref (expanded inline)

Image Generation

Both protocols support image generation through gemini-3-pro-image models.

Size Parameter Mapping

Priority: imageSize > size + quality > model suffix

Quality Mapping

Aspect Ratio Auto-Detection

WxH format is automatically converted:

Request Enhancement

Session ID Injection

All requests include a stable session ID:

Safety Settings

All filters are disabled by default for proxy compatibility:
Configurable via GEMINI_SAFETY_THRESHOLD environment variable.

Tool Config

Forces validated tool calling mode:

Common Utilities

Location: src-tauri/src/proxy/mappers/common_utils.rs

Google Search Injection

When web search is detected or requested:

Undefined Cleanup

Recursively removes [undefined] strings from Cherry Studio and other clients:

JSON Schema Fixes

Common corrections:
  • Convert paths (array) → path (string) for tools
  • Fix parameter types (string vs number)
  • Remove validation keywords (format, pattern)
  • Expand $ref definitions

Error Handling

Request mapping can fail with:
  • Empty tool names → Skipped
  • Invalid signatures → Downgraded to text
  • Incompatible thinking history → Thinking disabled
  • Missing required fields → Auto-injected defaults

See Also