gproxy-protocol 2.4.2

GPROXY protocol types and endpoint metadata
Documentation
use std::collections::BTreeMap;

use serde::{Deserialize, Serialize};
use serde_json::Value;

pub mod blocks;
pub mod cache;
pub mod container;
pub mod context_management;
pub mod diagnostics;
pub mod errors;
pub mod fallback;
pub mod mcp;
pub mod output;
pub mod server_tools;
pub mod stop;
pub mod thinking;
pub mod tools;
pub mod types;
pub mod usage;

pub use blocks::*;
pub use cache::*;
pub use container::*;
pub use context_management::*;
pub use diagnostics::*;
pub use errors::*;
pub use fallback::*;
pub use mcp::*;
pub use output::*;
pub use server_tools::*;
pub use stop::*;
pub use thinking::*;
pub use tools::*;
pub use types::*;
pub use usage::*;

pub type JsonObject = BTreeMap<String, Value>;

#[derive(
    Debug,
    Clone,
    PartialEq,
    Eq,
    Serialize,
    Deserialize,
    Default,
    gproxy_protocol_macros::WireBuilder,
)]
#[non_exhaustive]
pub struct AnthropicBetaHeaders {
    #[serde(
        rename = "anthropic-beta",
        default,
        skip_serializing_if = "Option::is_none"
    )]
    pub anthropic_beta: Option<Vec<AnthropicBeta>>,
    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
    pub extra: BTreeMap<String, String>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
#[non_exhaustive]
pub enum StringOrArray<T> {
    String(String),
    Array(Vec<T>),
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
#[non_exhaustive]
pub enum BoolOrStringArray {
    Bool(bool),
    Array(Vec<String>),
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct TypedObject {
    #[serde(rename = "type")]
    pub type_: String,
    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct Citation {
    #[serde(rename = "type")]
    pub type_: CitationType,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub cited_text: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub document_index: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub document_title: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub file_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub start_char_index: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub end_char_index: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub start_page_number: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub end_page_number: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub start_block_index: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub end_block_index: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub search_result_index: Option<u64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub encrypted_index: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub source: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub title: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub url: Option<String>,
    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct CitationConfig {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub enabled: Option<bool>,
    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct Metadata {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub user_id: Option<String>,
    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct JsonSchemaFormat {
    #[serde(rename = "type")]
    pub type_: JsonSchemaFormatType,
    pub schema: JsonObject,
    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
    pub extra: JsonObject,
}