gproxy-transform 2.6.3

Pairwise request/response/stream transforms between the OpenAI, Anthropic Claude, and Google Gemini APIs
Documentation
use crate::protocol::{claude, gemini};
use crate::transform::{TransformContext, TransformError};

use super::{u64_to_i32_default, wire_string};

pub(in crate::transform::models) fn model(
    input: claude::ModelInfo,
    _: &TransformContext,
) -> Result<gemini::Model, TransformError> {
    let id = wire_string(&input.id, "id")?;

    Ok(crate::protocol::wire!(gemini::Model {
        name: Some(id.clone()),
        base_model_id: Some(id),
        version: None,
        display_name: Some(input.display_name),
        description: None,
        input_token_limit: input.max_input_tokens.map(u64_to_i32_default),
        output_token_limit: input.max_tokens.map(u64_to_i32_default),
        supported_generation_methods: Vec::new(),
        supported_actions: Vec::new(),
        thinking: None,
        temperature: None,
        max_temperature: None,
        top_p: None,
        top_k: None,
        extra: Default::default(),
    }))
}