// @generated
// This file is @generated by prost-build.
/// MCPApp describes application-level metadata for an MCP server.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpApp {
    /// The display name of the MCP application.
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
    /// The version of the MCP application (e.g. "1.0.0").
    #[prost(string, tag="2")]
    pub version: ::prost::alloc::string::String,
    /// A human-readable description of the MCP application.
    #[prost(string, tag="3")]
    pub description: ::prost::alloc::string::String,
}
/// MCPServiceOptions configures MCP behaviour for an entire gRPC service.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpServiceOptions {
    /// App-level metadata surfaced to MCP clients.
    #[prost(message, optional, tag="1")]
    pub app: ::core::option::Option<McpApp>,
}
/// MCPPrompt defines a reusable prompt template exposed at the service level.
///
/// The arguments are defined as a proper proto message referenced by schema.
/// Field types, descriptions, required-ness, and enum values are all
/// derived from the referenced message's proto definition.
///
/// Example:
///    prompts: [
///      {
///        name: "summarize_todos"
///        description: "Summarize all pending todo items for a user"
///        schema: "todo.v1.SummarizeTodosArgs"
///      }
///    ]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpPrompt {
    /// Unique prompt name (e.g. "summarize_todos").
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
    /// Human-readable description of what this prompt does.
    #[prost(string, tag="2")]
    pub description: ::prost::alloc::string::String,
    /// Fully-qualified proto message name whose fields define the prompt arguments.
    #[prost(string, tag="3")]
    pub schema: ::prost::alloc::string::String,
}
/// MCPToolOptions configures an individual RPC method as an MCP tool.
/// Used as: option (mcp.protobuf.tool) = { ... };
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpToolOptions {
    /// Override the auto-generated MCP tool name.
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
    /// Override the tool description (defaults to the RPC's leading comment).
    #[prost(string, tag="2")]
    pub description: ::prost::alloc::string::String,
    /// When true, this RPC supports MCP progress notifications. Clients may include
    /// progressToken in params._meta; the server will send progress updates during
    /// execution. Requires a server-streaming RPC whose response has a oneof with
    /// mcp.protobuf.MCPProgress and the result type.
    #[prost(bool, optional, tag="3")]
    pub progress: ::core::option::Option<bool>,
}
/// MCPElicitation defines a confirmation dialog shown to the user before
/// a tool executes. Used as: option (mcp.protobuf.elicitation) = { ... };
///
/// The form schema is a fully-qualified proto message name. The generator
/// reads that message's fields, types, enums, comments, and field_behavior
/// annotations to build a type-safe elicitation form.
///
/// Example:
///    option (mcp.protobuf.elicitation) = {
///      message: "Please confirm before deleting."
///      schema: "todo.v1.DeleteConfirmation"
///    };
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpElicitation {
    /// Message shown to the user (e.g. "Are you sure you want to delete this?").
    #[prost(string, tag="1")]
    pub message: ::prost::alloc::string::String,
    /// Fully-qualified proto message name whose fields define the form schema.
    /// Field types, descriptions, required-ness, and enum values are all
    /// derived from the referenced message's proto definition.
    #[prost(string, tag="2")]
    pub schema: ::prost::alloc::string::String,
}
/// MCPFieldOptions attaches JSON Schema metadata to a message field.
/// Used as: option (mcp.protobuf.field) = { description: "...", examples: \[...\], ... };
/// These appear in the MCP tool inputSchema for that field.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpFieldOptions {
    /// Human-readable description of the field (e.g. for JSON Schema).
    #[prost(string, tag="1")]
    pub description: ::prost::alloc::string::String,
    /// Example values to guide LLMs (JSON Schema "examples").
    #[prost(string, repeated, tag="2")]
    pub examples: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// If true, marks the field as deprecated in the schema.
    #[prost(bool, tag="3")]
    pub deprecated: bool,
    /// JSON Schema format override (e.g. "uri", "email", "uuid").
    /// When set, overrides auto-detected format (e.g. from buf.validate).
    #[prost(string, tag="4")]
    pub format: ::prost::alloc::string::String,
}
/// MCPEnumOptions attaches a description to an enum type.
/// Used as: option (mcp.protobuf.enum) = { description: "..." };
/// The description appears in the MCP tool inputSchema for enum fields.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpEnumOptions {
    /// Human-readable description of the enum (e.g. for JSON Schema).
    #[prost(string, tag="1")]
    pub description: ::prost::alloc::string::String,
}
/// MCPEnumValueOptions attaches a description to an enum value.
/// Used as: ENUM_VALUE = 0 \[(mcp.protobuf.enum_value) = { description: "..." }\];
/// Value descriptions are combined into the schema description for the enum field.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpEnumValueOptions {
    /// Human-readable description of this enum value.
    #[prost(string, tag="1")]
    pub description: ::prost::alloc::string::String,
}
/// MCPFieldType enumerates JSON Schema primitive types used by elicitation fields.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum McpFieldType {
    /// Default value; treated as string.
    Unspecified = 0,
    /// JSON Schema "string" type.
    String = 1,
    /// JSON Schema "number" type (floating-point).
    Number = 2,
    /// JSON Schema "boolean" type.
    Boolean = 3,
    /// JSON Schema "integer" type.
    Integer = 4,
}
impl McpFieldType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "MCP_FIELD_TYPE_UNSPECIFIED",
            Self::String => "MCP_FIELD_TYPE_STRING",
            Self::Number => "MCP_FIELD_TYPE_NUMBER",
            Self::Boolean => "MCP_FIELD_TYPE_BOOLEAN",
            Self::Integer => "MCP_FIELD_TYPE_INTEGER",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "MCP_FIELD_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "MCP_FIELD_TYPE_STRING" => Some(Self::String),
            "MCP_FIELD_TYPE_NUMBER" => Some(Self::Number),
            "MCP_FIELD_TYPE_BOOLEAN" => Some(Self::Boolean),
            "MCP_FIELD_TYPE_INTEGER" => Some(Self::Integer),
            _ => None,
        }
    }
}
/// MCPMimeType enumerates common MIME types for MCP resources.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum McpMimeType {
    /// Default; treated as application/json.
    Unspecified = 0,
    /// application/json
    ApplicationJson = 1,
    /// text/plain
    TextPlain = 2,
    /// text/html
    TextHtml = 3,
    /// text/markdown
    TextMarkdown = 4,
    /// application/xml
    ApplicationXml = 5,
    /// application/octet-stream
    ApplicationOctetStream = 6,
    /// application/pdf
    ApplicationPdf = 7,
    /// image/png
    ImagePng = 8,
    /// image/jpeg
    ImageJpeg = 9,
}
impl McpMimeType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "MCP_MIME_TYPE_UNSPECIFIED",
            Self::ApplicationJson => "MCP_MIME_TYPE_APPLICATION_JSON",
            Self::TextPlain => "MCP_MIME_TYPE_TEXT_PLAIN",
            Self::TextHtml => "MCP_MIME_TYPE_TEXT_HTML",
            Self::TextMarkdown => "MCP_MIME_TYPE_TEXT_MARKDOWN",
            Self::ApplicationXml => "MCP_MIME_TYPE_APPLICATION_XML",
            Self::ApplicationOctetStream => "MCP_MIME_TYPE_APPLICATION_OCTET_STREAM",
            Self::ApplicationPdf => "MCP_MIME_TYPE_APPLICATION_PDF",
            Self::ImagePng => "MCP_MIME_TYPE_IMAGE_PNG",
            Self::ImageJpeg => "MCP_MIME_TYPE_IMAGE_JPEG",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "MCP_MIME_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "MCP_MIME_TYPE_APPLICATION_JSON" => Some(Self::ApplicationJson),
            "MCP_MIME_TYPE_TEXT_PLAIN" => Some(Self::TextPlain),
            "MCP_MIME_TYPE_TEXT_HTML" => Some(Self::TextHtml),
            "MCP_MIME_TYPE_TEXT_MARKDOWN" => Some(Self::TextMarkdown),
            "MCP_MIME_TYPE_APPLICATION_XML" => Some(Self::ApplicationXml),
            "MCP_MIME_TYPE_APPLICATION_OCTET_STREAM" => Some(Self::ApplicationOctetStream),
            "MCP_MIME_TYPE_APPLICATION_PDF" => Some(Self::ApplicationPdf),
            "MCP_MIME_TYPE_IMAGE_PNG" => Some(Self::ImagePng),
            "MCP_MIME_TYPE_IMAGE_JPEG" => Some(Self::ImageJpeg),
            _ => None,
        }
    }
}
/// MCPProgress is sent in server-streaming RPC chunks to report progress to MCP clients.
/// Use in a oneof with your result type:
///
/// 	message CreateTodoStreamChunk {
/// 	  oneof payload {
/// 	    mcp.protobuf.MCPProgress progress = 1;
/// 	    Todo result = 2;
/// 	  }
/// 	}
/// 	rpc CreateTodo(CreateTodoRequest) returns (stream CreateTodoStreamChunk) {
/// 	  option (mcp.protobuf.tool) = { progress: true };
/// 	}
///
/// How to send _meta (MCP client):
///
/// When calling a tool, include progressToken in params._meta. The progressToken
/// can be a string or integer; it correlates progress notifications with the request.
///
/// 	{
/// 	  "method": "tools/call",
/// 	  "params": {
/// 	    "name": "counter_service-count_v1",
/// 	    "arguments": { "to": 5 },
/// 	    "_meta": { "progressToken": "abc123" }
/// 	  }
/// 	}
///
/// The gateway forwards progressToken via gRPC metadata (key: mcp-progress-token).
/// gRPC servers can check metadata to only send MCPProgress chunks when requested.
///
/// The plugin auto-generates MCP tool handlers that send progress notifications
/// and return the final result.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct McpProgress {
    /// Progress value so far (must increase with each chunk).
    #[prost(double, tag="1")]
    pub progress: f64,
    /// Optional total; omit if unknown.
    #[prost(double, optional, tag="2")]
    pub total: ::core::option::Option<f64>,
    /// Human-readable status message.
    #[prost(string, tag="3")]
    pub message: ::prost::alloc::string::String,
}
/// MCPResource describes a data source exposed by an MCP server.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct McpResource {
    /// Static URI for a fixed resource (mutually exclusive with pattern).
    #[prost(string, tag="1")]
    pub uri: ::prost::alloc::string::String,
    /// URI template for parameterised resources (e.g. "todo://users/{user}/todos").
    #[prost(string, tag="2")]
    pub pattern: ::prost::alloc::string::String,
    /// Human-readable display name.
    #[prost(string, tag="3")]
    pub name: ::prost::alloc::string::String,
    /// Description of what this resource provides.
    #[prost(string, tag="4")]
    pub description: ::prost::alloc::string::String,
    /// The MIME type of the resource content.
    #[prost(enumeration="McpMimeType", tag="5")]
    pub mime_type: i32,
}
// @@protoc_insertion_point(module)
