// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        (unknown)
// source: resource.proto

package api

import (
	duration "github.com/golang/protobuf/ptypes/duration"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	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)
)

type Protocol int32

const (
	Protocol_UNKNOWN Protocol = 0
	Protocol_HTTP    Protocol = 1
	Protocol_HTTPS   Protocol = 2
	Protocol_TLS     Protocol = 3
	Protocol_TCP     Protocol = 4
	Protocol_HBONE   Protocol = 5
)

// Enum value maps for Protocol.
var (
	Protocol_name = map[int32]string{
		0: "UNKNOWN",
		1: "HTTP",
		2: "HTTPS",
		3: "TLS",
		4: "TCP",
		5: "HBONE",
	}
	Protocol_value = map[string]int32{
		"UNKNOWN": 0,
		"HTTP":    1,
		"HTTPS":   2,
		"TLS":     3,
		"TCP":     4,
		"HBONE":   5,
	}
)

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

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

func (Protocol) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[0].Descriptor()
}

func (Protocol) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[0]
}

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

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

type PolicySpec_RemoteRateLimit_Type int32

const (
	PolicySpec_RemoteRateLimit_REQUESTS PolicySpec_RemoteRateLimit_Type = 0
	PolicySpec_RemoteRateLimit_TOKENS   PolicySpec_RemoteRateLimit_Type = 1
)

// Enum value maps for PolicySpec_RemoteRateLimit_Type.
var (
	PolicySpec_RemoteRateLimit_Type_name = map[int32]string{
		0: "REQUESTS",
		1: "TOKENS",
	}
	PolicySpec_RemoteRateLimit_Type_value = map[string]int32{
		"REQUESTS": 0,
		"TOKENS":   1,
	}
)

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

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

func (PolicySpec_RemoteRateLimit_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[1].Descriptor()
}

func (PolicySpec_RemoteRateLimit_Type) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[1]
}

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

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

type PolicySpec_LocalRateLimit_Type int32

const (
	PolicySpec_LocalRateLimit_REQUEST PolicySpec_LocalRateLimit_Type = 0
	PolicySpec_LocalRateLimit_TOKEN   PolicySpec_LocalRateLimit_Type = 1
)

// Enum value maps for PolicySpec_LocalRateLimit_Type.
var (
	PolicySpec_LocalRateLimit_Type_name = map[int32]string{
		0: "REQUEST",
		1: "TOKEN",
	}
	PolicySpec_LocalRateLimit_Type_value = map[string]int32{
		"REQUEST": 0,
		"TOKEN":   1,
	}
)

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

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

func (PolicySpec_LocalRateLimit_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[2].Descriptor()
}

func (PolicySpec_LocalRateLimit_Type) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[2]
}

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

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

type PolicySpec_Ai_BuiltinRegexRule int32

const (
	PolicySpec_Ai_BUILTIN_UNSPECIFIED PolicySpec_Ai_BuiltinRegexRule = 0
	PolicySpec_Ai_SSN                 PolicySpec_Ai_BuiltinRegexRule = 1
	PolicySpec_Ai_CREDIT_CARD         PolicySpec_Ai_BuiltinRegexRule = 2
	PolicySpec_Ai_PHONE_NUMBER        PolicySpec_Ai_BuiltinRegexRule = 3
	PolicySpec_Ai_EMAIL               PolicySpec_Ai_BuiltinRegexRule = 4
)

// Enum value maps for PolicySpec_Ai_BuiltinRegexRule.
var (
	PolicySpec_Ai_BuiltinRegexRule_name = map[int32]string{
		0: "BUILTIN_UNSPECIFIED",
		1: "SSN",
		2: "CREDIT_CARD",
		3: "PHONE_NUMBER",
		4: "EMAIL",
	}
	PolicySpec_Ai_BuiltinRegexRule_value = map[string]int32{
		"BUILTIN_UNSPECIFIED": 0,
		"SSN":                 1,
		"CREDIT_CARD":         2,
		"PHONE_NUMBER":        3,
		"EMAIL":               4,
	}
)

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

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

func (PolicySpec_Ai_BuiltinRegexRule) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[3].Descriptor()
}

func (PolicySpec_Ai_BuiltinRegexRule) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[3]
}

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

// Deprecated: Use PolicySpec_Ai_BuiltinRegexRule.Descriptor instead.
func (PolicySpec_Ai_BuiltinRegexRule) EnumDescriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 0}
}

type PolicySpec_Ai_ActionKind int32

const (
	PolicySpec_Ai_ACTION_UNSPECIFIED PolicySpec_Ai_ActionKind = 0
	PolicySpec_Ai_MASK               PolicySpec_Ai_ActionKind = 1
	PolicySpec_Ai_REJECT             PolicySpec_Ai_ActionKind = 2
)

// Enum value maps for PolicySpec_Ai_ActionKind.
var (
	PolicySpec_Ai_ActionKind_name = map[int32]string{
		0: "ACTION_UNSPECIFIED",
		1: "MASK",
		2: "REJECT",
	}
	PolicySpec_Ai_ActionKind_value = map[string]int32{
		"ACTION_UNSPECIFIED": 0,
		"MASK":               1,
		"REJECT":             2,
	}
)

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

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

func (PolicySpec_Ai_ActionKind) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[4].Descriptor()
}

func (PolicySpec_Ai_ActionKind) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[4]
}

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

// Deprecated: Use PolicySpec_Ai_ActionKind.Descriptor instead.
func (PolicySpec_Ai_ActionKind) EnumDescriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 1}
}

type PolicySpec_ExternalAuth_FailureMode int32

const (
	PolicySpec_ExternalAuth_DENY             PolicySpec_ExternalAuth_FailureMode = 0
	PolicySpec_ExternalAuth_ALLOW            PolicySpec_ExternalAuth_FailureMode = 1
	PolicySpec_ExternalAuth_DENY_WITH_STATUS PolicySpec_ExternalAuth_FailureMode = 2
)

// Enum value maps for PolicySpec_ExternalAuth_FailureMode.
var (
	PolicySpec_ExternalAuth_FailureMode_name = map[int32]string{
		0: "DENY",
		1: "ALLOW",
		2: "DENY_WITH_STATUS",
	}
	PolicySpec_ExternalAuth_FailureMode_value = map[string]int32{
		"DENY":             0,
		"ALLOW":            1,
		"DENY_WITH_STATUS": 2,
	}
)

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

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

func (PolicySpec_ExternalAuth_FailureMode) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[5].Descriptor()
}

func (PolicySpec_ExternalAuth_FailureMode) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[5]
}

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

// Deprecated: Use PolicySpec_ExternalAuth_FailureMode.Descriptor instead.
func (PolicySpec_ExternalAuth_FailureMode) EnumDescriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 3, 0}
}

type PolicySpec_InferenceRouting_FailureMode int32

const (
	PolicySpec_InferenceRouting_UNKNOWN     PolicySpec_InferenceRouting_FailureMode = 0
	PolicySpec_InferenceRouting_FAIL_CLOSED PolicySpec_InferenceRouting_FailureMode = 1
	PolicySpec_InferenceRouting_FAIL_OPEN   PolicySpec_InferenceRouting_FailureMode = 2
)

// Enum value maps for PolicySpec_InferenceRouting_FailureMode.
var (
	PolicySpec_InferenceRouting_FailureMode_name = map[int32]string{
		0: "UNKNOWN",
		1: "FAIL_CLOSED",
		2: "FAIL_OPEN",
	}
	PolicySpec_InferenceRouting_FailureMode_value = map[string]int32{
		"UNKNOWN":     0,
		"FAIL_CLOSED": 1,
		"FAIL_OPEN":   2,
	}
)

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

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

func (PolicySpec_InferenceRouting_FailureMode) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[6].Descriptor()
}

func (PolicySpec_InferenceRouting_FailureMode) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[6]
}

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

// Deprecated: Use PolicySpec_InferenceRouting_FailureMode.Descriptor instead.
func (PolicySpec_InferenceRouting_FailureMode) EnumDescriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 5, 0}
}

// Validation mode for JWT authentication
type PolicySpec_JWT_Mode int32

const (
	// Default mode - if a token exists, validate it
	PolicySpec_JWT_OPTIONAL PolicySpec_JWT_Mode = 0
	// A valid token must be present
	PolicySpec_JWT_STRICT PolicySpec_JWT_Mode = 1
	// Requests are never rejected (useful for claims in later steps)
	PolicySpec_JWT_PERMISSIVE PolicySpec_JWT_Mode = 2
)

// Enum value maps for PolicySpec_JWT_Mode.
var (
	PolicySpec_JWT_Mode_name = map[int32]string{
		0: "OPTIONAL",
		1: "STRICT",
		2: "PERMISSIVE",
	}
	PolicySpec_JWT_Mode_value = map[string]int32{
		"OPTIONAL":   0,
		"STRICT":     1,
		"PERMISSIVE": 2,
	}
)

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

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

func (PolicySpec_JWT_Mode) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[7].Descriptor()
}

func (PolicySpec_JWT_Mode) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[7]
}

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

// Deprecated: Use PolicySpec_JWT_Mode.Descriptor instead.
func (PolicySpec_JWT_Mode) EnumDescriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 8, 0}
}

type MCPBackend_StatefulMode int32

const (
	MCPBackend_STATEFUL  MCPBackend_StatefulMode = 0
	MCPBackend_STATELESS MCPBackend_StatefulMode = 1
)

// Enum value maps for MCPBackend_StatefulMode.
var (
	MCPBackend_StatefulMode_name = map[int32]string{
		0: "STATEFUL",
		1: "STATELESS",
	}
	MCPBackend_StatefulMode_value = map[string]int32{
		"STATEFUL":  0,
		"STATELESS": 1,
	}
)

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

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

func (MCPBackend_StatefulMode) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[8].Descriptor()
}

func (MCPBackend_StatefulMode) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[8]
}

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

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

type MCPTarget_Protocol int32

const (
	MCPTarget_UNDEFINED       MCPTarget_Protocol = 0
	MCPTarget_SSE             MCPTarget_Protocol = 1
	MCPTarget_STREAMABLE_HTTP MCPTarget_Protocol = 2
)

// Enum value maps for MCPTarget_Protocol.
var (
	MCPTarget_Protocol_name = map[int32]string{
		0: "UNDEFINED",
		1: "SSE",
		2: "STREAMABLE_HTTP",
	}
	MCPTarget_Protocol_value = map[string]int32{
		"UNDEFINED":       0,
		"SSE":             1,
		"STREAMABLE_HTTP": 2,
	}
)

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

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

func (MCPTarget_Protocol) Descriptor() protoreflect.EnumDescriptor {
	return file_resource_proto_enumTypes[9].Descriptor()
}

func (MCPTarget_Protocol) Type() protoreflect.EnumType {
	return &file_resource_proto_enumTypes[9]
}

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

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

type Resource struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*Resource_Bind
	//	*Resource_Listener
	//	*Resource_Route
	//	*Resource_Backend
	//	*Resource_Policy
	//	*Resource_TcpRoute
	Kind          isResource_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Resource) ProtoMessage() {}

func (x *Resource) ProtoReflect() protoreflect.Message {
	mi := &file_resource_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 Resource.ProtoReflect.Descriptor instead.
func (*Resource) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{0}
}

func (x *Resource) GetKind() isResource_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *Resource) GetBind() *Bind {
	if x != nil {
		if x, ok := x.Kind.(*Resource_Bind); ok {
			return x.Bind
		}
	}
	return nil
}

func (x *Resource) GetListener() *Listener {
	if x != nil {
		if x, ok := x.Kind.(*Resource_Listener); ok {
			return x.Listener
		}
	}
	return nil
}

func (x *Resource) GetRoute() *Route {
	if x != nil {
		if x, ok := x.Kind.(*Resource_Route); ok {
			return x.Route
		}
	}
	return nil
}

func (x *Resource) GetBackend() *Backend {
	if x != nil {
		if x, ok := x.Kind.(*Resource_Backend); ok {
			return x.Backend
		}
	}
	return nil
}

func (x *Resource) GetPolicy() *Policy {
	if x != nil {
		if x, ok := x.Kind.(*Resource_Policy); ok {
			return x.Policy
		}
	}
	return nil
}

func (x *Resource) GetTcpRoute() *TCPRoute {
	if x != nil {
		if x, ok := x.Kind.(*Resource_TcpRoute); ok {
			return x.TcpRoute
		}
	}
	return nil
}

type isResource_Kind interface {
	isResource_Kind()
}

type Resource_Bind struct {
	Bind *Bind `protobuf:"bytes,1,opt,name=bind,proto3,oneof"`
}

type Resource_Listener struct {
	Listener *Listener `protobuf:"bytes,2,opt,name=listener,proto3,oneof"`
}

type Resource_Route struct {
	Route *Route `protobuf:"bytes,3,opt,name=route,proto3,oneof"`
}

type Resource_Backend struct {
	Backend *Backend `protobuf:"bytes,4,opt,name=backend,proto3,oneof"`
}

type Resource_Policy struct {
	Policy *Policy `protobuf:"bytes,5,opt,name=policy,proto3,oneof"`
}

type Resource_TcpRoute struct {
	TcpRoute *TCPRoute `protobuf:"bytes,6,opt,name=tcp_route,json=tcpRoute,proto3,oneof"`
}

func (*Resource_Bind) isResource_Kind() {}

func (*Resource_Listener) isResource_Kind() {}

func (*Resource_Route) isResource_Kind() {}

func (*Resource_Backend) isResource_Kind() {}

func (*Resource_Policy) isResource_Kind() {}

func (*Resource_TcpRoute) isResource_Kind() {}

type Bind struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Key           string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Port          uint32                 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Bind) ProtoMessage() {}

func (x *Bind) ProtoReflect() protoreflect.Message {
	mi := &file_resource_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 Bind.ProtoReflect.Descriptor instead.
func (*Bind) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{1}
}

func (x *Bind) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *Bind) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

type Listener struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Unique key
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// User facing name; may not be unique
	Name    string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	BindKey string `protobuf:"bytes,3,opt,name=bind_key,json=bindKey,proto3" json:"bind_key,omitempty"`
	// User facing Gateway name
	GatewayName   string     `protobuf:"bytes,4,opt,name=gateway_name,json=gatewayName,proto3" json:"gateway_name,omitempty"`
	Hostname      string     `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Protocol      Protocol   `protobuf:"varint,6,opt,name=protocol,proto3,enum=agentgateway.dev.resource.Protocol" json:"protocol,omitempty"`
	Tls           *TLSConfig `protobuf:"bytes,7,opt,name=tls,proto3" json:"tls,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Listener) ProtoMessage() {}

func (x *Listener) ProtoReflect() protoreflect.Message {
	mi := &file_resource_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 Listener.ProtoReflect.Descriptor instead.
func (*Listener) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{2}
}

func (x *Listener) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *Listener) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Listener) GetBindKey() string {
	if x != nil {
		return x.BindKey
	}
	return ""
}

func (x *Listener) GetGatewayName() string {
	if x != nil {
		return x.GatewayName
	}
	return ""
}

func (x *Listener) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *Listener) GetProtocol() Protocol {
	if x != nil {
		return x.Protocol
	}
	return Protocol_UNKNOWN
}

func (x *Listener) GetTls() *TLSConfig {
	if x != nil {
		return x.Tls
	}
	return nil
}

type TLSConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Cert          []byte                 `protobuf:"bytes,1,opt,name=cert,proto3" json:"cert,omitempty"`
	PrivateKey    []byte                 `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*TLSConfig) ProtoMessage() {}

func (x *TLSConfig) ProtoReflect() protoreflect.Message {
	mi := &file_resource_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 TLSConfig.ProtoReflect.Descriptor instead.
func (*TLSConfig) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{3}
}

func (x *TLSConfig) GetCert() []byte {
	if x != nil {
		return x.Cert
	}
	return nil
}

func (x *TLSConfig) GetPrivateKey() []byte {
	if x != nil {
		return x.PrivateKey
	}
	return nil
}

type Route struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Unique key
	Key         string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	ListenerKey string `protobuf:"bytes,2,opt,name=listener_key,json=listenerKey,proto3" json:"listener_key,omitempty"`
	// User facing rule name. May not be unique.
	RuleName string `protobuf:"bytes,3,opt,name=rule_name,json=ruleName,proto3" json:"rule_name,omitempty"`
	// User facing route name May not be unique.
	RouteName      string          `protobuf:"bytes,4,opt,name=route_name,json=routeName,proto3" json:"route_name,omitempty"`
	Hostnames      []string        `protobuf:"bytes,5,rep,name=hostnames,proto3" json:"hostnames,omitempty"`
	Matches        []*RouteMatch   `protobuf:"bytes,6,rep,name=matches,proto3" json:"matches,omitempty"`
	Filters        []*RouteFilter  `protobuf:"bytes,7,rep,name=filters,proto3" json:"filters,omitempty"`
	Backends       []*RouteBackend `protobuf:"bytes,8,rep,name=backends,proto3" json:"backends,omitempty"`
	TrafficPolicy  *TrafficPolicy  `protobuf:"bytes,9,opt,name=traffic_policy,json=trafficPolicy,proto3" json:"traffic_policy,omitempty"`
	InlinePolicies []*PolicySpec   `protobuf:"bytes,10,rep,name=inline_policies,json=inlinePolicies,proto3" json:"inline_policies,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*Route) ProtoMessage() {}

func (x *Route) ProtoReflect() protoreflect.Message {
	mi := &file_resource_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 Route.ProtoReflect.Descriptor instead.
func (*Route) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{4}
}

func (x *Route) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *Route) GetListenerKey() string {
	if x != nil {
		return x.ListenerKey
	}
	return ""
}

func (x *Route) GetRuleName() string {
	if x != nil {
		return x.RuleName
	}
	return ""
}

func (x *Route) GetRouteName() string {
	if x != nil {
		return x.RouteName
	}
	return ""
}

func (x *Route) GetHostnames() []string {
	if x != nil {
		return x.Hostnames
	}
	return nil
}

func (x *Route) GetMatches() []*RouteMatch {
	if x != nil {
		return x.Matches
	}
	return nil
}

func (x *Route) GetFilters() []*RouteFilter {
	if x != nil {
		return x.Filters
	}
	return nil
}

func (x *Route) GetBackends() []*RouteBackend {
	if x != nil {
		return x.Backends
	}
	return nil
}

func (x *Route) GetTrafficPolicy() *TrafficPolicy {
	if x != nil {
		return x.TrafficPolicy
	}
	return nil
}

func (x *Route) GetInlinePolicies() []*PolicySpec {
	if x != nil {
		return x.InlinePolicies
	}
	return nil
}

type TCPRoute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Unique key
	Key         string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	ListenerKey string `protobuf:"bytes,2,opt,name=listener_key,json=listenerKey,proto3" json:"listener_key,omitempty"`
	// User facing rule name. May not be unique.
	RuleName string `protobuf:"bytes,3,opt,name=rule_name,json=ruleName,proto3" json:"rule_name,omitempty"`
	// User facing route name May not be unique.
	RouteName     string          `protobuf:"bytes,4,opt,name=route_name,json=routeName,proto3" json:"route_name,omitempty"`
	Hostnames     []string        `protobuf:"bytes,5,rep,name=hostnames,proto3" json:"hostnames,omitempty"`
	Backends      []*RouteBackend `protobuf:"bytes,6,rep,name=backends,proto3" json:"backends,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*TCPRoute) ProtoMessage() {}

func (x *TCPRoute) ProtoReflect() protoreflect.Message {
	mi := &file_resource_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 TCPRoute.ProtoReflect.Descriptor instead.
func (*TCPRoute) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{5}
}

func (x *TCPRoute) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *TCPRoute) GetListenerKey() string {
	if x != nil {
		return x.ListenerKey
	}
	return ""
}

func (x *TCPRoute) GetRuleName() string {
	if x != nil {
		return x.RuleName
	}
	return ""
}

func (x *TCPRoute) GetRouteName() string {
	if x != nil {
		return x.RouteName
	}
	return ""
}

func (x *TCPRoute) GetHostnames() []string {
	if x != nil {
		return x.Hostnames
	}
	return nil
}

func (x *TCPRoute) GetBackends() []*RouteBackend {
	if x != nil {
		return x.Backends
	}
	return nil
}

type TrafficPolicy struct {
	state                 protoimpl.MessageState `protogen:"open.v1"`
	BackendRequestTimeout *duration.Duration     `protobuf:"bytes,1,opt,name=backend_request_timeout,json=backendRequestTimeout,proto3" json:"backend_request_timeout,omitempty"`
	RequestTimeout        *duration.Duration     `protobuf:"bytes,2,opt,name=request_timeout,json=requestTimeout,proto3" json:"request_timeout,omitempty"`
	Retry                 *Retry                 `protobuf:"bytes,3,opt,name=retry,proto3" json:"retry,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

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

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

func (*TrafficPolicy) ProtoMessage() {}

func (x *TrafficPolicy) ProtoReflect() protoreflect.Message {
	mi := &file_resource_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 TrafficPolicy.ProtoReflect.Descriptor instead.
func (*TrafficPolicy) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{6}
}

func (x *TrafficPolicy) GetBackendRequestTimeout() *duration.Duration {
	if x != nil {
		return x.BackendRequestTimeout
	}
	return nil
}

func (x *TrafficPolicy) GetRequestTimeout() *duration.Duration {
	if x != nil {
		return x.RequestTimeout
	}
	return nil
}

func (x *TrafficPolicy) GetRetry() *Retry {
	if x != nil {
		return x.Retry
	}
	return nil
}

type Retry struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	RetryStatusCodes []int32                `protobuf:"varint,1,rep,packed,name=retry_status_codes,json=retryStatusCodes,proto3" json:"retry_status_codes,omitempty"`
	Attempts         int32                  `protobuf:"varint,2,opt,name=attempts,proto3" json:"attempts,omitempty"`
	Backoff          *duration.Duration     `protobuf:"bytes,3,opt,name=backoff,proto3" json:"backoff,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *Retry) Reset() {
	*x = Retry{}
	mi := &file_resource_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Retry) ProtoMessage() {}

func (x *Retry) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[7]
	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 Retry.ProtoReflect.Descriptor instead.
func (*Retry) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{7}
}

func (x *Retry) GetRetryStatusCodes() []int32 {
	if x != nil {
		return x.RetryStatusCodes
	}
	return nil
}

func (x *Retry) GetAttempts() int32 {
	if x != nil {
		return x.Attempts
	}
	return 0
}

func (x *Retry) GetBackoff() *duration.Duration {
	if x != nil {
		return x.Backoff
	}
	return nil
}

type BackendAuthPolicy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*BackendAuthPolicy_Passthrough
	//	*BackendAuthPolicy_Key
	//	*BackendAuthPolicy_Gcp
	//	*BackendAuthPolicy_Aws
	//	*BackendAuthPolicy_Azure
	Kind          isBackendAuthPolicy_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BackendAuthPolicy) Reset() {
	*x = BackendAuthPolicy{}
	mi := &file_resource_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BackendAuthPolicy) ProtoMessage() {}

func (x *BackendAuthPolicy) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[8]
	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 BackendAuthPolicy.ProtoReflect.Descriptor instead.
func (*BackendAuthPolicy) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{8}
}

func (x *BackendAuthPolicy) GetKind() isBackendAuthPolicy_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *BackendAuthPolicy) GetPassthrough() *Passthrough {
	if x != nil {
		if x, ok := x.Kind.(*BackendAuthPolicy_Passthrough); ok {
			return x.Passthrough
		}
	}
	return nil
}

func (x *BackendAuthPolicy) GetKey() *Key {
	if x != nil {
		if x, ok := x.Kind.(*BackendAuthPolicy_Key); ok {
			return x.Key
		}
	}
	return nil
}

func (x *BackendAuthPolicy) GetGcp() *Gcp {
	if x != nil {
		if x, ok := x.Kind.(*BackendAuthPolicy_Gcp); ok {
			return x.Gcp
		}
	}
	return nil
}

func (x *BackendAuthPolicy) GetAws() *Aws {
	if x != nil {
		if x, ok := x.Kind.(*BackendAuthPolicy_Aws); ok {
			return x.Aws
		}
	}
	return nil
}

func (x *BackendAuthPolicy) GetAzure() *Azure {
	if x != nil {
		if x, ok := x.Kind.(*BackendAuthPolicy_Azure); ok {
			return x.Azure
		}
	}
	return nil
}

type isBackendAuthPolicy_Kind interface {
	isBackendAuthPolicy_Kind()
}

type BackendAuthPolicy_Passthrough struct {
	Passthrough *Passthrough `protobuf:"bytes,1,opt,name=passthrough,proto3,oneof"`
}

type BackendAuthPolicy_Key struct {
	Key *Key `protobuf:"bytes,2,opt,name=key,proto3,oneof"`
}

type BackendAuthPolicy_Gcp struct {
	Gcp *Gcp `protobuf:"bytes,3,opt,name=gcp,proto3,oneof"`
}

type BackendAuthPolicy_Aws struct {
	Aws *Aws `protobuf:"bytes,4,opt,name=aws,proto3,oneof"`
}

type BackendAuthPolicy_Azure struct {
	Azure *Azure `protobuf:"bytes,5,opt,name=azure,proto3,oneof"`
}

func (*BackendAuthPolicy_Passthrough) isBackendAuthPolicy_Kind() {}

func (*BackendAuthPolicy_Key) isBackendAuthPolicy_Kind() {}

func (*BackendAuthPolicy_Gcp) isBackendAuthPolicy_Kind() {}

func (*BackendAuthPolicy_Aws) isBackendAuthPolicy_Kind() {}

func (*BackendAuthPolicy_Azure) isBackendAuthPolicy_Kind() {}

// No fields needed for passthrough authentication.
type Passthrough struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Passthrough) Reset() {
	*x = Passthrough{}
	mi := &file_resource_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Passthrough) ProtoMessage() {}

func (x *Passthrough) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[9]
	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 Passthrough.ProtoReflect.Descriptor instead.
func (*Passthrough) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{9}
}

// Contains a secret for authentication, e.g. an API key.
type Key struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Secret        string                 `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Key) Reset() {
	*x = Key{}
	mi := &file_resource_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Key) ProtoMessage() {}

func (x *Key) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[10]
	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 Key.ProtoReflect.Descriptor instead.
func (*Key) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{10}
}

func (x *Key) GetSecret() string {
	if x != nil {
		return x.Secret
	}
	return ""
}

// GCP-specific backend authentication.
type Gcp struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Gcp) Reset() {
	*x = Gcp{}
	mi := &file_resource_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Gcp) ProtoMessage() {}

func (x *Gcp) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[11]
	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 Gcp.ProtoReflect.Descriptor instead.
func (*Gcp) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{11}
}

// AWS-specific backend authentication.
type Aws struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*Aws_ExplicitConfig
	//	*Aws_Implicit
	Kind          isAws_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Aws) Reset() {
	*x = Aws{}
	mi := &file_resource_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Aws) ProtoMessage() {}

func (x *Aws) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[12]
	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 Aws.ProtoReflect.Descriptor instead.
func (*Aws) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{12}
}

func (x *Aws) GetKind() isAws_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *Aws) GetExplicitConfig() *AwsExplicitConfig {
	if x != nil {
		if x, ok := x.Kind.(*Aws_ExplicitConfig); ok {
			return x.ExplicitConfig
		}
	}
	return nil
}

func (x *Aws) GetImplicit() *AwsImplicit {
	if x != nil {
		if x, ok := x.Kind.(*Aws_Implicit); ok {
			return x.Implicit
		}
	}
	return nil
}

type isAws_Kind interface {
	isAws_Kind()
}

type Aws_ExplicitConfig struct {
	ExplicitConfig *AwsExplicitConfig `protobuf:"bytes,1,opt,name=explicit_config,json=explicitConfig,proto3,oneof"`
}

type Aws_Implicit struct {
	Implicit *AwsImplicit `protobuf:"bytes,2,opt,name=implicit,proto3,oneof"`
}

func (*Aws_ExplicitConfig) isAws_Kind() {}

func (*Aws_Implicit) isAws_Kind() {}

// Azure-specific backend authentication.
type Azure struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*Azure_ExplicitConfig
	//	*Azure_DeveloperImplicit
	Kind          isAzure_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Azure) Reset() {
	*x = Azure{}
	mi := &file_resource_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Azure) ProtoMessage() {}

func (x *Azure) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[13]
	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 Azure.ProtoReflect.Descriptor instead.
func (*Azure) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{13}
}

func (x *Azure) GetKind() isAzure_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *Azure) GetExplicitConfig() *AzureExplicitConfig {
	if x != nil {
		if x, ok := x.Kind.(*Azure_ExplicitConfig); ok {
			return x.ExplicitConfig
		}
	}
	return nil
}

func (x *Azure) GetDeveloperImplicit() *AzureDeveloperImplicit {
	if x != nil {
		if x, ok := x.Kind.(*Azure_DeveloperImplicit); ok {
			return x.DeveloperImplicit
		}
	}
	return nil
}

type isAzure_Kind interface {
	isAzure_Kind()
}

type Azure_ExplicitConfig struct {
	ExplicitConfig *AzureExplicitConfig `protobuf:"bytes,1,opt,name=explicit_config,json=explicitConfig,proto3,oneof"`
}

type Azure_DeveloperImplicit struct {
	DeveloperImplicit *AzureDeveloperImplicit `protobuf:"bytes,2,opt,name=developer_implicit,json=developerImplicit,proto3,oneof"`
}

func (*Azure_ExplicitConfig) isAzure_Kind() {}

func (*Azure_DeveloperImplicit) isAzure_Kind() {}

// Explicit AWS credentials configuration
type AwsExplicitConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// AWS Access Key ID for authentication
	AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"`
	// AWS Secret Access Key for authentication
	SecretAccessKey string `protobuf:"bytes,2,opt,name=secret_access_key,json=secretAccessKey,proto3" json:"secret_access_key,omitempty"`
	// AWS Region (e.g., "us-west-2", "us-east-1")
	Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"`
	// Optional session token for temporary credentials
	SessionToken  *string `protobuf:"bytes,4,opt,name=session_token,json=sessionToken,proto3,oneof" json:"session_token,omitempty"` // TODO: make service configurable
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AwsExplicitConfig) Reset() {
	*x = AwsExplicitConfig{}
	mi := &file_resource_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AwsExplicitConfig) ProtoMessage() {}

func (x *AwsExplicitConfig) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[14]
	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 AwsExplicitConfig.ProtoReflect.Descriptor instead.
func (*AwsExplicitConfig) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{14}
}

func (x *AwsExplicitConfig) GetAccessKeyId() string {
	if x != nil {
		return x.AccessKeyId
	}
	return ""
}

func (x *AwsExplicitConfig) GetSecretAccessKey() string {
	if x != nil {
		return x.SecretAccessKey
	}
	return ""
}

func (x *AwsExplicitConfig) GetRegion() string {
	if x != nil {
		return x.Region
	}
	return ""
}

func (x *AwsExplicitConfig) GetSessionToken() string {
	if x != nil && x.SessionToken != nil {
		return *x.SessionToken
	}
	return ""
}

// Use implicit AWS authentication (environment variables, IAM roles, etc.)
type AwsImplicit struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AwsImplicit) Reset() {
	*x = AwsImplicit{}
	mi := &file_resource_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AwsImplicit) ProtoMessage() {}

func (x *AwsImplicit) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[15]
	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 AwsImplicit.ProtoReflect.Descriptor instead.
func (*AwsImplicit) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{15}
}

// Explicit Azure credentials configuration
type AzureExplicitConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to CredentialSource:
	//
	//	*AzureExplicitConfig_ClientSecret
	//	*AzureExplicitConfig_ManagedIdentityCredential
	//	*AzureExplicitConfig_WorkloadIdentityCredential
	CredentialSource isAzureExplicitConfig_CredentialSource `protobuf_oneof:"credential_source"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *AzureExplicitConfig) Reset() {
	*x = AzureExplicitConfig{}
	mi := &file_resource_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AzureExplicitConfig) ProtoMessage() {}

func (x *AzureExplicitConfig) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[16]
	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 AzureExplicitConfig.ProtoReflect.Descriptor instead.
func (*AzureExplicitConfig) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{16}
}

func (x *AzureExplicitConfig) GetCredentialSource() isAzureExplicitConfig_CredentialSource {
	if x != nil {
		return x.CredentialSource
	}
	return nil
}

func (x *AzureExplicitConfig) GetClientSecret() *AzureClientSecret {
	if x != nil {
		if x, ok := x.CredentialSource.(*AzureExplicitConfig_ClientSecret); ok {
			return x.ClientSecret
		}
	}
	return nil
}

func (x *AzureExplicitConfig) GetManagedIdentityCredential() *AzureManagedIdentityCredential {
	if x != nil {
		if x, ok := x.CredentialSource.(*AzureExplicitConfig_ManagedIdentityCredential); ok {
			return x.ManagedIdentityCredential
		}
	}
	return nil
}

func (x *AzureExplicitConfig) GetWorkloadIdentityCredential() *AzureWorkloadIdentityCredential {
	if x != nil {
		if x, ok := x.CredentialSource.(*AzureExplicitConfig_WorkloadIdentityCredential); ok {
			return x.WorkloadIdentityCredential
		}
	}
	return nil
}

type isAzureExplicitConfig_CredentialSource interface {
	isAzureExplicitConfig_CredentialSource()
}

type AzureExplicitConfig_ClientSecret struct {
	ClientSecret *AzureClientSecret `protobuf:"bytes,1,opt,name=client_secret,json=clientSecret,proto3,oneof"`
}

type AzureExplicitConfig_ManagedIdentityCredential struct {
	ManagedIdentityCredential *AzureManagedIdentityCredential `protobuf:"bytes,2,opt,name=managed_identity_credential,json=managedIdentityCredential,proto3,oneof"`
}

type AzureExplicitConfig_WorkloadIdentityCredential struct {
	WorkloadIdentityCredential *AzureWorkloadIdentityCredential `protobuf:"bytes,3,opt,name=workload_identity_credential,json=workloadIdentityCredential,proto3,oneof"`
}

func (*AzureExplicitConfig_ClientSecret) isAzureExplicitConfig_CredentialSource() {}

func (*AzureExplicitConfig_ManagedIdentityCredential) isAzureExplicitConfig_CredentialSource() {}

func (*AzureExplicitConfig_WorkloadIdentityCredential) isAzureExplicitConfig_CredentialSource() {}

// Azure Client Secret authentication method
type AzureClientSecret struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Azure tenant ID
	TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// Azure client ID (application ID)
	ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Azure client secret
	ClientSecret  string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AzureClientSecret) Reset() {
	*x = AzureClientSecret{}
	mi := &file_resource_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AzureClientSecret) ProtoMessage() {}

func (x *AzureClientSecret) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[17]
	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 AzureClientSecret.ProtoReflect.Descriptor instead.
func (*AzureClientSecret) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{17}
}

func (x *AzureClientSecret) GetTenantId() string {
	if x != nil {
		return x.TenantId
	}
	return ""
}

func (x *AzureClientSecret) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *AzureClientSecret) GetClientSecret() string {
	if x != nil {
		return x.ClientSecret
	}
	return ""
}

// Azure Managed Identity authentication method
type AzureManagedIdentityCredential struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The UAMI to be used to authenticate. If not set, the system-assigned identity will be used.
	UserAssignedIdentity *AzureManagedIdentityCredential_UserAssignedIdentity `protobuf:"bytes,1,opt,name=user_assigned_identity,json=userAssignedIdentity,proto3,oneof" json:"user_assigned_identity,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *AzureManagedIdentityCredential) Reset() {
	*x = AzureManagedIdentityCredential{}
	mi := &file_resource_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AzureManagedIdentityCredential) ProtoMessage() {}

func (x *AzureManagedIdentityCredential) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[18]
	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 AzureManagedIdentityCredential.ProtoReflect.Descriptor instead.
func (*AzureManagedIdentityCredential) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{18}
}

func (x *AzureManagedIdentityCredential) GetUserAssignedIdentity() *AzureManagedIdentityCredential_UserAssignedIdentity {
	if x != nil {
		return x.UserAssignedIdentity
	}
	return nil
}

// Azure Workload Identity authentication method
type AzureWorkloadIdentityCredential struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AzureWorkloadIdentityCredential) Reset() {
	*x = AzureWorkloadIdentityCredential{}
	mi := &file_resource_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AzureWorkloadIdentityCredential) ProtoMessage() {}

func (x *AzureWorkloadIdentityCredential) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[19]
	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 AzureWorkloadIdentityCredential.ProtoReflect.Descriptor instead.
func (*AzureWorkloadIdentityCredential) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{19}
}

// Use implicit Azure authentication for developer use-cases only
type AzureDeveloperImplicit struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AzureDeveloperImplicit) Reset() {
	*x = AzureDeveloperImplicit{}
	mi := &file_resource_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AzureDeveloperImplicit) ProtoMessage() {}

func (x *AzureDeveloperImplicit) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[20]
	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 AzureDeveloperImplicit.ProtoReflect.Descriptor instead.
func (*AzureDeveloperImplicit) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{20}
}

type RouteMatch struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Path          *PathMatch             `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	Headers       []*HeaderMatch         `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty"`
	Method        *MethodMatch           `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"`
	QueryParams   []*QueryMatch          `protobuf:"bytes,4,rep,name=query_params,json=queryParams,proto3" json:"query_params,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RouteMatch) Reset() {
	*x = RouteMatch{}
	mi := &file_resource_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RouteMatch) ProtoMessage() {}

func (x *RouteMatch) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[21]
	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 RouteMatch.ProtoReflect.Descriptor instead.
func (*RouteMatch) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{21}
}

func (x *RouteMatch) GetPath() *PathMatch {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *RouteMatch) GetHeaders() []*HeaderMatch {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *RouteMatch) GetMethod() *MethodMatch {
	if x != nil {
		return x.Method
	}
	return nil
}

func (x *RouteMatch) GetQueryParams() []*QueryMatch {
	if x != nil {
		return x.QueryParams
	}
	return nil
}

type PathMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*PathMatch_Exact
	//	*PathMatch_PathPrefix
	//	*PathMatch_Regex
	Kind          isPathMatch_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PathMatch) Reset() {
	*x = PathMatch{}
	mi := &file_resource_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PathMatch) ProtoMessage() {}

func (x *PathMatch) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[22]
	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 PathMatch.ProtoReflect.Descriptor instead.
func (*PathMatch) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{22}
}

func (x *PathMatch) GetKind() isPathMatch_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *PathMatch) GetExact() string {
	if x != nil {
		if x, ok := x.Kind.(*PathMatch_Exact); ok {
			return x.Exact
		}
	}
	return ""
}

func (x *PathMatch) GetPathPrefix() string {
	if x != nil {
		if x, ok := x.Kind.(*PathMatch_PathPrefix); ok {
			return x.PathPrefix
		}
	}
	return ""
}

func (x *PathMatch) GetRegex() string {
	if x != nil {
		if x, ok := x.Kind.(*PathMatch_Regex); ok {
			return x.Regex
		}
	}
	return ""
}

type isPathMatch_Kind interface {
	isPathMatch_Kind()
}

type PathMatch_Exact struct {
	Exact string `protobuf:"bytes,1,opt,name=exact,proto3,oneof"`
}

type PathMatch_PathPrefix struct {
	PathPrefix string `protobuf:"bytes,2,opt,name=path_prefix,json=pathPrefix,proto3,oneof"`
}

type PathMatch_Regex struct {
	Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"`
}

func (*PathMatch_Exact) isPathMatch_Kind() {}

func (*PathMatch_PathPrefix) isPathMatch_Kind() {}

func (*PathMatch_Regex) isPathMatch_Kind() {}

type QueryMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to Value:
	//
	//	*QueryMatch_Exact
	//	*QueryMatch_Regex
	Value         isQueryMatch_Value `protobuf_oneof:"value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *QueryMatch) Reset() {
	*x = QueryMatch{}
	mi := &file_resource_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*QueryMatch) ProtoMessage() {}

func (x *QueryMatch) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[23]
	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 QueryMatch.ProtoReflect.Descriptor instead.
func (*QueryMatch) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{23}
}

func (x *QueryMatch) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *QueryMatch) GetValue() isQueryMatch_Value {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *QueryMatch) GetExact() string {
	if x != nil {
		if x, ok := x.Value.(*QueryMatch_Exact); ok {
			return x.Exact
		}
	}
	return ""
}

func (x *QueryMatch) GetRegex() string {
	if x != nil {
		if x, ok := x.Value.(*QueryMatch_Regex); ok {
			return x.Regex
		}
	}
	return ""
}

type isQueryMatch_Value interface {
	isQueryMatch_Value()
}

type QueryMatch_Exact struct {
	Exact string `protobuf:"bytes,2,opt,name=exact,proto3,oneof"`
}

type QueryMatch_Regex struct {
	Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"`
}

func (*QueryMatch_Exact) isQueryMatch_Value() {}

func (*QueryMatch_Regex) isQueryMatch_Value() {}

type MethodMatch struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Exact         string                 `protobuf:"bytes,1,opt,name=exact,proto3" json:"exact,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MethodMatch) Reset() {
	*x = MethodMatch{}
	mi := &file_resource_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MethodMatch) ProtoMessage() {}

func (x *MethodMatch) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[24]
	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 MethodMatch.ProtoReflect.Descriptor instead.
func (*MethodMatch) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{24}
}

func (x *MethodMatch) GetExact() string {
	if x != nil {
		return x.Exact
	}
	return ""
}

type HeaderMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to Value:
	//
	//	*HeaderMatch_Exact
	//	*HeaderMatch_Regex
	Value         isHeaderMatch_Value `protobuf_oneof:"value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HeaderMatch) Reset() {
	*x = HeaderMatch{}
	mi := &file_resource_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HeaderMatch) ProtoMessage() {}

func (x *HeaderMatch) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[25]
	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 HeaderMatch.ProtoReflect.Descriptor instead.
func (*HeaderMatch) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{25}
}

func (x *HeaderMatch) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *HeaderMatch) GetValue() isHeaderMatch_Value {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *HeaderMatch) GetExact() string {
	if x != nil {
		if x, ok := x.Value.(*HeaderMatch_Exact); ok {
			return x.Exact
		}
	}
	return ""
}

func (x *HeaderMatch) GetRegex() string {
	if x != nil {
		if x, ok := x.Value.(*HeaderMatch_Regex); ok {
			return x.Regex
		}
	}
	return ""
}

type isHeaderMatch_Value interface {
	isHeaderMatch_Value()
}

type HeaderMatch_Exact struct {
	Exact string `protobuf:"bytes,2,opt,name=exact,proto3,oneof"`
}

type HeaderMatch_Regex struct {
	Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"`
}

func (*HeaderMatch_Exact) isHeaderMatch_Value() {}

func (*HeaderMatch_Regex) isHeaderMatch_Value() {}

type RouteFilter struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*RouteFilter_RequestHeaderModifier
	//	*RouteFilter_ResponseHeaderModifier
	//	*RouteFilter_RequestRedirect
	//	*RouteFilter_UrlRewrite
	//	*RouteFilter_RequestMirror
	//	*RouteFilter_DirectResponse
	//	*RouteFilter_Cors
	Kind          isRouteFilter_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RouteFilter) Reset() {
	*x = RouteFilter{}
	mi := &file_resource_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RouteFilter) ProtoMessage() {}

func (x *RouteFilter) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[26]
	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 RouteFilter.ProtoReflect.Descriptor instead.
func (*RouteFilter) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{26}
}

func (x *RouteFilter) GetKind() isRouteFilter_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *RouteFilter) GetRequestHeaderModifier() *HeaderModifier {
	if x != nil {
		if x, ok := x.Kind.(*RouteFilter_RequestHeaderModifier); ok {
			return x.RequestHeaderModifier
		}
	}
	return nil
}

func (x *RouteFilter) GetResponseHeaderModifier() *HeaderModifier {
	if x != nil {
		if x, ok := x.Kind.(*RouteFilter_ResponseHeaderModifier); ok {
			return x.ResponseHeaderModifier
		}
	}
	return nil
}

func (x *RouteFilter) GetRequestRedirect() *RequestRedirect {
	if x != nil {
		if x, ok := x.Kind.(*RouteFilter_RequestRedirect); ok {
			return x.RequestRedirect
		}
	}
	return nil
}

func (x *RouteFilter) GetUrlRewrite() *UrlRewrite {
	if x != nil {
		if x, ok := x.Kind.(*RouteFilter_UrlRewrite); ok {
			return x.UrlRewrite
		}
	}
	return nil
}

func (x *RouteFilter) GetRequestMirror() *RequestMirror {
	if x != nil {
		if x, ok := x.Kind.(*RouteFilter_RequestMirror); ok {
			return x.RequestMirror
		}
	}
	return nil
}

func (x *RouteFilter) GetDirectResponse() *DirectResponse {
	if x != nil {
		if x, ok := x.Kind.(*RouteFilter_DirectResponse); ok {
			return x.DirectResponse
		}
	}
	return nil
}

func (x *RouteFilter) GetCors() *CORS {
	if x != nil {
		if x, ok := x.Kind.(*RouteFilter_Cors); ok {
			return x.Cors
		}
	}
	return nil
}

type isRouteFilter_Kind interface {
	isRouteFilter_Kind()
}

type RouteFilter_RequestHeaderModifier struct {
	RequestHeaderModifier *HeaderModifier `protobuf:"bytes,1,opt,name=request_header_modifier,json=requestHeaderModifier,proto3,oneof"`
}

type RouteFilter_ResponseHeaderModifier struct {
	ResponseHeaderModifier *HeaderModifier `protobuf:"bytes,2,opt,name=response_header_modifier,json=responseHeaderModifier,proto3,oneof"`
}

type RouteFilter_RequestRedirect struct {
	RequestRedirect *RequestRedirect `protobuf:"bytes,3,opt,name=request_redirect,json=requestRedirect,proto3,oneof"`
}

type RouteFilter_UrlRewrite struct {
	UrlRewrite *UrlRewrite `protobuf:"bytes,4,opt,name=url_rewrite,json=urlRewrite,proto3,oneof"`
}

type RouteFilter_RequestMirror struct {
	RequestMirror *RequestMirror `protobuf:"bytes,5,opt,name=request_mirror,json=requestMirror,proto3,oneof"`
}

type RouteFilter_DirectResponse struct {
	DirectResponse *DirectResponse `protobuf:"bytes,6,opt,name=direct_response,json=directResponse,proto3,oneof"`
}

type RouteFilter_Cors struct {
	Cors *CORS `protobuf:"bytes,7,opt,name=cors,proto3,oneof"`
}

func (*RouteFilter_RequestHeaderModifier) isRouteFilter_Kind() {}

func (*RouteFilter_ResponseHeaderModifier) isRouteFilter_Kind() {}

func (*RouteFilter_RequestRedirect) isRouteFilter_Kind() {}

func (*RouteFilter_UrlRewrite) isRouteFilter_Kind() {}

func (*RouteFilter_RequestMirror) isRouteFilter_Kind() {}

func (*RouteFilter_DirectResponse) isRouteFilter_Kind() {}

func (*RouteFilter_Cors) isRouteFilter_Kind() {}

type CORS struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	AllowCredentials bool                   `protobuf:"varint,1,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"`
	AllowHeaders     []string               `protobuf:"bytes,2,rep,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"`
	AllowMethods     []string               `protobuf:"bytes,3,rep,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"`
	AllowOrigins     []string               `protobuf:"bytes,4,rep,name=allow_origins,json=allowOrigins,proto3" json:"allow_origins,omitempty"`
	ExposeHeaders    []string               `protobuf:"bytes,5,rep,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"`
	// max_age is in seconds, use google.protobuf.Duration if available, otherwise uint64 for seconds
	MaxAge        *duration.Duration `protobuf:"bytes,6,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CORS) Reset() {
	*x = CORS{}
	mi := &file_resource_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CORS) ProtoMessage() {}

func (x *CORS) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[27]
	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 CORS.ProtoReflect.Descriptor instead.
func (*CORS) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{27}
}

func (x *CORS) GetAllowCredentials() bool {
	if x != nil {
		return x.AllowCredentials
	}
	return false
}

func (x *CORS) GetAllowHeaders() []string {
	if x != nil {
		return x.AllowHeaders
	}
	return nil
}

func (x *CORS) GetAllowMethods() []string {
	if x != nil {
		return x.AllowMethods
	}
	return nil
}

func (x *CORS) GetAllowOrigins() []string {
	if x != nil {
		return x.AllowOrigins
	}
	return nil
}

func (x *CORS) GetExposeHeaders() []string {
	if x != nil {
		return x.ExposeHeaders
	}
	return nil
}

func (x *CORS) GetMaxAge() *duration.Duration {
	if x != nil {
		return x.MaxAge
	}
	return nil
}

type DirectResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Status        uint32                 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Body          []byte                 `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DirectResponse) Reset() {
	*x = DirectResponse{}
	mi := &file_resource_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DirectResponse) ProtoMessage() {}

func (x *DirectResponse) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[28]
	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 DirectResponse.ProtoReflect.Descriptor instead.
func (*DirectResponse) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{28}
}

func (x *DirectResponse) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *DirectResponse) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

type HeaderModifier struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Add           []*Header              `protobuf:"bytes,1,rep,name=add,proto3" json:"add,omitempty"`
	Set           []*Header              `protobuf:"bytes,2,rep,name=set,proto3" json:"set,omitempty"`
	Remove        []string               `protobuf:"bytes,3,rep,name=remove,proto3" json:"remove,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HeaderModifier) Reset() {
	*x = HeaderModifier{}
	mi := &file_resource_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HeaderModifier) ProtoMessage() {}

func (x *HeaderModifier) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[29]
	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 HeaderModifier.ProtoReflect.Descriptor instead.
func (*HeaderModifier) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{29}
}

func (x *HeaderModifier) GetAdd() []*Header {
	if x != nil {
		return x.Add
	}
	return nil
}

func (x *HeaderModifier) GetSet() []*Header {
	if x != nil {
		return x.Set
	}
	return nil
}

func (x *HeaderModifier) GetRemove() []string {
	if x != nil {
		return x.Remove
	}
	return nil
}

type RequestMirror struct {
	state   protoimpl.MessageState `protogen:"open.v1"`
	Backend *BackendReference      `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	// 0-100
	Percentage    float64 `protobuf:"fixed64,2,opt,name=percentage,proto3" json:"percentage,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RequestMirror) Reset() {
	*x = RequestMirror{}
	mi := &file_resource_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RequestMirror) ProtoMessage() {}

func (x *RequestMirror) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[30]
	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 RequestMirror.ProtoReflect.Descriptor instead.
func (*RequestMirror) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{30}
}

func (x *RequestMirror) GetBackend() *BackendReference {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *RequestMirror) GetPercentage() float64 {
	if x != nil {
		return x.Percentage
	}
	return 0
}

type RequestRedirect struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	Scheme string                 `protobuf:"bytes,1,opt,name=scheme,proto3" json:"scheme,omitempty"`
	Host   string                 `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
	// Types that are valid to be assigned to Path:
	//
	//	*RequestRedirect_Full
	//	*RequestRedirect_Prefix
	Path          isRequestRedirect_Path `protobuf_oneof:"path"`
	Port          uint32                 `protobuf:"varint,5,opt,name=port,proto3" json:"port,omitempty"`
	Status        uint32                 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RequestRedirect) Reset() {
	*x = RequestRedirect{}
	mi := &file_resource_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RequestRedirect) ProtoMessage() {}

func (x *RequestRedirect) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[31]
	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 RequestRedirect.ProtoReflect.Descriptor instead.
func (*RequestRedirect) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{31}
}

func (x *RequestRedirect) GetScheme() string {
	if x != nil {
		return x.Scheme
	}
	return ""
}

func (x *RequestRedirect) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *RequestRedirect) GetPath() isRequestRedirect_Path {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *RequestRedirect) GetFull() string {
	if x != nil {
		if x, ok := x.Path.(*RequestRedirect_Full); ok {
			return x.Full
		}
	}
	return ""
}

func (x *RequestRedirect) GetPrefix() string {
	if x != nil {
		if x, ok := x.Path.(*RequestRedirect_Prefix); ok {
			return x.Prefix
		}
	}
	return ""
}

func (x *RequestRedirect) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *RequestRedirect) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

type isRequestRedirect_Path interface {
	isRequestRedirect_Path()
}

type RequestRedirect_Full struct {
	Full string `protobuf:"bytes,3,opt,name=full,proto3,oneof"`
}

type RequestRedirect_Prefix struct {
	Prefix string `protobuf:"bytes,4,opt,name=prefix,proto3,oneof"`
}

func (*RequestRedirect_Full) isRequestRedirect_Path() {}

func (*RequestRedirect_Prefix) isRequestRedirect_Path() {}

type UrlRewrite struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Host  string                 `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
	// Types that are valid to be assigned to Path:
	//
	//	*UrlRewrite_Full
	//	*UrlRewrite_Prefix
	Path          isUrlRewrite_Path `protobuf_oneof:"path"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UrlRewrite) Reset() {
	*x = UrlRewrite{}
	mi := &file_resource_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UrlRewrite) ProtoMessage() {}

func (x *UrlRewrite) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[32]
	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 UrlRewrite.ProtoReflect.Descriptor instead.
func (*UrlRewrite) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{32}
}

func (x *UrlRewrite) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *UrlRewrite) GetPath() isUrlRewrite_Path {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *UrlRewrite) GetFull() string {
	if x != nil {
		if x, ok := x.Path.(*UrlRewrite_Full); ok {
			return x.Full
		}
	}
	return ""
}

func (x *UrlRewrite) GetPrefix() string {
	if x != nil {
		if x, ok := x.Path.(*UrlRewrite_Prefix); ok {
			return x.Prefix
		}
	}
	return ""
}

type isUrlRewrite_Path interface {
	isUrlRewrite_Path()
}

type UrlRewrite_Full struct {
	Full string `protobuf:"bytes,2,opt,name=full,proto3,oneof"`
}

type UrlRewrite_Prefix struct {
	Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3,oneof"`
}

func (*UrlRewrite_Full) isUrlRewrite_Path() {}

func (*UrlRewrite_Prefix) isUrlRewrite_Path() {}

type Header struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Value         string                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Header) Reset() {
	*x = Header{}
	mi := &file_resource_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Header) ProtoMessage() {}

func (x *Header) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[33]
	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 Header.ProtoReflect.Descriptor instead.
func (*Header) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{33}
}

func (x *Header) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Header) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type RouteBackend struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Backend       *BackendReference      `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	Weight        int32                  `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
	Filters       []*RouteFilter         `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RouteBackend) Reset() {
	*x = RouteBackend{}
	mi := &file_resource_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RouteBackend) ProtoMessage() {}

func (x *RouteBackend) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[34]
	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 RouteBackend.ProtoReflect.Descriptor instead.
func (*RouteBackend) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{34}
}

func (x *RouteBackend) GetBackend() *BackendReference {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *RouteBackend) GetWeight() int32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *RouteBackend) GetFilters() []*RouteFilter {
	if x != nil {
		return x.Filters
	}
	return nil
}

type PolicyTarget struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*PolicyTarget_Gateway
	//	*PolicyTarget_Listener
	//	*PolicyTarget_Route
	//	*PolicyTarget_RouteRule
	//	*PolicyTarget_Backend
	//	*PolicyTarget_Service
	//	*PolicyTarget_SubBackend
	Kind          isPolicyTarget_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicyTarget) Reset() {
	*x = PolicyTarget{}
	mi := &file_resource_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicyTarget) ProtoMessage() {}

func (x *PolicyTarget) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[35]
	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 PolicyTarget.ProtoReflect.Descriptor instead.
func (*PolicyTarget) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{35}
}

func (x *PolicyTarget) GetKind() isPolicyTarget_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *PolicyTarget) GetGateway() string {
	if x != nil {
		if x, ok := x.Kind.(*PolicyTarget_Gateway); ok {
			return x.Gateway
		}
	}
	return ""
}

func (x *PolicyTarget) GetListener() string {
	if x != nil {
		if x, ok := x.Kind.(*PolicyTarget_Listener); ok {
			return x.Listener
		}
	}
	return ""
}

func (x *PolicyTarget) GetRoute() string {
	if x != nil {
		if x, ok := x.Kind.(*PolicyTarget_Route); ok {
			return x.Route
		}
	}
	return ""
}

func (x *PolicyTarget) GetRouteRule() string {
	if x != nil {
		if x, ok := x.Kind.(*PolicyTarget_RouteRule); ok {
			return x.RouteRule
		}
	}
	return ""
}

func (x *PolicyTarget) GetBackend() string {
	if x != nil {
		if x, ok := x.Kind.(*PolicyTarget_Backend); ok {
			return x.Backend
		}
	}
	return ""
}

func (x *PolicyTarget) GetService() string {
	if x != nil {
		if x, ok := x.Kind.(*PolicyTarget_Service); ok {
			return x.Service
		}
	}
	return ""
}

func (x *PolicyTarget) GetSubBackend() string {
	if x != nil {
		if x, ok := x.Kind.(*PolicyTarget_SubBackend); ok {
			return x.SubBackend
		}
	}
	return ""
}

type isPolicyTarget_Kind interface {
	isPolicyTarget_Kind()
}

type PolicyTarget_Gateway struct {
	// Matches Listener.gateway_name
	Gateway string `protobuf:"bytes,1,opt,name=gateway,proto3,oneof"`
}

type PolicyTarget_Listener struct {
	// Matches Listener.name
	Listener string `protobuf:"bytes,2,opt,name=listener,proto3,oneof"`
}

type PolicyTarget_Route struct {
	// Match Route.route_name
	Route string `protobuf:"bytes,3,opt,name=route,proto3,oneof"`
}

type PolicyTarget_RouteRule struct {
	// Matches Route.rule_name
	RouteRule string `protobuf:"bytes,4,opt,name=route_rule,json=routeRule,proto3,oneof"`
}

type PolicyTarget_Backend struct {
	// For ServicePort: `service/{namespace}/{hostname}:{port}`
	// For Backend: `{ns}/{name}`
	Backend string `protobuf:"bytes,5,opt,name=backend,proto3,oneof"`
}

type PolicyTarget_Service struct {
	// namespace}/{hostname}
	Service string `protobuf:"bytes,6,opt,name=service,proto3,oneof"`
}

type PolicyTarget_SubBackend struct {
	// For Backend: `{ns}/{name}/{sub-backend}`
	SubBackend string `protobuf:"bytes,7,opt,name=sub_backend,json=subBackend,proto3,oneof"`
}

func (*PolicyTarget_Gateway) isPolicyTarget_Kind() {}

func (*PolicyTarget_Listener) isPolicyTarget_Kind() {}

func (*PolicyTarget_Route) isPolicyTarget_Kind() {}

func (*PolicyTarget_RouteRule) isPolicyTarget_Kind() {}

func (*PolicyTarget_Backend) isPolicyTarget_Kind() {}

func (*PolicyTarget_Service) isPolicyTarget_Kind() {}

func (*PolicyTarget_SubBackend) isPolicyTarget_Kind() {}

type PolicySpec struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*PolicySpec_LocalRateLimit_
	//	*PolicySpec_ExtAuthz
	//	*PolicySpec_A2A_
	//	*PolicySpec_InferenceRouting_
	//	*PolicySpec_BackendTls
	//	*PolicySpec_Auth
	//	*PolicySpec_Authorization
	//	*PolicySpec_McpAuthorization
	//	*PolicySpec_Ai_
	//	*PolicySpec_Jwt
	//	*PolicySpec_Transformation
	//	*PolicySpec_RemoteRateLimit_
	//	*PolicySpec_Csrf
	Kind          isPolicySpec_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec) Reset() {
	*x = PolicySpec{}
	mi := &file_resource_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec) ProtoMessage() {}

func (x *PolicySpec) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[36]
	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 PolicySpec.ProtoReflect.Descriptor instead.
func (*PolicySpec) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36}
}

func (x *PolicySpec) GetKind() isPolicySpec_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *PolicySpec) GetLocalRateLimit() *PolicySpec_LocalRateLimit {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_LocalRateLimit_); ok {
			return x.LocalRateLimit
		}
	}
	return nil
}

func (x *PolicySpec) GetExtAuthz() *PolicySpec_ExternalAuth {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_ExtAuthz); ok {
			return x.ExtAuthz
		}
	}
	return nil
}

func (x *PolicySpec) GetA2A() *PolicySpec_A2A {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_A2A_); ok {
			return x.A2A
		}
	}
	return nil
}

func (x *PolicySpec) GetInferenceRouting() *PolicySpec_InferenceRouting {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_InferenceRouting_); ok {
			return x.InferenceRouting
		}
	}
	return nil
}

func (x *PolicySpec) GetBackendTls() *PolicySpec_BackendTLS {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_BackendTls); ok {
			return x.BackendTls
		}
	}
	return nil
}

func (x *PolicySpec) GetAuth() *BackendAuthPolicy {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Auth); ok {
			return x.Auth
		}
	}
	return nil
}

func (x *PolicySpec) GetAuthorization() *PolicySpec_RBAC {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Authorization); ok {
			return x.Authorization
		}
	}
	return nil
}

func (x *PolicySpec) GetMcpAuthorization() *PolicySpec_RBAC {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_McpAuthorization); ok {
			return x.McpAuthorization
		}
	}
	return nil
}

func (x *PolicySpec) GetAi() *PolicySpec_Ai {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Ai_); ok {
			return x.Ai
		}
	}
	return nil
}

func (x *PolicySpec) GetJwt() *PolicySpec_JWT {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Jwt); ok {
			return x.Jwt
		}
	}
	return nil
}

func (x *PolicySpec) GetTransformation() *PolicySpec_TransformationPolicy {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Transformation); ok {
			return x.Transformation
		}
	}
	return nil
}

func (x *PolicySpec) GetRemoteRateLimit() *PolicySpec_RemoteRateLimit {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_RemoteRateLimit_); ok {
			return x.RemoteRateLimit
		}
	}
	return nil
}

func (x *PolicySpec) GetCsrf() *PolicySpec_CSRF {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Csrf); ok {
			return x.Csrf
		}
	}
	return nil
}

type isPolicySpec_Kind interface {
	isPolicySpec_Kind()
}

type PolicySpec_LocalRateLimit_ struct {
	LocalRateLimit *PolicySpec_LocalRateLimit `protobuf:"bytes,1,opt,name=local_rate_limit,json=localRateLimit,proto3,oneof"`
}

type PolicySpec_ExtAuthz struct {
	ExtAuthz *PolicySpec_ExternalAuth `protobuf:"bytes,2,opt,name=ext_authz,json=extAuthz,proto3,oneof"`
}

type PolicySpec_A2A_ struct {
	A2A *PolicySpec_A2A `protobuf:"bytes,3,opt,name=a2a,proto3,oneof"`
}

type PolicySpec_InferenceRouting_ struct {
	InferenceRouting *PolicySpec_InferenceRouting `protobuf:"bytes,4,opt,name=inference_routing,json=inferenceRouting,proto3,oneof"`
}

type PolicySpec_BackendTls struct {
	BackendTls *PolicySpec_BackendTLS `protobuf:"bytes,5,opt,name=backend_tls,json=backendTls,proto3,oneof"`
}

type PolicySpec_Auth struct {
	Auth *BackendAuthPolicy `protobuf:"bytes,6,opt,name=auth,proto3,oneof"`
}

type PolicySpec_Authorization struct {
	Authorization *PolicySpec_RBAC `protobuf:"bytes,7,opt,name=authorization,proto3,oneof"`
}

type PolicySpec_McpAuthorization struct {
	McpAuthorization *PolicySpec_RBAC `protobuf:"bytes,8,opt,name=mcp_authorization,json=mcpAuthorization,proto3,oneof"`
}

type PolicySpec_Ai_ struct {
	Ai *PolicySpec_Ai `protobuf:"bytes,9,opt,name=ai,proto3,oneof"`
}

type PolicySpec_Jwt struct {
	Jwt *PolicySpec_JWT `protobuf:"bytes,10,opt,name=jwt,proto3,oneof"`
}

type PolicySpec_Transformation struct {
	Transformation *PolicySpec_TransformationPolicy `protobuf:"bytes,11,opt,name=transformation,proto3,oneof"`
}

type PolicySpec_RemoteRateLimit_ struct {
	RemoteRateLimit *PolicySpec_RemoteRateLimit `protobuf:"bytes,12,opt,name=remote_rate_limit,json=remoteRateLimit,proto3,oneof"`
}

type PolicySpec_Csrf struct {
	Csrf *PolicySpec_CSRF `protobuf:"bytes,13,opt,name=csrf,proto3,oneof"`
}

func (*PolicySpec_LocalRateLimit_) isPolicySpec_Kind() {}

func (*PolicySpec_ExtAuthz) isPolicySpec_Kind() {}

func (*PolicySpec_A2A_) isPolicySpec_Kind() {}

func (*PolicySpec_InferenceRouting_) isPolicySpec_Kind() {}

func (*PolicySpec_BackendTls) isPolicySpec_Kind() {}

func (*PolicySpec_Auth) isPolicySpec_Kind() {}

func (*PolicySpec_Authorization) isPolicySpec_Kind() {}

func (*PolicySpec_McpAuthorization) isPolicySpec_Kind() {}

func (*PolicySpec_Ai_) isPolicySpec_Kind() {}

func (*PolicySpec_Jwt) isPolicySpec_Kind() {}

func (*PolicySpec_Transformation) isPolicySpec_Kind() {}

func (*PolicySpec_RemoteRateLimit_) isPolicySpec_Kind() {}

func (*PolicySpec_Csrf) isPolicySpec_Kind() {}

type Policy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Format is "<ns>/<name>"
	Name          string        `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Target        *PolicyTarget `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
	Spec          *PolicySpec   `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Policy) Reset() {
	*x = Policy{}
	mi := &file_resource_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Policy) ProtoMessage() {}

func (x *Policy) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[37]
	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 Policy.ProtoReflect.Descriptor instead.
func (*Policy) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{37}
}

func (x *Policy) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Policy) GetTarget() *PolicyTarget {
	if x != nil {
		return x.Target
	}
	return nil
}

func (x *Policy) GetSpec() *PolicySpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

type Backend struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Format is "<ns>/<name>"
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to Kind:
	//
	//	*Backend_Static
	//	*Backend_Ai
	//	*Backend_Mcp
	Kind          isBackend_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Backend) Reset() {
	*x = Backend{}
	mi := &file_resource_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Backend) ProtoMessage() {}

func (x *Backend) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[38]
	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 Backend.ProtoReflect.Descriptor instead.
func (*Backend) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{38}
}

func (x *Backend) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Backend) GetKind() isBackend_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *Backend) GetStatic() *StaticBackend {
	if x != nil {
		if x, ok := x.Kind.(*Backend_Static); ok {
			return x.Static
		}
	}
	return nil
}

func (x *Backend) GetAi() *AIBackend {
	if x != nil {
		if x, ok := x.Kind.(*Backend_Ai); ok {
			return x.Ai
		}
	}
	return nil
}

func (x *Backend) GetMcp() *MCPBackend {
	if x != nil {
		if x, ok := x.Kind.(*Backend_Mcp); ok {
			return x.Mcp
		}
	}
	return nil
}

type isBackend_Kind interface {
	isBackend_Kind()
}

type Backend_Static struct {
	Static *StaticBackend `protobuf:"bytes,2,opt,name=static,proto3,oneof"`
}

type Backend_Ai struct {
	Ai *AIBackend `protobuf:"bytes,3,opt,name=ai,proto3,oneof"`
}

type Backend_Mcp struct {
	Mcp *MCPBackend `protobuf:"bytes,4,opt,name=mcp,proto3,oneof"`
}

func (*Backend_Static) isBackend_Kind() {}

func (*Backend_Ai) isBackend_Kind() {}

func (*Backend_Mcp) isBackend_Kind() {}

type StaticBackend struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Host          string                 `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
	Port          int32                  `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StaticBackend) Reset() {
	*x = StaticBackend{}
	mi := &file_resource_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StaticBackend) ProtoMessage() {}

func (x *StaticBackend) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[39]
	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 StaticBackend.ProtoReflect.Descriptor instead.
func (*StaticBackend) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{39}
}

func (x *StaticBackend) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *StaticBackend) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

type AIBackend struct {
	state          protoimpl.MessageState     `protogen:"open.v1"`
	ProviderGroups []*AIBackend_ProviderGroup `protobuf:"bytes,1,rep,name=provider_groups,json=providerGroups,proto3" json:"provider_groups,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *AIBackend) Reset() {
	*x = AIBackend{}
	mi := &file_resource_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend) ProtoMessage() {}

func (x *AIBackend) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[40]
	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 AIBackend.ProtoReflect.Descriptor instead.
func (*AIBackend) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40}
}

func (x *AIBackend) GetProviderGroups() []*AIBackend_ProviderGroup {
	if x != nil {
		return x.ProviderGroups
	}
	return nil
}

type MCPBackend struct {
	state   protoimpl.MessageState `protogen:"open.v1"`
	Targets []*MCPTarget           `protobuf:"bytes,2,rep,name=targets,proto3" json:"targets,omitempty"`
	// Whether or not this backend should serve stateful MCP connections.
	// We set this at the backend level because it would be illegal/nonsensical
	// to mix stateful and stateless targets in the same backend.
	StatefulMode  MCPBackend_StatefulMode `protobuf:"varint,3,opt,name=stateful_mode,json=statefulMode,proto3,enum=agentgateway.dev.resource.MCPBackend_StatefulMode" json:"stateful_mode,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MCPBackend) Reset() {
	*x = MCPBackend{}
	mi := &file_resource_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MCPBackend) ProtoMessage() {}

func (x *MCPBackend) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[41]
	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 MCPBackend.ProtoReflect.Descriptor instead.
func (*MCPBackend) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{41}
}

func (x *MCPBackend) GetTargets() []*MCPTarget {
	if x != nil {
		return x.Targets
	}
	return nil
}

func (x *MCPBackend) GetStatefulMode() MCPBackend_StatefulMode {
	if x != nil {
		return x.StatefulMode
	}
	return MCPBackend_STATEFUL
}

type MCPTarget struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Backend       *BackendReference      `protobuf:"bytes,2,opt,name=backend,proto3" json:"backend,omitempty"`
	Path          string                 `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
	Protocol      MCPTarget_Protocol     `protobuf:"varint,4,opt,name=protocol,proto3,enum=agentgateway.dev.resource.MCPTarget_Protocol" json:"protocol,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MCPTarget) Reset() {
	*x = MCPTarget{}
	mi := &file_resource_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MCPTarget) ProtoMessage() {}

func (x *MCPTarget) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[42]
	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 MCPTarget.ProtoReflect.Descriptor instead.
func (*MCPTarget) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{42}
}

func (x *MCPTarget) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *MCPTarget) GetBackend() *BackendReference {
	if x != nil {
		return x.Backend
	}
	return nil
}

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

func (x *MCPTarget) GetProtocol() MCPTarget_Protocol {
	if x != nil {
		return x.Protocol
	}
	return MCPTarget_UNDEFINED
}

type BackendReference struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*BackendReference_Service
	//	*BackendReference_Backend
	Kind isBackendReference_Kind `protobuf_oneof:"kind"`
	// Port, used only with 'service' type
	Port          uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BackendReference) Reset() {
	*x = BackendReference{}
	mi := &file_resource_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BackendReference) ProtoMessage() {}

func (x *BackendReference) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[43]
	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 BackendReference.ProtoReflect.Descriptor instead.
func (*BackendReference) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{43}
}

func (x *BackendReference) GetKind() isBackendReference_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *BackendReference) GetService() string {
	if x != nil {
		if x, ok := x.Kind.(*BackendReference_Service); ok {
			return x.Service
		}
	}
	return ""
}

func (x *BackendReference) GetBackend() string {
	if x != nil {
		if x, ok := x.Kind.(*BackendReference_Backend); ok {
			return x.Backend
		}
	}
	return ""
}

func (x *BackendReference) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

type isBackendReference_Kind interface {
	isBackendReference_Kind()
}

type BackendReference_Service struct {
	// A service (could be Service, ServiceEntry, etc) in "<ns>/<hostname>" format
	// These are joined with the service discovery.
	Service string `protobuf:"bytes,1,opt,name=service,proto3,oneof"`
}

type BackendReference_Backend struct {
	// A Backend object.
	// Format is "<ns>/<name>". Joined with the Backend object.
	// Must be of type StaticBackend.
	Backend string `protobuf:"bytes,2,opt,name=backend,proto3,oneof"`
}

func (*BackendReference_Service) isBackendReference_Kind() {}

func (*BackendReference_Backend) isBackendReference_Kind() {}

type AzureManagedIdentityCredential_UserAssignedIdentity struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Id:
	//
	//	*AzureManagedIdentityCredential_UserAssignedIdentity_ClientId
	//	*AzureManagedIdentityCredential_UserAssignedIdentity_ObjectId
	//	*AzureManagedIdentityCredential_UserAssignedIdentity_ResourceId
	Id            isAzureManagedIdentityCredential_UserAssignedIdentity_Id `protobuf_oneof:"id"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AzureManagedIdentityCredential_UserAssignedIdentity) Reset() {
	*x = AzureManagedIdentityCredential_UserAssignedIdentity{}
	mi := &file_resource_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AzureManagedIdentityCredential_UserAssignedIdentity) ProtoMessage() {}

func (x *AzureManagedIdentityCredential_UserAssignedIdentity) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[44]
	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 AzureManagedIdentityCredential_UserAssignedIdentity.ProtoReflect.Descriptor instead.
func (*AzureManagedIdentityCredential_UserAssignedIdentity) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{18, 0}
}

func (x *AzureManagedIdentityCredential_UserAssignedIdentity) GetId() isAzureManagedIdentityCredential_UserAssignedIdentity_Id {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *AzureManagedIdentityCredential_UserAssignedIdentity) GetClientId() string {
	if x != nil {
		if x, ok := x.Id.(*AzureManagedIdentityCredential_UserAssignedIdentity_ClientId); ok {
			return x.ClientId
		}
	}
	return ""
}

func (x *AzureManagedIdentityCredential_UserAssignedIdentity) GetObjectId() string {
	if x != nil {
		if x, ok := x.Id.(*AzureManagedIdentityCredential_UserAssignedIdentity_ObjectId); ok {
			return x.ObjectId
		}
	}
	return ""
}

func (x *AzureManagedIdentityCredential_UserAssignedIdentity) GetResourceId() string {
	if x != nil {
		if x, ok := x.Id.(*AzureManagedIdentityCredential_UserAssignedIdentity_ResourceId); ok {
			return x.ResourceId
		}
	}
	return ""
}

type isAzureManagedIdentityCredential_UserAssignedIdentity_Id interface {
	isAzureManagedIdentityCredential_UserAssignedIdentity_Id()
}

type AzureManagedIdentityCredential_UserAssignedIdentity_ClientId struct {
	ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3,oneof"`
}

type AzureManagedIdentityCredential_UserAssignedIdentity_ObjectId struct {
	ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3,oneof"`
}

type AzureManagedIdentityCredential_UserAssignedIdentity_ResourceId struct {
	ResourceId string `protobuf:"bytes,3,opt,name=resource_id,json=resourceId,proto3,oneof"`
}

func (*AzureManagedIdentityCredential_UserAssignedIdentity_ClientId) isAzureManagedIdentityCredential_UserAssignedIdentity_Id() {
}

func (*AzureManagedIdentityCredential_UserAssignedIdentity_ObjectId) isAzureManagedIdentityCredential_UserAssignedIdentity_Id() {
}

func (*AzureManagedIdentityCredential_UserAssignedIdentity_ResourceId) isAzureManagedIdentityCredential_UserAssignedIdentity_Id() {
}

type PolicySpec_RemoteRateLimit struct {
	state         protoimpl.MessageState                   `protogen:"open.v1"`
	Domain        string                                   `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"`
	Descriptors   []*PolicySpec_RemoteRateLimit_Descriptor `protobuf:"bytes,2,rep,name=descriptors,proto3" json:"descriptors,omitempty"`
	Target        *BackendReference                        `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_RemoteRateLimit) Reset() {
	*x = PolicySpec_RemoteRateLimit{}
	mi := &file_resource_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_RemoteRateLimit) ProtoMessage() {}

func (x *PolicySpec_RemoteRateLimit) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[45]
	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 PolicySpec_RemoteRateLimit.ProtoReflect.Descriptor instead.
func (*PolicySpec_RemoteRateLimit) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 0}
}

func (x *PolicySpec_RemoteRateLimit) GetDomain() string {
	if x != nil {
		return x.Domain
	}
	return ""
}

func (x *PolicySpec_RemoteRateLimit) GetDescriptors() []*PolicySpec_RemoteRateLimit_Descriptor {
	if x != nil {
		return x.Descriptors
	}
	return nil
}

func (x *PolicySpec_RemoteRateLimit) GetTarget() *BackendReference {
	if x != nil {
		return x.Target
	}
	return nil
}

type PolicySpec_LocalRateLimit struct {
	state         protoimpl.MessageState         `protogen:"open.v1"`
	MaxTokens     uint64                         `protobuf:"varint,1,opt,name=max_tokens,json=maxTokens,proto3" json:"max_tokens,omitempty"`
	TokensPerFill uint64                         `protobuf:"varint,2,opt,name=tokens_per_fill,json=tokensPerFill,proto3" json:"tokens_per_fill,omitempty"`
	FillInterval  *duration.Duration             `protobuf:"bytes,3,opt,name=fill_interval,json=fillInterval,proto3" json:"fill_interval,omitempty"`
	Type          PolicySpec_LocalRateLimit_Type `protobuf:"varint,4,opt,name=type,proto3,enum=agentgateway.dev.resource.PolicySpec_LocalRateLimit_Type" json:"type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_LocalRateLimit) Reset() {
	*x = PolicySpec_LocalRateLimit{}
	mi := &file_resource_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_LocalRateLimit) ProtoMessage() {}

func (x *PolicySpec_LocalRateLimit) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[46]
	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 PolicySpec_LocalRateLimit.ProtoReflect.Descriptor instead.
func (*PolicySpec_LocalRateLimit) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 1}
}

func (x *PolicySpec_LocalRateLimit) GetMaxTokens() uint64 {
	if x != nil {
		return x.MaxTokens
	}
	return 0
}

func (x *PolicySpec_LocalRateLimit) GetTokensPerFill() uint64 {
	if x != nil {
		return x.TokensPerFill
	}
	return 0
}

func (x *PolicySpec_LocalRateLimit) GetFillInterval() *duration.Duration {
	if x != nil {
		return x.FillInterval
	}
	return nil
}

func (x *PolicySpec_LocalRateLimit) GetType() PolicySpec_LocalRateLimit_Type {
	if x != nil {
		return x.Type
	}
	return PolicySpec_LocalRateLimit_REQUEST
}

type PolicySpec_Ai struct {
	state       protoimpl.MessageState     `protogen:"open.v1"`
	PromptGuard *PolicySpec_Ai_PromptGuard `protobuf:"bytes,1,opt,name=prompt_guard,json=promptGuard,proto3" json:"prompt_guard,omitempty"`
	// Default JSON key-value pairs to add to the LLM request if the key is not set in the request.
	Defaults map[string]string `protobuf:"bytes,2,rep,name=defaults,proto3" json:"defaults,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Override JSON key-value pairs to set in the LLM request regardless of whether they are set in the request.
	Overrides map[string]string               `protobuf:"bytes,3,rep,name=overrides,proto3" json:"overrides,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Prompts   *PolicySpec_Ai_PromptEnrichment `protobuf:"bytes,4,opt,name=prompts,proto3" json:"prompts,omitempty"`
	// Model aliases - map from alias name to actual model name
	ModelAliases  map[string]string `protobuf:"bytes,5,rep,name=model_aliases,json=modelAliases,proto3" json:"model_aliases,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai) Reset() {
	*x = PolicySpec_Ai{}
	mi := &file_resource_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai) ProtoMessage() {}

func (x *PolicySpec_Ai) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[47]
	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 PolicySpec_Ai.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2}
}

func (x *PolicySpec_Ai) GetPromptGuard() *PolicySpec_Ai_PromptGuard {
	if x != nil {
		return x.PromptGuard
	}
	return nil
}

func (x *PolicySpec_Ai) GetDefaults() map[string]string {
	if x != nil {
		return x.Defaults
	}
	return nil
}

func (x *PolicySpec_Ai) GetOverrides() map[string]string {
	if x != nil {
		return x.Overrides
	}
	return nil
}

func (x *PolicySpec_Ai) GetPrompts() *PolicySpec_Ai_PromptEnrichment {
	if x != nil {
		return x.Prompts
	}
	return nil
}

func (x *PolicySpec_Ai) GetModelAliases() map[string]string {
	if x != nil {
		return x.ModelAliases
	}
	return nil
}

type PolicySpec_ExternalAuth struct {
	state                 protoimpl.MessageState               `protogen:"open.v1"`
	Target                *BackendReference                    `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
	Context               map[string]string                    `protobuf:"bytes,2,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	FailureMode           PolicySpec_ExternalAuth_FailureMode  `protobuf:"varint,3,opt,name=failure_mode,json=failureMode,proto3,enum=agentgateway.dev.resource.PolicySpec_ExternalAuth_FailureMode" json:"failure_mode,omitempty"`
	IncludeRequestHeaders []string                             `protobuf:"bytes,4,rep,name=include_request_headers,json=includeRequestHeaders,proto3" json:"include_request_headers,omitempty"`
	IncludeRequestBody    *PolicySpec_ExternalAuth_BodyOptions `protobuf:"bytes,5,opt,name=include_request_body,json=includeRequestBody,proto3" json:"include_request_body,omitempty"`
	Timeout               *duration.Duration                   `protobuf:"bytes,6,opt,name=timeout,proto3" json:"timeout,omitempty"`
	StatusOnError         *wrappers.UInt32Value                `protobuf:"bytes,7,opt,name=status_on_error,json=statusOnError,proto3" json:"status_on_error,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *PolicySpec_ExternalAuth) Reset() {
	*x = PolicySpec_ExternalAuth{}
	mi := &file_resource_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_ExternalAuth) ProtoMessage() {}

func (x *PolicySpec_ExternalAuth) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[48]
	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 PolicySpec_ExternalAuth.ProtoReflect.Descriptor instead.
func (*PolicySpec_ExternalAuth) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 3}
}

func (x *PolicySpec_ExternalAuth) GetTarget() *BackendReference {
	if x != nil {
		return x.Target
	}
	return nil
}

func (x *PolicySpec_ExternalAuth) GetContext() map[string]string {
	if x != nil {
		return x.Context
	}
	return nil
}

func (x *PolicySpec_ExternalAuth) GetFailureMode() PolicySpec_ExternalAuth_FailureMode {
	if x != nil {
		return x.FailureMode
	}
	return PolicySpec_ExternalAuth_DENY
}

func (x *PolicySpec_ExternalAuth) GetIncludeRequestHeaders() []string {
	if x != nil {
		return x.IncludeRequestHeaders
	}
	return nil
}

func (x *PolicySpec_ExternalAuth) GetIncludeRequestBody() *PolicySpec_ExternalAuth_BodyOptions {
	if x != nil {
		return x.IncludeRequestBody
	}
	return nil
}

func (x *PolicySpec_ExternalAuth) GetTimeout() *duration.Duration {
	if x != nil {
		return x.Timeout
	}
	return nil
}

func (x *PolicySpec_ExternalAuth) GetStatusOnError() *wrappers.UInt32Value {
	if x != nil {
		return x.StatusOnError
	}
	return nil
}

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

func (x *PolicySpec_A2A) Reset() {
	*x = PolicySpec_A2A{}
	mi := &file_resource_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_A2A) ProtoMessage() {}

func (x *PolicySpec_A2A) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[49]
	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 PolicySpec_A2A.ProtoReflect.Descriptor instead.
func (*PolicySpec_A2A) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 4}
}

type PolicySpec_InferenceRouting struct {
	state          protoimpl.MessageState                  `protogen:"open.v1"`
	EndpointPicker *BackendReference                       `protobuf:"bytes,1,opt,name=endpoint_picker,json=endpointPicker,proto3" json:"endpoint_picker,omitempty"`
	FailureMode    PolicySpec_InferenceRouting_FailureMode `protobuf:"varint,2,opt,name=failure_mode,json=failureMode,proto3,enum=agentgateway.dev.resource.PolicySpec_InferenceRouting_FailureMode" json:"failure_mode,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *PolicySpec_InferenceRouting) Reset() {
	*x = PolicySpec_InferenceRouting{}
	mi := &file_resource_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_InferenceRouting) ProtoMessage() {}

func (x *PolicySpec_InferenceRouting) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[50]
	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 PolicySpec_InferenceRouting.ProtoReflect.Descriptor instead.
func (*PolicySpec_InferenceRouting) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 5}
}

func (x *PolicySpec_InferenceRouting) GetEndpointPicker() *BackendReference {
	if x != nil {
		return x.EndpointPicker
	}
	return nil
}

func (x *PolicySpec_InferenceRouting) GetFailureMode() PolicySpec_InferenceRouting_FailureMode {
	if x != nil {
		return x.FailureMode
	}
	return PolicySpec_InferenceRouting_UNKNOWN
}

type PolicySpec_BackendTLS struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Cert  *wrappers.BytesValue   `protobuf:"bytes,1,opt,name=cert,proto3" json:"cert,omitempty"`
	Key   *wrappers.BytesValue   `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	// Root to verify. If not set, system certs will be used.
	// If no verification is desired, use 'insecure'
	Root *wrappers.BytesValue `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"`
	// Disable all verification
	Insecure *wrappers.BoolValue `protobuf:"bytes,4,opt,name=insecure,proto3" json:"insecure,omitempty"`
	// If set, override the SNI explicitly. Otherwise, it is auto-derived.
	Hostname      *wrappers.StringValue `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_BackendTLS) Reset() {
	*x = PolicySpec_BackendTLS{}
	mi := &file_resource_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_BackendTLS) ProtoMessage() {}

func (x *PolicySpec_BackendTLS) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[51]
	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 PolicySpec_BackendTLS.ProtoReflect.Descriptor instead.
func (*PolicySpec_BackendTLS) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 6}
}

func (x *PolicySpec_BackendTLS) GetCert() *wrappers.BytesValue {
	if x != nil {
		return x.Cert
	}
	return nil
}

func (x *PolicySpec_BackendTLS) GetKey() *wrappers.BytesValue {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *PolicySpec_BackendTLS) GetRoot() *wrappers.BytesValue {
	if x != nil {
		return x.Root
	}
	return nil
}

func (x *PolicySpec_BackendTLS) GetInsecure() *wrappers.BoolValue {
	if x != nil {
		return x.Insecure
	}
	return nil
}

func (x *PolicySpec_BackendTLS) GetHostname() *wrappers.StringValue {
	if x != nil {
		return x.Hostname
	}
	return nil
}

type PolicySpec_RBAC struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Allow         []string               `protobuf:"bytes,1,rep,name=allow,proto3" json:"allow,omitempty"`
	Deny          []string               `protobuf:"bytes,2,rep,name=deny,proto3" json:"deny,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_RBAC) Reset() {
	*x = PolicySpec_RBAC{}
	mi := &file_resource_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_RBAC) ProtoMessage() {}

func (x *PolicySpec_RBAC) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[52]
	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 PolicySpec_RBAC.ProtoReflect.Descriptor instead.
func (*PolicySpec_RBAC) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 7}
}

func (x *PolicySpec_RBAC) GetAllow() []string {
	if x != nil {
		return x.Allow
	}
	return nil
}

func (x *PolicySpec_RBAC) GetDeny() []string {
	if x != nil {
		return x.Deny
	}
	return nil
}

// JWT authentication configuration
type PolicySpec_JWT struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// How the JWT validation should behave
	Mode PolicySpec_JWT_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=agentgateway.dev.resource.PolicySpec_JWT_Mode" json:"mode,omitempty"`
	// JWT issuer that must match the 'iss' claim
	Issuer string `protobuf:"bytes,2,opt,name=issuer,proto3" json:"issuer,omitempty"`
	// List of audiences - the 'aud' claim must be in this list
	Audiences []string `protobuf:"bytes,3,rep,name=audiences,proto3" json:"audiences,omitempty"`
	// JWKS configuration - where to get the keys for validation
	//
	// Types that are valid to be assigned to JwksSource:
	//
	//	*PolicySpec_JWT_Inline
	JwksSource    isPolicySpec_JWT_JwksSource `protobuf_oneof:"jwks_source"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_JWT) Reset() {
	*x = PolicySpec_JWT{}
	mi := &file_resource_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_JWT) ProtoMessage() {}

func (x *PolicySpec_JWT) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[53]
	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 PolicySpec_JWT.ProtoReflect.Descriptor instead.
func (*PolicySpec_JWT) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 8}
}

func (x *PolicySpec_JWT) GetMode() PolicySpec_JWT_Mode {
	if x != nil {
		return x.Mode
	}
	return PolicySpec_JWT_OPTIONAL
}

func (x *PolicySpec_JWT) GetIssuer() string {
	if x != nil {
		return x.Issuer
	}
	return ""
}

func (x *PolicySpec_JWT) GetAudiences() []string {
	if x != nil {
		return x.Audiences
	}
	return nil
}

func (x *PolicySpec_JWT) GetJwksSource() isPolicySpec_JWT_JwksSource {
	if x != nil {
		return x.JwksSource
	}
	return nil
}

func (x *PolicySpec_JWT) GetInline() string {
	if x != nil {
		if x, ok := x.JwksSource.(*PolicySpec_JWT_Inline); ok {
			return x.Inline
		}
	}
	return ""
}

type isPolicySpec_JWT_JwksSource interface {
	isPolicySpec_JWT_JwksSource()
}

type PolicySpec_JWT_Inline struct {
	// Inline JWKS as a JSON string
	Inline string `protobuf:"bytes,4,opt,name=inline,proto3,oneof"`
}

func (*PolicySpec_JWT_Inline) isPolicySpec_JWT_JwksSource() {}

type PolicySpec_TransformationPolicy struct {
	state         protoimpl.MessageState                     `protogen:"open.v1"`
	Request       *PolicySpec_TransformationPolicy_Transform `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
	Response      *PolicySpec_TransformationPolicy_Transform `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_TransformationPolicy) Reset() {
	*x = PolicySpec_TransformationPolicy{}
	mi := &file_resource_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_TransformationPolicy) ProtoMessage() {}

func (x *PolicySpec_TransformationPolicy) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[54]
	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 PolicySpec_TransformationPolicy.ProtoReflect.Descriptor instead.
func (*PolicySpec_TransformationPolicy) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 9}
}

func (x *PolicySpec_TransformationPolicy) GetRequest() *PolicySpec_TransformationPolicy_Transform {
	if x != nil {
		return x.Request
	}
	return nil
}

func (x *PolicySpec_TransformationPolicy) GetResponse() *PolicySpec_TransformationPolicy_Transform {
	if x != nil {
		return x.Response
	}
	return nil
}

type PolicySpec_HeaderTransformation struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Expression    string                 `protobuf:"bytes,2,opt,name=expression,proto3" json:"expression,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_HeaderTransformation) Reset() {
	*x = PolicySpec_HeaderTransformation{}
	mi := &file_resource_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_HeaderTransformation) ProtoMessage() {}

func (x *PolicySpec_HeaderTransformation) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[55]
	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 PolicySpec_HeaderTransformation.ProtoReflect.Descriptor instead.
func (*PolicySpec_HeaderTransformation) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 10}
}

func (x *PolicySpec_HeaderTransformation) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *PolicySpec_HeaderTransformation) GetExpression() string {
	if x != nil {
		return x.Expression
	}
	return ""
}

type PolicySpec_BodyTransformation struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Expression    string                 `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_BodyTransformation) Reset() {
	*x = PolicySpec_BodyTransformation{}
	mi := &file_resource_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_BodyTransformation) ProtoMessage() {}

func (x *PolicySpec_BodyTransformation) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[56]
	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 PolicySpec_BodyTransformation.ProtoReflect.Descriptor instead.
func (*PolicySpec_BodyTransformation) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 11}
}

func (x *PolicySpec_BodyTransformation) GetExpression() string {
	if x != nil {
		return x.Expression
	}
	return ""
}

// Cross-Site Request Forgery (CSRF) policy configuration.
type PolicySpec_CSRF struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Additional origins that are allowed for CSRF validation beyond the same-origin policy.
	// If a request's origin header matches any of these exact origins, the request will be allowed.
	// Each origin should be in the format "scheme://host[:port]" (e.g., "https://www.example.com")
	AdditionalOrigins []string `protobuf:"bytes,1,rep,name=additional_origins,json=additionalOrigins,proto3" json:"additional_origins,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *PolicySpec_CSRF) Reset() {
	*x = PolicySpec_CSRF{}
	mi := &file_resource_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_CSRF) ProtoMessage() {}

func (x *PolicySpec_CSRF) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[57]
	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 PolicySpec_CSRF.ProtoReflect.Descriptor instead.
func (*PolicySpec_CSRF) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 12}
}

func (x *PolicySpec_CSRF) GetAdditionalOrigins() []string {
	if x != nil {
		return x.AdditionalOrigins
	}
	return nil
}

type PolicySpec_RemoteRateLimit_Descriptor struct {
	state         protoimpl.MessageState              `protogen:"open.v1"`
	Entries       []*PolicySpec_RemoteRateLimit_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
	Type          PolicySpec_RemoteRateLimit_Type     `protobuf:"varint,2,opt,name=type,proto3,enum=agentgateway.dev.resource.PolicySpec_RemoteRateLimit_Type" json:"type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_RemoteRateLimit_Descriptor) Reset() {
	*x = PolicySpec_RemoteRateLimit_Descriptor{}
	mi := &file_resource_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_RemoteRateLimit_Descriptor) ProtoMessage() {}

func (x *PolicySpec_RemoteRateLimit_Descriptor) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[58]
	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 PolicySpec_RemoteRateLimit_Descriptor.ProtoReflect.Descriptor instead.
func (*PolicySpec_RemoteRateLimit_Descriptor) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 0, 0}
}

func (x *PolicySpec_RemoteRateLimit_Descriptor) GetEntries() []*PolicySpec_RemoteRateLimit_Entry {
	if x != nil {
		return x.Entries
	}
	return nil
}

func (x *PolicySpec_RemoteRateLimit_Descriptor) GetType() PolicySpec_RemoteRateLimit_Type {
	if x != nil {
		return x.Type
	}
	return PolicySpec_RemoteRateLimit_REQUESTS
}

type PolicySpec_RemoteRateLimit_Entry struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Key           string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value         string                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // CEL expr
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_RemoteRateLimit_Entry) Reset() {
	*x = PolicySpec_RemoteRateLimit_Entry{}
	mi := &file_resource_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_RemoteRateLimit_Entry) ProtoMessage() {}

func (x *PolicySpec_RemoteRateLimit_Entry) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[59]
	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 PolicySpec_RemoteRateLimit_Entry.ProtoReflect.Descriptor instead.
func (*PolicySpec_RemoteRateLimit_Entry) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 0, 1}
}

func (x *PolicySpec_RemoteRateLimit_Entry) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *PolicySpec_RemoteRateLimit_Entry) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type PolicySpec_Ai_Message struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Role          string                 `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"`
	Content       string                 `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_Message) Reset() {
	*x = PolicySpec_Ai_Message{}
	mi := &file_resource_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_Message) ProtoMessage() {}

func (x *PolicySpec_Ai_Message) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[60]
	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 PolicySpec_Ai_Message.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_Message) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 0}
}

func (x *PolicySpec_Ai_Message) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *PolicySpec_Ai_Message) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

type PolicySpec_Ai_PromptEnrichment struct {
	state         protoimpl.MessageState   `protogen:"open.v1"`
	Append        []*PolicySpec_Ai_Message `protobuf:"bytes,1,rep,name=append,proto3" json:"append,omitempty"`
	Prepend       []*PolicySpec_Ai_Message `protobuf:"bytes,2,rep,name=prepend,proto3" json:"prepend,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_PromptEnrichment) Reset() {
	*x = PolicySpec_Ai_PromptEnrichment{}
	mi := &file_resource_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_PromptEnrichment) ProtoMessage() {}

func (x *PolicySpec_Ai_PromptEnrichment) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[61]
	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 PolicySpec_Ai_PromptEnrichment.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_PromptEnrichment) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 1}
}

func (x *PolicySpec_Ai_PromptEnrichment) GetAppend() []*PolicySpec_Ai_Message {
	if x != nil {
		return x.Append
	}
	return nil
}

func (x *PolicySpec_Ai_PromptEnrichment) GetPrepend() []*PolicySpec_Ai_Message {
	if x != nil {
		return x.Prepend
	}
	return nil
}

type PolicySpec_Ai_NamedRegex struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Pattern       string                 `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_NamedRegex) Reset() {
	*x = PolicySpec_Ai_NamedRegex{}
	mi := &file_resource_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_NamedRegex) ProtoMessage() {}

func (x *PolicySpec_Ai_NamedRegex) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[62]
	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 PolicySpec_Ai_NamedRegex.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_NamedRegex) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 2}
}

func (x *PolicySpec_Ai_NamedRegex) GetPattern() string {
	if x != nil {
		return x.Pattern
	}
	return ""
}

func (x *PolicySpec_Ai_NamedRegex) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

type PolicySpec_Ai_RegexRule struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*PolicySpec_Ai_RegexRule_Builtin
	//	*PolicySpec_Ai_RegexRule_Regex
	Kind          isPolicySpec_Ai_RegexRule_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_RegexRule) Reset() {
	*x = PolicySpec_Ai_RegexRule{}
	mi := &file_resource_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_RegexRule) ProtoMessage() {}

func (x *PolicySpec_Ai_RegexRule) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[63]
	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 PolicySpec_Ai_RegexRule.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_RegexRule) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 3}
}

func (x *PolicySpec_Ai_RegexRule) GetKind() isPolicySpec_Ai_RegexRule_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *PolicySpec_Ai_RegexRule) GetBuiltin() PolicySpec_Ai_BuiltinRegexRule {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Ai_RegexRule_Builtin); ok {
			return x.Builtin
		}
	}
	return PolicySpec_Ai_BUILTIN_UNSPECIFIED
}

func (x *PolicySpec_Ai_RegexRule) GetRegex() *PolicySpec_Ai_NamedRegex {
	if x != nil {
		if x, ok := x.Kind.(*PolicySpec_Ai_RegexRule_Regex); ok {
			return x.Regex
		}
	}
	return nil
}

type isPolicySpec_Ai_RegexRule_Kind interface {
	isPolicySpec_Ai_RegexRule_Kind()
}

type PolicySpec_Ai_RegexRule_Builtin struct {
	Builtin PolicySpec_Ai_BuiltinRegexRule `protobuf:"varint,1,opt,name=builtin,proto3,enum=agentgateway.dev.resource.PolicySpec_Ai_BuiltinRegexRule,oneof"`
}

type PolicySpec_Ai_RegexRule_Regex struct {
	Regex *PolicySpec_Ai_NamedRegex `protobuf:"bytes,2,opt,name=regex,proto3,oneof"`
}

func (*PolicySpec_Ai_RegexRule_Builtin) isPolicySpec_Ai_RegexRule_Kind() {}

func (*PolicySpec_Ai_RegexRule_Regex) isPolicySpec_Ai_RegexRule_Kind() {}

type PolicySpec_Ai_Action struct {
	state protoimpl.MessageState   `protogen:"open.v1"`
	Kind  PolicySpec_Ai_ActionKind `protobuf:"varint,1,opt,name=kind,proto3,enum=agentgateway.dev.resource.PolicySpec_Ai_ActionKind" json:"kind,omitempty"`
	// Only used when kind == REJECT
	RejectResponse *PolicySpec_Ai_RequestRejection `protobuf:"bytes,2,opt,name=reject_response,json=rejectResponse,proto3" json:"reject_response,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *PolicySpec_Ai_Action) Reset() {
	*x = PolicySpec_Ai_Action{}
	mi := &file_resource_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_Action) ProtoMessage() {}

func (x *PolicySpec_Ai_Action) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[64]
	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 PolicySpec_Ai_Action.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_Action) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 4}
}

func (x *PolicySpec_Ai_Action) GetKind() PolicySpec_Ai_ActionKind {
	if x != nil {
		return x.Kind
	}
	return PolicySpec_Ai_ACTION_UNSPECIFIED
}

func (x *PolicySpec_Ai_Action) GetRejectResponse() *PolicySpec_Ai_RequestRejection {
	if x != nil {
		return x.RejectResponse
	}
	return nil
}

type PolicySpec_Ai_RegexRules struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Action        *PolicySpec_Ai_Action      `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"`
	Rules         []*PolicySpec_Ai_RegexRule `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_RegexRules) Reset() {
	*x = PolicySpec_Ai_RegexRules{}
	mi := &file_resource_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_RegexRules) ProtoMessage() {}

func (x *PolicySpec_Ai_RegexRules) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[65]
	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 PolicySpec_Ai_RegexRules.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_RegexRules) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 5}
}

func (x *PolicySpec_Ai_RegexRules) GetAction() *PolicySpec_Ai_Action {
	if x != nil {
		return x.Action
	}
	return nil
}

func (x *PolicySpec_Ai_RegexRules) GetRules() []*PolicySpec_Ai_RegexRule {
	if x != nil {
		return x.Rules
	}
	return nil
}

type PolicySpec_Ai_Webhook struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	Host                 string                 `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
	Port                 uint32                 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
	ForwardHeaderMatches []*HeaderMatch         `protobuf:"bytes,3,rep,name=forward_header_matches,json=forwardHeaderMatches,proto3" json:"forward_header_matches,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *PolicySpec_Ai_Webhook) Reset() {
	*x = PolicySpec_Ai_Webhook{}
	mi := &file_resource_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_Webhook) ProtoMessage() {}

func (x *PolicySpec_Ai_Webhook) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[66]
	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 PolicySpec_Ai_Webhook.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_Webhook) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 6}
}

func (x *PolicySpec_Ai_Webhook) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *PolicySpec_Ai_Webhook) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *PolicySpec_Ai_Webhook) GetForwardHeaderMatches() []*HeaderMatch {
	if x != nil {
		return x.ForwardHeaderMatches
	}
	return nil
}

type PolicySpec_Ai_Moderation struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Model to use. Defaults to `omni-moderation-latest`
	Model         *wrappers.StringValue `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
	Auth          *BackendAuthPolicy    `protobuf:"bytes,2,opt,name=auth,proto3" json:"auth,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_Moderation) Reset() {
	*x = PolicySpec_Ai_Moderation{}
	mi := &file_resource_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_Moderation) ProtoMessage() {}

func (x *PolicySpec_Ai_Moderation) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[67]
	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 PolicySpec_Ai_Moderation.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_Moderation) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 7}
}

func (x *PolicySpec_Ai_Moderation) GetModel() *wrappers.StringValue {
	if x != nil {
		return x.Model
	}
	return nil
}

func (x *PolicySpec_Ai_Moderation) GetAuth() *BackendAuthPolicy {
	if x != nil {
		return x.Auth
	}
	return nil
}

// Response sent when rejecting a request
type PolicySpec_Ai_RequestRejection struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Body          []byte                 `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
	Status        uint32                 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_RequestRejection) Reset() {
	*x = PolicySpec_Ai_RequestRejection{}
	mi := &file_resource_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_RequestRejection) ProtoMessage() {}

func (x *PolicySpec_Ai_RequestRejection) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[68]
	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 PolicySpec_Ai_RequestRejection.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_RequestRejection) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 8}
}

func (x *PolicySpec_Ai_RequestRejection) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *PolicySpec_Ai_RequestRejection) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

// Configuration for guarding/processing LLM responses
type PolicySpec_Ai_ResponseGuard struct {
	state         protoimpl.MessageState    `protogen:"open.v1"`
	Regex         *PolicySpec_Ai_RegexRules `protobuf:"bytes,1,opt,name=regex,proto3" json:"regex,omitempty"`
	Webhook       *PolicySpec_Ai_Webhook    `protobuf:"bytes,2,opt,name=webhook,proto3" json:"webhook,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_ResponseGuard) Reset() {
	*x = PolicySpec_Ai_ResponseGuard{}
	mi := &file_resource_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_ResponseGuard) ProtoMessage() {}

func (x *PolicySpec_Ai_ResponseGuard) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[69]
	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 PolicySpec_Ai_ResponseGuard.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_ResponseGuard) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 9}
}

func (x *PolicySpec_Ai_ResponseGuard) GetRegex() *PolicySpec_Ai_RegexRules {
	if x != nil {
		return x.Regex
	}
	return nil
}

func (x *PolicySpec_Ai_ResponseGuard) GetWebhook() *PolicySpec_Ai_Webhook {
	if x != nil {
		return x.Webhook
	}
	return nil
}

// Configuration for guarding/processing prompts
type PolicySpec_Ai_RequestGuard struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Response to send when request is rejected
	Rejection        *PolicySpec_Ai_RequestRejection `protobuf:"bytes,1,opt,name=rejection,proto3" json:"rejection,omitempty"`
	Regex            *PolicySpec_Ai_RegexRules       `protobuf:"bytes,2,opt,name=regex,proto3" json:"regex,omitempty"`
	Webhook          *PolicySpec_Ai_Webhook          `protobuf:"bytes,3,opt,name=webhook,proto3" json:"webhook,omitempty"`
	OpenaiModeration *PolicySpec_Ai_Moderation       `protobuf:"bytes,4,opt,name=openai_moderation,json=openaiModeration,proto3" json:"openai_moderation,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *PolicySpec_Ai_RequestGuard) Reset() {
	*x = PolicySpec_Ai_RequestGuard{}
	mi := &file_resource_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_RequestGuard) ProtoMessage() {}

func (x *PolicySpec_Ai_RequestGuard) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[70]
	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 PolicySpec_Ai_RequestGuard.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_RequestGuard) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 10}
}

func (x *PolicySpec_Ai_RequestGuard) GetRejection() *PolicySpec_Ai_RequestRejection {
	if x != nil {
		return x.Rejection
	}
	return nil
}

func (x *PolicySpec_Ai_RequestGuard) GetRegex() *PolicySpec_Ai_RegexRules {
	if x != nil {
		return x.Regex
	}
	return nil
}

func (x *PolicySpec_Ai_RequestGuard) GetWebhook() *PolicySpec_Ai_Webhook {
	if x != nil {
		return x.Webhook
	}
	return nil
}

func (x *PolicySpec_Ai_RequestGuard) GetOpenaiModeration() *PolicySpec_Ai_Moderation {
	if x != nil {
		return x.OpenaiModeration
	}
	return nil
}

type PolicySpec_Ai_PromptGuard struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Guards applied to client requests before they reach the LLM
	Request *PolicySpec_Ai_RequestGuard `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
	// Guards applied to LLM responses before they reach the client
	Response      *PolicySpec_Ai_ResponseGuard `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_Ai_PromptGuard) Reset() {
	*x = PolicySpec_Ai_PromptGuard{}
	mi := &file_resource_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_Ai_PromptGuard) ProtoMessage() {}

func (x *PolicySpec_Ai_PromptGuard) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[71]
	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 PolicySpec_Ai_PromptGuard.ProtoReflect.Descriptor instead.
func (*PolicySpec_Ai_PromptGuard) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 2, 11}
}

func (x *PolicySpec_Ai_PromptGuard) GetRequest() *PolicySpec_Ai_RequestGuard {
	if x != nil {
		return x.Request
	}
	return nil
}

func (x *PolicySpec_Ai_PromptGuard) GetResponse() *PolicySpec_Ai_ResponseGuard {
	if x != nil {
		return x.Response
	}
	return nil
}

type PolicySpec_ExternalAuth_BodyOptions struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	MaxRequestBytes     uint32                 `protobuf:"varint,1,opt,name=max_request_bytes,json=maxRequestBytes,proto3" json:"max_request_bytes,omitempty"`
	AllowPartialMessage bool                   `protobuf:"varint,2,opt,name=allow_partial_message,json=allowPartialMessage,proto3" json:"allow_partial_message,omitempty"`
	PackAsBytes         bool                   `protobuf:"varint,3,opt,name=pack_as_bytes,json=packAsBytes,proto3" json:"pack_as_bytes,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *PolicySpec_ExternalAuth_BodyOptions) Reset() {
	*x = PolicySpec_ExternalAuth_BodyOptions{}
	mi := &file_resource_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_ExternalAuth_BodyOptions) ProtoMessage() {}

func (x *PolicySpec_ExternalAuth_BodyOptions) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[75]
	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 PolicySpec_ExternalAuth_BodyOptions.ProtoReflect.Descriptor instead.
func (*PolicySpec_ExternalAuth_BodyOptions) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 3, 0}
}

func (x *PolicySpec_ExternalAuth_BodyOptions) GetMaxRequestBytes() uint32 {
	if x != nil {
		return x.MaxRequestBytes
	}
	return 0
}

func (x *PolicySpec_ExternalAuth_BodyOptions) GetAllowPartialMessage() bool {
	if x != nil {
		return x.AllowPartialMessage
	}
	return false
}

func (x *PolicySpec_ExternalAuth_BodyOptions) GetPackAsBytes() bool {
	if x != nil {
		return x.PackAsBytes
	}
	return false
}

type PolicySpec_TransformationPolicy_Transform struct {
	state         protoimpl.MessageState             `protogen:"open.v1"`
	Set           []*PolicySpec_HeaderTransformation `protobuf:"bytes,1,rep,name=set,proto3" json:"set,omitempty"`
	Add           []*PolicySpec_HeaderTransformation `protobuf:"bytes,2,rep,name=add,proto3" json:"add,omitempty"`
	Remove        []string                           `protobuf:"bytes,3,rep,name=remove,proto3" json:"remove,omitempty"`
	Body          *PolicySpec_BodyTransformation     `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicySpec_TransformationPolicy_Transform) Reset() {
	*x = PolicySpec_TransformationPolicy_Transform{}
	mi := &file_resource_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicySpec_TransformationPolicy_Transform) ProtoMessage() {}

func (x *PolicySpec_TransformationPolicy_Transform) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[77]
	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 PolicySpec_TransformationPolicy_Transform.ProtoReflect.Descriptor instead.
func (*PolicySpec_TransformationPolicy_Transform) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{36, 9, 0}
}

func (x *PolicySpec_TransformationPolicy_Transform) GetSet() []*PolicySpec_HeaderTransformation {
	if x != nil {
		return x.Set
	}
	return nil
}

func (x *PolicySpec_TransformationPolicy_Transform) GetAdd() []*PolicySpec_HeaderTransformation {
	if x != nil {
		return x.Add
	}
	return nil
}

func (x *PolicySpec_TransformationPolicy_Transform) GetRemove() []string {
	if x != nil {
		return x.Remove
	}
	return nil
}

func (x *PolicySpec_TransformationPolicy_Transform) GetBody() *PolicySpec_BodyTransformation {
	if x != nil {
		return x.Body
	}
	return nil
}

type AIBackend_HostOverride struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Host          string                 `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
	Port          int32                  `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIBackend_HostOverride) Reset() {
	*x = AIBackend_HostOverride{}
	mi := &file_resource_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_HostOverride) ProtoMessage() {}

func (x *AIBackend_HostOverride) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[78]
	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 AIBackend_HostOverride.ProtoReflect.Descriptor instead.
func (*AIBackend_HostOverride) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 0}
}

func (x *AIBackend_HostOverride) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *AIBackend_HostOverride) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

type AIBackend_OpenAI struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Model         *wrappers.StringValue  `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIBackend_OpenAI) Reset() {
	*x = AIBackend_OpenAI{}
	mi := &file_resource_proto_msgTypes[79]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_OpenAI) ProtoMessage() {}

func (x *AIBackend_OpenAI) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[79]
	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 AIBackend_OpenAI.ProtoReflect.Descriptor instead.
func (*AIBackend_OpenAI) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 1}
}

func (x *AIBackend_OpenAI) GetModel() *wrappers.StringValue {
	if x != nil {
		return x.Model
	}
	return nil
}

type AIBackend_Gemini struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Model         *wrappers.StringValue  `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIBackend_Gemini) Reset() {
	*x = AIBackend_Gemini{}
	mi := &file_resource_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_Gemini) ProtoMessage() {}

func (x *AIBackend_Gemini) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[80]
	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 AIBackend_Gemini.ProtoReflect.Descriptor instead.
func (*AIBackend_Gemini) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 2}
}

func (x *AIBackend_Gemini) GetModel() *wrappers.StringValue {
	if x != nil {
		return x.Model
	}
	return nil
}

type AIBackend_Vertex struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Model         *wrappers.StringValue  `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
	Region        string                 `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"`
	ProjectId     string                 `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIBackend_Vertex) Reset() {
	*x = AIBackend_Vertex{}
	mi := &file_resource_proto_msgTypes[81]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_Vertex) ProtoMessage() {}

func (x *AIBackend_Vertex) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[81]
	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 AIBackend_Vertex.ProtoReflect.Descriptor instead.
func (*AIBackend_Vertex) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 3}
}

func (x *AIBackend_Vertex) GetModel() *wrappers.StringValue {
	if x != nil {
		return x.Model
	}
	return nil
}

func (x *AIBackend_Vertex) GetRegion() string {
	if x != nil {
		return x.Region
	}
	return ""
}

func (x *AIBackend_Vertex) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type AIBackend_Anthropic struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Model         *wrappers.StringValue  `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIBackend_Anthropic) Reset() {
	*x = AIBackend_Anthropic{}
	mi := &file_resource_proto_msgTypes[82]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_Anthropic) ProtoMessage() {}

func (x *AIBackend_Anthropic) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[82]
	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 AIBackend_Anthropic.ProtoReflect.Descriptor instead.
func (*AIBackend_Anthropic) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 4}
}

func (x *AIBackend_Anthropic) GetModel() *wrappers.StringValue {
	if x != nil {
		return x.Model
	}
	return nil
}

type AIBackend_Bedrock struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	Model               *wrappers.StringValue  `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
	Region              string                 `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"`
	GuardrailIdentifier *wrappers.StringValue  `protobuf:"bytes,3,opt,name=guardrail_identifier,json=guardrailIdentifier,proto3" json:"guardrail_identifier,omitempty"`
	GuardrailVersion    *wrappers.StringValue  `protobuf:"bytes,4,opt,name=guardrail_version,json=guardrailVersion,proto3" json:"guardrail_version,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *AIBackend_Bedrock) Reset() {
	*x = AIBackend_Bedrock{}
	mi := &file_resource_proto_msgTypes[83]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_Bedrock) ProtoMessage() {}

func (x *AIBackend_Bedrock) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[83]
	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 AIBackend_Bedrock.ProtoReflect.Descriptor instead.
func (*AIBackend_Bedrock) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 5}
}

func (x *AIBackend_Bedrock) GetModel() *wrappers.StringValue {
	if x != nil {
		return x.Model
	}
	return nil
}

func (x *AIBackend_Bedrock) GetRegion() string {
	if x != nil {
		return x.Region
	}
	return ""
}

func (x *AIBackend_Bedrock) GetGuardrailIdentifier() *wrappers.StringValue {
	if x != nil {
		return x.GuardrailIdentifier
	}
	return nil
}

func (x *AIBackend_Bedrock) GetGuardrailVersion() *wrappers.StringValue {
	if x != nil {
		return x.GuardrailVersion
	}
	return nil
}

type AIBackend_Provider struct {
	state        protoimpl.MessageState  `protogen:"open.v1"`
	Name         string                  `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	HostOverride *AIBackend_HostOverride `protobuf:"bytes,2,opt,name=host_override,json=hostOverride,proto3" json:"host_override,omitempty"`
	PathOverride *wrappers.StringValue   `protobuf:"bytes,3,opt,name=path_override,json=pathOverride,proto3" json:"path_override,omitempty"`
	// Types that are valid to be assigned to Provider:
	//
	//	*AIBackend_Provider_Openai
	//	*AIBackend_Provider_Gemini
	//	*AIBackend_Provider_Vertex
	//	*AIBackend_Provider_Anthropic
	//	*AIBackend_Provider_Bedrock
	Provider      isAIBackend_Provider_Provider `protobuf_oneof:"provider"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIBackend_Provider) Reset() {
	*x = AIBackend_Provider{}
	mi := &file_resource_proto_msgTypes[84]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_Provider) ProtoMessage() {}

func (x *AIBackend_Provider) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[84]
	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 AIBackend_Provider.ProtoReflect.Descriptor instead.
func (*AIBackend_Provider) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 6}
}

func (x *AIBackend_Provider) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *AIBackend_Provider) GetHostOverride() *AIBackend_HostOverride {
	if x != nil {
		return x.HostOverride
	}
	return nil
}

func (x *AIBackend_Provider) GetPathOverride() *wrappers.StringValue {
	if x != nil {
		return x.PathOverride
	}
	return nil
}

func (x *AIBackend_Provider) GetProvider() isAIBackend_Provider_Provider {
	if x != nil {
		return x.Provider
	}
	return nil
}

func (x *AIBackend_Provider) GetOpenai() *AIBackend_OpenAI {
	if x != nil {
		if x, ok := x.Provider.(*AIBackend_Provider_Openai); ok {
			return x.Openai
		}
	}
	return nil
}

func (x *AIBackend_Provider) GetGemini() *AIBackend_Gemini {
	if x != nil {
		if x, ok := x.Provider.(*AIBackend_Provider_Gemini); ok {
			return x.Gemini
		}
	}
	return nil
}

func (x *AIBackend_Provider) GetVertex() *AIBackend_Vertex {
	if x != nil {
		if x, ok := x.Provider.(*AIBackend_Provider_Vertex); ok {
			return x.Vertex
		}
	}
	return nil
}

func (x *AIBackend_Provider) GetAnthropic() *AIBackend_Anthropic {
	if x != nil {
		if x, ok := x.Provider.(*AIBackend_Provider_Anthropic); ok {
			return x.Anthropic
		}
	}
	return nil
}

func (x *AIBackend_Provider) GetBedrock() *AIBackend_Bedrock {
	if x != nil {
		if x, ok := x.Provider.(*AIBackend_Provider_Bedrock); ok {
			return x.Bedrock
		}
	}
	return nil
}

type isAIBackend_Provider_Provider interface {
	isAIBackend_Provider_Provider()
}

type AIBackend_Provider_Openai struct {
	Openai *AIBackend_OpenAI `protobuf:"bytes,4,opt,name=openai,proto3,oneof"`
}

type AIBackend_Provider_Gemini struct {
	Gemini *AIBackend_Gemini `protobuf:"bytes,5,opt,name=gemini,proto3,oneof"`
}

type AIBackend_Provider_Vertex struct {
	Vertex *AIBackend_Vertex `protobuf:"bytes,6,opt,name=vertex,proto3,oneof"`
}

type AIBackend_Provider_Anthropic struct {
	Anthropic *AIBackend_Anthropic `protobuf:"bytes,7,opt,name=anthropic,proto3,oneof"`
}

type AIBackend_Provider_Bedrock struct {
	Bedrock *AIBackend_Bedrock `protobuf:"bytes,8,opt,name=bedrock,proto3,oneof"`
}

func (*AIBackend_Provider_Openai) isAIBackend_Provider_Provider() {}

func (*AIBackend_Provider_Gemini) isAIBackend_Provider_Provider() {}

func (*AIBackend_Provider_Vertex) isAIBackend_Provider_Provider() {}

func (*AIBackend_Provider_Anthropic) isAIBackend_Provider_Provider() {}

func (*AIBackend_Provider_Bedrock) isAIBackend_Provider_Provider() {}

type AIBackend_ProviderGroup struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Providers     []*AIBackend_Provider  `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIBackend_ProviderGroup) Reset() {
	*x = AIBackend_ProviderGroup{}
	mi := &file_resource_proto_msgTypes[85]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AIBackend_ProviderGroup) ProtoMessage() {}

func (x *AIBackend_ProviderGroup) ProtoReflect() protoreflect.Message {
	mi := &file_resource_proto_msgTypes[85]
	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 AIBackend_ProviderGroup.ProtoReflect.Descriptor instead.
func (*AIBackend_ProviderGroup) Descriptor() ([]byte, []int) {
	return file_resource_proto_rawDescGZIP(), []int{40, 7}
}

func (x *AIBackend_ProviderGroup) GetProviders() []*AIBackend_Provider {
	if x != nil {
		return x.Providers
	}
	return nil
}

var File_resource_proto protoreflect.FileDescriptor

const file_resource_proto_rawDesc = "" +
	"\n" +
	"\x0eresource.proto\x12\x19agentgateway.dev.resource\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x87\x03\n" +
	"\bResource\x125\n" +
	"\x04bind\x18\x01 \x01(\v2\x1f.agentgateway.dev.resource.BindH\x00R\x04bind\x12A\n" +
	"\blistener\x18\x02 \x01(\v2#.agentgateway.dev.resource.ListenerH\x00R\blistener\x128\n" +
	"\x05route\x18\x03 \x01(\v2 .agentgateway.dev.resource.RouteH\x00R\x05route\x12>\n" +
	"\abackend\x18\x04 \x01(\v2\".agentgateway.dev.resource.BackendH\x00R\abackend\x12;\n" +
	"\x06policy\x18\x05 \x01(\v2!.agentgateway.dev.resource.PolicyH\x00R\x06policy\x12B\n" +
	"\ttcp_route\x18\x06 \x01(\v2#.agentgateway.dev.resource.TCPRouteH\x00R\btcpRouteB\x06\n" +
	"\x04kind\",\n" +
	"\x04Bind\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x12\n" +
	"\x04port\x18\x02 \x01(\rR\x04port\"\x83\x02\n" +
	"\bListener\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n" +
	"\bbind_key\x18\x03 \x01(\tR\abindKey\x12!\n" +
	"\fgateway_name\x18\x04 \x01(\tR\vgatewayName\x12\x1a\n" +
	"\bhostname\x18\x05 \x01(\tR\bhostname\x12?\n" +
	"\bprotocol\x18\x06 \x01(\x0e2#.agentgateway.dev.resource.ProtocolR\bprotocol\x126\n" +
	"\x03tls\x18\a \x01(\v2$.agentgateway.dev.resource.TLSConfigR\x03tls\"@\n" +
	"\tTLSConfig\x12\x12\n" +
	"\x04cert\x18\x01 \x01(\fR\x04cert\x12\x1f\n" +
	"\vprivate_key\x18\x02 \x01(\fR\n" +
	"privateKey\"\xff\x03\n" +
	"\x05Route\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12!\n" +
	"\flistener_key\x18\x02 \x01(\tR\vlistenerKey\x12\x1b\n" +
	"\trule_name\x18\x03 \x01(\tR\bruleName\x12\x1d\n" +
	"\n" +
	"route_name\x18\x04 \x01(\tR\trouteName\x12\x1c\n" +
	"\thostnames\x18\x05 \x03(\tR\thostnames\x12?\n" +
	"\amatches\x18\x06 \x03(\v2%.agentgateway.dev.resource.RouteMatchR\amatches\x12@\n" +
	"\afilters\x18\a \x03(\v2&.agentgateway.dev.resource.RouteFilterR\afilters\x12C\n" +
	"\bbackends\x18\b \x03(\v2'.agentgateway.dev.resource.RouteBackendR\bbackends\x12O\n" +
	"\x0etraffic_policy\x18\t \x01(\v2(.agentgateway.dev.resource.TrafficPolicyR\rtrafficPolicy\x12N\n" +
	"\x0finline_policies\x18\n" +
	" \x03(\v2%.agentgateway.dev.resource.PolicySpecR\x0einlinePolicies\"\xde\x01\n" +
	"\bTCPRoute\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12!\n" +
	"\flistener_key\x18\x02 \x01(\tR\vlistenerKey\x12\x1b\n" +
	"\trule_name\x18\x03 \x01(\tR\bruleName\x12\x1d\n" +
	"\n" +
	"route_name\x18\x04 \x01(\tR\trouteName\x12\x1c\n" +
	"\thostnames\x18\x05 \x03(\tR\thostnames\x12C\n" +
	"\bbackends\x18\x06 \x03(\v2'.agentgateway.dev.resource.RouteBackendR\bbackends\"\xde\x01\n" +
	"\rTrafficPolicy\x12Q\n" +
	"\x17backend_request_timeout\x18\x01 \x01(\v2\x19.google.protobuf.DurationR\x15backendRequestTimeout\x12B\n" +
	"\x0frequest_timeout\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\x0erequestTimeout\x126\n" +
	"\x05retry\x18\x03 \x01(\v2 .agentgateway.dev.resource.RetryR\x05retry\"\x86\x01\n" +
	"\x05Retry\x12,\n" +
	"\x12retry_status_codes\x18\x01 \x03(\x05R\x10retryStatusCodes\x12\x1a\n" +
	"\battempts\x18\x02 \x01(\x05R\battempts\x123\n" +
	"\abackoff\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\abackoff\"\xbd\x02\n" +
	"\x11BackendAuthPolicy\x12J\n" +
	"\vpassthrough\x18\x01 \x01(\v2&.agentgateway.dev.resource.PassthroughH\x00R\vpassthrough\x122\n" +
	"\x03key\x18\x02 \x01(\v2\x1e.agentgateway.dev.resource.KeyH\x00R\x03key\x122\n" +
	"\x03gcp\x18\x03 \x01(\v2\x1e.agentgateway.dev.resource.GcpH\x00R\x03gcp\x122\n" +
	"\x03aws\x18\x04 \x01(\v2\x1e.agentgateway.dev.resource.AwsH\x00R\x03aws\x128\n" +
	"\x05azure\x18\x05 \x01(\v2 .agentgateway.dev.resource.AzureH\x00R\x05azureB\x06\n" +
	"\x04kind\"\r\n" +
	"\vPassthrough\"\x1d\n" +
	"\x03Key\x12\x16\n" +
	"\x06secret\x18\x01 \x01(\tR\x06secret\"\x05\n" +
	"\x03Gcp\"\xac\x01\n" +
	"\x03Aws\x12W\n" +
	"\x0fexplicit_config\x18\x01 \x01(\v2,.agentgateway.dev.resource.AwsExplicitConfigH\x00R\x0eexplicitConfig\x12D\n" +
	"\bimplicit\x18\x02 \x01(\v2&.agentgateway.dev.resource.AwsImplicitH\x00R\bimplicitB\x06\n" +
	"\x04kind\"\xce\x01\n" +
	"\x05Azure\x12Y\n" +
	"\x0fexplicit_config\x18\x01 \x01(\v2..agentgateway.dev.resource.AzureExplicitConfigH\x00R\x0eexplicitConfig\x12b\n" +
	"\x12developer_implicit\x18\x02 \x01(\v21.agentgateway.dev.resource.AzureDeveloperImplicitH\x00R\x11developerImplicitB\x06\n" +
	"\x04kind\"\xb7\x01\n" +
	"\x11AwsExplicitConfig\x12\"\n" +
	"\raccess_key_id\x18\x01 \x01(\tR\vaccessKeyId\x12*\n" +
	"\x11secret_access_key\x18\x02 \x01(\tR\x0fsecretAccessKey\x12\x16\n" +
	"\x06region\x18\x03 \x01(\tR\x06region\x12(\n" +
	"\rsession_token\x18\x04 \x01(\tH\x00R\fsessionToken\x88\x01\x01B\x10\n" +
	"\x0e_session_token\"\r\n" +
	"\vAwsImplicit\"\xfc\x02\n" +
	"\x13AzureExplicitConfig\x12S\n" +
	"\rclient_secret\x18\x01 \x01(\v2,.agentgateway.dev.resource.AzureClientSecretH\x00R\fclientSecret\x12{\n" +
	"\x1bmanaged_identity_credential\x18\x02 \x01(\v29.agentgateway.dev.resource.AzureManagedIdentityCredentialH\x00R\x19managedIdentityCredential\x12~\n" +
	"\x1cworkload_identity_credential\x18\x03 \x01(\v2:.agentgateway.dev.resource.AzureWorkloadIdentityCredentialH\x00R\x1aworkloadIdentityCredentialB\x13\n" +
	"\x11credential_source\"r\n" +
	"\x11AzureClientSecret\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x1b\n" +
	"\tclient_id\x18\x02 \x01(\tR\bclientId\x12#\n" +
	"\rclient_secret\x18\x03 \x01(\tR\fclientSecret\"\xc6\x02\n" +
	"\x1eAzureManagedIdentityCredential\x12\x89\x01\n" +
	"\x16user_assigned_identity\x18\x01 \x01(\v2N.agentgateway.dev.resource.AzureManagedIdentityCredential.UserAssignedIdentityH\x00R\x14userAssignedIdentity\x88\x01\x01\x1a}\n" +
	"\x14UserAssignedIdentity\x12\x1d\n" +
	"\tclient_id\x18\x01 \x01(\tH\x00R\bclientId\x12\x1d\n" +
	"\tobject_id\x18\x02 \x01(\tH\x00R\bobjectId\x12!\n" +
	"\vresource_id\x18\x03 \x01(\tH\x00R\n" +
	"resourceIdB\x04\n" +
	"\x02idB\x19\n" +
	"\x17_user_assigned_identity\"!\n" +
	"\x1fAzureWorkloadIdentityCredential\"\x18\n" +
	"\x16AzureDeveloperImplicit\"\x92\x02\n" +
	"\n" +
	"RouteMatch\x128\n" +
	"\x04path\x18\x01 \x01(\v2$.agentgateway.dev.resource.PathMatchR\x04path\x12@\n" +
	"\aheaders\x18\x02 \x03(\v2&.agentgateway.dev.resource.HeaderMatchR\aheaders\x12>\n" +
	"\x06method\x18\x03 \x01(\v2&.agentgateway.dev.resource.MethodMatchR\x06method\x12H\n" +
	"\fquery_params\x18\x04 \x03(\v2%.agentgateway.dev.resource.QueryMatchR\vqueryParams\"f\n" +
	"\tPathMatch\x12\x16\n" +
	"\x05exact\x18\x01 \x01(\tH\x00R\x05exact\x12!\n" +
	"\vpath_prefix\x18\x02 \x01(\tH\x00R\n" +
	"pathPrefix\x12\x16\n" +
	"\x05regex\x18\x03 \x01(\tH\x00R\x05regexB\x06\n" +
	"\x04kind\"Y\n" +
	"\n" +
	"QueryMatch\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
	"\x05exact\x18\x02 \x01(\tH\x00R\x05exact\x12\x16\n" +
	"\x05regex\x18\x03 \x01(\tH\x00R\x05regexB\a\n" +
	"\x05value\"#\n" +
	"\vMethodMatch\x12\x14\n" +
	"\x05exact\x18\x01 \x01(\tR\x05exact\"Z\n" +
	"\vHeaderMatch\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
	"\x05exact\x18\x02 \x01(\tH\x00R\x05exact\x12\x16\n" +
	"\x05regex\x18\x03 \x01(\tH\x00R\x05regexB\a\n" +
	"\x05value\"\xe4\x04\n" +
	"\vRouteFilter\x12c\n" +
	"\x17request_header_modifier\x18\x01 \x01(\v2).agentgateway.dev.resource.HeaderModifierH\x00R\x15requestHeaderModifier\x12e\n" +
	"\x18response_header_modifier\x18\x02 \x01(\v2).agentgateway.dev.resource.HeaderModifierH\x00R\x16responseHeaderModifier\x12W\n" +
	"\x10request_redirect\x18\x03 \x01(\v2*.agentgateway.dev.resource.RequestRedirectH\x00R\x0frequestRedirect\x12H\n" +
	"\vurl_rewrite\x18\x04 \x01(\v2%.agentgateway.dev.resource.UrlRewriteH\x00R\n" +
	"urlRewrite\x12Q\n" +
	"\x0erequest_mirror\x18\x05 \x01(\v2(.agentgateway.dev.resource.RequestMirrorH\x00R\rrequestMirror\x12T\n" +
	"\x0fdirect_response\x18\x06 \x01(\v2).agentgateway.dev.resource.DirectResponseH\x00R\x0edirectResponse\x125\n" +
	"\x04cors\x18\a \x01(\v2\x1f.agentgateway.dev.resource.CORSH\x00R\x04corsB\x06\n" +
	"\x04kind\"\xfd\x01\n" +
	"\x04CORS\x12+\n" +
	"\x11allow_credentials\x18\x01 \x01(\bR\x10allowCredentials\x12#\n" +
	"\rallow_headers\x18\x02 \x03(\tR\fallowHeaders\x12#\n" +
	"\rallow_methods\x18\x03 \x03(\tR\fallowMethods\x12#\n" +
	"\rallow_origins\x18\x04 \x03(\tR\fallowOrigins\x12%\n" +
	"\x0eexpose_headers\x18\x05 \x03(\tR\rexposeHeaders\x122\n" +
	"\amax_age\x18\x06 \x01(\v2\x19.google.protobuf.DurationR\x06maxAge\"<\n" +
	"\x0eDirectResponse\x12\x16\n" +
	"\x06status\x18\x01 \x01(\rR\x06status\x12\x12\n" +
	"\x04body\x18\x02 \x01(\fR\x04body\"\x92\x01\n" +
	"\x0eHeaderModifier\x123\n" +
	"\x03add\x18\x01 \x03(\v2!.agentgateway.dev.resource.HeaderR\x03add\x123\n" +
	"\x03set\x18\x02 \x03(\v2!.agentgateway.dev.resource.HeaderR\x03set\x12\x16\n" +
	"\x06remove\x18\x03 \x03(\tR\x06remove\"v\n" +
	"\rRequestMirror\x12E\n" +
	"\abackend\x18\x01 \x01(\v2+.agentgateway.dev.resource.BackendReferenceR\abackend\x12\x1e\n" +
	"\n" +
	"percentage\x18\x02 \x01(\x01R\n" +
	"percentage\"\xa1\x01\n" +
	"\x0fRequestRedirect\x12\x16\n" +
	"\x06scheme\x18\x01 \x01(\tR\x06scheme\x12\x12\n" +
	"\x04host\x18\x02 \x01(\tR\x04host\x12\x14\n" +
	"\x04full\x18\x03 \x01(\tH\x00R\x04full\x12\x18\n" +
	"\x06prefix\x18\x04 \x01(\tH\x00R\x06prefix\x12\x12\n" +
	"\x04port\x18\x05 \x01(\rR\x04port\x12\x16\n" +
	"\x06status\x18\x06 \x01(\rR\x06statusB\x06\n" +
	"\x04path\"X\n" +
	"\n" +
	"UrlRewrite\x12\x12\n" +
	"\x04host\x18\x01 \x01(\tR\x04host\x12\x14\n" +
	"\x04full\x18\x02 \x01(\tH\x00R\x04full\x12\x18\n" +
	"\x06prefix\x18\x03 \x01(\tH\x00R\x06prefixB\x06\n" +
	"\x04path\"2\n" +
	"\x06Header\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value\"\xaf\x01\n" +
	"\fRouteBackend\x12E\n" +
	"\abackend\x18\x01 \x01(\v2+.agentgateway.dev.resource.BackendReferenceR\abackend\x12\x16\n" +
	"\x06weight\x18\x02 \x01(\x05R\x06weight\x12@\n" +
	"\afilters\x18\x04 \x03(\v2&.agentgateway.dev.resource.RouteFilterR\afilters\"\xe4\x01\n" +
	"\fPolicyTarget\x12\x1a\n" +
	"\agateway\x18\x01 \x01(\tH\x00R\agateway\x12\x1c\n" +
	"\blistener\x18\x02 \x01(\tH\x00R\blistener\x12\x16\n" +
	"\x05route\x18\x03 \x01(\tH\x00R\x05route\x12\x1f\n" +
	"\n" +
	"route_rule\x18\x04 \x01(\tH\x00R\trouteRule\x12\x1a\n" +
	"\abackend\x18\x05 \x01(\tH\x00R\abackend\x12\x1a\n" +
	"\aservice\x18\x06 \x01(\tH\x00R\aservice\x12!\n" +
	"\vsub_backend\x18\a \x01(\tH\x00R\n" +
	"subBackendB\x06\n" +
	"\x04kind\"\xac5\n" +
	"\n" +
	"PolicySpec\x12`\n" +
	"\x10local_rate_limit\x18\x01 \x01(\v24.agentgateway.dev.resource.PolicySpec.LocalRateLimitH\x00R\x0elocalRateLimit\x12Q\n" +
	"\text_authz\x18\x02 \x01(\v22.agentgateway.dev.resource.PolicySpec.ExternalAuthH\x00R\bextAuthz\x12=\n" +
	"\x03a2a\x18\x03 \x01(\v2).agentgateway.dev.resource.PolicySpec.A2aH\x00R\x03a2a\x12e\n" +
	"\x11inference_routing\x18\x04 \x01(\v26.agentgateway.dev.resource.PolicySpec.InferenceRoutingH\x00R\x10inferenceRouting\x12S\n" +
	"\vbackend_tls\x18\x05 \x01(\v20.agentgateway.dev.resource.PolicySpec.BackendTLSH\x00R\n" +
	"backendTls\x12B\n" +
	"\x04auth\x18\x06 \x01(\v2,.agentgateway.dev.resource.BackendAuthPolicyH\x00R\x04auth\x12R\n" +
	"\rauthorization\x18\a \x01(\v2*.agentgateway.dev.resource.PolicySpec.RBACH\x00R\rauthorization\x12Y\n" +
	"\x11mcp_authorization\x18\b \x01(\v2*.agentgateway.dev.resource.PolicySpec.RBACH\x00R\x10mcpAuthorization\x12:\n" +
	"\x02ai\x18\t \x01(\v2(.agentgateway.dev.resource.PolicySpec.AiH\x00R\x02ai\x12=\n" +
	"\x03jwt\x18\n" +
	" \x01(\v2).agentgateway.dev.resource.PolicySpec.JWTH\x00R\x03jwt\x12d\n" +
	"\x0etransformation\x18\v \x01(\v2:.agentgateway.dev.resource.PolicySpec.TransformationPolicyH\x00R\x0etransformation\x12c\n" +
	"\x11remote_rate_limit\x18\f \x01(\v25.agentgateway.dev.resource.PolicySpec.RemoteRateLimitH\x00R\x0fremoteRateLimit\x12@\n" +
	"\x04csrf\x18\r \x01(\v2*.agentgateway.dev.resource.PolicySpec.CSRFH\x00R\x04csrf\x1a\xdb\x03\n" +
	"\x0fRemoteRateLimit\x12\x16\n" +
	"\x06domain\x18\x01 \x01(\tR\x06domain\x12b\n" +
	"\vdescriptors\x18\x02 \x03(\v2@.agentgateway.dev.resource.PolicySpec.RemoteRateLimit.DescriptorR\vdescriptors\x12C\n" +
	"\x06target\x18\x03 \x01(\v2+.agentgateway.dev.resource.BackendReferenceR\x06target\x1a\xb3\x01\n" +
	"\n" +
	"Descriptor\x12U\n" +
	"\aentries\x18\x01 \x03(\v2;.agentgateway.dev.resource.PolicySpec.RemoteRateLimit.EntryR\aentries\x12N\n" +
	"\x04type\x18\x02 \x01(\x0e2:.agentgateway.dev.resource.PolicySpec.RemoteRateLimit.TypeR\x04type\x1a/\n" +
	"\x05Entry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value\" \n" +
	"\x04Type\x12\f\n" +
	"\bREQUESTS\x10\x00\x12\n" +
	"\n" +
	"\x06TOKENS\x10\x01\x1a\x86\x02\n" +
	"\x0eLocalRateLimit\x12\x1d\n" +
	"\n" +
	"max_tokens\x18\x01 \x01(\x04R\tmaxTokens\x12&\n" +
	"\x0ftokens_per_fill\x18\x02 \x01(\x04R\rtokensPerFill\x12>\n" +
	"\rfill_interval\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\ffillInterval\x12M\n" +
	"\x04type\x18\x04 \x01(\x0e29.agentgateway.dev.resource.PolicySpec.LocalRateLimit.TypeR\x04type\"\x1e\n" +
	"\x04Type\x12\v\n" +
	"\aREQUEST\x10\x00\x12\t\n" +
	"\x05TOKEN\x10\x01\x1a\xe6\x14\n" +
	"\x02Ai\x12W\n" +
	"\fprompt_guard\x18\x01 \x01(\v24.agentgateway.dev.resource.PolicySpec.Ai.PromptGuardR\vpromptGuard\x12R\n" +
	"\bdefaults\x18\x02 \x03(\v26.agentgateway.dev.resource.PolicySpec.Ai.DefaultsEntryR\bdefaults\x12U\n" +
	"\toverrides\x18\x03 \x03(\v27.agentgateway.dev.resource.PolicySpec.Ai.OverridesEntryR\toverrides\x12S\n" +
	"\aprompts\x18\x04 \x01(\v29.agentgateway.dev.resource.PolicySpec.Ai.PromptEnrichmentR\aprompts\x12_\n" +
	"\rmodel_aliases\x18\x05 \x03(\v2:.agentgateway.dev.resource.PolicySpec.Ai.ModelAliasesEntryR\fmodelAliases\x1a7\n" +
	"\aMessage\x12\x12\n" +
	"\x04role\x18\x01 \x01(\tR\x04role\x12\x18\n" +
	"\acontent\x18\x02 \x01(\tR\acontent\x1a\xa8\x01\n" +
	"\x10PromptEnrichment\x12H\n" +
	"\x06append\x18\x01 \x03(\v20.agentgateway.dev.resource.PolicySpec.Ai.MessageR\x06append\x12J\n" +
	"\aprepend\x18\x02 \x03(\v20.agentgateway.dev.resource.PolicySpec.Ai.MessageR\aprepend\x1a:\n" +
	"\n" +
	"NamedRegex\x12\x18\n" +
	"\apattern\x18\x01 \x01(\tR\apattern\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x1a\xb7\x01\n" +
	"\tRegexRule\x12U\n" +
	"\abuiltin\x18\x01 \x01(\x0e29.agentgateway.dev.resource.PolicySpec.Ai.BuiltinRegexRuleH\x00R\abuiltin\x12K\n" +
	"\x05regex\x18\x02 \x01(\v23.agentgateway.dev.resource.PolicySpec.Ai.NamedRegexH\x00R\x05regexB\x06\n" +
	"\x04kind\x1a\xb5\x01\n" +
	"\x06Action\x12G\n" +
	"\x04kind\x18\x01 \x01(\x0e23.agentgateway.dev.resource.PolicySpec.Ai.ActionKindR\x04kind\x12b\n" +
	"\x0freject_response\x18\x02 \x01(\v29.agentgateway.dev.resource.PolicySpec.Ai.RequestRejectionR\x0erejectResponse\x1a\x9f\x01\n" +
	"\n" +
	"RegexRules\x12G\n" +
	"\x06action\x18\x01 \x01(\v2/.agentgateway.dev.resource.PolicySpec.Ai.ActionR\x06action\x12H\n" +
	"\x05rules\x18\x02 \x03(\v22.agentgateway.dev.resource.PolicySpec.Ai.RegexRuleR\x05rules\x1a\x8f\x01\n" +
	"\aWebhook\x12\x12\n" +
	"\x04host\x18\x01 \x01(\tR\x04host\x12\x12\n" +
	"\x04port\x18\x02 \x01(\rR\x04port\x12\\\n" +
	"\x16forward_header_matches\x18\x03 \x03(\v2&.agentgateway.dev.resource.HeaderMatchR\x14forwardHeaderMatches\x1a\x82\x01\n" +
	"\n" +
	"Moderation\x122\n" +
	"\x05model\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x05model\x12@\n" +
	"\x04auth\x18\x02 \x01(\v2,.agentgateway.dev.resource.BackendAuthPolicyR\x04auth\x1a>\n" +
	"\x10RequestRejection\x12\x12\n" +
	"\x04body\x18\x01 \x01(\fR\x04body\x12\x16\n" +
	"\x06status\x18\x02 \x01(\rR\x06status\x1a\xa6\x01\n" +
	"\rResponseGuard\x12I\n" +
	"\x05regex\x18\x01 \x01(\v23.agentgateway.dev.resource.PolicySpec.Ai.RegexRulesR\x05regex\x12J\n" +
	"\awebhook\x18\x02 \x01(\v20.agentgateway.dev.resource.PolicySpec.Ai.WebhookR\awebhook\x1a\xe0\x02\n" +
	"\fRequestGuard\x12W\n" +
	"\trejection\x18\x01 \x01(\v29.agentgateway.dev.resource.PolicySpec.Ai.RequestRejectionR\trejection\x12I\n" +
	"\x05regex\x18\x02 \x01(\v23.agentgateway.dev.resource.PolicySpec.Ai.RegexRulesR\x05regex\x12J\n" +
	"\awebhook\x18\x03 \x01(\v20.agentgateway.dev.resource.PolicySpec.Ai.WebhookR\awebhook\x12`\n" +
	"\x11openai_moderation\x18\x04 \x01(\v23.agentgateway.dev.resource.PolicySpec.Ai.ModerationR\x10openaiModeration\x1a\xb2\x01\n" +
	"\vPromptGuard\x12O\n" +
	"\arequest\x18\x01 \x01(\v25.agentgateway.dev.resource.PolicySpec.Ai.RequestGuardR\arequest\x12R\n" +
	"\bresponse\x18\x02 \x01(\v26.agentgateway.dev.resource.PolicySpec.Ai.ResponseGuardR\bresponse\x1a;\n" +
	"\rDefaultsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a<\n" +
	"\x0eOverridesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a?\n" +
	"\x11ModelAliasesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"b\n" +
	"\x10BuiltinRegexRule\x12\x17\n" +
	"\x13BUILTIN_UNSPECIFIED\x10\x00\x12\a\n" +
	"\x03SSN\x10\x01\x12\x0f\n" +
	"\vCREDIT_CARD\x10\x02\x12\x10\n" +
	"\fPHONE_NUMBER\x10\x03\x12\t\n" +
	"\x05EMAIL\x10\x04\":\n" +
	"\n" +
	"ActionKind\x12\x16\n" +
	"\x12ACTION_UNSPECIFIED\x10\x00\x12\b\n" +
	"\x04MASK\x10\x01\x12\n" +
	"\n" +
	"\x06REJECT\x10\x02\x1a\xc0\x06\n" +
	"\fExternalAuth\x12C\n" +
	"\x06target\x18\x01 \x01(\v2+.agentgateway.dev.resource.BackendReferenceR\x06target\x12Y\n" +
	"\acontext\x18\x02 \x03(\v2?.agentgateway.dev.resource.PolicySpec.ExternalAuth.ContextEntryR\acontext\x12a\n" +
	"\ffailure_mode\x18\x03 \x01(\x0e2>.agentgateway.dev.resource.PolicySpec.ExternalAuth.FailureModeR\vfailureMode\x126\n" +
	"\x17include_request_headers\x18\x04 \x03(\tR\x15includeRequestHeaders\x12p\n" +
	"\x14include_request_body\x18\x05 \x01(\v2>.agentgateway.dev.resource.PolicySpec.ExternalAuth.BodyOptionsR\x12includeRequestBody\x123\n" +
	"\atimeout\x18\x06 \x01(\v2\x19.google.protobuf.DurationR\atimeout\x12D\n" +
	"\x0fstatus_on_error\x18\a \x01(\v2\x1c.google.protobuf.UInt32ValueR\rstatusOnError\x1a\x91\x01\n" +
	"\vBodyOptions\x12*\n" +
	"\x11max_request_bytes\x18\x01 \x01(\rR\x0fmaxRequestBytes\x122\n" +
	"\x15allow_partial_message\x18\x02 \x01(\bR\x13allowPartialMessage\x12\"\n" +
	"\rpack_as_bytes\x18\x03 \x01(\bR\vpackAsBytes\x1a:\n" +
	"\fContextEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"8\n" +
	"\vFailureMode\x12\b\n" +
	"\x04DENY\x10\x00\x12\t\n" +
	"\x05ALLOW\x10\x01\x12\x14\n" +
	"\x10DENY_WITH_STATUS\x10\x02\x1a\x05\n" +
	"\x03A2a\x1a\x8b\x02\n" +
	"\x10InferenceRouting\x12T\n" +
	"\x0fendpoint_picker\x18\x01 \x01(\v2+.agentgateway.dev.resource.BackendReferenceR\x0eendpointPicker\x12e\n" +
	"\ffailure_mode\x18\x02 \x01(\x0e2B.agentgateway.dev.resource.PolicySpec.InferenceRouting.FailureModeR\vfailureMode\":\n" +
	"\vFailureMode\x12\v\n" +
	"\aUNKNOWN\x10\x00\x12\x0f\n" +
	"\vFAIL_CLOSED\x10\x01\x12\r\n" +
	"\tFAIL_OPEN\x10\x02\x1a\x8f\x02\n" +
	"\n" +
	"BackendTLS\x12/\n" +
	"\x04cert\x18\x01 \x01(\v2\x1b.google.protobuf.BytesValueR\x04cert\x12-\n" +
	"\x03key\x18\x02 \x01(\v2\x1b.google.protobuf.BytesValueR\x03key\x12/\n" +
	"\x04root\x18\x03 \x01(\v2\x1b.google.protobuf.BytesValueR\x04root\x126\n" +
	"\binsecure\x18\x04 \x01(\v2\x1a.google.protobuf.BoolValueR\binsecure\x128\n" +
	"\bhostname\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\bhostname\x1a0\n" +
	"\x04RBAC\x12\x14\n" +
	"\x05allow\x18\x01 \x03(\tR\x05allow\x12\x12\n" +
	"\x04deny\x18\x02 \x03(\tR\x04deny\x1a\xda\x01\n" +
	"\x03JWT\x12B\n" +
	"\x04mode\x18\x01 \x01(\x0e2..agentgateway.dev.resource.PolicySpec.JWT.ModeR\x04mode\x12\x16\n" +
	"\x06issuer\x18\x02 \x01(\tR\x06issuer\x12\x1c\n" +
	"\taudiences\x18\x03 \x03(\tR\taudiences\x12\x18\n" +
	"\x06inline\x18\x04 \x01(\tH\x00R\x06inline\"0\n" +
	"\x04Mode\x12\f\n" +
	"\bOPTIONAL\x10\x00\x12\n" +
	"\n" +
	"\x06STRICT\x10\x01\x12\x0e\n" +
	"\n" +
	"PERMISSIVE\x10\x02B\r\n" +
	"\vjwks_source\x1a\xe8\x03\n" +
	"\x14TransformationPolicy\x12^\n" +
	"\arequest\x18\x01 \x01(\v2D.agentgateway.dev.resource.PolicySpec.TransformationPolicy.TransformR\arequest\x12`\n" +
	"\bresponse\x18\x02 \x01(\v2D.agentgateway.dev.resource.PolicySpec.TransformationPolicy.TransformR\bresponse\x1a\x8d\x02\n" +
	"\tTransform\x12L\n" +
	"\x03set\x18\x01 \x03(\v2:.agentgateway.dev.resource.PolicySpec.HeaderTransformationR\x03set\x12L\n" +
	"\x03add\x18\x02 \x03(\v2:.agentgateway.dev.resource.PolicySpec.HeaderTransformationR\x03add\x12\x16\n" +
	"\x06remove\x18\x03 \x03(\tR\x06remove\x12L\n" +
	"\x04body\x18\x04 \x01(\v28.agentgateway.dev.resource.PolicySpec.BodyTransformationR\x04body\x1aJ\n" +
	"\x14HeaderTransformation\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1e\n" +
	"\n" +
	"expression\x18\x02 \x01(\tR\n" +
	"expression\x1a4\n" +
	"\x12BodyTransformation\x12\x1e\n" +
	"\n" +
	"expression\x18\x01 \x01(\tR\n" +
	"expression\x1a5\n" +
	"\x04CSRF\x12-\n" +
	"\x12additional_origins\x18\x01 \x03(\tR\x11additionalOriginsB\x06\n" +
	"\x04kind\"\x98\x01\n" +
	"\x06Policy\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12?\n" +
	"\x06target\x18\x02 \x01(\v2'.agentgateway.dev.resource.PolicyTargetR\x06target\x129\n" +
	"\x04spec\x18\x03 \x01(\v2%.agentgateway.dev.resource.PolicySpecR\x04spec\"\xdc\x01\n" +
	"\aBackend\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12B\n" +
	"\x06static\x18\x02 \x01(\v2(.agentgateway.dev.resource.StaticBackendH\x00R\x06static\x126\n" +
	"\x02ai\x18\x03 \x01(\v2$.agentgateway.dev.resource.AIBackendH\x00R\x02ai\x129\n" +
	"\x03mcp\x18\x04 \x01(\v2%.agentgateway.dev.resource.MCPBackendH\x00R\x03mcpB\x06\n" +
	"\x04kind\"7\n" +
	"\rStaticBackend\x12\x12\n" +
	"\x04host\x18\x01 \x01(\tR\x04host\x12\x12\n" +
	"\x04port\x18\x02 \x01(\x05R\x04port\"\xdb\n" +
	"\n" +
	"\tAIBackend\x12[\n" +
	"\x0fprovider_groups\x18\x01 \x03(\v22.agentgateway.dev.resource.AIBackend.ProviderGroupR\x0eproviderGroups\x1a6\n" +
	"\fHostOverride\x12\x12\n" +
	"\x04host\x18\x01 \x01(\tR\x04host\x12\x12\n" +
	"\x04port\x18\x02 \x01(\x05R\x04port\x1a<\n" +
	"\x06OpenAI\x122\n" +
	"\x05model\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x05model\x1a<\n" +
	"\x06Gemini\x122\n" +
	"\x05model\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x05model\x1as\n" +
	"\x06Vertex\x122\n" +
	"\x05model\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x05model\x12\x16\n" +
	"\x06region\x18\x02 \x01(\tR\x06region\x12\x1d\n" +
	"\n" +
	"project_id\x18\x03 \x01(\tR\tprojectId\x1a?\n" +
	"\tAnthropic\x122\n" +
	"\x05model\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x05model\x1a\xf1\x01\n" +
	"\aBedrock\x122\n" +
	"\x05model\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x05model\x12\x16\n" +
	"\x06region\x18\x02 \x01(\tR\x06region\x12O\n" +
	"\x14guardrail_identifier\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\x13guardrailIdentifier\x12I\n" +
	"\x11guardrail_version\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\x10guardrailVersion\x1a\xb4\x04\n" +
	"\bProvider\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12V\n" +
	"\rhost_override\x18\x02 \x01(\v21.agentgateway.dev.resource.AIBackend.HostOverrideR\fhostOverride\x12A\n" +
	"\rpath_override\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\fpathOverride\x12E\n" +
	"\x06openai\x18\x04 \x01(\v2+.agentgateway.dev.resource.AIBackend.OpenAIH\x00R\x06openai\x12E\n" +
	"\x06gemini\x18\x05 \x01(\v2+.agentgateway.dev.resource.AIBackend.GeminiH\x00R\x06gemini\x12E\n" +
	"\x06vertex\x18\x06 \x01(\v2+.agentgateway.dev.resource.AIBackend.VertexH\x00R\x06vertex\x12N\n" +
	"\tanthropic\x18\a \x01(\v2..agentgateway.dev.resource.AIBackend.AnthropicH\x00R\tanthropic\x12H\n" +
	"\abedrock\x18\b \x01(\v2,.agentgateway.dev.resource.AIBackend.BedrockH\x00R\abedrockB\n" +
	"\n" +
	"\bprovider\x1a\\\n" +
	"\rProviderGroup\x12K\n" +
	"\tproviders\x18\x01 \x03(\v2-.agentgateway.dev.resource.AIBackend.ProviderR\tproviders\"\xd2\x01\n" +
	"\n" +
	"MCPBackend\x12>\n" +
	"\atargets\x18\x02 \x03(\v2$.agentgateway.dev.resource.MCPTargetR\atargets\x12W\n" +
	"\rstateful_mode\x18\x03 \x01(\x0e22.agentgateway.dev.resource.MCPBackend.StatefulModeR\fstatefulMode\"+\n" +
	"\fStatefulMode\x12\f\n" +
	"\bSTATEFUL\x10\x00\x12\r\n" +
	"\tSTATELESS\x10\x01\"\xfe\x01\n" +
	"\tMCPTarget\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12E\n" +
	"\abackend\x18\x02 \x01(\v2+.agentgateway.dev.resource.BackendReferenceR\abackend\x12\x12\n" +
	"\x04path\x18\x03 \x01(\tR\x04path\x12I\n" +
	"\bprotocol\x18\x04 \x01(\x0e2-.agentgateway.dev.resource.MCPTarget.ProtocolR\bprotocol\"7\n" +
	"\bProtocol\x12\r\n" +
	"\tUNDEFINED\x10\x00\x12\a\n" +
	"\x03SSE\x10\x01\x12\x13\n" +
	"\x0fSTREAMABLE_HTTP\x10\x02\"f\n" +
	"\x10BackendReference\x12\x1a\n" +
	"\aservice\x18\x01 \x01(\tH\x00R\aservice\x12\x1a\n" +
	"\abackend\x18\x02 \x01(\tH\x00R\abackend\x12\x12\n" +
	"\x04port\x18\x03 \x01(\rR\x04portB\x06\n" +
	"\x04kind*I\n" +
	"\bProtocol\x12\v\n" +
	"\aUNKNOWN\x10\x00\x12\b\n" +
	"\x04HTTP\x10\x01\x12\t\n" +
	"\x05HTTPS\x10\x02\x12\a\n" +
	"\x03TLS\x10\x03\x12\a\n" +
	"\x03TCP\x10\x04\x12\t\n" +
	"\x05HBONE\x10\x05B1Z/github.com/agentgateway/agentgateway/go/api;apib\x06proto3"

var (
	file_resource_proto_rawDescOnce sync.Once
	file_resource_proto_rawDescData []byte
)

func file_resource_proto_rawDescGZIP() []byte {
	file_resource_proto_rawDescOnce.Do(func() {
		file_resource_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_resource_proto_rawDesc), len(file_resource_proto_rawDesc)))
	})
	return file_resource_proto_rawDescData
}

var file_resource_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_resource_proto_msgTypes = make([]protoimpl.MessageInfo, 86)
var file_resource_proto_goTypes = []any{
	(Protocol)(0),                                // 0: agentgateway.dev.resource.Protocol
	(PolicySpec_RemoteRateLimit_Type)(0),         // 1: agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Type
	(PolicySpec_LocalRateLimit_Type)(0),          // 2: agentgateway.dev.resource.PolicySpec.LocalRateLimit.Type
	(PolicySpec_Ai_BuiltinRegexRule)(0),          // 3: agentgateway.dev.resource.PolicySpec.Ai.BuiltinRegexRule
	(PolicySpec_Ai_ActionKind)(0),                // 4: agentgateway.dev.resource.PolicySpec.Ai.ActionKind
	(PolicySpec_ExternalAuth_FailureMode)(0),     // 5: agentgateway.dev.resource.PolicySpec.ExternalAuth.FailureMode
	(PolicySpec_InferenceRouting_FailureMode)(0), // 6: agentgateway.dev.resource.PolicySpec.InferenceRouting.FailureMode
	(PolicySpec_JWT_Mode)(0),                     // 7: agentgateway.dev.resource.PolicySpec.JWT.Mode
	(MCPBackend_StatefulMode)(0),                 // 8: agentgateway.dev.resource.MCPBackend.StatefulMode
	(MCPTarget_Protocol)(0),                      // 9: agentgateway.dev.resource.MCPTarget.Protocol
	(*Resource)(nil),                             // 10: agentgateway.dev.resource.Resource
	(*Bind)(nil),                                 // 11: agentgateway.dev.resource.Bind
	(*Listener)(nil),                             // 12: agentgateway.dev.resource.Listener
	(*TLSConfig)(nil),                            // 13: agentgateway.dev.resource.TLSConfig
	(*Route)(nil),                                // 14: agentgateway.dev.resource.Route
	(*TCPRoute)(nil),                             // 15: agentgateway.dev.resource.TCPRoute
	(*TrafficPolicy)(nil),                        // 16: agentgateway.dev.resource.TrafficPolicy
	(*Retry)(nil),                                // 17: agentgateway.dev.resource.Retry
	(*BackendAuthPolicy)(nil),                    // 18: agentgateway.dev.resource.BackendAuthPolicy
	(*Passthrough)(nil),                          // 19: agentgateway.dev.resource.Passthrough
	(*Key)(nil),                                  // 20: agentgateway.dev.resource.Key
	(*Gcp)(nil),                                  // 21: agentgateway.dev.resource.Gcp
	(*Aws)(nil),                                  // 22: agentgateway.dev.resource.Aws
	(*Azure)(nil),                                // 23: agentgateway.dev.resource.Azure
	(*AwsExplicitConfig)(nil),                    // 24: agentgateway.dev.resource.AwsExplicitConfig
	(*AwsImplicit)(nil),                          // 25: agentgateway.dev.resource.AwsImplicit
	(*AzureExplicitConfig)(nil),                  // 26: agentgateway.dev.resource.AzureExplicitConfig
	(*AzureClientSecret)(nil),                    // 27: agentgateway.dev.resource.AzureClientSecret
	(*AzureManagedIdentityCredential)(nil),       // 28: agentgateway.dev.resource.AzureManagedIdentityCredential
	(*AzureWorkloadIdentityCredential)(nil),      // 29: agentgateway.dev.resource.AzureWorkloadIdentityCredential
	(*AzureDeveloperImplicit)(nil),               // 30: agentgateway.dev.resource.AzureDeveloperImplicit
	(*RouteMatch)(nil),                           // 31: agentgateway.dev.resource.RouteMatch
	(*PathMatch)(nil),                            // 32: agentgateway.dev.resource.PathMatch
	(*QueryMatch)(nil),                           // 33: agentgateway.dev.resource.QueryMatch
	(*MethodMatch)(nil),                          // 34: agentgateway.dev.resource.MethodMatch
	(*HeaderMatch)(nil),                          // 35: agentgateway.dev.resource.HeaderMatch
	(*RouteFilter)(nil),                          // 36: agentgateway.dev.resource.RouteFilter
	(*CORS)(nil),                                 // 37: agentgateway.dev.resource.CORS
	(*DirectResponse)(nil),                       // 38: agentgateway.dev.resource.DirectResponse
	(*HeaderModifier)(nil),                       // 39: agentgateway.dev.resource.HeaderModifier
	(*RequestMirror)(nil),                        // 40: agentgateway.dev.resource.RequestMirror
	(*RequestRedirect)(nil),                      // 41: agentgateway.dev.resource.RequestRedirect
	(*UrlRewrite)(nil),                           // 42: agentgateway.dev.resource.UrlRewrite
	(*Header)(nil),                               // 43: agentgateway.dev.resource.Header
	(*RouteBackend)(nil),                         // 44: agentgateway.dev.resource.RouteBackend
	(*PolicyTarget)(nil),                         // 45: agentgateway.dev.resource.PolicyTarget
	(*PolicySpec)(nil),                           // 46: agentgateway.dev.resource.PolicySpec
	(*Policy)(nil),                               // 47: agentgateway.dev.resource.Policy
	(*Backend)(nil),                              // 48: agentgateway.dev.resource.Backend
	(*StaticBackend)(nil),                        // 49: agentgateway.dev.resource.StaticBackend
	(*AIBackend)(nil),                            // 50: agentgateway.dev.resource.AIBackend
	(*MCPBackend)(nil),                           // 51: agentgateway.dev.resource.MCPBackend
	(*MCPTarget)(nil),                            // 52: agentgateway.dev.resource.MCPTarget
	(*BackendReference)(nil),                     // 53: agentgateway.dev.resource.BackendReference
	(*AzureManagedIdentityCredential_UserAssignedIdentity)(nil), // 54: agentgateway.dev.resource.AzureManagedIdentityCredential.UserAssignedIdentity
	(*PolicySpec_RemoteRateLimit)(nil),                          // 55: agentgateway.dev.resource.PolicySpec.RemoteRateLimit
	(*PolicySpec_LocalRateLimit)(nil),                           // 56: agentgateway.dev.resource.PolicySpec.LocalRateLimit
	(*PolicySpec_Ai)(nil),                                       // 57: agentgateway.dev.resource.PolicySpec.Ai
	(*PolicySpec_ExternalAuth)(nil),                             // 58: agentgateway.dev.resource.PolicySpec.ExternalAuth
	(*PolicySpec_A2A)(nil),                                      // 59: agentgateway.dev.resource.PolicySpec.A2a
	(*PolicySpec_InferenceRouting)(nil),                         // 60: agentgateway.dev.resource.PolicySpec.InferenceRouting
	(*PolicySpec_BackendTLS)(nil),                               // 61: agentgateway.dev.resource.PolicySpec.BackendTLS
	(*PolicySpec_RBAC)(nil),                                     // 62: agentgateway.dev.resource.PolicySpec.RBAC
	(*PolicySpec_JWT)(nil),                                      // 63: agentgateway.dev.resource.PolicySpec.JWT
	(*PolicySpec_TransformationPolicy)(nil),                     // 64: agentgateway.dev.resource.PolicySpec.TransformationPolicy
	(*PolicySpec_HeaderTransformation)(nil),                     // 65: agentgateway.dev.resource.PolicySpec.HeaderTransformation
	(*PolicySpec_BodyTransformation)(nil),                       // 66: agentgateway.dev.resource.PolicySpec.BodyTransformation
	(*PolicySpec_CSRF)(nil),                                     // 67: agentgateway.dev.resource.PolicySpec.CSRF
	(*PolicySpec_RemoteRateLimit_Descriptor)(nil),               // 68: agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Descriptor
	(*PolicySpec_RemoteRateLimit_Entry)(nil),                    // 69: agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Entry
	(*PolicySpec_Ai_Message)(nil),                               // 70: agentgateway.dev.resource.PolicySpec.Ai.Message
	(*PolicySpec_Ai_PromptEnrichment)(nil),                      // 71: agentgateway.dev.resource.PolicySpec.Ai.PromptEnrichment
	(*PolicySpec_Ai_NamedRegex)(nil),                            // 72: agentgateway.dev.resource.PolicySpec.Ai.NamedRegex
	(*PolicySpec_Ai_RegexRule)(nil),                             // 73: agentgateway.dev.resource.PolicySpec.Ai.RegexRule
	(*PolicySpec_Ai_Action)(nil),                                // 74: agentgateway.dev.resource.PolicySpec.Ai.Action
	(*PolicySpec_Ai_RegexRules)(nil),                            // 75: agentgateway.dev.resource.PolicySpec.Ai.RegexRules
	(*PolicySpec_Ai_Webhook)(nil),                               // 76: agentgateway.dev.resource.PolicySpec.Ai.Webhook
	(*PolicySpec_Ai_Moderation)(nil),                            // 77: agentgateway.dev.resource.PolicySpec.Ai.Moderation
	(*PolicySpec_Ai_RequestRejection)(nil),                      // 78: agentgateway.dev.resource.PolicySpec.Ai.RequestRejection
	(*PolicySpec_Ai_ResponseGuard)(nil),                         // 79: agentgateway.dev.resource.PolicySpec.Ai.ResponseGuard
	(*PolicySpec_Ai_RequestGuard)(nil),                          // 80: agentgateway.dev.resource.PolicySpec.Ai.RequestGuard
	(*PolicySpec_Ai_PromptGuard)(nil),                           // 81: agentgateway.dev.resource.PolicySpec.Ai.PromptGuard
	nil,                                                         // 82: agentgateway.dev.resource.PolicySpec.Ai.DefaultsEntry
	nil,                                                         // 83: agentgateway.dev.resource.PolicySpec.Ai.OverridesEntry
	nil,                                                         // 84: agentgateway.dev.resource.PolicySpec.Ai.ModelAliasesEntry
	(*PolicySpec_ExternalAuth_BodyOptions)(nil),                 // 85: agentgateway.dev.resource.PolicySpec.ExternalAuth.BodyOptions
	nil, // 86: agentgateway.dev.resource.PolicySpec.ExternalAuth.ContextEntry
	(*PolicySpec_TransformationPolicy_Transform)(nil), // 87: agentgateway.dev.resource.PolicySpec.TransformationPolicy.Transform
	(*AIBackend_HostOverride)(nil),                    // 88: agentgateway.dev.resource.AIBackend.HostOverride
	(*AIBackend_OpenAI)(nil),                          // 89: agentgateway.dev.resource.AIBackend.OpenAI
	(*AIBackend_Gemini)(nil),                          // 90: agentgateway.dev.resource.AIBackend.Gemini
	(*AIBackend_Vertex)(nil),                          // 91: agentgateway.dev.resource.AIBackend.Vertex
	(*AIBackend_Anthropic)(nil),                       // 92: agentgateway.dev.resource.AIBackend.Anthropic
	(*AIBackend_Bedrock)(nil),                         // 93: agentgateway.dev.resource.AIBackend.Bedrock
	(*AIBackend_Provider)(nil),                        // 94: agentgateway.dev.resource.AIBackend.Provider
	(*AIBackend_ProviderGroup)(nil),                   // 95: agentgateway.dev.resource.AIBackend.ProviderGroup
	(*duration.Duration)(nil),                         // 96: google.protobuf.Duration
	(*wrappers.UInt32Value)(nil),                      // 97: google.protobuf.UInt32Value
	(*wrappers.BytesValue)(nil),                       // 98: google.protobuf.BytesValue
	(*wrappers.BoolValue)(nil),                        // 99: google.protobuf.BoolValue
	(*wrappers.StringValue)(nil),                      // 100: google.protobuf.StringValue
}
var file_resource_proto_depIdxs = []int32{
	11,  // 0: agentgateway.dev.resource.Resource.bind:type_name -> agentgateway.dev.resource.Bind
	12,  // 1: agentgateway.dev.resource.Resource.listener:type_name -> agentgateway.dev.resource.Listener
	14,  // 2: agentgateway.dev.resource.Resource.route:type_name -> agentgateway.dev.resource.Route
	48,  // 3: agentgateway.dev.resource.Resource.backend:type_name -> agentgateway.dev.resource.Backend
	47,  // 4: agentgateway.dev.resource.Resource.policy:type_name -> agentgateway.dev.resource.Policy
	15,  // 5: agentgateway.dev.resource.Resource.tcp_route:type_name -> agentgateway.dev.resource.TCPRoute
	0,   // 6: agentgateway.dev.resource.Listener.protocol:type_name -> agentgateway.dev.resource.Protocol
	13,  // 7: agentgateway.dev.resource.Listener.tls:type_name -> agentgateway.dev.resource.TLSConfig
	31,  // 8: agentgateway.dev.resource.Route.matches:type_name -> agentgateway.dev.resource.RouteMatch
	36,  // 9: agentgateway.dev.resource.Route.filters:type_name -> agentgateway.dev.resource.RouteFilter
	44,  // 10: agentgateway.dev.resource.Route.backends:type_name -> agentgateway.dev.resource.RouteBackend
	16,  // 11: agentgateway.dev.resource.Route.traffic_policy:type_name -> agentgateway.dev.resource.TrafficPolicy
	46,  // 12: agentgateway.dev.resource.Route.inline_policies:type_name -> agentgateway.dev.resource.PolicySpec
	44,  // 13: agentgateway.dev.resource.TCPRoute.backends:type_name -> agentgateway.dev.resource.RouteBackend
	96,  // 14: agentgateway.dev.resource.TrafficPolicy.backend_request_timeout:type_name -> google.protobuf.Duration
	96,  // 15: agentgateway.dev.resource.TrafficPolicy.request_timeout:type_name -> google.protobuf.Duration
	17,  // 16: agentgateway.dev.resource.TrafficPolicy.retry:type_name -> agentgateway.dev.resource.Retry
	96,  // 17: agentgateway.dev.resource.Retry.backoff:type_name -> google.protobuf.Duration
	19,  // 18: agentgateway.dev.resource.BackendAuthPolicy.passthrough:type_name -> agentgateway.dev.resource.Passthrough
	20,  // 19: agentgateway.dev.resource.BackendAuthPolicy.key:type_name -> agentgateway.dev.resource.Key
	21,  // 20: agentgateway.dev.resource.BackendAuthPolicy.gcp:type_name -> agentgateway.dev.resource.Gcp
	22,  // 21: agentgateway.dev.resource.BackendAuthPolicy.aws:type_name -> agentgateway.dev.resource.Aws
	23,  // 22: agentgateway.dev.resource.BackendAuthPolicy.azure:type_name -> agentgateway.dev.resource.Azure
	24,  // 23: agentgateway.dev.resource.Aws.explicit_config:type_name -> agentgateway.dev.resource.AwsExplicitConfig
	25,  // 24: agentgateway.dev.resource.Aws.implicit:type_name -> agentgateway.dev.resource.AwsImplicit
	26,  // 25: agentgateway.dev.resource.Azure.explicit_config:type_name -> agentgateway.dev.resource.AzureExplicitConfig
	30,  // 26: agentgateway.dev.resource.Azure.developer_implicit:type_name -> agentgateway.dev.resource.AzureDeveloperImplicit
	27,  // 27: agentgateway.dev.resource.AzureExplicitConfig.client_secret:type_name -> agentgateway.dev.resource.AzureClientSecret
	28,  // 28: agentgateway.dev.resource.AzureExplicitConfig.managed_identity_credential:type_name -> agentgateway.dev.resource.AzureManagedIdentityCredential
	29,  // 29: agentgateway.dev.resource.AzureExplicitConfig.workload_identity_credential:type_name -> agentgateway.dev.resource.AzureWorkloadIdentityCredential
	54,  // 30: agentgateway.dev.resource.AzureManagedIdentityCredential.user_assigned_identity:type_name -> agentgateway.dev.resource.AzureManagedIdentityCredential.UserAssignedIdentity
	32,  // 31: agentgateway.dev.resource.RouteMatch.path:type_name -> agentgateway.dev.resource.PathMatch
	35,  // 32: agentgateway.dev.resource.RouteMatch.headers:type_name -> agentgateway.dev.resource.HeaderMatch
	34,  // 33: agentgateway.dev.resource.RouteMatch.method:type_name -> agentgateway.dev.resource.MethodMatch
	33,  // 34: agentgateway.dev.resource.RouteMatch.query_params:type_name -> agentgateway.dev.resource.QueryMatch
	39,  // 35: agentgateway.dev.resource.RouteFilter.request_header_modifier:type_name -> agentgateway.dev.resource.HeaderModifier
	39,  // 36: agentgateway.dev.resource.RouteFilter.response_header_modifier:type_name -> agentgateway.dev.resource.HeaderModifier
	41,  // 37: agentgateway.dev.resource.RouteFilter.request_redirect:type_name -> agentgateway.dev.resource.RequestRedirect
	42,  // 38: agentgateway.dev.resource.RouteFilter.url_rewrite:type_name -> agentgateway.dev.resource.UrlRewrite
	40,  // 39: agentgateway.dev.resource.RouteFilter.request_mirror:type_name -> agentgateway.dev.resource.RequestMirror
	38,  // 40: agentgateway.dev.resource.RouteFilter.direct_response:type_name -> agentgateway.dev.resource.DirectResponse
	37,  // 41: agentgateway.dev.resource.RouteFilter.cors:type_name -> agentgateway.dev.resource.CORS
	96,  // 42: agentgateway.dev.resource.CORS.max_age:type_name -> google.protobuf.Duration
	43,  // 43: agentgateway.dev.resource.HeaderModifier.add:type_name -> agentgateway.dev.resource.Header
	43,  // 44: agentgateway.dev.resource.HeaderModifier.set:type_name -> agentgateway.dev.resource.Header
	53,  // 45: agentgateway.dev.resource.RequestMirror.backend:type_name -> agentgateway.dev.resource.BackendReference
	53,  // 46: agentgateway.dev.resource.RouteBackend.backend:type_name -> agentgateway.dev.resource.BackendReference
	36,  // 47: agentgateway.dev.resource.RouteBackend.filters:type_name -> agentgateway.dev.resource.RouteFilter
	56,  // 48: agentgateway.dev.resource.PolicySpec.local_rate_limit:type_name -> agentgateway.dev.resource.PolicySpec.LocalRateLimit
	58,  // 49: agentgateway.dev.resource.PolicySpec.ext_authz:type_name -> agentgateway.dev.resource.PolicySpec.ExternalAuth
	59,  // 50: agentgateway.dev.resource.PolicySpec.a2a:type_name -> agentgateway.dev.resource.PolicySpec.A2a
	60,  // 51: agentgateway.dev.resource.PolicySpec.inference_routing:type_name -> agentgateway.dev.resource.PolicySpec.InferenceRouting
	61,  // 52: agentgateway.dev.resource.PolicySpec.backend_tls:type_name -> agentgateway.dev.resource.PolicySpec.BackendTLS
	18,  // 53: agentgateway.dev.resource.PolicySpec.auth:type_name -> agentgateway.dev.resource.BackendAuthPolicy
	62,  // 54: agentgateway.dev.resource.PolicySpec.authorization:type_name -> agentgateway.dev.resource.PolicySpec.RBAC
	62,  // 55: agentgateway.dev.resource.PolicySpec.mcp_authorization:type_name -> agentgateway.dev.resource.PolicySpec.RBAC
	57,  // 56: agentgateway.dev.resource.PolicySpec.ai:type_name -> agentgateway.dev.resource.PolicySpec.Ai
	63,  // 57: agentgateway.dev.resource.PolicySpec.jwt:type_name -> agentgateway.dev.resource.PolicySpec.JWT
	64,  // 58: agentgateway.dev.resource.PolicySpec.transformation:type_name -> agentgateway.dev.resource.PolicySpec.TransformationPolicy
	55,  // 59: agentgateway.dev.resource.PolicySpec.remote_rate_limit:type_name -> agentgateway.dev.resource.PolicySpec.RemoteRateLimit
	67,  // 60: agentgateway.dev.resource.PolicySpec.csrf:type_name -> agentgateway.dev.resource.PolicySpec.CSRF
	45,  // 61: agentgateway.dev.resource.Policy.target:type_name -> agentgateway.dev.resource.PolicyTarget
	46,  // 62: agentgateway.dev.resource.Policy.spec:type_name -> agentgateway.dev.resource.PolicySpec
	49,  // 63: agentgateway.dev.resource.Backend.static:type_name -> agentgateway.dev.resource.StaticBackend
	50,  // 64: agentgateway.dev.resource.Backend.ai:type_name -> agentgateway.dev.resource.AIBackend
	51,  // 65: agentgateway.dev.resource.Backend.mcp:type_name -> agentgateway.dev.resource.MCPBackend
	95,  // 66: agentgateway.dev.resource.AIBackend.provider_groups:type_name -> agentgateway.dev.resource.AIBackend.ProviderGroup
	52,  // 67: agentgateway.dev.resource.MCPBackend.targets:type_name -> agentgateway.dev.resource.MCPTarget
	8,   // 68: agentgateway.dev.resource.MCPBackend.stateful_mode:type_name -> agentgateway.dev.resource.MCPBackend.StatefulMode
	53,  // 69: agentgateway.dev.resource.MCPTarget.backend:type_name -> agentgateway.dev.resource.BackendReference
	9,   // 70: agentgateway.dev.resource.MCPTarget.protocol:type_name -> agentgateway.dev.resource.MCPTarget.Protocol
	68,  // 71: agentgateway.dev.resource.PolicySpec.RemoteRateLimit.descriptors:type_name -> agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Descriptor
	53,  // 72: agentgateway.dev.resource.PolicySpec.RemoteRateLimit.target:type_name -> agentgateway.dev.resource.BackendReference
	96,  // 73: agentgateway.dev.resource.PolicySpec.LocalRateLimit.fill_interval:type_name -> google.protobuf.Duration
	2,   // 74: agentgateway.dev.resource.PolicySpec.LocalRateLimit.type:type_name -> agentgateway.dev.resource.PolicySpec.LocalRateLimit.Type
	81,  // 75: agentgateway.dev.resource.PolicySpec.Ai.prompt_guard:type_name -> agentgateway.dev.resource.PolicySpec.Ai.PromptGuard
	82,  // 76: agentgateway.dev.resource.PolicySpec.Ai.defaults:type_name -> agentgateway.dev.resource.PolicySpec.Ai.DefaultsEntry
	83,  // 77: agentgateway.dev.resource.PolicySpec.Ai.overrides:type_name -> agentgateway.dev.resource.PolicySpec.Ai.OverridesEntry
	71,  // 78: agentgateway.dev.resource.PolicySpec.Ai.prompts:type_name -> agentgateway.dev.resource.PolicySpec.Ai.PromptEnrichment
	84,  // 79: agentgateway.dev.resource.PolicySpec.Ai.model_aliases:type_name -> agentgateway.dev.resource.PolicySpec.Ai.ModelAliasesEntry
	53,  // 80: agentgateway.dev.resource.PolicySpec.ExternalAuth.target:type_name -> agentgateway.dev.resource.BackendReference
	86,  // 81: agentgateway.dev.resource.PolicySpec.ExternalAuth.context:type_name -> agentgateway.dev.resource.PolicySpec.ExternalAuth.ContextEntry
	5,   // 82: agentgateway.dev.resource.PolicySpec.ExternalAuth.failure_mode:type_name -> agentgateway.dev.resource.PolicySpec.ExternalAuth.FailureMode
	85,  // 83: agentgateway.dev.resource.PolicySpec.ExternalAuth.include_request_body:type_name -> agentgateway.dev.resource.PolicySpec.ExternalAuth.BodyOptions
	96,  // 84: agentgateway.dev.resource.PolicySpec.ExternalAuth.timeout:type_name -> google.protobuf.Duration
	97,  // 85: agentgateway.dev.resource.PolicySpec.ExternalAuth.status_on_error:type_name -> google.protobuf.UInt32Value
	53,  // 86: agentgateway.dev.resource.PolicySpec.InferenceRouting.endpoint_picker:type_name -> agentgateway.dev.resource.BackendReference
	6,   // 87: agentgateway.dev.resource.PolicySpec.InferenceRouting.failure_mode:type_name -> agentgateway.dev.resource.PolicySpec.InferenceRouting.FailureMode
	98,  // 88: agentgateway.dev.resource.PolicySpec.BackendTLS.cert:type_name -> google.protobuf.BytesValue
	98,  // 89: agentgateway.dev.resource.PolicySpec.BackendTLS.key:type_name -> google.protobuf.BytesValue
	98,  // 90: agentgateway.dev.resource.PolicySpec.BackendTLS.root:type_name -> google.protobuf.BytesValue
	99,  // 91: agentgateway.dev.resource.PolicySpec.BackendTLS.insecure:type_name -> google.protobuf.BoolValue
	100, // 92: agentgateway.dev.resource.PolicySpec.BackendTLS.hostname:type_name -> google.protobuf.StringValue
	7,   // 93: agentgateway.dev.resource.PolicySpec.JWT.mode:type_name -> agentgateway.dev.resource.PolicySpec.JWT.Mode
	87,  // 94: agentgateway.dev.resource.PolicySpec.TransformationPolicy.request:type_name -> agentgateway.dev.resource.PolicySpec.TransformationPolicy.Transform
	87,  // 95: agentgateway.dev.resource.PolicySpec.TransformationPolicy.response:type_name -> agentgateway.dev.resource.PolicySpec.TransformationPolicy.Transform
	69,  // 96: agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Descriptor.entries:type_name -> agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Entry
	1,   // 97: agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Descriptor.type:type_name -> agentgateway.dev.resource.PolicySpec.RemoteRateLimit.Type
	70,  // 98: agentgateway.dev.resource.PolicySpec.Ai.PromptEnrichment.append:type_name -> agentgateway.dev.resource.PolicySpec.Ai.Message
	70,  // 99: agentgateway.dev.resource.PolicySpec.Ai.PromptEnrichment.prepend:type_name -> agentgateway.dev.resource.PolicySpec.Ai.Message
	3,   // 100: agentgateway.dev.resource.PolicySpec.Ai.RegexRule.builtin:type_name -> agentgateway.dev.resource.PolicySpec.Ai.BuiltinRegexRule
	72,  // 101: agentgateway.dev.resource.PolicySpec.Ai.RegexRule.regex:type_name -> agentgateway.dev.resource.PolicySpec.Ai.NamedRegex
	4,   // 102: agentgateway.dev.resource.PolicySpec.Ai.Action.kind:type_name -> agentgateway.dev.resource.PolicySpec.Ai.ActionKind
	78,  // 103: agentgateway.dev.resource.PolicySpec.Ai.Action.reject_response:type_name -> agentgateway.dev.resource.PolicySpec.Ai.RequestRejection
	74,  // 104: agentgateway.dev.resource.PolicySpec.Ai.RegexRules.action:type_name -> agentgateway.dev.resource.PolicySpec.Ai.Action
	73,  // 105: agentgateway.dev.resource.PolicySpec.Ai.RegexRules.rules:type_name -> agentgateway.dev.resource.PolicySpec.Ai.RegexRule
	35,  // 106: agentgateway.dev.resource.PolicySpec.Ai.Webhook.forward_header_matches:type_name -> agentgateway.dev.resource.HeaderMatch
	100, // 107: agentgateway.dev.resource.PolicySpec.Ai.Moderation.model:type_name -> google.protobuf.StringValue
	18,  // 108: agentgateway.dev.resource.PolicySpec.Ai.Moderation.auth:type_name -> agentgateway.dev.resource.BackendAuthPolicy
	75,  // 109: agentgateway.dev.resource.PolicySpec.Ai.ResponseGuard.regex:type_name -> agentgateway.dev.resource.PolicySpec.Ai.RegexRules
	76,  // 110: agentgateway.dev.resource.PolicySpec.Ai.ResponseGuard.webhook:type_name -> agentgateway.dev.resource.PolicySpec.Ai.Webhook
	78,  // 111: agentgateway.dev.resource.PolicySpec.Ai.RequestGuard.rejection:type_name -> agentgateway.dev.resource.PolicySpec.Ai.RequestRejection
	75,  // 112: agentgateway.dev.resource.PolicySpec.Ai.RequestGuard.regex:type_name -> agentgateway.dev.resource.PolicySpec.Ai.RegexRules
	76,  // 113: agentgateway.dev.resource.PolicySpec.Ai.RequestGuard.webhook:type_name -> agentgateway.dev.resource.PolicySpec.Ai.Webhook
	77,  // 114: agentgateway.dev.resource.PolicySpec.Ai.RequestGuard.openai_moderation:type_name -> agentgateway.dev.resource.PolicySpec.Ai.Moderation
	80,  // 115: agentgateway.dev.resource.PolicySpec.Ai.PromptGuard.request:type_name -> agentgateway.dev.resource.PolicySpec.Ai.RequestGuard
	79,  // 116: agentgateway.dev.resource.PolicySpec.Ai.PromptGuard.response:type_name -> agentgateway.dev.resource.PolicySpec.Ai.ResponseGuard
	65,  // 117: agentgateway.dev.resource.PolicySpec.TransformationPolicy.Transform.set:type_name -> agentgateway.dev.resource.PolicySpec.HeaderTransformation
	65,  // 118: agentgateway.dev.resource.PolicySpec.TransformationPolicy.Transform.add:type_name -> agentgateway.dev.resource.PolicySpec.HeaderTransformation
	66,  // 119: agentgateway.dev.resource.PolicySpec.TransformationPolicy.Transform.body:type_name -> agentgateway.dev.resource.PolicySpec.BodyTransformation
	100, // 120: agentgateway.dev.resource.AIBackend.OpenAI.model:type_name -> google.protobuf.StringValue
	100, // 121: agentgateway.dev.resource.AIBackend.Gemini.model:type_name -> google.protobuf.StringValue
	100, // 122: agentgateway.dev.resource.AIBackend.Vertex.model:type_name -> google.protobuf.StringValue
	100, // 123: agentgateway.dev.resource.AIBackend.Anthropic.model:type_name -> google.protobuf.StringValue
	100, // 124: agentgateway.dev.resource.AIBackend.Bedrock.model:type_name -> google.protobuf.StringValue
	100, // 125: agentgateway.dev.resource.AIBackend.Bedrock.guardrail_identifier:type_name -> google.protobuf.StringValue
	100, // 126: agentgateway.dev.resource.AIBackend.Bedrock.guardrail_version:type_name -> google.protobuf.StringValue
	88,  // 127: agentgateway.dev.resource.AIBackend.Provider.host_override:type_name -> agentgateway.dev.resource.AIBackend.HostOverride
	100, // 128: agentgateway.dev.resource.AIBackend.Provider.path_override:type_name -> google.protobuf.StringValue
	89,  // 129: agentgateway.dev.resource.AIBackend.Provider.openai:type_name -> agentgateway.dev.resource.AIBackend.OpenAI
	90,  // 130: agentgateway.dev.resource.AIBackend.Provider.gemini:type_name -> agentgateway.dev.resource.AIBackend.Gemini
	91,  // 131: agentgateway.dev.resource.AIBackend.Provider.vertex:type_name -> agentgateway.dev.resource.AIBackend.Vertex
	92,  // 132: agentgateway.dev.resource.AIBackend.Provider.anthropic:type_name -> agentgateway.dev.resource.AIBackend.Anthropic
	93,  // 133: agentgateway.dev.resource.AIBackend.Provider.bedrock:type_name -> agentgateway.dev.resource.AIBackend.Bedrock
	94,  // 134: agentgateway.dev.resource.AIBackend.ProviderGroup.providers:type_name -> agentgateway.dev.resource.AIBackend.Provider
	135, // [135:135] is the sub-list for method output_type
	135, // [135:135] is the sub-list for method input_type
	135, // [135:135] is the sub-list for extension type_name
	135, // [135:135] is the sub-list for extension extendee
	0,   // [0:135] is the sub-list for field type_name
}

func init() { file_resource_proto_init() }
func file_resource_proto_init() {
	if File_resource_proto != nil {
		return
	}
	file_resource_proto_msgTypes[0].OneofWrappers = []any{
		(*Resource_Bind)(nil),
		(*Resource_Listener)(nil),
		(*Resource_Route)(nil),
		(*Resource_Backend)(nil),
		(*Resource_Policy)(nil),
		(*Resource_TcpRoute)(nil),
	}
	file_resource_proto_msgTypes[8].OneofWrappers = []any{
		(*BackendAuthPolicy_Passthrough)(nil),
		(*BackendAuthPolicy_Key)(nil),
		(*BackendAuthPolicy_Gcp)(nil),
		(*BackendAuthPolicy_Aws)(nil),
		(*BackendAuthPolicy_Azure)(nil),
	}
	file_resource_proto_msgTypes[12].OneofWrappers = []any{
		(*Aws_ExplicitConfig)(nil),
		(*Aws_Implicit)(nil),
	}
	file_resource_proto_msgTypes[13].OneofWrappers = []any{
		(*Azure_ExplicitConfig)(nil),
		(*Azure_DeveloperImplicit)(nil),
	}
	file_resource_proto_msgTypes[14].OneofWrappers = []any{}
	file_resource_proto_msgTypes[16].OneofWrappers = []any{
		(*AzureExplicitConfig_ClientSecret)(nil),
		(*AzureExplicitConfig_ManagedIdentityCredential)(nil),
		(*AzureExplicitConfig_WorkloadIdentityCredential)(nil),
	}
	file_resource_proto_msgTypes[18].OneofWrappers = []any{}
	file_resource_proto_msgTypes[22].OneofWrappers = []any{
		(*PathMatch_Exact)(nil),
		(*PathMatch_PathPrefix)(nil),
		(*PathMatch_Regex)(nil),
	}
	file_resource_proto_msgTypes[23].OneofWrappers = []any{
		(*QueryMatch_Exact)(nil),
		(*QueryMatch_Regex)(nil),
	}
	file_resource_proto_msgTypes[25].OneofWrappers = []any{
		(*HeaderMatch_Exact)(nil),
		(*HeaderMatch_Regex)(nil),
	}
	file_resource_proto_msgTypes[26].OneofWrappers = []any{
		(*RouteFilter_RequestHeaderModifier)(nil),
		(*RouteFilter_ResponseHeaderModifier)(nil),
		(*RouteFilter_RequestRedirect)(nil),
		(*RouteFilter_UrlRewrite)(nil),
		(*RouteFilter_RequestMirror)(nil),
		(*RouteFilter_DirectResponse)(nil),
		(*RouteFilter_Cors)(nil),
	}
	file_resource_proto_msgTypes[31].OneofWrappers = []any{
		(*RequestRedirect_Full)(nil),
		(*RequestRedirect_Prefix)(nil),
	}
	file_resource_proto_msgTypes[32].OneofWrappers = []any{
		(*UrlRewrite_Full)(nil),
		(*UrlRewrite_Prefix)(nil),
	}
	file_resource_proto_msgTypes[35].OneofWrappers = []any{
		(*PolicyTarget_Gateway)(nil),
		(*PolicyTarget_Listener)(nil),
		(*PolicyTarget_Route)(nil),
		(*PolicyTarget_RouteRule)(nil),
		(*PolicyTarget_Backend)(nil),
		(*PolicyTarget_Service)(nil),
		(*PolicyTarget_SubBackend)(nil),
	}
	file_resource_proto_msgTypes[36].OneofWrappers = []any{
		(*PolicySpec_LocalRateLimit_)(nil),
		(*PolicySpec_ExtAuthz)(nil),
		(*PolicySpec_A2A_)(nil),
		(*PolicySpec_InferenceRouting_)(nil),
		(*PolicySpec_BackendTls)(nil),
		(*PolicySpec_Auth)(nil),
		(*PolicySpec_Authorization)(nil),
		(*PolicySpec_McpAuthorization)(nil),
		(*PolicySpec_Ai_)(nil),
		(*PolicySpec_Jwt)(nil),
		(*PolicySpec_Transformation)(nil),
		(*PolicySpec_RemoteRateLimit_)(nil),
		(*PolicySpec_Csrf)(nil),
	}
	file_resource_proto_msgTypes[38].OneofWrappers = []any{
		(*Backend_Static)(nil),
		(*Backend_Ai)(nil),
		(*Backend_Mcp)(nil),
	}
	file_resource_proto_msgTypes[43].OneofWrappers = []any{
		(*BackendReference_Service)(nil),
		(*BackendReference_Backend)(nil),
	}
	file_resource_proto_msgTypes[44].OneofWrappers = []any{
		(*AzureManagedIdentityCredential_UserAssignedIdentity_ClientId)(nil),
		(*AzureManagedIdentityCredential_UserAssignedIdentity_ObjectId)(nil),
		(*AzureManagedIdentityCredential_UserAssignedIdentity_ResourceId)(nil),
	}
	file_resource_proto_msgTypes[53].OneofWrappers = []any{
		(*PolicySpec_JWT_Inline)(nil),
	}
	file_resource_proto_msgTypes[63].OneofWrappers = []any{
		(*PolicySpec_Ai_RegexRule_Builtin)(nil),
		(*PolicySpec_Ai_RegexRule_Regex)(nil),
	}
	file_resource_proto_msgTypes[84].OneofWrappers = []any{
		(*AIBackend_Provider_Openai)(nil),
		(*AIBackend_Provider_Gemini)(nil),
		(*AIBackend_Provider_Vertex)(nil),
		(*AIBackend_Provider_Anthropic)(nil),
		(*AIBackend_Provider_Bedrock)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_resource_proto_rawDesc), len(file_resource_proto_rawDesc)),
			NumEnums:      10,
			NumMessages:   86,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_resource_proto_goTypes,
		DependencyIndexes: file_resource_proto_depIdxs,
		EnumInfos:         file_resource_proto_enumTypes,
		MessageInfos:      file_resource_proto_msgTypes,
	}.Build()
	File_resource_proto = out.File
	file_resource_proto_goTypes = nil
	file_resource_proto_depIdxs = nil
}
