// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v3.21.12
// source: kodex/projects/v1/project_catalog.proto

package projectsv1

import (
	v1 "github.com/codex-k8s/kodex/proto/gen/go/kodex/runtime/v1"
	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)
)

// ProjectStatus is the closed set of project lifecycle statuses.
type ProjectStatus int32

const (
	ProjectStatus_PROJECT_STATUS_UNSPECIFIED ProjectStatus = 0
	ProjectStatus_PROJECT_STATUS_ACTIVE      ProjectStatus = 1
	ProjectStatus_PROJECT_STATUS_ARCHIVED    ProjectStatus = 2
	ProjectStatus_PROJECT_STATUS_DISABLED    ProjectStatus = 3
)

// Enum value maps for ProjectStatus.
var (
	ProjectStatus_name = map[int32]string{
		0: "PROJECT_STATUS_UNSPECIFIED",
		1: "PROJECT_STATUS_ACTIVE",
		2: "PROJECT_STATUS_ARCHIVED",
		3: "PROJECT_STATUS_DISABLED",
	}
	ProjectStatus_value = map[string]int32{
		"PROJECT_STATUS_UNSPECIFIED": 0,
		"PROJECT_STATUS_ACTIVE":      1,
		"PROJECT_STATUS_ARCHIVED":    2,
		"PROJECT_STATUS_DISABLED":    3,
	}
)

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

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

func (ProjectStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[0].Descriptor()
}

func (ProjectStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[0]
}

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

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

// RepositoryProvider is the closed set of repository providers.
type RepositoryProvider int32

const (
	RepositoryProvider_REPOSITORY_PROVIDER_UNSPECIFIED RepositoryProvider = 0
	RepositoryProvider_REPOSITORY_PROVIDER_GITHUB      RepositoryProvider = 1
	RepositoryProvider_REPOSITORY_PROVIDER_GITLAB      RepositoryProvider = 2
)

// Enum value maps for RepositoryProvider.
var (
	RepositoryProvider_name = map[int32]string{
		0: "REPOSITORY_PROVIDER_UNSPECIFIED",
		1: "REPOSITORY_PROVIDER_GITHUB",
		2: "REPOSITORY_PROVIDER_GITLAB",
	}
	RepositoryProvider_value = map[string]int32{
		"REPOSITORY_PROVIDER_UNSPECIFIED": 0,
		"REPOSITORY_PROVIDER_GITHUB":      1,
		"REPOSITORY_PROVIDER_GITLAB":      2,
	}
)

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

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

func (RepositoryProvider) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[1].Descriptor()
}

func (RepositoryProvider) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[1]
}

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

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

// RepositoryStatus is the closed set of repository binding statuses.
type RepositoryStatus int32

const (
	RepositoryStatus_REPOSITORY_STATUS_UNSPECIFIED RepositoryStatus = 0
	RepositoryStatus_REPOSITORY_STATUS_ACTIVE      RepositoryStatus = 1
	RepositoryStatus_REPOSITORY_STATUS_PENDING     RepositoryStatus = 2
	RepositoryStatus_REPOSITORY_STATUS_BLOCKED     RepositoryStatus = 3
	RepositoryStatus_REPOSITORY_STATUS_ARCHIVED    RepositoryStatus = 4
)

// Enum value maps for RepositoryStatus.
var (
	RepositoryStatus_name = map[int32]string{
		0: "REPOSITORY_STATUS_UNSPECIFIED",
		1: "REPOSITORY_STATUS_ACTIVE",
		2: "REPOSITORY_STATUS_PENDING",
		3: "REPOSITORY_STATUS_BLOCKED",
		4: "REPOSITORY_STATUS_ARCHIVED",
	}
	RepositoryStatus_value = map[string]int32{
		"REPOSITORY_STATUS_UNSPECIFIED": 0,
		"REPOSITORY_STATUS_ACTIVE":      1,
		"REPOSITORY_STATUS_PENDING":     2,
		"REPOSITORY_STATUS_BLOCKED":     3,
		"REPOSITORY_STATUS_ARCHIVED":    4,
	}
)

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

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

func (RepositoryStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[2].Descriptor()
}

func (RepositoryStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[2]
}

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

// Deprecated: Use RepositoryStatus.Descriptor instead.
func (RepositoryStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{2}
}

// RepositoryOwnerKind selects provider-side repository owner semantics.
type RepositoryOwnerKind int32

const (
	RepositoryOwnerKind_REPOSITORY_OWNER_KIND_UNSPECIFIED        RepositoryOwnerKind = 0
	RepositoryOwnerKind_REPOSITORY_OWNER_KIND_ORGANIZATION       RepositoryOwnerKind = 1
	RepositoryOwnerKind_REPOSITORY_OWNER_KIND_AUTHENTICATED_USER RepositoryOwnerKind = 2
)

// Enum value maps for RepositoryOwnerKind.
var (
	RepositoryOwnerKind_name = map[int32]string{
		0: "REPOSITORY_OWNER_KIND_UNSPECIFIED",
		1: "REPOSITORY_OWNER_KIND_ORGANIZATION",
		2: "REPOSITORY_OWNER_KIND_AUTHENTICATED_USER",
	}
	RepositoryOwnerKind_value = map[string]int32{
		"REPOSITORY_OWNER_KIND_UNSPECIFIED":        0,
		"REPOSITORY_OWNER_KIND_ORGANIZATION":       1,
		"REPOSITORY_OWNER_KIND_AUTHENTICATED_USER": 2,
	}
)

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

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

func (RepositoryOwnerKind) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[3].Descriptor()
}

func (RepositoryOwnerKind) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[3]
}

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

// Deprecated: Use RepositoryOwnerKind.Descriptor instead.
func (RepositoryOwnerKind) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{3}
}

// RepositoryVisibility selects provider-side repository visibility.
type RepositoryVisibility int32

const (
	RepositoryVisibility_REPOSITORY_VISIBILITY_UNSPECIFIED RepositoryVisibility = 0
	RepositoryVisibility_REPOSITORY_VISIBILITY_PUBLIC      RepositoryVisibility = 1
	RepositoryVisibility_REPOSITORY_VISIBILITY_PRIVATE     RepositoryVisibility = 2
	RepositoryVisibility_REPOSITORY_VISIBILITY_INTERNAL    RepositoryVisibility = 3
)

// Enum value maps for RepositoryVisibility.
var (
	RepositoryVisibility_name = map[int32]string{
		0: "REPOSITORY_VISIBILITY_UNSPECIFIED",
		1: "REPOSITORY_VISIBILITY_PUBLIC",
		2: "REPOSITORY_VISIBILITY_PRIVATE",
		3: "REPOSITORY_VISIBILITY_INTERNAL",
	}
	RepositoryVisibility_value = map[string]int32{
		"REPOSITORY_VISIBILITY_UNSPECIFIED": 0,
		"REPOSITORY_VISIBILITY_PUBLIC":      1,
		"REPOSITORY_VISIBILITY_PRIVATE":     2,
		"REPOSITORY_VISIBILITY_INTERNAL":    3,
	}
)

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

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

func (RepositoryVisibility) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[4].Descriptor()
}

func (RepositoryVisibility) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[4]
}

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

// Deprecated: Use RepositoryVisibility.Descriptor instead.
func (RepositoryVisibility) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{4}
}

// ServicesPolicyValidationStatus is the validation state of imported services.yaml.
type ServicesPolicyValidationStatus int32

const (
	ServicesPolicyValidationStatus_SERVICES_POLICY_VALIDATION_STATUS_UNSPECIFIED ServicesPolicyValidationStatus = 0
	ServicesPolicyValidationStatus_SERVICES_POLICY_VALIDATION_STATUS_VALID       ServicesPolicyValidationStatus = 1
	ServicesPolicyValidationStatus_SERVICES_POLICY_VALIDATION_STATUS_INVALID     ServicesPolicyValidationStatus = 2
	ServicesPolicyValidationStatus_SERVICES_POLICY_VALIDATION_STATUS_STALE       ServicesPolicyValidationStatus = 3
)

// Enum value maps for ServicesPolicyValidationStatus.
var (
	ServicesPolicyValidationStatus_name = map[int32]string{
		0: "SERVICES_POLICY_VALIDATION_STATUS_UNSPECIFIED",
		1: "SERVICES_POLICY_VALIDATION_STATUS_VALID",
		2: "SERVICES_POLICY_VALIDATION_STATUS_INVALID",
		3: "SERVICES_POLICY_VALIDATION_STATUS_STALE",
	}
	ServicesPolicyValidationStatus_value = map[string]int32{
		"SERVICES_POLICY_VALIDATION_STATUS_UNSPECIFIED": 0,
		"SERVICES_POLICY_VALIDATION_STATUS_VALID":       1,
		"SERVICES_POLICY_VALIDATION_STATUS_INVALID":     2,
		"SERVICES_POLICY_VALIDATION_STATUS_STALE":       3,
	}
)

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

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

func (ServicesPolicyValidationStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[5].Descriptor()
}

func (ServicesPolicyValidationStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[5]
}

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

// Deprecated: Use ServicesPolicyValidationStatus.Descriptor instead.
func (ServicesPolicyValidationStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{5}
}

// ServicesPolicyProjectionStatus is the projection state of imported services.yaml.
type ServicesPolicyProjectionStatus int32

const (
	ServicesPolicyProjectionStatus_SERVICES_POLICY_PROJECTION_STATUS_UNSPECIFIED ServicesPolicyProjectionStatus = 0
	ServicesPolicyProjectionStatus_SERVICES_POLICY_PROJECTION_STATUS_SYNCED      ServicesPolicyProjectionStatus = 1
	ServicesPolicyProjectionStatus_SERVICES_POLICY_PROJECTION_STATUS_PENDING     ServicesPolicyProjectionStatus = 2
	ServicesPolicyProjectionStatus_SERVICES_POLICY_PROJECTION_STATUS_FAILED      ServicesPolicyProjectionStatus = 3
	ServicesPolicyProjectionStatus_SERVICES_POLICY_PROJECTION_STATUS_OVERRIDDEN  ServicesPolicyProjectionStatus = 4
)

// Enum value maps for ServicesPolicyProjectionStatus.
var (
	ServicesPolicyProjectionStatus_name = map[int32]string{
		0: "SERVICES_POLICY_PROJECTION_STATUS_UNSPECIFIED",
		1: "SERVICES_POLICY_PROJECTION_STATUS_SYNCED",
		2: "SERVICES_POLICY_PROJECTION_STATUS_PENDING",
		3: "SERVICES_POLICY_PROJECTION_STATUS_FAILED",
		4: "SERVICES_POLICY_PROJECTION_STATUS_OVERRIDDEN",
	}
	ServicesPolicyProjectionStatus_value = map[string]int32{
		"SERVICES_POLICY_PROJECTION_STATUS_UNSPECIFIED": 0,
		"SERVICES_POLICY_PROJECTION_STATUS_SYNCED":      1,
		"SERVICES_POLICY_PROJECTION_STATUS_PENDING":     2,
		"SERVICES_POLICY_PROJECTION_STATUS_FAILED":      3,
		"SERVICES_POLICY_PROJECTION_STATUS_OVERRIDDEN":  4,
	}
)

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

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

func (ServicesPolicyProjectionStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[6].Descriptor()
}

func (ServicesPolicyProjectionStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[6]
}

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

// Deprecated: Use ServicesPolicyProjectionStatus.Descriptor instead.
func (ServicesPolicyProjectionStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{6}
}

// SelfDeploySignalStatus описывает готовность project-side self-deploy input.
type SelfDeploySignalStatus int32

const (
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_UNSPECIFIED                     SelfDeploySignalStatus = 0
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_READY                           SelfDeploySignalStatus = 1
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_NEEDS_SERVICES_POLICY_RECONCILE SelfDeploySignalStatus = 2
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_FOUND       SelfDeploySignalStatus = 3
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_READY       SelfDeploySignalStatus = 4
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_REPOSITORY_BINDING_NOT_FOUND    SelfDeploySignalStatus = 5
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_FOUND       SelfDeploySignalStatus = 6
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_READY       SelfDeploySignalStatus = 7
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_NOT_DEPLOY_RELEVANT             SelfDeploySignalStatus = 8
	SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_NEEDS_REPOSITORY_CHANGE_SUMMARY SelfDeploySignalStatus = 9
)

// Enum value maps for SelfDeploySignalStatus.
var (
	SelfDeploySignalStatus_name = map[int32]string{
		0: "SELF_DEPLOY_SIGNAL_STATUS_UNSPECIFIED",
		1: "SELF_DEPLOY_SIGNAL_STATUS_READY",
		2: "SELF_DEPLOY_SIGNAL_STATUS_NEEDS_SERVICES_POLICY_RECONCILE",
		3: "SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_FOUND",
		4: "SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_READY",
		5: "SELF_DEPLOY_SIGNAL_STATUS_REPOSITORY_BINDING_NOT_FOUND",
		6: "SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_FOUND",
		7: "SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_READY",
		8: "SELF_DEPLOY_SIGNAL_STATUS_NOT_DEPLOY_RELEVANT",
		9: "SELF_DEPLOY_SIGNAL_STATUS_NEEDS_REPOSITORY_CHANGE_SUMMARY",
	}
	SelfDeploySignalStatus_value = map[string]int32{
		"SELF_DEPLOY_SIGNAL_STATUS_UNSPECIFIED":                     0,
		"SELF_DEPLOY_SIGNAL_STATUS_READY":                           1,
		"SELF_DEPLOY_SIGNAL_STATUS_NEEDS_SERVICES_POLICY_RECONCILE": 2,
		"SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_FOUND":       3,
		"SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_READY":       4,
		"SELF_DEPLOY_SIGNAL_STATUS_REPOSITORY_BINDING_NOT_FOUND":    5,
		"SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_FOUND":       6,
		"SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_READY":       7,
		"SELF_DEPLOY_SIGNAL_STATUS_NOT_DEPLOY_RELEVANT":             8,
		"SELF_DEPLOY_SIGNAL_STATUS_NEEDS_REPOSITORY_CHANGE_SUMMARY": 9,
	}
)

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

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

func (SelfDeploySignalStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[7].Descriptor()
}

func (SelfDeploySignalStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[7]
}

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

// Deprecated: Use SelfDeploySignalStatus.Descriptor instead.
func (SelfDeploySignalStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{7}
}

// SelfDeployBuildPlanStatus описывает готовность проверенного build plan для runtime-manager JOB_TYPE_BUILD.
type SelfDeployBuildPlanStatus int32

const (
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_UNSPECIFIED               SelfDeployBuildPlanStatus = 0
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_READY                     SelfDeployBuildPlanStatus = 1
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_PLAN_UNAVAILABLE    SelfDeployBuildPlanStatus = 2
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_POLICY_STALE              SelfDeployBuildPlanStatus = 3
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_SERVICE_NOT_FOUND         SelfDeployBuildPlanStatus = 4
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_INVALID_INPUT             SelfDeployBuildPlanStatus = 5
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_UNAVAILABLE SelfDeployBuildPlanStatus = 6
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_REQUIRED    SelfDeployBuildPlanStatus = 7
	SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_INVALID     SelfDeployBuildPlanStatus = 8
)

// Enum value maps for SelfDeployBuildPlanStatus.
var (
	SelfDeployBuildPlanStatus_name = map[int32]string{
		0: "SELF_DEPLOY_BUILD_PLAN_STATUS_UNSPECIFIED",
		1: "SELF_DEPLOY_BUILD_PLAN_STATUS_READY",
		2: "SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_PLAN_UNAVAILABLE",
		3: "SELF_DEPLOY_BUILD_PLAN_STATUS_POLICY_STALE",
		4: "SELF_DEPLOY_BUILD_PLAN_STATUS_SERVICE_NOT_FOUND",
		5: "SELF_DEPLOY_BUILD_PLAN_STATUS_INVALID_INPUT",
		6: "SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_UNAVAILABLE",
		7: "SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_REQUIRED",
		8: "SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_INVALID",
	}
	SelfDeployBuildPlanStatus_value = map[string]int32{
		"SELF_DEPLOY_BUILD_PLAN_STATUS_UNSPECIFIED":               0,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_READY":                     1,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_PLAN_UNAVAILABLE":    2,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_POLICY_STALE":              3,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_SERVICE_NOT_FOUND":         4,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_INVALID_INPUT":             5,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_UNAVAILABLE": 6,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_REQUIRED":    7,
		"SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_INVALID":     8,
	}
)

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

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

func (SelfDeployBuildPlanStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[8].Descriptor()
}

func (SelfDeployBuildPlanStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[8]
}

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

// Deprecated: Use SelfDeployBuildPlanStatus.Descriptor instead.
func (SelfDeployBuildPlanStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{8}
}

// SelfDeployBuildPlanItemStatus описывает готовность build item одного сервиса.
type SelfDeployBuildPlanItemStatus int32

const (
	SelfDeployBuildPlanItemStatus_SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_UNSPECIFIED            SelfDeployBuildPlanItemStatus = 0
	SelfDeployBuildPlanItemStatus_SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_READY                  SelfDeployBuildPlanItemStatus = 1
	SelfDeployBuildPlanItemStatus_SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_REQUIRED SelfDeployBuildPlanItemStatus = 2
	SelfDeployBuildPlanItemStatus_SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_INVALID  SelfDeployBuildPlanItemStatus = 3
	SelfDeployBuildPlanItemStatus_SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_PLAN_UNAVAILABLE SelfDeployBuildPlanItemStatus = 4
)

// Enum value maps for SelfDeployBuildPlanItemStatus.
var (
	SelfDeployBuildPlanItemStatus_name = map[int32]string{
		0: "SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_UNSPECIFIED",
		1: "SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_READY",
		2: "SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_REQUIRED",
		3: "SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_INVALID",
		4: "SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_PLAN_UNAVAILABLE",
	}
	SelfDeployBuildPlanItemStatus_value = map[string]int32{
		"SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_UNSPECIFIED":            0,
		"SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_READY":                  1,
		"SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_REQUIRED": 2,
		"SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_INVALID":  3,
		"SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_PLAN_UNAVAILABLE": 4,
	}
)

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

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

func (SelfDeployBuildPlanItemStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[9].Descriptor()
}

func (SelfDeployBuildPlanItemStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[9]
}

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

// Deprecated: Use SelfDeployBuildPlanItemStatus.Descriptor instead.
func (SelfDeployBuildPlanItemStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{9}
}

// SelfDeployDeployPlanStatus описывает готовность checked deploy plan для runtime-manager JOB_TYPE_DEPLOY.
type SelfDeployDeployPlanStatus int32

const (
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_UNSPECIFIED             SelfDeployDeployPlanStatus = 0
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_READY                   SelfDeployDeployPlanStatus = 1
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_DEPLOY_PLAN_UNAVAILABLE SelfDeployDeployPlanStatus = 2
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_POLICY_STALE            SelfDeployDeployPlanStatus = 3
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_SERVICE_NOT_FOUND       SelfDeployDeployPlanStatus = 4
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_INVALID_INPUT           SelfDeployDeployPlanStatus = 5
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_NOT_READY         SelfDeployDeployPlanStatus = 6
	SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_OUTPUT_INVALID    SelfDeployDeployPlanStatus = 7
)

// Enum value maps for SelfDeployDeployPlanStatus.
var (
	SelfDeployDeployPlanStatus_name = map[int32]string{
		0: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_UNSPECIFIED",
		1: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_READY",
		2: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_DEPLOY_PLAN_UNAVAILABLE",
		3: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_POLICY_STALE",
		4: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_SERVICE_NOT_FOUND",
		5: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_INVALID_INPUT",
		6: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_NOT_READY",
		7: "SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_OUTPUT_INVALID",
	}
	SelfDeployDeployPlanStatus_value = map[string]int32{
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_UNSPECIFIED":             0,
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_READY":                   1,
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_DEPLOY_PLAN_UNAVAILABLE": 2,
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_POLICY_STALE":            3,
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_SERVICE_NOT_FOUND":       4,
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_INVALID_INPUT":           5,
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_NOT_READY":         6,
		"SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_OUTPUT_INVALID":    7,
	}
)

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

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

func (SelfDeployDeployPlanStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[10].Descriptor()
}

func (SelfDeployDeployPlanStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[10]
}

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

// Deprecated: Use SelfDeployDeployPlanStatus.Descriptor instead.
func (SelfDeployDeployPlanStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{10}
}

// SelfDeployDeployPlanItemStatus описывает готовность deploy item одного сервиса.
type SelfDeployDeployPlanItemStatus int32

const (
	SelfDeployDeployPlanItemStatus_SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_UNSPECIFIED             SelfDeployDeployPlanItemStatus = 0
	SelfDeployDeployPlanItemStatus_SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_READY                   SelfDeployDeployPlanItemStatus = 1
	SelfDeployDeployPlanItemStatus_SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_NOT_READY         SelfDeployDeployPlanItemStatus = 2
	SelfDeployDeployPlanItemStatus_SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_OUTPUT_INVALID    SelfDeployDeployPlanItemStatus = 3
	SelfDeployDeployPlanItemStatus_SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_DEPLOY_PLAN_UNAVAILABLE SelfDeployDeployPlanItemStatus = 4
)

// Enum value maps for SelfDeployDeployPlanItemStatus.
var (
	SelfDeployDeployPlanItemStatus_name = map[int32]string{
		0: "SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_UNSPECIFIED",
		1: "SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_READY",
		2: "SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_NOT_READY",
		3: "SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_OUTPUT_INVALID",
		4: "SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_DEPLOY_PLAN_UNAVAILABLE",
	}
	SelfDeployDeployPlanItemStatus_value = map[string]int32{
		"SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_UNSPECIFIED":             0,
		"SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_READY":                   1,
		"SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_NOT_READY":         2,
		"SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_OUTPUT_INVALID":    3,
		"SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_DEPLOY_PLAN_UNAVAILABLE": 4,
	}
)

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

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

func (SelfDeployDeployPlanItemStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[11].Descriptor()
}

func (SelfDeployDeployPlanItemStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[11]
}

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

// Deprecated: Use SelfDeployDeployPlanItemStatus.Descriptor instead.
func (SelfDeployDeployPlanItemStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{11}
}

// SelfDeployPathCategory классифицирует изменённые пути без raw paths и diffs.
type SelfDeployPathCategory int32

const (
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_UNSPECIFIED     SelfDeployPathCategory = 0
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_SERVICES_POLICY SelfDeployPathCategory = 1
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_SERVICE_SOURCE  SelfDeployPathCategory = 2
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_SERVICE_CONFIG  SelfDeployPathCategory = 3
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_DEPLOY_MANIFEST SelfDeployPathCategory = 4
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_RUNTIME_CONFIG  SelfDeployPathCategory = 5
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_DOCUMENTATION   SelfDeployPathCategory = 6
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_TEST            SelfDeployPathCategory = 7
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_PLATFORM_POLICY SelfDeployPathCategory = 8
	SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_OTHER           SelfDeployPathCategory = 9
)

// Enum value maps for SelfDeployPathCategory.
var (
	SelfDeployPathCategory_name = map[int32]string{
		0: "SELF_DEPLOY_PATH_CATEGORY_UNSPECIFIED",
		1: "SELF_DEPLOY_PATH_CATEGORY_SERVICES_POLICY",
		2: "SELF_DEPLOY_PATH_CATEGORY_SERVICE_SOURCE",
		3: "SELF_DEPLOY_PATH_CATEGORY_SERVICE_CONFIG",
		4: "SELF_DEPLOY_PATH_CATEGORY_DEPLOY_MANIFEST",
		5: "SELF_DEPLOY_PATH_CATEGORY_RUNTIME_CONFIG",
		6: "SELF_DEPLOY_PATH_CATEGORY_DOCUMENTATION",
		7: "SELF_DEPLOY_PATH_CATEGORY_TEST",
		8: "SELF_DEPLOY_PATH_CATEGORY_PLATFORM_POLICY",
		9: "SELF_DEPLOY_PATH_CATEGORY_OTHER",
	}
	SelfDeployPathCategory_value = map[string]int32{
		"SELF_DEPLOY_PATH_CATEGORY_UNSPECIFIED":     0,
		"SELF_DEPLOY_PATH_CATEGORY_SERVICES_POLICY": 1,
		"SELF_DEPLOY_PATH_CATEGORY_SERVICE_SOURCE":  2,
		"SELF_DEPLOY_PATH_CATEGORY_SERVICE_CONFIG":  3,
		"SELF_DEPLOY_PATH_CATEGORY_DEPLOY_MANIFEST": 4,
		"SELF_DEPLOY_PATH_CATEGORY_RUNTIME_CONFIG":  5,
		"SELF_DEPLOY_PATH_CATEGORY_DOCUMENTATION":   6,
		"SELF_DEPLOY_PATH_CATEGORY_TEST":            7,
		"SELF_DEPLOY_PATH_CATEGORY_PLATFORM_POLICY": 8,
		"SELF_DEPLOY_PATH_CATEGORY_OTHER":           9,
	}
)

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

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

func (SelfDeployPathCategory) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[12].Descriptor()
}

func (SelfDeployPathCategory) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[12]
}

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

// Deprecated: Use SelfDeployPathCategory.Descriptor instead.
func (SelfDeployPathCategory) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{12}
}

// SelfDeployExpectedRuntimeJobType задаёт project-side safe подсказку типа runtime job.
type SelfDeployExpectedRuntimeJobType int32

const (
	SelfDeployExpectedRuntimeJobType_SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_UNSPECIFIED  SelfDeployExpectedRuntimeJobType = 0
	SelfDeployExpectedRuntimeJobType_SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_BUILD        SelfDeployExpectedRuntimeJobType = 1
	SelfDeployExpectedRuntimeJobType_SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_DEPLOY       SelfDeployExpectedRuntimeJobType = 2
	SelfDeployExpectedRuntimeJobType_SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_HEALTH_CHECK SelfDeployExpectedRuntimeJobType = 3
)

// Enum value maps for SelfDeployExpectedRuntimeJobType.
var (
	SelfDeployExpectedRuntimeJobType_name = map[int32]string{
		0: "SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_UNSPECIFIED",
		1: "SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_BUILD",
		2: "SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_DEPLOY",
		3: "SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_HEALTH_CHECK",
	}
	SelfDeployExpectedRuntimeJobType_value = map[string]int32{
		"SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_UNSPECIFIED":  0,
		"SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_BUILD":        1,
		"SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_DEPLOY":       2,
		"SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_HEALTH_CHECK": 3,
	}
)

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

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

func (SelfDeployExpectedRuntimeJobType) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[13].Descriptor()
}

func (SelfDeployExpectedRuntimeJobType) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[13]
}

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

// Deprecated: Use SelfDeployExpectedRuntimeJobType.Descriptor instead.
func (SelfDeployExpectedRuntimeJobType) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{13}
}

// ServiceKind classifies a service described by services.yaml.
type ServiceKind int32

const (
	ServiceKind_SERVICE_KIND_UNSPECIFIED   ServiceKind = 0
	ServiceKind_SERVICE_KIND_BACKEND       ServiceKind = 1
	ServiceKind_SERVICE_KIND_FRONTEND      ServiceKind = 2
	ServiceKind_SERVICE_KIND_WORKER        ServiceKind = 3
	ServiceKind_SERVICE_KIND_DOCUMENTATION ServiceKind = 4
	ServiceKind_SERVICE_KIND_PACKAGE       ServiceKind = 5
	ServiceKind_SERVICE_KIND_OTHER         ServiceKind = 6
)

// Enum value maps for ServiceKind.
var (
	ServiceKind_name = map[int32]string{
		0: "SERVICE_KIND_UNSPECIFIED",
		1: "SERVICE_KIND_BACKEND",
		2: "SERVICE_KIND_FRONTEND",
		3: "SERVICE_KIND_WORKER",
		4: "SERVICE_KIND_DOCUMENTATION",
		5: "SERVICE_KIND_PACKAGE",
		6: "SERVICE_KIND_OTHER",
	}
	ServiceKind_value = map[string]int32{
		"SERVICE_KIND_UNSPECIFIED":   0,
		"SERVICE_KIND_BACKEND":       1,
		"SERVICE_KIND_FRONTEND":      2,
		"SERVICE_KIND_WORKER":        3,
		"SERVICE_KIND_DOCUMENTATION": 4,
		"SERVICE_KIND_PACKAGE":       5,
		"SERVICE_KIND_OTHER":         6,
	}
)

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

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

func (ServiceKind) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[14].Descriptor()
}

func (ServiceKind) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[14]
}

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

// Deprecated: Use ServiceKind.Descriptor instead.
func (ServiceKind) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{14}
}

// ServiceStatus is the closed set of service descriptor statuses.
type ServiceStatus int32

const (
	ServiceStatus_SERVICE_STATUS_UNSPECIFIED ServiceStatus = 0
	ServiceStatus_SERVICE_STATUS_ACTIVE      ServiceStatus = 1
	ServiceStatus_SERVICE_STATUS_DISABLED    ServiceStatus = 2
	ServiceStatus_SERVICE_STATUS_STALE       ServiceStatus = 3
)

// Enum value maps for ServiceStatus.
var (
	ServiceStatus_name = map[int32]string{
		0: "SERVICE_STATUS_UNSPECIFIED",
		1: "SERVICE_STATUS_ACTIVE",
		2: "SERVICE_STATUS_DISABLED",
		3: "SERVICE_STATUS_STALE",
	}
	ServiceStatus_value = map[string]int32{
		"SERVICE_STATUS_UNSPECIFIED": 0,
		"SERVICE_STATUS_ACTIVE":      1,
		"SERVICE_STATUS_DISABLED":    2,
		"SERVICE_STATUS_STALE":       3,
	}
)

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

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

func (ServiceStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[15].Descriptor()
}

func (ServiceStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[15]
}

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

// Deprecated: Use ServiceStatus.Descriptor instead.
func (ServiceStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{15}
}

// DocumentationScopeType classifies where documentation source applies.
type DocumentationScopeType int32

const (
	DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED  DocumentationScopeType = 0
	DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_PROJECT      DocumentationScopeType = 1
	DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_SERVICE      DocumentationScopeType = 2
	DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_DEPENDENCY   DocumentationScopeType = 3
	DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_GUIDANCE_REF DocumentationScopeType = 4
)

// Enum value maps for DocumentationScopeType.
var (
	DocumentationScopeType_name = map[int32]string{
		0: "DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED",
		1: "DOCUMENTATION_SCOPE_TYPE_PROJECT",
		2: "DOCUMENTATION_SCOPE_TYPE_SERVICE",
		3: "DOCUMENTATION_SCOPE_TYPE_DEPENDENCY",
		4: "DOCUMENTATION_SCOPE_TYPE_GUIDANCE_REF",
	}
	DocumentationScopeType_value = map[string]int32{
		"DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED":  0,
		"DOCUMENTATION_SCOPE_TYPE_PROJECT":      1,
		"DOCUMENTATION_SCOPE_TYPE_SERVICE":      2,
		"DOCUMENTATION_SCOPE_TYPE_DEPENDENCY":   3,
		"DOCUMENTATION_SCOPE_TYPE_GUIDANCE_REF": 4,
	}
)

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

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

func (DocumentationScopeType) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[16].Descriptor()
}

func (DocumentationScopeType) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[16]
}

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

// Deprecated: Use DocumentationScopeType.Descriptor instead.
func (DocumentationScopeType) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{16}
}

// DocumentationAccessMode controls whether an agent may edit a documentation source.
type DocumentationAccessMode int32

const (
	DocumentationAccessMode_DOCUMENTATION_ACCESS_MODE_UNSPECIFIED DocumentationAccessMode = 0
	DocumentationAccessMode_DOCUMENTATION_ACCESS_MODE_READ        DocumentationAccessMode = 1
	DocumentationAccessMode_DOCUMENTATION_ACCESS_MODE_WRITE       DocumentationAccessMode = 2
)

// Enum value maps for DocumentationAccessMode.
var (
	DocumentationAccessMode_name = map[int32]string{
		0: "DOCUMENTATION_ACCESS_MODE_UNSPECIFIED",
		1: "DOCUMENTATION_ACCESS_MODE_READ",
		2: "DOCUMENTATION_ACCESS_MODE_WRITE",
	}
	DocumentationAccessMode_value = map[string]int32{
		"DOCUMENTATION_ACCESS_MODE_UNSPECIFIED": 0,
		"DOCUMENTATION_ACCESS_MODE_READ":        1,
		"DOCUMENTATION_ACCESS_MODE_WRITE":       2,
	}
)

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

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

func (DocumentationAccessMode) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[17].Descriptor()
}

func (DocumentationAccessMode) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[17]
}

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

// Deprecated: Use DocumentationAccessMode.Descriptor instead.
func (DocumentationAccessMode) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{17}
}

// SourceAccessMode controls whether a workspace source is editable.
type SourceAccessMode int32

const (
	SourceAccessMode_SOURCE_ACCESS_MODE_UNSPECIFIED SourceAccessMode = 0
	SourceAccessMode_SOURCE_ACCESS_MODE_READ        SourceAccessMode = 1
	SourceAccessMode_SOURCE_ACCESS_MODE_WRITE       SourceAccessMode = 2
)

// Enum value maps for SourceAccessMode.
var (
	SourceAccessMode_name = map[int32]string{
		0: "SOURCE_ACCESS_MODE_UNSPECIFIED",
		1: "SOURCE_ACCESS_MODE_READ",
		2: "SOURCE_ACCESS_MODE_WRITE",
	}
	SourceAccessMode_value = map[string]int32{
		"SOURCE_ACCESS_MODE_UNSPECIFIED": 0,
		"SOURCE_ACCESS_MODE_READ":        1,
		"SOURCE_ACCESS_MODE_WRITE":       2,
	}
)

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

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

func (SourceAccessMode) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[18].Descriptor()
}

func (SourceAccessMode) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[18]
}

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

// Deprecated: Use SourceAccessMode.Descriptor instead.
func (SourceAccessMode) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{18}
}

// DocumentationSourceStatus is the closed set of documentation source statuses.
type DocumentationSourceStatus int32

const (
	DocumentationSourceStatus_DOCUMENTATION_SOURCE_STATUS_UNSPECIFIED DocumentationSourceStatus = 0
	DocumentationSourceStatus_DOCUMENTATION_SOURCE_STATUS_ACTIVE      DocumentationSourceStatus = 1
	DocumentationSourceStatus_DOCUMENTATION_SOURCE_STATUS_DISABLED    DocumentationSourceStatus = 2
	DocumentationSourceStatus_DOCUMENTATION_SOURCE_STATUS_BLOCKED     DocumentationSourceStatus = 3
)

// Enum value maps for DocumentationSourceStatus.
var (
	DocumentationSourceStatus_name = map[int32]string{
		0: "DOCUMENTATION_SOURCE_STATUS_UNSPECIFIED",
		1: "DOCUMENTATION_SOURCE_STATUS_ACTIVE",
		2: "DOCUMENTATION_SOURCE_STATUS_DISABLED",
		3: "DOCUMENTATION_SOURCE_STATUS_BLOCKED",
	}
	DocumentationSourceStatus_value = map[string]int32{
		"DOCUMENTATION_SOURCE_STATUS_UNSPECIFIED": 0,
		"DOCUMENTATION_SOURCE_STATUS_ACTIVE":      1,
		"DOCUMENTATION_SOURCE_STATUS_DISABLED":    2,
		"DOCUMENTATION_SOURCE_STATUS_BLOCKED":     3,
	}
)

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

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

func (DocumentationSourceStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[19].Descriptor()
}

func (DocumentationSourceStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[19]
}

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

// Deprecated: Use DocumentationSourceStatus.Descriptor instead.
func (DocumentationSourceStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{19}
}

// MergePolicy is the closed set of merge strategies allowed by branch rules.
type MergePolicy int32

const (
	MergePolicy_MERGE_POLICY_UNSPECIFIED MergePolicy = 0
	MergePolicy_MERGE_POLICY_MERGE       MergePolicy = 1
	MergePolicy_MERGE_POLICY_SQUASH      MergePolicy = 2
	MergePolicy_MERGE_POLICY_REBASE      MergePolicy = 3
	MergePolicy_MERGE_POLICY_MANUAL      MergePolicy = 4
)

// Enum value maps for MergePolicy.
var (
	MergePolicy_name = map[int32]string{
		0: "MERGE_POLICY_UNSPECIFIED",
		1: "MERGE_POLICY_MERGE",
		2: "MERGE_POLICY_SQUASH",
		3: "MERGE_POLICY_REBASE",
		4: "MERGE_POLICY_MANUAL",
	}
	MergePolicy_value = map[string]int32{
		"MERGE_POLICY_UNSPECIFIED": 0,
		"MERGE_POLICY_MERGE":       1,
		"MERGE_POLICY_SQUASH":      2,
		"MERGE_POLICY_REBASE":      3,
		"MERGE_POLICY_MANUAL":      4,
	}
)

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

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

func (MergePolicy) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[20].Descriptor()
}

func (MergePolicy) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[20]
}

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

// Deprecated: Use MergePolicy.Descriptor instead.
func (MergePolicy) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{20}
}

// BranchRulesStatus is the closed set of branch rule statuses.
type BranchRulesStatus int32

const (
	BranchRulesStatus_BRANCH_RULES_STATUS_UNSPECIFIED BranchRulesStatus = 0
	BranchRulesStatus_BRANCH_RULES_STATUS_ACTIVE      BranchRulesStatus = 1
	BranchRulesStatus_BRANCH_RULES_STATUS_DISABLED    BranchRulesStatus = 2
)

// Enum value maps for BranchRulesStatus.
var (
	BranchRulesStatus_name = map[int32]string{
		0: "BRANCH_RULES_STATUS_UNSPECIFIED",
		1: "BRANCH_RULES_STATUS_ACTIVE",
		2: "BRANCH_RULES_STATUS_DISABLED",
	}
	BranchRulesStatus_value = map[string]int32{
		"BRANCH_RULES_STATUS_UNSPECIFIED": 0,
		"BRANCH_RULES_STATUS_ACTIVE":      1,
		"BRANCH_RULES_STATUS_DISABLED":    2,
	}
)

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

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

func (BranchRulesStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[21].Descriptor()
}

func (BranchRulesStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[21]
}

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

// Deprecated: Use BranchRulesStatus.Descriptor instead.
func (BranchRulesStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{21}
}

// RolloutStrategy is the closed set of release rollout strategies.
type RolloutStrategy int32

const (
	RolloutStrategy_ROLLOUT_STRATEGY_UNSPECIFIED RolloutStrategy = 0
	RolloutStrategy_ROLLOUT_STRATEGY_DIRECT      RolloutStrategy = 1
	RolloutStrategy_ROLLOUT_STRATEGY_STAGED      RolloutStrategy = 2
	RolloutStrategy_ROLLOUT_STRATEGY_CANARY      RolloutStrategy = 3
)

// Enum value maps for RolloutStrategy.
var (
	RolloutStrategy_name = map[int32]string{
		0: "ROLLOUT_STRATEGY_UNSPECIFIED",
		1: "ROLLOUT_STRATEGY_DIRECT",
		2: "ROLLOUT_STRATEGY_STAGED",
		3: "ROLLOUT_STRATEGY_CANARY",
	}
	RolloutStrategy_value = map[string]int32{
		"ROLLOUT_STRATEGY_UNSPECIFIED": 0,
		"ROLLOUT_STRATEGY_DIRECT":      1,
		"ROLLOUT_STRATEGY_STAGED":      2,
		"ROLLOUT_STRATEGY_CANARY":      3,
	}
)

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

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

func (RolloutStrategy) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[22].Descriptor()
}

func (RolloutStrategy) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[22]
}

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

// Deprecated: Use RolloutStrategy.Descriptor instead.
func (RolloutStrategy) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{22}
}

// RollbackPolicy is the closed set of release rollback policies.
type RollbackPolicy int32

const (
	RollbackPolicy_ROLLBACK_POLICY_UNSPECIFIED        RollbackPolicy = 0
	RollbackPolicy_ROLLBACK_POLICY_MANUAL             RollbackPolicy = 1
	RollbackPolicy_ROLLBACK_POLICY_AUTOMATIC_ON_GATE  RollbackPolicy = 2
	RollbackPolicy_ROLLBACK_POLICY_AUTOMATIC_ON_ALERT RollbackPolicy = 3
)

// Enum value maps for RollbackPolicy.
var (
	RollbackPolicy_name = map[int32]string{
		0: "ROLLBACK_POLICY_UNSPECIFIED",
		1: "ROLLBACK_POLICY_MANUAL",
		2: "ROLLBACK_POLICY_AUTOMATIC_ON_GATE",
		3: "ROLLBACK_POLICY_AUTOMATIC_ON_ALERT",
	}
	RollbackPolicy_value = map[string]int32{
		"ROLLBACK_POLICY_UNSPECIFIED":        0,
		"ROLLBACK_POLICY_MANUAL":             1,
		"ROLLBACK_POLICY_AUTOMATIC_ON_GATE":  2,
		"ROLLBACK_POLICY_AUTOMATIC_ON_ALERT": 3,
	}
)

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

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

func (RollbackPolicy) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[23].Descriptor()
}

func (RollbackPolicy) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[23]
}

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

// Deprecated: Use RollbackPolicy.Descriptor instead.
func (RollbackPolicy) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{23}
}

// ReleasePolicyStatus is the closed set of release policy statuses.
type ReleasePolicyStatus int32

const (
	ReleasePolicyStatus_RELEASE_POLICY_STATUS_UNSPECIFIED ReleasePolicyStatus = 0
	ReleasePolicyStatus_RELEASE_POLICY_STATUS_ACTIVE      ReleasePolicyStatus = 1
	ReleasePolicyStatus_RELEASE_POLICY_STATUS_DISABLED    ReleasePolicyStatus = 2
	ReleasePolicyStatus_RELEASE_POLICY_STATUS_ARCHIVED    ReleasePolicyStatus = 3
)

// Enum value maps for ReleasePolicyStatus.
var (
	ReleasePolicyStatus_name = map[int32]string{
		0: "RELEASE_POLICY_STATUS_UNSPECIFIED",
		1: "RELEASE_POLICY_STATUS_ACTIVE",
		2: "RELEASE_POLICY_STATUS_DISABLED",
		3: "RELEASE_POLICY_STATUS_ARCHIVED",
	}
	ReleasePolicyStatus_value = map[string]int32{
		"RELEASE_POLICY_STATUS_UNSPECIFIED": 0,
		"RELEASE_POLICY_STATUS_ACTIVE":      1,
		"RELEASE_POLICY_STATUS_DISABLED":    2,
		"RELEASE_POLICY_STATUS_ARCHIVED":    3,
	}
)

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

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

func (ReleasePolicyStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[24].Descriptor()
}

func (ReleasePolicyStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[24]
}

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

// Deprecated: Use ReleasePolicyStatus.Descriptor instead.
func (ReleasePolicyStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{24}
}

// PlacementPolicyStatus is the closed set of placement policy statuses.
type PlacementPolicyStatus int32

const (
	PlacementPolicyStatus_PLACEMENT_POLICY_STATUS_UNSPECIFIED PlacementPolicyStatus = 0
	PlacementPolicyStatus_PLACEMENT_POLICY_STATUS_ACTIVE      PlacementPolicyStatus = 1
	PlacementPolicyStatus_PLACEMENT_POLICY_STATUS_DISABLED    PlacementPolicyStatus = 2
)

// Enum value maps for PlacementPolicyStatus.
var (
	PlacementPolicyStatus_name = map[int32]string{
		0: "PLACEMENT_POLICY_STATUS_UNSPECIFIED",
		1: "PLACEMENT_POLICY_STATUS_ACTIVE",
		2: "PLACEMENT_POLICY_STATUS_DISABLED",
	}
	PlacementPolicyStatus_value = map[string]int32{
		"PLACEMENT_POLICY_STATUS_UNSPECIFIED": 0,
		"PLACEMENT_POLICY_STATUS_ACTIVE":      1,
		"PLACEMENT_POLICY_STATUS_DISABLED":    2,
	}
)

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

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

func (PlacementPolicyStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[25].Descriptor()
}

func (PlacementPolicyStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[25]
}

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

// Deprecated: Use PlacementPolicyStatus.Descriptor instead.
func (PlacementPolicyStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{25}
}

// PolicyOverrideTargetType is the closed set of override target types.
type PolicyOverrideTargetType int32

const (
	PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_UNSPECIFIED          PolicyOverrideTargetType = 0
	PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_SERVICES_POLICY      PolicyOverrideTargetType = 1
	PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_BRANCH_RULES         PolicyOverrideTargetType = 2
	PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_RELEASE_POLICY       PolicyOverrideTargetType = 3
	PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_PLACEMENT_POLICY     PolicyOverrideTargetType = 4
	PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_DOCUMENTATION_SOURCE PolicyOverrideTargetType = 5
	PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_RELEASE_LINE         PolicyOverrideTargetType = 6
)

// Enum value maps for PolicyOverrideTargetType.
var (
	PolicyOverrideTargetType_name = map[int32]string{
		0: "POLICY_OVERRIDE_TARGET_TYPE_UNSPECIFIED",
		1: "POLICY_OVERRIDE_TARGET_TYPE_SERVICES_POLICY",
		2: "POLICY_OVERRIDE_TARGET_TYPE_BRANCH_RULES",
		3: "POLICY_OVERRIDE_TARGET_TYPE_RELEASE_POLICY",
		4: "POLICY_OVERRIDE_TARGET_TYPE_PLACEMENT_POLICY",
		5: "POLICY_OVERRIDE_TARGET_TYPE_DOCUMENTATION_SOURCE",
		6: "POLICY_OVERRIDE_TARGET_TYPE_RELEASE_LINE",
	}
	PolicyOverrideTargetType_value = map[string]int32{
		"POLICY_OVERRIDE_TARGET_TYPE_UNSPECIFIED":          0,
		"POLICY_OVERRIDE_TARGET_TYPE_SERVICES_POLICY":      1,
		"POLICY_OVERRIDE_TARGET_TYPE_BRANCH_RULES":         2,
		"POLICY_OVERRIDE_TARGET_TYPE_RELEASE_POLICY":       3,
		"POLICY_OVERRIDE_TARGET_TYPE_PLACEMENT_POLICY":     4,
		"POLICY_OVERRIDE_TARGET_TYPE_DOCUMENTATION_SOURCE": 5,
		"POLICY_OVERRIDE_TARGET_TYPE_RELEASE_LINE":         6,
	}
)

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

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

func (PolicyOverrideTargetType) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[26].Descriptor()
}

func (PolicyOverrideTargetType) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[26]
}

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

// Deprecated: Use PolicyOverrideTargetType.Descriptor instead.
func (PolicyOverrideTargetType) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{26}
}

// PolicyOverrideStatus is the closed set of override statuses.
type PolicyOverrideStatus int32

const (
	PolicyOverrideStatus_POLICY_OVERRIDE_STATUS_UNSPECIFIED PolicyOverrideStatus = 0
	PolicyOverrideStatus_POLICY_OVERRIDE_STATUS_ACTIVE      PolicyOverrideStatus = 1
	PolicyOverrideStatus_POLICY_OVERRIDE_STATUS_EXPIRED     PolicyOverrideStatus = 2
	PolicyOverrideStatus_POLICY_OVERRIDE_STATUS_CANCELLED   PolicyOverrideStatus = 3
)

// Enum value maps for PolicyOverrideStatus.
var (
	PolicyOverrideStatus_name = map[int32]string{
		0: "POLICY_OVERRIDE_STATUS_UNSPECIFIED",
		1: "POLICY_OVERRIDE_STATUS_ACTIVE",
		2: "POLICY_OVERRIDE_STATUS_EXPIRED",
		3: "POLICY_OVERRIDE_STATUS_CANCELLED",
	}
	PolicyOverrideStatus_value = map[string]int32{
		"POLICY_OVERRIDE_STATUS_UNSPECIFIED": 0,
		"POLICY_OVERRIDE_STATUS_ACTIVE":      1,
		"POLICY_OVERRIDE_STATUS_EXPIRED":     2,
		"POLICY_OVERRIDE_STATUS_CANCELLED":   3,
	}
)

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

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

func (PolicyOverrideStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_kodex_projects_v1_project_catalog_proto_enumTypes[27].Descriptor()
}

func (PolicyOverrideStatus) Type() protoreflect.EnumType {
	return &file_kodex_projects_v1_project_catalog_proto_enumTypes[27]
}

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

// Deprecated: Use PolicyOverrideStatus.Descriptor instead.
func (PolicyOverrideStatus) EnumDescriptor() ([]byte, []int) {
	return file_kodex_projects_v1_project_catalog_proto_rawDescGZIP(), []int{27}
}

// CommandMeta is required for every mutating command.
type CommandMeta struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// command_id is a unique command identifier. Either command_id or idempotency_key is required.
	CommandId *string `protobuf:"bytes,1,opt,name=command_id,json=commandId,proto3,oneof" json:"command_id,omitempty"`
	// idempotency_key is an idempotency key scoped by operation and actor.
	IdempotencyKey *string `protobuf:"bytes,2,opt,name=idempotency_key,json=idempotencyKey,proto3,oneof" json:"idempotency_key,omitempty"`
	// expected_version is present only for existing aggregate mutations.
	ExpectedVersion *int64 `protobuf:"varint,3,opt,name=expected_version,json=expectedVersion,proto3,oneof" json:"expected_version,omitempty"`
	// actor is the authenticated caller.
	Actor *Actor `protobuf:"bytes,4,opt,name=actor,proto3" json:"actor,omitempty"`
	// reason is a machine or operator reason for audit and domain events.
	Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"`
	// request_id links the command to logs, traces and audit.
	RequestId string `protobuf:"bytes,6,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// request_context carries safe request metadata; no tokens, secrets, email or names.
	RequestContext *RequestContext `protobuf:"bytes,7,opt,name=request_context,json=requestContext,proto3" json:"request_context,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*CommandMeta) ProtoMessage() {}

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

func (x *CommandMeta) GetCommandId() string {
	if x != nil && x.CommandId != nil {
		return *x.CommandId
	}
	return ""
}

func (x *CommandMeta) GetIdempotencyKey() string {
	if x != nil && x.IdempotencyKey != nil {
		return *x.IdempotencyKey
	}
	return ""
}

func (x *CommandMeta) GetExpectedVersion() int64 {
	if x != nil && x.ExpectedVersion != nil {
		return *x.ExpectedVersion
	}
	return 0
}

func (x *CommandMeta) GetActor() *Actor {
	if x != nil {
		return x.Actor
	}
	return nil
}

func (x *CommandMeta) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *CommandMeta) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *CommandMeta) GetRequestContext() *RequestContext {
	if x != nil {
		return x.RequestContext
	}
	return nil
}

// QueryMeta carries safe metadata for authoritative reads.
type QueryMeta struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// actor is the authenticated caller.
	Actor *Actor `protobuf:"bytes,1,opt,name=actor,proto3" json:"actor,omitempty"`
	// request_id links the read to logs and traces.
	RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// request_context carries safe request metadata.
	RequestContext *RequestContext `protobuf:"bytes,3,opt,name=request_context,json=requestContext,proto3" json:"request_context,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*QueryMeta) ProtoMessage() {}

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

func (x *QueryMeta) GetActor() *Actor {
	if x != nil {
		return x.Actor
	}
	return nil
}

func (x *QueryMeta) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *QueryMeta) GetRequestContext() *RequestContext {
	if x != nil {
		return x.RequestContext
	}
	return nil
}

// RequestContext is safe request metadata used for audit and diagnostics.
type RequestContext struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// source identifies caller surface, for example staff-gateway, platform-mcp-server or service.
	Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
	// trace_id links platform traces.
	TraceId *string `protobuf:"bytes,2,opt,name=trace_id,json=traceId,proto3,oneof" json:"trace_id,omitempty"`
	// session_id links a user session when available.
	SessionId *string `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3,oneof" json:"session_id,omitempty"`
	// client_ip_hash is an optional hashed client address.
	ClientIpHash  *string `protobuf:"bytes,4,opt,name=client_ip_hash,json=clientIpHash,proto3,oneof" json:"client_ip_hash,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RequestContext) ProtoMessage() {}

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

func (x *RequestContext) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

func (x *RequestContext) GetTraceId() string {
	if x != nil && x.TraceId != nil {
		return *x.TraceId
	}
	return ""
}

func (x *RequestContext) GetSessionId() string {
	if x != nil && x.SessionId != nil {
		return *x.SessionId
	}
	return ""
}

func (x *RequestContext) GetClientIpHash() string {
	if x != nil && x.ClientIpHash != nil {
		return *x.ClientIpHash
	}
	return ""
}

// Actor identifies a user, service, agent or external account.
type Actor struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// type is a subject type such as user, service, agent or external_account.
	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	// id is the subject identifier in its owner domain.
	Id            string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Actor) ProtoMessage() {}

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

func (x *Actor) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *Actor) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// PageRequest limits list responses.
type PageRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// page_size is the maximum item count requested by caller.
	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// page_token is an opaque continuation token returned by a previous call.
	PageToken     *string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3,oneof" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PageRequest) ProtoMessage() {}

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

func (x *PageRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *PageRequest) GetPageToken() string {
	if x != nil && x.PageToken != nil {
		return *x.PageToken
	}
	return ""
}

// PageResponse describes list continuation state.
type PageResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// next_page_token is empty when there are no more items.
	NextPageToken *string `protobuf:"bytes,1,opt,name=next_page_token,json=nextPageToken,proto3,oneof" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PageResponse) ProtoMessage() {}

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

func (x *PageResponse) GetNextPageToken() string {
	if x != nil && x.NextPageToken != nil {
		return *x.NextPageToken
	}
	return ""
}

// Project describes a project aggregate.
type Project struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project aggregate id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// organization_id is the owner organization id from access-manager.
	OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"`
	// slug is unique in organization scope.
	Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"`
	// display_name is safe display text.
	DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// description is optional safe description.
	Description *string `protobuf:"bytes,5,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// icon_object_uri is an optional object-store URI for project icon.
	IconObjectUri *string `protobuf:"bytes,6,opt,name=icon_object_uri,json=iconObjectUri,proto3,oneof" json:"icon_object_uri,omitempty"`
	// status is project lifecycle status.
	Status ProjectStatus `protobuf:"varint,7,opt,name=status,proto3,enum=kodex.projects.v1.ProjectStatus" json:"status,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Project) ProtoMessage() {}

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

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

func (x *Project) GetOrganizationId() string {
	if x != nil {
		return x.OrganizationId
	}
	return ""
}

func (x *Project) GetSlug() string {
	if x != nil {
		return x.Slug
	}
	return ""
}

func (x *Project) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *Project) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *Project) GetIconObjectUri() string {
	if x != nil && x.IconObjectUri != nil {
		return *x.IconObjectUri
	}
	return ""
}

func (x *Project) GetStatus() ProjectStatus {
	if x != nil {
		return x.Status
	}
	return ProjectStatus_PROJECT_STATUS_UNSPECIFIED
}

func (x *Project) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// Repository describes a repository binding aggregate.
type Repository struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository_id is the repository binding aggregate id.
	RepositoryId string `protobuf:"bytes,1,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// project_id is the project that owns the binding.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// provider is the repository provider.
	Provider RepositoryProvider `protobuf:"varint,3,opt,name=provider,proto3,enum=kodex.projects.v1.RepositoryProvider" json:"provider,omitempty"`
	// provider_owner is owner or group name at provider.
	ProviderOwner string `protobuf:"bytes,4,opt,name=provider_owner,json=providerOwner,proto3" json:"provider_owner,omitempty"`
	// provider_name is repository name at provider.
	ProviderName string `protobuf:"bytes,5,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// web_url is a safe URL to the provider repository.
	WebUrl string `protobuf:"bytes,6,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"`
	// default_branch is the default branch for project policy.
	DefaultBranch string `protobuf:"bytes,7,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"`
	// status is repository binding status.
	Status RepositoryStatus `protobuf:"varint,8,opt,name=status,proto3,enum=kodex.projects.v1.RepositoryStatus" json:"status,omitempty"`
	// provider_repository_id is optional provider-native id.
	ProviderRepositoryId *string `protobuf:"bytes,9,opt,name=provider_repository_id,json=providerRepositoryId,proto3,oneof" json:"provider_repository_id,omitempty"`
	// icon_object_uri is an optional object-store URI for repository icon.
	IconObjectUri *string `protobuf:"bytes,10,opt,name=icon_object_uri,json=iconObjectUri,proto3,oneof" json:"icon_object_uri,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,11,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Repository) ProtoMessage() {}

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

func (x *Repository) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

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

func (x *Repository) GetProvider() RepositoryProvider {
	if x != nil {
		return x.Provider
	}
	return RepositoryProvider_REPOSITORY_PROVIDER_UNSPECIFIED
}

func (x *Repository) GetProviderOwner() string {
	if x != nil {
		return x.ProviderOwner
	}
	return ""
}

func (x *Repository) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *Repository) GetWebUrl() string {
	if x != nil {
		return x.WebUrl
	}
	return ""
}

func (x *Repository) GetDefaultBranch() string {
	if x != nil {
		return x.DefaultBranch
	}
	return ""
}

func (x *Repository) GetStatus() RepositoryStatus {
	if x != nil {
		return x.Status
	}
	return RepositoryStatus_REPOSITORY_STATUS_UNSPECIFIED
}

func (x *Repository) GetProviderRepositoryId() string {
	if x != nil && x.ProviderRepositoryId != nil {
		return *x.ProviderRepositoryId
	}
	return ""
}

func (x *Repository) GetIconObjectUri() string {
	if x != nil && x.IconObjectUri != nil {
		return *x.IconObjectUri
	}
	return ""
}

func (x *Repository) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// RepositoryBootstrapFile is one prepared text file for an empty-repository bootstrap branch.
type RepositoryBootstrapFile struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// path is a repository-relative file path.
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// content is UTF-8 text prepared outside project-catalog.
	Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
	// executable marks files that should be executable when the provider supports it.
	Executable    bool `protobuf:"varint,3,opt,name=executable,proto3" json:"executable,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RepositoryBootstrapFile) ProtoMessage() {}

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

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

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

func (x *RepositoryBootstrapFile) GetExecutable() bool {
	if x != nil {
		return x.Executable
	}
	return false
}

// RepositoryBootstrapServicesPolicy links prepared bootstrap files to a checked services.yaml projection.
type RepositoryBootstrapServicesPolicy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// source_path is the repository-relative path of services.yaml inside prepared files.
	SourcePath string `protobuf:"bytes,1,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// content_hash is the checked source content hash accepted by project policy.
	ContentHash string `protobuf:"bytes,2,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
	// validated_payload_json is normalized services.yaml payload accepted by project policy.
	ValidatedPayloadJson string `protobuf:"bytes,3,opt,name=validated_payload_json,json=validatedPayloadJson,proto3" json:"validated_payload_json,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

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

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

func (*RepositoryBootstrapServicesPolicy) ProtoMessage() {}

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

func (x *RepositoryBootstrapServicesPolicy) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *RepositoryBootstrapServicesPolicy) GetContentHash() string {
	if x != nil {
		return x.ContentHash
	}
	return ""
}

func (x *RepositoryBootstrapServicesPolicy) GetValidatedPayloadJson() string {
	if x != nil {
		return x.ValidatedPayloadJson
	}
	return ""
}

// RepositoryBootstrapProviderTarget is the provider repository target derived from project binding.
type RepositoryBootstrapProviderTarget struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// provider_slug is the extensible provider identifier passed to provider-hub.
	ProviderSlug string `protobuf:"bytes,1,opt,name=provider_slug,json=providerSlug,proto3" json:"provider_slug,omitempty"`
	// repository_full_name is owner/name or provider equivalent.
	RepositoryFullName string `protobuf:"bytes,2,opt,name=repository_full_name,json=repositoryFullName,proto3" json:"repository_full_name,omitempty"`
	// provider_repository_id is the provider-native repository id when known.
	ProviderRepositoryId *string `protobuf:"bytes,3,opt,name=provider_repository_id,json=providerRepositoryId,proto3,oneof" json:"provider_repository_id,omitempty"`
	// web_url is the safe provider repository URL from the binding.
	WebUrl        *string `protobuf:"bytes,4,opt,name=web_url,json=webUrl,proto3,oneof" json:"web_url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RepositoryBootstrapProviderTarget) ProtoMessage() {}

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

func (x *RepositoryBootstrapProviderTarget) GetProviderSlug() string {
	if x != nil {
		return x.ProviderSlug
	}
	return ""
}

func (x *RepositoryBootstrapProviderTarget) GetRepositoryFullName() string {
	if x != nil {
		return x.RepositoryFullName
	}
	return ""
}

func (x *RepositoryBootstrapProviderTarget) GetProviderRepositoryId() string {
	if x != nil && x.ProviderRepositoryId != nil {
		return *x.ProviderRepositoryId
	}
	return ""
}

func (x *RepositoryBootstrapProviderTarget) GetWebUrl() string {
	if x != nil && x.WebUrl != nil {
		return *x.WebUrl
	}
	return ""
}

// ServicesPolicy describes a checked services.yaml projection.
type ServicesPolicy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// services_policy_id is the policy aggregate id.
	ServicesPolicyId string `protobuf:"bytes,1,opt,name=services_policy_id,json=servicesPolicyId,proto3" json:"services_policy_id,omitempty"`
	// project_id is the project that owns the policy.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// source_repository_id is the repository where source services.yaml was found.
	SourceRepositoryId *string `protobuf:"bytes,3,opt,name=source_repository_id,json=sourceRepositoryId,proto3,oneof" json:"source_repository_id,omitempty"`
	// source_path is the policy file path.
	SourcePath string `protobuf:"bytes,4,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// source_ref is the branch, tag or provider ref used for import.
	SourceRef *string `protobuf:"bytes,5,opt,name=source_ref,json=sourceRef,proto3,oneof" json:"source_ref,omitempty"`
	// source_commit_sha is the commit used for checked projection.
	SourceCommitSha string `protobuf:"bytes,6,opt,name=source_commit_sha,json=sourceCommitSha,proto3" json:"source_commit_sha,omitempty"`
	// source_blob_sha is the provider file object hash when available.
	SourceBlobSha *string `protobuf:"bytes,7,opt,name=source_blob_sha,json=sourceBlobSha,proto3,oneof" json:"source_blob_sha,omitempty"`
	// policy_version is the checked policy version.
	PolicyVersion int64 `protobuf:"varint,8,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	// content_hash is the normalized source content hash.
	ContentHash string `protobuf:"bytes,9,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
	// validated_payload_json is normalized payload for audit and revalidation.
	ValidatedPayloadJson string `protobuf:"bytes,10,opt,name=validated_payload_json,json=validatedPayloadJson,proto3" json:"validated_payload_json,omitempty"`
	// validation_status is source validation status.
	ValidationStatus ServicesPolicyValidationStatus `protobuf:"varint,11,opt,name=validation_status,json=validationStatus,proto3,enum=kodex.projects.v1.ServicesPolicyValidationStatus" json:"validation_status,omitempty"`
	// projection_status is operational projection status.
	ProjectionStatus ServicesPolicyProjectionStatus `protobuf:"varint,12,opt,name=projection_status,json=projectionStatus,proto3,enum=kodex.projects.v1.ServicesPolicyProjectionStatus" json:"projection_status,omitempty"`
	// imported_at is the import time in RFC3339 format.
	ImportedAt    string `protobuf:"bytes,13,opt,name=imported_at,json=importedAt,proto3" json:"imported_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ServicesPolicy) ProtoMessage() {}

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

func (x *ServicesPolicy) GetServicesPolicyId() string {
	if x != nil {
		return x.ServicesPolicyId
	}
	return ""
}

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

func (x *ServicesPolicy) GetSourceRepositoryId() string {
	if x != nil && x.SourceRepositoryId != nil {
		return *x.SourceRepositoryId
	}
	return ""
}

func (x *ServicesPolicy) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *ServicesPolicy) GetSourceRef() string {
	if x != nil && x.SourceRef != nil {
		return *x.SourceRef
	}
	return ""
}

func (x *ServicesPolicy) GetSourceCommitSha() string {
	if x != nil {
		return x.SourceCommitSha
	}
	return ""
}

func (x *ServicesPolicy) GetSourceBlobSha() string {
	if x != nil && x.SourceBlobSha != nil {
		return *x.SourceBlobSha
	}
	return ""
}

func (x *ServicesPolicy) GetPolicyVersion() int64 {
	if x != nil {
		return x.PolicyVersion
	}
	return 0
}

func (x *ServicesPolicy) GetContentHash() string {
	if x != nil {
		return x.ContentHash
	}
	return ""
}

func (x *ServicesPolicy) GetValidatedPayloadJson() string {
	if x != nil {
		return x.ValidatedPayloadJson
	}
	return ""
}

func (x *ServicesPolicy) GetValidationStatus() ServicesPolicyValidationStatus {
	if x != nil {
		return x.ValidationStatus
	}
	return ServicesPolicyValidationStatus_SERVICES_POLICY_VALIDATION_STATUS_UNSPECIFIED
}

func (x *ServicesPolicy) GetProjectionStatus() ServicesPolicyProjectionStatus {
	if x != nil {
		return x.ProjectionStatus
	}
	return ServicesPolicyProjectionStatus_SERVICES_POLICY_PROJECTION_STATUS_UNSPECIFIED
}

func (x *ServicesPolicy) GetImportedAt() string {
	if x != nil {
		return x.ImportedAt
	}
	return ""
}

// ServiceDescriptor describes one typed service from checked services.yaml.
type ServiceDescriptor struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// service_descriptor_id is the service descriptor id.
	ServiceDescriptorId string `protobuf:"bytes,1,opt,name=service_descriptor_id,json=serviceDescriptorId,proto3" json:"service_descriptor_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// services_policy_id is the source checked policy id.
	ServicesPolicyId string `protobuf:"bytes,3,opt,name=services_policy_id,json=servicesPolicyId,proto3" json:"services_policy_id,omitempty"`
	// repository_id is optional repository binding id.
	RepositoryId *string `protobuf:"bytes,4,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// service_key is stable service key from services.yaml.
	ServiceKey string `protobuf:"bytes,5,opt,name=service_key,json=serviceKey,proto3" json:"service_key,omitempty"`
	// display_name is safe display text.
	DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// kind classifies the service.
	Kind ServiceKind `protobuf:"varint,7,opt,name=kind,proto3,enum=kodex.projects.v1.ServiceKind" json:"kind,omitempty"`
	// root_path is the service root in workspace.
	RootPath string `protobuf:"bytes,8,opt,name=root_path,json=rootPath,proto3" json:"root_path,omitempty"`
	// documentation_scope_id links service to documentation sources.
	DocumentationScopeId *string `protobuf:"bytes,9,opt,name=documentation_scope_id,json=documentationScopeId,proto3,oneof" json:"documentation_scope_id,omitempty"`
	// depends_on_service_keys lists project service dependencies.
	DependsOnServiceKeys []string `protobuf:"bytes,10,rep,name=depends_on_service_keys,json=dependsOnServiceKeys,proto3" json:"depends_on_service_keys,omitempty"`
	// status is service descriptor status.
	Status ServiceStatus `protobuf:"varint,11,opt,name=status,proto3,enum=kodex.projects.v1.ServiceStatus" json:"status,omitempty"`
	// version is the descriptor version.
	Version       int64 `protobuf:"varint,12,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ServiceDescriptor) ProtoMessage() {}

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

func (x *ServiceDescriptor) GetServiceDescriptorId() string {
	if x != nil {
		return x.ServiceDescriptorId
	}
	return ""
}

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

func (x *ServiceDescriptor) GetServicesPolicyId() string {
	if x != nil {
		return x.ServicesPolicyId
	}
	return ""
}

func (x *ServiceDescriptor) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *ServiceDescriptor) GetServiceKey() string {
	if x != nil {
		return x.ServiceKey
	}
	return ""
}

func (x *ServiceDescriptor) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *ServiceDescriptor) GetKind() ServiceKind {
	if x != nil {
		return x.Kind
	}
	return ServiceKind_SERVICE_KIND_UNSPECIFIED
}

func (x *ServiceDescriptor) GetRootPath() string {
	if x != nil {
		return x.RootPath
	}
	return ""
}

func (x *ServiceDescriptor) GetDocumentationScopeId() string {
	if x != nil && x.DocumentationScopeId != nil {
		return *x.DocumentationScopeId
	}
	return ""
}

func (x *ServiceDescriptor) GetDependsOnServiceKeys() []string {
	if x != nil {
		return x.DependsOnServiceKeys
	}
	return nil
}

func (x *ServiceDescriptor) GetStatus() ServiceStatus {
	if x != nil {
		return x.Status
	}
	return ServiceStatus_SERVICE_STATUS_UNSPECIFIED
}

func (x *ServiceDescriptor) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// SelfDeployPathCategoryCount содержит safe счётчики категорий путей без raw paths.
type SelfDeployPathCategoryCount struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// category классифицирует семейство изменённых путей.
	Category SelfDeployPathCategory `protobuf:"varint,1,opt,name=category,proto3,enum=kodex.projects.v1.SelfDeployPathCategory" json:"category,omitempty"`
	// count — bounded provider-side счётчик для категории.
	Count         int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeployPathCategoryCount) ProtoMessage() {}

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

func (x *SelfDeployPathCategoryCount) GetCategory() SelfDeployPathCategory {
	if x != nil {
		return x.Category
	}
	return SelfDeployPathCategory_SELF_DEPLOY_PATH_CATEGORY_UNSPECIFIED
}

func (x *SelfDeployPathCategoryCount) GetCount() int64 {
	if x != nil {
		return x.Count
	}
	return 0
}

// SelfDeployGovernanceRequirement содержит только safe governance hints.
type SelfDeployGovernanceRequirement struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// gate_required сообщает agent-manager, что до runtime jobs нужен owner/governance approval.
	GateRequired bool `protobuf:"varint,1,opt,name=gate_required,json=gateRequired,proto3" json:"gate_required,omitempty"`
	// risk_profile_ref опционально указывает на governance policy без копирования решений.
	RiskProfileRef *string `protobuf:"bytes,2,opt,name=risk_profile_ref,json=riskProfileRef,proto3,oneof" json:"risk_profile_ref,omitempty"`
	// gate_policy_ref опционально указывает на gate policy для оценки.
	GatePolicyRef *string `protobuf:"bytes,3,opt,name=gate_policy_ref,json=gatePolicyRef,proto3,oneof" json:"gate_policy_ref,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeployGovernanceRequirement) ProtoMessage() {}

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

func (x *SelfDeployGovernanceRequirement) GetGateRequired() bool {
	if x != nil {
		return x.GateRequired
	}
	return false
}

func (x *SelfDeployGovernanceRequirement) GetRiskProfileRef() string {
	if x != nil && x.RiskProfileRef != nil {
		return *x.RiskProfileRef
	}
	return ""
}

func (x *SelfDeployGovernanceRequirement) GetGatePolicyRef() string {
	if x != nil && x.GatePolicyRef != nil {
		return *x.GatePolicyRef
	}
	return ""
}

// SelfDeployServicesYamlProjection описывает checked project-owned проекцию services.yaml.
type SelfDeployServicesYamlProjection struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// services_yaml_ref — safe project-catalog ссылка на checked projection.
	ServicesYamlRef string `protobuf:"bytes,1,opt,name=services_yaml_ref,json=servicesYamlRef,proto3" json:"services_yaml_ref,omitempty"`
	// services_yaml_digest — checked normalized services.yaml digest, а не provider path_digest.
	ServicesYamlDigest string `protobuf:"bytes,2,opt,name=services_yaml_digest,json=servicesYamlDigest,proto3" json:"services_yaml_digest,omitempty"`
	// services_yaml_fingerprint — стабильный safe fingerprint checked projection.
	ServicesYamlFingerprint string `protobuf:"bytes,3,opt,name=services_yaml_fingerprint,json=servicesYamlFingerprint,proto3" json:"services_yaml_fingerprint,omitempty"`
	// services_policy_id — aggregate id в project-catalog.
	ServicesPolicyId string `protobuf:"bytes,4,opt,name=services_policy_id,json=servicesPolicyId,proto3" json:"services_policy_id,omitempty"`
	// source_repository_id — repository binding источника projection.
	SourceRepositoryId *string `protobuf:"bytes,5,opt,name=source_repository_id,json=sourceRepositoryId,proto3,oneof" json:"source_repository_id,omitempty"`
	// source_path — путь checked services.yaml.
	SourcePath string `protobuf:"bytes,6,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// source_ref — branch, tag или provider ref, использованный для import.
	SourceRef *string `protobuf:"bytes,7,opt,name=source_ref,json=sourceRef,proto3,oneof" json:"source_ref,omitempty"`
	// source_commit_sha — commit checked projection.
	SourceCommitSha string `protobuf:"bytes,8,opt,name=source_commit_sha,json=sourceCommitSha,proto3" json:"source_commit_sha,omitempty"`
	// policy_version — версия checked projection.
	PolicyVersion int64 `protobuf:"varint,9,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	// validation_status — статус проверки source.
	ValidationStatus ServicesPolicyValidationStatus `protobuf:"varint,10,opt,name=validation_status,json=validationStatus,proto3,enum=kodex.projects.v1.ServicesPolicyValidationStatus" json:"validation_status,omitempty"`
	// projection_status — операционный статус projection.
	ProjectionStatus ServicesPolicyProjectionStatus `protobuf:"varint,11,opt,name=projection_status,json=projectionStatus,proto3,enum=kodex.projects.v1.ServicesPolicyProjectionStatus" json:"projection_status,omitempty"`
	// imported_at — время import в формате RFC3339.
	ImportedAt    string `protobuf:"bytes,12,opt,name=imported_at,json=importedAt,proto3" json:"imported_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeployServicesYamlProjection) ProtoMessage() {}

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

func (x *SelfDeployServicesYamlProjection) GetServicesYamlRef() string {
	if x != nil {
		return x.ServicesYamlRef
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetServicesYamlDigest() string {
	if x != nil {
		return x.ServicesYamlDigest
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetServicesYamlFingerprint() string {
	if x != nil {
		return x.ServicesYamlFingerprint
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetServicesPolicyId() string {
	if x != nil {
		return x.ServicesPolicyId
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetSourceRepositoryId() string {
	if x != nil && x.SourceRepositoryId != nil {
		return *x.SourceRepositoryId
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetSourceRef() string {
	if x != nil && x.SourceRef != nil {
		return *x.SourceRef
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetSourceCommitSha() string {
	if x != nil {
		return x.SourceCommitSha
	}
	return ""
}

func (x *SelfDeployServicesYamlProjection) GetPolicyVersion() int64 {
	if x != nil {
		return x.PolicyVersion
	}
	return 0
}

func (x *SelfDeployServicesYamlProjection) GetValidationStatus() ServicesPolicyValidationStatus {
	if x != nil {
		return x.ValidationStatus
	}
	return ServicesPolicyValidationStatus_SERVICES_POLICY_VALIDATION_STATUS_UNSPECIFIED
}

func (x *SelfDeployServicesYamlProjection) GetProjectionStatus() ServicesPolicyProjectionStatus {
	if x != nil {
		return x.ProjectionStatus
	}
	return ServicesPolicyProjectionStatus_SERVICES_POLICY_PROJECTION_STATUS_UNSPECIFIED
}

func (x *SelfDeployServicesYamlProjection) GetImportedAt() string {
	if x != nil {
		return x.ImportedAt
	}
	return ""
}

// SelfDeploySignal — project-side safe input для agent-manager SelfDeployPlan.
type SelfDeploySignal struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// provider_signal_ref — стабильный provider signal idempotency ref.
	ProviderSignalRef string `protobuf:"bytes,1,opt,name=provider_signal_ref,json=providerSignalRef,proto3" json:"provider_signal_ref,omitempty"`
	// provider_signal_id — persisted signal id в provider-hub, если известен.
	ProviderSignalId *string `protobuf:"bytes,2,opt,name=provider_signal_id,json=providerSignalId,proto3,oneof" json:"provider_signal_id,omitempty"`
	// provider_signal_key — idempotency key в provider-hub, если известен.
	ProviderSignalKey *string `protobuf:"bytes,3,opt,name=provider_signal_key,json=providerSignalKey,proto3,oneof" json:"provider_signal_key,omitempty"`
	// project_ref — project ref в project-catalog.
	ProjectRef string `protobuf:"bytes,4,opt,name=project_ref,json=projectRef,proto3" json:"project_ref,omitempty"`
	// repository_ref — repository binding ref в project-catalog.
	RepositoryRef string `protobuf:"bytes,5,opt,name=repository_ref,json=repositoryRef,proto3" json:"repository_ref,omitempty"`
	// provider_slug идентифицирует provider adapter.
	ProviderSlug string `protobuf:"bytes,6,opt,name=provider_slug,json=providerSlug,proto3" json:"provider_slug,omitempty"`
	// repository_full_name — safe provider owner/name.
	RepositoryFullName string `protobuf:"bytes,7,opt,name=repository_full_name,json=repositoryFullName,proto3" json:"repository_full_name,omitempty"`
	// provider_repository_id — provider-native repository id, если известен.
	ProviderRepositoryId *string `protobuf:"bytes,8,opt,name=provider_repository_id,json=providerRepositoryId,proto3,oneof" json:"provider_repository_id,omitempty"`
	// source_ref — provider ref, который изменился.
	SourceRef string `protobuf:"bytes,9,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// merge_commit_sha — observed head или merge commit sha.
	MergeCommitSha string `protobuf:"bytes,10,opt,name=merge_commit_sha,json=mergeCommitSha,proto3" json:"merge_commit_sha,omitempty"`
	// services_yaml присутствует, когда у project-catalog есть checked projection.
	ServicesYaml *SelfDeployServicesYamlProjection `protobuf:"bytes,11,opt,name=services_yaml,json=servicesYaml,proto3" json:"services_yaml,omitempty"`
	// affected_service_keys вычисляются только из checked ServicesPolicy descriptors.
	AffectedServiceKeys []string `protobuf:"bytes,12,rep,name=affected_service_keys,json=affectedServiceKeys,proto3" json:"affected_service_keys,omitempty"`
	// path_categories — safe provider categories, переложенные в project vocabulary.
	PathCategories []*SelfDeployPathCategoryCount `protobuf:"bytes,13,rep,name=path_categories,json=pathCategories,proto3" json:"path_categories,omitempty"`
	// services_yaml_changed показывает, видел ли provider-hub изменение root services.yaml.
	ServicesYamlChanged bool `protobuf:"varint,14,opt,name=services_yaml_changed,json=servicesYamlChanged,proto3" json:"services_yaml_changed,omitempty"`
	// deploy_relevant_changed показывает, видел ли provider-hub deploy-relevant categories.
	DeployRelevantChanged bool `protobuf:"varint,15,opt,name=deploy_relevant_changed,json=deployRelevantChanged,proto3" json:"deploy_relevant_changed,omitempty"`
	// expected_runtime_job_types — safe job type hints для agent-manager.
	ExpectedRuntimeJobTypes []SelfDeployExpectedRuntimeJobType `protobuf:"varint,16,rep,packed,name=expected_runtime_job_types,json=expectedRuntimeJobTypes,proto3,enum=kodex.projects.v1.SelfDeployExpectedRuntimeJobType" json:"expected_runtime_job_types,omitempty"`
	// governance_requirement показывает, нужен ли owner/governance gate.
	GovernanceRequirement *SelfDeployGovernanceRequirement `protobuf:"bytes,17,opt,name=governance_requirement,json=governanceRequirement,proto3" json:"governance_requirement,omitempty"`
	// provider_change_fingerprint — provider-owned signal fingerprint.
	ProviderChangeFingerprint string `protobuf:"bytes,18,opt,name=provider_change_fingerprint,json=providerChangeFingerprint,proto3" json:"provider_change_fingerprint,omitempty"`
	// project_signal_fingerprint — project-side enrichment fingerprint.
	ProjectSignalFingerprint string `protobuf:"bytes,19,opt,name=project_signal_fingerprint,json=projectSignalFingerprint,proto3" json:"project_signal_fingerprint,omitempty"`
	// provider_etag — provider-hub safe read token, если известен.
	ProviderEtag *string `protobuf:"bytes,20,opt,name=provider_etag,json=providerEtag,proto3,oneof" json:"provider_etag,omitempty"`
	// safe_summary — bounded diagnostic text без raw payloads.
	SafeSummary string `protobuf:"bytes,21,opt,name=safe_summary,json=safeSummary,proto3" json:"safe_summary,omitempty"`
	// observed_at — время provider observation в формате RFC3339.
	ObservedAt string `protobuf:"bytes,22,opt,name=observed_at,json=observedAt,proto3" json:"observed_at,omitempty"`
	// version — версия project-side signal contract.
	Version       int64 `protobuf:"varint,23,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeploySignal) ProtoMessage() {}

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

func (x *SelfDeploySignal) GetProviderSignalRef() string {
	if x != nil {
		return x.ProviderSignalRef
	}
	return ""
}

func (x *SelfDeploySignal) GetProviderSignalId() string {
	if x != nil && x.ProviderSignalId != nil {
		return *x.ProviderSignalId
	}
	return ""
}

func (x *SelfDeploySignal) GetProviderSignalKey() string {
	if x != nil && x.ProviderSignalKey != nil {
		return *x.ProviderSignalKey
	}
	return ""
}

func (x *SelfDeploySignal) GetProjectRef() string {
	if x != nil {
		return x.ProjectRef
	}
	return ""
}

func (x *SelfDeploySignal) GetRepositoryRef() string {
	if x != nil {
		return x.RepositoryRef
	}
	return ""
}

func (x *SelfDeploySignal) GetProviderSlug() string {
	if x != nil {
		return x.ProviderSlug
	}
	return ""
}

func (x *SelfDeploySignal) GetRepositoryFullName() string {
	if x != nil {
		return x.RepositoryFullName
	}
	return ""
}

func (x *SelfDeploySignal) GetProviderRepositoryId() string {
	if x != nil && x.ProviderRepositoryId != nil {
		return *x.ProviderRepositoryId
	}
	return ""
}

func (x *SelfDeploySignal) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *SelfDeploySignal) GetMergeCommitSha() string {
	if x != nil {
		return x.MergeCommitSha
	}
	return ""
}

func (x *SelfDeploySignal) GetServicesYaml() *SelfDeployServicesYamlProjection {
	if x != nil {
		return x.ServicesYaml
	}
	return nil
}

func (x *SelfDeploySignal) GetAffectedServiceKeys() []string {
	if x != nil {
		return x.AffectedServiceKeys
	}
	return nil
}

func (x *SelfDeploySignal) GetPathCategories() []*SelfDeployPathCategoryCount {
	if x != nil {
		return x.PathCategories
	}
	return nil
}

func (x *SelfDeploySignal) GetServicesYamlChanged() bool {
	if x != nil {
		return x.ServicesYamlChanged
	}
	return false
}

func (x *SelfDeploySignal) GetDeployRelevantChanged() bool {
	if x != nil {
		return x.DeployRelevantChanged
	}
	return false
}

func (x *SelfDeploySignal) GetExpectedRuntimeJobTypes() []SelfDeployExpectedRuntimeJobType {
	if x != nil {
		return x.ExpectedRuntimeJobTypes
	}
	return nil
}

func (x *SelfDeploySignal) GetGovernanceRequirement() *SelfDeployGovernanceRequirement {
	if x != nil {
		return x.GovernanceRequirement
	}
	return nil
}

func (x *SelfDeploySignal) GetProviderChangeFingerprint() string {
	if x != nil {
		return x.ProviderChangeFingerprint
	}
	return ""
}

func (x *SelfDeploySignal) GetProjectSignalFingerprint() string {
	if x != nil {
		return x.ProjectSignalFingerprint
	}
	return ""
}

func (x *SelfDeploySignal) GetProviderEtag() string {
	if x != nil && x.ProviderEtag != nil {
		return *x.ProviderEtag
	}
	return ""
}

func (x *SelfDeploySignal) GetSafeSummary() string {
	if x != nil {
		return x.SafeSummary
	}
	return ""
}

func (x *SelfDeploySignal) GetObservedAt() string {
	if x != nil {
		return x.ObservedAt
	}
	return ""
}

func (x *SelfDeploySignal) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// SelfDeployBuildRecipe содержит статический проверенный рецепт сборки из ServicesPolicy.
type SelfDeployBuildRecipe struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// image_ref — целевой image repository/ref без digest.
	ImageRef string `protobuf:"bytes,1,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"`
	// image_tag — checked tag policy для build результата.
	ImageTag string `protobuf:"bytes,2,opt,name=image_tag,json=imageTag,proto3" json:"image_tag,omitempty"`
	// image_digest заполняется только если checked policy уже содержит безопасный digest.
	ImageDigest *string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3,oneof" json:"image_digest,omitempty"`
	// dockerfile_ref — путь Dockerfile внутри будущего build context.
	DockerfileRef string `protobuf:"bytes,4,opt,name=dockerfile_ref,json=dockerfileRef,proto3" json:"dockerfile_ref,omitempty"`
	// dockerfile_target — фиксированный Dockerfile target.
	DockerfileTarget string `protobuf:"bytes,5,opt,name=dockerfile_target,json=dockerfileTarget,proto3" json:"dockerfile_target,omitempty"`
	// builder_image_ref — approved builder image.
	BuilderImageRef string `protobuf:"bytes,6,opt,name=builder_image_ref,json=builderImageRef,proto3" json:"builder_image_ref,omitempty"`
	// allowed_secret_refs — refs секретов без значений.
	AllowedSecretRefs []*v1.RuntimeJobAllowedSecretRef `protobuf:"bytes,7,rep,name=allowed_secret_refs,json=allowedSecretRefs,proto3" json:"allowed_secret_refs,omitempty"`
	// output_refs — refs ожидаемых build outputs.
	OutputRefs []*v1.RuntimeJobOutputRef `protobuf:"bytes,8,rep,name=output_refs,json=outputRefs,proto3" json:"output_refs,omitempty"`
	// recipe_fingerprint — стабильный fingerprint рецепта без runtime context.
	RecipeFingerprint string `protobuf:"bytes,9,opt,name=recipe_fingerprint,json=recipeFingerprint,proto3" json:"recipe_fingerprint,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*SelfDeployBuildRecipe) ProtoMessage() {}

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

func (x *SelfDeployBuildRecipe) GetImageRef() string {
	if x != nil {
		return x.ImageRef
	}
	return ""
}

func (x *SelfDeployBuildRecipe) GetImageTag() string {
	if x != nil {
		return x.ImageTag
	}
	return ""
}

func (x *SelfDeployBuildRecipe) GetImageDigest() string {
	if x != nil && x.ImageDigest != nil {
		return *x.ImageDigest
	}
	return ""
}

func (x *SelfDeployBuildRecipe) GetDockerfileRef() string {
	if x != nil {
		return x.DockerfileRef
	}
	return ""
}

func (x *SelfDeployBuildRecipe) GetDockerfileTarget() string {
	if x != nil {
		return x.DockerfileTarget
	}
	return ""
}

func (x *SelfDeployBuildRecipe) GetBuilderImageRef() string {
	if x != nil {
		return x.BuilderImageRef
	}
	return ""
}

func (x *SelfDeployBuildRecipe) GetAllowedSecretRefs() []*v1.RuntimeJobAllowedSecretRef {
	if x != nil {
		return x.AllowedSecretRefs
	}
	return nil
}

func (x *SelfDeployBuildRecipe) GetOutputRefs() []*v1.RuntimeJobOutputRef {
	if x != nil {
		return x.OutputRefs
	}
	return nil
}

func (x *SelfDeployBuildRecipe) GetRecipeFingerprint() string {
	if x != nil {
		return x.RecipeFingerprint
	}
	return ""
}

// SelfDeployMaterializedBuildContext содержит build context, подготовленный runtime-manager.
type SelfDeployMaterializedBuildContext struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// service_key связывает context с affected service key.
	ServiceKey string `protobuf:"bytes,1,opt,name=service_key,json=serviceKey,proto3" json:"service_key,omitempty"`
	// plan_item_fingerprint опционально связывает context с ранее выданным item рецепта.
	PlanItemFingerprint *string `protobuf:"bytes,2,opt,name=plan_item_fingerprint,json=planItemFingerprint,proto3,oneof" json:"plan_item_fingerprint,omitempty"`
	// build_context_ref — ref подготовленного context.
	BuildContextRef string `protobuf:"bytes,3,opt,name=build_context_ref,json=buildContextRef,proto3" json:"build_context_ref,omitempty"`
	// build_context_digest — digest подготовленного context.
	BuildContextDigest string `protobuf:"bytes,4,opt,name=build_context_digest,json=buildContextDigest,proto3" json:"build_context_digest,omitempty"`
	// dockerfile_digest — digest Dockerfile внутри context, если runtime его посчитал.
	DockerfileDigest *string `protobuf:"bytes,5,opt,name=dockerfile_digest,json=dockerfileDigest,proto3,oneof" json:"dockerfile_digest,omitempty"`
	// materialization_ref — safe ref runtime materialization attempt.
	MaterializationRef *string `protobuf:"bytes,6,opt,name=materialization_ref,json=materializationRef,proto3,oneof" json:"materialization_ref,omitempty"`
	// materialization_fingerprint — safe fingerprint runtime materialization result.
	MaterializationFingerprint *string `protobuf:"bytes,7,opt,name=materialization_fingerprint,json=materializationFingerprint,proto3,oneof" json:"materialization_fingerprint,omitempty"`
	// manifest_bundle_digest — actual YAML bundle digest prepared by runtime-manager.
	ManifestBundleDigest *string `protobuf:"bytes,8,opt,name=manifest_bundle_digest,json=manifestBundleDigest,proto3,oneof" json:"manifest_bundle_digest,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

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

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

func (*SelfDeployMaterializedBuildContext) ProtoMessage() {}

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

func (x *SelfDeployMaterializedBuildContext) GetServiceKey() string {
	if x != nil {
		return x.ServiceKey
	}
	return ""
}

func (x *SelfDeployMaterializedBuildContext) GetPlanItemFingerprint() string {
	if x != nil && x.PlanItemFingerprint != nil {
		return *x.PlanItemFingerprint
	}
	return ""
}

func (x *SelfDeployMaterializedBuildContext) GetBuildContextRef() string {
	if x != nil {
		return x.BuildContextRef
	}
	return ""
}

func (x *SelfDeployMaterializedBuildContext) GetBuildContextDigest() string {
	if x != nil {
		return x.BuildContextDigest
	}
	return ""
}

func (x *SelfDeployMaterializedBuildContext) GetDockerfileDigest() string {
	if x != nil && x.DockerfileDigest != nil {
		return *x.DockerfileDigest
	}
	return ""
}

func (x *SelfDeployMaterializedBuildContext) GetMaterializationRef() string {
	if x != nil && x.MaterializationRef != nil {
		return *x.MaterializationRef
	}
	return ""
}

func (x *SelfDeployMaterializedBuildContext) GetMaterializationFingerprint() string {
	if x != nil && x.MaterializationFingerprint != nil {
		return *x.MaterializationFingerprint
	}
	return ""
}

func (x *SelfDeployMaterializedBuildContext) GetManifestBundleDigest() string {
	if x != nil && x.ManifestBundleDigest != nil {
		return *x.ManifestBundleDigest
	}
	return ""
}

// SelfDeployBuildPlanItem содержит рецепт и, когда context готов, runtime build spec для одного сервиса.
type SelfDeployBuildPlanItem struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// service_key идентифицирует service descriptor из checked ServicesPolicy.
	ServiceKey string `protobuf:"bytes,1,opt,name=service_key,json=serviceKey,proto3" json:"service_key,omitempty"`
	// service_ref — safe ref service descriptor в project-catalog.
	ServiceRef string `protobuf:"bytes,2,opt,name=service_ref,json=serviceRef,proto3" json:"service_ref,omitempty"`
	// build_execution_spec совместим с runtime-manager JOB_TYPE_BUILD и присутствует только для ready item.
	BuildExecutionSpec *v1.BuildExecutionSpec `protobuf:"bytes,3,opt,name=build_execution_spec,json=buildExecutionSpec,proto3" json:"build_execution_spec,omitempty"`
	// plan_item_fingerprint — стабильный fingerprint item без raw YAML.
	PlanItemFingerprint string `protobuf:"bytes,4,opt,name=plan_item_fingerprint,json=planItemFingerprint,proto3" json:"plan_item_fingerprint,omitempty"`
	// status описывает готовность item.
	Status SelfDeployBuildPlanItemStatus `protobuf:"varint,5,opt,name=status,proto3,enum=kodex.projects.v1.SelfDeployBuildPlanItemStatus" json:"status,omitempty"`
	// build_recipe содержит статический проверенный рецепт без runtime context.
	BuildRecipe *SelfDeployBuildRecipe `protobuf:"bytes,6,opt,name=build_recipe,json=buildRecipe,proto3" json:"build_recipe,omitempty"`
	// safe_reason объясняет non-ready item без raw payloads и секретов.
	SafeReason    *string `protobuf:"bytes,7,opt,name=safe_reason,json=safeReason,proto3,oneof" json:"safe_reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeployBuildPlanItem) ProtoMessage() {}

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

func (x *SelfDeployBuildPlanItem) GetServiceKey() string {
	if x != nil {
		return x.ServiceKey
	}
	return ""
}

func (x *SelfDeployBuildPlanItem) GetServiceRef() string {
	if x != nil {
		return x.ServiceRef
	}
	return ""
}

func (x *SelfDeployBuildPlanItem) GetBuildExecutionSpec() *v1.BuildExecutionSpec {
	if x != nil {
		return x.BuildExecutionSpec
	}
	return nil
}

func (x *SelfDeployBuildPlanItem) GetPlanItemFingerprint() string {
	if x != nil {
		return x.PlanItemFingerprint
	}
	return ""
}

func (x *SelfDeployBuildPlanItem) GetStatus() SelfDeployBuildPlanItemStatus {
	if x != nil {
		return x.Status
	}
	return SelfDeployBuildPlanItemStatus_SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_UNSPECIFIED
}

func (x *SelfDeployBuildPlanItem) GetBuildRecipe() *SelfDeployBuildRecipe {
	if x != nil {
		return x.BuildRecipe
	}
	return nil
}

func (x *SelfDeployBuildPlanItem) GetSafeReason() string {
	if x != nil && x.SafeReason != nil {
		return *x.SafeReason
	}
	return ""
}

// SelfDeployBuildPlan — проверенный project-owned plan для подготовки build jobs.
type SelfDeployBuildPlan struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_ref — project ref в project-catalog.
	ProjectRef string `protobuf:"bytes,1,opt,name=project_ref,json=projectRef,proto3" json:"project_ref,omitempty"`
	// repository_ref — repository binding ref в project-catalog.
	RepositoryRef string `protobuf:"bytes,2,opt,name=repository_ref,json=repositoryRef,proto3" json:"repository_ref,omitempty"`
	// provider_signal_ref — safe provider/project signal ref, если известен.
	ProviderSignalRef *string `protobuf:"bytes,3,opt,name=provider_signal_ref,json=providerSignalRef,proto3,oneof" json:"provider_signal_ref,omitempty"`
	// source_ref — provider/source ref, который послужил trigger.
	SourceRef string `protobuf:"bytes,4,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// merge_commit_sha — commit source snapshot.
	MergeCommitSha string `protobuf:"bytes,5,opt,name=merge_commit_sha,json=mergeCommitSha,proto3" json:"merge_commit_sha,omitempty"`
	// services_yaml — checked project-owned policy projection.
	ServicesYaml *SelfDeployServicesYamlProjection `protobuf:"bytes,6,opt,name=services_yaml,json=servicesYaml,proto3" json:"services_yaml,omitempty"`
	// affected_service_keys — нормализованный список запрошенных сервисов.
	AffectedServiceKeys []string `protobuf:"bytes,7,rep,name=affected_service_keys,json=affectedServiceKeys,proto3" json:"affected_service_keys,omitempty"`
	// build_items — per-service typed build specs.
	BuildItems []*SelfDeployBuildPlanItem `protobuf:"bytes,8,rep,name=build_items,json=buildItems,proto3" json:"build_items,omitempty"`
	// plan_fingerprint — стабильный fingerprint всего checked build plan.
	PlanFingerprint string `protobuf:"bytes,9,opt,name=plan_fingerprint,json=planFingerprint,proto3" json:"plan_fingerprint,omitempty"`
	// safe_summary — bounded diagnostic summary без raw payloads.
	SafeSummary string `protobuf:"bytes,10,opt,name=safe_summary,json=safeSummary,proto3" json:"safe_summary,omitempty"`
	// version — версия build plan contract.
	Version       int64 `protobuf:"varint,11,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeployBuildPlan) ProtoMessage() {}

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

func (x *SelfDeployBuildPlan) GetProjectRef() string {
	if x != nil {
		return x.ProjectRef
	}
	return ""
}

func (x *SelfDeployBuildPlan) GetRepositoryRef() string {
	if x != nil {
		return x.RepositoryRef
	}
	return ""
}

func (x *SelfDeployBuildPlan) GetProviderSignalRef() string {
	if x != nil && x.ProviderSignalRef != nil {
		return *x.ProviderSignalRef
	}
	return ""
}

func (x *SelfDeployBuildPlan) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *SelfDeployBuildPlan) GetMergeCommitSha() string {
	if x != nil {
		return x.MergeCommitSha
	}
	return ""
}

func (x *SelfDeployBuildPlan) GetServicesYaml() *SelfDeployServicesYamlProjection {
	if x != nil {
		return x.ServicesYaml
	}
	return nil
}

func (x *SelfDeployBuildPlan) GetAffectedServiceKeys() []string {
	if x != nil {
		return x.AffectedServiceKeys
	}
	return nil
}

func (x *SelfDeployBuildPlan) GetBuildItems() []*SelfDeployBuildPlanItem {
	if x != nil {
		return x.BuildItems
	}
	return nil
}

func (x *SelfDeployBuildPlan) GetPlanFingerprint() string {
	if x != nil {
		return x.PlanFingerprint
	}
	return ""
}

func (x *SelfDeployBuildPlan) GetSafeSummary() string {
	if x != nil {
		return x.SafeSummary
	}
	return ""
}

func (x *SelfDeployBuildPlan) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// SelfDeployBuildOutput содержит safe результат успешной build job для deploy planning.
type SelfDeployBuildOutput struct {
	state                    protoimpl.MessageState `protogen:"open.v1"`
	ServiceKey               string                 `protobuf:"bytes,1,opt,name=service_key,json=serviceKey,proto3" json:"service_key,omitempty"`
	RuntimeJobRef            *string                `protobuf:"bytes,2,opt,name=runtime_job_ref,json=runtimeJobRef,proto3,oneof" json:"runtime_job_ref,omitempty"`
	ImageRef                 string                 `protobuf:"bytes,3,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"`
	ImageTag                 string                 `protobuf:"bytes,4,opt,name=image_tag,json=imageTag,proto3" json:"image_tag,omitempty"`
	ImageDigest              *string                `protobuf:"bytes,5,opt,name=image_digest,json=imageDigest,proto3,oneof" json:"image_digest,omitempty"`
	BuildPlanItemFingerprint *string                `protobuf:"bytes,6,opt,name=build_plan_item_fingerprint,json=buildPlanItemFingerprint,proto3,oneof" json:"build_plan_item_fingerprint,omitempty"`
	BuildPlanFingerprint     *string                `protobuf:"bytes,7,opt,name=build_plan_fingerprint,json=buildPlanFingerprint,proto3,oneof" json:"build_plan_fingerprint,omitempty"`
	BuildContextRef          *string                `protobuf:"bytes,8,opt,name=build_context_ref,json=buildContextRef,proto3,oneof" json:"build_context_ref,omitempty"`
	BuildContextDigest       *string                `protobuf:"bytes,9,opt,name=build_context_digest,json=buildContextDigest,proto3,oneof" json:"build_context_digest,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

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

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

func (*SelfDeployBuildOutput) ProtoMessage() {}

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

func (x *SelfDeployBuildOutput) GetServiceKey() string {
	if x != nil {
		return x.ServiceKey
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetRuntimeJobRef() string {
	if x != nil && x.RuntimeJobRef != nil {
		return *x.RuntimeJobRef
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetImageRef() string {
	if x != nil {
		return x.ImageRef
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetImageTag() string {
	if x != nil {
		return x.ImageTag
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetImageDigest() string {
	if x != nil && x.ImageDigest != nil {
		return *x.ImageDigest
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetBuildPlanItemFingerprint() string {
	if x != nil && x.BuildPlanItemFingerprint != nil {
		return *x.BuildPlanItemFingerprint
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetBuildPlanFingerprint() string {
	if x != nil && x.BuildPlanFingerprint != nil {
		return *x.BuildPlanFingerprint
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetBuildContextRef() string {
	if x != nil && x.BuildContextRef != nil {
		return *x.BuildContextRef
	}
	return ""
}

func (x *SelfDeployBuildOutput) GetBuildContextDigest() string {
	if x != nil && x.BuildContextDigest != nil {
		return *x.BuildContextDigest
	}
	return ""
}

// SelfDeployDeployPlanItem содержит checked deploy spec одного сервиса.
type SelfDeployDeployPlanItem struct {
	state               protoimpl.MessageState         `protogen:"open.v1"`
	ServiceKey          string                         `protobuf:"bytes,1,opt,name=service_key,json=serviceKey,proto3" json:"service_key,omitempty"`
	ServiceRef          *string                        `protobuf:"bytes,2,opt,name=service_ref,json=serviceRef,proto3,oneof" json:"service_ref,omitempty"`
	DeployExecutionSpec *v1.DeployExecutionSpec        `protobuf:"bytes,3,opt,name=deploy_execution_spec,json=deployExecutionSpec,proto3" json:"deploy_execution_spec,omitempty"`
	PlanItemFingerprint string                         `protobuf:"bytes,4,opt,name=plan_item_fingerprint,json=planItemFingerprint,proto3" json:"plan_item_fingerprint,omitempty"`
	Status              SelfDeployDeployPlanItemStatus `protobuf:"varint,5,opt,name=status,proto3,enum=kodex.projects.v1.SelfDeployDeployPlanItemStatus" json:"status,omitempty"`
	SafeReason          *string                        `protobuf:"bytes,6,opt,name=safe_reason,json=safeReason,proto3,oneof" json:"safe_reason,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*SelfDeployDeployPlanItem) ProtoMessage() {}

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

func (x *SelfDeployDeployPlanItem) GetServiceKey() string {
	if x != nil {
		return x.ServiceKey
	}
	return ""
}

func (x *SelfDeployDeployPlanItem) GetServiceRef() string {
	if x != nil && x.ServiceRef != nil {
		return *x.ServiceRef
	}
	return ""
}

func (x *SelfDeployDeployPlanItem) GetDeployExecutionSpec() *v1.DeployExecutionSpec {
	if x != nil {
		return x.DeployExecutionSpec
	}
	return nil
}

func (x *SelfDeployDeployPlanItem) GetPlanItemFingerprint() string {
	if x != nil {
		return x.PlanItemFingerprint
	}
	return ""
}

func (x *SelfDeployDeployPlanItem) GetStatus() SelfDeployDeployPlanItemStatus {
	if x != nil {
		return x.Status
	}
	return SelfDeployDeployPlanItemStatus_SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_UNSPECIFIED
}

func (x *SelfDeployDeployPlanItem) GetSafeReason() string {
	if x != nil && x.SafeReason != nil {
		return *x.SafeReason
	}
	return ""
}

// SelfDeployDeployPlan содержит checked project-owned deploy inputs.
type SelfDeployDeployPlan struct {
	state               protoimpl.MessageState            `protogen:"open.v1"`
	ProjectRef          string                            `protobuf:"bytes,1,opt,name=project_ref,json=projectRef,proto3" json:"project_ref,omitempty"`
	RepositoryRef       string                            `protobuf:"bytes,2,opt,name=repository_ref,json=repositoryRef,proto3" json:"repository_ref,omitempty"`
	ProviderSignalRef   *string                           `protobuf:"bytes,3,opt,name=provider_signal_ref,json=providerSignalRef,proto3,oneof" json:"provider_signal_ref,omitempty"`
	SourceRef           string                            `protobuf:"bytes,4,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	MergeCommitSha      string                            `protobuf:"bytes,5,opt,name=merge_commit_sha,json=mergeCommitSha,proto3" json:"merge_commit_sha,omitempty"`
	ServicesYaml        *SelfDeployServicesYamlProjection `protobuf:"bytes,6,opt,name=services_yaml,json=servicesYaml,proto3" json:"services_yaml,omitempty"`
	AffectedServiceKeys []string                          `protobuf:"bytes,7,rep,name=affected_service_keys,json=affectedServiceKeys,proto3" json:"affected_service_keys,omitempty"`
	DeployItems         []*SelfDeployDeployPlanItem       `protobuf:"bytes,8,rep,name=deploy_items,json=deployItems,proto3" json:"deploy_items,omitempty"`
	PlanFingerprint     string                            `protobuf:"bytes,9,opt,name=plan_fingerprint,json=planFingerprint,proto3" json:"plan_fingerprint,omitempty"`
	SafeSummary         string                            `protobuf:"bytes,10,opt,name=safe_summary,json=safeSummary,proto3" json:"safe_summary,omitempty"`
	Version             int64                             `protobuf:"varint,11,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*SelfDeployDeployPlan) ProtoMessage() {}

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

func (x *SelfDeployDeployPlan) GetProjectRef() string {
	if x != nil {
		return x.ProjectRef
	}
	return ""
}

func (x *SelfDeployDeployPlan) GetRepositoryRef() string {
	if x != nil {
		return x.RepositoryRef
	}
	return ""
}

func (x *SelfDeployDeployPlan) GetProviderSignalRef() string {
	if x != nil && x.ProviderSignalRef != nil {
		return *x.ProviderSignalRef
	}
	return ""
}

func (x *SelfDeployDeployPlan) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *SelfDeployDeployPlan) GetMergeCommitSha() string {
	if x != nil {
		return x.MergeCommitSha
	}
	return ""
}

func (x *SelfDeployDeployPlan) GetServicesYaml() *SelfDeployServicesYamlProjection {
	if x != nil {
		return x.ServicesYaml
	}
	return nil
}

func (x *SelfDeployDeployPlan) GetAffectedServiceKeys() []string {
	if x != nil {
		return x.AffectedServiceKeys
	}
	return nil
}

func (x *SelfDeployDeployPlan) GetDeployItems() []*SelfDeployDeployPlanItem {
	if x != nil {
		return x.DeployItems
	}
	return nil
}

func (x *SelfDeployDeployPlan) GetPlanFingerprint() string {
	if x != nil {
		return x.PlanFingerprint
	}
	return ""
}

func (x *SelfDeployDeployPlan) GetSafeSummary() string {
	if x != nil {
		return x.SafeSummary
	}
	return ""
}

func (x *SelfDeployDeployPlan) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// DocumentationSource describes one project documentation source.
type DocumentationSource struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// documentation_source_id is the source aggregate id.
	DocumentationSourceId string `protobuf:"bytes,1,opt,name=documentation_source_id,json=documentationSourceId,proto3" json:"documentation_source_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is optional repository binding id.
	RepositoryId *string `protobuf:"bytes,3,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// scope_type classifies where the source applies.
	ScopeType DocumentationScopeType `protobuf:"varint,4,opt,name=scope_type,json=scopeType,proto3,enum=kodex.projects.v1.DocumentationScopeType" json:"scope_type,omitempty"`
	// scope_id is optional service, dependency or guidance scope id.
	ScopeId *string `protobuf:"bytes,5,opt,name=scope_id,json=scopeId,proto3,oneof" json:"scope_id,omitempty"`
	// local_path is target path in workspace.
	LocalPath string `protobuf:"bytes,6,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"`
	// access_mode controls whether the source is editable.
	AccessMode DocumentationAccessMode `protobuf:"varint,7,opt,name=access_mode,json=accessMode,proto3,enum=kodex.projects.v1.DocumentationAccessMode" json:"access_mode,omitempty"`
	// status is source status.
	Status DocumentationSourceStatus `protobuf:"varint,8,opt,name=status,proto3,enum=kodex.projects.v1.DocumentationSourceStatus" json:"status,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DocumentationSource) ProtoMessage() {}

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

func (x *DocumentationSource) GetDocumentationSourceId() string {
	if x != nil {
		return x.DocumentationSourceId
	}
	return ""
}

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

func (x *DocumentationSource) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *DocumentationSource) GetScopeType() DocumentationScopeType {
	if x != nil {
		return x.ScopeType
	}
	return DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED
}

func (x *DocumentationSource) GetScopeId() string {
	if x != nil && x.ScopeId != nil {
		return *x.ScopeId
	}
	return ""
}

func (x *DocumentationSource) GetLocalPath() string {
	if x != nil {
		return x.LocalPath
	}
	return ""
}

func (x *DocumentationSource) GetAccessMode() DocumentationAccessMode {
	if x != nil {
		return x.AccessMode
	}
	return DocumentationAccessMode_DOCUMENTATION_ACCESS_MODE_UNSPECIFIED
}

func (x *DocumentationSource) GetStatus() DocumentationSourceStatus {
	if x != nil {
		return x.Status
	}
	return DocumentationSourceStatus_DOCUMENTATION_SOURCE_STATUS_UNSPECIFIED
}

func (x *DocumentationSource) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// BranchRules describes branch policy.
type BranchRules struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// branch_rules_id is the branch rule aggregate id.
	BranchRulesId string `protobuf:"bytes,1,opt,name=branch_rules_id,json=branchRulesId,proto3" json:"branch_rules_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id narrows rules to one repository when set.
	RepositoryId *string `protobuf:"bytes,3,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// pattern is the branch name pattern.
	Pattern string `protobuf:"bytes,4,opt,name=pattern,proto3" json:"pattern,omitempty"`
	// required_checks are provider check names required by policy.
	RequiredChecks []string `protobuf:"bytes,5,rep,name=required_checks,json=requiredChecks,proto3" json:"required_checks,omitempty"`
	// merge_policy is the allowed merge strategy.
	MergePolicy MergePolicy `protobuf:"varint,6,opt,name=merge_policy,json=mergePolicy,proto3,enum=kodex.projects.v1.MergePolicy" json:"merge_policy,omitempty"`
	// status is branch rules status.
	Status BranchRulesStatus `protobuf:"varint,7,opt,name=status,proto3,enum=kodex.projects.v1.BranchRulesStatus" json:"status,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BranchRules) ProtoMessage() {}

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

func (x *BranchRules) GetBranchRulesId() string {
	if x != nil {
		return x.BranchRulesId
	}
	return ""
}

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

func (x *BranchRules) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

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

func (x *BranchRules) GetRequiredChecks() []string {
	if x != nil {
		return x.RequiredChecks
	}
	return nil
}

func (x *BranchRules) GetMergePolicy() MergePolicy {
	if x != nil {
		return x.MergePolicy
	}
	return MergePolicy_MERGE_POLICY_UNSPECIFIED
}

func (x *BranchRules) GetStatus() BranchRulesStatus {
	if x != nil {
		return x.Status
	}
	return BranchRulesStatus_BRANCH_RULES_STATUS_UNSPECIFIED
}

func (x *BranchRules) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// ReleasePolicy describes release policy.
type ReleasePolicy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_policy_id is the release policy aggregate id.
	ReleasePolicyId string `protobuf:"bytes,1,opt,name=release_policy_id,json=releasePolicyId,proto3" json:"release_policy_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// name is the policy display name.
	Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	// branch_pattern is release branch pattern.
	BranchPattern string `protobuf:"bytes,4,opt,name=branch_pattern,json=branchPattern,proto3" json:"branch_pattern,omitempty"`
	// rollout_strategy is the deployment rollout strategy.
	RolloutStrategy RolloutStrategy `protobuf:"varint,5,opt,name=rollout_strategy,json=rolloutStrategy,proto3,enum=kodex.projects.v1.RolloutStrategy" json:"rollout_strategy,omitempty"`
	// rollback_policy is the rollback rule.
	RollbackPolicy RollbackPolicy `protobuf:"varint,6,opt,name=rollback_policy,json=rollbackPolicy,proto3,enum=kodex.projects.v1.RollbackPolicy" json:"rollback_policy,omitempty"`
	// risk_profile_ref references governance risk profile.
	RiskProfileRef *string `protobuf:"bytes,7,opt,name=risk_profile_ref,json=riskProfileRef,proto3,oneof" json:"risk_profile_ref,omitempty"`
	// status is release policy status.
	Status ReleasePolicyStatus `protobuf:"varint,8,opt,name=status,proto3,enum=kodex.projects.v1.ReleasePolicyStatus" json:"status,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,9,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReleasePolicy) ProtoMessage() {}

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

func (x *ReleasePolicy) GetReleasePolicyId() string {
	if x != nil {
		return x.ReleasePolicyId
	}
	return ""
}

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

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

func (x *ReleasePolicy) GetBranchPattern() string {
	if x != nil {
		return x.BranchPattern
	}
	return ""
}

func (x *ReleasePolicy) GetRolloutStrategy() RolloutStrategy {
	if x != nil {
		return x.RolloutStrategy
	}
	return RolloutStrategy_ROLLOUT_STRATEGY_UNSPECIFIED
}

func (x *ReleasePolicy) GetRollbackPolicy() RollbackPolicy {
	if x != nil {
		return x.RollbackPolicy
	}
	return RollbackPolicy_ROLLBACK_POLICY_UNSPECIFIED
}

func (x *ReleasePolicy) GetRiskProfileRef() string {
	if x != nil && x.RiskProfileRef != nil {
		return *x.RiskProfileRef
	}
	return ""
}

func (x *ReleasePolicy) GetStatus() ReleasePolicyStatus {
	if x != nil {
		return x.Status
	}
	return ReleasePolicyStatus_RELEASE_POLICY_STATUS_UNSPECIFIED
}

func (x *ReleasePolicy) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// ReleaseLine describes a concrete release line.
type ReleaseLine struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_line_id is the release line aggregate id.
	ReleaseLineId string `protobuf:"bytes,1,opt,name=release_line_id,json=releaseLineId,proto3" json:"release_line_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// release_policy_id is the source release policy id.
	ReleasePolicyId string `protobuf:"bytes,3,opt,name=release_policy_id,json=releasePolicyId,proto3" json:"release_policy_id,omitempty"`
	// name is the release line name.
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// branch_pattern is release branch pattern.
	BranchPattern string `protobuf:"bytes,5,opt,name=branch_pattern,json=branchPattern,proto3" json:"branch_pattern,omitempty"`
	// status is release line status.
	Status ReleasePolicyStatus `protobuf:"varint,6,opt,name=status,proto3,enum=kodex.projects.v1.ReleasePolicyStatus" json:"status,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReleaseLine) ProtoMessage() {}

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

func (x *ReleaseLine) GetReleaseLineId() string {
	if x != nil {
		return x.ReleaseLineId
	}
	return ""
}

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

func (x *ReleaseLine) GetReleasePolicyId() string {
	if x != nil {
		return x.ReleasePolicyId
	}
	return ""
}

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

func (x *ReleaseLine) GetBranchPattern() string {
	if x != nil {
		return x.BranchPattern
	}
	return ""
}

func (x *ReleaseLine) GetStatus() ReleasePolicyStatus {
	if x != nil {
		return x.Status
	}
	return ReleasePolicyStatus_RELEASE_POLICY_STATUS_UNSPECIFIED
}

func (x *ReleaseLine) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// PlacementPolicy describes allowed runtime placement.
type PlacementPolicy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// placement_policy_id is the placement policy aggregate id.
	PlacementPolicyId string `protobuf:"bytes,1,opt,name=placement_policy_id,json=placementPolicyId,proto3" json:"placement_policy_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id narrows policy to one repository when set.
	RepositoryId *string `protobuf:"bytes,3,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// service_key narrows policy to one service when set.
	ServiceKey *string `protobuf:"bytes,4,opt,name=service_key,json=serviceKey,proto3,oneof" json:"service_key,omitempty"`
	// allowed_cluster_refs contains fleet-manager cluster references.
	AllowedClusterRefs []string `protobuf:"bytes,5,rep,name=allowed_cluster_refs,json=allowedClusterRefs,proto3" json:"allowed_cluster_refs,omitempty"`
	// status is placement policy status.
	Status PlacementPolicyStatus `protobuf:"varint,6,opt,name=status,proto3,enum=kodex.projects.v1.PlacementPolicyStatus" json:"status,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PlacementPolicy) ProtoMessage() {}

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

func (x *PlacementPolicy) GetPlacementPolicyId() string {
	if x != nil {
		return x.PlacementPolicyId
	}
	return ""
}

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

func (x *PlacementPolicy) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *PlacementPolicy) GetServiceKey() string {
	if x != nil && x.ServiceKey != nil {
		return *x.ServiceKey
	}
	return ""
}

func (x *PlacementPolicy) GetAllowedClusterRefs() []string {
	if x != nil {
		return x.AllowedClusterRefs
	}
	return nil
}

func (x *PlacementPolicy) GetStatus() PlacementPolicyStatus {
	if x != nil {
		return x.Status
	}
	return PlacementPolicyStatus_PLACEMENT_POLICY_STATUS_UNSPECIFIED
}

func (x *PlacementPolicy) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// PolicyOverride describes a time-bound operator override.
type PolicyOverride struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// policy_override_id is the override aggregate id.
	PolicyOverrideId string `protobuf:"bytes,1,opt,name=policy_override_id,json=policyOverrideId,proto3" json:"policy_override_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// target_type classifies overridden policy area.
	TargetType PolicyOverrideTargetType `protobuf:"varint,3,opt,name=target_type,json=targetType,proto3,enum=kodex.projects.v1.PolicyOverrideTargetType" json:"target_type,omitempty"`
	// target_id is optional concrete aggregate id.
	TargetId *string `protobuf:"bytes,4,opt,name=target_id,json=targetId,proto3,oneof" json:"target_id,omitempty"`
	// payload_json is the minimum override payload.
	PayloadJson string `protobuf:"bytes,5,opt,name=payload_json,json=payloadJson,proto3" json:"payload_json,omitempty"`
	// reason is the operator reason.
	Reason string `protobuf:"bytes,6,opt,name=reason,proto3" json:"reason,omitempty"`
	// status is override lifecycle status.
	Status PolicyOverrideStatus `protobuf:"varint,7,opt,name=status,proto3,enum=kodex.projects.v1.PolicyOverrideStatus" json:"status,omitempty"`
	// expires_at is the expiration timestamp in RFC3339 format.
	ExpiresAt string `protobuf:"bytes,8,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	// created_by_actor_ref references the operator for audit.
	CreatedByActorRef string `protobuf:"bytes,9,opt,name=created_by_actor_ref,json=createdByActorRef,proto3" json:"created_by_actor_ref,omitempty"`
	// version is the aggregate version.
	Version       int64 `protobuf:"varint,10,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PolicyOverride) ProtoMessage() {}

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

func (x *PolicyOverride) GetPolicyOverrideId() string {
	if x != nil {
		return x.PolicyOverrideId
	}
	return ""
}

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

func (x *PolicyOverride) GetTargetType() PolicyOverrideTargetType {
	if x != nil {
		return x.TargetType
	}
	return PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_UNSPECIFIED
}

func (x *PolicyOverride) GetTargetId() string {
	if x != nil && x.TargetId != nil {
		return *x.TargetId
	}
	return ""
}

func (x *PolicyOverride) GetPayloadJson() string {
	if x != nil {
		return x.PayloadJson
	}
	return ""
}

func (x *PolicyOverride) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *PolicyOverride) GetStatus() PolicyOverrideStatus {
	if x != nil {
		return x.Status
	}
	return PolicyOverrideStatus_POLICY_OVERRIDE_STATUS_UNSPECIFIED
}

func (x *PolicyOverride) GetExpiresAt() string {
	if x != nil {
		return x.ExpiresAt
	}
	return ""
}

func (x *PolicyOverride) GetCreatedByActorRef() string {
	if x != nil {
		return x.CreatedByActorRef
	}
	return ""
}

func (x *PolicyOverride) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// WorkspacePolicy describes sources allowed in an agent workspace.
type WorkspacePolicy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// code_sources are code repositories allowed in workspace.
	CodeSources []*WorkspaceCodeSource `protobuf:"bytes,2,rep,name=code_sources,json=codeSources,proto3" json:"code_sources,omitempty"`
	// documentation_sources are documentation sources allowed in workspace.
	DocumentationSources []*WorkspaceDocumentationSource `protobuf:"bytes,3,rep,name=documentation_sources,json=documentationSources,proto3" json:"documentation_sources,omitempty"`
	// guidance_package_refs are installed guidance package references.
	GuidancePackageRefs []string `protobuf:"bytes,4,rep,name=guidance_package_refs,json=guidancePackageRefs,proto3" json:"guidance_package_refs,omitempty"`
	// policy_version is the services policy version used to build this result.
	PolicyVersion int64 `protobuf:"varint,5,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	// active_policy_overrides are active emergency deviations from Git-managed policy.
	ActivePolicyOverrides []*PolicyOverride `protobuf:"bytes,6,rep,name=active_policy_overrides,json=activePolicyOverrides,proto3" json:"active_policy_overrides,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

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

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

func (*WorkspacePolicy) ProtoMessage() {}

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

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

func (x *WorkspacePolicy) GetCodeSources() []*WorkspaceCodeSource {
	if x != nil {
		return x.CodeSources
	}
	return nil
}

func (x *WorkspacePolicy) GetDocumentationSources() []*WorkspaceDocumentationSource {
	if x != nil {
		return x.DocumentationSources
	}
	return nil
}

func (x *WorkspacePolicy) GetGuidancePackageRefs() []string {
	if x != nil {
		return x.GuidancePackageRefs
	}
	return nil
}

func (x *WorkspacePolicy) GetPolicyVersion() int64 {
	if x != nil {
		return x.PolicyVersion
	}
	return 0
}

func (x *WorkspacePolicy) GetActivePolicyOverrides() []*PolicyOverride {
	if x != nil {
		return x.ActivePolicyOverrides
	}
	return nil
}

// WorkspaceCodeSource describes one code checkout source.
type WorkspaceCodeSource struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository_id is the repository binding id.
	RepositoryId string `protobuf:"bytes,1,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// provider is the repository provider.
	Provider RepositoryProvider `protobuf:"varint,2,opt,name=provider,proto3,enum=kodex.projects.v1.RepositoryProvider" json:"provider,omitempty"`
	// provider_owner is owner or group name at provider.
	ProviderOwner string `protobuf:"bytes,3,opt,name=provider_owner,json=providerOwner,proto3" json:"provider_owner,omitempty"`
	// provider_name is repository name at provider.
	ProviderName string `protobuf:"bytes,4,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// default_branch is the default branch to checkout unless task overrides it.
	DefaultBranch string `protobuf:"bytes,5,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"`
	// local_path is the target path in workspace.
	LocalPath string `protobuf:"bytes,6,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"`
	// access_mode controls whether the source is editable.
	AccessMode    SourceAccessMode `protobuf:"varint,7,opt,name=access_mode,json=accessMode,proto3,enum=kodex.projects.v1.SourceAccessMode" json:"access_mode,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkspaceCodeSource) ProtoMessage() {}

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

func (x *WorkspaceCodeSource) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *WorkspaceCodeSource) GetProvider() RepositoryProvider {
	if x != nil {
		return x.Provider
	}
	return RepositoryProvider_REPOSITORY_PROVIDER_UNSPECIFIED
}

func (x *WorkspaceCodeSource) GetProviderOwner() string {
	if x != nil {
		return x.ProviderOwner
	}
	return ""
}

func (x *WorkspaceCodeSource) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *WorkspaceCodeSource) GetDefaultBranch() string {
	if x != nil {
		return x.DefaultBranch
	}
	return ""
}

func (x *WorkspaceCodeSource) GetLocalPath() string {
	if x != nil {
		return x.LocalPath
	}
	return ""
}

func (x *WorkspaceCodeSource) GetAccessMode() SourceAccessMode {
	if x != nil {
		return x.AccessMode
	}
	return SourceAccessMode_SOURCE_ACCESS_MODE_UNSPECIFIED
}

// WorkspaceDocumentationSource describes one documentation checkout source.
type WorkspaceDocumentationSource struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// documentation_source_id is the documentation source id.
	DocumentationSourceId string `protobuf:"bytes,1,opt,name=documentation_source_id,json=documentationSourceId,proto3" json:"documentation_source_id,omitempty"`
	// repository_id is optional repository binding id.
	RepositoryId *string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// scope_type classifies where the source applies.
	ScopeType DocumentationScopeType `protobuf:"varint,3,opt,name=scope_type,json=scopeType,proto3,enum=kodex.projects.v1.DocumentationScopeType" json:"scope_type,omitempty"`
	// scope_id is optional service, dependency or guidance scope id.
	ScopeId *string `protobuf:"bytes,4,opt,name=scope_id,json=scopeId,proto3,oneof" json:"scope_id,omitempty"`
	// local_path is the target path in workspace.
	LocalPath string `protobuf:"bytes,5,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"`
	// access_mode controls whether the source is editable.
	AccessMode    SourceAccessMode `protobuf:"varint,6,opt,name=access_mode,json=accessMode,proto3,enum=kodex.projects.v1.SourceAccessMode" json:"access_mode,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkspaceDocumentationSource) ProtoMessage() {}

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

func (x *WorkspaceDocumentationSource) GetDocumentationSourceId() string {
	if x != nil {
		return x.DocumentationSourceId
	}
	return ""
}

func (x *WorkspaceDocumentationSource) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *WorkspaceDocumentationSource) GetScopeType() DocumentationScopeType {
	if x != nil {
		return x.ScopeType
	}
	return DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED
}

func (x *WorkspaceDocumentationSource) GetScopeId() string {
	if x != nil && x.ScopeId != nil {
		return *x.ScopeId
	}
	return ""
}

func (x *WorkspaceDocumentationSource) GetLocalPath() string {
	if x != nil {
		return x.LocalPath
	}
	return ""
}

func (x *WorkspaceDocumentationSource) GetAccessMode() SourceAccessMode {
	if x != nil {
		return x.AccessMode
	}
	return SourceAccessMode_SOURCE_ACCESS_MODE_UNSPECIFIED
}

// CreateProjectRequest creates a project.
type CreateProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// organization_id is the owner organization id.
	OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"`
	// slug is unique project slug in organization scope.
	Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"`
	// display_name is safe display text.
	DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// description is optional safe description.
	Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// icon_object_uri is an optional object-store URI for project icon.
	IconObjectUri *string `protobuf:"bytes,5,opt,name=icon_object_uri,json=iconObjectUri,proto3,oneof" json:"icon_object_uri,omitempty"`
	// status is optional target status; server defaults to active.
	Status *ProjectStatus `protobuf:"varint,6,opt,name=status,proto3,enum=kodex.projects.v1.ProjectStatus,oneof" json:"status,omitempty"`
	// meta carries idempotency and audit context.
	Meta          *CommandMeta `protobuf:"bytes,7,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateProjectRequest) ProtoMessage() {}

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

func (x *CreateProjectRequest) GetOrganizationId() string {
	if x != nil {
		return x.OrganizationId
	}
	return ""
}

func (x *CreateProjectRequest) GetSlug() string {
	if x != nil {
		return x.Slug
	}
	return ""
}

func (x *CreateProjectRequest) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *CreateProjectRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *CreateProjectRequest) GetIconObjectUri() string {
	if x != nil && x.IconObjectUri != nil {
		return *x.IconObjectUri
	}
	return ""
}

func (x *CreateProjectRequest) GetStatus() ProjectStatus {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return ProjectStatus_PROJECT_STATUS_UNSPECIFIED
}

func (x *CreateProjectRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// UpdateProjectRequest changes safe project fields.
type UpdateProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project aggregate id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// slug is optional new slug.
	Slug *string `protobuf:"bytes,2,opt,name=slug,proto3,oneof" json:"slug,omitempty"`
	// display_name is optional safe display text.
	DisplayName *string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3,oneof" json:"display_name,omitempty"`
	// description is optional safe description; present empty value clears it.
	Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// icon_object_uri is optional icon URI; present empty value clears it.
	IconObjectUri *string `protobuf:"bytes,5,opt,name=icon_object_uri,json=iconObjectUri,proto3,oneof" json:"icon_object_uri,omitempty"`
	// status is optional target lifecycle status.
	Status *ProjectStatus `protobuf:"varint,6,opt,name=status,proto3,enum=kodex.projects.v1.ProjectStatus,oneof" json:"status,omitempty"`
	// meta carries idempotency, expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,7,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateProjectRequest) ProtoMessage() {}

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

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

func (x *UpdateProjectRequest) GetSlug() string {
	if x != nil && x.Slug != nil {
		return *x.Slug
	}
	return ""
}

func (x *UpdateProjectRequest) GetDisplayName() string {
	if x != nil && x.DisplayName != nil {
		return *x.DisplayName
	}
	return ""
}

func (x *UpdateProjectRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *UpdateProjectRequest) GetIconObjectUri() string {
	if x != nil && x.IconObjectUri != nil {
		return *x.IconObjectUri
	}
	return ""
}

func (x *UpdateProjectRequest) GetStatus() ProjectStatus {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return ProjectStatus_PROJECT_STATUS_UNSPECIFIED
}

func (x *UpdateProjectRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ProjectResponse returns project state.
type ProjectResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project is the returned project state.
	Project       *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ProjectResponse) ProtoMessage() {}

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

func (x *ProjectResponse) GetProject() *Project {
	if x != nil {
		return x.Project
	}
	return nil
}

// GetProjectRequest reads a project by id.
type GetProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project aggregate id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetProjectRequest) ProtoMessage() {}

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

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

func (x *GetProjectRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListProjectsRequest lists projects by organization and status.
type ListProjectsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// organization_id optionally filters projects by organization.
	OrganizationId *string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3,oneof" json:"organization_id,omitempty"`
	// statuses optionally filter project lifecycle.
	Statuses []ProjectStatus `protobuf:"varint,2,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.ProjectStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,3,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListProjectsRequest) ProtoMessage() {}

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

func (x *ListProjectsRequest) GetOrganizationId() string {
	if x != nil && x.OrganizationId != nil {
		return *x.OrganizationId
	}
	return ""
}

func (x *ListProjectsRequest) GetStatuses() []ProjectStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListProjectsRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListProjectsRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListProjectsResponse returns project list.
type ListProjectsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// projects are returned in stable server-defined order.
	Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListProjectsResponse) ProtoMessage() {}

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

func (x *ListProjectsResponse) GetProjects() []*Project {
	if x != nil {
		return x.Projects
	}
	return nil
}

func (x *ListProjectsResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// AttachRepositoryRequest attaches a repository to a project.
type AttachRepositoryRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// provider is the repository provider.
	Provider RepositoryProvider `protobuf:"varint,2,opt,name=provider,proto3,enum=kodex.projects.v1.RepositoryProvider" json:"provider,omitempty"`
	// provider_owner is owner or group name at provider.
	ProviderOwner string `protobuf:"bytes,3,opt,name=provider_owner,json=providerOwner,proto3" json:"provider_owner,omitempty"`
	// provider_name is repository name at provider.
	ProviderName string `protobuf:"bytes,4,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// web_url is a safe URL to the provider repository.
	WebUrl string `protobuf:"bytes,5,opt,name=web_url,json=webUrl,proto3" json:"web_url,omitempty"`
	// default_branch is the default branch.
	DefaultBranch string `protobuf:"bytes,6,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"`
	// provider_repository_id is optional provider-native id.
	ProviderRepositoryId *string `protobuf:"bytes,7,opt,name=provider_repository_id,json=providerRepositoryId,proto3,oneof" json:"provider_repository_id,omitempty"`
	// icon_object_uri is an optional object-store URI for repository icon.
	IconObjectUri *string `protobuf:"bytes,8,opt,name=icon_object_uri,json=iconObjectUri,proto3,oneof" json:"icon_object_uri,omitempty"`
	// status is optional target status; server defaults to active.
	Status *RepositoryStatus `protobuf:"varint,9,opt,name=status,proto3,enum=kodex.projects.v1.RepositoryStatus,oneof" json:"status,omitempty"`
	// meta carries idempotency and audit context.
	Meta          *CommandMeta `protobuf:"bytes,10,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AttachRepositoryRequest) ProtoMessage() {}

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

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

func (x *AttachRepositoryRequest) GetProvider() RepositoryProvider {
	if x != nil {
		return x.Provider
	}
	return RepositoryProvider_REPOSITORY_PROVIDER_UNSPECIFIED
}

func (x *AttachRepositoryRequest) GetProviderOwner() string {
	if x != nil {
		return x.ProviderOwner
	}
	return ""
}

func (x *AttachRepositoryRequest) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *AttachRepositoryRequest) GetWebUrl() string {
	if x != nil {
		return x.WebUrl
	}
	return ""
}

func (x *AttachRepositoryRequest) GetDefaultBranch() string {
	if x != nil {
		return x.DefaultBranch
	}
	return ""
}

func (x *AttachRepositoryRequest) GetProviderRepositoryId() string {
	if x != nil && x.ProviderRepositoryId != nil {
		return *x.ProviderRepositoryId
	}
	return ""
}

func (x *AttachRepositoryRequest) GetIconObjectUri() string {
	if x != nil && x.IconObjectUri != nil {
		return *x.IconObjectUri
	}
	return ""
}

func (x *AttachRepositoryRequest) GetStatus() RepositoryStatus {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return RepositoryStatus_REPOSITORY_STATUS_UNSPECIFIED
}

func (x *AttachRepositoryRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// UpdateRepositoryRequest changes repository binding fields.
type UpdateRepositoryRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository_id is the repository binding aggregate id.
	RepositoryId string `protobuf:"bytes,1,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// default_branch is optional new default branch.
	DefaultBranch *string `protobuf:"bytes,2,opt,name=default_branch,json=defaultBranch,proto3,oneof" json:"default_branch,omitempty"`
	// status is optional target lifecycle status.
	Status *RepositoryStatus `protobuf:"varint,3,opt,name=status,proto3,enum=kodex.projects.v1.RepositoryStatus,oneof" json:"status,omitempty"`
	// icon_object_uri is optional icon URI; present empty value clears it.
	IconObjectUri *string `protobuf:"bytes,4,opt,name=icon_object_uri,json=iconObjectUri,proto3,oneof" json:"icon_object_uri,omitempty"`
	// meta carries idempotency, expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateRepositoryRequest) ProtoMessage() {}

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

func (x *UpdateRepositoryRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *UpdateRepositoryRequest) GetDefaultBranch() string {
	if x != nil && x.DefaultBranch != nil {
		return *x.DefaultBranch
	}
	return ""
}

func (x *UpdateRepositoryRequest) GetStatus() RepositoryStatus {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return RepositoryStatus_REPOSITORY_STATUS_UNSPECIFIED
}

func (x *UpdateRepositoryRequest) GetIconObjectUri() string {
	if x != nil && x.IconObjectUri != nil {
		return *x.IconObjectUri
	}
	return ""
}

func (x *UpdateRepositoryRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// DetachRepositoryRequest archives an active repository binding.
type DetachRepositoryRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository_id is the repository binding aggregate id.
	RepositoryId string `protobuf:"bytes,1,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// meta carries idempotency, expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DetachRepositoryRequest) ProtoMessage() {}

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

func (x *DetachRepositoryRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *DetachRepositoryRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// RepositoryResponse returns repository binding state.
type RepositoryResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository is the returned repository state.
	Repository    *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RepositoryResponse) ProtoMessage() {}

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

func (x *RepositoryResponse) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

// CreateProviderRepositoryRequest creates a provider repository through provider-hub and links it to the project.
type CreateProviderRepositoryRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id owns the project repository binding.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// provider is the repository provider.
	Provider RepositoryProvider `protobuf:"varint,2,opt,name=provider,proto3,enum=kodex.projects.v1.RepositoryProvider" json:"provider,omitempty"`
	// owner_kind selects organization or authenticated-user provider create semantics.
	OwnerKind RepositoryOwnerKind `protobuf:"varint,3,opt,name=owner_kind,json=ownerKind,proto3,enum=kodex.projects.v1.RepositoryOwnerKind" json:"owner_kind,omitempty"`
	// provider_owner is the owner/group path stored in the project binding. For authenticated-user creates this is the expected account login, while provider-hub receives no explicit owner override.
	ProviderOwner string `protobuf:"bytes,4,opt,name=provider_owner,json=providerOwner,proto3" json:"provider_owner,omitempty"`
	// provider_name is repository name at provider.
	ProviderName string `protobuf:"bytes,5,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// visibility is the requested provider repository visibility.
	Visibility RepositoryVisibility `protobuf:"varint,6,opt,name=visibility,proto3,enum=kodex.projects.v1.RepositoryVisibility" json:"visibility,omitempty"`
	// description is an optional safe provider repository description.
	Description *string `protobuf:"bytes,7,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// icon_object_uri is an optional object-store URI for repository icon.
	IconObjectUri *string `protobuf:"bytes,8,opt,name=icon_object_uri,json=iconObjectUri,proto3,oneof" json:"icon_object_uri,omitempty"`
	// external_account_id is the selected provider account for provider-hub writes.
	ExternalAccountId string `protobuf:"bytes,9,opt,name=external_account_id,json=externalAccountId,proto3" json:"external_account_id,omitempty"`
	// meta carries command identity, actor and audit context.
	Meta          *CommandMeta `protobuf:"bytes,10,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateProviderRepositoryRequest) ProtoMessage() {}

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

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

func (x *CreateProviderRepositoryRequest) GetProvider() RepositoryProvider {
	if x != nil {
		return x.Provider
	}
	return RepositoryProvider_REPOSITORY_PROVIDER_UNSPECIFIED
}

func (x *CreateProviderRepositoryRequest) GetOwnerKind() RepositoryOwnerKind {
	if x != nil {
		return x.OwnerKind
	}
	return RepositoryOwnerKind_REPOSITORY_OWNER_KIND_UNSPECIFIED
}

func (x *CreateProviderRepositoryRequest) GetProviderOwner() string {
	if x != nil {
		return x.ProviderOwner
	}
	return ""
}

func (x *CreateProviderRepositoryRequest) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *CreateProviderRepositoryRequest) GetVisibility() RepositoryVisibility {
	if x != nil {
		return x.Visibility
	}
	return RepositoryVisibility_REPOSITORY_VISIBILITY_UNSPECIFIED
}

func (x *CreateProviderRepositoryRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *CreateProviderRepositoryRequest) GetIconObjectUri() string {
	if x != nil && x.IconObjectUri != nil {
		return *x.IconObjectUri
	}
	return ""
}

func (x *CreateProviderRepositoryRequest) GetExternalAccountId() string {
	if x != nil {
		return x.ExternalAccountId
	}
	return ""
}

func (x *CreateProviderRepositoryRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// RepositoryProviderCreateResponse returns the project binding and safe provider repository refs.
type RepositoryProviderCreateResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository is the pending project binding updated with provider refs and base branch.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// provider_target is the provider repository target derived from the binding.
	ProviderTarget *RepositoryBootstrapProviderTarget `protobuf:"bytes,2,opt,name=provider_target,json=providerTarget,proto3" json:"provider_target,omitempty"`
	// base_branch is the provider default branch prepared by repository creation.
	BaseBranch string `protobuf:"bytes,3,opt,name=base_branch,json=baseBranch,proto3" json:"base_branch,omitempty"`
	// provider_operation_id is the provider-hub operation id when returned.
	ProviderOperationId *string `protobuf:"bytes,4,opt,name=provider_operation_id,json=providerOperationId,proto3,oneof" json:"provider_operation_id,omitempty"`
	// provider_result_ref is a safe provider result URL or id.
	ProviderResultRef *string `protobuf:"bytes,5,opt,name=provider_result_ref,json=providerResultRef,proto3,oneof" json:"provider_result_ref,omitempty"`
	// provider_repository_id is the provider-native repository id when known.
	ProviderRepositoryId *string `protobuf:"bytes,6,opt,name=provider_repository_id,json=providerRepositoryId,proto3,oneof" json:"provider_repository_id,omitempty"`
	// provider_web_url is a safe URL to the provider repository.
	ProviderWebUrl *string `protobuf:"bytes,7,opt,name=provider_web_url,json=providerWebUrl,proto3,oneof" json:"provider_web_url,omitempty"`
	// provider_object_id is the provider-native object id when known.
	ProviderObjectId *string `protobuf:"bytes,8,opt,name=provider_object_id,json=providerObjectId,proto3,oneof" json:"provider_object_id,omitempty"`
	// provider_version is the provider version or update marker when known.
	ProviderVersion *string `protobuf:"bytes,9,opt,name=provider_version,json=providerVersion,proto3,oneof" json:"provider_version,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*RepositoryProviderCreateResponse) ProtoMessage() {}

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

func (x *RepositoryProviderCreateResponse) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *RepositoryProviderCreateResponse) GetProviderTarget() *RepositoryBootstrapProviderTarget {
	if x != nil {
		return x.ProviderTarget
	}
	return nil
}

func (x *RepositoryProviderCreateResponse) GetBaseBranch() string {
	if x != nil {
		return x.BaseBranch
	}
	return ""
}

func (x *RepositoryProviderCreateResponse) GetProviderOperationId() string {
	if x != nil && x.ProviderOperationId != nil {
		return *x.ProviderOperationId
	}
	return ""
}

func (x *RepositoryProviderCreateResponse) GetProviderResultRef() string {
	if x != nil && x.ProviderResultRef != nil {
		return *x.ProviderResultRef
	}
	return ""
}

func (x *RepositoryProviderCreateResponse) GetProviderRepositoryId() string {
	if x != nil && x.ProviderRepositoryId != nil {
		return *x.ProviderRepositoryId
	}
	return ""
}

func (x *RepositoryProviderCreateResponse) GetProviderWebUrl() string {
	if x != nil && x.ProviderWebUrl != nil {
		return *x.ProviderWebUrl
	}
	return ""
}

func (x *RepositoryProviderCreateResponse) GetProviderObjectId() string {
	if x != nil && x.ProviderObjectId != nil {
		return *x.ProviderObjectId
	}
	return ""
}

func (x *RepositoryProviderCreateResponse) GetProviderVersion() string {
	if x != nil && x.ProviderVersion != nil {
		return *x.ProviderVersion
	}
	return ""
}

// CreateRepositoryBootstrapPullRequestRequest prepares project context for an empty-repository bootstrap PR.
type CreateRepositoryBootstrapPullRequestRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project that owns the repository binding.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is the project-catalog repository binding id.
	RepositoryId string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// base_branch is the verified project base branch and must match the binding default branch in this slice.
	BaseBranch string `protobuf:"bytes,3,opt,name=base_branch,json=baseBranch,proto3" json:"base_branch,omitempty"`
	// bootstrap_branch is the branch provider-hub creates or updates.
	BootstrapBranch string `protobuf:"bytes,4,opt,name=bootstrap_branch,json=bootstrapBranch,proto3" json:"bootstrap_branch,omitempty"`
	// commit_message is the safe commit message for prepared files.
	CommitMessage string `protobuf:"bytes,5,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"`
	// title is PR/MR title.
	Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"`
	// body is PR/MR body.
	Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"`
	// draft controls provider draft state when supported.
	Draft bool `protobuf:"varint,8,opt,name=draft,proto3" json:"draft,omitempty"`
	// files are prepared text files. project-catalog does not generate a repository template.
	Files []*RepositoryBootstrapFile `protobuf:"bytes,9,rep,name=files,proto3" json:"files,omitempty"`
	// watermark_json is the required platform watermark payload for provider-native PR/MR linking.
	WatermarkJson string `protobuf:"bytes,10,opt,name=watermark_json,json=watermarkJson,proto3" json:"watermark_json,omitempty"`
	// services_policy links prepared files to a caller-checked services.yaml projection.
	ServicesPolicy *RepositoryBootstrapServicesPolicy `protobuf:"bytes,11,opt,name=services_policy,json=servicesPolicy,proto3" json:"services_policy,omitempty"`
	// external_account_id is the provider account selected by caller policy for the write.
	ExternalAccountId string `protobuf:"bytes,12,opt,name=external_account_id,json=externalAccountId,proto3" json:"external_account_id,omitempty"`
	// meta carries idempotency and audit context.
	Meta          *CommandMeta `protobuf:"bytes,13,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateRepositoryBootstrapPullRequestRequest) ProtoMessage() {}

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

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

func (x *CreateRepositoryBootstrapPullRequestRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetBaseBranch() string {
	if x != nil {
		return x.BaseBranch
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetBootstrapBranch() string {
	if x != nil {
		return x.BootstrapBranch
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetCommitMessage() string {
	if x != nil {
		return x.CommitMessage
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetBody() string {
	if x != nil {
		return x.Body
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetDraft() bool {
	if x != nil {
		return x.Draft
	}
	return false
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetFiles() []*RepositoryBootstrapFile {
	if x != nil {
		return x.Files
	}
	return nil
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetWatermarkJson() string {
	if x != nil {
		return x.WatermarkJson
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetServicesPolicy() *RepositoryBootstrapServicesPolicy {
	if x != nil {
		return x.ServicesPolicy
	}
	return nil
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetExternalAccountId() string {
	if x != nil {
		return x.ExternalAccountId
	}
	return ""
}

func (x *CreateRepositoryBootstrapPullRequestRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// RepositoryBootstrapPullRequestResponse returns project and provider refs for the bootstrap PR command.
type RepositoryBootstrapPullRequestResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository is the authoritative project repository binding used for the provider command.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// provider_target is the provider repository target derived from the binding.
	ProviderTarget *RepositoryBootstrapProviderTarget `protobuf:"bytes,2,opt,name=provider_target,json=providerTarget,proto3" json:"provider_target,omitempty"`
	// base_branch is the target branch accepted by project-catalog.
	BaseBranch string `protobuf:"bytes,3,opt,name=base_branch,json=baseBranch,proto3" json:"base_branch,omitempty"`
	// bootstrap_branch is the provider-side bootstrap branch.
	BootstrapBranch string `protobuf:"bytes,4,opt,name=bootstrap_branch,json=bootstrapBranch,proto3" json:"bootstrap_branch,omitempty"`
	// services_policy_source_path is the checked services.yaml source path.
	ServicesPolicySourcePath string `protobuf:"bytes,5,opt,name=services_policy_source_path,json=servicesPolicySourcePath,proto3" json:"services_policy_source_path,omitempty"`
	// services_policy_content_hash is the checked services.yaml content hash.
	ServicesPolicyContentHash string `protobuf:"bytes,6,opt,name=services_policy_content_hash,json=servicesPolicyContentHash,proto3" json:"services_policy_content_hash,omitempty"`
	// provider_operation_id is the provider-hub operation id when available.
	ProviderOperationId *string `protobuf:"bytes,7,opt,name=provider_operation_id,json=providerOperationId,proto3,oneof" json:"provider_operation_id,omitempty"`
	// provider_result_ref is provider-hub command result ref when available.
	ProviderResultRef *string `protobuf:"bytes,8,opt,name=provider_result_ref,json=providerResultRef,proto3,oneof" json:"provider_result_ref,omitempty"`
	// provider_work_item_projection_id is provider-hub PR/MR projection id when available.
	ProviderWorkItemProjectionId *string `protobuf:"bytes,9,opt,name=provider_work_item_projection_id,json=providerWorkItemProjectionId,proto3,oneof" json:"provider_work_item_projection_id,omitempty"`
	// provider_web_url is the provider PR/MR URL when available.
	ProviderWebUrl *string `protobuf:"bytes,10,opt,name=provider_web_url,json=providerWebUrl,proto3,oneof" json:"provider_web_url,omitempty"`
	// provider_object_id is the provider-native object id when available.
	ProviderObjectId *string `protobuf:"bytes,11,opt,name=provider_object_id,json=providerObjectId,proto3,oneof" json:"provider_object_id,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

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

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

func (*RepositoryBootstrapPullRequestResponse) ProtoMessage() {}

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

func (x *RepositoryBootstrapPullRequestResponse) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *RepositoryBootstrapPullRequestResponse) GetProviderTarget() *RepositoryBootstrapProviderTarget {
	if x != nil {
		return x.ProviderTarget
	}
	return nil
}

func (x *RepositoryBootstrapPullRequestResponse) GetBaseBranch() string {
	if x != nil {
		return x.BaseBranch
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetBootstrapBranch() string {
	if x != nil {
		return x.BootstrapBranch
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetServicesPolicySourcePath() string {
	if x != nil {
		return x.ServicesPolicySourcePath
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetServicesPolicyContentHash() string {
	if x != nil {
		return x.ServicesPolicyContentHash
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetProviderOperationId() string {
	if x != nil && x.ProviderOperationId != nil {
		return *x.ProviderOperationId
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetProviderResultRef() string {
	if x != nil && x.ProviderResultRef != nil {
		return *x.ProviderResultRef
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetProviderWorkItemProjectionId() string {
	if x != nil && x.ProviderWorkItemProjectionId != nil {
		return *x.ProviderWorkItemProjectionId
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetProviderWebUrl() string {
	if x != nil && x.ProviderWebUrl != nil {
		return *x.ProviderWebUrl
	}
	return ""
}

func (x *RepositoryBootstrapPullRequestResponse) GetProviderObjectId() string {
	if x != nil && x.ProviderObjectId != nil {
		return *x.ProviderObjectId
	}
	return ""
}

// GetRepositoryRequest reads a repository binding.
type GetRepositoryRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository_id is the repository binding aggregate id.
	RepositoryId string `protobuf:"bytes,1,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetRepositoryRequest) ProtoMessage() {}

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

func (x *GetRepositoryRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *GetRepositoryRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListRepositoriesRequest lists repositories in a project.
type ListRepositoriesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id filters repositories by owner project.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// statuses optionally filter repository binding lifecycle.
	Statuses []RepositoryStatus `protobuf:"varint,2,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.RepositoryStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,3,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListRepositoriesRequest) ProtoMessage() {}

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

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

func (x *ListRepositoriesRequest) GetStatuses() []RepositoryStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListRepositoriesRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListRepositoriesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListRepositoriesResponse returns repository list.
type ListRepositoriesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repositories are returned in stable server-defined order.
	Repositories []*Repository `protobuf:"bytes,1,rep,name=repositories,proto3" json:"repositories,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListRepositoriesResponse) ProtoMessage() {}

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

func (x *ListRepositoriesResponse) GetRepositories() []*Repository {
	if x != nil {
		return x.Repositories
	}
	return nil
}

func (x *ListRepositoriesResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// ImportServicesPolicyRequest imports a checked services.yaml projection.
type ImportServicesPolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// source_repository_id is the repository where source policy was found.
	SourceRepositoryId *string `protobuf:"bytes,2,opt,name=source_repository_id,json=sourceRepositoryId,proto3,oneof" json:"source_repository_id,omitempty"`
	// source_path is the policy file path.
	SourcePath string `protobuf:"bytes,3,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// source_ref is the branch, tag or provider ref used for import.
	SourceRef *string `protobuf:"bytes,4,opt,name=source_ref,json=sourceRef,proto3,oneof" json:"source_ref,omitempty"`
	// source_commit_sha is the commit used for checked projection.
	SourceCommitSha string `protobuf:"bytes,5,opt,name=source_commit_sha,json=sourceCommitSha,proto3" json:"source_commit_sha,omitempty"`
	// source_blob_sha is the provider file object hash when available.
	SourceBlobSha *string `protobuf:"bytes,6,opt,name=source_blob_sha,json=sourceBlobSha,proto3,oneof" json:"source_blob_sha,omitempty"`
	// content_hash is the normalized source content hash.
	ContentHash string `protobuf:"bytes,7,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
	// validated_payload_json is normalized payload for audit and revalidation.
	ValidatedPayloadJson string `protobuf:"bytes,8,opt,name=validated_payload_json,json=validatedPayloadJson,proto3" json:"validated_payload_json,omitempty"`
	// service_descriptors are typed descriptors extracted from policy.
	ServiceDescriptors []*ServiceDescriptor `protobuf:"bytes,9,rep,name=service_descriptors,json=serviceDescriptors,proto3" json:"service_descriptors,omitempty"`
	// validation_status is source validation status.
	ValidationStatus ServicesPolicyValidationStatus `protobuf:"varint,10,opt,name=validation_status,json=validationStatus,proto3,enum=kodex.projects.v1.ServicesPolicyValidationStatus" json:"validation_status,omitempty"`
	// meta carries idempotency and audit context.
	Meta          *CommandMeta `protobuf:"bytes,11,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ImportServicesPolicyRequest) ProtoMessage() {}

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

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

func (x *ImportServicesPolicyRequest) GetSourceRepositoryId() string {
	if x != nil && x.SourceRepositoryId != nil {
		return *x.SourceRepositoryId
	}
	return ""
}

func (x *ImportServicesPolicyRequest) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *ImportServicesPolicyRequest) GetSourceRef() string {
	if x != nil && x.SourceRef != nil {
		return *x.SourceRef
	}
	return ""
}

func (x *ImportServicesPolicyRequest) GetSourceCommitSha() string {
	if x != nil {
		return x.SourceCommitSha
	}
	return ""
}

func (x *ImportServicesPolicyRequest) GetSourceBlobSha() string {
	if x != nil && x.SourceBlobSha != nil {
		return *x.SourceBlobSha
	}
	return ""
}

func (x *ImportServicesPolicyRequest) GetContentHash() string {
	if x != nil {
		return x.ContentHash
	}
	return ""
}

func (x *ImportServicesPolicyRequest) GetValidatedPayloadJson() string {
	if x != nil {
		return x.ValidatedPayloadJson
	}
	return ""
}

func (x *ImportServicesPolicyRequest) GetServiceDescriptors() []*ServiceDescriptor {
	if x != nil {
		return x.ServiceDescriptors
	}
	return nil
}

func (x *ImportServicesPolicyRequest) GetValidationStatus() ServicesPolicyValidationStatus {
	if x != nil {
		return x.ValidationStatus
	}
	return ServicesPolicyValidationStatus_SERVICES_POLICY_VALIDATION_STATUS_UNSPECIFIED
}

func (x *ImportServicesPolicyRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ImportBootstrapServicesPolicyRequest imports a checked services.yaml projection after provider bootstrap PR merge.
type ImportBootstrapServicesPolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project that owns the repository binding.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is the project-catalog repository binding id.
	RepositoryId string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// provider_target is the safe provider repository target from provider projection.
	ProviderTarget *RepositoryBootstrapProviderTarget `protobuf:"bytes,3,opt,name=provider_target,json=providerTarget,proto3" json:"provider_target,omitempty"`
	// base_branch is the repository binding base branch that received the merge.
	BaseBranch string `protobuf:"bytes,4,opt,name=base_branch,json=baseBranch,proto3" json:"base_branch,omitempty"`
	// source_ref is the branch, tag or provider ref used for checked import.
	SourceRef string `protobuf:"bytes,5,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// source_commit_sha is the merge commit used for checked projection.
	SourceCommitSha string `protobuf:"bytes,6,opt,name=source_commit_sha,json=sourceCommitSha,proto3" json:"source_commit_sha,omitempty"`
	// source_blob_sha is the provider file object hash when available.
	SourceBlobSha *string `protobuf:"bytes,7,opt,name=source_blob_sha,json=sourceBlobSha,proto3,oneof" json:"source_blob_sha,omitempty"`
	// source_path is the services.yaml path in the merged commit.
	SourcePath string `protobuf:"bytes,8,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// content_hash is the normalized source content hash.
	ContentHash string `protobuf:"bytes,9,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
	// validated_payload_json is normalized services.yaml payload already checked by the caller contour.
	ValidatedPayloadJson string `protobuf:"bytes,10,opt,name=validated_payload_json,json=validatedPayloadJson,proto3" json:"validated_payload_json,omitempty"`
	// watermark_json is the parsed platform watermark payload from the merged provider work item.
	WatermarkJson string `protobuf:"bytes,11,opt,name=watermark_json,json=watermarkJson,proto3" json:"watermark_json,omitempty"`
	// provider_work_item_projection_id is the safe provider-hub PR/MR projection id when known.
	ProviderWorkItemProjectionId *string `protobuf:"bytes,12,opt,name=provider_work_item_projection_id,json=providerWorkItemProjectionId,proto3,oneof" json:"provider_work_item_projection_id,omitempty"`
	// provider_web_url is the safe provider PR/MR URL when known.
	ProviderWebUrl *string `protobuf:"bytes,13,opt,name=provider_web_url,json=providerWebUrl,proto3,oneof" json:"provider_web_url,omitempty"`
	// provider_object_id is the provider-native PR/MR object id when known.
	ProviderObjectId *string `protobuf:"bytes,14,opt,name=provider_object_id,json=providerObjectId,proto3,oneof" json:"provider_object_id,omitempty"`
	// merge_observed_at is the provider merge observation time in RFC3339 format when known.
	MergeObservedAt *string `protobuf:"bytes,15,opt,name=merge_observed_at,json=mergeObservedAt,proto3,oneof" json:"merge_observed_at,omitempty"`
	// meta carries idempotency, expected repository version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,16,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ImportBootstrapServicesPolicyRequest) ProtoMessage() {}

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

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

func (x *ImportBootstrapServicesPolicyRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetProviderTarget() *RepositoryBootstrapProviderTarget {
	if x != nil {
		return x.ProviderTarget
	}
	return nil
}

func (x *ImportBootstrapServicesPolicyRequest) GetBaseBranch() string {
	if x != nil {
		return x.BaseBranch
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetSourceCommitSha() string {
	if x != nil {
		return x.SourceCommitSha
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetSourceBlobSha() string {
	if x != nil && x.SourceBlobSha != nil {
		return *x.SourceBlobSha
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetContentHash() string {
	if x != nil {
		return x.ContentHash
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetValidatedPayloadJson() string {
	if x != nil {
		return x.ValidatedPayloadJson
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetWatermarkJson() string {
	if x != nil {
		return x.WatermarkJson
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetProviderWorkItemProjectionId() string {
	if x != nil && x.ProviderWorkItemProjectionId != nil {
		return *x.ProviderWorkItemProjectionId
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetProviderWebUrl() string {
	if x != nil && x.ProviderWebUrl != nil {
		return *x.ProviderWebUrl
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetProviderObjectId() string {
	if x != nil && x.ProviderObjectId != nil {
		return *x.ProviderObjectId
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetMergeObservedAt() string {
	if x != nil && x.MergeObservedAt != nil {
		return *x.MergeObservedAt
	}
	return ""
}

func (x *ImportBootstrapServicesPolicyRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// BootstrapRepositoryMergeSignal is the safe provider-side merge signal used to close repository bootstrap.
type BootstrapRepositoryMergeSignal struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// signal_id is provider-hub repository_merge_signal id when known.
	SignalId *string `protobuf:"bytes,1,opt,name=signal_id,json=signalId,proto3,oneof" json:"signal_id,omitempty"`
	// signal_key is provider-hub idempotency key for this merge signal.
	SignalKey string `protobuf:"bytes,2,opt,name=signal_key,json=signalKey,proto3" json:"signal_key,omitempty"`
	// signal_kind must be bootstrap for this project-catalog command.
	SignalKind string `protobuf:"bytes,3,opt,name=signal_kind,json=signalKind,proto3" json:"signal_kind,omitempty"`
	// provider_target is the safe provider repository target from provider projection.
	ProviderTarget *RepositoryBootstrapProviderTarget `protobuf:"bytes,4,opt,name=provider_target,json=providerTarget,proto3" json:"provider_target,omitempty"`
	// base_branch is the branch that received the merge.
	BaseBranch string `protobuf:"bytes,5,opt,name=base_branch,json=baseBranch,proto3" json:"base_branch,omitempty"`
	// source_ref is the provider PR/MR source ref from the safe merge signal; checked import uses base_branch.
	SourceRef string `protobuf:"bytes,6,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// merge_commit_sha is the merge commit observed by provider-hub.
	MergeCommitSha string `protobuf:"bytes,7,opt,name=merge_commit_sha,json=mergeCommitSha,proto3" json:"merge_commit_sha,omitempty"`
	// source_blob_sha is the provider file object hash when available.
	SourceBlobSha *string `protobuf:"bytes,8,opt,name=source_blob_sha,json=sourceBlobSha,proto3,oneof" json:"source_blob_sha,omitempty"`
	// watermark_digest is the provider-hub digest of the parsed platform watermark.
	WatermarkDigest string `protobuf:"bytes,9,opt,name=watermark_digest,json=watermarkDigest,proto3" json:"watermark_digest,omitempty"`
	// watermark_json is the parsed platform watermark payload from the merged provider work item.
	WatermarkJson string `protobuf:"bytes,10,opt,name=watermark_json,json=watermarkJson,proto3" json:"watermark_json,omitempty"`
	// provider_work_item_projection_id is the safe provider-hub PR/MR projection id when known.
	ProviderWorkItemProjectionId *string `protobuf:"bytes,11,opt,name=provider_work_item_projection_id,json=providerWorkItemProjectionId,proto3,oneof" json:"provider_work_item_projection_id,omitempty"`
	// provider_web_url is the safe provider PR/MR URL when known.
	ProviderWebUrl *string `protobuf:"bytes,12,opt,name=provider_web_url,json=providerWebUrl,proto3,oneof" json:"provider_web_url,omitempty"`
	// provider_object_id is the provider-native PR/MR object id when known.
	ProviderObjectId *string `protobuf:"bytes,13,opt,name=provider_object_id,json=providerObjectId,proto3,oneof" json:"provider_object_id,omitempty"`
	// merge_observed_at is the provider merge observation time in RFC3339 format when known.
	MergeObservedAt *string `protobuf:"bytes,14,opt,name=merge_observed_at,json=mergeObservedAt,proto3,oneof" json:"merge_observed_at,omitempty"`
	// merged_at is the provider merge time in RFC3339 format when known.
	MergedAt      *string `protobuf:"bytes,15,opt,name=merged_at,json=mergedAt,proto3,oneof" json:"merged_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BootstrapRepositoryMergeSignal) ProtoMessage() {}

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

func (x *BootstrapRepositoryMergeSignal) GetSignalId() string {
	if x != nil && x.SignalId != nil {
		return *x.SignalId
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetSignalKey() string {
	if x != nil {
		return x.SignalKey
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetSignalKind() string {
	if x != nil {
		return x.SignalKind
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetProviderTarget() *RepositoryBootstrapProviderTarget {
	if x != nil {
		return x.ProviderTarget
	}
	return nil
}

func (x *BootstrapRepositoryMergeSignal) GetBaseBranch() string {
	if x != nil {
		return x.BaseBranch
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetMergeCommitSha() string {
	if x != nil {
		return x.MergeCommitSha
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetSourceBlobSha() string {
	if x != nil && x.SourceBlobSha != nil {
		return *x.SourceBlobSha
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetWatermarkDigest() string {
	if x != nil {
		return x.WatermarkDigest
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetWatermarkJson() string {
	if x != nil {
		return x.WatermarkJson
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetProviderWorkItemProjectionId() string {
	if x != nil && x.ProviderWorkItemProjectionId != nil {
		return *x.ProviderWorkItemProjectionId
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetProviderWebUrl() string {
	if x != nil && x.ProviderWebUrl != nil {
		return *x.ProviderWebUrl
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetProviderObjectId() string {
	if x != nil && x.ProviderObjectId != nil {
		return *x.ProviderObjectId
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetMergeObservedAt() string {
	if x != nil && x.MergeObservedAt != nil {
		return *x.MergeObservedAt
	}
	return ""
}

func (x *BootstrapRepositoryMergeSignal) GetMergedAt() string {
	if x != nil && x.MergedAt != nil {
		return *x.MergedAt
	}
	return ""
}

// CheckedBootstrapServicesPolicyArtifact is the checked services.yaml artifact prepared outside project-catalog.
type CheckedBootstrapServicesPolicyArtifact struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// artifact_ref is a safe immutable ref to the checked artifact.
	ArtifactRef string `protobuf:"bytes,1,opt,name=artifact_ref,json=artifactRef,proto3" json:"artifact_ref,omitempty"`
	// artifact_digest is the digest of the checked normalized services.yaml artifact.
	ArtifactDigest string `protobuf:"bytes,2,opt,name=artifact_digest,json=artifactDigest,proto3" json:"artifact_digest,omitempty"`
	// artifact_version is the immutable artifact version bound to the merge commit in this slice.
	ArtifactVersion string `protobuf:"bytes,3,opt,name=artifact_version,json=artifactVersion,proto3" json:"artifact_version,omitempty"`
	// source_path is the services.yaml path in the merged commit.
	SourcePath string `protobuf:"bytes,4,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// content_hash is the normalized services.yaml source content hash.
	ContentHash string `protobuf:"bytes,5,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
	// validated_payload_json is normalized services.yaml payload already checked by the caller contour.
	ValidatedPayloadJson string `protobuf:"bytes,6,opt,name=validated_payload_json,json=validatedPayloadJson,proto3" json:"validated_payload_json,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

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

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

func (*CheckedBootstrapServicesPolicyArtifact) ProtoMessage() {}

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

func (x *CheckedBootstrapServicesPolicyArtifact) GetArtifactRef() string {
	if x != nil {
		return x.ArtifactRef
	}
	return ""
}

func (x *CheckedBootstrapServicesPolicyArtifact) GetArtifactDigest() string {
	if x != nil {
		return x.ArtifactDigest
	}
	return ""
}

func (x *CheckedBootstrapServicesPolicyArtifact) GetArtifactVersion() string {
	if x != nil {
		return x.ArtifactVersion
	}
	return ""
}

func (x *CheckedBootstrapServicesPolicyArtifact) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *CheckedBootstrapServicesPolicyArtifact) GetContentHash() string {
	if x != nil {
		return x.ContentHash
	}
	return ""
}

func (x *CheckedBootstrapServicesPolicyArtifact) GetValidatedPayloadJson() string {
	if x != nil {
		return x.ValidatedPayloadJson
	}
	return ""
}

// ReconcileBootstrapMergeSignalRequest imports checked services.yaml from a safe provider bootstrap merge signal.
type ReconcileBootstrapMergeSignalRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project that owns the repository binding.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is the project-catalog repository binding id.
	RepositoryId string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// merge_signal is the safe provider-side bootstrap merge signal.
	MergeSignal *BootstrapRepositoryMergeSignal `protobuf:"bytes,3,opt,name=merge_signal,json=mergeSignal,proto3" json:"merge_signal,omitempty"`
	// checked_policy is the checked services.yaml artifact selected by the caller contour.
	CheckedPolicy *CheckedBootstrapServicesPolicyArtifact `protobuf:"bytes,4,opt,name=checked_policy,json=checkedPolicy,proto3" json:"checked_policy,omitempty"`
	// meta carries idempotency, expected repository version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReconcileBootstrapMergeSignalRequest) ProtoMessage() {}

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

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

func (x *ReconcileBootstrapMergeSignalRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *ReconcileBootstrapMergeSignalRequest) GetMergeSignal() *BootstrapRepositoryMergeSignal {
	if x != nil {
		return x.MergeSignal
	}
	return nil
}

func (x *ReconcileBootstrapMergeSignalRequest) GetCheckedPolicy() *CheckedBootstrapServicesPolicyArtifact {
	if x != nil {
		return x.CheckedPolicy
	}
	return nil
}

func (x *ReconcileBootstrapMergeSignalRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// RepositoryAdoptionMergeSignal is the safe provider-side merge signal used to close repository adoption.
type RepositoryAdoptionMergeSignal struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// signal_id is provider-hub repository_merge_signal id when known.
	SignalId *string `protobuf:"bytes,1,opt,name=signal_id,json=signalId,proto3,oneof" json:"signal_id,omitempty"`
	// signal_key is provider-hub idempotency key for this merge signal.
	SignalKey string `protobuf:"bytes,2,opt,name=signal_key,json=signalKey,proto3" json:"signal_key,omitempty"`
	// signal_kind must be adoption for this project-catalog command.
	SignalKind string `protobuf:"bytes,3,opt,name=signal_kind,json=signalKind,proto3" json:"signal_kind,omitempty"`
	// provider_target is the safe provider repository target from provider projection.
	ProviderTarget *RepositoryBootstrapProviderTarget `protobuf:"bytes,4,opt,name=provider_target,json=providerTarget,proto3" json:"provider_target,omitempty"`
	// base_branch is the branch that received the merge.
	BaseBranch string `protobuf:"bytes,5,opt,name=base_branch,json=baseBranch,proto3" json:"base_branch,omitempty"`
	// source_ref is the provider PR/MR source ref from the safe merge signal; checked import uses base_branch.
	SourceRef string `protobuf:"bytes,6,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// merge_commit_sha is the merge commit observed by provider-hub.
	MergeCommitSha string `protobuf:"bytes,7,opt,name=merge_commit_sha,json=mergeCommitSha,proto3" json:"merge_commit_sha,omitempty"`
	// source_blob_sha is the provider file object hash when available.
	SourceBlobSha *string `protobuf:"bytes,8,opt,name=source_blob_sha,json=sourceBlobSha,proto3,oneof" json:"source_blob_sha,omitempty"`
	// watermark_digest is the provider-hub digest of the parsed platform watermark.
	WatermarkDigest string `protobuf:"bytes,9,opt,name=watermark_digest,json=watermarkDigest,proto3" json:"watermark_digest,omitempty"`
	// watermark_json is the parsed platform watermark payload from the merged provider work item.
	WatermarkJson string `protobuf:"bytes,10,opt,name=watermark_json,json=watermarkJson,proto3" json:"watermark_json,omitempty"`
	// provider_work_item_projection_id is the safe provider-hub PR/MR projection id when known.
	ProviderWorkItemProjectionId *string `protobuf:"bytes,11,opt,name=provider_work_item_projection_id,json=providerWorkItemProjectionId,proto3,oneof" json:"provider_work_item_projection_id,omitempty"`
	// provider_web_url is the safe provider PR/MR URL when known.
	ProviderWebUrl *string `protobuf:"bytes,12,opt,name=provider_web_url,json=providerWebUrl,proto3,oneof" json:"provider_web_url,omitempty"`
	// provider_object_id is the provider-native PR/MR object id when known.
	ProviderObjectId *string `protobuf:"bytes,13,opt,name=provider_object_id,json=providerObjectId,proto3,oneof" json:"provider_object_id,omitempty"`
	// merge_observed_at is the provider merge observation time in RFC3339 format when known.
	MergeObservedAt *string `protobuf:"bytes,14,opt,name=merge_observed_at,json=mergeObservedAt,proto3,oneof" json:"merge_observed_at,omitempty"`
	// merged_at is the provider merge time in RFC3339 format when known.
	MergedAt      *string `protobuf:"bytes,15,opt,name=merged_at,json=mergedAt,proto3,oneof" json:"merged_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RepositoryAdoptionMergeSignal) ProtoMessage() {}

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

func (x *RepositoryAdoptionMergeSignal) GetSignalId() string {
	if x != nil && x.SignalId != nil {
		return *x.SignalId
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetSignalKey() string {
	if x != nil {
		return x.SignalKey
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetSignalKind() string {
	if x != nil {
		return x.SignalKind
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetProviderTarget() *RepositoryBootstrapProviderTarget {
	if x != nil {
		return x.ProviderTarget
	}
	return nil
}

func (x *RepositoryAdoptionMergeSignal) GetBaseBranch() string {
	if x != nil {
		return x.BaseBranch
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetMergeCommitSha() string {
	if x != nil {
		return x.MergeCommitSha
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetSourceBlobSha() string {
	if x != nil && x.SourceBlobSha != nil {
		return *x.SourceBlobSha
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetWatermarkDigest() string {
	if x != nil {
		return x.WatermarkDigest
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetWatermarkJson() string {
	if x != nil {
		return x.WatermarkJson
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetProviderWorkItemProjectionId() string {
	if x != nil && x.ProviderWorkItemProjectionId != nil {
		return *x.ProviderWorkItemProjectionId
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetProviderWebUrl() string {
	if x != nil && x.ProviderWebUrl != nil {
		return *x.ProviderWebUrl
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetProviderObjectId() string {
	if x != nil && x.ProviderObjectId != nil {
		return *x.ProviderObjectId
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetMergeObservedAt() string {
	if x != nil && x.MergeObservedAt != nil {
		return *x.MergeObservedAt
	}
	return ""
}

func (x *RepositoryAdoptionMergeSignal) GetMergedAt() string {
	if x != nil && x.MergedAt != nil {
		return *x.MergedAt
	}
	return ""
}

// CheckedAdoptionServicesPolicyArtifact is the checked services.yaml artifact selected outside provider-hub.
type CheckedAdoptionServicesPolicyArtifact struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// artifact_ref is a safe immutable ref to the checked artifact.
	ArtifactRef string `protobuf:"bytes,1,opt,name=artifact_ref,json=artifactRef,proto3" json:"artifact_ref,omitempty"`
	// artifact_digest is the digest of the checked normalized services.yaml artifact.
	ArtifactDigest string `protobuf:"bytes,2,opt,name=artifact_digest,json=artifactDigest,proto3" json:"artifact_digest,omitempty"`
	// artifact_version is the immutable artifact version bound to the merge commit in this slice.
	ArtifactVersion string `protobuf:"bytes,3,opt,name=artifact_version,json=artifactVersion,proto3" json:"artifact_version,omitempty"`
	// source_path is the services.yaml path in the merged commit.
	SourcePath string `protobuf:"bytes,4,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// content_hash is the normalized services.yaml source content hash.
	ContentHash string `protobuf:"bytes,5,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
	// validated_payload_json is normalized services.yaml payload already checked by the caller contour.
	ValidatedPayloadJson string `protobuf:"bytes,6,opt,name=validated_payload_json,json=validatedPayloadJson,proto3" json:"validated_payload_json,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

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

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

func (*CheckedAdoptionServicesPolicyArtifact) ProtoMessage() {}

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

func (x *CheckedAdoptionServicesPolicyArtifact) GetArtifactRef() string {
	if x != nil {
		return x.ArtifactRef
	}
	return ""
}

func (x *CheckedAdoptionServicesPolicyArtifact) GetArtifactDigest() string {
	if x != nil {
		return x.ArtifactDigest
	}
	return ""
}

func (x *CheckedAdoptionServicesPolicyArtifact) GetArtifactVersion() string {
	if x != nil {
		return x.ArtifactVersion
	}
	return ""
}

func (x *CheckedAdoptionServicesPolicyArtifact) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *CheckedAdoptionServicesPolicyArtifact) GetContentHash() string {
	if x != nil {
		return x.ContentHash
	}
	return ""
}

func (x *CheckedAdoptionServicesPolicyArtifact) GetValidatedPayloadJson() string {
	if x != nil {
		return x.ValidatedPayloadJson
	}
	return ""
}

// ReconcileAdoptionMergeSignalRequest imports checked services.yaml from a safe provider adoption merge signal.
type ReconcileAdoptionMergeSignalRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the project that owns the repository binding.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is the project-catalog repository binding id.
	RepositoryId string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// merge_signal is the safe provider-side adoption merge signal.
	MergeSignal *RepositoryAdoptionMergeSignal `protobuf:"bytes,3,opt,name=merge_signal,json=mergeSignal,proto3" json:"merge_signal,omitempty"`
	// checked_policy is the checked services.yaml artifact selected by the caller contour.
	CheckedPolicy *CheckedAdoptionServicesPolicyArtifact `protobuf:"bytes,4,opt,name=checked_policy,json=checkedPolicy,proto3" json:"checked_policy,omitempty"`
	// meta carries idempotency, expected repository version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReconcileAdoptionMergeSignalRequest) ProtoMessage() {}

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

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

func (x *ReconcileAdoptionMergeSignalRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *ReconcileAdoptionMergeSignalRequest) GetMergeSignal() *RepositoryAdoptionMergeSignal {
	if x != nil {
		return x.MergeSignal
	}
	return nil
}

func (x *ReconcileAdoptionMergeSignalRequest) GetCheckedPolicy() *CheckedAdoptionServicesPolicyArtifact {
	if x != nil {
		return x.CheckedPolicy
	}
	return nil
}

func (x *ReconcileAdoptionMergeSignalRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// BootstrapServicesPolicyImportResponse returns imported policy and activated repository binding state.
type BootstrapServicesPolicyImportResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// repository is the active repository binding after bootstrap import.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// services_policy is the checked services.yaml projection.
	ServicesPolicy *ServicesPolicy `protobuf:"bytes,2,opt,name=services_policy,json=servicesPolicy,proto3" json:"services_policy,omitempty"`
	// source_ref is the accepted provider source ref.
	SourceRef string `protobuf:"bytes,3,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// source_commit_sha is the accepted merge commit.
	SourceCommitSha string `protobuf:"bytes,4,opt,name=source_commit_sha,json=sourceCommitSha,proto3" json:"source_commit_sha,omitempty"`
	// summary is a short safe import summary for logs, events and UI.
	Summary       string `protobuf:"bytes,5,opt,name=summary,proto3" json:"summary,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BootstrapServicesPolicyImportResponse) ProtoMessage() {}

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

func (x *BootstrapServicesPolicyImportResponse) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *BootstrapServicesPolicyImportResponse) GetServicesPolicy() *ServicesPolicy {
	if x != nil {
		return x.ServicesPolicy
	}
	return nil
}

func (x *BootstrapServicesPolicyImportResponse) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *BootstrapServicesPolicyImportResponse) GetSourceCommitSha() string {
	if x != nil {
		return x.SourceCommitSha
	}
	return ""
}

func (x *BootstrapServicesPolicyImportResponse) GetSummary() string {
	if x != nil {
		return x.Summary
	}
	return ""
}

// ServicesPolicyResponse returns services policy state.
type ServicesPolicyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// services_policy is the returned checked policy.
	ServicesPolicy *ServicesPolicy `protobuf:"bytes,1,opt,name=services_policy,json=servicesPolicy,proto3" json:"services_policy,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ServicesPolicyResponse) ProtoMessage() {}

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

func (x *ServicesPolicyResponse) GetServicesPolicy() *ServicesPolicy {
	if x != nil {
		return x.ServicesPolicy
	}
	return nil
}

// GetSelfDeploySignalRequest читает project-side enrichment для provider repository change signal.
type GetSelfDeploySignalRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id задаёт область project-side binding и checked services.yaml projection.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id опционально сужает ожидаемый repository binding.
	RepositoryId *string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// provider_signal_id опционально выбирает provider-hub repository change signal id.
	ProviderSignalId *string `protobuf:"bytes,3,opt,name=provider_signal_id,json=providerSignalId,proto3,oneof" json:"provider_signal_id,omitempty"`
	// provider_signal_key опционально выбирает provider-hub repository change signal idempotency key.
	ProviderSignalKey *string `protobuf:"bytes,4,opt,name=provider_signal_key,json=providerSignalKey,proto3,oneof" json:"provider_signal_key,omitempty"`
	// meta содержит read actor и request context.
	Meta          *QueryMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetSelfDeploySignalRequest) ProtoMessage() {}

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

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

func (x *GetSelfDeploySignalRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *GetSelfDeploySignalRequest) GetProviderSignalId() string {
	if x != nil && x.ProviderSignalId != nil {
		return *x.ProviderSignalId
	}
	return ""
}

func (x *GetSelfDeploySignalRequest) GetProviderSignalKey() string {
	if x != nil && x.ProviderSignalKey != nil {
		return *x.ProviderSignalKey
	}
	return ""
}

func (x *GetSelfDeploySignalRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// SelfDeploySignalResponse возвращает safe project-side readiness и plan input.
type SelfDeploySignalResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// status описывает готовность сигнала для agent-manager planning.
	Status SelfDeploySignalStatus `protobuf:"varint,1,opt,name=status,proto3,enum=kodex.projects.v1.SelfDeploySignalStatus" json:"status,omitempty"`
	// signal присутствует, когда project/provider facts безопасно связаны.
	Signal *SelfDeploySignal `protobuf:"bytes,2,opt,name=signal,proto3" json:"signal,omitempty"`
	// safe_reason объясняет blocked status без raw payloads и секретов.
	SafeReason    *string `protobuf:"bytes,3,opt,name=safe_reason,json=safeReason,proto3,oneof" json:"safe_reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeploySignalResponse) ProtoMessage() {}

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

func (x *SelfDeploySignalResponse) GetStatus() SelfDeploySignalStatus {
	if x != nil {
		return x.Status
	}
	return SelfDeploySignalStatus_SELF_DEPLOY_SIGNAL_STATUS_UNSPECIFIED
}

func (x *SelfDeploySignalResponse) GetSignal() *SelfDeploySignal {
	if x != nil {
		return x.Signal
	}
	return nil
}

func (x *SelfDeploySignalResponse) GetSafeReason() string {
	if x != nil && x.SafeReason != nil {
		return *x.SafeReason
	}
	return ""
}

// GetSelfDeployBuildPlanRequest читает проверенный build plan из project-owned ServicesPolicy.
type GetSelfDeployBuildPlanRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id задаёт область checked ServicesPolicy.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id задаёт repository binding для affected services.
	RepositoryId string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// source_ref — branch/ref из ready self-deploy signal.
	SourceRef string `protobuf:"bytes,3,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// merge_commit_sha — commit sha из ready self-deploy signal.
	MergeCommitSha string `protobuf:"bytes,4,opt,name=merge_commit_sha,json=mergeCommitSha,proto3" json:"merge_commit_sha,omitempty"`
	// provider_signal_ref — stable signal ref из SelfDeployPlan, если известен.
	ProviderSignalRef *string `protobuf:"bytes,5,opt,name=provider_signal_ref,json=providerSignalRef,proto3,oneof" json:"provider_signal_ref,omitempty"`
	// provider_signal_id — persisted provider signal id, если известен.
	ProviderSignalId *string `protobuf:"bytes,6,opt,name=provider_signal_id,json=providerSignalId,proto3,oneof" json:"provider_signal_id,omitempty"`
	// provider_signal_key — provider signal idempotency key, если известен.
	ProviderSignalKey *string `protobuf:"bytes,7,opt,name=provider_signal_key,json=providerSignalKey,proto3,oneof" json:"provider_signal_key,omitempty"`
	// affected_service_keys — service keys из ready self-deploy signal.
	AffectedServiceKeys []string `protobuf:"bytes,8,rep,name=affected_service_keys,json=affectedServiceKeys,proto3" json:"affected_service_keys,omitempty"`
	// expected_services_policy_digest — digest checked ServicesPolicy, ожидаемый caller.
	ExpectedServicesPolicyDigest string `protobuf:"bytes,9,opt,name=expected_services_policy_digest,json=expectedServicesPolicyDigest,proto3" json:"expected_services_policy_digest,omitempty"`
	// expected_services_policy_fingerprint — fingerprint checked ServicesPolicy, ожидаемый caller.
	ExpectedServicesPolicyFingerprint *string `protobuf:"bytes,10,opt,name=expected_services_policy_fingerprint,json=expectedServicesPolicyFingerprint,proto3,oneof" json:"expected_services_policy_fingerprint,omitempty"`
	// expected_services_policy_version — policy version, ожидаемая caller.
	ExpectedServicesPolicyVersion *int64 `protobuf:"varint,11,opt,name=expected_services_policy_version,json=expectedServicesPolicyVersion,proto3,oneof" json:"expected_services_policy_version,omitempty"`
	// meta содержит read actor и request context.
	Meta *QueryMeta `protobuf:"bytes,12,opt,name=meta,proto3" json:"meta,omitempty"`
	// materialized_build_contexts передаёт context refs/digests от runtime-manager для affected services.
	MaterializedBuildContexts []*SelfDeployMaterializedBuildContext `protobuf:"bytes,13,rep,name=materialized_build_contexts,json=materializedBuildContexts,proto3" json:"materialized_build_contexts,omitempty"`
	// expected_build_plan_fingerprint позволяет вызывающей стороне сверить повтор с ранее выданным recipe/plan.
	ExpectedBuildPlanFingerprint *string `protobuf:"bytes,14,opt,name=expected_build_plan_fingerprint,json=expectedBuildPlanFingerprint,proto3,oneof" json:"expected_build_plan_fingerprint,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

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

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

func (*GetSelfDeployBuildPlanRequest) ProtoMessage() {}

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

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

func (x *GetSelfDeployBuildPlanRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetMergeCommitSha() string {
	if x != nil {
		return x.MergeCommitSha
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetProviderSignalRef() string {
	if x != nil && x.ProviderSignalRef != nil {
		return *x.ProviderSignalRef
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetProviderSignalId() string {
	if x != nil && x.ProviderSignalId != nil {
		return *x.ProviderSignalId
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetProviderSignalKey() string {
	if x != nil && x.ProviderSignalKey != nil {
		return *x.ProviderSignalKey
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetAffectedServiceKeys() []string {
	if x != nil {
		return x.AffectedServiceKeys
	}
	return nil
}

func (x *GetSelfDeployBuildPlanRequest) GetExpectedServicesPolicyDigest() string {
	if x != nil {
		return x.ExpectedServicesPolicyDigest
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetExpectedServicesPolicyFingerprint() string {
	if x != nil && x.ExpectedServicesPolicyFingerprint != nil {
		return *x.ExpectedServicesPolicyFingerprint
	}
	return ""
}

func (x *GetSelfDeployBuildPlanRequest) GetExpectedServicesPolicyVersion() int64 {
	if x != nil && x.ExpectedServicesPolicyVersion != nil {
		return *x.ExpectedServicesPolicyVersion
	}
	return 0
}

func (x *GetSelfDeployBuildPlanRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *GetSelfDeployBuildPlanRequest) GetMaterializedBuildContexts() []*SelfDeployMaterializedBuildContext {
	if x != nil {
		return x.MaterializedBuildContexts
	}
	return nil
}

func (x *GetSelfDeployBuildPlanRequest) GetExpectedBuildPlanFingerprint() string {
	if x != nil && x.ExpectedBuildPlanFingerprint != nil {
		return *x.ExpectedBuildPlanFingerprint
	}
	return ""
}

// SelfDeployBuildPlanResponse возвращает проверенный build plan или безопасную non-ready reason.
type SelfDeployBuildPlanResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// status описывает готовность build plan.
	Status SelfDeployBuildPlanStatus `protobuf:"varint,1,opt,name=status,proto3,enum=kodex.projects.v1.SelfDeployBuildPlanStatus" json:"status,omitempty"`
	// plan присутствует при ready.
	Plan *SelfDeployBuildPlan `protobuf:"bytes,2,opt,name=plan,proto3" json:"plan,omitempty"`
	// safe_reason объясняет non-ready status без raw payloads и секретов.
	SafeReason    *string `protobuf:"bytes,3,opt,name=safe_reason,json=safeReason,proto3,oneof" json:"safe_reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeployBuildPlanResponse) ProtoMessage() {}

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

func (x *SelfDeployBuildPlanResponse) GetStatus() SelfDeployBuildPlanStatus {
	if x != nil {
		return x.Status
	}
	return SelfDeployBuildPlanStatus_SELF_DEPLOY_BUILD_PLAN_STATUS_UNSPECIFIED
}

func (x *SelfDeployBuildPlanResponse) GetPlan() *SelfDeployBuildPlan {
	if x != nil {
		return x.Plan
	}
	return nil
}

func (x *SelfDeployBuildPlanResponse) GetSafeReason() string {
	if x != nil && x.SafeReason != nil {
		return *x.SafeReason
	}
	return ""
}

// GetSelfDeployDeployPlanRequest читает проверенный deploy plan из project-owned ServicesPolicy.
type GetSelfDeployDeployPlanRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id задаёт область checked ServicesPolicy.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id задаёт repository binding для affected services.
	RepositoryId string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// source_ref — branch/ref из approved self-deploy plan.
	SourceRef string `protobuf:"bytes,3,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
	// merge_commit_sha — commit sha из approved self-deploy plan.
	MergeCommitSha string `protobuf:"bytes,4,opt,name=merge_commit_sha,json=mergeCommitSha,proto3" json:"merge_commit_sha,omitempty"`
	// provider_signal_ref — stable signal ref из SelfDeployPlan, если известен.
	ProviderSignalRef *string `protobuf:"bytes,5,opt,name=provider_signal_ref,json=providerSignalRef,proto3,oneof" json:"provider_signal_ref,omitempty"`
	// affected_service_keys — service keys из approved self-deploy plan.
	AffectedServiceKeys []string `protobuf:"bytes,6,rep,name=affected_service_keys,json=affectedServiceKeys,proto3" json:"affected_service_keys,omitempty"`
	// expected_services_policy_digest — digest checked ServicesPolicy, ожидаемый caller.
	ExpectedServicesPolicyDigest string `protobuf:"bytes,7,opt,name=expected_services_policy_digest,json=expectedServicesPolicyDigest,proto3" json:"expected_services_policy_digest,omitempty"`
	// expected_services_policy_fingerprint — fingerprint checked ServicesPolicy, ожидаемый caller.
	ExpectedServicesPolicyFingerprint *string `protobuf:"bytes,8,opt,name=expected_services_policy_fingerprint,json=expectedServicesPolicyFingerprint,proto3,oneof" json:"expected_services_policy_fingerprint,omitempty"`
	// expected_services_policy_version — policy version, ожидаемая caller.
	ExpectedServicesPolicyVersion *int64 `protobuf:"varint,9,opt,name=expected_services_policy_version,json=expectedServicesPolicyVersion,proto3,oneof" json:"expected_services_policy_version,omitempty"`
	// build_outputs передают только safe refs успешных build jobs.
	BuildOutputs []*SelfDeployBuildOutput `protobuf:"bytes,10,rep,name=build_outputs,json=buildOutputs,proto3" json:"build_outputs,omitempty"`
	// expected_build_plan_fingerprint связывает deploy с ранее проверенным build plan.
	ExpectedBuildPlanFingerprint *string `protobuf:"bytes,11,opt,name=expected_build_plan_fingerprint,json=expectedBuildPlanFingerprint,proto3,oneof" json:"expected_build_plan_fingerprint,omitempty"`
	// expected_deploy_plan_fingerprint позволяет вызывающей стороне сверить replay.
	ExpectedDeployPlanFingerprint *string `protobuf:"bytes,12,opt,name=expected_deploy_plan_fingerprint,json=expectedDeployPlanFingerprint,proto3,oneof" json:"expected_deploy_plan_fingerprint,omitempty"`
	// materialized_build_contexts передаёт context refs для manifest bundle refs без provider fetch.
	MaterializedBuildContexts []*SelfDeployMaterializedBuildContext `protobuf:"bytes,13,rep,name=materialized_build_contexts,json=materializedBuildContexts,proto3" json:"materialized_build_contexts,omitempty"`
	// meta содержит read actor и request context.
	Meta          *QueryMeta `protobuf:"bytes,14,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetSelfDeployDeployPlanRequest) ProtoMessage() {}

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

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

func (x *GetSelfDeployDeployPlanRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetSourceRef() string {
	if x != nil {
		return x.SourceRef
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetMergeCommitSha() string {
	if x != nil {
		return x.MergeCommitSha
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetProviderSignalRef() string {
	if x != nil && x.ProviderSignalRef != nil {
		return *x.ProviderSignalRef
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetAffectedServiceKeys() []string {
	if x != nil {
		return x.AffectedServiceKeys
	}
	return nil
}

func (x *GetSelfDeployDeployPlanRequest) GetExpectedServicesPolicyDigest() string {
	if x != nil {
		return x.ExpectedServicesPolicyDigest
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetExpectedServicesPolicyFingerprint() string {
	if x != nil && x.ExpectedServicesPolicyFingerprint != nil {
		return *x.ExpectedServicesPolicyFingerprint
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetExpectedServicesPolicyVersion() int64 {
	if x != nil && x.ExpectedServicesPolicyVersion != nil {
		return *x.ExpectedServicesPolicyVersion
	}
	return 0
}

func (x *GetSelfDeployDeployPlanRequest) GetBuildOutputs() []*SelfDeployBuildOutput {
	if x != nil {
		return x.BuildOutputs
	}
	return nil
}

func (x *GetSelfDeployDeployPlanRequest) GetExpectedBuildPlanFingerprint() string {
	if x != nil && x.ExpectedBuildPlanFingerprint != nil {
		return *x.ExpectedBuildPlanFingerprint
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetExpectedDeployPlanFingerprint() string {
	if x != nil && x.ExpectedDeployPlanFingerprint != nil {
		return *x.ExpectedDeployPlanFingerprint
	}
	return ""
}

func (x *GetSelfDeployDeployPlanRequest) GetMaterializedBuildContexts() []*SelfDeployMaterializedBuildContext {
	if x != nil {
		return x.MaterializedBuildContexts
	}
	return nil
}

func (x *GetSelfDeployDeployPlanRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// SelfDeployDeployPlanResponse возвращает проверенный deploy plan или безопасную non-ready reason.
type SelfDeployDeployPlanResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// status описывает готовность deploy plan.
	Status SelfDeployDeployPlanStatus `protobuf:"varint,1,opt,name=status,proto3,enum=kodex.projects.v1.SelfDeployDeployPlanStatus" json:"status,omitempty"`
	// plan присутствует при ready.
	Plan *SelfDeployDeployPlan `protobuf:"bytes,2,opt,name=plan,proto3" json:"plan,omitempty"`
	// safe_reason объясняет non-ready status без raw payloads и секретов.
	SafeReason    *string `protobuf:"bytes,3,opt,name=safe_reason,json=safeReason,proto3,oneof" json:"safe_reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SelfDeployDeployPlanResponse) ProtoMessage() {}

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

func (x *SelfDeployDeployPlanResponse) GetStatus() SelfDeployDeployPlanStatus {
	if x != nil {
		return x.Status
	}
	return SelfDeployDeployPlanStatus_SELF_DEPLOY_DEPLOY_PLAN_STATUS_UNSPECIFIED
}

func (x *SelfDeployDeployPlanResponse) GetPlan() *SelfDeployDeployPlan {
	if x != nil {
		return x.Plan
	}
	return nil
}

func (x *SelfDeployDeployPlanResponse) GetSafeReason() string {
	if x != nil && x.SafeReason != nil {
		return *x.SafeReason
	}
	return ""
}

// GetServicesPolicyRequest reads active or concrete services policy.
type GetServicesPolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// services_policy_id optionally selects a concrete policy version.
	ServicesPolicyId *string `protobuf:"bytes,2,opt,name=services_policy_id,json=servicesPolicyId,proto3,oneof" json:"services_policy_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,3,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetServicesPolicyRequest) ProtoMessage() {}

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

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

func (x *GetServicesPolicyRequest) GetServicesPolicyId() string {
	if x != nil && x.ServicesPolicyId != nil {
		return *x.ServicesPolicyId
	}
	return ""
}

func (x *GetServicesPolicyRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListServiceDescriptorsRequest lists typed descriptors from active policy.
type ListServiceDescriptorsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id optionally filters descriptors by repository.
	RepositoryId *string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// service_keys optionally selects concrete services.
	ServiceKeys []string `protobuf:"bytes,3,rep,name=service_keys,json=serviceKeys,proto3" json:"service_keys,omitempty"`
	// statuses optionally filter descriptor lifecycle.
	Statuses []ServiceStatus `protobuf:"varint,4,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.ServiceStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,5,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,6,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListServiceDescriptorsRequest) ProtoMessage() {}

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

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

func (x *ListServiceDescriptorsRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *ListServiceDescriptorsRequest) GetServiceKeys() []string {
	if x != nil {
		return x.ServiceKeys
	}
	return nil
}

func (x *ListServiceDescriptorsRequest) GetStatuses() []ServiceStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListServiceDescriptorsRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListServiceDescriptorsRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListServiceDescriptorsResponse returns service descriptors.
type ListServiceDescriptorsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// service_descriptors are returned in stable server-defined order.
	ServiceDescriptors []*ServiceDescriptor `protobuf:"bytes,1,rep,name=service_descriptors,json=serviceDescriptors,proto3" json:"service_descriptors,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListServiceDescriptorsResponse) ProtoMessage() {}

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

func (x *ListServiceDescriptorsResponse) GetServiceDescriptors() []*ServiceDescriptor {
	if x != nil {
		return x.ServiceDescriptors
	}
	return nil
}

func (x *ListServiceDescriptorsResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// CreatePolicyEditProposalRequest requests a PR-backed services.yaml change.
type CreatePolicyEditProposalRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is the repository where services.yaml should be edited.
	RepositoryId string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// source_path is the policy file path.
	SourcePath string `protobuf:"bytes,3,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"`
	// requested_changes_json is typed proposal payload serialized by caller.
	RequestedChangesJson string `protobuf:"bytes,4,opt,name=requested_changes_json,json=requestedChangesJson,proto3" json:"requested_changes_json,omitempty"`
	// meta carries idempotency and audit context.
	Meta          *CommandMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreatePolicyEditProposalRequest) ProtoMessage() {}

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

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

func (x *CreatePolicyEditProposalRequest) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *CreatePolicyEditProposalRequest) GetSourcePath() string {
	if x != nil {
		return x.SourcePath
	}
	return ""
}

func (x *CreatePolicyEditProposalRequest) GetRequestedChangesJson() string {
	if x != nil {
		return x.RequestedChangesJson
	}
	return ""
}

func (x *CreatePolicyEditProposalRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// PolicyEditProposalResponse returns a policy edit proposal.
type PolicyEditProposalResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// proposal_id is the project-catalog proposal id.
	ProposalId string `protobuf:"bytes,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is the target repository id.
	RepositoryId string `protobuf:"bytes,3,opt,name=repository_id,json=repositoryId,proto3" json:"repository_id,omitempty"`
	// status is a machine-readable proposal status.
	Status        string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PolicyEditProposalResponse) ProtoMessage() {}

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

func (x *PolicyEditProposalResponse) GetProposalId() string {
	if x != nil {
		return x.ProposalId
	}
	return ""
}

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

func (x *PolicyEditProposalResponse) GetRepositoryId() string {
	if x != nil {
		return x.RepositoryId
	}
	return ""
}

func (x *PolicyEditProposalResponse) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

// CreatePolicyOverrideRequest creates an emergency policy override.
type CreatePolicyOverrideRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// target_type classifies overridden policy area.
	TargetType PolicyOverrideTargetType `protobuf:"varint,2,opt,name=target_type,json=targetType,proto3,enum=kodex.projects.v1.PolicyOverrideTargetType" json:"target_type,omitempty"`
	// target_id is optional concrete aggregate id.
	TargetId *string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3,oneof" json:"target_id,omitempty"`
	// payload_json is the minimum override payload.
	PayloadJson string `protobuf:"bytes,4,opt,name=payload_json,json=payloadJson,proto3" json:"payload_json,omitempty"`
	// expires_at is the expiration timestamp in RFC3339 format.
	ExpiresAt string `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	// meta carries idempotency and audit context; reason is required.
	Meta          *CommandMeta `protobuf:"bytes,6,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreatePolicyOverrideRequest) ProtoMessage() {}

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

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

func (x *CreatePolicyOverrideRequest) GetTargetType() PolicyOverrideTargetType {
	if x != nil {
		return x.TargetType
	}
	return PolicyOverrideTargetType_POLICY_OVERRIDE_TARGET_TYPE_UNSPECIFIED
}

func (x *CreatePolicyOverrideRequest) GetTargetId() string {
	if x != nil && x.TargetId != nil {
		return *x.TargetId
	}
	return ""
}

func (x *CreatePolicyOverrideRequest) GetPayloadJson() string {
	if x != nil {
		return x.PayloadJson
	}
	return ""
}

func (x *CreatePolicyOverrideRequest) GetExpiresAt() string {
	if x != nil {
		return x.ExpiresAt
	}
	return ""
}

func (x *CreatePolicyOverrideRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// CancelPolicyOverrideRequest cancels an active emergency policy override.
type CancelPolicyOverrideRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// policy_override_id is the override aggregate id.
	PolicyOverrideId string `protobuf:"bytes,1,opt,name=policy_override_id,json=policyOverrideId,proto3" json:"policy_override_id,omitempty"`
	// meta carries idempotency, expected version and audit context; reason is required.
	Meta          *CommandMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CancelPolicyOverrideRequest) Reset() {
	*x = CancelPolicyOverrideRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CancelPolicyOverrideRequest) ProtoMessage() {}

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

func (x *CancelPolicyOverrideRequest) GetPolicyOverrideId() string {
	if x != nil {
		return x.PolicyOverrideId
	}
	return ""
}

func (x *CancelPolicyOverrideRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// PolicyOverrideResponse returns override state.
type PolicyOverrideResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// policy_override is the returned override.
	PolicyOverride *PolicyOverride `protobuf:"bytes,1,opt,name=policy_override,json=policyOverride,proto3" json:"policy_override,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *PolicyOverrideResponse) Reset() {
	*x = PolicyOverrideResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PolicyOverrideResponse) ProtoMessage() {}

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

func (x *PolicyOverrideResponse) GetPolicyOverride() *PolicyOverride {
	if x != nil {
		return x.PolicyOverride
	}
	return nil
}

// ListPolicyOverridesRequest lists operator policy overrides.
type ListPolicyOverridesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// target_types optionally filter overridden policy areas.
	TargetTypes []PolicyOverrideTargetType `protobuf:"varint,2,rep,packed,name=target_types,json=targetTypes,proto3,enum=kodex.projects.v1.PolicyOverrideTargetType" json:"target_types,omitempty"`
	// target_id optionally filters a concrete overridden aggregate.
	TargetId *string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3,oneof" json:"target_id,omitempty"`
	// statuses optionally filter override lifecycle when active_only is false.
	Statuses []PolicyOverrideStatus `protobuf:"varint,4,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.PolicyOverrideStatus" json:"statuses,omitempty"`
	// active_only returns only active and unexpired overrides.
	ActiveOnly bool `protobuf:"varint,5,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,6,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,7,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListPolicyOverridesRequest) Reset() {
	*x = ListPolicyOverridesRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListPolicyOverridesRequest) ProtoMessage() {}

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

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

func (x *ListPolicyOverridesRequest) GetTargetTypes() []PolicyOverrideTargetType {
	if x != nil {
		return x.TargetTypes
	}
	return nil
}

func (x *ListPolicyOverridesRequest) GetTargetId() string {
	if x != nil && x.TargetId != nil {
		return *x.TargetId
	}
	return ""
}

func (x *ListPolicyOverridesRequest) GetStatuses() []PolicyOverrideStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListPolicyOverridesRequest) GetActiveOnly() bool {
	if x != nil {
		return x.ActiveOnly
	}
	return false
}

func (x *ListPolicyOverridesRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListPolicyOverridesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListPolicyOverridesResponse returns operator policy overrides.
type ListPolicyOverridesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// policy_overrides are returned in stable server-defined order.
	PolicyOverrides []*PolicyOverride `protobuf:"bytes,1,rep,name=policy_overrides,json=policyOverrides,proto3" json:"policy_overrides,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListPolicyOverridesResponse) ProtoMessage() {}

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

func (x *ListPolicyOverridesResponse) GetPolicyOverrides() []*PolicyOverride {
	if x != nil {
		return x.PolicyOverrides
	}
	return nil
}

func (x *ListPolicyOverridesResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// PutDocumentationSourceRequest creates or updates a documentation source.
type PutDocumentationSourceRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// documentation_source_id is optional source aggregate id.
	DocumentationSourceId *string `protobuf:"bytes,1,opt,name=documentation_source_id,json=documentationSourceId,proto3,oneof" json:"documentation_source_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id is optional repository binding id.
	RepositoryId *string `protobuf:"bytes,3,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// scope_type classifies where the source applies.
	ScopeType DocumentationScopeType `protobuf:"varint,4,opt,name=scope_type,json=scopeType,proto3,enum=kodex.projects.v1.DocumentationScopeType" json:"scope_type,omitempty"`
	// scope_id is optional service, dependency or guidance scope id.
	ScopeId *string `protobuf:"bytes,5,opt,name=scope_id,json=scopeId,proto3,oneof" json:"scope_id,omitempty"`
	// local_path is target path in workspace.
	LocalPath string `protobuf:"bytes,6,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"`
	// access_mode controls whether the source is editable.
	AccessMode DocumentationAccessMode `protobuf:"varint,7,opt,name=access_mode,json=accessMode,proto3,enum=kodex.projects.v1.DocumentationAccessMode" json:"access_mode,omitempty"`
	// status is source status.
	Status DocumentationSourceStatus `protobuf:"varint,8,opt,name=status,proto3,enum=kodex.projects.v1.DocumentationSourceStatus" json:"status,omitempty"`
	// meta carries idempotency, optional expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,9,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PutDocumentationSourceRequest) Reset() {
	*x = PutDocumentationSourceRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PutDocumentationSourceRequest) ProtoMessage() {}

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

func (x *PutDocumentationSourceRequest) GetDocumentationSourceId() string {
	if x != nil && x.DocumentationSourceId != nil {
		return *x.DocumentationSourceId
	}
	return ""
}

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

func (x *PutDocumentationSourceRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *PutDocumentationSourceRequest) GetScopeType() DocumentationScopeType {
	if x != nil {
		return x.ScopeType
	}
	return DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED
}

func (x *PutDocumentationSourceRequest) GetScopeId() string {
	if x != nil && x.ScopeId != nil {
		return *x.ScopeId
	}
	return ""
}

func (x *PutDocumentationSourceRequest) GetLocalPath() string {
	if x != nil {
		return x.LocalPath
	}
	return ""
}

func (x *PutDocumentationSourceRequest) GetAccessMode() DocumentationAccessMode {
	if x != nil {
		return x.AccessMode
	}
	return DocumentationAccessMode_DOCUMENTATION_ACCESS_MODE_UNSPECIFIED
}

func (x *PutDocumentationSourceRequest) GetStatus() DocumentationSourceStatus {
	if x != nil {
		return x.Status
	}
	return DocumentationSourceStatus_DOCUMENTATION_SOURCE_STATUS_UNSPECIFIED
}

func (x *PutDocumentationSourceRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// DocumentationSourceResponse returns documentation source state.
type DocumentationSourceResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// documentation_source is the returned source.
	DocumentationSource *DocumentationSource `protobuf:"bytes,1,opt,name=documentation_source,json=documentationSource,proto3" json:"documentation_source,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*DocumentationSourceResponse) ProtoMessage() {}

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

func (x *DocumentationSourceResponse) GetDocumentationSource() *DocumentationSource {
	if x != nil {
		return x.DocumentationSource
	}
	return nil
}

// GetDocumentationSourceRequest reads a documentation source.
type GetDocumentationSourceRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// documentation_source_id is the source aggregate id.
	DocumentationSourceId string `protobuf:"bytes,1,opt,name=documentation_source_id,json=documentationSourceId,proto3" json:"documentation_source_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetDocumentationSourceRequest) ProtoMessage() {}

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

func (x *GetDocumentationSourceRequest) GetDocumentationSourceId() string {
	if x != nil {
		return x.DocumentationSourceId
	}
	return ""
}

func (x *GetDocumentationSourceRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListDocumentationSourcesRequest lists documentation sources.
type ListDocumentationSourcesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id optionally filters sources by repository.
	RepositoryId *string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// scope_type optionally filters source scope.
	ScopeType *DocumentationScopeType `protobuf:"varint,3,opt,name=scope_type,json=scopeType,proto3,enum=kodex.projects.v1.DocumentationScopeType,oneof" json:"scope_type,omitempty"`
	// scope_id optionally filters source scope id.
	ScopeId *string `protobuf:"bytes,4,opt,name=scope_id,json=scopeId,proto3,oneof" json:"scope_id,omitempty"`
	// statuses optionally filter source lifecycle.
	Statuses []DocumentationSourceStatus `protobuf:"varint,5,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.DocumentationSourceStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,6,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,7,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListDocumentationSourcesRequest) ProtoMessage() {}

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

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

func (x *ListDocumentationSourcesRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *ListDocumentationSourcesRequest) GetScopeType() DocumentationScopeType {
	if x != nil && x.ScopeType != nil {
		return *x.ScopeType
	}
	return DocumentationScopeType_DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED
}

func (x *ListDocumentationSourcesRequest) GetScopeId() string {
	if x != nil && x.ScopeId != nil {
		return *x.ScopeId
	}
	return ""
}

func (x *ListDocumentationSourcesRequest) GetStatuses() []DocumentationSourceStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListDocumentationSourcesRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListDocumentationSourcesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListDocumentationSourcesResponse returns documentation sources.
type ListDocumentationSourcesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// documentation_sources are returned in stable server-defined order.
	DocumentationSources []*DocumentationSource `protobuf:"bytes,1,rep,name=documentation_sources,json=documentationSources,proto3" json:"documentation_sources,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListDocumentationSourcesResponse) ProtoMessage() {}

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

func (x *ListDocumentationSourcesResponse) GetDocumentationSources() []*DocumentationSource {
	if x != nil {
		return x.DocumentationSources
	}
	return nil
}

func (x *ListDocumentationSourcesResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// GetWorkspacePolicyRequest reads agent workspace policy.
type GetWorkspacePolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_ids optionally select repositories.
	RepositoryIds []string `protobuf:"bytes,2,rep,name=repository_ids,json=repositoryIds,proto3" json:"repository_ids,omitempty"`
	// service_keys optionally select services.
	ServiceKeys []string `protobuf:"bytes,3,rep,name=service_keys,json=serviceKeys,proto3" json:"service_keys,omitempty"`
	// include_guidance_packages controls whether guidance package refs are returned.
	IncludeGuidancePackages bool `protobuf:"varint,4,opt,name=include_guidance_packages,json=includeGuidancePackages,proto3" json:"include_guidance_packages,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetWorkspacePolicyRequest) ProtoMessage() {}

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

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

func (x *GetWorkspacePolicyRequest) GetRepositoryIds() []string {
	if x != nil {
		return x.RepositoryIds
	}
	return nil
}

func (x *GetWorkspacePolicyRequest) GetServiceKeys() []string {
	if x != nil {
		return x.ServiceKeys
	}
	return nil
}

func (x *GetWorkspacePolicyRequest) GetIncludeGuidancePackages() bool {
	if x != nil {
		return x.IncludeGuidancePackages
	}
	return false
}

func (x *GetWorkspacePolicyRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// WorkspacePolicyResponse returns workspace policy.
type WorkspacePolicyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// workspace_policy is the returned policy.
	WorkspacePolicy *WorkspacePolicy `protobuf:"bytes,1,opt,name=workspace_policy,json=workspacePolicy,proto3" json:"workspace_policy,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*WorkspacePolicyResponse) ProtoMessage() {}

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

func (x *WorkspacePolicyResponse) GetWorkspacePolicy() *WorkspacePolicy {
	if x != nil {
		return x.WorkspacePolicy
	}
	return nil
}

// PutBranchRulesRequest creates or updates branch rules.
type PutBranchRulesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// branch_rules_id is optional branch rules aggregate id.
	BranchRulesId *string `protobuf:"bytes,1,opt,name=branch_rules_id,json=branchRulesId,proto3,oneof" json:"branch_rules_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id narrows rules to one repository when set.
	RepositoryId *string `protobuf:"bytes,3,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// pattern is the branch name pattern.
	Pattern string `protobuf:"bytes,4,opt,name=pattern,proto3" json:"pattern,omitempty"`
	// required_checks are provider check names required by policy.
	RequiredChecks []string `protobuf:"bytes,5,rep,name=required_checks,json=requiredChecks,proto3" json:"required_checks,omitempty"`
	// merge_policy is the allowed merge strategy.
	MergePolicy MergePolicy `protobuf:"varint,6,opt,name=merge_policy,json=mergePolicy,proto3,enum=kodex.projects.v1.MergePolicy" json:"merge_policy,omitempty"`
	// status is branch rules status.
	Status BranchRulesStatus `protobuf:"varint,7,opt,name=status,proto3,enum=kodex.projects.v1.BranchRulesStatus" json:"status,omitempty"`
	// meta carries idempotency, optional expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,8,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PutBranchRulesRequest) ProtoMessage() {}

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

func (x *PutBranchRulesRequest) GetBranchRulesId() string {
	if x != nil && x.BranchRulesId != nil {
		return *x.BranchRulesId
	}
	return ""
}

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

func (x *PutBranchRulesRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

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

func (x *PutBranchRulesRequest) GetRequiredChecks() []string {
	if x != nil {
		return x.RequiredChecks
	}
	return nil
}

func (x *PutBranchRulesRequest) GetMergePolicy() MergePolicy {
	if x != nil {
		return x.MergePolicy
	}
	return MergePolicy_MERGE_POLICY_UNSPECIFIED
}

func (x *PutBranchRulesRequest) GetStatus() BranchRulesStatus {
	if x != nil {
		return x.Status
	}
	return BranchRulesStatus_BRANCH_RULES_STATUS_UNSPECIFIED
}

func (x *PutBranchRulesRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// BranchRulesResponse returns branch rules state.
type BranchRulesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// branch_rules is the returned branch rules.
	BranchRules   *BranchRules `protobuf:"bytes,1,opt,name=branch_rules,json=branchRules,proto3" json:"branch_rules,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BranchRulesResponse) ProtoMessage() {}

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

func (x *BranchRulesResponse) GetBranchRules() *BranchRules {
	if x != nil {
		return x.BranchRules
	}
	return nil
}

// GetBranchRulesRequest reads branch rules.
type GetBranchRulesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// branch_rules_id is the branch rules aggregate id.
	BranchRulesId string `protobuf:"bytes,1,opt,name=branch_rules_id,json=branchRulesId,proto3" json:"branch_rules_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetBranchRulesRequest) ProtoMessage() {}

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

func (x *GetBranchRulesRequest) GetBranchRulesId() string {
	if x != nil {
		return x.BranchRulesId
	}
	return ""
}

func (x *GetBranchRulesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListBranchRulesRequest lists branch rules.
type ListBranchRulesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id optionally filters rules by repository.
	RepositoryId *string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// statuses optionally filter rules lifecycle.
	Statuses []BranchRulesStatus `protobuf:"varint,3,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.BranchRulesStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,4,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListBranchRulesRequest) Reset() {
	*x = ListBranchRulesRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[86]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListBranchRulesRequest) ProtoMessage() {}

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

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

func (x *ListBranchRulesRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *ListBranchRulesRequest) GetStatuses() []BranchRulesStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListBranchRulesRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListBranchRulesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListBranchRulesResponse returns branch rules list.
type ListBranchRulesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// branch_rules are returned in stable server-defined order.
	BranchRules []*BranchRules `protobuf:"bytes,1,rep,name=branch_rules,json=branchRules,proto3" json:"branch_rules,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListBranchRulesResponse) Reset() {
	*x = ListBranchRulesResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[87]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListBranchRulesResponse) ProtoMessage() {}

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

func (x *ListBranchRulesResponse) GetBranchRules() []*BranchRules {
	if x != nil {
		return x.BranchRules
	}
	return nil
}

func (x *ListBranchRulesResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// PutReleasePolicyRequest creates or updates release policy.
type PutReleasePolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_policy_id is optional release policy aggregate id.
	ReleasePolicyId *string `protobuf:"bytes,1,opt,name=release_policy_id,json=releasePolicyId,proto3,oneof" json:"release_policy_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// name is the policy display name.
	Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	// branch_pattern is release branch pattern.
	BranchPattern string `protobuf:"bytes,4,opt,name=branch_pattern,json=branchPattern,proto3" json:"branch_pattern,omitempty"`
	// rollout_strategy is the deployment rollout strategy.
	RolloutStrategy RolloutStrategy `protobuf:"varint,5,opt,name=rollout_strategy,json=rolloutStrategy,proto3,enum=kodex.projects.v1.RolloutStrategy" json:"rollout_strategy,omitempty"`
	// rollback_policy is the rollback rule.
	RollbackPolicy RollbackPolicy `protobuf:"varint,6,opt,name=rollback_policy,json=rollbackPolicy,proto3,enum=kodex.projects.v1.RollbackPolicy" json:"rollback_policy,omitempty"`
	// risk_profile_ref references governance risk profile.
	RiskProfileRef *string `protobuf:"bytes,7,opt,name=risk_profile_ref,json=riskProfileRef,proto3,oneof" json:"risk_profile_ref,omitempty"`
	// status is release policy status.
	Status ReleasePolicyStatus `protobuf:"varint,8,opt,name=status,proto3,enum=kodex.projects.v1.ReleasePolicyStatus" json:"status,omitempty"`
	// meta carries idempotency, optional expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,9,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PutReleasePolicyRequest) Reset() {
	*x = PutReleasePolicyRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[88]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PutReleasePolicyRequest) ProtoMessage() {}

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

func (x *PutReleasePolicyRequest) GetReleasePolicyId() string {
	if x != nil && x.ReleasePolicyId != nil {
		return *x.ReleasePolicyId
	}
	return ""
}

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

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

func (x *PutReleasePolicyRequest) GetBranchPattern() string {
	if x != nil {
		return x.BranchPattern
	}
	return ""
}

func (x *PutReleasePolicyRequest) GetRolloutStrategy() RolloutStrategy {
	if x != nil {
		return x.RolloutStrategy
	}
	return RolloutStrategy_ROLLOUT_STRATEGY_UNSPECIFIED
}

func (x *PutReleasePolicyRequest) GetRollbackPolicy() RollbackPolicy {
	if x != nil {
		return x.RollbackPolicy
	}
	return RollbackPolicy_ROLLBACK_POLICY_UNSPECIFIED
}

func (x *PutReleasePolicyRequest) GetRiskProfileRef() string {
	if x != nil && x.RiskProfileRef != nil {
		return *x.RiskProfileRef
	}
	return ""
}

func (x *PutReleasePolicyRequest) GetStatus() ReleasePolicyStatus {
	if x != nil {
		return x.Status
	}
	return ReleasePolicyStatus_RELEASE_POLICY_STATUS_UNSPECIFIED
}

func (x *PutReleasePolicyRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ReleasePolicyResponse returns release policy state.
type ReleasePolicyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_policy is the returned release policy.
	ReleasePolicy *ReleasePolicy `protobuf:"bytes,1,opt,name=release_policy,json=releasePolicy,proto3" json:"release_policy,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ReleasePolicyResponse) Reset() {
	*x = ReleasePolicyResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[89]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ReleasePolicyResponse) ProtoMessage() {}

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

func (x *ReleasePolicyResponse) GetReleasePolicy() *ReleasePolicy {
	if x != nil {
		return x.ReleasePolicy
	}
	return nil
}

// GetReleasePolicyRequest reads release policy.
type GetReleasePolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_policy_id is the release policy aggregate id.
	ReleasePolicyId string `protobuf:"bytes,1,opt,name=release_policy_id,json=releasePolicyId,proto3" json:"release_policy_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetReleasePolicyRequest) Reset() {
	*x = GetReleasePolicyRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[90]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetReleasePolicyRequest) ProtoMessage() {}

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

func (x *GetReleasePolicyRequest) GetReleasePolicyId() string {
	if x != nil {
		return x.ReleasePolicyId
	}
	return ""
}

func (x *GetReleasePolicyRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListReleasePoliciesRequest lists release policies.
type ListReleasePoliciesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// statuses optionally filter policy lifecycle.
	Statuses []ReleasePolicyStatus `protobuf:"varint,2,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.ReleasePolicyStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,3,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListReleasePoliciesRequest) Reset() {
	*x = ListReleasePoliciesRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[91]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListReleasePoliciesRequest) ProtoMessage() {}

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

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

func (x *ListReleasePoliciesRequest) GetStatuses() []ReleasePolicyStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListReleasePoliciesRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListReleasePoliciesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListReleasePoliciesResponse returns release policies.
type ListReleasePoliciesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_policies are returned in stable server-defined order.
	ReleasePolicies []*ReleasePolicy `protobuf:"bytes,1,rep,name=release_policies,json=releasePolicies,proto3" json:"release_policies,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListReleasePoliciesResponse) Reset() {
	*x = ListReleasePoliciesResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[92]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListReleasePoliciesResponse) ProtoMessage() {}

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

func (x *ListReleasePoliciesResponse) GetReleasePolicies() []*ReleasePolicy {
	if x != nil {
		return x.ReleasePolicies
	}
	return nil
}

func (x *ListReleasePoliciesResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// PutReleaseLineRequest creates or updates a release line.
type PutReleaseLineRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_line_id is optional release line aggregate id.
	ReleaseLineId *string `protobuf:"bytes,1,opt,name=release_line_id,json=releaseLineId,proto3,oneof" json:"release_line_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// release_policy_id is the source release policy id.
	ReleasePolicyId string `protobuf:"bytes,3,opt,name=release_policy_id,json=releasePolicyId,proto3" json:"release_policy_id,omitempty"`
	// name is the release line name.
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// branch_pattern is release branch pattern.
	BranchPattern string `protobuf:"bytes,5,opt,name=branch_pattern,json=branchPattern,proto3" json:"branch_pattern,omitempty"`
	// status is release line status.
	Status ReleasePolicyStatus `protobuf:"varint,6,opt,name=status,proto3,enum=kodex.projects.v1.ReleasePolicyStatus" json:"status,omitempty"`
	// meta carries idempotency, optional expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,7,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PutReleaseLineRequest) Reset() {
	*x = PutReleaseLineRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[93]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PutReleaseLineRequest) ProtoMessage() {}

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

func (x *PutReleaseLineRequest) GetReleaseLineId() string {
	if x != nil && x.ReleaseLineId != nil {
		return *x.ReleaseLineId
	}
	return ""
}

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

func (x *PutReleaseLineRequest) GetReleasePolicyId() string {
	if x != nil {
		return x.ReleasePolicyId
	}
	return ""
}

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

func (x *PutReleaseLineRequest) GetBranchPattern() string {
	if x != nil {
		return x.BranchPattern
	}
	return ""
}

func (x *PutReleaseLineRequest) GetStatus() ReleasePolicyStatus {
	if x != nil {
		return x.Status
	}
	return ReleasePolicyStatus_RELEASE_POLICY_STATUS_UNSPECIFIED
}

func (x *PutReleaseLineRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ReleaseLineResponse returns release line state.
type ReleaseLineResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_line is the returned release line.
	ReleaseLine   *ReleaseLine `protobuf:"bytes,1,opt,name=release_line,json=releaseLine,proto3" json:"release_line,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ReleaseLineResponse) Reset() {
	*x = ReleaseLineResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[94]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ReleaseLineResponse) ProtoMessage() {}

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

func (x *ReleaseLineResponse) GetReleaseLine() *ReleaseLine {
	if x != nil {
		return x.ReleaseLine
	}
	return nil
}

// GetReleaseLineRequest reads release line.
type GetReleaseLineRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_line_id is the release line aggregate id.
	ReleaseLineId string `protobuf:"bytes,1,opt,name=release_line_id,json=releaseLineId,proto3" json:"release_line_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetReleaseLineRequest) Reset() {
	*x = GetReleaseLineRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[95]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetReleaseLineRequest) ProtoMessage() {}

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

func (x *GetReleaseLineRequest) GetReleaseLineId() string {
	if x != nil {
		return x.ReleaseLineId
	}
	return ""
}

func (x *GetReleaseLineRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListReleaseLinesRequest lists release lines.
type ListReleaseLinesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// release_policy_id optionally filters lines by release policy.
	ReleasePolicyId *string `protobuf:"bytes,2,opt,name=release_policy_id,json=releasePolicyId,proto3,oneof" json:"release_policy_id,omitempty"`
	// statuses optionally filter line lifecycle.
	Statuses []ReleasePolicyStatus `protobuf:"varint,3,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.ReleasePolicyStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,4,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,5,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListReleaseLinesRequest) Reset() {
	*x = ListReleaseLinesRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[96]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListReleaseLinesRequest) ProtoMessage() {}

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

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

func (x *ListReleaseLinesRequest) GetReleasePolicyId() string {
	if x != nil && x.ReleasePolicyId != nil {
		return *x.ReleasePolicyId
	}
	return ""
}

func (x *ListReleaseLinesRequest) GetStatuses() []ReleasePolicyStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListReleaseLinesRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListReleaseLinesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListReleaseLinesResponse returns release lines.
type ListReleaseLinesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// release_lines are returned in stable server-defined order.
	ReleaseLines []*ReleaseLine `protobuf:"bytes,1,rep,name=release_lines,json=releaseLines,proto3" json:"release_lines,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListReleaseLinesResponse) Reset() {
	*x = ListReleaseLinesResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[97]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListReleaseLinesResponse) ProtoMessage() {}

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

func (x *ListReleaseLinesResponse) GetReleaseLines() []*ReleaseLine {
	if x != nil {
		return x.ReleaseLines
	}
	return nil
}

func (x *ListReleaseLinesResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

// PutPlacementPolicyRequest creates or updates placement policy.
type PutPlacementPolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// placement_policy_id is optional placement policy aggregate id.
	PlacementPolicyId *string `protobuf:"bytes,1,opt,name=placement_policy_id,json=placementPolicyId,proto3,oneof" json:"placement_policy_id,omitempty"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id narrows policy to one repository when set.
	RepositoryId *string `protobuf:"bytes,3,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// service_key narrows policy to one service when set.
	ServiceKey *string `protobuf:"bytes,4,opt,name=service_key,json=serviceKey,proto3,oneof" json:"service_key,omitempty"`
	// allowed_cluster_refs contains fleet-manager cluster references.
	AllowedClusterRefs []string `protobuf:"bytes,5,rep,name=allowed_cluster_refs,json=allowedClusterRefs,proto3" json:"allowed_cluster_refs,omitempty"`
	// status is placement policy status.
	Status PlacementPolicyStatus `protobuf:"varint,6,opt,name=status,proto3,enum=kodex.projects.v1.PlacementPolicyStatus" json:"status,omitempty"`
	// meta carries idempotency, optional expected version and audit context.
	Meta          *CommandMeta `protobuf:"bytes,7,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PutPlacementPolicyRequest) Reset() {
	*x = PutPlacementPolicyRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[98]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PutPlacementPolicyRequest) ProtoMessage() {}

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

func (x *PutPlacementPolicyRequest) GetPlacementPolicyId() string {
	if x != nil && x.PlacementPolicyId != nil {
		return *x.PlacementPolicyId
	}
	return ""
}

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

func (x *PutPlacementPolicyRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *PutPlacementPolicyRequest) GetServiceKey() string {
	if x != nil && x.ServiceKey != nil {
		return *x.ServiceKey
	}
	return ""
}

func (x *PutPlacementPolicyRequest) GetAllowedClusterRefs() []string {
	if x != nil {
		return x.AllowedClusterRefs
	}
	return nil
}

func (x *PutPlacementPolicyRequest) GetStatus() PlacementPolicyStatus {
	if x != nil {
		return x.Status
	}
	return PlacementPolicyStatus_PLACEMENT_POLICY_STATUS_UNSPECIFIED
}

func (x *PutPlacementPolicyRequest) GetMeta() *CommandMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// PlacementPolicyResponse returns placement policy state.
type PlacementPolicyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// placement_policy is the returned placement policy.
	PlacementPolicy *PlacementPolicy `protobuf:"bytes,1,opt,name=placement_policy,json=placementPolicy,proto3" json:"placement_policy,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *PlacementPolicyResponse) Reset() {
	*x = PlacementPolicyResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[99]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PlacementPolicyResponse) ProtoMessage() {}

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

func (x *PlacementPolicyResponse) GetPlacementPolicy() *PlacementPolicy {
	if x != nil {
		return x.PlacementPolicy
	}
	return nil
}

// GetPlacementPolicyRequest reads placement policy.
type GetPlacementPolicyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// placement_policy_id is the placement policy aggregate id.
	PlacementPolicyId string `protobuf:"bytes,1,opt,name=placement_policy_id,json=placementPolicyId,proto3" json:"placement_policy_id,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetPlacementPolicyRequest) Reset() {
	*x = GetPlacementPolicyRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[100]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetPlacementPolicyRequest) ProtoMessage() {}

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

func (x *GetPlacementPolicyRequest) GetPlacementPolicyId() string {
	if x != nil {
		return x.PlacementPolicyId
	}
	return ""
}

func (x *GetPlacementPolicyRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListPlacementPoliciesRequest lists placement policies.
type ListPlacementPoliciesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// project_id is the owner project id.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// repository_id optionally filters policy by repository.
	RepositoryId *string `protobuf:"bytes,2,opt,name=repository_id,json=repositoryId,proto3,oneof" json:"repository_id,omitempty"`
	// service_key optionally filters policy by service.
	ServiceKey *string `protobuf:"bytes,3,opt,name=service_key,json=serviceKey,proto3,oneof" json:"service_key,omitempty"`
	// statuses optionally filter policy lifecycle.
	Statuses []PlacementPolicyStatus `protobuf:"varint,4,rep,packed,name=statuses,proto3,enum=kodex.projects.v1.PlacementPolicyStatus" json:"statuses,omitempty"`
	// page limits response size.
	Page *PageRequest `protobuf:"bytes,5,opt,name=page,proto3" json:"page,omitempty"`
	// meta carries read actor and request context.
	Meta          *QueryMeta `protobuf:"bytes,6,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListPlacementPoliciesRequest) Reset() {
	*x = ListPlacementPoliciesRequest{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[101]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListPlacementPoliciesRequest) ProtoMessage() {}

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

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

func (x *ListPlacementPoliciesRequest) GetRepositoryId() string {
	if x != nil && x.RepositoryId != nil {
		return *x.RepositoryId
	}
	return ""
}

func (x *ListPlacementPoliciesRequest) GetServiceKey() string {
	if x != nil && x.ServiceKey != nil {
		return *x.ServiceKey
	}
	return ""
}

func (x *ListPlacementPoliciesRequest) GetStatuses() []PlacementPolicyStatus {
	if x != nil {
		return x.Statuses
	}
	return nil
}

func (x *ListPlacementPoliciesRequest) GetPage() *PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

func (x *ListPlacementPoliciesRequest) GetMeta() *QueryMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// ListPlacementPoliciesResponse returns placement policies.
type ListPlacementPoliciesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// placement_policies are returned in stable server-defined order.
	PlacementPolicies []*PlacementPolicy `protobuf:"bytes,1,rep,name=placement_policies,json=placementPolicies,proto3" json:"placement_policies,omitempty"`
	// page describes continuation state.
	Page          *PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListPlacementPoliciesResponse) Reset() {
	*x = ListPlacementPoliciesResponse{}
	mi := &file_kodex_projects_v1_project_catalog_proto_msgTypes[102]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListPlacementPoliciesResponse) ProtoMessage() {}

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

func (x *ListPlacementPoliciesResponse) GetPlacementPolicies() []*PlacementPolicy {
	if x != nil {
		return x.PlacementPolicies
	}
	return nil
}

func (x *ListPlacementPoliciesResponse) GetPage() *PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

var File_kodex_projects_v1_project_catalog_proto protoreflect.FileDescriptor

const file_kodex_projects_v1_project_catalog_proto_rawDesc = "" +
	"\n" +
	"'kodex/projects/v1/project_catalog.proto\x12\x11kodex.projects.v1\x1a&kodex/runtime/v1/runtime_manager.proto\"\xfa\x02\n" +
	"\vCommandMeta\x12\"\n" +
	"\n" +
	"command_id\x18\x01 \x01(\tH\x00R\tcommandId\x88\x01\x01\x12,\n" +
	"\x0fidempotency_key\x18\x02 \x01(\tH\x01R\x0eidempotencyKey\x88\x01\x01\x12.\n" +
	"\x10expected_version\x18\x03 \x01(\x03H\x02R\x0fexpectedVersion\x88\x01\x01\x12.\n" +
	"\x05actor\x18\x04 \x01(\v2\x18.kodex.projects.v1.ActorR\x05actor\x12\x16\n" +
	"\x06reason\x18\x05 \x01(\tR\x06reason\x12\x1d\n" +
	"\n" +
	"request_id\x18\x06 \x01(\tR\trequestId\x12J\n" +
	"\x0frequest_context\x18\a \x01(\v2!.kodex.projects.v1.RequestContextR\x0erequestContextB\r\n" +
	"\v_command_idB\x12\n" +
	"\x10_idempotency_keyB\x13\n" +
	"\x11_expected_version\"\xa6\x01\n" +
	"\tQueryMeta\x12.\n" +
	"\x05actor\x18\x01 \x01(\v2\x18.kodex.projects.v1.ActorR\x05actor\x12\x1d\n" +
	"\n" +
	"request_id\x18\x02 \x01(\tR\trequestId\x12J\n" +
	"\x0frequest_context\x18\x03 \x01(\v2!.kodex.projects.v1.RequestContextR\x0erequestContext\"\xc6\x01\n" +
	"\x0eRequestContext\x12\x16\n" +
	"\x06source\x18\x01 \x01(\tR\x06source\x12\x1e\n" +
	"\btrace_id\x18\x02 \x01(\tH\x00R\atraceId\x88\x01\x01\x12\"\n" +
	"\n" +
	"session_id\x18\x03 \x01(\tH\x01R\tsessionId\x88\x01\x01\x12)\n" +
	"\x0eclient_ip_hash\x18\x04 \x01(\tH\x02R\fclientIpHash\x88\x01\x01B\v\n" +
	"\t_trace_idB\r\n" +
	"\v_session_idB\x11\n" +
	"\x0f_client_ip_hash\"+\n" +
	"\x05Actor\x12\x12\n" +
	"\x04type\x18\x01 \x01(\tR\x04type\x12\x0e\n" +
	"\x02id\x18\x02 \x01(\tR\x02id\"]\n" +
	"\vPageRequest\x12\x1b\n" +
	"\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\"\n" +
	"\n" +
	"page_token\x18\x02 \x01(\tH\x00R\tpageToken\x88\x01\x01B\r\n" +
	"\v_page_token\"O\n" +
	"\fPageResponse\x12+\n" +
	"\x0fnext_page_token\x18\x01 \x01(\tH\x00R\rnextPageToken\x88\x01\x01B\x12\n" +
	"\x10_next_page_token\"\xd4\x02\n" +
	"\aProject\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12'\n" +
	"\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId\x12\x12\n" +
	"\x04slug\x18\x03 \x01(\tR\x04slug\x12!\n" +
	"\fdisplay_name\x18\x04 \x01(\tR\vdisplayName\x12%\n" +
	"\vdescription\x18\x05 \x01(\tH\x00R\vdescription\x88\x01\x01\x12+\n" +
	"\x0ficon_object_uri\x18\x06 \x01(\tH\x01R\riconObjectUri\x88\x01\x01\x128\n" +
	"\x06status\x18\a \x01(\x0e2 .kodex.projects.v1.ProjectStatusR\x06status\x12\x18\n" +
	"\aversion\x18\b \x01(\x03R\aversionB\x0e\n" +
	"\f_descriptionB\x12\n" +
	"\x10_icon_object_uri\"\x8d\x04\n" +
	"\n" +
	"Repository\x12#\n" +
	"\rrepository_id\x18\x01 \x01(\tR\frepositoryId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12A\n" +
	"\bprovider\x18\x03 \x01(\x0e2%.kodex.projects.v1.RepositoryProviderR\bprovider\x12%\n" +
	"\x0eprovider_owner\x18\x04 \x01(\tR\rproviderOwner\x12#\n" +
	"\rprovider_name\x18\x05 \x01(\tR\fproviderName\x12\x17\n" +
	"\aweb_url\x18\x06 \x01(\tR\x06webUrl\x12%\n" +
	"\x0edefault_branch\x18\a \x01(\tR\rdefaultBranch\x12;\n" +
	"\x06status\x18\b \x01(\x0e2#.kodex.projects.v1.RepositoryStatusR\x06status\x129\n" +
	"\x16provider_repository_id\x18\t \x01(\tH\x00R\x14providerRepositoryId\x88\x01\x01\x12+\n" +
	"\x0ficon_object_uri\x18\n" +
	" \x01(\tH\x01R\riconObjectUri\x88\x01\x01\x12\x18\n" +
	"\aversion\x18\v \x01(\x03R\aversionB\x19\n" +
	"\x17_provider_repository_idB\x12\n" +
	"\x10_icon_object_uri\"g\n" +
	"\x17RepositoryBootstrapFile\x12\x12\n" +
	"\x04path\x18\x01 \x01(\tR\x04path\x12\x18\n" +
	"\acontent\x18\x02 \x01(\tR\acontent\x12\x1e\n" +
	"\n" +
	"executable\x18\x03 \x01(\bR\n" +
	"executable\"\x9d\x01\n" +
	"!RepositoryBootstrapServicesPolicy\x12\x1f\n" +
	"\vsource_path\x18\x01 \x01(\tR\n" +
	"sourcePath\x12!\n" +
	"\fcontent_hash\x18\x02 \x01(\tR\vcontentHash\x124\n" +
	"\x16validated_payload_json\x18\x03 \x01(\tR\x14validatedPayloadJson\"\xfa\x01\n" +
	"!RepositoryBootstrapProviderTarget\x12#\n" +
	"\rprovider_slug\x18\x01 \x01(\tR\fproviderSlug\x120\n" +
	"\x14repository_full_name\x18\x02 \x01(\tR\x12repositoryFullName\x129\n" +
	"\x16provider_repository_id\x18\x03 \x01(\tH\x00R\x14providerRepositoryId\x88\x01\x01\x12\x1c\n" +
	"\aweb_url\x18\x04 \x01(\tH\x01R\x06webUrl\x88\x01\x01B\x19\n" +
	"\x17_provider_repository_idB\n" +
	"\n" +
	"\b_web_url\"\xcf\x05\n" +
	"\x0eServicesPolicy\x12,\n" +
	"\x12services_policy_id\x18\x01 \x01(\tR\x10servicesPolicyId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x125\n" +
	"\x14source_repository_id\x18\x03 \x01(\tH\x00R\x12sourceRepositoryId\x88\x01\x01\x12\x1f\n" +
	"\vsource_path\x18\x04 \x01(\tR\n" +
	"sourcePath\x12\"\n" +
	"\n" +
	"source_ref\x18\x05 \x01(\tH\x01R\tsourceRef\x88\x01\x01\x12*\n" +
	"\x11source_commit_sha\x18\x06 \x01(\tR\x0fsourceCommitSha\x12+\n" +
	"\x0fsource_blob_sha\x18\a \x01(\tH\x02R\rsourceBlobSha\x88\x01\x01\x12%\n" +
	"\x0epolicy_version\x18\b \x01(\x03R\rpolicyVersion\x12!\n" +
	"\fcontent_hash\x18\t \x01(\tR\vcontentHash\x124\n" +
	"\x16validated_payload_json\x18\n" +
	" \x01(\tR\x14validatedPayloadJson\x12^\n" +
	"\x11validation_status\x18\v \x01(\x0e21.kodex.projects.v1.ServicesPolicyValidationStatusR\x10validationStatus\x12^\n" +
	"\x11projection_status\x18\f \x01(\x0e21.kodex.projects.v1.ServicesPolicyProjectionStatusR\x10projectionStatus\x12\x1f\n" +
	"\vimported_at\x18\r \x01(\tR\n" +
	"importedAtB\x17\n" +
	"\x15_source_repository_idB\r\n" +
	"\v_source_refB\x12\n" +
	"\x10_source_blob_sha\"\xc6\x04\n" +
	"\x11ServiceDescriptor\x122\n" +
	"\x15service_descriptor_id\x18\x01 \x01(\tR\x13serviceDescriptorId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12,\n" +
	"\x12services_policy_id\x18\x03 \x01(\tR\x10servicesPolicyId\x12(\n" +
	"\rrepository_id\x18\x04 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12\x1f\n" +
	"\vservice_key\x18\x05 \x01(\tR\n" +
	"serviceKey\x12!\n" +
	"\fdisplay_name\x18\x06 \x01(\tR\vdisplayName\x122\n" +
	"\x04kind\x18\a \x01(\x0e2\x1e.kodex.projects.v1.ServiceKindR\x04kind\x12\x1b\n" +
	"\troot_path\x18\b \x01(\tR\brootPath\x129\n" +
	"\x16documentation_scope_id\x18\t \x01(\tH\x01R\x14documentationScopeId\x88\x01\x01\x125\n" +
	"\x17depends_on_service_keys\x18\n" +
	" \x03(\tR\x14dependsOnServiceKeys\x128\n" +
	"\x06status\x18\v \x01(\x0e2 .kodex.projects.v1.ServiceStatusR\x06status\x12\x18\n" +
	"\aversion\x18\f \x01(\x03R\aversionB\x10\n" +
	"\x0e_repository_idB\x19\n" +
	"\x17_documentation_scope_id\"z\n" +
	"\x1bSelfDeployPathCategoryCount\x12E\n" +
	"\bcategory\x18\x01 \x01(\x0e2).kodex.projects.v1.SelfDeployPathCategoryR\bcategory\x12\x14\n" +
	"\x05count\x18\x02 \x01(\x03R\x05count\"\xcb\x01\n" +
	"\x1fSelfDeployGovernanceRequirement\x12#\n" +
	"\rgate_required\x18\x01 \x01(\bR\fgateRequired\x12-\n" +
	"\x10risk_profile_ref\x18\x02 \x01(\tH\x00R\x0eriskProfileRef\x88\x01\x01\x12+\n" +
	"\x0fgate_policy_ref\x18\x03 \x01(\tH\x01R\rgatePolicyRef\x88\x01\x01B\x13\n" +
	"\x11_risk_profile_refB\x12\n" +
	"\x10_gate_policy_ref\"\xc2\x05\n" +
	" SelfDeployServicesYamlProjection\x12*\n" +
	"\x11services_yaml_ref\x18\x01 \x01(\tR\x0fservicesYamlRef\x120\n" +
	"\x14services_yaml_digest\x18\x02 \x01(\tR\x12servicesYamlDigest\x12:\n" +
	"\x19services_yaml_fingerprint\x18\x03 \x01(\tR\x17servicesYamlFingerprint\x12,\n" +
	"\x12services_policy_id\x18\x04 \x01(\tR\x10servicesPolicyId\x125\n" +
	"\x14source_repository_id\x18\x05 \x01(\tH\x00R\x12sourceRepositoryId\x88\x01\x01\x12\x1f\n" +
	"\vsource_path\x18\x06 \x01(\tR\n" +
	"sourcePath\x12\"\n" +
	"\n" +
	"source_ref\x18\a \x01(\tH\x01R\tsourceRef\x88\x01\x01\x12*\n" +
	"\x11source_commit_sha\x18\b \x01(\tR\x0fsourceCommitSha\x12%\n" +
	"\x0epolicy_version\x18\t \x01(\x03R\rpolicyVersion\x12^\n" +
	"\x11validation_status\x18\n" +
	" \x01(\x0e21.kodex.projects.v1.ServicesPolicyValidationStatusR\x10validationStatus\x12^\n" +
	"\x11projection_status\x18\v \x01(\x0e21.kodex.projects.v1.ServicesPolicyProjectionStatusR\x10projectionStatus\x12\x1f\n" +
	"\vimported_at\x18\f \x01(\tR\n" +
	"importedAtB\x17\n" +
	"\x15_source_repository_idB\r\n" +
	"\v_source_ref\"\xdf\n" +
	"\n" +
	"\x10SelfDeploySignal\x12.\n" +
	"\x13provider_signal_ref\x18\x01 \x01(\tR\x11providerSignalRef\x121\n" +
	"\x12provider_signal_id\x18\x02 \x01(\tH\x00R\x10providerSignalId\x88\x01\x01\x123\n" +
	"\x13provider_signal_key\x18\x03 \x01(\tH\x01R\x11providerSignalKey\x88\x01\x01\x12\x1f\n" +
	"\vproject_ref\x18\x04 \x01(\tR\n" +
	"projectRef\x12%\n" +
	"\x0erepository_ref\x18\x05 \x01(\tR\rrepositoryRef\x12#\n" +
	"\rprovider_slug\x18\x06 \x01(\tR\fproviderSlug\x120\n" +
	"\x14repository_full_name\x18\a \x01(\tR\x12repositoryFullName\x129\n" +
	"\x16provider_repository_id\x18\b \x01(\tH\x02R\x14providerRepositoryId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"source_ref\x18\t \x01(\tR\tsourceRef\x12(\n" +
	"\x10merge_commit_sha\x18\n" +
	" \x01(\tR\x0emergeCommitSha\x12X\n" +
	"\rservices_yaml\x18\v \x01(\v23.kodex.projects.v1.SelfDeployServicesYamlProjectionR\fservicesYaml\x122\n" +
	"\x15affected_service_keys\x18\f \x03(\tR\x13affectedServiceKeys\x12W\n" +
	"\x0fpath_categories\x18\r \x03(\v2..kodex.projects.v1.SelfDeployPathCategoryCountR\x0epathCategories\x122\n" +
	"\x15services_yaml_changed\x18\x0e \x01(\bR\x13servicesYamlChanged\x126\n" +
	"\x17deploy_relevant_changed\x18\x0f \x01(\bR\x15deployRelevantChanged\x12p\n" +
	"\x1aexpected_runtime_job_types\x18\x10 \x03(\x0e23.kodex.projects.v1.SelfDeployExpectedRuntimeJobTypeR\x17expectedRuntimeJobTypes\x12i\n" +
	"\x16governance_requirement\x18\x11 \x01(\v22.kodex.projects.v1.SelfDeployGovernanceRequirementR\x15governanceRequirement\x12>\n" +
	"\x1bprovider_change_fingerprint\x18\x12 \x01(\tR\x19providerChangeFingerprint\x12<\n" +
	"\x1aproject_signal_fingerprint\x18\x13 \x01(\tR\x18projectSignalFingerprint\x12(\n" +
	"\rprovider_etag\x18\x14 \x01(\tH\x03R\fproviderEtag\x88\x01\x01\x12!\n" +
	"\fsafe_summary\x18\x15 \x01(\tR\vsafeSummary\x12\x1f\n" +
	"\vobserved_at\x18\x16 \x01(\tR\n" +
	"observedAt\x12\x18\n" +
	"\aversion\x18\x17 \x01(\x03R\aversionB\x15\n" +
	"\x13_provider_signal_idB\x16\n" +
	"\x14_provider_signal_keyB\x19\n" +
	"\x17_provider_repository_idB\x10\n" +
	"\x0e_provider_etag\"\xdf\x03\n" +
	"\x15SelfDeployBuildRecipe\x12\x1b\n" +
	"\timage_ref\x18\x01 \x01(\tR\bimageRef\x12\x1b\n" +
	"\timage_tag\x18\x02 \x01(\tR\bimageTag\x12&\n" +
	"\fimage_digest\x18\x03 \x01(\tH\x00R\vimageDigest\x88\x01\x01\x12%\n" +
	"\x0edockerfile_ref\x18\x04 \x01(\tR\rdockerfileRef\x12+\n" +
	"\x11dockerfile_target\x18\x05 \x01(\tR\x10dockerfileTarget\x12*\n" +
	"\x11builder_image_ref\x18\x06 \x01(\tR\x0fbuilderImageRef\x12\\\n" +
	"\x13allowed_secret_refs\x18\a \x03(\v2,.kodex.runtime.v1.RuntimeJobAllowedSecretRefR\x11allowedSecretRefs\x12F\n" +
	"\voutput_refs\x18\b \x03(\v2%.kodex.runtime.v1.RuntimeJobOutputRefR\n" +
	"outputRefs\x12-\n" +
	"\x12recipe_fingerprint\x18\t \x01(\tR\x11recipeFingerprintB\x0f\n" +
	"\r_image_digest\"\xc8\x04\n" +
	"\"SelfDeployMaterializedBuildContext\x12\x1f\n" +
	"\vservice_key\x18\x01 \x01(\tR\n" +
	"serviceKey\x127\n" +
	"\x15plan_item_fingerprint\x18\x02 \x01(\tH\x00R\x13planItemFingerprint\x88\x01\x01\x12*\n" +
	"\x11build_context_ref\x18\x03 \x01(\tR\x0fbuildContextRef\x120\n" +
	"\x14build_context_digest\x18\x04 \x01(\tR\x12buildContextDigest\x120\n" +
	"\x11dockerfile_digest\x18\x05 \x01(\tH\x01R\x10dockerfileDigest\x88\x01\x01\x124\n" +
	"\x13materialization_ref\x18\x06 \x01(\tH\x02R\x12materializationRef\x88\x01\x01\x12D\n" +
	"\x1bmaterialization_fingerprint\x18\a \x01(\tH\x03R\x1amaterializationFingerprint\x88\x01\x01\x129\n" +
	"\x16manifest_bundle_digest\x18\b \x01(\tH\x04R\x14manifestBundleDigest\x88\x01\x01B\x18\n" +
	"\x16_plan_item_fingerprintB\x14\n" +
	"\x12_dockerfile_digestB\x16\n" +
	"\x14_materialization_refB\x1e\n" +
	"\x1c_materialization_fingerprintB\x19\n" +
	"\x17_manifest_bundle_digest\"\xb4\x03\n" +
	"\x17SelfDeployBuildPlanItem\x12\x1f\n" +
	"\vservice_key\x18\x01 \x01(\tR\n" +
	"serviceKey\x12\x1f\n" +
	"\vservice_ref\x18\x02 \x01(\tR\n" +
	"serviceRef\x12V\n" +
	"\x14build_execution_spec\x18\x03 \x01(\v2$.kodex.runtime.v1.BuildExecutionSpecR\x12buildExecutionSpec\x122\n" +
	"\x15plan_item_fingerprint\x18\x04 \x01(\tR\x13planItemFingerprint\x12H\n" +
	"\x06status\x18\x05 \x01(\x0e20.kodex.projects.v1.SelfDeployBuildPlanItemStatusR\x06status\x12K\n" +
	"\fbuild_recipe\x18\x06 \x01(\v2(.kodex.projects.v1.SelfDeployBuildRecipeR\vbuildRecipe\x12$\n" +
	"\vsafe_reason\x18\a \x01(\tH\x00R\n" +
	"safeReason\x88\x01\x01B\x0e\n" +
	"\f_safe_reason\"\xb6\x04\n" +
	"\x13SelfDeployBuildPlan\x12\x1f\n" +
	"\vproject_ref\x18\x01 \x01(\tR\n" +
	"projectRef\x12%\n" +
	"\x0erepository_ref\x18\x02 \x01(\tR\rrepositoryRef\x123\n" +
	"\x13provider_signal_ref\x18\x03 \x01(\tH\x00R\x11providerSignalRef\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x04 \x01(\tR\tsourceRef\x12(\n" +
	"\x10merge_commit_sha\x18\x05 \x01(\tR\x0emergeCommitSha\x12X\n" +
	"\rservices_yaml\x18\x06 \x01(\v23.kodex.projects.v1.SelfDeployServicesYamlProjectionR\fservicesYaml\x122\n" +
	"\x15affected_service_keys\x18\a \x03(\tR\x13affectedServiceKeys\x12K\n" +
	"\vbuild_items\x18\b \x03(\v2*.kodex.projects.v1.SelfDeployBuildPlanItemR\n" +
	"buildItems\x12)\n" +
	"\x10plan_fingerprint\x18\t \x01(\tR\x0fplanFingerprint\x12!\n" +
	"\fsafe_summary\x18\n" +
	" \x01(\tR\vsafeSummary\x12\x18\n" +
	"\aversion\x18\v \x01(\x03R\aversionB\x16\n" +
	"\x14_provider_signal_ref\"\xbd\x04\n" +
	"\x15SelfDeployBuildOutput\x12\x1f\n" +
	"\vservice_key\x18\x01 \x01(\tR\n" +
	"serviceKey\x12+\n" +
	"\x0fruntime_job_ref\x18\x02 \x01(\tH\x00R\rruntimeJobRef\x88\x01\x01\x12\x1b\n" +
	"\timage_ref\x18\x03 \x01(\tR\bimageRef\x12\x1b\n" +
	"\timage_tag\x18\x04 \x01(\tR\bimageTag\x12&\n" +
	"\fimage_digest\x18\x05 \x01(\tH\x01R\vimageDigest\x88\x01\x01\x12B\n" +
	"\x1bbuild_plan_item_fingerprint\x18\x06 \x01(\tH\x02R\x18buildPlanItemFingerprint\x88\x01\x01\x129\n" +
	"\x16build_plan_fingerprint\x18\a \x01(\tH\x03R\x14buildPlanFingerprint\x88\x01\x01\x12/\n" +
	"\x11build_context_ref\x18\b \x01(\tH\x04R\x0fbuildContextRef\x88\x01\x01\x125\n" +
	"\x14build_context_digest\x18\t \x01(\tH\x05R\x12buildContextDigest\x88\x01\x01B\x12\n" +
	"\x10_runtime_job_refB\x0f\n" +
	"\r_image_digestB\x1e\n" +
	"\x1c_build_plan_item_fingerprintB\x19\n" +
	"\x17_build_plan_fingerprintB\x14\n" +
	"\x12_build_context_refB\x17\n" +
	"\x15_build_context_digest\"\x81\x03\n" +
	"\x18SelfDeployDeployPlanItem\x12\x1f\n" +
	"\vservice_key\x18\x01 \x01(\tR\n" +
	"serviceKey\x12$\n" +
	"\vservice_ref\x18\x02 \x01(\tH\x00R\n" +
	"serviceRef\x88\x01\x01\x12Y\n" +
	"\x15deploy_execution_spec\x18\x03 \x01(\v2%.kodex.runtime.v1.DeployExecutionSpecR\x13deployExecutionSpec\x122\n" +
	"\x15plan_item_fingerprint\x18\x04 \x01(\tR\x13planItemFingerprint\x12I\n" +
	"\x06status\x18\x05 \x01(\x0e21.kodex.projects.v1.SelfDeployDeployPlanItemStatusR\x06status\x12$\n" +
	"\vsafe_reason\x18\x06 \x01(\tH\x01R\n" +
	"safeReason\x88\x01\x01B\x0e\n" +
	"\f_service_refB\x0e\n" +
	"\f_safe_reason\"\xba\x04\n" +
	"\x14SelfDeployDeployPlan\x12\x1f\n" +
	"\vproject_ref\x18\x01 \x01(\tR\n" +
	"projectRef\x12%\n" +
	"\x0erepository_ref\x18\x02 \x01(\tR\rrepositoryRef\x123\n" +
	"\x13provider_signal_ref\x18\x03 \x01(\tH\x00R\x11providerSignalRef\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x04 \x01(\tR\tsourceRef\x12(\n" +
	"\x10merge_commit_sha\x18\x05 \x01(\tR\x0emergeCommitSha\x12X\n" +
	"\rservices_yaml\x18\x06 \x01(\v23.kodex.projects.v1.SelfDeployServicesYamlProjectionR\fservicesYaml\x122\n" +
	"\x15affected_service_keys\x18\a \x03(\tR\x13affectedServiceKeys\x12N\n" +
	"\fdeploy_items\x18\b \x03(\v2+.kodex.projects.v1.SelfDeployDeployPlanItemR\vdeployItems\x12)\n" +
	"\x10plan_fingerprint\x18\t \x01(\tR\x0fplanFingerprint\x12!\n" +
	"\fsafe_summary\x18\n" +
	" \x01(\tR\vsafeSummary\x12\x18\n" +
	"\aversion\x18\v \x01(\x03R\aversionB\x16\n" +
	"\x14_provider_signal_ref\"\xeb\x03\n" +
	"\x13DocumentationSource\x126\n" +
	"\x17documentation_source_id\x18\x01 \x01(\tR\x15documentationSourceId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x03 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12H\n" +
	"\n" +
	"scope_type\x18\x04 \x01(\x0e2).kodex.projects.v1.DocumentationScopeTypeR\tscopeType\x12\x1e\n" +
	"\bscope_id\x18\x05 \x01(\tH\x01R\ascopeId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"local_path\x18\x06 \x01(\tR\tlocalPath\x12K\n" +
	"\vaccess_mode\x18\a \x01(\x0e2*.kodex.projects.v1.DocumentationAccessModeR\n" +
	"accessMode\x12D\n" +
	"\x06status\x18\b \x01(\x0e2,.kodex.projects.v1.DocumentationSourceStatusR\x06status\x12\x18\n" +
	"\aversion\x18\t \x01(\x03R\aversionB\x10\n" +
	"\x0e_repository_idB\v\n" +
	"\t_scope_id\"\xee\x02\n" +
	"\vBranchRules\x12&\n" +
	"\x0fbranch_rules_id\x18\x01 \x01(\tR\rbranchRulesId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x03 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12\x18\n" +
	"\apattern\x18\x04 \x01(\tR\apattern\x12'\n" +
	"\x0frequired_checks\x18\x05 \x03(\tR\x0erequiredChecks\x12A\n" +
	"\fmerge_policy\x18\x06 \x01(\x0e2\x1e.kodex.projects.v1.MergePolicyR\vmergePolicy\x12<\n" +
	"\x06status\x18\a \x01(\x0e2$.kodex.projects.v1.BranchRulesStatusR\x06status\x12\x18\n" +
	"\aversion\x18\b \x01(\x03R\aversionB\x10\n" +
	"\x0e_repository_id\"\xce\x03\n" +
	"\rReleasePolicy\x12*\n" +
	"\x11release_policy_id\x18\x01 \x01(\tR\x0freleasePolicyId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12%\n" +
	"\x0ebranch_pattern\x18\x04 \x01(\tR\rbranchPattern\x12M\n" +
	"\x10rollout_strategy\x18\x05 \x01(\x0e2\".kodex.projects.v1.RolloutStrategyR\x0frolloutStrategy\x12J\n" +
	"\x0frollback_policy\x18\x06 \x01(\x0e2!.kodex.projects.v1.RollbackPolicyR\x0erollbackPolicy\x12-\n" +
	"\x10risk_profile_ref\x18\a \x01(\tH\x00R\x0eriskProfileRef\x88\x01\x01\x12>\n" +
	"\x06status\x18\b \x01(\x0e2&.kodex.projects.v1.ReleasePolicyStatusR\x06status\x12\x18\n" +
	"\aversion\x18\t \x01(\x03R\aversionB\x13\n" +
	"\x11_risk_profile_ref\"\x95\x02\n" +
	"\vReleaseLine\x12&\n" +
	"\x0frelease_line_id\x18\x01 \x01(\tR\rreleaseLineId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12*\n" +
	"\x11release_policy_id\x18\x03 \x01(\tR\x0freleasePolicyId\x12\x12\n" +
	"\x04name\x18\x04 \x01(\tR\x04name\x12%\n" +
	"\x0ebranch_pattern\x18\x05 \x01(\tR\rbranchPattern\x12>\n" +
	"\x06status\x18\x06 \x01(\x0e2&.kodex.projects.v1.ReleasePolicyStatusR\x06status\x12\x18\n" +
	"\aversion\x18\a \x01(\x03R\aversion\"\xe0\x02\n" +
	"\x0fPlacementPolicy\x12.\n" +
	"\x13placement_policy_id\x18\x01 \x01(\tR\x11placementPolicyId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x03 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12$\n" +
	"\vservice_key\x18\x04 \x01(\tH\x01R\n" +
	"serviceKey\x88\x01\x01\x120\n" +
	"\x14allowed_cluster_refs\x18\x05 \x03(\tR\x12allowedClusterRefs\x12@\n" +
	"\x06status\x18\x06 \x01(\x0e2(.kodex.projects.v1.PlacementPolicyStatusR\x06status\x12\x18\n" +
	"\aversion\x18\a \x01(\x03R\aversionB\x10\n" +
	"\x0e_repository_idB\x0e\n" +
	"\f_service_key\"\xc1\x03\n" +
	"\x0ePolicyOverride\x12,\n" +
	"\x12policy_override_id\x18\x01 \x01(\tR\x10policyOverrideId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12L\n" +
	"\vtarget_type\x18\x03 \x01(\x0e2+.kodex.projects.v1.PolicyOverrideTargetTypeR\n" +
	"targetType\x12 \n" +
	"\ttarget_id\x18\x04 \x01(\tH\x00R\btargetId\x88\x01\x01\x12!\n" +
	"\fpayload_json\x18\x05 \x01(\tR\vpayloadJson\x12\x16\n" +
	"\x06reason\x18\x06 \x01(\tR\x06reason\x12?\n" +
	"\x06status\x18\a \x01(\x0e2'.kodex.projects.v1.PolicyOverrideStatusR\x06status\x12\x1d\n" +
	"\n" +
	"expires_at\x18\b \x01(\tR\texpiresAt\x12/\n" +
	"\x14created_by_actor_ref\x18\t \x01(\tR\x11createdByActorRef\x12\x18\n" +
	"\aversion\x18\n" +
	" \x01(\x03R\aversionB\f\n" +
	"\n" +
	"_target_id\"\x97\x03\n" +
	"\x0fWorkspacePolicy\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12I\n" +
	"\fcode_sources\x18\x02 \x03(\v2&.kodex.projects.v1.WorkspaceCodeSourceR\vcodeSources\x12d\n" +
	"\x15documentation_sources\x18\x03 \x03(\v2/.kodex.projects.v1.WorkspaceDocumentationSourceR\x14documentationSources\x122\n" +
	"\x15guidance_package_refs\x18\x04 \x03(\tR\x13guidancePackageRefs\x12%\n" +
	"\x0epolicy_version\x18\x05 \x01(\x03R\rpolicyVersion\x12Y\n" +
	"\x17active_policy_overrides\x18\x06 \x03(\v2!.kodex.projects.v1.PolicyOverrideR\x15activePolicyOverrides\"\xd5\x02\n" +
	"\x13WorkspaceCodeSource\x12#\n" +
	"\rrepository_id\x18\x01 \x01(\tR\frepositoryId\x12A\n" +
	"\bprovider\x18\x02 \x01(\x0e2%.kodex.projects.v1.RepositoryProviderR\bprovider\x12%\n" +
	"\x0eprovider_owner\x18\x03 \x01(\tR\rproviderOwner\x12#\n" +
	"\rprovider_name\x18\x04 \x01(\tR\fproviderName\x12%\n" +
	"\x0edefault_branch\x18\x05 \x01(\tR\rdefaultBranch\x12\x1d\n" +
	"\n" +
	"local_path\x18\x06 \x01(\tR\tlocalPath\x12D\n" +
	"\vaccess_mode\x18\a \x01(\x0e2#.kodex.projects.v1.SourceAccessModeR\n" +
	"accessMode\"\xee\x02\n" +
	"\x1cWorkspaceDocumentationSource\x126\n" +
	"\x17documentation_source_id\x18\x01 \x01(\tR\x15documentationSourceId\x12(\n" +
	"\rrepository_id\x18\x02 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12H\n" +
	"\n" +
	"scope_type\x18\x03 \x01(\x0e2).kodex.projects.v1.DocumentationScopeTypeR\tscopeType\x12\x1e\n" +
	"\bscope_id\x18\x04 \x01(\tH\x01R\ascopeId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"local_path\x18\x05 \x01(\tR\tlocalPath\x12D\n" +
	"\vaccess_mode\x18\x06 \x01(\x0e2#.kodex.projects.v1.SourceAccessModeR\n" +
	"accessModeB\x10\n" +
	"\x0e_repository_idB\v\n" +
	"\t_scope_id\"\xec\x02\n" +
	"\x14CreateProjectRequest\x12'\n" +
	"\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId\x12\x12\n" +
	"\x04slug\x18\x02 \x01(\tR\x04slug\x12!\n" +
	"\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12%\n" +
	"\vdescription\x18\x04 \x01(\tH\x00R\vdescription\x88\x01\x01\x12+\n" +
	"\x0ficon_object_uri\x18\x05 \x01(\tH\x01R\riconObjectUri\x88\x01\x01\x12=\n" +
	"\x06status\x18\x06 \x01(\x0e2 .kodex.projects.v1.ProjectStatusH\x02R\x06status\x88\x01\x01\x122\n" +
	"\x04meta\x18\a \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x0e\n" +
	"\f_descriptionB\x12\n" +
	"\x10_icon_object_uriB\t\n" +
	"\a_status\"\x86\x03\n" +
	"\x14UpdateProjectRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12\x17\n" +
	"\x04slug\x18\x02 \x01(\tH\x00R\x04slug\x88\x01\x01\x12&\n" +
	"\fdisplay_name\x18\x03 \x01(\tH\x01R\vdisplayName\x88\x01\x01\x12%\n" +
	"\vdescription\x18\x04 \x01(\tH\x02R\vdescription\x88\x01\x01\x12+\n" +
	"\x0ficon_object_uri\x18\x05 \x01(\tH\x03R\riconObjectUri\x88\x01\x01\x12=\n" +
	"\x06status\x18\x06 \x01(\x0e2 .kodex.projects.v1.ProjectStatusH\x04R\x06status\x88\x01\x01\x122\n" +
	"\x04meta\x18\a \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\a\n" +
	"\x05_slugB\x0f\n" +
	"\r_display_nameB\x0e\n" +
	"\f_descriptionB\x12\n" +
	"\x10_icon_object_uriB\t\n" +
	"\a_status\"G\n" +
	"\x0fProjectResponse\x124\n" +
	"\aproject\x18\x01 \x01(\v2\x1a.kodex.projects.v1.ProjectR\aproject\"d\n" +
	"\x11GetProjectRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x120\n" +
	"\x04meta\x18\x02 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\xfb\x01\n" +
	"\x13ListProjectsRequest\x12,\n" +
	"\x0forganization_id\x18\x01 \x01(\tH\x00R\x0eorganizationId\x88\x01\x01\x12<\n" +
	"\bstatuses\x18\x02 \x03(\x0e2 .kodex.projects.v1.ProjectStatusR\bstatuses\x122\n" +
	"\x04page\x18\x03 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\x04 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x12\n" +
	"\x10_organization_id\"\x83\x01\n" +
	"\x14ListProjectsResponse\x126\n" +
	"\bprojects\x18\x01 \x03(\v2\x1a.kodex.projects.v1.ProjectR\bprojects\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\x9f\x04\n" +
	"\x17AttachRepositoryRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12A\n" +
	"\bprovider\x18\x02 \x01(\x0e2%.kodex.projects.v1.RepositoryProviderR\bprovider\x12%\n" +
	"\x0eprovider_owner\x18\x03 \x01(\tR\rproviderOwner\x12#\n" +
	"\rprovider_name\x18\x04 \x01(\tR\fproviderName\x12\x17\n" +
	"\aweb_url\x18\x05 \x01(\tR\x06webUrl\x12%\n" +
	"\x0edefault_branch\x18\x06 \x01(\tR\rdefaultBranch\x129\n" +
	"\x16provider_repository_id\x18\a \x01(\tH\x00R\x14providerRepositoryId\x88\x01\x01\x12+\n" +
	"\x0ficon_object_uri\x18\b \x01(\tH\x01R\riconObjectUri\x88\x01\x01\x12@\n" +
	"\x06status\x18\t \x01(\x0e2#.kodex.projects.v1.RepositoryStatusH\x02R\x06status\x88\x01\x01\x122\n" +
	"\x04meta\x18\n" +
	" \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x19\n" +
	"\x17_provider_repository_idB\x12\n" +
	"\x10_icon_object_uriB\t\n" +
	"\a_status\"\xbf\x02\n" +
	"\x17UpdateRepositoryRequest\x12#\n" +
	"\rrepository_id\x18\x01 \x01(\tR\frepositoryId\x12*\n" +
	"\x0edefault_branch\x18\x02 \x01(\tH\x00R\rdefaultBranch\x88\x01\x01\x12@\n" +
	"\x06status\x18\x03 \x01(\x0e2#.kodex.projects.v1.RepositoryStatusH\x01R\x06status\x88\x01\x01\x12+\n" +
	"\x0ficon_object_uri\x18\x04 \x01(\tH\x02R\riconObjectUri\x88\x01\x01\x122\n" +
	"\x04meta\x18\x05 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x11\n" +
	"\x0f_default_branchB\t\n" +
	"\a_statusB\x12\n" +
	"\x10_icon_object_uri\"r\n" +
	"\x17DetachRepositoryRequest\x12#\n" +
	"\rrepository_id\x18\x01 \x01(\tR\frepositoryId\x122\n" +
	"\x04meta\x18\x02 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04meta\"S\n" +
	"\x12RepositoryResponse\x12=\n" +
	"\n" +
	"repository\x18\x01 \x01(\v2\x1d.kodex.projects.v1.RepositoryR\n" +
	"repository\"\xbb\x04\n" +
	"\x1fCreateProviderRepositoryRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12A\n" +
	"\bprovider\x18\x02 \x01(\x0e2%.kodex.projects.v1.RepositoryProviderR\bprovider\x12E\n" +
	"\n" +
	"owner_kind\x18\x03 \x01(\x0e2&.kodex.projects.v1.RepositoryOwnerKindR\townerKind\x12%\n" +
	"\x0eprovider_owner\x18\x04 \x01(\tR\rproviderOwner\x12#\n" +
	"\rprovider_name\x18\x05 \x01(\tR\fproviderName\x12G\n" +
	"\n" +
	"visibility\x18\x06 \x01(\x0e2'.kodex.projects.v1.RepositoryVisibilityR\n" +
	"visibility\x12%\n" +
	"\vdescription\x18\a \x01(\tH\x00R\vdescription\x88\x01\x01\x12+\n" +
	"\x0ficon_object_uri\x18\b \x01(\tH\x01R\riconObjectUri\x88\x01\x01\x12.\n" +
	"\x13external_account_id\x18\t \x01(\tR\x11externalAccountId\x122\n" +
	"\x04meta\x18\n" +
	" \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x0e\n" +
	"\f_descriptionB\x12\n" +
	"\x10_icon_object_uri\"\xaa\x05\n" +
	" RepositoryProviderCreateResponse\x12=\n" +
	"\n" +
	"repository\x18\x01 \x01(\v2\x1d.kodex.projects.v1.RepositoryR\n" +
	"repository\x12]\n" +
	"\x0fprovider_target\x18\x02 \x01(\v24.kodex.projects.v1.RepositoryBootstrapProviderTargetR\x0eproviderTarget\x12\x1f\n" +
	"\vbase_branch\x18\x03 \x01(\tR\n" +
	"baseBranch\x127\n" +
	"\x15provider_operation_id\x18\x04 \x01(\tH\x00R\x13providerOperationId\x88\x01\x01\x123\n" +
	"\x13provider_result_ref\x18\x05 \x01(\tH\x01R\x11providerResultRef\x88\x01\x01\x129\n" +
	"\x16provider_repository_id\x18\x06 \x01(\tH\x02R\x14providerRepositoryId\x88\x01\x01\x12-\n" +
	"\x10provider_web_url\x18\a \x01(\tH\x03R\x0eproviderWebUrl\x88\x01\x01\x121\n" +
	"\x12provider_object_id\x18\b \x01(\tH\x04R\x10providerObjectId\x88\x01\x01\x12.\n" +
	"\x10provider_version\x18\t \x01(\tH\x05R\x0fproviderVersion\x88\x01\x01B\x18\n" +
	"\x16_provider_operation_idB\x16\n" +
	"\x14_provider_result_refB\x19\n" +
	"\x17_provider_repository_idB\x13\n" +
	"\x11_provider_web_urlB\x15\n" +
	"\x13_provider_object_idB\x13\n" +
	"\x11_provider_version\"\xd0\x04\n" +
	"+CreateRepositoryBootstrapPullRequestRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x02 \x01(\tR\frepositoryId\x12\x1f\n" +
	"\vbase_branch\x18\x03 \x01(\tR\n" +
	"baseBranch\x12)\n" +
	"\x10bootstrap_branch\x18\x04 \x01(\tR\x0fbootstrapBranch\x12%\n" +
	"\x0ecommit_message\x18\x05 \x01(\tR\rcommitMessage\x12\x14\n" +
	"\x05title\x18\x06 \x01(\tR\x05title\x12\x12\n" +
	"\x04body\x18\a \x01(\tR\x04body\x12\x14\n" +
	"\x05draft\x18\b \x01(\bR\x05draft\x12@\n" +
	"\x05files\x18\t \x03(\v2*.kodex.projects.v1.RepositoryBootstrapFileR\x05files\x12%\n" +
	"\x0ewatermark_json\x18\n" +
	" \x01(\tR\rwatermarkJson\x12]\n" +
	"\x0fservices_policy\x18\v \x01(\v24.kodex.projects.v1.RepositoryBootstrapServicesPolicyR\x0eservicesPolicy\x12.\n" +
	"\x13external_account_id\x18\f \x01(\tR\x11externalAccountId\x122\n" +
	"\x04meta\x18\r \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04meta\"\xb2\x06\n" +
	"&RepositoryBootstrapPullRequestResponse\x12=\n" +
	"\n" +
	"repository\x18\x01 \x01(\v2\x1d.kodex.projects.v1.RepositoryR\n" +
	"repository\x12]\n" +
	"\x0fprovider_target\x18\x02 \x01(\v24.kodex.projects.v1.RepositoryBootstrapProviderTargetR\x0eproviderTarget\x12\x1f\n" +
	"\vbase_branch\x18\x03 \x01(\tR\n" +
	"baseBranch\x12)\n" +
	"\x10bootstrap_branch\x18\x04 \x01(\tR\x0fbootstrapBranch\x12=\n" +
	"\x1bservices_policy_source_path\x18\x05 \x01(\tR\x18servicesPolicySourcePath\x12?\n" +
	"\x1cservices_policy_content_hash\x18\x06 \x01(\tR\x19servicesPolicyContentHash\x127\n" +
	"\x15provider_operation_id\x18\a \x01(\tH\x00R\x13providerOperationId\x88\x01\x01\x123\n" +
	"\x13provider_result_ref\x18\b \x01(\tH\x01R\x11providerResultRef\x88\x01\x01\x12K\n" +
	" provider_work_item_projection_id\x18\t \x01(\tH\x02R\x1cproviderWorkItemProjectionId\x88\x01\x01\x12-\n" +
	"\x10provider_web_url\x18\n" +
	" \x01(\tH\x03R\x0eproviderWebUrl\x88\x01\x01\x121\n" +
	"\x12provider_object_id\x18\v \x01(\tH\x04R\x10providerObjectId\x88\x01\x01B\x18\n" +
	"\x16_provider_operation_idB\x16\n" +
	"\x14_provider_result_refB#\n" +
	"!_provider_work_item_projection_idB\x13\n" +
	"\x11_provider_web_urlB\x15\n" +
	"\x13_provider_object_id\"m\n" +
	"\x14GetRepositoryRequest\x12#\n" +
	"\rrepository_id\x18\x01 \x01(\tR\frepositoryId\x120\n" +
	"\x04meta\x18\x02 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\xdf\x01\n" +
	"\x17ListRepositoriesRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12?\n" +
	"\bstatuses\x18\x02 \x03(\x0e2#.kodex.projects.v1.RepositoryStatusR\bstatuses\x122\n" +
	"\x04page\x18\x03 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\x04 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\x92\x01\n" +
	"\x18ListRepositoriesResponse\x12A\n" +
	"\frepositories\x18\x01 \x03(\v2\x1d.kodex.projects.v1.RepositoryR\frepositories\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\x91\x05\n" +
	"\x1bImportServicesPolicyRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x125\n" +
	"\x14source_repository_id\x18\x02 \x01(\tH\x00R\x12sourceRepositoryId\x88\x01\x01\x12\x1f\n" +
	"\vsource_path\x18\x03 \x01(\tR\n" +
	"sourcePath\x12\"\n" +
	"\n" +
	"source_ref\x18\x04 \x01(\tH\x01R\tsourceRef\x88\x01\x01\x12*\n" +
	"\x11source_commit_sha\x18\x05 \x01(\tR\x0fsourceCommitSha\x12+\n" +
	"\x0fsource_blob_sha\x18\x06 \x01(\tH\x02R\rsourceBlobSha\x88\x01\x01\x12!\n" +
	"\fcontent_hash\x18\a \x01(\tR\vcontentHash\x124\n" +
	"\x16validated_payload_json\x18\b \x01(\tR\x14validatedPayloadJson\x12U\n" +
	"\x13service_descriptors\x18\t \x03(\v2$.kodex.projects.v1.ServiceDescriptorR\x12serviceDescriptors\x12^\n" +
	"\x11validation_status\x18\n" +
	" \x01(\x0e21.kodex.projects.v1.ServicesPolicyValidationStatusR\x10validationStatus\x122\n" +
	"\x04meta\x18\v \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x17\n" +
	"\x15_source_repository_idB\r\n" +
	"\v_source_refB\x12\n" +
	"\x10_source_blob_sha\"\x92\a\n" +
	"$ImportBootstrapServicesPolicyRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x02 \x01(\tR\frepositoryId\x12]\n" +
	"\x0fprovider_target\x18\x03 \x01(\v24.kodex.projects.v1.RepositoryBootstrapProviderTargetR\x0eproviderTarget\x12\x1f\n" +
	"\vbase_branch\x18\x04 \x01(\tR\n" +
	"baseBranch\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x05 \x01(\tR\tsourceRef\x12*\n" +
	"\x11source_commit_sha\x18\x06 \x01(\tR\x0fsourceCommitSha\x12+\n" +
	"\x0fsource_blob_sha\x18\a \x01(\tH\x00R\rsourceBlobSha\x88\x01\x01\x12\x1f\n" +
	"\vsource_path\x18\b \x01(\tR\n" +
	"sourcePath\x12!\n" +
	"\fcontent_hash\x18\t \x01(\tR\vcontentHash\x124\n" +
	"\x16validated_payload_json\x18\n" +
	" \x01(\tR\x14validatedPayloadJson\x12%\n" +
	"\x0ewatermark_json\x18\v \x01(\tR\rwatermarkJson\x12K\n" +
	" provider_work_item_projection_id\x18\f \x01(\tH\x01R\x1cproviderWorkItemProjectionId\x88\x01\x01\x12-\n" +
	"\x10provider_web_url\x18\r \x01(\tH\x02R\x0eproviderWebUrl\x88\x01\x01\x121\n" +
	"\x12provider_object_id\x18\x0e \x01(\tH\x03R\x10providerObjectId\x88\x01\x01\x12/\n" +
	"\x11merge_observed_at\x18\x0f \x01(\tH\x04R\x0fmergeObservedAt\x88\x01\x01\x122\n" +
	"\x04meta\x18\x10 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x12\n" +
	"\x10_source_blob_shaB#\n" +
	"!_provider_work_item_projection_idB\x13\n" +
	"\x11_provider_web_urlB\x15\n" +
	"\x13_provider_object_idB\x14\n" +
	"\x12_merge_observed_at\"\xe3\x06\n" +
	"\x1eBootstrapRepositoryMergeSignal\x12 \n" +
	"\tsignal_id\x18\x01 \x01(\tH\x00R\bsignalId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"signal_key\x18\x02 \x01(\tR\tsignalKey\x12\x1f\n" +
	"\vsignal_kind\x18\x03 \x01(\tR\n" +
	"signalKind\x12]\n" +
	"\x0fprovider_target\x18\x04 \x01(\v24.kodex.projects.v1.RepositoryBootstrapProviderTargetR\x0eproviderTarget\x12\x1f\n" +
	"\vbase_branch\x18\x05 \x01(\tR\n" +
	"baseBranch\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x06 \x01(\tR\tsourceRef\x12(\n" +
	"\x10merge_commit_sha\x18\a \x01(\tR\x0emergeCommitSha\x12+\n" +
	"\x0fsource_blob_sha\x18\b \x01(\tH\x01R\rsourceBlobSha\x88\x01\x01\x12)\n" +
	"\x10watermark_digest\x18\t \x01(\tR\x0fwatermarkDigest\x12%\n" +
	"\x0ewatermark_json\x18\n" +
	" \x01(\tR\rwatermarkJson\x12K\n" +
	" provider_work_item_projection_id\x18\v \x01(\tH\x02R\x1cproviderWorkItemProjectionId\x88\x01\x01\x12-\n" +
	"\x10provider_web_url\x18\f \x01(\tH\x03R\x0eproviderWebUrl\x88\x01\x01\x121\n" +
	"\x12provider_object_id\x18\r \x01(\tH\x04R\x10providerObjectId\x88\x01\x01\x12/\n" +
	"\x11merge_observed_at\x18\x0e \x01(\tH\x05R\x0fmergeObservedAt\x88\x01\x01\x12 \n" +
	"\tmerged_at\x18\x0f \x01(\tH\x06R\bmergedAt\x88\x01\x01B\f\n" +
	"\n" +
	"_signal_idB\x12\n" +
	"\x10_source_blob_shaB#\n" +
	"!_provider_work_item_projection_idB\x13\n" +
	"\x11_provider_web_urlB\x15\n" +
	"\x13_provider_object_idB\x14\n" +
	"\x12_merge_observed_atB\f\n" +
	"\n" +
	"_merged_at\"\x99\x02\n" +
	"&CheckedBootstrapServicesPolicyArtifact\x12!\n" +
	"\fartifact_ref\x18\x01 \x01(\tR\vartifactRef\x12'\n" +
	"\x0fartifact_digest\x18\x02 \x01(\tR\x0eartifactDigest\x12)\n" +
	"\x10artifact_version\x18\x03 \x01(\tR\x0fartifactVersion\x12\x1f\n" +
	"\vsource_path\x18\x04 \x01(\tR\n" +
	"sourcePath\x12!\n" +
	"\fcontent_hash\x18\x05 \x01(\tR\vcontentHash\x124\n" +
	"\x16validated_payload_json\x18\x06 \x01(\tR\x14validatedPayloadJson\"\xd6\x02\n" +
	"$ReconcileBootstrapMergeSignalRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x02 \x01(\tR\frepositoryId\x12T\n" +
	"\fmerge_signal\x18\x03 \x01(\v21.kodex.projects.v1.BootstrapRepositoryMergeSignalR\vmergeSignal\x12`\n" +
	"\x0echecked_policy\x18\x04 \x01(\v29.kodex.projects.v1.CheckedBootstrapServicesPolicyArtifactR\rcheckedPolicy\x122\n" +
	"\x04meta\x18\x05 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04meta\"\xe2\x06\n" +
	"\x1dRepositoryAdoptionMergeSignal\x12 \n" +
	"\tsignal_id\x18\x01 \x01(\tH\x00R\bsignalId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"signal_key\x18\x02 \x01(\tR\tsignalKey\x12\x1f\n" +
	"\vsignal_kind\x18\x03 \x01(\tR\n" +
	"signalKind\x12]\n" +
	"\x0fprovider_target\x18\x04 \x01(\v24.kodex.projects.v1.RepositoryBootstrapProviderTargetR\x0eproviderTarget\x12\x1f\n" +
	"\vbase_branch\x18\x05 \x01(\tR\n" +
	"baseBranch\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x06 \x01(\tR\tsourceRef\x12(\n" +
	"\x10merge_commit_sha\x18\a \x01(\tR\x0emergeCommitSha\x12+\n" +
	"\x0fsource_blob_sha\x18\b \x01(\tH\x01R\rsourceBlobSha\x88\x01\x01\x12)\n" +
	"\x10watermark_digest\x18\t \x01(\tR\x0fwatermarkDigest\x12%\n" +
	"\x0ewatermark_json\x18\n" +
	" \x01(\tR\rwatermarkJson\x12K\n" +
	" provider_work_item_projection_id\x18\v \x01(\tH\x02R\x1cproviderWorkItemProjectionId\x88\x01\x01\x12-\n" +
	"\x10provider_web_url\x18\f \x01(\tH\x03R\x0eproviderWebUrl\x88\x01\x01\x121\n" +
	"\x12provider_object_id\x18\r \x01(\tH\x04R\x10providerObjectId\x88\x01\x01\x12/\n" +
	"\x11merge_observed_at\x18\x0e \x01(\tH\x05R\x0fmergeObservedAt\x88\x01\x01\x12 \n" +
	"\tmerged_at\x18\x0f \x01(\tH\x06R\bmergedAt\x88\x01\x01B\f\n" +
	"\n" +
	"_signal_idB\x12\n" +
	"\x10_source_blob_shaB#\n" +
	"!_provider_work_item_projection_idB\x13\n" +
	"\x11_provider_web_urlB\x15\n" +
	"\x13_provider_object_idB\x14\n" +
	"\x12_merge_observed_atB\f\n" +
	"\n" +
	"_merged_at\"\x98\x02\n" +
	"%CheckedAdoptionServicesPolicyArtifact\x12!\n" +
	"\fartifact_ref\x18\x01 \x01(\tR\vartifactRef\x12'\n" +
	"\x0fartifact_digest\x18\x02 \x01(\tR\x0eartifactDigest\x12)\n" +
	"\x10artifact_version\x18\x03 \x01(\tR\x0fartifactVersion\x12\x1f\n" +
	"\vsource_path\x18\x04 \x01(\tR\n" +
	"sourcePath\x12!\n" +
	"\fcontent_hash\x18\x05 \x01(\tR\vcontentHash\x124\n" +
	"\x16validated_payload_json\x18\x06 \x01(\tR\x14validatedPayloadJson\"\xd3\x02\n" +
	"#ReconcileAdoptionMergeSignalRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x02 \x01(\tR\frepositoryId\x12S\n" +
	"\fmerge_signal\x18\x03 \x01(\v20.kodex.projects.v1.RepositoryAdoptionMergeSignalR\vmergeSignal\x12_\n" +
	"\x0echecked_policy\x18\x04 \x01(\v28.kodex.projects.v1.CheckedAdoptionServicesPolicyArtifactR\rcheckedPolicy\x122\n" +
	"\x04meta\x18\x05 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04meta\"\x97\x02\n" +
	"%BootstrapServicesPolicyImportResponse\x12=\n" +
	"\n" +
	"repository\x18\x01 \x01(\v2\x1d.kodex.projects.v1.RepositoryR\n" +
	"repository\x12J\n" +
	"\x0fservices_policy\x18\x02 \x01(\v2!.kodex.projects.v1.ServicesPolicyR\x0eservicesPolicy\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x03 \x01(\tR\tsourceRef\x12*\n" +
	"\x11source_commit_sha\x18\x04 \x01(\tR\x0fsourceCommitSha\x12\x18\n" +
	"\asummary\x18\x05 \x01(\tR\asummary\"d\n" +
	"\x16ServicesPolicyResponse\x12J\n" +
	"\x0fservices_policy\x18\x01 \x01(\v2!.kodex.projects.v1.ServicesPolicyR\x0eservicesPolicy\"\xc0\x02\n" +
	"\x1aGetSelfDeploySignalRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x02 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x121\n" +
	"\x12provider_signal_id\x18\x03 \x01(\tH\x01R\x10providerSignalId\x88\x01\x01\x123\n" +
	"\x13provider_signal_key\x18\x04 \x01(\tH\x02R\x11providerSignalKey\x88\x01\x01\x120\n" +
	"\x04meta\x18\x05 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x10\n" +
	"\x0e_repository_idB\x15\n" +
	"\x13_provider_signal_idB\x16\n" +
	"\x14_provider_signal_key\"\xd0\x01\n" +
	"\x18SelfDeploySignalResponse\x12A\n" +
	"\x06status\x18\x01 \x01(\x0e2).kodex.projects.v1.SelfDeploySignalStatusR\x06status\x12;\n" +
	"\x06signal\x18\x02 \x01(\v2#.kodex.projects.v1.SelfDeploySignalR\x06signal\x12$\n" +
	"\vsafe_reason\x18\x03 \x01(\tH\x00R\n" +
	"safeReason\x88\x01\x01B\x0e\n" +
	"\f_safe_reason\"\x96\b\n" +
	"\x1dGetSelfDeployBuildPlanRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x02 \x01(\tR\frepositoryId\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x03 \x01(\tR\tsourceRef\x12(\n" +
	"\x10merge_commit_sha\x18\x04 \x01(\tR\x0emergeCommitSha\x123\n" +
	"\x13provider_signal_ref\x18\x05 \x01(\tH\x00R\x11providerSignalRef\x88\x01\x01\x121\n" +
	"\x12provider_signal_id\x18\x06 \x01(\tH\x01R\x10providerSignalId\x88\x01\x01\x123\n" +
	"\x13provider_signal_key\x18\a \x01(\tH\x02R\x11providerSignalKey\x88\x01\x01\x122\n" +
	"\x15affected_service_keys\x18\b \x03(\tR\x13affectedServiceKeys\x12E\n" +
	"\x1fexpected_services_policy_digest\x18\t \x01(\tR\x1cexpectedServicesPolicyDigest\x12T\n" +
	"$expected_services_policy_fingerprint\x18\n" +
	" \x01(\tH\x03R!expectedServicesPolicyFingerprint\x88\x01\x01\x12L\n" +
	" expected_services_policy_version\x18\v \x01(\x03H\x04R\x1dexpectedServicesPolicyVersion\x88\x01\x01\x120\n" +
	"\x04meta\x18\f \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\x12u\n" +
	"\x1bmaterialized_build_contexts\x18\r \x03(\v25.kodex.projects.v1.SelfDeployMaterializedBuildContextR\x19materializedBuildContexts\x12J\n" +
	"\x1fexpected_build_plan_fingerprint\x18\x0e \x01(\tH\x05R\x1cexpectedBuildPlanFingerprint\x88\x01\x01B\x16\n" +
	"\x14_provider_signal_refB\x15\n" +
	"\x13_provider_signal_idB\x16\n" +
	"\x14_provider_signal_keyB'\n" +
	"%_expected_services_policy_fingerprintB#\n" +
	"!_expected_services_policy_versionB\"\n" +
	" _expected_build_plan_fingerprint\"\xd5\x01\n" +
	"\x1bSelfDeployBuildPlanResponse\x12D\n" +
	"\x06status\x18\x01 \x01(\x0e2,.kodex.projects.v1.SelfDeployBuildPlanStatusR\x06status\x12:\n" +
	"\x04plan\x18\x02 \x01(\v2&.kodex.projects.v1.SelfDeployBuildPlanR\x04plan\x12$\n" +
	"\vsafe_reason\x18\x03 \x01(\tH\x00R\n" +
	"safeReason\x88\x01\x01B\x0e\n" +
	"\f_safe_reason\"\xc2\b\n" +
	"\x1eGetSelfDeployDeployPlanRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x02 \x01(\tR\frepositoryId\x12\x1d\n" +
	"\n" +
	"source_ref\x18\x03 \x01(\tR\tsourceRef\x12(\n" +
	"\x10merge_commit_sha\x18\x04 \x01(\tR\x0emergeCommitSha\x123\n" +
	"\x13provider_signal_ref\x18\x05 \x01(\tH\x00R\x11providerSignalRef\x88\x01\x01\x122\n" +
	"\x15affected_service_keys\x18\x06 \x03(\tR\x13affectedServiceKeys\x12E\n" +
	"\x1fexpected_services_policy_digest\x18\a \x01(\tR\x1cexpectedServicesPolicyDigest\x12T\n" +
	"$expected_services_policy_fingerprint\x18\b \x01(\tH\x01R!expectedServicesPolicyFingerprint\x88\x01\x01\x12L\n" +
	" expected_services_policy_version\x18\t \x01(\x03H\x02R\x1dexpectedServicesPolicyVersion\x88\x01\x01\x12M\n" +
	"\rbuild_outputs\x18\n" +
	" \x03(\v2(.kodex.projects.v1.SelfDeployBuildOutputR\fbuildOutputs\x12J\n" +
	"\x1fexpected_build_plan_fingerprint\x18\v \x01(\tH\x03R\x1cexpectedBuildPlanFingerprint\x88\x01\x01\x12L\n" +
	" expected_deploy_plan_fingerprint\x18\f \x01(\tH\x04R\x1dexpectedDeployPlanFingerprint\x88\x01\x01\x12u\n" +
	"\x1bmaterialized_build_contexts\x18\r \x03(\v25.kodex.projects.v1.SelfDeployMaterializedBuildContextR\x19materializedBuildContexts\x120\n" +
	"\x04meta\x18\x0e \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x16\n" +
	"\x14_provider_signal_refB'\n" +
	"%_expected_services_policy_fingerprintB#\n" +
	"!_expected_services_policy_versionB\"\n" +
	" _expected_build_plan_fingerprintB#\n" +
	"!_expected_deploy_plan_fingerprint\"\xd8\x01\n" +
	"\x1cSelfDeployDeployPlanResponse\x12E\n" +
	"\x06status\x18\x01 \x01(\x0e2-.kodex.projects.v1.SelfDeployDeployPlanStatusR\x06status\x12;\n" +
	"\x04plan\x18\x02 \x01(\v2'.kodex.projects.v1.SelfDeployDeployPlanR\x04plan\x12$\n" +
	"\vsafe_reason\x18\x03 \x01(\tH\x00R\n" +
	"safeReason\x88\x01\x01B\x0e\n" +
	"\f_safe_reason\"\xb5\x01\n" +
	"\x18GetServicesPolicyRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x121\n" +
	"\x12services_policy_id\x18\x02 \x01(\tH\x00R\x10servicesPolicyId\x88\x01\x01\x120\n" +
	"\x04meta\x18\x03 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x15\n" +
	"\x13_services_policy_id\"\xc1\x02\n" +
	"\x1dListServiceDescriptorsRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x02 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12!\n" +
	"\fservice_keys\x18\x03 \x03(\tR\vserviceKeys\x12<\n" +
	"\bstatuses\x18\x04 \x03(\x0e2 .kodex.projects.v1.ServiceStatusR\bstatuses\x122\n" +
	"\x04page\x18\x05 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\x06 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x10\n" +
	"\x0e_repository_id\"\xac\x01\n" +
	"\x1eListServiceDescriptorsResponse\x12U\n" +
	"\x13service_descriptors\x18\x01 \x03(\v2$.kodex.projects.v1.ServiceDescriptorR\x12serviceDescriptors\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\xf0\x01\n" +
	"\x1fCreatePolicyEditProposalRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x02 \x01(\tR\frepositoryId\x12\x1f\n" +
	"\vsource_path\x18\x03 \x01(\tR\n" +
	"sourcePath\x124\n" +
	"\x16requested_changes_json\x18\x04 \x01(\tR\x14requestedChangesJson\x122\n" +
	"\x04meta\x18\x05 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04meta\"\x99\x01\n" +
	"\x1aPolicyEditProposalResponse\x12\x1f\n" +
	"\vproposal_id\x18\x01 \x01(\tR\n" +
	"proposalId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12#\n" +
	"\rrepository_id\x18\x03 \x01(\tR\frepositoryId\x12\x16\n" +
	"\x06status\x18\x04 \x01(\tR\x06status\"\xb0\x02\n" +
	"\x1bCreatePolicyOverrideRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12L\n" +
	"\vtarget_type\x18\x02 \x01(\x0e2+.kodex.projects.v1.PolicyOverrideTargetTypeR\n" +
	"targetType\x12 \n" +
	"\ttarget_id\x18\x03 \x01(\tH\x00R\btargetId\x88\x01\x01\x12!\n" +
	"\fpayload_json\x18\x04 \x01(\tR\vpayloadJson\x12\x1d\n" +
	"\n" +
	"expires_at\x18\x05 \x01(\tR\texpiresAt\x122\n" +
	"\x04meta\x18\x06 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\f\n" +
	"\n" +
	"_target_id\"\x7f\n" +
	"\x1bCancelPolicyOverrideRequest\x12,\n" +
	"\x12policy_override_id\x18\x01 \x01(\tR\x10policyOverrideId\x122\n" +
	"\x04meta\x18\x02 \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04meta\"d\n" +
	"\x16PolicyOverrideResponse\x12J\n" +
	"\x0fpolicy_override\x18\x01 \x01(\v2!.kodex.projects.v1.PolicyOverrideR\x0epolicyOverride\"\x87\x03\n" +
	"\x1aListPolicyOverridesRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12N\n" +
	"\ftarget_types\x18\x02 \x03(\x0e2+.kodex.projects.v1.PolicyOverrideTargetTypeR\vtargetTypes\x12 \n" +
	"\ttarget_id\x18\x03 \x01(\tH\x00R\btargetId\x88\x01\x01\x12C\n" +
	"\bstatuses\x18\x04 \x03(\x0e2'.kodex.projects.v1.PolicyOverrideStatusR\bstatuses\x12\x1f\n" +
	"\vactive_only\x18\x05 \x01(\bR\n" +
	"activeOnly\x122\n" +
	"\x04page\x18\x06 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\a \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\f\n" +
	"\n" +
	"_target_id\"\xa0\x01\n" +
	"\x1bListPolicyOverridesResponse\x12L\n" +
	"\x10policy_overrides\x18\x01 \x03(\v2!.kodex.projects.v1.PolicyOverrideR\x0fpolicyOverrides\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\xb0\x04\n" +
	"\x1dPutDocumentationSourceRequest\x12;\n" +
	"\x17documentation_source_id\x18\x01 \x01(\tH\x00R\x15documentationSourceId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x03 \x01(\tH\x01R\frepositoryId\x88\x01\x01\x12H\n" +
	"\n" +
	"scope_type\x18\x04 \x01(\x0e2).kodex.projects.v1.DocumentationScopeTypeR\tscopeType\x12\x1e\n" +
	"\bscope_id\x18\x05 \x01(\tH\x02R\ascopeId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"local_path\x18\x06 \x01(\tR\tlocalPath\x12K\n" +
	"\vaccess_mode\x18\a \x01(\x0e2*.kodex.projects.v1.DocumentationAccessModeR\n" +
	"accessMode\x12D\n" +
	"\x06status\x18\b \x01(\x0e2,.kodex.projects.v1.DocumentationSourceStatusR\x06status\x122\n" +
	"\x04meta\x18\t \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x1a\n" +
	"\x18_documentation_source_idB\x10\n" +
	"\x0e_repository_idB\v\n" +
	"\t_scope_id\"x\n" +
	"\x1bDocumentationSourceResponse\x12Y\n" +
	"\x14documentation_source\x18\x01 \x01(\v2&.kodex.projects.v1.DocumentationSourceR\x13documentationSource\"\x89\x01\n" +
	"\x1dGetDocumentationSourceRequest\x126\n" +
	"\x17documentation_source_id\x18\x01 \x01(\tR\x15documentationSourceId\x120\n" +
	"\x04meta\x18\x02 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\xb7\x03\n" +
	"\x1fListDocumentationSourcesRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x02 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12M\n" +
	"\n" +
	"scope_type\x18\x03 \x01(\x0e2).kodex.projects.v1.DocumentationScopeTypeH\x01R\tscopeType\x88\x01\x01\x12\x1e\n" +
	"\bscope_id\x18\x04 \x01(\tH\x02R\ascopeId\x88\x01\x01\x12H\n" +
	"\bstatuses\x18\x05 \x03(\x0e2,.kodex.projects.v1.DocumentationSourceStatusR\bstatuses\x122\n" +
	"\x04page\x18\x06 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\a \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x10\n" +
	"\x0e_repository_idB\r\n" +
	"\v_scope_typeB\v\n" +
	"\t_scope_id\"\xb4\x01\n" +
	" ListDocumentationSourcesResponse\x12[\n" +
	"\x15documentation_sources\x18\x01 \x03(\v2&.kodex.projects.v1.DocumentationSourceR\x14documentationSources\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\xf2\x01\n" +
	"\x19GetWorkspacePolicyRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12%\n" +
	"\x0erepository_ids\x18\x02 \x03(\tR\rrepositoryIds\x12!\n" +
	"\fservice_keys\x18\x03 \x03(\tR\vserviceKeys\x12:\n" +
	"\x19include_guidance_packages\x18\x04 \x01(\bR\x17includeGuidancePackages\x120\n" +
	"\x04meta\x18\x05 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"h\n" +
	"\x17WorkspacePolicyResponse\x12M\n" +
	"\x10workspace_policy\x18\x01 \x01(\v2\".kodex.projects.v1.WorkspacePolicyR\x0fworkspacePolicy\"\xab\x03\n" +
	"\x15PutBranchRulesRequest\x12+\n" +
	"\x0fbranch_rules_id\x18\x01 \x01(\tH\x00R\rbranchRulesId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x03 \x01(\tH\x01R\frepositoryId\x88\x01\x01\x12\x18\n" +
	"\apattern\x18\x04 \x01(\tR\apattern\x12'\n" +
	"\x0frequired_checks\x18\x05 \x03(\tR\x0erequiredChecks\x12A\n" +
	"\fmerge_policy\x18\x06 \x01(\x0e2\x1e.kodex.projects.v1.MergePolicyR\vmergePolicy\x12<\n" +
	"\x06status\x18\a \x01(\x0e2$.kodex.projects.v1.BranchRulesStatusR\x06status\x122\n" +
	"\x04meta\x18\b \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x12\n" +
	"\x10_branch_rules_idB\x10\n" +
	"\x0e_repository_id\"X\n" +
	"\x13BranchRulesResponse\x12A\n" +
	"\fbranch_rules\x18\x01 \x01(\v2\x1e.kodex.projects.v1.BranchRulesR\vbranchRules\"q\n" +
	"\x15GetBranchRulesRequest\x12&\n" +
	"\x0fbranch_rules_id\x18\x01 \x01(\tR\rbranchRulesId\x120\n" +
	"\x04meta\x18\x02 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\x9b\x02\n" +
	"\x16ListBranchRulesRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x02 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12@\n" +
	"\bstatuses\x18\x03 \x03(\x0e2$.kodex.projects.v1.BranchRulesStatusR\bstatuses\x122\n" +
	"\x04page\x18\x04 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\x05 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x10\n" +
	"\x0e_repository_id\"\x91\x01\n" +
	"\x17ListBranchRulesResponse\x12A\n" +
	"\fbranch_rules\x18\x01 \x03(\v2\x1e.kodex.projects.v1.BranchRulesR\vbranchRules\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\x8d\x04\n" +
	"\x17PutReleasePolicyRequest\x12/\n" +
	"\x11release_policy_id\x18\x01 \x01(\tH\x00R\x0freleasePolicyId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12%\n" +
	"\x0ebranch_pattern\x18\x04 \x01(\tR\rbranchPattern\x12M\n" +
	"\x10rollout_strategy\x18\x05 \x01(\x0e2\".kodex.projects.v1.RolloutStrategyR\x0frolloutStrategy\x12J\n" +
	"\x0frollback_policy\x18\x06 \x01(\x0e2!.kodex.projects.v1.RollbackPolicyR\x0erollbackPolicy\x12-\n" +
	"\x10risk_profile_ref\x18\a \x01(\tH\x01R\x0eriskProfileRef\x88\x01\x01\x12>\n" +
	"\x06status\x18\b \x01(\x0e2&.kodex.projects.v1.ReleasePolicyStatusR\x06status\x122\n" +
	"\x04meta\x18\t \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x14\n" +
	"\x12_release_policy_idB\x13\n" +
	"\x11_risk_profile_ref\"`\n" +
	"\x15ReleasePolicyResponse\x12G\n" +
	"\x0erelease_policy\x18\x01 \x01(\v2 .kodex.projects.v1.ReleasePolicyR\rreleasePolicy\"w\n" +
	"\x17GetReleasePolicyRequest\x12*\n" +
	"\x11release_policy_id\x18\x01 \x01(\tR\x0freleasePolicyId\x120\n" +
	"\x04meta\x18\x02 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\xe5\x01\n" +
	"\x1aListReleasePoliciesRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12B\n" +
	"\bstatuses\x18\x02 \x03(\x0e2&.kodex.projects.v1.ReleasePolicyStatusR\bstatuses\x122\n" +
	"\x04page\x18\x03 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\x04 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\x9f\x01\n" +
	"\x1bListReleasePoliciesResponse\x12K\n" +
	"\x10release_policies\x18\x01 \x03(\v2 .kodex.projects.v1.ReleasePolicyR\x0freleasePolicies\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\xd2\x02\n" +
	"\x15PutReleaseLineRequest\x12+\n" +
	"\x0frelease_line_id\x18\x01 \x01(\tH\x00R\rreleaseLineId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12*\n" +
	"\x11release_policy_id\x18\x03 \x01(\tR\x0freleasePolicyId\x12\x12\n" +
	"\x04name\x18\x04 \x01(\tR\x04name\x12%\n" +
	"\x0ebranch_pattern\x18\x05 \x01(\tR\rbranchPattern\x12>\n" +
	"\x06status\x18\x06 \x01(\x0e2&.kodex.projects.v1.ReleasePolicyStatusR\x06status\x122\n" +
	"\x04meta\x18\a \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x12\n" +
	"\x10_release_line_id\"X\n" +
	"\x13ReleaseLineResponse\x12A\n" +
	"\frelease_line\x18\x01 \x01(\v2\x1e.kodex.projects.v1.ReleaseLineR\vreleaseLine\"q\n" +
	"\x15GetReleaseLineRequest\x12&\n" +
	"\x0frelease_line_id\x18\x01 \x01(\tR\rreleaseLineId\x120\n" +
	"\x04meta\x18\x02 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\xa9\x02\n" +
	"\x17ListReleaseLinesRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12/\n" +
	"\x11release_policy_id\x18\x02 \x01(\tH\x00R\x0freleasePolicyId\x88\x01\x01\x12B\n" +
	"\bstatuses\x18\x03 \x03(\x0e2&.kodex.projects.v1.ReleasePolicyStatusR\bstatuses\x122\n" +
	"\x04page\x18\x04 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\x05 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x14\n" +
	"\x12_release_policy_id\"\x94\x01\n" +
	"\x18ListReleaseLinesResponse\x12C\n" +
	"\rrelease_lines\x18\x01 \x03(\v2\x1e.kodex.projects.v1.ReleaseLineR\freleaseLines\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page\"\xa1\x03\n" +
	"\x19PutPlacementPolicyRequest\x123\n" +
	"\x13placement_policy_id\x18\x01 \x01(\tH\x00R\x11placementPolicyId\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x03 \x01(\tH\x01R\frepositoryId\x88\x01\x01\x12$\n" +
	"\vservice_key\x18\x04 \x01(\tH\x02R\n" +
	"serviceKey\x88\x01\x01\x120\n" +
	"\x14allowed_cluster_refs\x18\x05 \x03(\tR\x12allowedClusterRefs\x12@\n" +
	"\x06status\x18\x06 \x01(\x0e2(.kodex.projects.v1.PlacementPolicyStatusR\x06status\x122\n" +
	"\x04meta\x18\a \x01(\v2\x1e.kodex.projects.v1.CommandMetaR\x04metaB\x16\n" +
	"\x14_placement_policy_idB\x10\n" +
	"\x0e_repository_idB\x0e\n" +
	"\f_service_key\"h\n" +
	"\x17PlacementPolicyResponse\x12M\n" +
	"\x10placement_policy\x18\x01 \x01(\v2\".kodex.projects.v1.PlacementPolicyR\x0fplacementPolicy\"}\n" +
	"\x19GetPlacementPolicyRequest\x12.\n" +
	"\x13placement_policy_id\x18\x01 \x01(\tR\x11placementPolicyId\x120\n" +
	"\x04meta\x18\x02 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04meta\"\xdb\x02\n" +
	"\x1cListPlacementPoliciesRequest\x12\x1d\n" +
	"\n" +
	"project_id\x18\x01 \x01(\tR\tprojectId\x12(\n" +
	"\rrepository_id\x18\x02 \x01(\tH\x00R\frepositoryId\x88\x01\x01\x12$\n" +
	"\vservice_key\x18\x03 \x01(\tH\x01R\n" +
	"serviceKey\x88\x01\x01\x12D\n" +
	"\bstatuses\x18\x04 \x03(\x0e2(.kodex.projects.v1.PlacementPolicyStatusR\bstatuses\x122\n" +
	"\x04page\x18\x05 \x01(\v2\x1e.kodex.projects.v1.PageRequestR\x04page\x120\n" +
	"\x04meta\x18\x06 \x01(\v2\x1c.kodex.projects.v1.QueryMetaR\x04metaB\x10\n" +
	"\x0e_repository_idB\x0e\n" +
	"\f_service_key\"\xa7\x01\n" +
	"\x1dListPlacementPoliciesResponse\x12Q\n" +
	"\x12placement_policies\x18\x01 \x03(\v2\".kodex.projects.v1.PlacementPolicyR\x11placementPolicies\x123\n" +
	"\x04page\x18\x02 \x01(\v2\x1f.kodex.projects.v1.PageResponseR\x04page*\x84\x01\n" +
	"\rProjectStatus\x12\x1e\n" +
	"\x1aPROJECT_STATUS_UNSPECIFIED\x10\x00\x12\x19\n" +
	"\x15PROJECT_STATUS_ACTIVE\x10\x01\x12\x1b\n" +
	"\x17PROJECT_STATUS_ARCHIVED\x10\x02\x12\x1b\n" +
	"\x17PROJECT_STATUS_DISABLED\x10\x03*y\n" +
	"\x12RepositoryProvider\x12#\n" +
	"\x1fREPOSITORY_PROVIDER_UNSPECIFIED\x10\x00\x12\x1e\n" +
	"\x1aREPOSITORY_PROVIDER_GITHUB\x10\x01\x12\x1e\n" +
	"\x1aREPOSITORY_PROVIDER_GITLAB\x10\x02*\xb1\x01\n" +
	"\x10RepositoryStatus\x12!\n" +
	"\x1dREPOSITORY_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n" +
	"\x18REPOSITORY_STATUS_ACTIVE\x10\x01\x12\x1d\n" +
	"\x19REPOSITORY_STATUS_PENDING\x10\x02\x12\x1d\n" +
	"\x19REPOSITORY_STATUS_BLOCKED\x10\x03\x12\x1e\n" +
	"\x1aREPOSITORY_STATUS_ARCHIVED\x10\x04*\x92\x01\n" +
	"\x13RepositoryOwnerKind\x12%\n" +
	"!REPOSITORY_OWNER_KIND_UNSPECIFIED\x10\x00\x12&\n" +
	"\"REPOSITORY_OWNER_KIND_ORGANIZATION\x10\x01\x12,\n" +
	"(REPOSITORY_OWNER_KIND_AUTHENTICATED_USER\x10\x02*\xa6\x01\n" +
	"\x14RepositoryVisibility\x12%\n" +
	"!REPOSITORY_VISIBILITY_UNSPECIFIED\x10\x00\x12 \n" +
	"\x1cREPOSITORY_VISIBILITY_PUBLIC\x10\x01\x12!\n" +
	"\x1dREPOSITORY_VISIBILITY_PRIVATE\x10\x02\x12\"\n" +
	"\x1eREPOSITORY_VISIBILITY_INTERNAL\x10\x03*\xdc\x01\n" +
	"\x1eServicesPolicyValidationStatus\x121\n" +
	"-SERVICES_POLICY_VALIDATION_STATUS_UNSPECIFIED\x10\x00\x12+\n" +
	"'SERVICES_POLICY_VALIDATION_STATUS_VALID\x10\x01\x12-\n" +
	")SERVICES_POLICY_VALIDATION_STATUS_INVALID\x10\x02\x12+\n" +
	"'SERVICES_POLICY_VALIDATION_STATUS_STALE\x10\x03*\x90\x02\n" +
	"\x1eServicesPolicyProjectionStatus\x121\n" +
	"-SERVICES_POLICY_PROJECTION_STATUS_UNSPECIFIED\x10\x00\x12,\n" +
	"(SERVICES_POLICY_PROJECTION_STATUS_SYNCED\x10\x01\x12-\n" +
	")SERVICES_POLICY_PROJECTION_STATUS_PENDING\x10\x02\x12,\n" +
	"(SERVICES_POLICY_PROJECTION_STATUS_FAILED\x10\x03\x120\n" +
	",SERVICES_POLICY_PROJECTION_STATUS_OVERRIDDEN\x10\x04*\xb9\x04\n" +
	"\x16SelfDeploySignalStatus\x12)\n" +
	"%SELF_DEPLOY_SIGNAL_STATUS_UNSPECIFIED\x10\x00\x12#\n" +
	"\x1fSELF_DEPLOY_SIGNAL_STATUS_READY\x10\x01\x12=\n" +
	"9SELF_DEPLOY_SIGNAL_STATUS_NEEDS_SERVICES_POLICY_RECONCILE\x10\x02\x127\n" +
	"3SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_FOUND\x10\x03\x127\n" +
	"3SELF_DEPLOY_SIGNAL_STATUS_PROVIDER_SIGNAL_NOT_READY\x10\x04\x12:\n" +
	"6SELF_DEPLOY_SIGNAL_STATUS_REPOSITORY_BINDING_NOT_FOUND\x10\x05\x127\n" +
	"3SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_FOUND\x10\x06\x127\n" +
	"3SELF_DEPLOY_SIGNAL_STATUS_SERVICES_POLICY_NOT_READY\x10\a\x121\n" +
	"-SELF_DEPLOY_SIGNAL_STATUS_NOT_DEPLOY_RELEVANT\x10\b\x12=\n" +
	"9SELF_DEPLOY_SIGNAL_STATUS_NEEDS_REPOSITORY_CHANGE_SUMMARY\x10\t*\xf3\x03\n" +
	"\x19SelfDeployBuildPlanStatus\x12-\n" +
	")SELF_DEPLOY_BUILD_PLAN_STATUS_UNSPECIFIED\x10\x00\x12'\n" +
	"#SELF_DEPLOY_BUILD_PLAN_STATUS_READY\x10\x01\x128\n" +
	"4SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_PLAN_UNAVAILABLE\x10\x02\x12.\n" +
	"*SELF_DEPLOY_BUILD_PLAN_STATUS_POLICY_STALE\x10\x03\x123\n" +
	"/SELF_DEPLOY_BUILD_PLAN_STATUS_SERVICE_NOT_FOUND\x10\x04\x12/\n" +
	"+SELF_DEPLOY_BUILD_PLAN_STATUS_INVALID_INPUT\x10\x05\x12;\n" +
	"7SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_UNAVAILABLE\x10\x06\x128\n" +
	"4SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_REQUIRED\x10\a\x127\n" +
	"3SELF_DEPLOY_BUILD_PLAN_STATUS_BUILD_CONTEXT_INVALID\x10\b*\xbd\x02\n" +
	"\x1dSelfDeployBuildPlanItemStatus\x122\n" +
	".SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_UNSPECIFIED\x10\x00\x12,\n" +
	"(SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_READY\x10\x01\x12=\n" +
	"9SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_REQUIRED\x10\x02\x12<\n" +
	"8SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_CONTEXT_INVALID\x10\x03\x12=\n" +
	"9SELF_DEPLOY_BUILD_PLAN_ITEM_STATUS_BUILD_PLAN_UNAVAILABLE\x10\x04*\xb8\x03\n" +
	"\x1aSelfDeployDeployPlanStatus\x12.\n" +
	"*SELF_DEPLOY_DEPLOY_PLAN_STATUS_UNSPECIFIED\x10\x00\x12(\n" +
	"$SELF_DEPLOY_DEPLOY_PLAN_STATUS_READY\x10\x01\x12:\n" +
	"6SELF_DEPLOY_DEPLOY_PLAN_STATUS_DEPLOY_PLAN_UNAVAILABLE\x10\x02\x12/\n" +
	"+SELF_DEPLOY_DEPLOY_PLAN_STATUS_POLICY_STALE\x10\x03\x124\n" +
	"0SELF_DEPLOY_DEPLOY_PLAN_STATUS_SERVICE_NOT_FOUND\x10\x04\x120\n" +
	",SELF_DEPLOY_DEPLOY_PLAN_STATUS_INVALID_INPUT\x10\x05\x122\n" +
	".SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_NOT_READY\x10\x06\x127\n" +
	"3SELF_DEPLOY_DEPLOY_PLAN_STATUS_BUILD_OUTPUT_INVALID\x10\a*\xbc\x02\n" +
	"\x1eSelfDeployDeployPlanItemStatus\x123\n" +
	"/SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_UNSPECIFIED\x10\x00\x12-\n" +
	")SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_READY\x10\x01\x127\n" +
	"3SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_NOT_READY\x10\x02\x12<\n" +
	"8SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_BUILD_OUTPUT_INVALID\x10\x03\x12?\n" +
	";SELF_DEPLOY_DEPLOY_PLAN_ITEM_STATUS_DEPLOY_PLAN_UNAVAILABLE\x10\x04*\xd0\x03\n" +
	"\x16SelfDeployPathCategory\x12)\n" +
	"%SELF_DEPLOY_PATH_CATEGORY_UNSPECIFIED\x10\x00\x12-\n" +
	")SELF_DEPLOY_PATH_CATEGORY_SERVICES_POLICY\x10\x01\x12,\n" +
	"(SELF_DEPLOY_PATH_CATEGORY_SERVICE_SOURCE\x10\x02\x12,\n" +
	"(SELF_DEPLOY_PATH_CATEGORY_SERVICE_CONFIG\x10\x03\x12-\n" +
	")SELF_DEPLOY_PATH_CATEGORY_DEPLOY_MANIFEST\x10\x04\x12,\n" +
	"(SELF_DEPLOY_PATH_CATEGORY_RUNTIME_CONFIG\x10\x05\x12+\n" +
	"'SELF_DEPLOY_PATH_CATEGORY_DOCUMENTATION\x10\x06\x12\"\n" +
	"\x1eSELF_DEPLOY_PATH_CATEGORY_TEST\x10\a\x12-\n" +
	")SELF_DEPLOY_PATH_CATEGORY_PLATFORM_POLICY\x10\b\x12#\n" +
	"\x1fSELF_DEPLOY_PATH_CATEGORY_OTHER\x10\t*\xf4\x01\n" +
	" SelfDeployExpectedRuntimeJobType\x125\n" +
	"1SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_UNSPECIFIED\x10\x00\x12/\n" +
	"+SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_BUILD\x10\x01\x120\n" +
	",SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_DEPLOY\x10\x02\x126\n" +
	"2SELF_DEPLOY_EXPECTED_RUNTIME_JOB_TYPE_HEALTH_CHECK\x10\x03*\xcb\x01\n" +
	"\vServiceKind\x12\x1c\n" +
	"\x18SERVICE_KIND_UNSPECIFIED\x10\x00\x12\x18\n" +
	"\x14SERVICE_KIND_BACKEND\x10\x01\x12\x19\n" +
	"\x15SERVICE_KIND_FRONTEND\x10\x02\x12\x17\n" +
	"\x13SERVICE_KIND_WORKER\x10\x03\x12\x1e\n" +
	"\x1aSERVICE_KIND_DOCUMENTATION\x10\x04\x12\x18\n" +
	"\x14SERVICE_KIND_PACKAGE\x10\x05\x12\x16\n" +
	"\x12SERVICE_KIND_OTHER\x10\x06*\x81\x01\n" +
	"\rServiceStatus\x12\x1e\n" +
	"\x1aSERVICE_STATUS_UNSPECIFIED\x10\x00\x12\x19\n" +
	"\x15SERVICE_STATUS_ACTIVE\x10\x01\x12\x1b\n" +
	"\x17SERVICE_STATUS_DISABLED\x10\x02\x12\x18\n" +
	"\x14SERVICE_STATUS_STALE\x10\x03*\xe2\x01\n" +
	"\x16DocumentationScopeType\x12(\n" +
	"$DOCUMENTATION_SCOPE_TYPE_UNSPECIFIED\x10\x00\x12$\n" +
	" DOCUMENTATION_SCOPE_TYPE_PROJECT\x10\x01\x12$\n" +
	" DOCUMENTATION_SCOPE_TYPE_SERVICE\x10\x02\x12'\n" +
	"#DOCUMENTATION_SCOPE_TYPE_DEPENDENCY\x10\x03\x12)\n" +
	"%DOCUMENTATION_SCOPE_TYPE_GUIDANCE_REF\x10\x04*\x8d\x01\n" +
	"\x17DocumentationAccessMode\x12)\n" +
	"%DOCUMENTATION_ACCESS_MODE_UNSPECIFIED\x10\x00\x12\"\n" +
	"\x1eDOCUMENTATION_ACCESS_MODE_READ\x10\x01\x12#\n" +
	"\x1fDOCUMENTATION_ACCESS_MODE_WRITE\x10\x02*q\n" +
	"\x10SourceAccessMode\x12\"\n" +
	"\x1eSOURCE_ACCESS_MODE_UNSPECIFIED\x10\x00\x12\x1b\n" +
	"\x17SOURCE_ACCESS_MODE_READ\x10\x01\x12\x1c\n" +
	"\x18SOURCE_ACCESS_MODE_WRITE\x10\x02*\xc3\x01\n" +
	"\x19DocumentationSourceStatus\x12+\n" +
	"'DOCUMENTATION_SOURCE_STATUS_UNSPECIFIED\x10\x00\x12&\n" +
	"\"DOCUMENTATION_SOURCE_STATUS_ACTIVE\x10\x01\x12(\n" +
	"$DOCUMENTATION_SOURCE_STATUS_DISABLED\x10\x02\x12'\n" +
	"#DOCUMENTATION_SOURCE_STATUS_BLOCKED\x10\x03*\x8e\x01\n" +
	"\vMergePolicy\x12\x1c\n" +
	"\x18MERGE_POLICY_UNSPECIFIED\x10\x00\x12\x16\n" +
	"\x12MERGE_POLICY_MERGE\x10\x01\x12\x17\n" +
	"\x13MERGE_POLICY_SQUASH\x10\x02\x12\x17\n" +
	"\x13MERGE_POLICY_REBASE\x10\x03\x12\x17\n" +
	"\x13MERGE_POLICY_MANUAL\x10\x04*z\n" +
	"\x11BranchRulesStatus\x12#\n" +
	"\x1fBRANCH_RULES_STATUS_UNSPECIFIED\x10\x00\x12\x1e\n" +
	"\x1aBRANCH_RULES_STATUS_ACTIVE\x10\x01\x12 \n" +
	"\x1cBRANCH_RULES_STATUS_DISABLED\x10\x02*\x8a\x01\n" +
	"\x0fRolloutStrategy\x12 \n" +
	"\x1cROLLOUT_STRATEGY_UNSPECIFIED\x10\x00\x12\x1b\n" +
	"\x17ROLLOUT_STRATEGY_DIRECT\x10\x01\x12\x1b\n" +
	"\x17ROLLOUT_STRATEGY_STAGED\x10\x02\x12\x1b\n" +
	"\x17ROLLOUT_STRATEGY_CANARY\x10\x03*\x9c\x01\n" +
	"\x0eRollbackPolicy\x12\x1f\n" +
	"\x1bROLLBACK_POLICY_UNSPECIFIED\x10\x00\x12\x1a\n" +
	"\x16ROLLBACK_POLICY_MANUAL\x10\x01\x12%\n" +
	"!ROLLBACK_POLICY_AUTOMATIC_ON_GATE\x10\x02\x12&\n" +
	"\"ROLLBACK_POLICY_AUTOMATIC_ON_ALERT\x10\x03*\xa6\x01\n" +
	"\x13ReleasePolicyStatus\x12%\n" +
	"!RELEASE_POLICY_STATUS_UNSPECIFIED\x10\x00\x12 \n" +
	"\x1cRELEASE_POLICY_STATUS_ACTIVE\x10\x01\x12\"\n" +
	"\x1eRELEASE_POLICY_STATUS_DISABLED\x10\x02\x12\"\n" +
	"\x1eRELEASE_POLICY_STATUS_ARCHIVED\x10\x03*\x8a\x01\n" +
	"\x15PlacementPolicyStatus\x12'\n" +
	"#PLACEMENT_POLICY_STATUS_UNSPECIFIED\x10\x00\x12\"\n" +
	"\x1ePLACEMENT_POLICY_STATUS_ACTIVE\x10\x01\x12$\n" +
	" PLACEMENT_POLICY_STATUS_DISABLED\x10\x02*\xec\x02\n" +
	"\x18PolicyOverrideTargetType\x12+\n" +
	"'POLICY_OVERRIDE_TARGET_TYPE_UNSPECIFIED\x10\x00\x12/\n" +
	"+POLICY_OVERRIDE_TARGET_TYPE_SERVICES_POLICY\x10\x01\x12,\n" +
	"(POLICY_OVERRIDE_TARGET_TYPE_BRANCH_RULES\x10\x02\x12.\n" +
	"*POLICY_OVERRIDE_TARGET_TYPE_RELEASE_POLICY\x10\x03\x120\n" +
	",POLICY_OVERRIDE_TARGET_TYPE_PLACEMENT_POLICY\x10\x04\x124\n" +
	"0POLICY_OVERRIDE_TARGET_TYPE_DOCUMENTATION_SOURCE\x10\x05\x12,\n" +
	"(POLICY_OVERRIDE_TARGET_TYPE_RELEASE_LINE\x10\x06*\xab\x01\n" +
	"\x14PolicyOverrideStatus\x12&\n" +
	"\"POLICY_OVERRIDE_STATUS_UNSPECIFIED\x10\x00\x12!\n" +
	"\x1dPOLICY_OVERRIDE_STATUS_ACTIVE\x10\x01\x12\"\n" +
	"\x1ePOLICY_OVERRIDE_STATUS_EXPIRED\x10\x02\x12$\n" +
	" POLICY_OVERRIDE_STATUS_CANCELLED\x10\x032\x99$\n" +
	"\x15ProjectCatalogService\x12\\\n" +
	"\rCreateProject\x12'.kodex.projects.v1.CreateProjectRequest\x1a\".kodex.projects.v1.ProjectResponse\x12\\\n" +
	"\rUpdateProject\x12'.kodex.projects.v1.UpdateProjectRequest\x1a\".kodex.projects.v1.ProjectResponse\x12V\n" +
	"\n" +
	"GetProject\x12$.kodex.projects.v1.GetProjectRequest\x1a\".kodex.projects.v1.ProjectResponse\x12_\n" +
	"\fListProjects\x12&.kodex.projects.v1.ListProjectsRequest\x1a'.kodex.projects.v1.ListProjectsResponse\x12e\n" +
	"\x10AttachRepository\x12*.kodex.projects.v1.AttachRepositoryRequest\x1a%.kodex.projects.v1.RepositoryResponse\x12\x83\x01\n" +
	"\x18CreateProviderRepository\x122.kodex.projects.v1.CreateProviderRepositoryRequest\x1a3.kodex.projects.v1.RepositoryProviderCreateResponse\x12\xa1\x01\n" +
	"$CreateRepositoryBootstrapPullRequest\x12>.kodex.projects.v1.CreateRepositoryBootstrapPullRequestRequest\x1a9.kodex.projects.v1.RepositoryBootstrapPullRequestResponse\x12e\n" +
	"\x10UpdateRepository\x12*.kodex.projects.v1.UpdateRepositoryRequest\x1a%.kodex.projects.v1.RepositoryResponse\x12e\n" +
	"\x10DetachRepository\x12*.kodex.projects.v1.DetachRepositoryRequest\x1a%.kodex.projects.v1.RepositoryResponse\x12_\n" +
	"\rGetRepository\x12'.kodex.projects.v1.GetRepositoryRequest\x1a%.kodex.projects.v1.RepositoryResponse\x12k\n" +
	"\x10ListRepositories\x12*.kodex.projects.v1.ListRepositoriesRequest\x1a+.kodex.projects.v1.ListRepositoriesResponse\x12q\n" +
	"\x14ImportServicesPolicy\x12..kodex.projects.v1.ImportServicesPolicyRequest\x1a).kodex.projects.v1.ServicesPolicyResponse\x12\x92\x01\n" +
	"\x1dImportBootstrapServicesPolicy\x127.kodex.projects.v1.ImportBootstrapServicesPolicyRequest\x1a8.kodex.projects.v1.BootstrapServicesPolicyImportResponse\x12\x92\x01\n" +
	"\x1dReconcileBootstrapMergeSignal\x127.kodex.projects.v1.ReconcileBootstrapMergeSignalRequest\x1a8.kodex.projects.v1.BootstrapServicesPolicyImportResponse\x12\x90\x01\n" +
	"\x1cReconcileAdoptionMergeSignal\x126.kodex.projects.v1.ReconcileAdoptionMergeSignalRequest\x1a8.kodex.projects.v1.BootstrapServicesPolicyImportResponse\x12q\n" +
	"\x13GetSelfDeploySignal\x12-.kodex.projects.v1.GetSelfDeploySignalRequest\x1a+.kodex.projects.v1.SelfDeploySignalResponse\x12z\n" +
	"\x16GetSelfDeployBuildPlan\x120.kodex.projects.v1.GetSelfDeployBuildPlanRequest\x1a..kodex.projects.v1.SelfDeployBuildPlanResponse\x12}\n" +
	"\x17GetSelfDeployDeployPlan\x121.kodex.projects.v1.GetSelfDeployDeployPlanRequest\x1a/.kodex.projects.v1.SelfDeployDeployPlanResponse\x12k\n" +
	"\x11GetServicesPolicy\x12+.kodex.projects.v1.GetServicesPolicyRequest\x1a).kodex.projects.v1.ServicesPolicyResponse\x12}\n" +
	"\x16ListServiceDescriptors\x120.kodex.projects.v1.ListServiceDescriptorsRequest\x1a1.kodex.projects.v1.ListServiceDescriptorsResponse\x12}\n" +
	"\x18CreatePolicyEditProposal\x122.kodex.projects.v1.CreatePolicyEditProposalRequest\x1a-.kodex.projects.v1.PolicyEditProposalResponse\x12q\n" +
	"\x14CreatePolicyOverride\x12..kodex.projects.v1.CreatePolicyOverrideRequest\x1a).kodex.projects.v1.PolicyOverrideResponse\x12q\n" +
	"\x14CancelPolicyOverride\x12..kodex.projects.v1.CancelPolicyOverrideRequest\x1a).kodex.projects.v1.PolicyOverrideResponse\x12t\n" +
	"\x13ListPolicyOverrides\x12-.kodex.projects.v1.ListPolicyOverridesRequest\x1a..kodex.projects.v1.ListPolicyOverridesResponse\x12z\n" +
	"\x16PutDocumentationSource\x120.kodex.projects.v1.PutDocumentationSourceRequest\x1a..kodex.projects.v1.DocumentationSourceResponse\x12z\n" +
	"\x16GetDocumentationSource\x120.kodex.projects.v1.GetDocumentationSourceRequest\x1a..kodex.projects.v1.DocumentationSourceResponse\x12\x83\x01\n" +
	"\x18ListDocumentationSources\x122.kodex.projects.v1.ListDocumentationSourcesRequest\x1a3.kodex.projects.v1.ListDocumentationSourcesResponse\x12n\n" +
	"\x12GetWorkspacePolicy\x12,.kodex.projects.v1.GetWorkspacePolicyRequest\x1a*.kodex.projects.v1.WorkspacePolicyResponse\x12b\n" +
	"\x0ePutBranchRules\x12(.kodex.projects.v1.PutBranchRulesRequest\x1a&.kodex.projects.v1.BranchRulesResponse\x12b\n" +
	"\x0eGetBranchRules\x12(.kodex.projects.v1.GetBranchRulesRequest\x1a&.kodex.projects.v1.BranchRulesResponse\x12h\n" +
	"\x0fListBranchRules\x12).kodex.projects.v1.ListBranchRulesRequest\x1a*.kodex.projects.v1.ListBranchRulesResponse\x12h\n" +
	"\x10PutReleasePolicy\x12*.kodex.projects.v1.PutReleasePolicyRequest\x1a(.kodex.projects.v1.ReleasePolicyResponse\x12h\n" +
	"\x10GetReleasePolicy\x12*.kodex.projects.v1.GetReleasePolicyRequest\x1a(.kodex.projects.v1.ReleasePolicyResponse\x12t\n" +
	"\x13ListReleasePolicies\x12-.kodex.projects.v1.ListReleasePoliciesRequest\x1a..kodex.projects.v1.ListReleasePoliciesResponse\x12b\n" +
	"\x0ePutReleaseLine\x12(.kodex.projects.v1.PutReleaseLineRequest\x1a&.kodex.projects.v1.ReleaseLineResponse\x12b\n" +
	"\x0eGetReleaseLine\x12(.kodex.projects.v1.GetReleaseLineRequest\x1a&.kodex.projects.v1.ReleaseLineResponse\x12k\n" +
	"\x10ListReleaseLines\x12*.kodex.projects.v1.ListReleaseLinesRequest\x1a+.kodex.projects.v1.ListReleaseLinesResponse\x12n\n" +
	"\x12PutPlacementPolicy\x12,.kodex.projects.v1.PutPlacementPolicyRequest\x1a*.kodex.projects.v1.PlacementPolicyResponse\x12n\n" +
	"\x12GetPlacementPolicy\x12,.kodex.projects.v1.GetPlacementPolicyRequest\x1a*.kodex.projects.v1.PlacementPolicyResponse\x12z\n" +
	"\x15ListPlacementPolicies\x12/.kodex.projects.v1.ListPlacementPoliciesRequest\x1a0.kodex.projects.v1.ListPlacementPoliciesResponseBFZDgithub.com/codex-k8s/kodex/proto/gen/go/kodex/projects/v1;projectsv1b\x06proto3"

var (
	file_kodex_projects_v1_project_catalog_proto_rawDescOnce sync.Once
	file_kodex_projects_v1_project_catalog_proto_rawDescData []byte
)

func file_kodex_projects_v1_project_catalog_proto_rawDescGZIP() []byte {
	file_kodex_projects_v1_project_catalog_proto_rawDescOnce.Do(func() {
		file_kodex_projects_v1_project_catalog_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kodex_projects_v1_project_catalog_proto_rawDesc), len(file_kodex_projects_v1_project_catalog_proto_rawDesc)))
	})
	return file_kodex_projects_v1_project_catalog_proto_rawDescData
}

var file_kodex_projects_v1_project_catalog_proto_enumTypes = make([]protoimpl.EnumInfo, 28)
var file_kodex_projects_v1_project_catalog_proto_msgTypes = make([]protoimpl.MessageInfo, 103)
var file_kodex_projects_v1_project_catalog_proto_goTypes = []any{
	(ProjectStatus)(0),                                  // 0: kodex.projects.v1.ProjectStatus
	(RepositoryProvider)(0),                             // 1: kodex.projects.v1.RepositoryProvider
	(RepositoryStatus)(0),                               // 2: kodex.projects.v1.RepositoryStatus
	(RepositoryOwnerKind)(0),                            // 3: kodex.projects.v1.RepositoryOwnerKind
	(RepositoryVisibility)(0),                           // 4: kodex.projects.v1.RepositoryVisibility
	(ServicesPolicyValidationStatus)(0),                 // 5: kodex.projects.v1.ServicesPolicyValidationStatus
	(ServicesPolicyProjectionStatus)(0),                 // 6: kodex.projects.v1.ServicesPolicyProjectionStatus
	(SelfDeploySignalStatus)(0),                         // 7: kodex.projects.v1.SelfDeploySignalStatus
	(SelfDeployBuildPlanStatus)(0),                      // 8: kodex.projects.v1.SelfDeployBuildPlanStatus
	(SelfDeployBuildPlanItemStatus)(0),                  // 9: kodex.projects.v1.SelfDeployBuildPlanItemStatus
	(SelfDeployDeployPlanStatus)(0),                     // 10: kodex.projects.v1.SelfDeployDeployPlanStatus
	(SelfDeployDeployPlanItemStatus)(0),                 // 11: kodex.projects.v1.SelfDeployDeployPlanItemStatus
	(SelfDeployPathCategory)(0),                         // 12: kodex.projects.v1.SelfDeployPathCategory
	(SelfDeployExpectedRuntimeJobType)(0),               // 13: kodex.projects.v1.SelfDeployExpectedRuntimeJobType
	(ServiceKind)(0),                                    // 14: kodex.projects.v1.ServiceKind
	(ServiceStatus)(0),                                  // 15: kodex.projects.v1.ServiceStatus
	(DocumentationScopeType)(0),                         // 16: kodex.projects.v1.DocumentationScopeType
	(DocumentationAccessMode)(0),                        // 17: kodex.projects.v1.DocumentationAccessMode
	(SourceAccessMode)(0),                               // 18: kodex.projects.v1.SourceAccessMode
	(DocumentationSourceStatus)(0),                      // 19: kodex.projects.v1.DocumentationSourceStatus
	(MergePolicy)(0),                                    // 20: kodex.projects.v1.MergePolicy
	(BranchRulesStatus)(0),                              // 21: kodex.projects.v1.BranchRulesStatus
	(RolloutStrategy)(0),                                // 22: kodex.projects.v1.RolloutStrategy
	(RollbackPolicy)(0),                                 // 23: kodex.projects.v1.RollbackPolicy
	(ReleasePolicyStatus)(0),                            // 24: kodex.projects.v1.ReleasePolicyStatus
	(PlacementPolicyStatus)(0),                          // 25: kodex.projects.v1.PlacementPolicyStatus
	(PolicyOverrideTargetType)(0),                       // 26: kodex.projects.v1.PolicyOverrideTargetType
	(PolicyOverrideStatus)(0),                           // 27: kodex.projects.v1.PolicyOverrideStatus
	(*CommandMeta)(nil),                                 // 28: kodex.projects.v1.CommandMeta
	(*QueryMeta)(nil),                                   // 29: kodex.projects.v1.QueryMeta
	(*RequestContext)(nil),                              // 30: kodex.projects.v1.RequestContext
	(*Actor)(nil),                                       // 31: kodex.projects.v1.Actor
	(*PageRequest)(nil),                                 // 32: kodex.projects.v1.PageRequest
	(*PageResponse)(nil),                                // 33: kodex.projects.v1.PageResponse
	(*Project)(nil),                                     // 34: kodex.projects.v1.Project
	(*Repository)(nil),                                  // 35: kodex.projects.v1.Repository
	(*RepositoryBootstrapFile)(nil),                     // 36: kodex.projects.v1.RepositoryBootstrapFile
	(*RepositoryBootstrapServicesPolicy)(nil),           // 37: kodex.projects.v1.RepositoryBootstrapServicesPolicy
	(*RepositoryBootstrapProviderTarget)(nil),           // 38: kodex.projects.v1.RepositoryBootstrapProviderTarget
	(*ServicesPolicy)(nil),                              // 39: kodex.projects.v1.ServicesPolicy
	(*ServiceDescriptor)(nil),                           // 40: kodex.projects.v1.ServiceDescriptor
	(*SelfDeployPathCategoryCount)(nil),                 // 41: kodex.projects.v1.SelfDeployPathCategoryCount
	(*SelfDeployGovernanceRequirement)(nil),             // 42: kodex.projects.v1.SelfDeployGovernanceRequirement
	(*SelfDeployServicesYamlProjection)(nil),            // 43: kodex.projects.v1.SelfDeployServicesYamlProjection
	(*SelfDeploySignal)(nil),                            // 44: kodex.projects.v1.SelfDeploySignal
	(*SelfDeployBuildRecipe)(nil),                       // 45: kodex.projects.v1.SelfDeployBuildRecipe
	(*SelfDeployMaterializedBuildContext)(nil),          // 46: kodex.projects.v1.SelfDeployMaterializedBuildContext
	(*SelfDeployBuildPlanItem)(nil),                     // 47: kodex.projects.v1.SelfDeployBuildPlanItem
	(*SelfDeployBuildPlan)(nil),                         // 48: kodex.projects.v1.SelfDeployBuildPlan
	(*SelfDeployBuildOutput)(nil),                       // 49: kodex.projects.v1.SelfDeployBuildOutput
	(*SelfDeployDeployPlanItem)(nil),                    // 50: kodex.projects.v1.SelfDeployDeployPlanItem
	(*SelfDeployDeployPlan)(nil),                        // 51: kodex.projects.v1.SelfDeployDeployPlan
	(*DocumentationSource)(nil),                         // 52: kodex.projects.v1.DocumentationSource
	(*BranchRules)(nil),                                 // 53: kodex.projects.v1.BranchRules
	(*ReleasePolicy)(nil),                               // 54: kodex.projects.v1.ReleasePolicy
	(*ReleaseLine)(nil),                                 // 55: kodex.projects.v1.ReleaseLine
	(*PlacementPolicy)(nil),                             // 56: kodex.projects.v1.PlacementPolicy
	(*PolicyOverride)(nil),                              // 57: kodex.projects.v1.PolicyOverride
	(*WorkspacePolicy)(nil),                             // 58: kodex.projects.v1.WorkspacePolicy
	(*WorkspaceCodeSource)(nil),                         // 59: kodex.projects.v1.WorkspaceCodeSource
	(*WorkspaceDocumentationSource)(nil),                // 60: kodex.projects.v1.WorkspaceDocumentationSource
	(*CreateProjectRequest)(nil),                        // 61: kodex.projects.v1.CreateProjectRequest
	(*UpdateProjectRequest)(nil),                        // 62: kodex.projects.v1.UpdateProjectRequest
	(*ProjectResponse)(nil),                             // 63: kodex.projects.v1.ProjectResponse
	(*GetProjectRequest)(nil),                           // 64: kodex.projects.v1.GetProjectRequest
	(*ListProjectsRequest)(nil),                         // 65: kodex.projects.v1.ListProjectsRequest
	(*ListProjectsResponse)(nil),                        // 66: kodex.projects.v1.ListProjectsResponse
	(*AttachRepositoryRequest)(nil),                     // 67: kodex.projects.v1.AttachRepositoryRequest
	(*UpdateRepositoryRequest)(nil),                     // 68: kodex.projects.v1.UpdateRepositoryRequest
	(*DetachRepositoryRequest)(nil),                     // 69: kodex.projects.v1.DetachRepositoryRequest
	(*RepositoryResponse)(nil),                          // 70: kodex.projects.v1.RepositoryResponse
	(*CreateProviderRepositoryRequest)(nil),             // 71: kodex.projects.v1.CreateProviderRepositoryRequest
	(*RepositoryProviderCreateResponse)(nil),            // 72: kodex.projects.v1.RepositoryProviderCreateResponse
	(*CreateRepositoryBootstrapPullRequestRequest)(nil), // 73: kodex.projects.v1.CreateRepositoryBootstrapPullRequestRequest
	(*RepositoryBootstrapPullRequestResponse)(nil),      // 74: kodex.projects.v1.RepositoryBootstrapPullRequestResponse
	(*GetRepositoryRequest)(nil),                        // 75: kodex.projects.v1.GetRepositoryRequest
	(*ListRepositoriesRequest)(nil),                     // 76: kodex.projects.v1.ListRepositoriesRequest
	(*ListRepositoriesResponse)(nil),                    // 77: kodex.projects.v1.ListRepositoriesResponse
	(*ImportServicesPolicyRequest)(nil),                 // 78: kodex.projects.v1.ImportServicesPolicyRequest
	(*ImportBootstrapServicesPolicyRequest)(nil),        // 79: kodex.projects.v1.ImportBootstrapServicesPolicyRequest
	(*BootstrapRepositoryMergeSignal)(nil),              // 80: kodex.projects.v1.BootstrapRepositoryMergeSignal
	(*CheckedBootstrapServicesPolicyArtifact)(nil),      // 81: kodex.projects.v1.CheckedBootstrapServicesPolicyArtifact
	(*ReconcileBootstrapMergeSignalRequest)(nil),        // 82: kodex.projects.v1.ReconcileBootstrapMergeSignalRequest
	(*RepositoryAdoptionMergeSignal)(nil),               // 83: kodex.projects.v1.RepositoryAdoptionMergeSignal
	(*CheckedAdoptionServicesPolicyArtifact)(nil),       // 84: kodex.projects.v1.CheckedAdoptionServicesPolicyArtifact
	(*ReconcileAdoptionMergeSignalRequest)(nil),         // 85: kodex.projects.v1.ReconcileAdoptionMergeSignalRequest
	(*BootstrapServicesPolicyImportResponse)(nil),       // 86: kodex.projects.v1.BootstrapServicesPolicyImportResponse
	(*ServicesPolicyResponse)(nil),                      // 87: kodex.projects.v1.ServicesPolicyResponse
	(*GetSelfDeploySignalRequest)(nil),                  // 88: kodex.projects.v1.GetSelfDeploySignalRequest
	(*SelfDeploySignalResponse)(nil),                    // 89: kodex.projects.v1.SelfDeploySignalResponse
	(*GetSelfDeployBuildPlanRequest)(nil),               // 90: kodex.projects.v1.GetSelfDeployBuildPlanRequest
	(*SelfDeployBuildPlanResponse)(nil),                 // 91: kodex.projects.v1.SelfDeployBuildPlanResponse
	(*GetSelfDeployDeployPlanRequest)(nil),              // 92: kodex.projects.v1.GetSelfDeployDeployPlanRequest
	(*SelfDeployDeployPlanResponse)(nil),                // 93: kodex.projects.v1.SelfDeployDeployPlanResponse
	(*GetServicesPolicyRequest)(nil),                    // 94: kodex.projects.v1.GetServicesPolicyRequest
	(*ListServiceDescriptorsRequest)(nil),               // 95: kodex.projects.v1.ListServiceDescriptorsRequest
	(*ListServiceDescriptorsResponse)(nil),              // 96: kodex.projects.v1.ListServiceDescriptorsResponse
	(*CreatePolicyEditProposalRequest)(nil),             // 97: kodex.projects.v1.CreatePolicyEditProposalRequest
	(*PolicyEditProposalResponse)(nil),                  // 98: kodex.projects.v1.PolicyEditProposalResponse
	(*CreatePolicyOverrideRequest)(nil),                 // 99: kodex.projects.v1.CreatePolicyOverrideRequest
	(*CancelPolicyOverrideRequest)(nil),                 // 100: kodex.projects.v1.CancelPolicyOverrideRequest
	(*PolicyOverrideResponse)(nil),                      // 101: kodex.projects.v1.PolicyOverrideResponse
	(*ListPolicyOverridesRequest)(nil),                  // 102: kodex.projects.v1.ListPolicyOverridesRequest
	(*ListPolicyOverridesResponse)(nil),                 // 103: kodex.projects.v1.ListPolicyOverridesResponse
	(*PutDocumentationSourceRequest)(nil),               // 104: kodex.projects.v1.PutDocumentationSourceRequest
	(*DocumentationSourceResponse)(nil),                 // 105: kodex.projects.v1.DocumentationSourceResponse
	(*GetDocumentationSourceRequest)(nil),               // 106: kodex.projects.v1.GetDocumentationSourceRequest
	(*ListDocumentationSourcesRequest)(nil),             // 107: kodex.projects.v1.ListDocumentationSourcesRequest
	(*ListDocumentationSourcesResponse)(nil),            // 108: kodex.projects.v1.ListDocumentationSourcesResponse
	(*GetWorkspacePolicyRequest)(nil),                   // 109: kodex.projects.v1.GetWorkspacePolicyRequest
	(*WorkspacePolicyResponse)(nil),                     // 110: kodex.projects.v1.WorkspacePolicyResponse
	(*PutBranchRulesRequest)(nil),                       // 111: kodex.projects.v1.PutBranchRulesRequest
	(*BranchRulesResponse)(nil),                         // 112: kodex.projects.v1.BranchRulesResponse
	(*GetBranchRulesRequest)(nil),                       // 113: kodex.projects.v1.GetBranchRulesRequest
	(*ListBranchRulesRequest)(nil),                      // 114: kodex.projects.v1.ListBranchRulesRequest
	(*ListBranchRulesResponse)(nil),                     // 115: kodex.projects.v1.ListBranchRulesResponse
	(*PutReleasePolicyRequest)(nil),                     // 116: kodex.projects.v1.PutReleasePolicyRequest
	(*ReleasePolicyResponse)(nil),                       // 117: kodex.projects.v1.ReleasePolicyResponse
	(*GetReleasePolicyRequest)(nil),                     // 118: kodex.projects.v1.GetReleasePolicyRequest
	(*ListReleasePoliciesRequest)(nil),                  // 119: kodex.projects.v1.ListReleasePoliciesRequest
	(*ListReleasePoliciesResponse)(nil),                 // 120: kodex.projects.v1.ListReleasePoliciesResponse
	(*PutReleaseLineRequest)(nil),                       // 121: kodex.projects.v1.PutReleaseLineRequest
	(*ReleaseLineResponse)(nil),                         // 122: kodex.projects.v1.ReleaseLineResponse
	(*GetReleaseLineRequest)(nil),                       // 123: kodex.projects.v1.GetReleaseLineRequest
	(*ListReleaseLinesRequest)(nil),                     // 124: kodex.projects.v1.ListReleaseLinesRequest
	(*ListReleaseLinesResponse)(nil),                    // 125: kodex.projects.v1.ListReleaseLinesResponse
	(*PutPlacementPolicyRequest)(nil),                   // 126: kodex.projects.v1.PutPlacementPolicyRequest
	(*PlacementPolicyResponse)(nil),                     // 127: kodex.projects.v1.PlacementPolicyResponse
	(*GetPlacementPolicyRequest)(nil),                   // 128: kodex.projects.v1.GetPlacementPolicyRequest
	(*ListPlacementPoliciesRequest)(nil),                // 129: kodex.projects.v1.ListPlacementPoliciesRequest
	(*ListPlacementPoliciesResponse)(nil),               // 130: kodex.projects.v1.ListPlacementPoliciesResponse
	(*v1.RuntimeJobAllowedSecretRef)(nil),               // 131: kodex.runtime.v1.RuntimeJobAllowedSecretRef
	(*v1.RuntimeJobOutputRef)(nil),                      // 132: kodex.runtime.v1.RuntimeJobOutputRef
	(*v1.BuildExecutionSpec)(nil),                       // 133: kodex.runtime.v1.BuildExecutionSpec
	(*v1.DeployExecutionSpec)(nil),                      // 134: kodex.runtime.v1.DeployExecutionSpec
}
var file_kodex_projects_v1_project_catalog_proto_depIdxs = []int32{
	31,  // 0: kodex.projects.v1.CommandMeta.actor:type_name -> kodex.projects.v1.Actor
	30,  // 1: kodex.projects.v1.CommandMeta.request_context:type_name -> kodex.projects.v1.RequestContext
	31,  // 2: kodex.projects.v1.QueryMeta.actor:type_name -> kodex.projects.v1.Actor
	30,  // 3: kodex.projects.v1.QueryMeta.request_context:type_name -> kodex.projects.v1.RequestContext
	0,   // 4: kodex.projects.v1.Project.status:type_name -> kodex.projects.v1.ProjectStatus
	1,   // 5: kodex.projects.v1.Repository.provider:type_name -> kodex.projects.v1.RepositoryProvider
	2,   // 6: kodex.projects.v1.Repository.status:type_name -> kodex.projects.v1.RepositoryStatus
	5,   // 7: kodex.projects.v1.ServicesPolicy.validation_status:type_name -> kodex.projects.v1.ServicesPolicyValidationStatus
	6,   // 8: kodex.projects.v1.ServicesPolicy.projection_status:type_name -> kodex.projects.v1.ServicesPolicyProjectionStatus
	14,  // 9: kodex.projects.v1.ServiceDescriptor.kind:type_name -> kodex.projects.v1.ServiceKind
	15,  // 10: kodex.projects.v1.ServiceDescriptor.status:type_name -> kodex.projects.v1.ServiceStatus
	12,  // 11: kodex.projects.v1.SelfDeployPathCategoryCount.category:type_name -> kodex.projects.v1.SelfDeployPathCategory
	5,   // 12: kodex.projects.v1.SelfDeployServicesYamlProjection.validation_status:type_name -> kodex.projects.v1.ServicesPolicyValidationStatus
	6,   // 13: kodex.projects.v1.SelfDeployServicesYamlProjection.projection_status:type_name -> kodex.projects.v1.ServicesPolicyProjectionStatus
	43,  // 14: kodex.projects.v1.SelfDeploySignal.services_yaml:type_name -> kodex.projects.v1.SelfDeployServicesYamlProjection
	41,  // 15: kodex.projects.v1.SelfDeploySignal.path_categories:type_name -> kodex.projects.v1.SelfDeployPathCategoryCount
	13,  // 16: kodex.projects.v1.SelfDeploySignal.expected_runtime_job_types:type_name -> kodex.projects.v1.SelfDeployExpectedRuntimeJobType
	42,  // 17: kodex.projects.v1.SelfDeploySignal.governance_requirement:type_name -> kodex.projects.v1.SelfDeployGovernanceRequirement
	131, // 18: kodex.projects.v1.SelfDeployBuildRecipe.allowed_secret_refs:type_name -> kodex.runtime.v1.RuntimeJobAllowedSecretRef
	132, // 19: kodex.projects.v1.SelfDeployBuildRecipe.output_refs:type_name -> kodex.runtime.v1.RuntimeJobOutputRef
	133, // 20: kodex.projects.v1.SelfDeployBuildPlanItem.build_execution_spec:type_name -> kodex.runtime.v1.BuildExecutionSpec
	9,   // 21: kodex.projects.v1.SelfDeployBuildPlanItem.status:type_name -> kodex.projects.v1.SelfDeployBuildPlanItemStatus
	45,  // 22: kodex.projects.v1.SelfDeployBuildPlanItem.build_recipe:type_name -> kodex.projects.v1.SelfDeployBuildRecipe
	43,  // 23: kodex.projects.v1.SelfDeployBuildPlan.services_yaml:type_name -> kodex.projects.v1.SelfDeployServicesYamlProjection
	47,  // 24: kodex.projects.v1.SelfDeployBuildPlan.build_items:type_name -> kodex.projects.v1.SelfDeployBuildPlanItem
	134, // 25: kodex.projects.v1.SelfDeployDeployPlanItem.deploy_execution_spec:type_name -> kodex.runtime.v1.DeployExecutionSpec
	11,  // 26: kodex.projects.v1.SelfDeployDeployPlanItem.status:type_name -> kodex.projects.v1.SelfDeployDeployPlanItemStatus
	43,  // 27: kodex.projects.v1.SelfDeployDeployPlan.services_yaml:type_name -> kodex.projects.v1.SelfDeployServicesYamlProjection
	50,  // 28: kodex.projects.v1.SelfDeployDeployPlan.deploy_items:type_name -> kodex.projects.v1.SelfDeployDeployPlanItem
	16,  // 29: kodex.projects.v1.DocumentationSource.scope_type:type_name -> kodex.projects.v1.DocumentationScopeType
	17,  // 30: kodex.projects.v1.DocumentationSource.access_mode:type_name -> kodex.projects.v1.DocumentationAccessMode
	19,  // 31: kodex.projects.v1.DocumentationSource.status:type_name -> kodex.projects.v1.DocumentationSourceStatus
	20,  // 32: kodex.projects.v1.BranchRules.merge_policy:type_name -> kodex.projects.v1.MergePolicy
	21,  // 33: kodex.projects.v1.BranchRules.status:type_name -> kodex.projects.v1.BranchRulesStatus
	22,  // 34: kodex.projects.v1.ReleasePolicy.rollout_strategy:type_name -> kodex.projects.v1.RolloutStrategy
	23,  // 35: kodex.projects.v1.ReleasePolicy.rollback_policy:type_name -> kodex.projects.v1.RollbackPolicy
	24,  // 36: kodex.projects.v1.ReleasePolicy.status:type_name -> kodex.projects.v1.ReleasePolicyStatus
	24,  // 37: kodex.projects.v1.ReleaseLine.status:type_name -> kodex.projects.v1.ReleasePolicyStatus
	25,  // 38: kodex.projects.v1.PlacementPolicy.status:type_name -> kodex.projects.v1.PlacementPolicyStatus
	26,  // 39: kodex.projects.v1.PolicyOverride.target_type:type_name -> kodex.projects.v1.PolicyOverrideTargetType
	27,  // 40: kodex.projects.v1.PolicyOverride.status:type_name -> kodex.projects.v1.PolicyOverrideStatus
	59,  // 41: kodex.projects.v1.WorkspacePolicy.code_sources:type_name -> kodex.projects.v1.WorkspaceCodeSource
	60,  // 42: kodex.projects.v1.WorkspacePolicy.documentation_sources:type_name -> kodex.projects.v1.WorkspaceDocumentationSource
	57,  // 43: kodex.projects.v1.WorkspacePolicy.active_policy_overrides:type_name -> kodex.projects.v1.PolicyOverride
	1,   // 44: kodex.projects.v1.WorkspaceCodeSource.provider:type_name -> kodex.projects.v1.RepositoryProvider
	18,  // 45: kodex.projects.v1.WorkspaceCodeSource.access_mode:type_name -> kodex.projects.v1.SourceAccessMode
	16,  // 46: kodex.projects.v1.WorkspaceDocumentationSource.scope_type:type_name -> kodex.projects.v1.DocumentationScopeType
	18,  // 47: kodex.projects.v1.WorkspaceDocumentationSource.access_mode:type_name -> kodex.projects.v1.SourceAccessMode
	0,   // 48: kodex.projects.v1.CreateProjectRequest.status:type_name -> kodex.projects.v1.ProjectStatus
	28,  // 49: kodex.projects.v1.CreateProjectRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	0,   // 50: kodex.projects.v1.UpdateProjectRequest.status:type_name -> kodex.projects.v1.ProjectStatus
	28,  // 51: kodex.projects.v1.UpdateProjectRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	34,  // 52: kodex.projects.v1.ProjectResponse.project:type_name -> kodex.projects.v1.Project
	29,  // 53: kodex.projects.v1.GetProjectRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	0,   // 54: kodex.projects.v1.ListProjectsRequest.statuses:type_name -> kodex.projects.v1.ProjectStatus
	32,  // 55: kodex.projects.v1.ListProjectsRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 56: kodex.projects.v1.ListProjectsRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	34,  // 57: kodex.projects.v1.ListProjectsResponse.projects:type_name -> kodex.projects.v1.Project
	33,  // 58: kodex.projects.v1.ListProjectsResponse.page:type_name -> kodex.projects.v1.PageResponse
	1,   // 59: kodex.projects.v1.AttachRepositoryRequest.provider:type_name -> kodex.projects.v1.RepositoryProvider
	2,   // 60: kodex.projects.v1.AttachRepositoryRequest.status:type_name -> kodex.projects.v1.RepositoryStatus
	28,  // 61: kodex.projects.v1.AttachRepositoryRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	2,   // 62: kodex.projects.v1.UpdateRepositoryRequest.status:type_name -> kodex.projects.v1.RepositoryStatus
	28,  // 63: kodex.projects.v1.UpdateRepositoryRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	28,  // 64: kodex.projects.v1.DetachRepositoryRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	35,  // 65: kodex.projects.v1.RepositoryResponse.repository:type_name -> kodex.projects.v1.Repository
	1,   // 66: kodex.projects.v1.CreateProviderRepositoryRequest.provider:type_name -> kodex.projects.v1.RepositoryProvider
	3,   // 67: kodex.projects.v1.CreateProviderRepositoryRequest.owner_kind:type_name -> kodex.projects.v1.RepositoryOwnerKind
	4,   // 68: kodex.projects.v1.CreateProviderRepositoryRequest.visibility:type_name -> kodex.projects.v1.RepositoryVisibility
	28,  // 69: kodex.projects.v1.CreateProviderRepositoryRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	35,  // 70: kodex.projects.v1.RepositoryProviderCreateResponse.repository:type_name -> kodex.projects.v1.Repository
	38,  // 71: kodex.projects.v1.RepositoryProviderCreateResponse.provider_target:type_name -> kodex.projects.v1.RepositoryBootstrapProviderTarget
	36,  // 72: kodex.projects.v1.CreateRepositoryBootstrapPullRequestRequest.files:type_name -> kodex.projects.v1.RepositoryBootstrapFile
	37,  // 73: kodex.projects.v1.CreateRepositoryBootstrapPullRequestRequest.services_policy:type_name -> kodex.projects.v1.RepositoryBootstrapServicesPolicy
	28,  // 74: kodex.projects.v1.CreateRepositoryBootstrapPullRequestRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	35,  // 75: kodex.projects.v1.RepositoryBootstrapPullRequestResponse.repository:type_name -> kodex.projects.v1.Repository
	38,  // 76: kodex.projects.v1.RepositoryBootstrapPullRequestResponse.provider_target:type_name -> kodex.projects.v1.RepositoryBootstrapProviderTarget
	29,  // 77: kodex.projects.v1.GetRepositoryRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	2,   // 78: kodex.projects.v1.ListRepositoriesRequest.statuses:type_name -> kodex.projects.v1.RepositoryStatus
	32,  // 79: kodex.projects.v1.ListRepositoriesRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 80: kodex.projects.v1.ListRepositoriesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	35,  // 81: kodex.projects.v1.ListRepositoriesResponse.repositories:type_name -> kodex.projects.v1.Repository
	33,  // 82: kodex.projects.v1.ListRepositoriesResponse.page:type_name -> kodex.projects.v1.PageResponse
	40,  // 83: kodex.projects.v1.ImportServicesPolicyRequest.service_descriptors:type_name -> kodex.projects.v1.ServiceDescriptor
	5,   // 84: kodex.projects.v1.ImportServicesPolicyRequest.validation_status:type_name -> kodex.projects.v1.ServicesPolicyValidationStatus
	28,  // 85: kodex.projects.v1.ImportServicesPolicyRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	38,  // 86: kodex.projects.v1.ImportBootstrapServicesPolicyRequest.provider_target:type_name -> kodex.projects.v1.RepositoryBootstrapProviderTarget
	28,  // 87: kodex.projects.v1.ImportBootstrapServicesPolicyRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	38,  // 88: kodex.projects.v1.BootstrapRepositoryMergeSignal.provider_target:type_name -> kodex.projects.v1.RepositoryBootstrapProviderTarget
	80,  // 89: kodex.projects.v1.ReconcileBootstrapMergeSignalRequest.merge_signal:type_name -> kodex.projects.v1.BootstrapRepositoryMergeSignal
	81,  // 90: kodex.projects.v1.ReconcileBootstrapMergeSignalRequest.checked_policy:type_name -> kodex.projects.v1.CheckedBootstrapServicesPolicyArtifact
	28,  // 91: kodex.projects.v1.ReconcileBootstrapMergeSignalRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	38,  // 92: kodex.projects.v1.RepositoryAdoptionMergeSignal.provider_target:type_name -> kodex.projects.v1.RepositoryBootstrapProviderTarget
	83,  // 93: kodex.projects.v1.ReconcileAdoptionMergeSignalRequest.merge_signal:type_name -> kodex.projects.v1.RepositoryAdoptionMergeSignal
	84,  // 94: kodex.projects.v1.ReconcileAdoptionMergeSignalRequest.checked_policy:type_name -> kodex.projects.v1.CheckedAdoptionServicesPolicyArtifact
	28,  // 95: kodex.projects.v1.ReconcileAdoptionMergeSignalRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	35,  // 96: kodex.projects.v1.BootstrapServicesPolicyImportResponse.repository:type_name -> kodex.projects.v1.Repository
	39,  // 97: kodex.projects.v1.BootstrapServicesPolicyImportResponse.services_policy:type_name -> kodex.projects.v1.ServicesPolicy
	39,  // 98: kodex.projects.v1.ServicesPolicyResponse.services_policy:type_name -> kodex.projects.v1.ServicesPolicy
	29,  // 99: kodex.projects.v1.GetSelfDeploySignalRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	7,   // 100: kodex.projects.v1.SelfDeploySignalResponse.status:type_name -> kodex.projects.v1.SelfDeploySignalStatus
	44,  // 101: kodex.projects.v1.SelfDeploySignalResponse.signal:type_name -> kodex.projects.v1.SelfDeploySignal
	29,  // 102: kodex.projects.v1.GetSelfDeployBuildPlanRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	46,  // 103: kodex.projects.v1.GetSelfDeployBuildPlanRequest.materialized_build_contexts:type_name -> kodex.projects.v1.SelfDeployMaterializedBuildContext
	8,   // 104: kodex.projects.v1.SelfDeployBuildPlanResponse.status:type_name -> kodex.projects.v1.SelfDeployBuildPlanStatus
	48,  // 105: kodex.projects.v1.SelfDeployBuildPlanResponse.plan:type_name -> kodex.projects.v1.SelfDeployBuildPlan
	49,  // 106: kodex.projects.v1.GetSelfDeployDeployPlanRequest.build_outputs:type_name -> kodex.projects.v1.SelfDeployBuildOutput
	46,  // 107: kodex.projects.v1.GetSelfDeployDeployPlanRequest.materialized_build_contexts:type_name -> kodex.projects.v1.SelfDeployMaterializedBuildContext
	29,  // 108: kodex.projects.v1.GetSelfDeployDeployPlanRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	10,  // 109: kodex.projects.v1.SelfDeployDeployPlanResponse.status:type_name -> kodex.projects.v1.SelfDeployDeployPlanStatus
	51,  // 110: kodex.projects.v1.SelfDeployDeployPlanResponse.plan:type_name -> kodex.projects.v1.SelfDeployDeployPlan
	29,  // 111: kodex.projects.v1.GetServicesPolicyRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	15,  // 112: kodex.projects.v1.ListServiceDescriptorsRequest.statuses:type_name -> kodex.projects.v1.ServiceStatus
	32,  // 113: kodex.projects.v1.ListServiceDescriptorsRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 114: kodex.projects.v1.ListServiceDescriptorsRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	40,  // 115: kodex.projects.v1.ListServiceDescriptorsResponse.service_descriptors:type_name -> kodex.projects.v1.ServiceDescriptor
	33,  // 116: kodex.projects.v1.ListServiceDescriptorsResponse.page:type_name -> kodex.projects.v1.PageResponse
	28,  // 117: kodex.projects.v1.CreatePolicyEditProposalRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	26,  // 118: kodex.projects.v1.CreatePolicyOverrideRequest.target_type:type_name -> kodex.projects.v1.PolicyOverrideTargetType
	28,  // 119: kodex.projects.v1.CreatePolicyOverrideRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	28,  // 120: kodex.projects.v1.CancelPolicyOverrideRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	57,  // 121: kodex.projects.v1.PolicyOverrideResponse.policy_override:type_name -> kodex.projects.v1.PolicyOverride
	26,  // 122: kodex.projects.v1.ListPolicyOverridesRequest.target_types:type_name -> kodex.projects.v1.PolicyOverrideTargetType
	27,  // 123: kodex.projects.v1.ListPolicyOverridesRequest.statuses:type_name -> kodex.projects.v1.PolicyOverrideStatus
	32,  // 124: kodex.projects.v1.ListPolicyOverridesRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 125: kodex.projects.v1.ListPolicyOverridesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	57,  // 126: kodex.projects.v1.ListPolicyOverridesResponse.policy_overrides:type_name -> kodex.projects.v1.PolicyOverride
	33,  // 127: kodex.projects.v1.ListPolicyOverridesResponse.page:type_name -> kodex.projects.v1.PageResponse
	16,  // 128: kodex.projects.v1.PutDocumentationSourceRequest.scope_type:type_name -> kodex.projects.v1.DocumentationScopeType
	17,  // 129: kodex.projects.v1.PutDocumentationSourceRequest.access_mode:type_name -> kodex.projects.v1.DocumentationAccessMode
	19,  // 130: kodex.projects.v1.PutDocumentationSourceRequest.status:type_name -> kodex.projects.v1.DocumentationSourceStatus
	28,  // 131: kodex.projects.v1.PutDocumentationSourceRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	52,  // 132: kodex.projects.v1.DocumentationSourceResponse.documentation_source:type_name -> kodex.projects.v1.DocumentationSource
	29,  // 133: kodex.projects.v1.GetDocumentationSourceRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	16,  // 134: kodex.projects.v1.ListDocumentationSourcesRequest.scope_type:type_name -> kodex.projects.v1.DocumentationScopeType
	19,  // 135: kodex.projects.v1.ListDocumentationSourcesRequest.statuses:type_name -> kodex.projects.v1.DocumentationSourceStatus
	32,  // 136: kodex.projects.v1.ListDocumentationSourcesRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 137: kodex.projects.v1.ListDocumentationSourcesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	52,  // 138: kodex.projects.v1.ListDocumentationSourcesResponse.documentation_sources:type_name -> kodex.projects.v1.DocumentationSource
	33,  // 139: kodex.projects.v1.ListDocumentationSourcesResponse.page:type_name -> kodex.projects.v1.PageResponse
	29,  // 140: kodex.projects.v1.GetWorkspacePolicyRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	58,  // 141: kodex.projects.v1.WorkspacePolicyResponse.workspace_policy:type_name -> kodex.projects.v1.WorkspacePolicy
	20,  // 142: kodex.projects.v1.PutBranchRulesRequest.merge_policy:type_name -> kodex.projects.v1.MergePolicy
	21,  // 143: kodex.projects.v1.PutBranchRulesRequest.status:type_name -> kodex.projects.v1.BranchRulesStatus
	28,  // 144: kodex.projects.v1.PutBranchRulesRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	53,  // 145: kodex.projects.v1.BranchRulesResponse.branch_rules:type_name -> kodex.projects.v1.BranchRules
	29,  // 146: kodex.projects.v1.GetBranchRulesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	21,  // 147: kodex.projects.v1.ListBranchRulesRequest.statuses:type_name -> kodex.projects.v1.BranchRulesStatus
	32,  // 148: kodex.projects.v1.ListBranchRulesRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 149: kodex.projects.v1.ListBranchRulesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	53,  // 150: kodex.projects.v1.ListBranchRulesResponse.branch_rules:type_name -> kodex.projects.v1.BranchRules
	33,  // 151: kodex.projects.v1.ListBranchRulesResponse.page:type_name -> kodex.projects.v1.PageResponse
	22,  // 152: kodex.projects.v1.PutReleasePolicyRequest.rollout_strategy:type_name -> kodex.projects.v1.RolloutStrategy
	23,  // 153: kodex.projects.v1.PutReleasePolicyRequest.rollback_policy:type_name -> kodex.projects.v1.RollbackPolicy
	24,  // 154: kodex.projects.v1.PutReleasePolicyRequest.status:type_name -> kodex.projects.v1.ReleasePolicyStatus
	28,  // 155: kodex.projects.v1.PutReleasePolicyRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	54,  // 156: kodex.projects.v1.ReleasePolicyResponse.release_policy:type_name -> kodex.projects.v1.ReleasePolicy
	29,  // 157: kodex.projects.v1.GetReleasePolicyRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	24,  // 158: kodex.projects.v1.ListReleasePoliciesRequest.statuses:type_name -> kodex.projects.v1.ReleasePolicyStatus
	32,  // 159: kodex.projects.v1.ListReleasePoliciesRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 160: kodex.projects.v1.ListReleasePoliciesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	54,  // 161: kodex.projects.v1.ListReleasePoliciesResponse.release_policies:type_name -> kodex.projects.v1.ReleasePolicy
	33,  // 162: kodex.projects.v1.ListReleasePoliciesResponse.page:type_name -> kodex.projects.v1.PageResponse
	24,  // 163: kodex.projects.v1.PutReleaseLineRequest.status:type_name -> kodex.projects.v1.ReleasePolicyStatus
	28,  // 164: kodex.projects.v1.PutReleaseLineRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	55,  // 165: kodex.projects.v1.ReleaseLineResponse.release_line:type_name -> kodex.projects.v1.ReleaseLine
	29,  // 166: kodex.projects.v1.GetReleaseLineRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	24,  // 167: kodex.projects.v1.ListReleaseLinesRequest.statuses:type_name -> kodex.projects.v1.ReleasePolicyStatus
	32,  // 168: kodex.projects.v1.ListReleaseLinesRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 169: kodex.projects.v1.ListReleaseLinesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	55,  // 170: kodex.projects.v1.ListReleaseLinesResponse.release_lines:type_name -> kodex.projects.v1.ReleaseLine
	33,  // 171: kodex.projects.v1.ListReleaseLinesResponse.page:type_name -> kodex.projects.v1.PageResponse
	25,  // 172: kodex.projects.v1.PutPlacementPolicyRequest.status:type_name -> kodex.projects.v1.PlacementPolicyStatus
	28,  // 173: kodex.projects.v1.PutPlacementPolicyRequest.meta:type_name -> kodex.projects.v1.CommandMeta
	56,  // 174: kodex.projects.v1.PlacementPolicyResponse.placement_policy:type_name -> kodex.projects.v1.PlacementPolicy
	29,  // 175: kodex.projects.v1.GetPlacementPolicyRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	25,  // 176: kodex.projects.v1.ListPlacementPoliciesRequest.statuses:type_name -> kodex.projects.v1.PlacementPolicyStatus
	32,  // 177: kodex.projects.v1.ListPlacementPoliciesRequest.page:type_name -> kodex.projects.v1.PageRequest
	29,  // 178: kodex.projects.v1.ListPlacementPoliciesRequest.meta:type_name -> kodex.projects.v1.QueryMeta
	56,  // 179: kodex.projects.v1.ListPlacementPoliciesResponse.placement_policies:type_name -> kodex.projects.v1.PlacementPolicy
	33,  // 180: kodex.projects.v1.ListPlacementPoliciesResponse.page:type_name -> kodex.projects.v1.PageResponse
	61,  // 181: kodex.projects.v1.ProjectCatalogService.CreateProject:input_type -> kodex.projects.v1.CreateProjectRequest
	62,  // 182: kodex.projects.v1.ProjectCatalogService.UpdateProject:input_type -> kodex.projects.v1.UpdateProjectRequest
	64,  // 183: kodex.projects.v1.ProjectCatalogService.GetProject:input_type -> kodex.projects.v1.GetProjectRequest
	65,  // 184: kodex.projects.v1.ProjectCatalogService.ListProjects:input_type -> kodex.projects.v1.ListProjectsRequest
	67,  // 185: kodex.projects.v1.ProjectCatalogService.AttachRepository:input_type -> kodex.projects.v1.AttachRepositoryRequest
	71,  // 186: kodex.projects.v1.ProjectCatalogService.CreateProviderRepository:input_type -> kodex.projects.v1.CreateProviderRepositoryRequest
	73,  // 187: kodex.projects.v1.ProjectCatalogService.CreateRepositoryBootstrapPullRequest:input_type -> kodex.projects.v1.CreateRepositoryBootstrapPullRequestRequest
	68,  // 188: kodex.projects.v1.ProjectCatalogService.UpdateRepository:input_type -> kodex.projects.v1.UpdateRepositoryRequest
	69,  // 189: kodex.projects.v1.ProjectCatalogService.DetachRepository:input_type -> kodex.projects.v1.DetachRepositoryRequest
	75,  // 190: kodex.projects.v1.ProjectCatalogService.GetRepository:input_type -> kodex.projects.v1.GetRepositoryRequest
	76,  // 191: kodex.projects.v1.ProjectCatalogService.ListRepositories:input_type -> kodex.projects.v1.ListRepositoriesRequest
	78,  // 192: kodex.projects.v1.ProjectCatalogService.ImportServicesPolicy:input_type -> kodex.projects.v1.ImportServicesPolicyRequest
	79,  // 193: kodex.projects.v1.ProjectCatalogService.ImportBootstrapServicesPolicy:input_type -> kodex.projects.v1.ImportBootstrapServicesPolicyRequest
	82,  // 194: kodex.projects.v1.ProjectCatalogService.ReconcileBootstrapMergeSignal:input_type -> kodex.projects.v1.ReconcileBootstrapMergeSignalRequest
	85,  // 195: kodex.projects.v1.ProjectCatalogService.ReconcileAdoptionMergeSignal:input_type -> kodex.projects.v1.ReconcileAdoptionMergeSignalRequest
	88,  // 196: kodex.projects.v1.ProjectCatalogService.GetSelfDeploySignal:input_type -> kodex.projects.v1.GetSelfDeploySignalRequest
	90,  // 197: kodex.projects.v1.ProjectCatalogService.GetSelfDeployBuildPlan:input_type -> kodex.projects.v1.GetSelfDeployBuildPlanRequest
	92,  // 198: kodex.projects.v1.ProjectCatalogService.GetSelfDeployDeployPlan:input_type -> kodex.projects.v1.GetSelfDeployDeployPlanRequest
	94,  // 199: kodex.projects.v1.ProjectCatalogService.GetServicesPolicy:input_type -> kodex.projects.v1.GetServicesPolicyRequest
	95,  // 200: kodex.projects.v1.ProjectCatalogService.ListServiceDescriptors:input_type -> kodex.projects.v1.ListServiceDescriptorsRequest
	97,  // 201: kodex.projects.v1.ProjectCatalogService.CreatePolicyEditProposal:input_type -> kodex.projects.v1.CreatePolicyEditProposalRequest
	99,  // 202: kodex.projects.v1.ProjectCatalogService.CreatePolicyOverride:input_type -> kodex.projects.v1.CreatePolicyOverrideRequest
	100, // 203: kodex.projects.v1.ProjectCatalogService.CancelPolicyOverride:input_type -> kodex.projects.v1.CancelPolicyOverrideRequest
	102, // 204: kodex.projects.v1.ProjectCatalogService.ListPolicyOverrides:input_type -> kodex.projects.v1.ListPolicyOverridesRequest
	104, // 205: kodex.projects.v1.ProjectCatalogService.PutDocumentationSource:input_type -> kodex.projects.v1.PutDocumentationSourceRequest
	106, // 206: kodex.projects.v1.ProjectCatalogService.GetDocumentationSource:input_type -> kodex.projects.v1.GetDocumentationSourceRequest
	107, // 207: kodex.projects.v1.ProjectCatalogService.ListDocumentationSources:input_type -> kodex.projects.v1.ListDocumentationSourcesRequest
	109, // 208: kodex.projects.v1.ProjectCatalogService.GetWorkspacePolicy:input_type -> kodex.projects.v1.GetWorkspacePolicyRequest
	111, // 209: kodex.projects.v1.ProjectCatalogService.PutBranchRules:input_type -> kodex.projects.v1.PutBranchRulesRequest
	113, // 210: kodex.projects.v1.ProjectCatalogService.GetBranchRules:input_type -> kodex.projects.v1.GetBranchRulesRequest
	114, // 211: kodex.projects.v1.ProjectCatalogService.ListBranchRules:input_type -> kodex.projects.v1.ListBranchRulesRequest
	116, // 212: kodex.projects.v1.ProjectCatalogService.PutReleasePolicy:input_type -> kodex.projects.v1.PutReleasePolicyRequest
	118, // 213: kodex.projects.v1.ProjectCatalogService.GetReleasePolicy:input_type -> kodex.projects.v1.GetReleasePolicyRequest
	119, // 214: kodex.projects.v1.ProjectCatalogService.ListReleasePolicies:input_type -> kodex.projects.v1.ListReleasePoliciesRequest
	121, // 215: kodex.projects.v1.ProjectCatalogService.PutReleaseLine:input_type -> kodex.projects.v1.PutReleaseLineRequest
	123, // 216: kodex.projects.v1.ProjectCatalogService.GetReleaseLine:input_type -> kodex.projects.v1.GetReleaseLineRequest
	124, // 217: kodex.projects.v1.ProjectCatalogService.ListReleaseLines:input_type -> kodex.projects.v1.ListReleaseLinesRequest
	126, // 218: kodex.projects.v1.ProjectCatalogService.PutPlacementPolicy:input_type -> kodex.projects.v1.PutPlacementPolicyRequest
	128, // 219: kodex.projects.v1.ProjectCatalogService.GetPlacementPolicy:input_type -> kodex.projects.v1.GetPlacementPolicyRequest
	129, // 220: kodex.projects.v1.ProjectCatalogService.ListPlacementPolicies:input_type -> kodex.projects.v1.ListPlacementPoliciesRequest
	63,  // 221: kodex.projects.v1.ProjectCatalogService.CreateProject:output_type -> kodex.projects.v1.ProjectResponse
	63,  // 222: kodex.projects.v1.ProjectCatalogService.UpdateProject:output_type -> kodex.projects.v1.ProjectResponse
	63,  // 223: kodex.projects.v1.ProjectCatalogService.GetProject:output_type -> kodex.projects.v1.ProjectResponse
	66,  // 224: kodex.projects.v1.ProjectCatalogService.ListProjects:output_type -> kodex.projects.v1.ListProjectsResponse
	70,  // 225: kodex.projects.v1.ProjectCatalogService.AttachRepository:output_type -> kodex.projects.v1.RepositoryResponse
	72,  // 226: kodex.projects.v1.ProjectCatalogService.CreateProviderRepository:output_type -> kodex.projects.v1.RepositoryProviderCreateResponse
	74,  // 227: kodex.projects.v1.ProjectCatalogService.CreateRepositoryBootstrapPullRequest:output_type -> kodex.projects.v1.RepositoryBootstrapPullRequestResponse
	70,  // 228: kodex.projects.v1.ProjectCatalogService.UpdateRepository:output_type -> kodex.projects.v1.RepositoryResponse
	70,  // 229: kodex.projects.v1.ProjectCatalogService.DetachRepository:output_type -> kodex.projects.v1.RepositoryResponse
	70,  // 230: kodex.projects.v1.ProjectCatalogService.GetRepository:output_type -> kodex.projects.v1.RepositoryResponse
	77,  // 231: kodex.projects.v1.ProjectCatalogService.ListRepositories:output_type -> kodex.projects.v1.ListRepositoriesResponse
	87,  // 232: kodex.projects.v1.ProjectCatalogService.ImportServicesPolicy:output_type -> kodex.projects.v1.ServicesPolicyResponse
	86,  // 233: kodex.projects.v1.ProjectCatalogService.ImportBootstrapServicesPolicy:output_type -> kodex.projects.v1.BootstrapServicesPolicyImportResponse
	86,  // 234: kodex.projects.v1.ProjectCatalogService.ReconcileBootstrapMergeSignal:output_type -> kodex.projects.v1.BootstrapServicesPolicyImportResponse
	86,  // 235: kodex.projects.v1.ProjectCatalogService.ReconcileAdoptionMergeSignal:output_type -> kodex.projects.v1.BootstrapServicesPolicyImportResponse
	89,  // 236: kodex.projects.v1.ProjectCatalogService.GetSelfDeploySignal:output_type -> kodex.projects.v1.SelfDeploySignalResponse
	91,  // 237: kodex.projects.v1.ProjectCatalogService.GetSelfDeployBuildPlan:output_type -> kodex.projects.v1.SelfDeployBuildPlanResponse
	93,  // 238: kodex.projects.v1.ProjectCatalogService.GetSelfDeployDeployPlan:output_type -> kodex.projects.v1.SelfDeployDeployPlanResponse
	87,  // 239: kodex.projects.v1.ProjectCatalogService.GetServicesPolicy:output_type -> kodex.projects.v1.ServicesPolicyResponse
	96,  // 240: kodex.projects.v1.ProjectCatalogService.ListServiceDescriptors:output_type -> kodex.projects.v1.ListServiceDescriptorsResponse
	98,  // 241: kodex.projects.v1.ProjectCatalogService.CreatePolicyEditProposal:output_type -> kodex.projects.v1.PolicyEditProposalResponse
	101, // 242: kodex.projects.v1.ProjectCatalogService.CreatePolicyOverride:output_type -> kodex.projects.v1.PolicyOverrideResponse
	101, // 243: kodex.projects.v1.ProjectCatalogService.CancelPolicyOverride:output_type -> kodex.projects.v1.PolicyOverrideResponse
	103, // 244: kodex.projects.v1.ProjectCatalogService.ListPolicyOverrides:output_type -> kodex.projects.v1.ListPolicyOverridesResponse
	105, // 245: kodex.projects.v1.ProjectCatalogService.PutDocumentationSource:output_type -> kodex.projects.v1.DocumentationSourceResponse
	105, // 246: kodex.projects.v1.ProjectCatalogService.GetDocumentationSource:output_type -> kodex.projects.v1.DocumentationSourceResponse
	108, // 247: kodex.projects.v1.ProjectCatalogService.ListDocumentationSources:output_type -> kodex.projects.v1.ListDocumentationSourcesResponse
	110, // 248: kodex.projects.v1.ProjectCatalogService.GetWorkspacePolicy:output_type -> kodex.projects.v1.WorkspacePolicyResponse
	112, // 249: kodex.projects.v1.ProjectCatalogService.PutBranchRules:output_type -> kodex.projects.v1.BranchRulesResponse
	112, // 250: kodex.projects.v1.ProjectCatalogService.GetBranchRules:output_type -> kodex.projects.v1.BranchRulesResponse
	115, // 251: kodex.projects.v1.ProjectCatalogService.ListBranchRules:output_type -> kodex.projects.v1.ListBranchRulesResponse
	117, // 252: kodex.projects.v1.ProjectCatalogService.PutReleasePolicy:output_type -> kodex.projects.v1.ReleasePolicyResponse
	117, // 253: kodex.projects.v1.ProjectCatalogService.GetReleasePolicy:output_type -> kodex.projects.v1.ReleasePolicyResponse
	120, // 254: kodex.projects.v1.ProjectCatalogService.ListReleasePolicies:output_type -> kodex.projects.v1.ListReleasePoliciesResponse
	122, // 255: kodex.projects.v1.ProjectCatalogService.PutReleaseLine:output_type -> kodex.projects.v1.ReleaseLineResponse
	122, // 256: kodex.projects.v1.ProjectCatalogService.GetReleaseLine:output_type -> kodex.projects.v1.ReleaseLineResponse
	125, // 257: kodex.projects.v1.ProjectCatalogService.ListReleaseLines:output_type -> kodex.projects.v1.ListReleaseLinesResponse
	127, // 258: kodex.projects.v1.ProjectCatalogService.PutPlacementPolicy:output_type -> kodex.projects.v1.PlacementPolicyResponse
	127, // 259: kodex.projects.v1.ProjectCatalogService.GetPlacementPolicy:output_type -> kodex.projects.v1.PlacementPolicyResponse
	130, // 260: kodex.projects.v1.ProjectCatalogService.ListPlacementPolicies:output_type -> kodex.projects.v1.ListPlacementPoliciesResponse
	221, // [221:261] is the sub-list for method output_type
	181, // [181:221] is the sub-list for method input_type
	181, // [181:181] is the sub-list for extension type_name
	181, // [181:181] is the sub-list for extension extendee
	0,   // [0:181] is the sub-list for field type_name
}

func init() { file_kodex_projects_v1_project_catalog_proto_init() }
func file_kodex_projects_v1_project_catalog_proto_init() {
	if File_kodex_projects_v1_project_catalog_proto != nil {
		return
	}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[0].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[2].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[4].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[5].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[6].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[7].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[10].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[11].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[12].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[14].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[15].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[16].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[17].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[18].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[19].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[20].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[21].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[22].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[23].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[24].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[25].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[26].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[28].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[29].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[32].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[33].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[34].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[37].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[39].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[40].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[43].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[44].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[46].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[50].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[51].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[52].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[55].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[60].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[61].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[62].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[63].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[64].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[65].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[66].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[67].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[71].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[74].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[76].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[79].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[83].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[86].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[88].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[93].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[96].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[98].OneofWrappers = []any{}
	file_kodex_projects_v1_project_catalog_proto_msgTypes[101].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_kodex_projects_v1_project_catalog_proto_rawDesc), len(file_kodex_projects_v1_project_catalog_proto_rawDesc)),
			NumEnums:      28,
			NumMessages:   103,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_kodex_projects_v1_project_catalog_proto_goTypes,
		DependencyIndexes: file_kodex_projects_v1_project_catalog_proto_depIdxs,
		EnumInfos:         file_kodex_projects_v1_project_catalog_proto_enumTypes,
		MessageInfos:      file_kodex_projects_v1_project_catalog_proto_msgTypes,
	}.Build()
	File_kodex_projects_v1_project_catalog_proto = out.File
	file_kodex_projects_v1_project_catalog_proto_goTypes = nil
	file_kodex_projects_v1_project_catalog_proto_depIdxs = nil
}
