gproxy-protocol 3.0.0-alpha.0

GPROXY v3 protocol model: operation taxonomy, wire kinds, and the OperationSpec registry
Documentation
use serde::{Deserialize, Serialize};

use crate::openai::common::Rest;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub enum ResponseAllowedTool {
    #[serde(rename = "function")]
    Function {
        name: String,
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "custom")]
    Custom {
        name: String,
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "mcp")]
    Mcp {
        server_label: String,
        #[serde(skip_serializing_if = "Option::is_none")]
        name: Option<String>,
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "file_search")]
    FileSearch {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "web_search_preview")]
    WebSearchPreview {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "computer")]
    Computer {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "computer_use_preview")]
    ComputerUsePreview {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "computer_use")]
    ComputerUse {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "web_search_preview_2025_03_11")]
    WebSearchPreview20250311 {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "image_generation")]
    ImageGeneration {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "code_interpreter")]
    CodeInterpreter {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "local_shell")]
    LocalShell {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "shell")]
    Shell {
        #[serde(default, flatten)]
        rest: Rest,
    },
    #[serde(rename = "apply_patch")]
    ApplyPatch {
        #[serde(default, flatten)]
        rest: Rest,
    },
}