gproxy-transform 3.0.0-alpha.0

GPROXY v3 pairwise protocol transforms
Documentation

gproxy-transform

crates.io docs.rs

Pure, synchronous pairwise protocol transforms for OpenAI, Anthropic Claude, and Google Gemini. The crate contains no HTTP client, runtime, routing policy, or server framework.

Typed pairs

Call typed pairs directly when protocol models are already available:

use gproxy_transform::protocol::openai;
use gproxy_transform::typed::{RequestContext, generate_content};

fn convert(
    request: openai::ChatCompletionRequest,
) -> Result<gproxy_transform::protocol::claude::CreateMessageRequestBody,
            gproxy_transform::TransformError> {
    generate_content::openai_chat_to_claude_messages::request(
        request,
        RequestContext::new("claude-sonnet-4-6", false),
    )
}

Every content pair also exposes a stateful typed stream converter under typed::stream. One source event may produce zero or many target events.

Bytes and framing

request, response, ResponseStream, and ResponseCollector are the dynamic Bytes facade used by GPROXY. They parse once, call the same typed core, and serialize once. synthesize_response turns a complete response into a strict SSE, Gemini JSON-array, or Responses WebSocket stream.

Transforms are direct pairs with no intermediate representation. Same-wire traffic bypasses semantic conversion. Unknown source extensions never leak into another provider's wire shape.

License

Licensed under the MIT License.