// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v7.35.1
// source: envoy/extensions/filters/http/mcp/v3/mcp.proto

package mcpv3

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	_ "github.com/cncf/xds/go/xds/annotations/v3"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Traffic handling mode for non-MCP traffic.
type Mcp_TrafficMode int32

const (
	// Proxies the HTTP request and response without MCP spec check.
	// This is the default mode.
	Mcp_PASS_THROUGH Mcp_TrafficMode = 0
	// Reject requests that are not following MCP spec.
	// Valid MCP requests are:
	// - POST requests with JSON-RPC 2.0 messages
	// - GET requests for SSE streams (with Accept: text/event-stream)
	// - DELETE requests for session termination (with MCP-Session-Id header)
	Mcp_REJECT_NO_MCP Mcp_TrafficMode = 1
)

// Enum value maps for Mcp_TrafficMode.
var (
	Mcp_TrafficMode_name = map[int32]string{
		0: "PASS_THROUGH",
		1: "REJECT_NO_MCP",
	}
	Mcp_TrafficMode_value = map[string]int32{
		"PASS_THROUGH":  0,
		"REJECT_NO_MCP": 1,
	}
)

func (x Mcp_TrafficMode) Enum() *Mcp_TrafficMode {
	p := new(Mcp_TrafficMode)
	*p = x
	return p
}

func (x Mcp_TrafficMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Mcp_TrafficMode) Descriptor() protoreflect.EnumDescriptor {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_enumTypes[0].Descriptor()
}

func (Mcp_TrafficMode) Type() protoreflect.EnumType {
	return &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_enumTypes[0]
}

func (x Mcp_TrafficMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Mcp_TrafficMode.Descriptor instead.
func (Mcp_TrafficMode) EnumDescriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{0, 0}
}

// Where to store parsed MCP request attributes.
type Mcp_RequestStorageMode int32

const (
	// Unspecified. Uses default behavior (same as DYNAMIC_METADATA).
	Mcp_MODE_UNSPECIFIED Mcp_RequestStorageMode = 0
	// Store request attributes in dynamic metadata only.
	// This is the default behavior.
	Mcp_DYNAMIC_METADATA Mcp_RequestStorageMode = 1
	// Store request attributes in filter state only.
	Mcp_FILTER_STATE Mcp_RequestStorageMode = 2
	// Store request attributes in both dynamic metadata and filter state.
	Mcp_DYNAMIC_METADATA_AND_FILTER_STATE Mcp_RequestStorageMode = 3
)

// Enum value maps for Mcp_RequestStorageMode.
var (
	Mcp_RequestStorageMode_name = map[int32]string{
		0: "MODE_UNSPECIFIED",
		1: "DYNAMIC_METADATA",
		2: "FILTER_STATE",
		3: "DYNAMIC_METADATA_AND_FILTER_STATE",
	}
	Mcp_RequestStorageMode_value = map[string]int32{
		"MODE_UNSPECIFIED":                  0,
		"DYNAMIC_METADATA":                  1,
		"FILTER_STATE":                      2,
		"DYNAMIC_METADATA_AND_FILTER_STATE": 3,
	}
)

func (x Mcp_RequestStorageMode) Enum() *Mcp_RequestStorageMode {
	p := new(Mcp_RequestStorageMode)
	*p = x
	return p
}

func (x Mcp_RequestStorageMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Mcp_RequestStorageMode) Descriptor() protoreflect.EnumDescriptor {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_enumTypes[1].Descriptor()
}

func (Mcp_RequestStorageMode) Type() protoreflect.EnumType {
	return &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_enumTypes[1]
}

func (x Mcp_RequestStorageMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Mcp_RequestStorageMode.Descriptor instead.
func (Mcp_RequestStorageMode) EnumDescriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{0, 1}
}

// This filter will inspect and get attributes from MCP traffic.
// [#next-free-field: 9]
type Mcp struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Configures how the filter handles non-MCP traffic.
	TrafficMode Mcp_TrafficMode `protobuf:"varint,1,opt,name=traffic_mode,json=trafficMode,proto3,enum=envoy.extensions.filters.http.mcp.v3.Mcp_TrafficMode" json:"traffic_mode,omitempty"`
	// When set to true, the filter will clear the route cache after setting dynamic metadata.
	// This allows the route to be re-selected based on the MCP metadata (e.g., method, params).
	// Defaults to false.
	ClearRouteCache bool `protobuf:"varint,2,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"`
	// Maximum size of the request body to buffer for JSON-RPC parsing.
	// Only the first “max_request_body_size“ bytes are parsed for MCP attribute extraction.
	//
	// When the body exceeds this limit:
	// - In “PASS_THROUGH“ mode: the request is allowed through with an “is_exceeding_limit“ marker in the dynamic metadata, indicating that the MCP payload was only partially parsed.
	// - In “REJECT_NO_MCP“ mode: the request is rejected with “400 Bad Request“ because the complete root JSON object must fit within the size limit.
	//
	// It defaults to 8KB (8192 bytes) and the maximum allowed value is 10MB (10485760 bytes).
	//
	// Setting it to 0 would disable the limit. It is not recommended to do so in production.
	MaxRequestBodySize *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=max_request_body_size,json=maxRequestBodySize,proto3" json:"max_request_body_size,omitempty"`
	// Parser configuration, this provide the attribute extraction override.
	ParserConfig *ParserConfig `protobuf:"bytes,4,opt,name=parser_config,json=parserConfig,proto3" json:"parser_config,omitempty"`
	// Where to store parsed MCP request attributes.
	// Controls whether attributes are written to dynamic metadata, filter state, or both.
	// Default is DYNAMIC_METADATA when unspecified.
	RequestStorageMode Mcp_RequestStorageMode `protobuf:"varint,5,opt,name=request_storage_mode,json=requestStorageMode,proto3,enum=envoy.extensions.filters.http.mcp.v3.Mcp_RequestStorageMode" json:"request_storage_mode,omitempty"`
	// If set, extract and validate W3C trace context from the MCP request body
	// (params._meta.traceparent & params._meta.tracestate) and propagate it in HTTP headers
	// “traceparent“ and “tracestate“ (respectively).
	//
	// The traceparent and tracestate fields are validated and propagated according to the spec at
	// “https://www.w3.org/TR/trace-context/“.
	//
	// If unset (default), do not extract or inject trace context.
	PropagateTraceContext *Mcp_TraceContextPropagationConfig `protobuf:"bytes,6,opt,name=propagate_trace_context,json=propagateTraceContext,proto3" json:"propagate_trace_context,omitempty"`
	// Note that this is independent of “propagate_trace_context“.
	// Also note that if this is set, the downstream request's baggage header will be overwritten if
	// the MCP request body contains a valid baggage field.
	//
	// If unset (default), do not extract or inject baggage.
	PropagateBaggage *Mcp_BaggagePropagationConfig `protobuf:"bytes,7,opt,name=propagate_baggage,json=propagateBaggage,proto3" json:"propagate_baggage,omitempty"`
	// When true, reject requests that contain duplicate JSON keys at any
	// nesting level. RFC 8259 Section 4 states that names within an object SHOULD be
	// unique. Defaults to false (last-key-wins / last-win).
	RejectDuplicateKeys *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=reject_duplicate_keys,json=rejectDuplicateKeys,proto3" json:"reject_duplicate_keys,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *Mcp) Reset() {
	*x = Mcp{}
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Mcp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Mcp) ProtoMessage() {}

func (x *Mcp) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Mcp.ProtoReflect.Descriptor instead.
func (*Mcp) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{0}
}

func (x *Mcp) GetTrafficMode() Mcp_TrafficMode {
	if x != nil {
		return x.TrafficMode
	}
	return Mcp_PASS_THROUGH
}

func (x *Mcp) GetClearRouteCache() bool {
	if x != nil {
		return x.ClearRouteCache
	}
	return false
}

func (x *Mcp) GetMaxRequestBodySize() *wrapperspb.UInt32Value {
	if x != nil {
		return x.MaxRequestBodySize
	}
	return nil
}

func (x *Mcp) GetParserConfig() *ParserConfig {
	if x != nil {
		return x.ParserConfig
	}
	return nil
}

func (x *Mcp) GetRequestStorageMode() Mcp_RequestStorageMode {
	if x != nil {
		return x.RequestStorageMode
	}
	return Mcp_MODE_UNSPECIFIED
}

func (x *Mcp) GetPropagateTraceContext() *Mcp_TraceContextPropagationConfig {
	if x != nil {
		return x.PropagateTraceContext
	}
	return nil
}

func (x *Mcp) GetPropagateBaggage() *Mcp_BaggagePropagationConfig {
	if x != nil {
		return x.PropagateBaggage
	}
	return nil
}

func (x *Mcp) GetRejectDuplicateKeys() *wrapperspb.BoolValue {
	if x != nil {
		return x.RejectDuplicateKeys
	}
	return nil
}

// Parser configuration with method-specific rules.
// This configuration allows overriding the default attribute extraction behavior for specific MCP methods.
type ParserConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// List of rules for classification and extraction.
	// Rules are evaluated in order; the first match wins.
	// If no rule matches, extraction defaults are used and group falls back to built-in classification.
	// Built-in groups: lifecycle, tool, resource, prompt, notification, logging, sampling, completion, unknown.
	Methods []*ParserConfig_MethodConfig `protobuf:"bytes,1,rep,name=methods,proto3" json:"methods,omitempty"`
	// The dynamic metadata key where the group name will be stored.
	// If empty, group classification is disabled.
	GroupMetadataKey string `protobuf:"bytes,2,opt,name=group_metadata_key,json=groupMetadataKey,proto3" json:"group_metadata_key,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *ParserConfig) Reset() {
	*x = ParserConfig{}
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ParserConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParserConfig) ProtoMessage() {}

func (x *ParserConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParserConfig.ProtoReflect.Descriptor instead.
func (*ParserConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{1}
}

func (x *ParserConfig) GetMethods() []*ParserConfig_MethodConfig {
	if x != nil {
		return x.Methods
	}
	return nil
}

func (x *ParserConfig) GetGroupMetadataKey() string {
	if x != nil {
		return x.GroupMetadataKey
	}
	return ""
}

// Per-route override configuration for MCP filter
type McpOverride struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Optional per-route traffic mode override
	TrafficMode Mcp_TrafficMode `protobuf:"varint,1,opt,name=traffic_mode,json=trafficMode,proto3,enum=envoy.extensions.filters.http.mcp.v3.Mcp_TrafficMode" json:"traffic_mode,omitempty"`
	// Optional per-route max request body size override.
	// When set, this overrides the global max_request_body_size for this route.
	// It defaults to 8KB (8192 bytes) and the maximum allowed value is 10MB (10485760 bytes).
	MaxRequestBodySize *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=max_request_body_size,json=maxRequestBodySize,proto3" json:"max_request_body_size,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *McpOverride) Reset() {
	*x = McpOverride{}
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *McpOverride) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*McpOverride) ProtoMessage() {}

func (x *McpOverride) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use McpOverride.ProtoReflect.Descriptor instead.
func (*McpOverride) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{2}
}

func (x *McpOverride) GetTrafficMode() Mcp_TrafficMode {
	if x != nil {
		return x.TrafficMode
	}
	return Mcp_PASS_THROUGH
}

func (x *McpOverride) GetMaxRequestBodySize() *wrapperspb.UInt32Value {
	if x != nil {
		return x.MaxRequestBodySize
	}
	return nil
}

type Mcp_TraceContextPropagationConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Mcp_TraceContextPropagationConfig) Reset() {
	*x = Mcp_TraceContextPropagationConfig{}
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Mcp_TraceContextPropagationConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Mcp_TraceContextPropagationConfig) ProtoMessage() {}

func (x *Mcp_TraceContextPropagationConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Mcp_TraceContextPropagationConfig.ProtoReflect.Descriptor instead.
func (*Mcp_TraceContextPropagationConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{0, 0}
}

type Mcp_BaggagePropagationConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Mcp_BaggagePropagationConfig) Reset() {
	*x = Mcp_BaggagePropagationConfig{}
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Mcp_BaggagePropagationConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Mcp_BaggagePropagationConfig) ProtoMessage() {}

func (x *Mcp_BaggagePropagationConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Mcp_BaggagePropagationConfig.ProtoReflect.Descriptor instead.
func (*Mcp_BaggagePropagationConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{0, 1}
}

// A single attribute extraction rule.
type ParserConfig_AttributeExtractionRule struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// JSON path to extract (e.g., "params.name", "params.uri").
	// The path is a dot-separated string representing the location of the field in the JSON payload.
	// For example, "params.name" extracts the "name" field from the "params" object.
	Path          string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ParserConfig_AttributeExtractionRule) Reset() {
	*x = ParserConfig_AttributeExtractionRule{}
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ParserConfig_AttributeExtractionRule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParserConfig_AttributeExtractionRule) ProtoMessage() {}

func (x *ParserConfig_AttributeExtractionRule) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParserConfig_AttributeExtractionRule.ProtoReflect.Descriptor instead.
func (*ParserConfig_AttributeExtractionRule) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{1, 0}
}

func (x *ParserConfig_AttributeExtractionRule) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

// Configuration for a specific MCP method.
type ParserConfig_MethodConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Method name (e.g., "tools/call", "resources/read", "initialize").
	// This matches the "method" field in the JSON-RPC request.
	Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
	// The group/category name to assign to this method (e.g., "tool", "lifecycle").
	// This will be emitted to dynamic metadata under the key specified by group_metadata_key.
	// If empty, the built-in group classification is used.
	Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
	// Attributes to extract for this method.
	// If empty, only default attributes (jsonrpc, method) are extracted.
	ExtractionRules []*ParserConfig_AttributeExtractionRule `protobuf:"bytes,3,rep,name=extraction_rules,json=extractionRules,proto3" json:"extraction_rules,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *ParserConfig_MethodConfig) Reset() {
	*x = ParserConfig_MethodConfig{}
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ParserConfig_MethodConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParserConfig_MethodConfig) ProtoMessage() {}

func (x *ParserConfig_MethodConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParserConfig_MethodConfig.ProtoReflect.Descriptor instead.
func (*ParserConfig_MethodConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP(), []int{1, 1}
}

func (x *ParserConfig_MethodConfig) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *ParserConfig_MethodConfig) GetGroup() string {
	if x != nil {
		return x.Group
	}
	return ""
}

func (x *ParserConfig_MethodConfig) GetExtractionRules() []*ParserConfig_AttributeExtractionRule {
	if x != nil {
		return x.ExtractionRules
	}
	return nil
}

var File_envoy_extensions_filters_http_mcp_v3_mcp_proto protoreflect.FileDescriptor

const file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDesc = "" +
	"\n" +
	".envoy/extensions/filters/http/mcp/v3/mcp.proto\x12$envoy.extensions.filters.http.mcp.v3\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fxds/annotations/v3/status.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\x87\b\n" +
	"\x03Mcp\x12b\n" +
	"\ftraffic_mode\x18\x01 \x01(\x0e25.envoy.extensions.filters.http.mcp.v3.Mcp.TrafficModeB\b\xfaB\x05\x82\x01\x02\x10\x01R\vtrafficMode\x12*\n" +
	"\x11clear_route_cache\x18\x02 \x01(\bR\x0fclearRouteCache\x12[\n" +
	"\x15max_request_body_size\x18\x03 \x01(\v2\x1c.google.protobuf.UInt32ValueB\n" +
	"\xfaB\a*\x05\x18\x80\x80\x80\x05R\x12maxRequestBodySize\x12W\n" +
	"\rparser_config\x18\x04 \x01(\v22.envoy.extensions.filters.http.mcp.v3.ParserConfigR\fparserConfig\x12x\n" +
	"\x14request_storage_mode\x18\x05 \x01(\x0e2<.envoy.extensions.filters.http.mcp.v3.Mcp.RequestStorageModeB\b\xfaB\x05\x82\x01\x02\x10\x01R\x12requestStorageMode\x12\x7f\n" +
	"\x17propagate_trace_context\x18\x06 \x01(\v2G.envoy.extensions.filters.http.mcp.v3.Mcp.TraceContextPropagationConfigR\x15propagateTraceContext\x12o\n" +
	"\x11propagate_baggage\x18\a \x01(\v2B.envoy.extensions.filters.http.mcp.v3.Mcp.BaggagePropagationConfigR\x10propagateBaggage\x12N\n" +
	"\x15reject_duplicate_keys\x18\b \x01(\v2\x1a.google.protobuf.BoolValueR\x13rejectDuplicateKeys\x1a)\n" +
	"\x1dTraceContextPropagationConfig:\b\xd2Ƥ\xe1\x06\x02\b\x01\x1a$\n" +
	"\x18BaggagePropagationConfig:\b\xd2Ƥ\xe1\x06\x02\b\x01\"2\n" +
	"\vTrafficMode\x12\x10\n" +
	"\fPASS_THROUGH\x10\x00\x12\x11\n" +
	"\rREJECT_NO_MCP\x10\x01\"y\n" +
	"\x12RequestStorageMode\x12\x14\n" +
	"\x10MODE_UNSPECIFIED\x10\x00\x12\x14\n" +
	"\x10DYNAMIC_METADATA\x10\x01\x12\x10\n" +
	"\fFILTER_STATE\x10\x02\x12%\n" +
	"!DYNAMIC_METADATA_AND_FILTER_STATE\x10\x03\"\x8e\x03\n" +
	"\fParserConfig\x12Y\n" +
	"\amethods\x18\x01 \x03(\v2?.envoy.extensions.filters.http.mcp.v3.ParserConfig.MethodConfigR\amethods\x12,\n" +
	"\x12group_metadata_key\x18\x02 \x01(\tR\x10groupMetadataKey\x1a6\n" +
	"\x17AttributeExtractionRule\x12\x1b\n" +
	"\x04path\x18\x01 \x01(\tB\a\xfaB\x04r\x02\x10\x01R\x04path\x1a\xbc\x01\n" +
	"\fMethodConfig\x12\x1f\n" +
	"\x06method\x18\x01 \x01(\tB\a\xfaB\x04r\x02\x10\x01R\x06method\x12\x14\n" +
	"\x05group\x18\x02 \x01(\tR\x05group\x12u\n" +
	"\x10extraction_rules\x18\x03 \x03(\v2J.envoy.extensions.filters.http.mcp.v3.ParserConfig.AttributeExtractionRuleR\x0fextractionRules\"\xce\x01\n" +
	"\vMcpOverride\x12b\n" +
	"\ftraffic_mode\x18\x01 \x01(\x0e25.envoy.extensions.filters.http.mcp.v3.Mcp.TrafficModeB\b\xfaB\x05\x82\x01\x02\x10\x01R\vtrafficMode\x12[\n" +
	"\x15max_request_body_size\x18\x02 \x01(\v2\x1c.google.protobuf.UInt32ValueB\n" +
	"\xfaB\a*\x05\x18\x80\x80\x80\x05R\x12maxRequestBodySizeB\xa3\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\xd2Ƥ\xe1\x06\x02\b\x01\n" +
	"2io.envoyproxy.envoy.extensions.filters.http.mcp.v3B\bMcpProtoP\x01ZQgithub.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/mcp/v3;mcpv3b\x06proto3"

var (
	file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescOnce sync.Once
	file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescData []byte
)

func file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescGZIP() []byte {
	file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescOnce.Do(func() {
		file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDesc), len(file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDesc)))
	})
	return file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDescData
}

var file_envoy_extensions_filters_http_mcp_v3_mcp_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_envoy_extensions_filters_http_mcp_v3_mcp_proto_goTypes = []any{
	(Mcp_TrafficMode)(0),                         // 0: envoy.extensions.filters.http.mcp.v3.Mcp.TrafficMode
	(Mcp_RequestStorageMode)(0),                  // 1: envoy.extensions.filters.http.mcp.v3.Mcp.RequestStorageMode
	(*Mcp)(nil),                                  // 2: envoy.extensions.filters.http.mcp.v3.Mcp
	(*ParserConfig)(nil),                         // 3: envoy.extensions.filters.http.mcp.v3.ParserConfig
	(*McpOverride)(nil),                          // 4: envoy.extensions.filters.http.mcp.v3.McpOverride
	(*Mcp_TraceContextPropagationConfig)(nil),    // 5: envoy.extensions.filters.http.mcp.v3.Mcp.TraceContextPropagationConfig
	(*Mcp_BaggagePropagationConfig)(nil),         // 6: envoy.extensions.filters.http.mcp.v3.Mcp.BaggagePropagationConfig
	(*ParserConfig_AttributeExtractionRule)(nil), // 7: envoy.extensions.filters.http.mcp.v3.ParserConfig.AttributeExtractionRule
	(*ParserConfig_MethodConfig)(nil),            // 8: envoy.extensions.filters.http.mcp.v3.ParserConfig.MethodConfig
	(*wrapperspb.UInt32Value)(nil),               // 9: google.protobuf.UInt32Value
	(*wrapperspb.BoolValue)(nil),                 // 10: google.protobuf.BoolValue
}
var file_envoy_extensions_filters_http_mcp_v3_mcp_proto_depIdxs = []int32{
	0,  // 0: envoy.extensions.filters.http.mcp.v3.Mcp.traffic_mode:type_name -> envoy.extensions.filters.http.mcp.v3.Mcp.TrafficMode
	9,  // 1: envoy.extensions.filters.http.mcp.v3.Mcp.max_request_body_size:type_name -> google.protobuf.UInt32Value
	3,  // 2: envoy.extensions.filters.http.mcp.v3.Mcp.parser_config:type_name -> envoy.extensions.filters.http.mcp.v3.ParserConfig
	1,  // 3: envoy.extensions.filters.http.mcp.v3.Mcp.request_storage_mode:type_name -> envoy.extensions.filters.http.mcp.v3.Mcp.RequestStorageMode
	5,  // 4: envoy.extensions.filters.http.mcp.v3.Mcp.propagate_trace_context:type_name -> envoy.extensions.filters.http.mcp.v3.Mcp.TraceContextPropagationConfig
	6,  // 5: envoy.extensions.filters.http.mcp.v3.Mcp.propagate_baggage:type_name -> envoy.extensions.filters.http.mcp.v3.Mcp.BaggagePropagationConfig
	10, // 6: envoy.extensions.filters.http.mcp.v3.Mcp.reject_duplicate_keys:type_name -> google.protobuf.BoolValue
	8,  // 7: envoy.extensions.filters.http.mcp.v3.ParserConfig.methods:type_name -> envoy.extensions.filters.http.mcp.v3.ParserConfig.MethodConfig
	0,  // 8: envoy.extensions.filters.http.mcp.v3.McpOverride.traffic_mode:type_name -> envoy.extensions.filters.http.mcp.v3.Mcp.TrafficMode
	9,  // 9: envoy.extensions.filters.http.mcp.v3.McpOverride.max_request_body_size:type_name -> google.protobuf.UInt32Value
	7,  // 10: envoy.extensions.filters.http.mcp.v3.ParserConfig.MethodConfig.extraction_rules:type_name -> envoy.extensions.filters.http.mcp.v3.ParserConfig.AttributeExtractionRule
	11, // [11:11] is the sub-list for method output_type
	11, // [11:11] is the sub-list for method input_type
	11, // [11:11] is the sub-list for extension type_name
	11, // [11:11] is the sub-list for extension extendee
	0,  // [0:11] is the sub-list for field type_name
}

func init() { file_envoy_extensions_filters_http_mcp_v3_mcp_proto_init() }
func file_envoy_extensions_filters_http_mcp_v3_mcp_proto_init() {
	if File_envoy_extensions_filters_http_mcp_v3_mcp_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDesc), len(file_envoy_extensions_filters_http_mcp_v3_mcp_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   7,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_extensions_filters_http_mcp_v3_mcp_proto_goTypes,
		DependencyIndexes: file_envoy_extensions_filters_http_mcp_v3_mcp_proto_depIdxs,
		EnumInfos:         file_envoy_extensions_filters_http_mcp_v3_mcp_proto_enumTypes,
		MessageInfos:      file_envoy_extensions_filters_http_mcp_v3_mcp_proto_msgTypes,
	}.Build()
	File_envoy_extensions_filters_http_mcp_v3_mcp_proto = out.File
	file_envoy_extensions_filters_http_mcp_v3_mcp_proto_goTypes = nil
	file_envoy_extensions_filters_http_mcp_v3_mcp_proto_depIdxs = nil
}
