// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v6.33.4
// source: plugin.proto

package plugin_pb

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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

type WorkKind int32

const (
	WorkKind_WORK_KIND_UNSPECIFIED WorkKind = 0
	WorkKind_WORK_KIND_DETECTION   WorkKind = 1
	WorkKind_WORK_KIND_EXECUTION   WorkKind = 2
)

// Enum value maps for WorkKind.
var (
	WorkKind_name = map[int32]string{
		0: "WORK_KIND_UNSPECIFIED",
		1: "WORK_KIND_DETECTION",
		2: "WORK_KIND_EXECUTION",
	}
	WorkKind_value = map[string]int32{
		"WORK_KIND_UNSPECIFIED": 0,
		"WORK_KIND_DETECTION":   1,
		"WORK_KIND_EXECUTION":   2,
	}
)

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

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

func (WorkKind) Descriptor() protoreflect.EnumDescriptor {
	return file_plugin_proto_enumTypes[0].Descriptor()
}

func (WorkKind) Type() protoreflect.EnumType {
	return &file_plugin_proto_enumTypes[0]
}

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

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

type JobPriority int32

const (
	JobPriority_JOB_PRIORITY_UNSPECIFIED JobPriority = 0
	JobPriority_JOB_PRIORITY_LOW         JobPriority = 1
	JobPriority_JOB_PRIORITY_NORMAL      JobPriority = 2
	JobPriority_JOB_PRIORITY_HIGH        JobPriority = 3
	JobPriority_JOB_PRIORITY_CRITICAL    JobPriority = 4
)

// Enum value maps for JobPriority.
var (
	JobPriority_name = map[int32]string{
		0: "JOB_PRIORITY_UNSPECIFIED",
		1: "JOB_PRIORITY_LOW",
		2: "JOB_PRIORITY_NORMAL",
		3: "JOB_PRIORITY_HIGH",
		4: "JOB_PRIORITY_CRITICAL",
	}
	JobPriority_value = map[string]int32{
		"JOB_PRIORITY_UNSPECIFIED": 0,
		"JOB_PRIORITY_LOW":         1,
		"JOB_PRIORITY_NORMAL":      2,
		"JOB_PRIORITY_HIGH":        3,
		"JOB_PRIORITY_CRITICAL":    4,
	}
)

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

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

func (JobPriority) Descriptor() protoreflect.EnumDescriptor {
	return file_plugin_proto_enumTypes[1].Descriptor()
}

func (JobPriority) Type() protoreflect.EnumType {
	return &file_plugin_proto_enumTypes[1]
}

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

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

type JobState int32

const (
	JobState_JOB_STATE_UNSPECIFIED JobState = 0
	JobState_JOB_STATE_PENDING     JobState = 1
	JobState_JOB_STATE_ASSIGNED    JobState = 2
	JobState_JOB_STATE_RUNNING     JobState = 3
	JobState_JOB_STATE_SUCCEEDED   JobState = 4
	JobState_JOB_STATE_FAILED      JobState = 5
	JobState_JOB_STATE_CANCELED    JobState = 6
)

// Enum value maps for JobState.
var (
	JobState_name = map[int32]string{
		0: "JOB_STATE_UNSPECIFIED",
		1: "JOB_STATE_PENDING",
		2: "JOB_STATE_ASSIGNED",
		3: "JOB_STATE_RUNNING",
		4: "JOB_STATE_SUCCEEDED",
		5: "JOB_STATE_FAILED",
		6: "JOB_STATE_CANCELED",
	}
	JobState_value = map[string]int32{
		"JOB_STATE_UNSPECIFIED": 0,
		"JOB_STATE_PENDING":     1,
		"JOB_STATE_ASSIGNED":    2,
		"JOB_STATE_RUNNING":     3,
		"JOB_STATE_SUCCEEDED":   4,
		"JOB_STATE_FAILED":      5,
		"JOB_STATE_CANCELED":    6,
	}
)

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

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

func (JobState) Descriptor() protoreflect.EnumDescriptor {
	return file_plugin_proto_enumTypes[2].Descriptor()
}

func (JobState) Type() protoreflect.EnumType {
	return &file_plugin_proto_enumTypes[2]
}

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

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

type ConfigFieldType int32

const (
	ConfigFieldType_CONFIG_FIELD_TYPE_UNSPECIFIED ConfigFieldType = 0
	ConfigFieldType_CONFIG_FIELD_TYPE_BOOL        ConfigFieldType = 1
	ConfigFieldType_CONFIG_FIELD_TYPE_INT64       ConfigFieldType = 2
	ConfigFieldType_CONFIG_FIELD_TYPE_DOUBLE      ConfigFieldType = 3
	ConfigFieldType_CONFIG_FIELD_TYPE_STRING      ConfigFieldType = 4
	ConfigFieldType_CONFIG_FIELD_TYPE_BYTES       ConfigFieldType = 5
	ConfigFieldType_CONFIG_FIELD_TYPE_DURATION    ConfigFieldType = 6
	ConfigFieldType_CONFIG_FIELD_TYPE_ENUM        ConfigFieldType = 7
	ConfigFieldType_CONFIG_FIELD_TYPE_LIST        ConfigFieldType = 8
	ConfigFieldType_CONFIG_FIELD_TYPE_OBJECT      ConfigFieldType = 9
)

// Enum value maps for ConfigFieldType.
var (
	ConfigFieldType_name = map[int32]string{
		0: "CONFIG_FIELD_TYPE_UNSPECIFIED",
		1: "CONFIG_FIELD_TYPE_BOOL",
		2: "CONFIG_FIELD_TYPE_INT64",
		3: "CONFIG_FIELD_TYPE_DOUBLE",
		4: "CONFIG_FIELD_TYPE_STRING",
		5: "CONFIG_FIELD_TYPE_BYTES",
		6: "CONFIG_FIELD_TYPE_DURATION",
		7: "CONFIG_FIELD_TYPE_ENUM",
		8: "CONFIG_FIELD_TYPE_LIST",
		9: "CONFIG_FIELD_TYPE_OBJECT",
	}
	ConfigFieldType_value = map[string]int32{
		"CONFIG_FIELD_TYPE_UNSPECIFIED": 0,
		"CONFIG_FIELD_TYPE_BOOL":        1,
		"CONFIG_FIELD_TYPE_INT64":       2,
		"CONFIG_FIELD_TYPE_DOUBLE":      3,
		"CONFIG_FIELD_TYPE_STRING":      4,
		"CONFIG_FIELD_TYPE_BYTES":       5,
		"CONFIG_FIELD_TYPE_DURATION":    6,
		"CONFIG_FIELD_TYPE_ENUM":        7,
		"CONFIG_FIELD_TYPE_LIST":        8,
		"CONFIG_FIELD_TYPE_OBJECT":      9,
	}
)

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

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

func (ConfigFieldType) Descriptor() protoreflect.EnumDescriptor {
	return file_plugin_proto_enumTypes[3].Descriptor()
}

func (ConfigFieldType) Type() protoreflect.EnumType {
	return &file_plugin_proto_enumTypes[3]
}

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

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

type ConfigWidget int32

const (
	ConfigWidget_CONFIG_WIDGET_UNSPECIFIED  ConfigWidget = 0
	ConfigWidget_CONFIG_WIDGET_TOGGLE       ConfigWidget = 1
	ConfigWidget_CONFIG_WIDGET_TEXT         ConfigWidget = 2
	ConfigWidget_CONFIG_WIDGET_TEXTAREA     ConfigWidget = 3
	ConfigWidget_CONFIG_WIDGET_NUMBER       ConfigWidget = 4
	ConfigWidget_CONFIG_WIDGET_SELECT       ConfigWidget = 5
	ConfigWidget_CONFIG_WIDGET_MULTI_SELECT ConfigWidget = 6
	ConfigWidget_CONFIG_WIDGET_DURATION     ConfigWidget = 7
	ConfigWidget_CONFIG_WIDGET_PASSWORD     ConfigWidget = 8
)

// Enum value maps for ConfigWidget.
var (
	ConfigWidget_name = map[int32]string{
		0: "CONFIG_WIDGET_UNSPECIFIED",
		1: "CONFIG_WIDGET_TOGGLE",
		2: "CONFIG_WIDGET_TEXT",
		3: "CONFIG_WIDGET_TEXTAREA",
		4: "CONFIG_WIDGET_NUMBER",
		5: "CONFIG_WIDGET_SELECT",
		6: "CONFIG_WIDGET_MULTI_SELECT",
		7: "CONFIG_WIDGET_DURATION",
		8: "CONFIG_WIDGET_PASSWORD",
	}
	ConfigWidget_value = map[string]int32{
		"CONFIG_WIDGET_UNSPECIFIED":  0,
		"CONFIG_WIDGET_TOGGLE":       1,
		"CONFIG_WIDGET_TEXT":         2,
		"CONFIG_WIDGET_TEXTAREA":     3,
		"CONFIG_WIDGET_NUMBER":       4,
		"CONFIG_WIDGET_SELECT":       5,
		"CONFIG_WIDGET_MULTI_SELECT": 6,
		"CONFIG_WIDGET_DURATION":     7,
		"CONFIG_WIDGET_PASSWORD":     8,
	}
)

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

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

func (ConfigWidget) Descriptor() protoreflect.EnumDescriptor {
	return file_plugin_proto_enumTypes[4].Descriptor()
}

func (ConfigWidget) Type() protoreflect.EnumType {
	return &file_plugin_proto_enumTypes[4]
}

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

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

type ValidationRuleType int32

const (
	ValidationRuleType_VALIDATION_RULE_TYPE_UNSPECIFIED ValidationRuleType = 0
	ValidationRuleType_VALIDATION_RULE_TYPE_REGEX       ValidationRuleType = 1
	ValidationRuleType_VALIDATION_RULE_TYPE_MIN_LENGTH  ValidationRuleType = 2
	ValidationRuleType_VALIDATION_RULE_TYPE_MAX_LENGTH  ValidationRuleType = 3
	ValidationRuleType_VALIDATION_RULE_TYPE_MIN_ITEMS   ValidationRuleType = 4
	ValidationRuleType_VALIDATION_RULE_TYPE_MAX_ITEMS   ValidationRuleType = 5
	ValidationRuleType_VALIDATION_RULE_TYPE_CUSTOM      ValidationRuleType = 6
)

// Enum value maps for ValidationRuleType.
var (
	ValidationRuleType_name = map[int32]string{
		0: "VALIDATION_RULE_TYPE_UNSPECIFIED",
		1: "VALIDATION_RULE_TYPE_REGEX",
		2: "VALIDATION_RULE_TYPE_MIN_LENGTH",
		3: "VALIDATION_RULE_TYPE_MAX_LENGTH",
		4: "VALIDATION_RULE_TYPE_MIN_ITEMS",
		5: "VALIDATION_RULE_TYPE_MAX_ITEMS",
		6: "VALIDATION_RULE_TYPE_CUSTOM",
	}
	ValidationRuleType_value = map[string]int32{
		"VALIDATION_RULE_TYPE_UNSPECIFIED": 0,
		"VALIDATION_RULE_TYPE_REGEX":       1,
		"VALIDATION_RULE_TYPE_MIN_LENGTH":  2,
		"VALIDATION_RULE_TYPE_MAX_LENGTH":  3,
		"VALIDATION_RULE_TYPE_MIN_ITEMS":   4,
		"VALIDATION_RULE_TYPE_MAX_ITEMS":   5,
		"VALIDATION_RULE_TYPE_CUSTOM":      6,
	}
)

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

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

func (ValidationRuleType) Descriptor() protoreflect.EnumDescriptor {
	return file_plugin_proto_enumTypes[5].Descriptor()
}

func (ValidationRuleType) Type() protoreflect.EnumType {
	return &file_plugin_proto_enumTypes[5]
}

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

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

type ActivitySource int32

const (
	ActivitySource_ACTIVITY_SOURCE_UNSPECIFIED ActivitySource = 0
	ActivitySource_ACTIVITY_SOURCE_ADMIN       ActivitySource = 1
	ActivitySource_ACTIVITY_SOURCE_DETECTOR    ActivitySource = 2
	ActivitySource_ACTIVITY_SOURCE_EXECUTOR    ActivitySource = 3
)

// Enum value maps for ActivitySource.
var (
	ActivitySource_name = map[int32]string{
		0: "ACTIVITY_SOURCE_UNSPECIFIED",
		1: "ACTIVITY_SOURCE_ADMIN",
		2: "ACTIVITY_SOURCE_DETECTOR",
		3: "ACTIVITY_SOURCE_EXECUTOR",
	}
	ActivitySource_value = map[string]int32{
		"ACTIVITY_SOURCE_UNSPECIFIED": 0,
		"ACTIVITY_SOURCE_ADMIN":       1,
		"ACTIVITY_SOURCE_DETECTOR":    2,
		"ACTIVITY_SOURCE_EXECUTOR":    3,
	}
)

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

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

func (ActivitySource) Descriptor() protoreflect.EnumDescriptor {
	return file_plugin_proto_enumTypes[6].Descriptor()
}

func (ActivitySource) Type() protoreflect.EnumType {
	return &file_plugin_proto_enumTypes[6]
}

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

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

// WorkerToAdminMessage carries worker-originated events and responses.
type WorkerToAdminMessage struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	WorkerId string                 `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"`
	SentAt   *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=sent_at,json=sentAt,proto3" json:"sent_at,omitempty"`
	// Types that are valid to be assigned to Body:
	//
	//	*WorkerToAdminMessage_Hello
	//	*WorkerToAdminMessage_Heartbeat
	//	*WorkerToAdminMessage_Acknowledge
	//	*WorkerToAdminMessage_ConfigSchemaResponse
	//	*WorkerToAdminMessage_DetectionProposals
	//	*WorkerToAdminMessage_DetectionComplete
	//	*WorkerToAdminMessage_JobProgressUpdate
	//	*WorkerToAdminMessage_JobCompleted
	//	*WorkerToAdminMessage_Observations
	//	*WorkerToAdminMessage_ObjectPreviewResponse
	Body          isWorkerToAdminMessage_Body `protobuf_oneof:"body"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkerToAdminMessage) ProtoMessage() {}

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

func (x *WorkerToAdminMessage) GetWorkerId() string {
	if x != nil {
		return x.WorkerId
	}
	return ""
}

func (x *WorkerToAdminMessage) GetSentAt() *timestamppb.Timestamp {
	if x != nil {
		return x.SentAt
	}
	return nil
}

func (x *WorkerToAdminMessage) GetBody() isWorkerToAdminMessage_Body {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *WorkerToAdminMessage) GetHello() *WorkerHello {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_Hello); ok {
			return x.Hello
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetHeartbeat() *WorkerHeartbeat {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_Heartbeat); ok {
			return x.Heartbeat
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetAcknowledge() *WorkerAcknowledge {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_Acknowledge); ok {
			return x.Acknowledge
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetConfigSchemaResponse() *ConfigSchemaResponse {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_ConfigSchemaResponse); ok {
			return x.ConfigSchemaResponse
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetDetectionProposals() *DetectionProposals {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_DetectionProposals); ok {
			return x.DetectionProposals
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetDetectionComplete() *DetectionComplete {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_DetectionComplete); ok {
			return x.DetectionComplete
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetJobProgressUpdate() *JobProgressUpdate {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_JobProgressUpdate); ok {
			return x.JobProgressUpdate
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetJobCompleted() *JobCompleted {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_JobCompleted); ok {
			return x.JobCompleted
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetObservations() *WorkerObservations {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_Observations); ok {
			return x.Observations
		}
	}
	return nil
}

func (x *WorkerToAdminMessage) GetObjectPreviewResponse() *ObjectPreviewResponse {
	if x != nil {
		if x, ok := x.Body.(*WorkerToAdminMessage_ObjectPreviewResponse); ok {
			return x.ObjectPreviewResponse
		}
	}
	return nil
}

type isWorkerToAdminMessage_Body interface {
	isWorkerToAdminMessage_Body()
}

type WorkerToAdminMessage_Hello struct {
	Hello *WorkerHello `protobuf:"bytes,10,opt,name=hello,proto3,oneof"`
}

type WorkerToAdminMessage_Heartbeat struct {
	Heartbeat *WorkerHeartbeat `protobuf:"bytes,11,opt,name=heartbeat,proto3,oneof"`
}

type WorkerToAdminMessage_Acknowledge struct {
	Acknowledge *WorkerAcknowledge `protobuf:"bytes,12,opt,name=acknowledge,proto3,oneof"`
}

type WorkerToAdminMessage_ConfigSchemaResponse struct {
	ConfigSchemaResponse *ConfigSchemaResponse `protobuf:"bytes,13,opt,name=config_schema_response,json=configSchemaResponse,proto3,oneof"`
}

type WorkerToAdminMessage_DetectionProposals struct {
	DetectionProposals *DetectionProposals `protobuf:"bytes,14,opt,name=detection_proposals,json=detectionProposals,proto3,oneof"`
}

type WorkerToAdminMessage_DetectionComplete struct {
	DetectionComplete *DetectionComplete `protobuf:"bytes,15,opt,name=detection_complete,json=detectionComplete,proto3,oneof"`
}

type WorkerToAdminMessage_JobProgressUpdate struct {
	JobProgressUpdate *JobProgressUpdate `protobuf:"bytes,16,opt,name=job_progress_update,json=jobProgressUpdate,proto3,oneof"`
}

type WorkerToAdminMessage_JobCompleted struct {
	JobCompleted *JobCompleted `protobuf:"bytes,17,opt,name=job_completed,json=jobCompleted,proto3,oneof"`
}

type WorkerToAdminMessage_Observations struct {
	Observations *WorkerObservations `protobuf:"bytes,18,opt,name=observations,proto3,oneof"`
}

type WorkerToAdminMessage_ObjectPreviewResponse struct {
	ObjectPreviewResponse *ObjectPreviewResponse `protobuf:"bytes,19,opt,name=object_preview_response,json=objectPreviewResponse,proto3,oneof"`
}

func (*WorkerToAdminMessage_Hello) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_Heartbeat) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_Acknowledge) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_ConfigSchemaResponse) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_DetectionProposals) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_DetectionComplete) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_JobProgressUpdate) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_JobCompleted) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_Observations) isWorkerToAdminMessage_Body() {}

func (*WorkerToAdminMessage_ObjectPreviewResponse) isWorkerToAdminMessage_Body() {}

// AdminToWorkerMessage carries commands and lifecycle notifications from admin.
type AdminToWorkerMessage struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	RequestId string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	SentAt    *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=sent_at,json=sentAt,proto3" json:"sent_at,omitempty"`
	// Types that are valid to be assigned to Body:
	//
	//	*AdminToWorkerMessage_Hello
	//	*AdminToWorkerMessage_RequestConfigSchema
	//	*AdminToWorkerMessage_RunDetectionRequest
	//	*AdminToWorkerMessage_ExecuteJobRequest
	//	*AdminToWorkerMessage_CancelRequest
	//	*AdminToWorkerMessage_Shutdown
	//	*AdminToWorkerMessage_RequestObjectPreview
	Body          isAdminToWorkerMessage_Body `protobuf_oneof:"body"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdminToWorkerMessage) ProtoMessage() {}

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

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

func (x *AdminToWorkerMessage) GetSentAt() *timestamppb.Timestamp {
	if x != nil {
		return x.SentAt
	}
	return nil
}

func (x *AdminToWorkerMessage) GetBody() isAdminToWorkerMessage_Body {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *AdminToWorkerMessage) GetHello() *AdminHello {
	if x != nil {
		if x, ok := x.Body.(*AdminToWorkerMessage_Hello); ok {
			return x.Hello
		}
	}
	return nil
}

func (x *AdminToWorkerMessage) GetRequestConfigSchema() *RequestConfigSchema {
	if x != nil {
		if x, ok := x.Body.(*AdminToWorkerMessage_RequestConfigSchema); ok {
			return x.RequestConfigSchema
		}
	}
	return nil
}

func (x *AdminToWorkerMessage) GetRunDetectionRequest() *RunDetectionRequest {
	if x != nil {
		if x, ok := x.Body.(*AdminToWorkerMessage_RunDetectionRequest); ok {
			return x.RunDetectionRequest
		}
	}
	return nil
}

func (x *AdminToWorkerMessage) GetExecuteJobRequest() *ExecuteJobRequest {
	if x != nil {
		if x, ok := x.Body.(*AdminToWorkerMessage_ExecuteJobRequest); ok {
			return x.ExecuteJobRequest
		}
	}
	return nil
}

func (x *AdminToWorkerMessage) GetCancelRequest() *CancelRequest {
	if x != nil {
		if x, ok := x.Body.(*AdminToWorkerMessage_CancelRequest); ok {
			return x.CancelRequest
		}
	}
	return nil
}

func (x *AdminToWorkerMessage) GetShutdown() *AdminShutdown {
	if x != nil {
		if x, ok := x.Body.(*AdminToWorkerMessage_Shutdown); ok {
			return x.Shutdown
		}
	}
	return nil
}

func (x *AdminToWorkerMessage) GetRequestObjectPreview() *RequestObjectPreview {
	if x != nil {
		if x, ok := x.Body.(*AdminToWorkerMessage_RequestObjectPreview); ok {
			return x.RequestObjectPreview
		}
	}
	return nil
}

type isAdminToWorkerMessage_Body interface {
	isAdminToWorkerMessage_Body()
}

type AdminToWorkerMessage_Hello struct {
	Hello *AdminHello `protobuf:"bytes,10,opt,name=hello,proto3,oneof"`
}

type AdminToWorkerMessage_RequestConfigSchema struct {
	RequestConfigSchema *RequestConfigSchema `protobuf:"bytes,11,opt,name=request_config_schema,json=requestConfigSchema,proto3,oneof"`
}

type AdminToWorkerMessage_RunDetectionRequest struct {
	RunDetectionRequest *RunDetectionRequest `protobuf:"bytes,12,opt,name=run_detection_request,json=runDetectionRequest,proto3,oneof"`
}

type AdminToWorkerMessage_ExecuteJobRequest struct {
	ExecuteJobRequest *ExecuteJobRequest `protobuf:"bytes,13,opt,name=execute_job_request,json=executeJobRequest,proto3,oneof"`
}

type AdminToWorkerMessage_CancelRequest struct {
	CancelRequest *CancelRequest `protobuf:"bytes,14,opt,name=cancel_request,json=cancelRequest,proto3,oneof"`
}

type AdminToWorkerMessage_Shutdown struct {
	Shutdown *AdminShutdown `protobuf:"bytes,15,opt,name=shutdown,proto3,oneof"`
}

type AdminToWorkerMessage_RequestObjectPreview struct {
	RequestObjectPreview *RequestObjectPreview `protobuf:"bytes,16,opt,name=request_object_preview,json=requestObjectPreview,proto3,oneof"`
}

func (*AdminToWorkerMessage_Hello) isAdminToWorkerMessage_Body() {}

func (*AdminToWorkerMessage_RequestConfigSchema) isAdminToWorkerMessage_Body() {}

func (*AdminToWorkerMessage_RunDetectionRequest) isAdminToWorkerMessage_Body() {}

func (*AdminToWorkerMessage_ExecuteJobRequest) isAdminToWorkerMessage_Body() {}

func (*AdminToWorkerMessage_CancelRequest) isAdminToWorkerMessage_Body() {}

func (*AdminToWorkerMessage_Shutdown) isAdminToWorkerMessage_Body() {}

func (*AdminToWorkerMessage_RequestObjectPreview) isAdminToWorkerMessage_Body() {}

type WorkerHello struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	WorkerId         string                 `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"`
	WorkerInstanceId string                 `protobuf:"bytes,2,opt,name=worker_instance_id,json=workerInstanceId,proto3" json:"worker_instance_id,omitempty"`
	Address          string                 `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
	WorkerVersion    string                 `protobuf:"bytes,4,opt,name=worker_version,json=workerVersion,proto3" json:"worker_version,omitempty"`
	ProtocolVersion  string                 `protobuf:"bytes,5,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"`
	Capabilities     []*JobTypeCapability   `protobuf:"bytes,6,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
	Metadata         map[string]string      `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

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

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

func (*WorkerHello) ProtoMessage() {}

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

func (x *WorkerHello) GetWorkerId() string {
	if x != nil {
		return x.WorkerId
	}
	return ""
}

func (x *WorkerHello) GetWorkerInstanceId() string {
	if x != nil {
		return x.WorkerInstanceId
	}
	return ""
}

func (x *WorkerHello) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *WorkerHello) GetWorkerVersion() string {
	if x != nil {
		return x.WorkerVersion
	}
	return ""
}

func (x *WorkerHello) GetProtocolVersion() string {
	if x != nil {
		return x.ProtocolVersion
	}
	return ""
}

func (x *WorkerHello) GetCapabilities() []*JobTypeCapability {
	if x != nil {
		return x.Capabilities
	}
	return nil
}

func (x *WorkerHello) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

type AdminHello struct {
	state                    protoimpl.MessageState `protogen:"open.v1"`
	Accepted                 bool                   `protobuf:"varint,1,opt,name=accepted,proto3" json:"accepted,omitempty"`
	Message                  string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	HeartbeatIntervalSeconds int32                  `protobuf:"varint,3,opt,name=heartbeat_interval_seconds,json=heartbeatIntervalSeconds,proto3" json:"heartbeat_interval_seconds,omitempty"`
	ReconnectDelaySeconds    int32                  `protobuf:"varint,4,opt,name=reconnect_delay_seconds,json=reconnectDelaySeconds,proto3" json:"reconnect_delay_seconds,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

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

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

func (*AdminHello) ProtoMessage() {}

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

func (x *AdminHello) GetAccepted() bool {
	if x != nil {
		return x.Accepted
	}
	return false
}

func (x *AdminHello) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *AdminHello) GetHeartbeatIntervalSeconds() int32 {
	if x != nil {
		return x.HeartbeatIntervalSeconds
	}
	return 0
}

func (x *AdminHello) GetReconnectDelaySeconds() int32 {
	if x != nil {
		return x.ReconnectDelaySeconds
	}
	return 0
}

type WorkerHeartbeat struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	WorkerId            string                 `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"`
	RunningWork         []*RunningWork         `protobuf:"bytes,2,rep,name=running_work,json=runningWork,proto3" json:"running_work,omitempty"`
	DetectionSlotsUsed  int32                  `protobuf:"varint,3,opt,name=detection_slots_used,json=detectionSlotsUsed,proto3" json:"detection_slots_used,omitempty"`
	DetectionSlotsTotal int32                  `protobuf:"varint,4,opt,name=detection_slots_total,json=detectionSlotsTotal,proto3" json:"detection_slots_total,omitempty"`
	ExecutionSlotsUsed  int32                  `protobuf:"varint,5,opt,name=execution_slots_used,json=executionSlotsUsed,proto3" json:"execution_slots_used,omitempty"`
	ExecutionSlotsTotal int32                  `protobuf:"varint,6,opt,name=execution_slots_total,json=executionSlotsTotal,proto3" json:"execution_slots_total,omitempty"`
	QueuedJobsByType    map[string]int32       `protobuf:"bytes,7,rep,name=queued_jobs_by_type,json=queuedJobsByType,proto3" json:"queued_jobs_by_type,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	Metadata            map[string]string      `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*WorkerHeartbeat) ProtoMessage() {}

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

func (x *WorkerHeartbeat) GetWorkerId() string {
	if x != nil {
		return x.WorkerId
	}
	return ""
}

func (x *WorkerHeartbeat) GetRunningWork() []*RunningWork {
	if x != nil {
		return x.RunningWork
	}
	return nil
}

func (x *WorkerHeartbeat) GetDetectionSlotsUsed() int32 {
	if x != nil {
		return x.DetectionSlotsUsed
	}
	return 0
}

func (x *WorkerHeartbeat) GetDetectionSlotsTotal() int32 {
	if x != nil {
		return x.DetectionSlotsTotal
	}
	return 0
}

func (x *WorkerHeartbeat) GetExecutionSlotsUsed() int32 {
	if x != nil {
		return x.ExecutionSlotsUsed
	}
	return 0
}

func (x *WorkerHeartbeat) GetExecutionSlotsTotal() int32 {
	if x != nil {
		return x.ExecutionSlotsTotal
	}
	return 0
}

func (x *WorkerHeartbeat) GetQueuedJobsByType() map[string]int32 {
	if x != nil {
		return x.QueuedJobsByType
	}
	return nil
}

func (x *WorkerHeartbeat) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

type WorkerAcknowledge struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Accepted      bool                   `protobuf:"varint,2,opt,name=accepted,proto3" json:"accepted,omitempty"`
	Message       string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkerAcknowledge) ProtoMessage() {}

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

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

func (x *WorkerAcknowledge) GetAccepted() bool {
	if x != nil {
		return x.Accepted
	}
	return false
}

func (x *WorkerAcknowledge) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

type RunningWork struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	WorkId          string                 `protobuf:"bytes,1,opt,name=work_id,json=workId,proto3" json:"work_id,omitempty"`
	Kind            WorkKind               `protobuf:"varint,2,opt,name=kind,proto3,enum=plugin.WorkKind" json:"kind,omitempty"`
	JobType         string                 `protobuf:"bytes,3,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	State           JobState               `protobuf:"varint,4,opt,name=state,proto3,enum=plugin.JobState" json:"state,omitempty"`
	ProgressPercent float64                `protobuf:"fixed64,5,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"`
	Stage           string                 `protobuf:"bytes,6,opt,name=stage,proto3" json:"stage,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*RunningWork) ProtoMessage() {}

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

func (x *RunningWork) GetWorkId() string {
	if x != nil {
		return x.WorkId
	}
	return ""
}

func (x *RunningWork) GetKind() WorkKind {
	if x != nil {
		return x.Kind
	}
	return WorkKind_WORK_KIND_UNSPECIFIED
}

func (x *RunningWork) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *RunningWork) GetState() JobState {
	if x != nil {
		return x.State
	}
	return JobState_JOB_STATE_UNSPECIFIED
}

func (x *RunningWork) GetProgressPercent() float64 {
	if x != nil {
		return x.ProgressPercent
	}
	return 0
}

func (x *RunningWork) GetStage() string {
	if x != nil {
		return x.Stage
	}
	return ""
}

type JobTypeCapability struct {
	state                   protoimpl.MessageState `protogen:"open.v1"`
	JobType                 string                 `protobuf:"bytes,1,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	CanDetect               bool                   `protobuf:"varint,2,opt,name=can_detect,json=canDetect,proto3" json:"can_detect,omitempty"`
	CanExecute              bool                   `protobuf:"varint,3,opt,name=can_execute,json=canExecute,proto3" json:"can_execute,omitempty"`
	MaxDetectionConcurrency int32                  `protobuf:"varint,4,opt,name=max_detection_concurrency,json=maxDetectionConcurrency,proto3" json:"max_detection_concurrency,omitempty"`
	MaxExecutionConcurrency int32                  `protobuf:"varint,5,opt,name=max_execution_concurrency,json=maxExecutionConcurrency,proto3" json:"max_execution_concurrency,omitempty"`
	DisplayName             string                 `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	Description             string                 `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
	Weight                  int32                  `protobuf:"varint,8,opt,name=weight,proto3" json:"weight,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

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

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

func (*JobTypeCapability) ProtoMessage() {}

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

func (x *JobTypeCapability) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *JobTypeCapability) GetCanDetect() bool {
	if x != nil {
		return x.CanDetect
	}
	return false
}

func (x *JobTypeCapability) GetCanExecute() bool {
	if x != nil {
		return x.CanExecute
	}
	return false
}

func (x *JobTypeCapability) GetMaxDetectionConcurrency() int32 {
	if x != nil {
		return x.MaxDetectionConcurrency
	}
	return 0
}

func (x *JobTypeCapability) GetMaxExecutionConcurrency() int32 {
	if x != nil {
		return x.MaxExecutionConcurrency
	}
	return 0
}

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

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

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

type RequestConfigSchema struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	JobType       string                 `protobuf:"bytes,1,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	ForceRefresh  bool                   `protobuf:"varint,2,opt,name=force_refresh,json=forceRefresh,proto3" json:"force_refresh,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RequestConfigSchema) ProtoMessage() {}

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

func (x *RequestConfigSchema) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *RequestConfigSchema) GetForceRefresh() bool {
	if x != nil {
		return x.ForceRefresh
	}
	return false
}

type ConfigSchemaResponse struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	RequestId         string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	JobType           string                 `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	Success           bool                   `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`
	ErrorMessage      string                 `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	JobTypeDescriptor *JobTypeDescriptor     `protobuf:"bytes,5,opt,name=job_type_descriptor,json=jobTypeDescriptor,proto3" json:"job_type_descriptor,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*ConfigSchemaResponse) ProtoMessage() {}

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

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

func (x *ConfigSchemaResponse) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *ConfigSchemaResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *ConfigSchemaResponse) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

func (x *ConfigSchemaResponse) GetJobTypeDescriptor() *JobTypeDescriptor {
	if x != nil {
		return x.JobTypeDescriptor
	}
	return nil
}

// JobTypeDescriptor defines one job type contract, including UI schema and defaults.
type JobTypeDescriptor struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	JobType           string                 `protobuf:"bytes,1,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	DisplayName       string                 `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	Description       string                 `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	Icon              string                 `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
	DescriptorVersion uint32                 `protobuf:"varint,5,opt,name=descriptor_version,json=descriptorVersion,proto3" json:"descriptor_version,omitempty"`
	// Admin-owned options such as detection frequency and dispatch concurrency.
	AdminConfigForm *ConfigForm `protobuf:"bytes,6,opt,name=admin_config_form,json=adminConfigForm,proto3" json:"admin_config_form,omitempty"`
	// Worker-owned options used during detection and execution.
	WorkerConfigForm     *ConfigForm             `protobuf:"bytes,7,opt,name=worker_config_form,json=workerConfigForm,proto3" json:"worker_config_form,omitempty"`
	AdminRuntimeDefaults *AdminRuntimeDefaults   `protobuf:"bytes,8,opt,name=admin_runtime_defaults,json=adminRuntimeDefaults,proto3" json:"admin_runtime_defaults,omitempty"`
	WorkerDefaultValues  map[string]*ConfigValue `protobuf:"bytes,9,rep,name=worker_default_values,json=workerDefaultValues,proto3" json:"worker_default_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

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

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

func (*JobTypeDescriptor) ProtoMessage() {}

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

func (x *JobTypeDescriptor) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

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

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

func (x *JobTypeDescriptor) GetIcon() string {
	if x != nil {
		return x.Icon
	}
	return ""
}

func (x *JobTypeDescriptor) GetDescriptorVersion() uint32 {
	if x != nil {
		return x.DescriptorVersion
	}
	return 0
}

func (x *JobTypeDescriptor) GetAdminConfigForm() *ConfigForm {
	if x != nil {
		return x.AdminConfigForm
	}
	return nil
}

func (x *JobTypeDescriptor) GetWorkerConfigForm() *ConfigForm {
	if x != nil {
		return x.WorkerConfigForm
	}
	return nil
}

func (x *JobTypeDescriptor) GetAdminRuntimeDefaults() *AdminRuntimeDefaults {
	if x != nil {
		return x.AdminRuntimeDefaults
	}
	return nil
}

func (x *JobTypeDescriptor) GetWorkerDefaultValues() map[string]*ConfigValue {
	if x != nil {
		return x.WorkerDefaultValues
	}
	return nil
}

type ConfigForm struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	FormId        string                  `protobuf:"bytes,1,opt,name=form_id,json=formId,proto3" json:"form_id,omitempty"`
	Title         string                  `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Description   string                  `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	Sections      []*ConfigSection        `protobuf:"bytes,4,rep,name=sections,proto3" json:"sections,omitempty"`
	DefaultValues map[string]*ConfigValue `protobuf:"bytes,5,rep,name=default_values,json=defaultValues,proto3" json:"default_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConfigForm) ProtoMessage() {}

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

func (x *ConfigForm) GetFormId() string {
	if x != nil {
		return x.FormId
	}
	return ""
}

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

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

func (x *ConfigForm) GetSections() []*ConfigSection {
	if x != nil {
		return x.Sections
	}
	return nil
}

func (x *ConfigForm) GetDefaultValues() map[string]*ConfigValue {
	if x != nil {
		return x.DefaultValues
	}
	return nil
}

type ConfigSection struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SectionId     string                 `protobuf:"bytes,1,opt,name=section_id,json=sectionId,proto3" json:"section_id,omitempty"`
	Title         string                 `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Description   string                 `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	Fields        []*ConfigField         `protobuf:"bytes,4,rep,name=fields,proto3" json:"fields,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConfigSection) ProtoMessage() {}

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

func (x *ConfigSection) GetSectionId() string {
	if x != nil {
		return x.SectionId
	}
	return ""
}

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

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

func (x *ConfigSection) GetFields() []*ConfigField {
	if x != nil {
		return x.Fields
	}
	return nil
}

type ConfigField struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Name            string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Label           string                 `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
	Description     string                 `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	HelpText        string                 `protobuf:"bytes,4,opt,name=help_text,json=helpText,proto3" json:"help_text,omitempty"`
	Placeholder     string                 `protobuf:"bytes,5,opt,name=placeholder,proto3" json:"placeholder,omitempty"`
	FieldType       ConfigFieldType        `protobuf:"varint,6,opt,name=field_type,json=fieldType,proto3,enum=plugin.ConfigFieldType" json:"field_type,omitempty"`
	Widget          ConfigWidget           `protobuf:"varint,7,opt,name=widget,proto3,enum=plugin.ConfigWidget" json:"widget,omitempty"`
	Required        bool                   `protobuf:"varint,8,opt,name=required,proto3" json:"required,omitempty"`
	ReadOnly        bool                   `protobuf:"varint,9,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"`
	Sensitive       bool                   `protobuf:"varint,10,opt,name=sensitive,proto3" json:"sensitive,omitempty"`
	MinValue        *ConfigValue           `protobuf:"bytes,11,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"`
	MaxValue        *ConfigValue           `protobuf:"bytes,12,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"`
	Options         []*ConfigOption        `protobuf:"bytes,13,rep,name=options,proto3" json:"options,omitempty"`
	ValidationRules []*ValidationRule      `protobuf:"bytes,14,rep,name=validation_rules,json=validationRules,proto3" json:"validation_rules,omitempty"`
	// Simple visibility dependency: show this field when the referenced field equals value.
	VisibleWhenField  string       `protobuf:"bytes,15,opt,name=visible_when_field,json=visibleWhenField,proto3" json:"visible_when_field,omitempty"`
	VisibleWhenEquals *ConfigValue `protobuf:"bytes,16,opt,name=visible_when_equals,json=visibleWhenEquals,proto3" json:"visible_when_equals,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*ConfigField) ProtoMessage() {}

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

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

func (x *ConfigField) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

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

func (x *ConfigField) GetHelpText() string {
	if x != nil {
		return x.HelpText
	}
	return ""
}

func (x *ConfigField) GetPlaceholder() string {
	if x != nil {
		return x.Placeholder
	}
	return ""
}

func (x *ConfigField) GetFieldType() ConfigFieldType {
	if x != nil {
		return x.FieldType
	}
	return ConfigFieldType_CONFIG_FIELD_TYPE_UNSPECIFIED
}

func (x *ConfigField) GetWidget() ConfigWidget {
	if x != nil {
		return x.Widget
	}
	return ConfigWidget_CONFIG_WIDGET_UNSPECIFIED
}

func (x *ConfigField) GetRequired() bool {
	if x != nil {
		return x.Required
	}
	return false
}

func (x *ConfigField) GetReadOnly() bool {
	if x != nil {
		return x.ReadOnly
	}
	return false
}

func (x *ConfigField) GetSensitive() bool {
	if x != nil {
		return x.Sensitive
	}
	return false
}

func (x *ConfigField) GetMinValue() *ConfigValue {
	if x != nil {
		return x.MinValue
	}
	return nil
}

func (x *ConfigField) GetMaxValue() *ConfigValue {
	if x != nil {
		return x.MaxValue
	}
	return nil
}

func (x *ConfigField) GetOptions() []*ConfigOption {
	if x != nil {
		return x.Options
	}
	return nil
}

func (x *ConfigField) GetValidationRules() []*ValidationRule {
	if x != nil {
		return x.ValidationRules
	}
	return nil
}

func (x *ConfigField) GetVisibleWhenField() string {
	if x != nil {
		return x.VisibleWhenField
	}
	return ""
}

func (x *ConfigField) GetVisibleWhenEquals() *ConfigValue {
	if x != nil {
		return x.VisibleWhenEquals
	}
	return nil
}

type ConfigOption struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Value         string                 `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
	Label         string                 `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
	Description   string                 `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	Disabled      bool                   `protobuf:"varint,4,opt,name=disabled,proto3" json:"disabled,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConfigOption) ProtoMessage() {}

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

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

func (x *ConfigOption) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

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

func (x *ConfigOption) GetDisabled() bool {
	if x != nil {
		return x.Disabled
	}
	return false
}

type ValidationRule struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          ValidationRuleType     `protobuf:"varint,1,opt,name=type,proto3,enum=plugin.ValidationRuleType" json:"type,omitempty"`
	Expression    string                 `protobuf:"bytes,2,opt,name=expression,proto3" json:"expression,omitempty"`
	ErrorMessage  string                 `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ValidationRule) ProtoMessage() {}

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

func (x *ValidationRule) GetType() ValidationRuleType {
	if x != nil {
		return x.Type
	}
	return ValidationRuleType_VALIDATION_RULE_TYPE_UNSPECIFIED
}

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

func (x *ValidationRule) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

type ConfigValue struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*ConfigValue_BoolValue
	//	*ConfigValue_Int64Value
	//	*ConfigValue_DoubleValue
	//	*ConfigValue_StringValue
	//	*ConfigValue_BytesValue
	//	*ConfigValue_DurationValue
	//	*ConfigValue_StringList
	//	*ConfigValue_Int64List
	//	*ConfigValue_DoubleList
	//	*ConfigValue_BoolList
	//	*ConfigValue_ListValue
	//	*ConfigValue_MapValue
	Kind          isConfigValue_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConfigValue) ProtoMessage() {}

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

func (x *ConfigValue) GetKind() isConfigValue_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *ConfigValue) GetBoolValue() bool {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_BoolValue); ok {
			return x.BoolValue
		}
	}
	return false
}

func (x *ConfigValue) GetInt64Value() int64 {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_Int64Value); ok {
			return x.Int64Value
		}
	}
	return 0
}

func (x *ConfigValue) GetDoubleValue() float64 {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_DoubleValue); ok {
			return x.DoubleValue
		}
	}
	return 0
}

func (x *ConfigValue) GetStringValue() string {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_StringValue); ok {
			return x.StringValue
		}
	}
	return ""
}

func (x *ConfigValue) GetBytesValue() []byte {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_BytesValue); ok {
			return x.BytesValue
		}
	}
	return nil
}

func (x *ConfigValue) GetDurationValue() *durationpb.Duration {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_DurationValue); ok {
			return x.DurationValue
		}
	}
	return nil
}

func (x *ConfigValue) GetStringList() *StringList {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_StringList); ok {
			return x.StringList
		}
	}
	return nil
}

func (x *ConfigValue) GetInt64List() *Int64List {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_Int64List); ok {
			return x.Int64List
		}
	}
	return nil
}

func (x *ConfigValue) GetDoubleList() *DoubleList {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_DoubleList); ok {
			return x.DoubleList
		}
	}
	return nil
}

func (x *ConfigValue) GetBoolList() *BoolList {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_BoolList); ok {
			return x.BoolList
		}
	}
	return nil
}

func (x *ConfigValue) GetListValue() *ValueList {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_ListValue); ok {
			return x.ListValue
		}
	}
	return nil
}

func (x *ConfigValue) GetMapValue() *ValueMap {
	if x != nil {
		if x, ok := x.Kind.(*ConfigValue_MapValue); ok {
			return x.MapValue
		}
	}
	return nil
}

type isConfigValue_Kind interface {
	isConfigValue_Kind()
}

type ConfigValue_BoolValue struct {
	BoolValue bool `protobuf:"varint,1,opt,name=bool_value,json=boolValue,proto3,oneof"`
}

type ConfigValue_Int64Value struct {
	Int64Value int64 `protobuf:"varint,2,opt,name=int64_value,json=int64Value,proto3,oneof"`
}

type ConfigValue_DoubleValue struct {
	DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,proto3,oneof"`
}

type ConfigValue_StringValue struct {
	StringValue string `protobuf:"bytes,4,opt,name=string_value,json=stringValue,proto3,oneof"`
}

type ConfigValue_BytesValue struct {
	BytesValue []byte `protobuf:"bytes,5,opt,name=bytes_value,json=bytesValue,proto3,oneof"`
}

type ConfigValue_DurationValue struct {
	DurationValue *durationpb.Duration `protobuf:"bytes,6,opt,name=duration_value,json=durationValue,proto3,oneof"`
}

type ConfigValue_StringList struct {
	StringList *StringList `protobuf:"bytes,7,opt,name=string_list,json=stringList,proto3,oneof"`
}

type ConfigValue_Int64List struct {
	Int64List *Int64List `protobuf:"bytes,8,opt,name=int64_list,json=int64List,proto3,oneof"`
}

type ConfigValue_DoubleList struct {
	DoubleList *DoubleList `protobuf:"bytes,9,opt,name=double_list,json=doubleList,proto3,oneof"`
}

type ConfigValue_BoolList struct {
	BoolList *BoolList `protobuf:"bytes,10,opt,name=bool_list,json=boolList,proto3,oneof"`
}

type ConfigValue_ListValue struct {
	ListValue *ValueList `protobuf:"bytes,11,opt,name=list_value,json=listValue,proto3,oneof"`
}

type ConfigValue_MapValue struct {
	MapValue *ValueMap `protobuf:"bytes,12,opt,name=map_value,json=mapValue,proto3,oneof"`
}

func (*ConfigValue_BoolValue) isConfigValue_Kind() {}

func (*ConfigValue_Int64Value) isConfigValue_Kind() {}

func (*ConfigValue_DoubleValue) isConfigValue_Kind() {}

func (*ConfigValue_StringValue) isConfigValue_Kind() {}

func (*ConfigValue_BytesValue) isConfigValue_Kind() {}

func (*ConfigValue_DurationValue) isConfigValue_Kind() {}

func (*ConfigValue_StringList) isConfigValue_Kind() {}

func (*ConfigValue_Int64List) isConfigValue_Kind() {}

func (*ConfigValue_DoubleList) isConfigValue_Kind() {}

func (*ConfigValue_BoolList) isConfigValue_Kind() {}

func (*ConfigValue_ListValue) isConfigValue_Kind() {}

func (*ConfigValue_MapValue) isConfigValue_Kind() {}

type StringList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []string               `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StringList) ProtoMessage() {}

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

func (x *StringList) GetValues() []string {
	if x != nil {
		return x.Values
	}
	return nil
}

type Int64List struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []int64                `protobuf:"varint,1,rep,packed,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Int64List) ProtoMessage() {}

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

func (x *Int64List) GetValues() []int64 {
	if x != nil {
		return x.Values
	}
	return nil
}

type DoubleList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []float64              `protobuf:"fixed64,1,rep,packed,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DoubleList) ProtoMessage() {}

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

func (x *DoubleList) GetValues() []float64 {
	if x != nil {
		return x.Values
	}
	return nil
}

type BoolList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []bool                 `protobuf:"varint,1,rep,packed,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BoolList) ProtoMessage() {}

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

func (x *BoolList) GetValues() []bool {
	if x != nil {
		return x.Values
	}
	return nil
}

type ValueList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []*ConfigValue         `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ValueList) ProtoMessage() {}

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

func (x *ValueList) GetValues() []*ConfigValue {
	if x != nil {
		return x.Values
	}
	return nil
}

type ValueMap struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	Fields        map[string]*ConfigValue `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ValueMap) ProtoMessage() {}

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

func (x *ValueMap) GetFields() map[string]*ConfigValue {
	if x != nil {
		return x.Fields
	}
	return nil
}

type AdminRuntimeDefaults struct {
	state                         protoimpl.MessageState `protogen:"open.v1"`
	Enabled                       bool                   `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	DetectionIntervalMinutes      int32                  `protobuf:"varint,2,opt,name=detection_interval_minutes,json=detectionIntervalMinutes,proto3" json:"detection_interval_minutes,omitempty"`
	DetectionTimeoutSeconds       int32                  `protobuf:"varint,3,opt,name=detection_timeout_seconds,json=detectionTimeoutSeconds,proto3" json:"detection_timeout_seconds,omitempty"`
	MaxJobsPerDetection           int32                  `protobuf:"varint,4,opt,name=max_jobs_per_detection,json=maxJobsPerDetection,proto3" json:"max_jobs_per_detection,omitempty"`
	GlobalExecutionConcurrency    int32                  `protobuf:"varint,5,opt,name=global_execution_concurrency,json=globalExecutionConcurrency,proto3" json:"global_execution_concurrency,omitempty"`
	PerWorkerExecutionConcurrency int32                  `protobuf:"varint,6,opt,name=per_worker_execution_concurrency,json=perWorkerExecutionConcurrency,proto3" json:"per_worker_execution_concurrency,omitempty"`
	RetryLimit                    int32                  `protobuf:"varint,7,opt,name=retry_limit,json=retryLimit,proto3" json:"retry_limit,omitempty"`
	RetryBackoffSeconds           int32                  `protobuf:"varint,8,opt,name=retry_backoff_seconds,json=retryBackoffSeconds,proto3" json:"retry_backoff_seconds,omitempty"`
	JobTypeMaxRuntimeSeconds      int32                  `protobuf:"varint,9,opt,name=job_type_max_runtime_seconds,json=jobTypeMaxRuntimeSeconds,proto3" json:"job_type_max_runtime_seconds,omitempty"`
	// Per-attempt execution deadline for one job. Distinct from
	// detection_timeout (which bounds the detection scan) and
	// job_type_max_runtime (a lane-wide budget across all attempts).
	ExecutionTimeoutSeconds int32 `protobuf:"varint,10,opt,name=execution_timeout_seconds,json=executionTimeoutSeconds,proto3" json:"execution_timeout_seconds,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

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

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

func (*AdminRuntimeDefaults) ProtoMessage() {}

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

func (x *AdminRuntimeDefaults) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *AdminRuntimeDefaults) GetDetectionIntervalMinutes() int32 {
	if x != nil {
		return x.DetectionIntervalMinutes
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetDetectionTimeoutSeconds() int32 {
	if x != nil {
		return x.DetectionTimeoutSeconds
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetMaxJobsPerDetection() int32 {
	if x != nil {
		return x.MaxJobsPerDetection
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetGlobalExecutionConcurrency() int32 {
	if x != nil {
		return x.GlobalExecutionConcurrency
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetPerWorkerExecutionConcurrency() int32 {
	if x != nil {
		return x.PerWorkerExecutionConcurrency
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetRetryLimit() int32 {
	if x != nil {
		return x.RetryLimit
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetRetryBackoffSeconds() int32 {
	if x != nil {
		return x.RetryBackoffSeconds
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetJobTypeMaxRuntimeSeconds() int32 {
	if x != nil {
		return x.JobTypeMaxRuntimeSeconds
	}
	return 0
}

func (x *AdminRuntimeDefaults) GetExecutionTimeoutSeconds() int32 {
	if x != nil {
		return x.ExecutionTimeoutSeconds
	}
	return 0
}

type AdminRuntimeConfig struct {
	state                         protoimpl.MessageState `protogen:"open.v1"`
	Enabled                       bool                   `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	DetectionIntervalMinutes      int32                  `protobuf:"varint,2,opt,name=detection_interval_minutes,json=detectionIntervalMinutes,proto3" json:"detection_interval_minutes,omitempty"`
	DetectionTimeoutSeconds       int32                  `protobuf:"varint,3,opt,name=detection_timeout_seconds,json=detectionTimeoutSeconds,proto3" json:"detection_timeout_seconds,omitempty"`
	MaxJobsPerDetection           int32                  `protobuf:"varint,4,opt,name=max_jobs_per_detection,json=maxJobsPerDetection,proto3" json:"max_jobs_per_detection,omitempty"`
	GlobalExecutionConcurrency    int32                  `protobuf:"varint,5,opt,name=global_execution_concurrency,json=globalExecutionConcurrency,proto3" json:"global_execution_concurrency,omitempty"`
	PerWorkerExecutionConcurrency int32                  `protobuf:"varint,6,opt,name=per_worker_execution_concurrency,json=perWorkerExecutionConcurrency,proto3" json:"per_worker_execution_concurrency,omitempty"`
	RetryLimit                    int32                  `protobuf:"varint,7,opt,name=retry_limit,json=retryLimit,proto3" json:"retry_limit,omitempty"`
	RetryBackoffSeconds           int32                  `protobuf:"varint,8,opt,name=retry_backoff_seconds,json=retryBackoffSeconds,proto3" json:"retry_backoff_seconds,omitempty"`
	JobTypeMaxRuntimeSeconds      int32                  `protobuf:"varint,9,opt,name=job_type_max_runtime_seconds,json=jobTypeMaxRuntimeSeconds,proto3" json:"job_type_max_runtime_seconds,omitempty"`
	ExecutionTimeoutSeconds       int32                  `protobuf:"varint,10,opt,name=execution_timeout_seconds,json=executionTimeoutSeconds,proto3" json:"execution_timeout_seconds,omitempty"`
	unknownFields                 protoimpl.UnknownFields
	sizeCache                     protoimpl.SizeCache
}

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

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

func (*AdminRuntimeConfig) ProtoMessage() {}

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

func (x *AdminRuntimeConfig) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *AdminRuntimeConfig) GetDetectionIntervalMinutes() int32 {
	if x != nil {
		return x.DetectionIntervalMinutes
	}
	return 0
}

func (x *AdminRuntimeConfig) GetDetectionTimeoutSeconds() int32 {
	if x != nil {
		return x.DetectionTimeoutSeconds
	}
	return 0
}

func (x *AdminRuntimeConfig) GetMaxJobsPerDetection() int32 {
	if x != nil {
		return x.MaxJobsPerDetection
	}
	return 0
}

func (x *AdminRuntimeConfig) GetGlobalExecutionConcurrency() int32 {
	if x != nil {
		return x.GlobalExecutionConcurrency
	}
	return 0
}

func (x *AdminRuntimeConfig) GetPerWorkerExecutionConcurrency() int32 {
	if x != nil {
		return x.PerWorkerExecutionConcurrency
	}
	return 0
}

func (x *AdminRuntimeConfig) GetRetryLimit() int32 {
	if x != nil {
		return x.RetryLimit
	}
	return 0
}

func (x *AdminRuntimeConfig) GetRetryBackoffSeconds() int32 {
	if x != nil {
		return x.RetryBackoffSeconds
	}
	return 0
}

func (x *AdminRuntimeConfig) GetJobTypeMaxRuntimeSeconds() int32 {
	if x != nil {
		return x.JobTypeMaxRuntimeSeconds
	}
	return 0
}

func (x *AdminRuntimeConfig) GetExecutionTimeoutSeconds() int32 {
	if x != nil {
		return x.ExecutionTimeoutSeconds
	}
	return 0
}

type RunDetectionRequest struct {
	state              protoimpl.MessageState  `protogen:"open.v1"`
	RequestId          string                  `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	JobType            string                  `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	DetectionSequence  int64                   `protobuf:"varint,3,opt,name=detection_sequence,json=detectionSequence,proto3" json:"detection_sequence,omitempty"`
	AdminRuntime       *AdminRuntimeConfig     `protobuf:"bytes,4,opt,name=admin_runtime,json=adminRuntime,proto3" json:"admin_runtime,omitempty"`
	AdminConfigValues  map[string]*ConfigValue `protobuf:"bytes,5,rep,name=admin_config_values,json=adminConfigValues,proto3" json:"admin_config_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	WorkerConfigValues map[string]*ConfigValue `protobuf:"bytes,6,rep,name=worker_config_values,json=workerConfigValues,proto3" json:"worker_config_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	ClusterContext     *ClusterContext         `protobuf:"bytes,7,opt,name=cluster_context,json=clusterContext,proto3" json:"cluster_context,omitempty"`
	LastSuccessfulRun  *timestamppb.Timestamp  `protobuf:"bytes,8,opt,name=last_successful_run,json=lastSuccessfulRun,proto3" json:"last_successful_run,omitempty"`
	MaxResults         int32                   `protobuf:"varint,9,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*RunDetectionRequest) ProtoMessage() {}

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

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

func (x *RunDetectionRequest) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *RunDetectionRequest) GetDetectionSequence() int64 {
	if x != nil {
		return x.DetectionSequence
	}
	return 0
}

func (x *RunDetectionRequest) GetAdminRuntime() *AdminRuntimeConfig {
	if x != nil {
		return x.AdminRuntime
	}
	return nil
}

func (x *RunDetectionRequest) GetAdminConfigValues() map[string]*ConfigValue {
	if x != nil {
		return x.AdminConfigValues
	}
	return nil
}

func (x *RunDetectionRequest) GetWorkerConfigValues() map[string]*ConfigValue {
	if x != nil {
		return x.WorkerConfigValues
	}
	return nil
}

func (x *RunDetectionRequest) GetClusterContext() *ClusterContext {
	if x != nil {
		return x.ClusterContext
	}
	return nil
}

func (x *RunDetectionRequest) GetLastSuccessfulRun() *timestamppb.Timestamp {
	if x != nil {
		return x.LastSuccessfulRun
	}
	return nil
}

func (x *RunDetectionRequest) GetMaxResults() int32 {
	if x != nil {
		return x.MaxResults
	}
	return 0
}

type DetectionProposals struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	JobType       string                 `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	Proposals     []*JobProposal         `protobuf:"bytes,3,rep,name=proposals,proto3" json:"proposals,omitempty"`
	HasMore       bool                   `protobuf:"varint,4,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DetectionProposals) ProtoMessage() {}

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

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

func (x *DetectionProposals) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *DetectionProposals) GetProposals() []*JobProposal {
	if x != nil {
		return x.Proposals
	}
	return nil
}

func (x *DetectionProposals) GetHasMore() bool {
	if x != nil {
		return x.HasMore
	}
	return false
}

type DetectionComplete struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	RequestId      string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	JobType        string                 `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	Success        bool                   `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`
	ErrorMessage   string                 `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	TotalProposals int32                  `protobuf:"varint,5,opt,name=total_proposals,json=totalProposals,proto3" json:"total_proposals,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*DetectionComplete) ProtoMessage() {}

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

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

func (x *DetectionComplete) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *DetectionComplete) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *DetectionComplete) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

func (x *DetectionComplete) GetTotalProposals() int32 {
	if x != nil {
		return x.TotalProposals
	}
	return 0
}

type JobProposal struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	ProposalId    string                  `protobuf:"bytes,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"`
	DedupeKey     string                  `protobuf:"bytes,2,opt,name=dedupe_key,json=dedupeKey,proto3" json:"dedupe_key,omitempty"`
	JobType       string                  `protobuf:"bytes,3,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	Priority      JobPriority             `protobuf:"varint,4,opt,name=priority,proto3,enum=plugin.JobPriority" json:"priority,omitempty"`
	Summary       string                  `protobuf:"bytes,5,opt,name=summary,proto3" json:"summary,omitempty"`
	Detail        string                  `protobuf:"bytes,6,opt,name=detail,proto3" json:"detail,omitempty"`
	Parameters    map[string]*ConfigValue `protobuf:"bytes,7,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Labels        map[string]string       `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	NotBefore     *timestamppb.Timestamp  `protobuf:"bytes,9,opt,name=not_before,json=notBefore,proto3" json:"not_before,omitempty"`
	ExpiresAt     *timestamppb.Timestamp  `protobuf:"bytes,10,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JobProposal) ProtoMessage() {}

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

func (x *JobProposal) GetProposalId() string {
	if x != nil {
		return x.ProposalId
	}
	return ""
}

func (x *JobProposal) GetDedupeKey() string {
	if x != nil {
		return x.DedupeKey
	}
	return ""
}

func (x *JobProposal) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *JobProposal) GetPriority() JobPriority {
	if x != nil {
		return x.Priority
	}
	return JobPriority_JOB_PRIORITY_UNSPECIFIED
}

func (x *JobProposal) GetSummary() string {
	if x != nil {
		return x.Summary
	}
	return ""
}

func (x *JobProposal) GetDetail() string {
	if x != nil {
		return x.Detail
	}
	return ""
}

func (x *JobProposal) GetParameters() map[string]*ConfigValue {
	if x != nil {
		return x.Parameters
	}
	return nil
}

func (x *JobProposal) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *JobProposal) GetNotBefore() *timestamppb.Timestamp {
	if x != nil {
		return x.NotBefore
	}
	return nil
}

func (x *JobProposal) GetExpiresAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpiresAt
	}
	return nil
}

type ExecuteJobRequest struct {
	state              protoimpl.MessageState  `protogen:"open.v1"`
	RequestId          string                  `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Job                *JobSpec                `protobuf:"bytes,2,opt,name=job,proto3" json:"job,omitempty"`
	AdminRuntime       *AdminRuntimeConfig     `protobuf:"bytes,3,opt,name=admin_runtime,json=adminRuntime,proto3" json:"admin_runtime,omitempty"`
	AdminConfigValues  map[string]*ConfigValue `protobuf:"bytes,4,rep,name=admin_config_values,json=adminConfigValues,proto3" json:"admin_config_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	WorkerConfigValues map[string]*ConfigValue `protobuf:"bytes,5,rep,name=worker_config_values,json=workerConfigValues,proto3" json:"worker_config_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	ClusterContext     *ClusterContext         `protobuf:"bytes,6,opt,name=cluster_context,json=clusterContext,proto3" json:"cluster_context,omitempty"`
	Attempt            int32                   `protobuf:"varint,7,opt,name=attempt,proto3" json:"attempt,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*ExecuteJobRequest) ProtoMessage() {}

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

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

func (x *ExecuteJobRequest) GetJob() *JobSpec {
	if x != nil {
		return x.Job
	}
	return nil
}

func (x *ExecuteJobRequest) GetAdminRuntime() *AdminRuntimeConfig {
	if x != nil {
		return x.AdminRuntime
	}
	return nil
}

func (x *ExecuteJobRequest) GetAdminConfigValues() map[string]*ConfigValue {
	if x != nil {
		return x.AdminConfigValues
	}
	return nil
}

func (x *ExecuteJobRequest) GetWorkerConfigValues() map[string]*ConfigValue {
	if x != nil {
		return x.WorkerConfigValues
	}
	return nil
}

func (x *ExecuteJobRequest) GetClusterContext() *ClusterContext {
	if x != nil {
		return x.ClusterContext
	}
	return nil
}

func (x *ExecuteJobRequest) GetAttempt() int32 {
	if x != nil {
		return x.Attempt
	}
	return 0
}

type JobSpec struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	JobId         string                  `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	JobType       string                  `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	DedupeKey     string                  `protobuf:"bytes,3,opt,name=dedupe_key,json=dedupeKey,proto3" json:"dedupe_key,omitempty"`
	Priority      JobPriority             `protobuf:"varint,4,opt,name=priority,proto3,enum=plugin.JobPriority" json:"priority,omitempty"`
	Summary       string                  `protobuf:"bytes,5,opt,name=summary,proto3" json:"summary,omitempty"`
	Detail        string                  `protobuf:"bytes,6,opt,name=detail,proto3" json:"detail,omitempty"`
	Parameters    map[string]*ConfigValue `protobuf:"bytes,7,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Labels        map[string]string       `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	CreatedAt     *timestamppb.Timestamp  `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	ScheduledAt   *timestamppb.Timestamp  `protobuf:"bytes,10,opt,name=scheduled_at,json=scheduledAt,proto3" json:"scheduled_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JobSpec) ProtoMessage() {}

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

func (x *JobSpec) GetJobId() string {
	if x != nil {
		return x.JobId
	}
	return ""
}

func (x *JobSpec) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *JobSpec) GetDedupeKey() string {
	if x != nil {
		return x.DedupeKey
	}
	return ""
}

func (x *JobSpec) GetPriority() JobPriority {
	if x != nil {
		return x.Priority
	}
	return JobPriority_JOB_PRIORITY_UNSPECIFIED
}

func (x *JobSpec) GetSummary() string {
	if x != nil {
		return x.Summary
	}
	return ""
}

func (x *JobSpec) GetDetail() string {
	if x != nil {
		return x.Detail
	}
	return ""
}

func (x *JobSpec) GetParameters() map[string]*ConfigValue {
	if x != nil {
		return x.Parameters
	}
	return nil
}

func (x *JobSpec) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *JobSpec) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *JobSpec) GetScheduledAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ScheduledAt
	}
	return nil
}

type JobProgressUpdate struct {
	state           protoimpl.MessageState  `protogen:"open.v1"`
	RequestId       string                  `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	JobId           string                  `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	JobType         string                  `protobuf:"bytes,3,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	State           JobState                `protobuf:"varint,4,opt,name=state,proto3,enum=plugin.JobState" json:"state,omitempty"`
	ProgressPercent float64                 `protobuf:"fixed64,5,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"`
	Stage           string                  `protobuf:"bytes,6,opt,name=stage,proto3" json:"stage,omitempty"`
	Message         string                  `protobuf:"bytes,7,opt,name=message,proto3" json:"message,omitempty"`
	Metrics         map[string]*ConfigValue `protobuf:"bytes,8,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Activities      []*ActivityEvent        `protobuf:"bytes,9,rep,name=activities,proto3" json:"activities,omitempty"`
	UpdatedAt       *timestamppb.Timestamp  `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*JobProgressUpdate) ProtoMessage() {}

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

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

func (x *JobProgressUpdate) GetJobId() string {
	if x != nil {
		return x.JobId
	}
	return ""
}

func (x *JobProgressUpdate) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *JobProgressUpdate) GetState() JobState {
	if x != nil {
		return x.State
	}
	return JobState_JOB_STATE_UNSPECIFIED
}

func (x *JobProgressUpdate) GetProgressPercent() float64 {
	if x != nil {
		return x.ProgressPercent
	}
	return 0
}

func (x *JobProgressUpdate) GetStage() string {
	if x != nil {
		return x.Stage
	}
	return ""
}

func (x *JobProgressUpdate) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *JobProgressUpdate) GetMetrics() map[string]*ConfigValue {
	if x != nil {
		return x.Metrics
	}
	return nil
}

func (x *JobProgressUpdate) GetActivities() []*ActivityEvent {
	if x != nil {
		return x.Activities
	}
	return nil
}

func (x *JobProgressUpdate) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

type JobCompleted struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	JobId         string                 `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	JobType       string                 `protobuf:"bytes,3,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	Success       bool                   `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"`
	ErrorMessage  string                 `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	Result        *JobResult             `protobuf:"bytes,6,opt,name=result,proto3" json:"result,omitempty"`
	Activities    []*ActivityEvent       `protobuf:"bytes,7,rep,name=activities,proto3" json:"activities,omitempty"`
	CompletedAt   *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JobCompleted) ProtoMessage() {}

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

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

func (x *JobCompleted) GetJobId() string {
	if x != nil {
		return x.JobId
	}
	return ""
}

func (x *JobCompleted) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *JobCompleted) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *JobCompleted) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

func (x *JobCompleted) GetResult() *JobResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *JobCompleted) GetActivities() []*ActivityEvent {
	if x != nil {
		return x.Activities
	}
	return nil
}

func (x *JobCompleted) GetCompletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CompletedAt
	}
	return nil
}

type JobResult struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	OutputValues  map[string]*ConfigValue `protobuf:"bytes,1,rep,name=output_values,json=outputValues,proto3" json:"output_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Summary       string                  `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JobResult) ProtoMessage() {}

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

func (x *JobResult) GetOutputValues() map[string]*ConfigValue {
	if x != nil {
		return x.OutputValues
	}
	return nil
}

func (x *JobResult) GetSummary() string {
	if x != nil {
		return x.Summary
	}
	return ""
}

type ClusterContext struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	MasterGrpcAddresses []string               `protobuf:"bytes,1,rep,name=master_grpc_addresses,json=masterGrpcAddresses,proto3" json:"master_grpc_addresses,omitempty"`
	// Filers in pb.ServerAddress form (host:httpPort.grpcPort). Consumers
	// convert to a gRPC or HTTP address as needed; see weed/pb/server_address.go.
	FilerAddresses      []string          `protobuf:"bytes,2,rep,name=filer_addresses,json=filerAddresses,proto3" json:"filer_addresses,omitempty"`
	VolumeGrpcAddresses []string          `protobuf:"bytes,3,rep,name=volume_grpc_addresses,json=volumeGrpcAddresses,proto3" json:"volume_grpc_addresses,omitempty"`
	Metadata            map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	S3GrpcAddresses     []string          `protobuf:"bytes,5,rep,name=s3_grpc_addresses,json=s3GrpcAddresses,proto3" json:"s3_grpc_addresses,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*ClusterContext) ProtoMessage() {}

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

func (x *ClusterContext) GetMasterGrpcAddresses() []string {
	if x != nil {
		return x.MasterGrpcAddresses
	}
	return nil
}

func (x *ClusterContext) GetFilerAddresses() []string {
	if x != nil {
		return x.FilerAddresses
	}
	return nil
}

func (x *ClusterContext) GetVolumeGrpcAddresses() []string {
	if x != nil {
		return x.VolumeGrpcAddresses
	}
	return nil
}

func (x *ClusterContext) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *ClusterContext) GetS3GrpcAddresses() []string {
	if x != nil {
		return x.S3GrpcAddresses
	}
	return nil
}

type ActivityEvent struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	Source        ActivitySource          `protobuf:"varint,1,opt,name=source,proto3,enum=plugin.ActivitySource" json:"source,omitempty"`
	Message       string                  `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Stage         string                  `protobuf:"bytes,3,opt,name=stage,proto3" json:"stage,omitempty"`
	Details       map[string]*ConfigValue `protobuf:"bytes,4,rep,name=details,proto3" json:"details,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	CreatedAt     *timestamppb.Timestamp  `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ActivityEvent) ProtoMessage() {}

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

func (x *ActivityEvent) GetSource() ActivitySource {
	if x != nil {
		return x.Source
	}
	return ActivitySource_ACTIVITY_SOURCE_UNSPECIFIED
}

func (x *ActivityEvent) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *ActivityEvent) GetStage() string {
	if x != nil {
		return x.Stage
	}
	return ""
}

func (x *ActivityEvent) GetDetails() map[string]*ConfigValue {
	if x != nil {
		return x.Details
	}
	return nil
}

func (x *ActivityEvent) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

type CancelRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	TargetId      string                 `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
	TargetKind    WorkKind               `protobuf:"varint,2,opt,name=target_kind,json=targetKind,proto3,enum=plugin.WorkKind" json:"target_kind,omitempty"`
	Reason        string                 `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
	Force         bool                   `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CancelRequest) ProtoMessage() {}

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

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

func (x *CancelRequest) GetTargetKind() WorkKind {
	if x != nil {
		return x.TargetKind
	}
	return WorkKind_WORK_KIND_UNSPECIFIED
}

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

func (x *CancelRequest) GetForce() bool {
	if x != nil {
		return x.Force
	}
	return false
}

type AdminShutdown struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Reason             string                 `protobuf:"bytes,1,opt,name=reason,proto3" json:"reason,omitempty"`
	GracePeriodSeconds int32                  `protobuf:"varint,2,opt,name=grace_period_seconds,json=gracePeriodSeconds,proto3" json:"grace_period_seconds,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*AdminShutdown) ProtoMessage() {}

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

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

func (x *AdminShutdown) GetGracePeriodSeconds() int32 {
	if x != nil {
		return x.GracePeriodSeconds
	}
	return 0
}

// PersistedJobTypeConfig is the admin-side on-disk model per job type.
type PersistedJobTypeConfig struct {
	state              protoimpl.MessageState  `protogen:"open.v1"`
	JobType            string                  `protobuf:"bytes,1,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	DescriptorVersion  uint32                  `protobuf:"varint,2,opt,name=descriptor_version,json=descriptorVersion,proto3" json:"descriptor_version,omitempty"`
	AdminConfigValues  map[string]*ConfigValue `protobuf:"bytes,3,rep,name=admin_config_values,json=adminConfigValues,proto3" json:"admin_config_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	WorkerConfigValues map[string]*ConfigValue `protobuf:"bytes,4,rep,name=worker_config_values,json=workerConfigValues,proto3" json:"worker_config_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	AdminRuntime       *AdminRuntimeConfig     `protobuf:"bytes,5,opt,name=admin_runtime,json=adminRuntime,proto3" json:"admin_runtime,omitempty"`
	UpdatedAt          *timestamppb.Timestamp  `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	UpdatedBy          string                  `protobuf:"bytes,7,opt,name=updated_by,json=updatedBy,proto3" json:"updated_by,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*PersistedJobTypeConfig) ProtoMessage() {}

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

func (x *PersistedJobTypeConfig) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *PersistedJobTypeConfig) GetDescriptorVersion() uint32 {
	if x != nil {
		return x.DescriptorVersion
	}
	return 0
}

func (x *PersistedJobTypeConfig) GetAdminConfigValues() map[string]*ConfigValue {
	if x != nil {
		return x.AdminConfigValues
	}
	return nil
}

func (x *PersistedJobTypeConfig) GetWorkerConfigValues() map[string]*ConfigValue {
	if x != nil {
		return x.WorkerConfigValues
	}
	return nil
}

func (x *PersistedJobTypeConfig) GetAdminRuntime() *AdminRuntimeConfig {
	if x != nil {
		return x.AdminRuntime
	}
	return nil
}

func (x *PersistedJobTypeConfig) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

func (x *PersistedJobTypeConfig) GetUpdatedBy() string {
	if x != nil {
		return x.UpdatedBy
	}
	return ""
}

// WorkerObservations reports what a worker learned about the objects it
// inspected. A worker opens a table to decide whether it needs a job; what it
// saw is worth keeping either way, because for a format the cluster cannot
// read, the worker is the only thing that can describe it.
//
// Observations are not work. Admin caches them and serves them back, so a
// worker that goes away leaves its last ones standing rather than blanking a
// page.
type WorkerObservations struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	JobType       string                 `protobuf:"bytes,1,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	Observations  []*ObjectObservation   `protobuf:"bytes,2,rep,name=observations,proto3" json:"observations,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkerObservations) ProtoMessage() {}

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

func (x *WorkerObservations) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *WorkerObservations) GetObservations() []*ObjectObservation {
	if x != nil {
		return x.Observations
	}
	return nil
}

// ObjectObservation is one object as a worker last saw it.
type ObjectObservation struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Identifier of the object, e.g. ["bucket", "namespace", "table"].
	ObjectId []string `protobuf:"bytes,1,rep,name=object_id,json=objectId,proto3" json:"object_id,omitempty"`
	// What kind of object this is, e.g. "table".
	ObjectKind string `protobuf:"bytes,2,opt,name=object_kind,json=objectKind,proto3" json:"object_kind,omitempty"`
	// The object's format, e.g. "LANCE", so a reader can tell whose observation
	// this is without parsing the attributes.
	Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"`
	// Whatever the worker can cheaply say: schema, row count, fragment count.
	// The keys are the worker's to choose.
	Attributes    map[string]*ConfigValue `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	ObservedAt    *timestamppb.Timestamp  `protobuf:"bytes,5,opt,name=observed_at,json=observedAt,proto3" json:"observed_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ObjectObservation) ProtoMessage() {}

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

func (x *ObjectObservation) GetObjectId() []string {
	if x != nil {
		return x.ObjectId
	}
	return nil
}

func (x *ObjectObservation) GetObjectKind() string {
	if x != nil {
		return x.ObjectKind
	}
	return ""
}

func (x *ObjectObservation) GetFormat() string {
	if x != nil {
		return x.Format
	}
	return ""
}

func (x *ObjectObservation) GetAttributes() map[string]*ConfigValue {
	if x != nil {
		return x.Attributes
	}
	return nil
}

func (x *ObjectObservation) GetObservedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ObservedAt
	}
	return nil
}

// RequestObjectPreview asks a worker for sample rows of an object admin cannot
// read itself. Unlike an observation this is not cached: it is fetched when
// someone opens the page, because rows are the object's data rather than a
// description of it, and holding a copy in admin is neither fresh nor its
// business.
type RequestObjectPreview struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	ObjectId []string               `protobuf:"bytes,1,rep,name=object_id,json=objectId,proto3" json:"object_id,omitempty"`
	// The format admin believes this object is, so a worker that does not own it
	// can decline instead of guessing.
	Format        string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"`
	RowLimit      int32  `protobuf:"varint,3,opt,name=row_limit,json=rowLimit,proto3" json:"row_limit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RequestObjectPreview) ProtoMessage() {}

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

func (x *RequestObjectPreview) GetObjectId() []string {
	if x != nil {
		return x.ObjectId
	}
	return nil
}

func (x *RequestObjectPreview) GetFormat() string {
	if x != nil {
		return x.Format
	}
	return ""
}

func (x *RequestObjectPreview) GetRowLimit() int32 {
	if x != nil {
		return x.RowLimit
	}
	return 0
}

// ObjectPreviewResponse carries the sample back, already rendered as text. The
// worker is the only thing that knows the object's types, so it formats them;
// admin displays what it is given.
type ObjectPreviewResponse struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	RequestId    string                 `protobuf:"bytes,6,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Success      bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	ErrorMessage string                 `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	Columns      []string               `protobuf:"bytes,3,rep,name=columns,proto3" json:"columns,omitempty"`
	Rows         []*PreviewRow          `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"`
	// Rows in the object, which is not the number sampled.
	TotalRows     int64 `protobuf:"varint,5,opt,name=total_rows,json=totalRows,proto3" json:"total_rows,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ObjectPreviewResponse) ProtoMessage() {}

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

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

func (x *ObjectPreviewResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *ObjectPreviewResponse) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

func (x *ObjectPreviewResponse) GetColumns() []string {
	if x != nil {
		return x.Columns
	}
	return nil
}

func (x *ObjectPreviewResponse) GetRows() []*PreviewRow {
	if x != nil {
		return x.Rows
	}
	return nil
}

func (x *ObjectPreviewResponse) GetTotalRows() int64 {
	if x != nil {
		return x.TotalRows
	}
	return 0
}

type PreviewRow struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []string               `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PreviewRow) ProtoMessage() {}

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

func (x *PreviewRow) GetValues() []string {
	if x != nil {
		return x.Values
	}
	return nil
}

var File_plugin_proto protoreflect.FileDescriptor

const file_plugin_proto_rawDesc = "" +
	"\n" +
	"\fplugin.proto\x12\x06plugin\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xab\x06\n" +
	"\x14WorkerToAdminMessage\x12\x1b\n" +
	"\tworker_id\x18\x01 \x01(\tR\bworkerId\x123\n" +
	"\asent_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x06sentAt\x12+\n" +
	"\x05hello\x18\n" +
	" \x01(\v2\x13.plugin.WorkerHelloH\x00R\x05hello\x127\n" +
	"\theartbeat\x18\v \x01(\v2\x17.plugin.WorkerHeartbeatH\x00R\theartbeat\x12=\n" +
	"\vacknowledge\x18\f \x01(\v2\x19.plugin.WorkerAcknowledgeH\x00R\vacknowledge\x12T\n" +
	"\x16config_schema_response\x18\r \x01(\v2\x1c.plugin.ConfigSchemaResponseH\x00R\x14configSchemaResponse\x12M\n" +
	"\x13detection_proposals\x18\x0e \x01(\v2\x1a.plugin.DetectionProposalsH\x00R\x12detectionProposals\x12J\n" +
	"\x12detection_complete\x18\x0f \x01(\v2\x19.plugin.DetectionCompleteH\x00R\x11detectionComplete\x12K\n" +
	"\x13job_progress_update\x18\x10 \x01(\v2\x19.plugin.JobProgressUpdateH\x00R\x11jobProgressUpdate\x12;\n" +
	"\rjob_completed\x18\x11 \x01(\v2\x14.plugin.JobCompletedH\x00R\fjobCompleted\x12@\n" +
	"\fobservations\x18\x12 \x01(\v2\x1a.plugin.WorkerObservationsH\x00R\fobservations\x12W\n" +
	"\x17object_preview_response\x18\x13 \x01(\v2\x1d.plugin.ObjectPreviewResponseH\x00R\x15objectPreviewResponseB\x06\n" +
	"\x04body\"\xdc\x04\n" +
	"\x14AdminToWorkerMessage\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x123\n" +
	"\asent_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x06sentAt\x12*\n" +
	"\x05hello\x18\n" +
	" \x01(\v2\x12.plugin.AdminHelloH\x00R\x05hello\x12Q\n" +
	"\x15request_config_schema\x18\v \x01(\v2\x1b.plugin.RequestConfigSchemaH\x00R\x13requestConfigSchema\x12Q\n" +
	"\x15run_detection_request\x18\f \x01(\v2\x1b.plugin.RunDetectionRequestH\x00R\x13runDetectionRequest\x12K\n" +
	"\x13execute_job_request\x18\r \x01(\v2\x19.plugin.ExecuteJobRequestH\x00R\x11executeJobRequest\x12>\n" +
	"\x0ecancel_request\x18\x0e \x01(\v2\x15.plugin.CancelRequestH\x00R\rcancelRequest\x123\n" +
	"\bshutdown\x18\x0f \x01(\v2\x15.plugin.AdminShutdownH\x00R\bshutdown\x12T\n" +
	"\x16request_object_preview\x18\x10 \x01(\v2\x1c.plugin.RequestObjectPreviewH\x00R\x14requestObjectPreviewB\x06\n" +
	"\x04body\"\xff\x02\n" +
	"\vWorkerHello\x12\x1b\n" +
	"\tworker_id\x18\x01 \x01(\tR\bworkerId\x12,\n" +
	"\x12worker_instance_id\x18\x02 \x01(\tR\x10workerInstanceId\x12\x18\n" +
	"\aaddress\x18\x03 \x01(\tR\aaddress\x12%\n" +
	"\x0eworker_version\x18\x04 \x01(\tR\rworkerVersion\x12)\n" +
	"\x10protocol_version\x18\x05 \x01(\tR\x0fprotocolVersion\x12=\n" +
	"\fcapabilities\x18\x06 \x03(\v2\x19.plugin.JobTypeCapabilityR\fcapabilities\x12=\n" +
	"\bmetadata\x18\a \x03(\v2!.plugin.WorkerHello.MetadataEntryR\bmetadata\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb8\x01\n" +
	"\n" +
	"AdminHello\x12\x1a\n" +
	"\baccepted\x18\x01 \x01(\bR\baccepted\x12\x18\n" +
	"\amessage\x18\x02 \x01(\tR\amessage\x12<\n" +
	"\x1aheartbeat_interval_seconds\x18\x03 \x01(\x05R\x18heartbeatIntervalSeconds\x126\n" +
	"\x17reconnect_delay_seconds\x18\x04 \x01(\x05R\x15reconnectDelaySeconds\"\xd5\x04\n" +
	"\x0fWorkerHeartbeat\x12\x1b\n" +
	"\tworker_id\x18\x01 \x01(\tR\bworkerId\x126\n" +
	"\frunning_work\x18\x02 \x03(\v2\x13.plugin.RunningWorkR\vrunningWork\x120\n" +
	"\x14detection_slots_used\x18\x03 \x01(\x05R\x12detectionSlotsUsed\x122\n" +
	"\x15detection_slots_total\x18\x04 \x01(\x05R\x13detectionSlotsTotal\x120\n" +
	"\x14execution_slots_used\x18\x05 \x01(\x05R\x12executionSlotsUsed\x122\n" +
	"\x15execution_slots_total\x18\x06 \x01(\x05R\x13executionSlotsTotal\x12\\\n" +
	"\x13queued_jobs_by_type\x18\a \x03(\v2-.plugin.WorkerHeartbeat.QueuedJobsByTypeEntryR\x10queuedJobsByType\x12A\n" +
	"\bmetadata\x18\b \x03(\v2%.plugin.WorkerHeartbeat.MetadataEntryR\bmetadata\x1aC\n" +
	"\x15QueuedJobsByTypeEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"h\n" +
	"\x11WorkerAcknowledge\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x1a\n" +
	"\baccepted\x18\x02 \x01(\bR\baccepted\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\"\xd0\x01\n" +
	"\vRunningWork\x12\x17\n" +
	"\awork_id\x18\x01 \x01(\tR\x06workId\x12$\n" +
	"\x04kind\x18\x02 \x01(\x0e2\x10.plugin.WorkKindR\x04kind\x12\x19\n" +
	"\bjob_type\x18\x03 \x01(\tR\ajobType\x12&\n" +
	"\x05state\x18\x04 \x01(\x0e2\x10.plugin.JobStateR\x05state\x12)\n" +
	"\x10progress_percent\x18\x05 \x01(\x01R\x0fprogressPercent\x12\x14\n" +
	"\x05stage\x18\x06 \x01(\tR\x05stage\"\xc3\x02\n" +
	"\x11JobTypeCapability\x12\x19\n" +
	"\bjob_type\x18\x01 \x01(\tR\ajobType\x12\x1d\n" +
	"\n" +
	"can_detect\x18\x02 \x01(\bR\tcanDetect\x12\x1f\n" +
	"\vcan_execute\x18\x03 \x01(\bR\n" +
	"canExecute\x12:\n" +
	"\x19max_detection_concurrency\x18\x04 \x01(\x05R\x17maxDetectionConcurrency\x12:\n" +
	"\x19max_execution_concurrency\x18\x05 \x01(\x05R\x17maxExecutionConcurrency\x12!\n" +
	"\fdisplay_name\x18\x06 \x01(\tR\vdisplayName\x12 \n" +
	"\vdescription\x18\a \x01(\tR\vdescription\x12\x16\n" +
	"\x06weight\x18\b \x01(\x05R\x06weight\"U\n" +
	"\x13RequestConfigSchema\x12\x19\n" +
	"\bjob_type\x18\x01 \x01(\tR\ajobType\x12#\n" +
	"\rforce_refresh\x18\x02 \x01(\bR\fforceRefresh\"\xda\x01\n" +
	"\x14ConfigSchemaResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bjob_type\x18\x02 \x01(\tR\ajobType\x12\x18\n" +
	"\asuccess\x18\x03 \x01(\bR\asuccess\x12#\n" +
	"\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12I\n" +
	"\x13job_type_descriptor\x18\x05 \x01(\v2\x19.plugin.JobTypeDescriptorR\x11jobTypeDescriptor\"\xd1\x04\n" +
	"\x11JobTypeDescriptor\x12\x19\n" +
	"\bjob_type\x18\x01 \x01(\tR\ajobType\x12!\n" +
	"\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x12\n" +
	"\x04icon\x18\x04 \x01(\tR\x04icon\x12-\n" +
	"\x12descriptor_version\x18\x05 \x01(\rR\x11descriptorVersion\x12>\n" +
	"\x11admin_config_form\x18\x06 \x01(\v2\x12.plugin.ConfigFormR\x0fadminConfigForm\x12@\n" +
	"\x12worker_config_form\x18\a \x01(\v2\x12.plugin.ConfigFormR\x10workerConfigForm\x12R\n" +
	"\x16admin_runtime_defaults\x18\b \x01(\v2\x1c.plugin.AdminRuntimeDefaultsR\x14adminRuntimeDefaults\x12f\n" +
	"\x15worker_default_values\x18\t \x03(\v22.plugin.JobTypeDescriptor.WorkerDefaultValuesEntryR\x13workerDefaultValues\x1a[\n" +
	"\x18WorkerDefaultValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\xb5\x02\n" +
	"\n" +
	"ConfigForm\x12\x17\n" +
	"\aform_id\x18\x01 \x01(\tR\x06formId\x12\x14\n" +
	"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x121\n" +
	"\bsections\x18\x04 \x03(\v2\x15.plugin.ConfigSectionR\bsections\x12L\n" +
	"\x0edefault_values\x18\x05 \x03(\v2%.plugin.ConfigForm.DefaultValuesEntryR\rdefaultValues\x1aU\n" +
	"\x12DefaultValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\x93\x01\n" +
	"\rConfigSection\x12\x1d\n" +
	"\n" +
	"section_id\x18\x01 \x01(\tR\tsectionId\x12\x14\n" +
	"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12+\n" +
	"\x06fields\x18\x04 \x03(\v2\x13.plugin.ConfigFieldR\x06fields\"\x9f\x05\n" +
	"\vConfigField\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
	"\x05label\x18\x02 \x01(\tR\x05label\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1b\n" +
	"\thelp_text\x18\x04 \x01(\tR\bhelpText\x12 \n" +
	"\vplaceholder\x18\x05 \x01(\tR\vplaceholder\x126\n" +
	"\n" +
	"field_type\x18\x06 \x01(\x0e2\x17.plugin.ConfigFieldTypeR\tfieldType\x12,\n" +
	"\x06widget\x18\a \x01(\x0e2\x14.plugin.ConfigWidgetR\x06widget\x12\x1a\n" +
	"\brequired\x18\b \x01(\bR\brequired\x12\x1b\n" +
	"\tread_only\x18\t \x01(\bR\breadOnly\x12\x1c\n" +
	"\tsensitive\x18\n" +
	" \x01(\bR\tsensitive\x120\n" +
	"\tmin_value\x18\v \x01(\v2\x13.plugin.ConfigValueR\bminValue\x120\n" +
	"\tmax_value\x18\f \x01(\v2\x13.plugin.ConfigValueR\bmaxValue\x12.\n" +
	"\aoptions\x18\r \x03(\v2\x14.plugin.ConfigOptionR\aoptions\x12A\n" +
	"\x10validation_rules\x18\x0e \x03(\v2\x16.plugin.ValidationRuleR\x0fvalidationRules\x12,\n" +
	"\x12visible_when_field\x18\x0f \x01(\tR\x10visibleWhenField\x12C\n" +
	"\x13visible_when_equals\x18\x10 \x01(\v2\x13.plugin.ConfigValueR\x11visibleWhenEquals\"x\n" +
	"\fConfigOption\x12\x14\n" +
	"\x05value\x18\x01 \x01(\tR\x05value\x12\x14\n" +
	"\x05label\x18\x02 \x01(\tR\x05label\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1a\n" +
	"\bdisabled\x18\x04 \x01(\bR\bdisabled\"\x85\x01\n" +
	"\x0eValidationRule\x12.\n" +
	"\x04type\x18\x01 \x01(\x0e2\x1a.plugin.ValidationRuleTypeR\x04type\x12\x1e\n" +
	"\n" +
	"expression\x18\x02 \x01(\tR\n" +
	"expression\x12#\n" +
	"\rerror_message\x18\x03 \x01(\tR\ferrorMessage\"\xc2\x04\n" +
	"\vConfigValue\x12\x1f\n" +
	"\n" +
	"bool_value\x18\x01 \x01(\bH\x00R\tboolValue\x12!\n" +
	"\vint64_value\x18\x02 \x01(\x03H\x00R\n" +
	"int64Value\x12#\n" +
	"\fdouble_value\x18\x03 \x01(\x01H\x00R\vdoubleValue\x12#\n" +
	"\fstring_value\x18\x04 \x01(\tH\x00R\vstringValue\x12!\n" +
	"\vbytes_value\x18\x05 \x01(\fH\x00R\n" +
	"bytesValue\x12B\n" +
	"\x0eduration_value\x18\x06 \x01(\v2\x19.google.protobuf.DurationH\x00R\rdurationValue\x125\n" +
	"\vstring_list\x18\a \x01(\v2\x12.plugin.StringListH\x00R\n" +
	"stringList\x122\n" +
	"\n" +
	"int64_list\x18\b \x01(\v2\x11.plugin.Int64ListH\x00R\tint64List\x125\n" +
	"\vdouble_list\x18\t \x01(\v2\x12.plugin.DoubleListH\x00R\n" +
	"doubleList\x12/\n" +
	"\tbool_list\x18\n" +
	" \x01(\v2\x10.plugin.BoolListH\x00R\bboolList\x122\n" +
	"\n" +
	"list_value\x18\v \x01(\v2\x11.plugin.ValueListH\x00R\tlistValue\x12/\n" +
	"\tmap_value\x18\f \x01(\v2\x10.plugin.ValueMapH\x00R\bmapValueB\x06\n" +
	"\x04kind\"$\n" +
	"\n" +
	"StringList\x12\x16\n" +
	"\x06values\x18\x01 \x03(\tR\x06values\"#\n" +
	"\tInt64List\x12\x16\n" +
	"\x06values\x18\x01 \x03(\x03R\x06values\"$\n" +
	"\n" +
	"DoubleList\x12\x16\n" +
	"\x06values\x18\x01 \x03(\x01R\x06values\"\"\n" +
	"\bBoolList\x12\x16\n" +
	"\x06values\x18\x01 \x03(\bR\x06values\"8\n" +
	"\tValueList\x12+\n" +
	"\x06values\x18\x01 \x03(\v2\x13.plugin.ConfigValueR\x06values\"\x90\x01\n" +
	"\bValueMap\x124\n" +
	"\x06fields\x18\x01 \x03(\v2\x1c.plugin.ValueMap.FieldsEntryR\x06fields\x1aN\n" +
	"\vFieldsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\xbb\x04\n" +
	"\x14AdminRuntimeDefaults\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x12<\n" +
	"\x1adetection_interval_minutes\x18\x02 \x01(\x05R\x18detectionIntervalMinutes\x12:\n" +
	"\x19detection_timeout_seconds\x18\x03 \x01(\x05R\x17detectionTimeoutSeconds\x123\n" +
	"\x16max_jobs_per_detection\x18\x04 \x01(\x05R\x13maxJobsPerDetection\x12@\n" +
	"\x1cglobal_execution_concurrency\x18\x05 \x01(\x05R\x1aglobalExecutionConcurrency\x12G\n" +
	" per_worker_execution_concurrency\x18\x06 \x01(\x05R\x1dperWorkerExecutionConcurrency\x12\x1f\n" +
	"\vretry_limit\x18\a \x01(\x05R\n" +
	"retryLimit\x122\n" +
	"\x15retry_backoff_seconds\x18\b \x01(\x05R\x13retryBackoffSeconds\x12>\n" +
	"\x1cjob_type_max_runtime_seconds\x18\t \x01(\x05R\x18jobTypeMaxRuntimeSeconds\x12:\n" +
	"\x19execution_timeout_seconds\x18\n" +
	" \x01(\x05R\x17executionTimeoutSeconds\"\xb9\x04\n" +
	"\x12AdminRuntimeConfig\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x12<\n" +
	"\x1adetection_interval_minutes\x18\x02 \x01(\x05R\x18detectionIntervalMinutes\x12:\n" +
	"\x19detection_timeout_seconds\x18\x03 \x01(\x05R\x17detectionTimeoutSeconds\x123\n" +
	"\x16max_jobs_per_detection\x18\x04 \x01(\x05R\x13maxJobsPerDetection\x12@\n" +
	"\x1cglobal_execution_concurrency\x18\x05 \x01(\x05R\x1aglobalExecutionConcurrency\x12G\n" +
	" per_worker_execution_concurrency\x18\x06 \x01(\x05R\x1dperWorkerExecutionConcurrency\x12\x1f\n" +
	"\vretry_limit\x18\a \x01(\x05R\n" +
	"retryLimit\x122\n" +
	"\x15retry_backoff_seconds\x18\b \x01(\x05R\x13retryBackoffSeconds\x12>\n" +
	"\x1cjob_type_max_runtime_seconds\x18\t \x01(\x05R\x18jobTypeMaxRuntimeSeconds\x12:\n" +
	"\x19execution_timeout_seconds\x18\n" +
	" \x01(\x05R\x17executionTimeoutSeconds\"\xef\x05\n" +
	"\x13RunDetectionRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bjob_type\x18\x02 \x01(\tR\ajobType\x12-\n" +
	"\x12detection_sequence\x18\x03 \x01(\x03R\x11detectionSequence\x12?\n" +
	"\radmin_runtime\x18\x04 \x01(\v2\x1a.plugin.AdminRuntimeConfigR\fadminRuntime\x12b\n" +
	"\x13admin_config_values\x18\x05 \x03(\v22.plugin.RunDetectionRequest.AdminConfigValuesEntryR\x11adminConfigValues\x12e\n" +
	"\x14worker_config_values\x18\x06 \x03(\v23.plugin.RunDetectionRequest.WorkerConfigValuesEntryR\x12workerConfigValues\x12?\n" +
	"\x0fcluster_context\x18\a \x01(\v2\x16.plugin.ClusterContextR\x0eclusterContext\x12J\n" +
	"\x13last_successful_run\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x11lastSuccessfulRun\x12\x1f\n" +
	"\vmax_results\x18\t \x01(\x05R\n" +
	"maxResults\x1aY\n" +
	"\x16AdminConfigValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\x1aZ\n" +
	"\x17WorkerConfigValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\x9c\x01\n" +
	"\x12DetectionProposals\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bjob_type\x18\x02 \x01(\tR\ajobType\x121\n" +
	"\tproposals\x18\x03 \x03(\v2\x13.plugin.JobProposalR\tproposals\x12\x19\n" +
	"\bhas_more\x18\x04 \x01(\bR\ahasMore\"\xb5\x01\n" +
	"\x11DetectionComplete\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bjob_type\x18\x02 \x01(\tR\ajobType\x12\x18\n" +
	"\asuccess\x18\x03 \x01(\bR\asuccess\x12#\n" +
	"\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12'\n" +
	"\x0ftotal_proposals\x18\x05 \x01(\x05R\x0etotalProposals\"\xce\x04\n" +
	"\vJobProposal\x12\x1f\n" +
	"\vproposal_id\x18\x01 \x01(\tR\n" +
	"proposalId\x12\x1d\n" +
	"\n" +
	"dedupe_key\x18\x02 \x01(\tR\tdedupeKey\x12\x19\n" +
	"\bjob_type\x18\x03 \x01(\tR\ajobType\x12/\n" +
	"\bpriority\x18\x04 \x01(\x0e2\x13.plugin.JobPriorityR\bpriority\x12\x18\n" +
	"\asummary\x18\x05 \x01(\tR\asummary\x12\x16\n" +
	"\x06detail\x18\x06 \x01(\tR\x06detail\x12C\n" +
	"\n" +
	"parameters\x18\a \x03(\v2#.plugin.JobProposal.ParametersEntryR\n" +
	"parameters\x127\n" +
	"\x06labels\x18\b \x03(\v2\x1f.plugin.JobProposal.LabelsEntryR\x06labels\x129\n" +
	"\n" +
	"not_before\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tnotBefore\x129\n" +
	"\n" +
	"expires_at\x18\n" +
	" \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x1aR\n" +
	"\x0fParametersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xef\x04\n" +
	"\x11ExecuteJobRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12!\n" +
	"\x03job\x18\x02 \x01(\v2\x0f.plugin.JobSpecR\x03job\x12?\n" +
	"\radmin_runtime\x18\x03 \x01(\v2\x1a.plugin.AdminRuntimeConfigR\fadminRuntime\x12`\n" +
	"\x13admin_config_values\x18\x04 \x03(\v20.plugin.ExecuteJobRequest.AdminConfigValuesEntryR\x11adminConfigValues\x12c\n" +
	"\x14worker_config_values\x18\x05 \x03(\v21.plugin.ExecuteJobRequest.WorkerConfigValuesEntryR\x12workerConfigValues\x12?\n" +
	"\x0fcluster_context\x18\x06 \x01(\v2\x16.plugin.ClusterContextR\x0eclusterContext\x12\x18\n" +
	"\aattempt\x18\a \x01(\x05R\aattempt\x1aY\n" +
	"\x16AdminConfigValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\x1aZ\n" +
	"\x17WorkerConfigValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\xbc\x04\n" +
	"\aJobSpec\x12\x15\n" +
	"\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x19\n" +
	"\bjob_type\x18\x02 \x01(\tR\ajobType\x12\x1d\n" +
	"\n" +
	"dedupe_key\x18\x03 \x01(\tR\tdedupeKey\x12/\n" +
	"\bpriority\x18\x04 \x01(\x0e2\x13.plugin.JobPriorityR\bpriority\x12\x18\n" +
	"\asummary\x18\x05 \x01(\tR\asummary\x12\x16\n" +
	"\x06detail\x18\x06 \x01(\tR\x06detail\x12?\n" +
	"\n" +
	"parameters\x18\a \x03(\v2\x1f.plugin.JobSpec.ParametersEntryR\n" +
	"parameters\x123\n" +
	"\x06labels\x18\b \x03(\v2\x1b.plugin.JobSpec.LabelsEntryR\x06labels\x129\n" +
	"\n" +
	"created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12=\n" +
	"\fscheduled_at\x18\n" +
	" \x01(\v2\x1a.google.protobuf.TimestampR\vscheduledAt\x1aR\n" +
	"\x0fParametersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xec\x03\n" +
	"\x11JobProgressUpdate\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x15\n" +
	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x19\n" +
	"\bjob_type\x18\x03 \x01(\tR\ajobType\x12&\n" +
	"\x05state\x18\x04 \x01(\x0e2\x10.plugin.JobStateR\x05state\x12)\n" +
	"\x10progress_percent\x18\x05 \x01(\x01R\x0fprogressPercent\x12\x14\n" +
	"\x05stage\x18\x06 \x01(\tR\x05stage\x12\x18\n" +
	"\amessage\x18\a \x01(\tR\amessage\x12@\n" +
	"\ametrics\x18\b \x03(\v2&.plugin.JobProgressUpdate.MetricsEntryR\ametrics\x125\n" +
	"\n" +
	"activities\x18\t \x03(\v2\x15.plugin.ActivityEventR\n" +
	"activities\x129\n" +
	"\n" +
	"updated_at\x18\n" +
	" \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x1aO\n" +
	"\fMetricsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\xbf\x02\n" +
	"\fJobCompleted\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x15\n" +
	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x19\n" +
	"\bjob_type\x18\x03 \x01(\tR\ajobType\x12\x18\n" +
	"\asuccess\x18\x04 \x01(\bR\asuccess\x12#\n" +
	"\rerror_message\x18\x05 \x01(\tR\ferrorMessage\x12)\n" +
	"\x06result\x18\x06 \x01(\v2\x11.plugin.JobResultR\x06result\x125\n" +
	"\n" +
	"activities\x18\a \x03(\v2\x15.plugin.ActivityEventR\n" +
	"activities\x12=\n" +
	"\fcompleted_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"\xc5\x01\n" +
	"\tJobResult\x12H\n" +
	"\routput_values\x18\x01 \x03(\v2#.plugin.JobResult.OutputValuesEntryR\foutputValues\x12\x18\n" +
	"\asummary\x18\x02 \x01(\tR\asummary\x1aT\n" +
	"\x11OutputValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\xcc\x02\n" +
	"\x0eClusterContext\x122\n" +
	"\x15master_grpc_addresses\x18\x01 \x03(\tR\x13masterGrpcAddresses\x12'\n" +
	"\x0ffiler_addresses\x18\x02 \x03(\tR\x0efilerAddresses\x122\n" +
	"\x15volume_grpc_addresses\x18\x03 \x03(\tR\x13volumeGrpcAddresses\x12@\n" +
	"\bmetadata\x18\x04 \x03(\v2$.plugin.ClusterContext.MetadataEntryR\bmetadata\x12*\n" +
	"\x11s3_grpc_addresses\x18\x05 \x03(\tR\x0fs3GrpcAddresses\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb9\x02\n" +
	"\rActivityEvent\x12.\n" +
	"\x06source\x18\x01 \x01(\x0e2\x16.plugin.ActivitySourceR\x06source\x12\x18\n" +
	"\amessage\x18\x02 \x01(\tR\amessage\x12\x14\n" +
	"\x05stage\x18\x03 \x01(\tR\x05stage\x12<\n" +
	"\adetails\x18\x04 \x03(\v2\".plugin.ActivityEvent.DetailsEntryR\adetails\x129\n" +
	"\n" +
	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x1aO\n" +
	"\fDetailsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"\x8d\x01\n" +
	"\rCancelRequest\x12\x1b\n" +
	"\ttarget_id\x18\x01 \x01(\tR\btargetId\x121\n" +
	"\vtarget_kind\x18\x02 \x01(\x0e2\x10.plugin.WorkKindR\n" +
	"targetKind\x12\x16\n" +
	"\x06reason\x18\x03 \x01(\tR\x06reason\x12\x14\n" +
	"\x05force\x18\x04 \x01(\bR\x05force\"Y\n" +
	"\rAdminShutdown\x12\x16\n" +
	"\x06reason\x18\x01 \x01(\tR\x06reason\x120\n" +
	"\x14grace_period_seconds\x18\x02 \x01(\x05R\x12gracePeriodSeconds\"\x85\x05\n" +
	"\x16PersistedJobTypeConfig\x12\x19\n" +
	"\bjob_type\x18\x01 \x01(\tR\ajobType\x12-\n" +
	"\x12descriptor_version\x18\x02 \x01(\rR\x11descriptorVersion\x12e\n" +
	"\x13admin_config_values\x18\x03 \x03(\v25.plugin.PersistedJobTypeConfig.AdminConfigValuesEntryR\x11adminConfigValues\x12h\n" +
	"\x14worker_config_values\x18\x04 \x03(\v26.plugin.PersistedJobTypeConfig.WorkerConfigValuesEntryR\x12workerConfigValues\x12?\n" +
	"\radmin_runtime\x18\x05 \x01(\v2\x1a.plugin.AdminRuntimeConfigR\fadminRuntime\x129\n" +
	"\n" +
	"updated_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x1d\n" +
	"\n" +
	"updated_by\x18\a \x01(\tR\tupdatedBy\x1aY\n" +
	"\x16AdminConfigValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\x1aZ\n" +
	"\x17WorkerConfigValuesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"n\n" +
	"\x12WorkerObservations\x12\x19\n" +
	"\bjob_type\x18\x01 \x01(\tR\ajobType\x12=\n" +
	"\fobservations\x18\x02 \x03(\v2\x19.plugin.ObjectObservationR\fobservations\"\xc5\x02\n" +
	"\x11ObjectObservation\x12\x1b\n" +
	"\tobject_id\x18\x01 \x03(\tR\bobjectId\x12\x1f\n" +
	"\vobject_kind\x18\x02 \x01(\tR\n" +
	"objectKind\x12\x16\n" +
	"\x06format\x18\x03 \x01(\tR\x06format\x12I\n" +
	"\n" +
	"attributes\x18\x04 \x03(\v2).plugin.ObjectObservation.AttributesEntryR\n" +
	"attributes\x12;\n" +
	"\vobserved_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"observedAt\x1aR\n" +
	"\x0fAttributesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12)\n" +
	"\x05value\x18\x02 \x01(\v2\x13.plugin.ConfigValueR\x05value:\x028\x01\"h\n" +
	"\x14RequestObjectPreview\x12\x1b\n" +
	"\tobject_id\x18\x01 \x03(\tR\bobjectId\x12\x16\n" +
	"\x06format\x18\x02 \x01(\tR\x06format\x12\x1b\n" +
	"\trow_limit\x18\x03 \x01(\x05R\browLimit\"\xd6\x01\n" +
	"\x15ObjectPreviewResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x06 \x01(\tR\trequestId\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12#\n" +
	"\rerror_message\x18\x02 \x01(\tR\ferrorMessage\x12\x18\n" +
	"\acolumns\x18\x03 \x03(\tR\acolumns\x12&\n" +
	"\x04rows\x18\x04 \x03(\v2\x12.plugin.PreviewRowR\x04rows\x12\x1d\n" +
	"\n" +
	"total_rows\x18\x05 \x01(\x03R\ttotalRows\"$\n" +
	"\n" +
	"PreviewRow\x12\x16\n" +
	"\x06values\x18\x01 \x03(\tR\x06values*W\n" +
	"\bWorkKind\x12\x19\n" +
	"\x15WORK_KIND_UNSPECIFIED\x10\x00\x12\x17\n" +
	"\x13WORK_KIND_DETECTION\x10\x01\x12\x17\n" +
	"\x13WORK_KIND_EXECUTION\x10\x02*\x8c\x01\n" +
	"\vJobPriority\x12\x1c\n" +
	"\x18JOB_PRIORITY_UNSPECIFIED\x10\x00\x12\x14\n" +
	"\x10JOB_PRIORITY_LOW\x10\x01\x12\x17\n" +
	"\x13JOB_PRIORITY_NORMAL\x10\x02\x12\x15\n" +
	"\x11JOB_PRIORITY_HIGH\x10\x03\x12\x19\n" +
	"\x15JOB_PRIORITY_CRITICAL\x10\x04*\xb2\x01\n" +
	"\bJobState\x12\x19\n" +
	"\x15JOB_STATE_UNSPECIFIED\x10\x00\x12\x15\n" +
	"\x11JOB_STATE_PENDING\x10\x01\x12\x16\n" +
	"\x12JOB_STATE_ASSIGNED\x10\x02\x12\x15\n" +
	"\x11JOB_STATE_RUNNING\x10\x03\x12\x17\n" +
	"\x13JOB_STATE_SUCCEEDED\x10\x04\x12\x14\n" +
	"\x10JOB_STATE_FAILED\x10\x05\x12\x16\n" +
	"\x12JOB_STATE_CANCELED\x10\x06*\xbc\x02\n" +
	"\x0fConfigFieldType\x12!\n" +
	"\x1dCONFIG_FIELD_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n" +
	"\x16CONFIG_FIELD_TYPE_BOOL\x10\x01\x12\x1b\n" +
	"\x17CONFIG_FIELD_TYPE_INT64\x10\x02\x12\x1c\n" +
	"\x18CONFIG_FIELD_TYPE_DOUBLE\x10\x03\x12\x1c\n" +
	"\x18CONFIG_FIELD_TYPE_STRING\x10\x04\x12\x1b\n" +
	"\x17CONFIG_FIELD_TYPE_BYTES\x10\x05\x12\x1e\n" +
	"\x1aCONFIG_FIELD_TYPE_DURATION\x10\x06\x12\x1a\n" +
	"\x16CONFIG_FIELD_TYPE_ENUM\x10\a\x12\x1a\n" +
	"\x16CONFIG_FIELD_TYPE_LIST\x10\b\x12\x1c\n" +
	"\x18CONFIG_FIELD_TYPE_OBJECT\x10\t*\x87\x02\n" +
	"\fConfigWidget\x12\x1d\n" +
	"\x19CONFIG_WIDGET_UNSPECIFIED\x10\x00\x12\x18\n" +
	"\x14CONFIG_WIDGET_TOGGLE\x10\x01\x12\x16\n" +
	"\x12CONFIG_WIDGET_TEXT\x10\x02\x12\x1a\n" +
	"\x16CONFIG_WIDGET_TEXTAREA\x10\x03\x12\x18\n" +
	"\x14CONFIG_WIDGET_NUMBER\x10\x04\x12\x18\n" +
	"\x14CONFIG_WIDGET_SELECT\x10\x05\x12\x1e\n" +
	"\x1aCONFIG_WIDGET_MULTI_SELECT\x10\x06\x12\x1a\n" +
	"\x16CONFIG_WIDGET_DURATION\x10\a\x12\x1a\n" +
	"\x16CONFIG_WIDGET_PASSWORD\x10\b*\x8d\x02\n" +
	"\x12ValidationRuleType\x12$\n" +
	" VALIDATION_RULE_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n" +
	"\x1aVALIDATION_RULE_TYPE_REGEX\x10\x01\x12#\n" +
	"\x1fVALIDATION_RULE_TYPE_MIN_LENGTH\x10\x02\x12#\n" +
	"\x1fVALIDATION_RULE_TYPE_MAX_LENGTH\x10\x03\x12\"\n" +
	"\x1eVALIDATION_RULE_TYPE_MIN_ITEMS\x10\x04\x12\"\n" +
	"\x1eVALIDATION_RULE_TYPE_MAX_ITEMS\x10\x05\x12\x1f\n" +
	"\x1bVALIDATION_RULE_TYPE_CUSTOM\x10\x06*\x88\x01\n" +
	"\x0eActivitySource\x12\x1f\n" +
	"\x1bACTIVITY_SOURCE_UNSPECIFIED\x10\x00\x12\x19\n" +
	"\x15ACTIVITY_SOURCE_ADMIN\x10\x01\x12\x1c\n" +
	"\x18ACTIVITY_SOURCE_DETECTOR\x10\x02\x12\x1c\n" +
	"\x18ACTIVITY_SOURCE_EXECUTOR\x10\x032f\n" +
	"\x14PluginControlService\x12N\n" +
	"\fWorkerStream\x12\x1c.plugin.WorkerToAdminMessage\x1a\x1c.plugin.AdminToWorkerMessage(\x010\x01B2Z0github.com/seaweedfs/seaweedfs/weed/pb/plugin_pbb\x06proto3"

var (
	file_plugin_proto_rawDescOnce sync.Once
	file_plugin_proto_rawDescData []byte
)

func file_plugin_proto_rawDescGZIP() []byte {
	file_plugin_proto_rawDescOnce.Do(func() {
		file_plugin_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_plugin_proto_rawDesc), len(file_plugin_proto_rawDesc)))
	})
	return file_plugin_proto_rawDescData
}

var file_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 65)
var file_plugin_proto_goTypes = []any{
	(WorkKind)(0),                  // 0: plugin.WorkKind
	(JobPriority)(0),               // 1: plugin.JobPriority
	(JobState)(0),                  // 2: plugin.JobState
	(ConfigFieldType)(0),           // 3: plugin.ConfigFieldType
	(ConfigWidget)(0),              // 4: plugin.ConfigWidget
	(ValidationRuleType)(0),        // 5: plugin.ValidationRuleType
	(ActivitySource)(0),            // 6: plugin.ActivitySource
	(*WorkerToAdminMessage)(nil),   // 7: plugin.WorkerToAdminMessage
	(*AdminToWorkerMessage)(nil),   // 8: plugin.AdminToWorkerMessage
	(*WorkerHello)(nil),            // 9: plugin.WorkerHello
	(*AdminHello)(nil),             // 10: plugin.AdminHello
	(*WorkerHeartbeat)(nil),        // 11: plugin.WorkerHeartbeat
	(*WorkerAcknowledge)(nil),      // 12: plugin.WorkerAcknowledge
	(*RunningWork)(nil),            // 13: plugin.RunningWork
	(*JobTypeCapability)(nil),      // 14: plugin.JobTypeCapability
	(*RequestConfigSchema)(nil),    // 15: plugin.RequestConfigSchema
	(*ConfigSchemaResponse)(nil),   // 16: plugin.ConfigSchemaResponse
	(*JobTypeDescriptor)(nil),      // 17: plugin.JobTypeDescriptor
	(*ConfigForm)(nil),             // 18: plugin.ConfigForm
	(*ConfigSection)(nil),          // 19: plugin.ConfigSection
	(*ConfigField)(nil),            // 20: plugin.ConfigField
	(*ConfigOption)(nil),           // 21: plugin.ConfigOption
	(*ValidationRule)(nil),         // 22: plugin.ValidationRule
	(*ConfigValue)(nil),            // 23: plugin.ConfigValue
	(*StringList)(nil),             // 24: plugin.StringList
	(*Int64List)(nil),              // 25: plugin.Int64List
	(*DoubleList)(nil),             // 26: plugin.DoubleList
	(*BoolList)(nil),               // 27: plugin.BoolList
	(*ValueList)(nil),              // 28: plugin.ValueList
	(*ValueMap)(nil),               // 29: plugin.ValueMap
	(*AdminRuntimeDefaults)(nil),   // 30: plugin.AdminRuntimeDefaults
	(*AdminRuntimeConfig)(nil),     // 31: plugin.AdminRuntimeConfig
	(*RunDetectionRequest)(nil),    // 32: plugin.RunDetectionRequest
	(*DetectionProposals)(nil),     // 33: plugin.DetectionProposals
	(*DetectionComplete)(nil),      // 34: plugin.DetectionComplete
	(*JobProposal)(nil),            // 35: plugin.JobProposal
	(*ExecuteJobRequest)(nil),      // 36: plugin.ExecuteJobRequest
	(*JobSpec)(nil),                // 37: plugin.JobSpec
	(*JobProgressUpdate)(nil),      // 38: plugin.JobProgressUpdate
	(*JobCompleted)(nil),           // 39: plugin.JobCompleted
	(*JobResult)(nil),              // 40: plugin.JobResult
	(*ClusterContext)(nil),         // 41: plugin.ClusterContext
	(*ActivityEvent)(nil),          // 42: plugin.ActivityEvent
	(*CancelRequest)(nil),          // 43: plugin.CancelRequest
	(*AdminShutdown)(nil),          // 44: plugin.AdminShutdown
	(*PersistedJobTypeConfig)(nil), // 45: plugin.PersistedJobTypeConfig
	(*WorkerObservations)(nil),     // 46: plugin.WorkerObservations
	(*ObjectObservation)(nil),      // 47: plugin.ObjectObservation
	(*RequestObjectPreview)(nil),   // 48: plugin.RequestObjectPreview
	(*ObjectPreviewResponse)(nil),  // 49: plugin.ObjectPreviewResponse
	(*PreviewRow)(nil),             // 50: plugin.PreviewRow
	nil,                            // 51: plugin.WorkerHello.MetadataEntry
	nil,                            // 52: plugin.WorkerHeartbeat.QueuedJobsByTypeEntry
	nil,                            // 53: plugin.WorkerHeartbeat.MetadataEntry
	nil,                            // 54: plugin.JobTypeDescriptor.WorkerDefaultValuesEntry
	nil,                            // 55: plugin.ConfigForm.DefaultValuesEntry
	nil,                            // 56: plugin.ValueMap.FieldsEntry
	nil,                            // 57: plugin.RunDetectionRequest.AdminConfigValuesEntry
	nil,                            // 58: plugin.RunDetectionRequest.WorkerConfigValuesEntry
	nil,                            // 59: plugin.JobProposal.ParametersEntry
	nil,                            // 60: plugin.JobProposal.LabelsEntry
	nil,                            // 61: plugin.ExecuteJobRequest.AdminConfigValuesEntry
	nil,                            // 62: plugin.ExecuteJobRequest.WorkerConfigValuesEntry
	nil,                            // 63: plugin.JobSpec.ParametersEntry
	nil,                            // 64: plugin.JobSpec.LabelsEntry
	nil,                            // 65: plugin.JobProgressUpdate.MetricsEntry
	nil,                            // 66: plugin.JobResult.OutputValuesEntry
	nil,                            // 67: plugin.ClusterContext.MetadataEntry
	nil,                            // 68: plugin.ActivityEvent.DetailsEntry
	nil,                            // 69: plugin.PersistedJobTypeConfig.AdminConfigValuesEntry
	nil,                            // 70: plugin.PersistedJobTypeConfig.WorkerConfigValuesEntry
	nil,                            // 71: plugin.ObjectObservation.AttributesEntry
	(*timestamppb.Timestamp)(nil),  // 72: google.protobuf.Timestamp
	(*durationpb.Duration)(nil),    // 73: google.protobuf.Duration
}
var file_plugin_proto_depIdxs = []int32{
	72,  // 0: plugin.WorkerToAdminMessage.sent_at:type_name -> google.protobuf.Timestamp
	9,   // 1: plugin.WorkerToAdminMessage.hello:type_name -> plugin.WorkerHello
	11,  // 2: plugin.WorkerToAdminMessage.heartbeat:type_name -> plugin.WorkerHeartbeat
	12,  // 3: plugin.WorkerToAdminMessage.acknowledge:type_name -> plugin.WorkerAcknowledge
	16,  // 4: plugin.WorkerToAdminMessage.config_schema_response:type_name -> plugin.ConfigSchemaResponse
	33,  // 5: plugin.WorkerToAdminMessage.detection_proposals:type_name -> plugin.DetectionProposals
	34,  // 6: plugin.WorkerToAdminMessage.detection_complete:type_name -> plugin.DetectionComplete
	38,  // 7: plugin.WorkerToAdminMessage.job_progress_update:type_name -> plugin.JobProgressUpdate
	39,  // 8: plugin.WorkerToAdminMessage.job_completed:type_name -> plugin.JobCompleted
	46,  // 9: plugin.WorkerToAdminMessage.observations:type_name -> plugin.WorkerObservations
	49,  // 10: plugin.WorkerToAdminMessage.object_preview_response:type_name -> plugin.ObjectPreviewResponse
	72,  // 11: plugin.AdminToWorkerMessage.sent_at:type_name -> google.protobuf.Timestamp
	10,  // 12: plugin.AdminToWorkerMessage.hello:type_name -> plugin.AdminHello
	15,  // 13: plugin.AdminToWorkerMessage.request_config_schema:type_name -> plugin.RequestConfigSchema
	32,  // 14: plugin.AdminToWorkerMessage.run_detection_request:type_name -> plugin.RunDetectionRequest
	36,  // 15: plugin.AdminToWorkerMessage.execute_job_request:type_name -> plugin.ExecuteJobRequest
	43,  // 16: plugin.AdminToWorkerMessage.cancel_request:type_name -> plugin.CancelRequest
	44,  // 17: plugin.AdminToWorkerMessage.shutdown:type_name -> plugin.AdminShutdown
	48,  // 18: plugin.AdminToWorkerMessage.request_object_preview:type_name -> plugin.RequestObjectPreview
	14,  // 19: plugin.WorkerHello.capabilities:type_name -> plugin.JobTypeCapability
	51,  // 20: plugin.WorkerHello.metadata:type_name -> plugin.WorkerHello.MetadataEntry
	13,  // 21: plugin.WorkerHeartbeat.running_work:type_name -> plugin.RunningWork
	52,  // 22: plugin.WorkerHeartbeat.queued_jobs_by_type:type_name -> plugin.WorkerHeartbeat.QueuedJobsByTypeEntry
	53,  // 23: plugin.WorkerHeartbeat.metadata:type_name -> plugin.WorkerHeartbeat.MetadataEntry
	0,   // 24: plugin.RunningWork.kind:type_name -> plugin.WorkKind
	2,   // 25: plugin.RunningWork.state:type_name -> plugin.JobState
	17,  // 26: plugin.ConfigSchemaResponse.job_type_descriptor:type_name -> plugin.JobTypeDescriptor
	18,  // 27: plugin.JobTypeDescriptor.admin_config_form:type_name -> plugin.ConfigForm
	18,  // 28: plugin.JobTypeDescriptor.worker_config_form:type_name -> plugin.ConfigForm
	30,  // 29: plugin.JobTypeDescriptor.admin_runtime_defaults:type_name -> plugin.AdminRuntimeDefaults
	54,  // 30: plugin.JobTypeDescriptor.worker_default_values:type_name -> plugin.JobTypeDescriptor.WorkerDefaultValuesEntry
	19,  // 31: plugin.ConfigForm.sections:type_name -> plugin.ConfigSection
	55,  // 32: plugin.ConfigForm.default_values:type_name -> plugin.ConfigForm.DefaultValuesEntry
	20,  // 33: plugin.ConfigSection.fields:type_name -> plugin.ConfigField
	3,   // 34: plugin.ConfigField.field_type:type_name -> plugin.ConfigFieldType
	4,   // 35: plugin.ConfigField.widget:type_name -> plugin.ConfigWidget
	23,  // 36: plugin.ConfigField.min_value:type_name -> plugin.ConfigValue
	23,  // 37: plugin.ConfigField.max_value:type_name -> plugin.ConfigValue
	21,  // 38: plugin.ConfigField.options:type_name -> plugin.ConfigOption
	22,  // 39: plugin.ConfigField.validation_rules:type_name -> plugin.ValidationRule
	23,  // 40: plugin.ConfigField.visible_when_equals:type_name -> plugin.ConfigValue
	5,   // 41: plugin.ValidationRule.type:type_name -> plugin.ValidationRuleType
	73,  // 42: plugin.ConfigValue.duration_value:type_name -> google.protobuf.Duration
	24,  // 43: plugin.ConfigValue.string_list:type_name -> plugin.StringList
	25,  // 44: plugin.ConfigValue.int64_list:type_name -> plugin.Int64List
	26,  // 45: plugin.ConfigValue.double_list:type_name -> plugin.DoubleList
	27,  // 46: plugin.ConfigValue.bool_list:type_name -> plugin.BoolList
	28,  // 47: plugin.ConfigValue.list_value:type_name -> plugin.ValueList
	29,  // 48: plugin.ConfigValue.map_value:type_name -> plugin.ValueMap
	23,  // 49: plugin.ValueList.values:type_name -> plugin.ConfigValue
	56,  // 50: plugin.ValueMap.fields:type_name -> plugin.ValueMap.FieldsEntry
	31,  // 51: plugin.RunDetectionRequest.admin_runtime:type_name -> plugin.AdminRuntimeConfig
	57,  // 52: plugin.RunDetectionRequest.admin_config_values:type_name -> plugin.RunDetectionRequest.AdminConfigValuesEntry
	58,  // 53: plugin.RunDetectionRequest.worker_config_values:type_name -> plugin.RunDetectionRequest.WorkerConfigValuesEntry
	41,  // 54: plugin.RunDetectionRequest.cluster_context:type_name -> plugin.ClusterContext
	72,  // 55: plugin.RunDetectionRequest.last_successful_run:type_name -> google.protobuf.Timestamp
	35,  // 56: plugin.DetectionProposals.proposals:type_name -> plugin.JobProposal
	1,   // 57: plugin.JobProposal.priority:type_name -> plugin.JobPriority
	59,  // 58: plugin.JobProposal.parameters:type_name -> plugin.JobProposal.ParametersEntry
	60,  // 59: plugin.JobProposal.labels:type_name -> plugin.JobProposal.LabelsEntry
	72,  // 60: plugin.JobProposal.not_before:type_name -> google.protobuf.Timestamp
	72,  // 61: plugin.JobProposal.expires_at:type_name -> google.protobuf.Timestamp
	37,  // 62: plugin.ExecuteJobRequest.job:type_name -> plugin.JobSpec
	31,  // 63: plugin.ExecuteJobRequest.admin_runtime:type_name -> plugin.AdminRuntimeConfig
	61,  // 64: plugin.ExecuteJobRequest.admin_config_values:type_name -> plugin.ExecuteJobRequest.AdminConfigValuesEntry
	62,  // 65: plugin.ExecuteJobRequest.worker_config_values:type_name -> plugin.ExecuteJobRequest.WorkerConfigValuesEntry
	41,  // 66: plugin.ExecuteJobRequest.cluster_context:type_name -> plugin.ClusterContext
	1,   // 67: plugin.JobSpec.priority:type_name -> plugin.JobPriority
	63,  // 68: plugin.JobSpec.parameters:type_name -> plugin.JobSpec.ParametersEntry
	64,  // 69: plugin.JobSpec.labels:type_name -> plugin.JobSpec.LabelsEntry
	72,  // 70: plugin.JobSpec.created_at:type_name -> google.protobuf.Timestamp
	72,  // 71: plugin.JobSpec.scheduled_at:type_name -> google.protobuf.Timestamp
	2,   // 72: plugin.JobProgressUpdate.state:type_name -> plugin.JobState
	65,  // 73: plugin.JobProgressUpdate.metrics:type_name -> plugin.JobProgressUpdate.MetricsEntry
	42,  // 74: plugin.JobProgressUpdate.activities:type_name -> plugin.ActivityEvent
	72,  // 75: plugin.JobProgressUpdate.updated_at:type_name -> google.protobuf.Timestamp
	40,  // 76: plugin.JobCompleted.result:type_name -> plugin.JobResult
	42,  // 77: plugin.JobCompleted.activities:type_name -> plugin.ActivityEvent
	72,  // 78: plugin.JobCompleted.completed_at:type_name -> google.protobuf.Timestamp
	66,  // 79: plugin.JobResult.output_values:type_name -> plugin.JobResult.OutputValuesEntry
	67,  // 80: plugin.ClusterContext.metadata:type_name -> plugin.ClusterContext.MetadataEntry
	6,   // 81: plugin.ActivityEvent.source:type_name -> plugin.ActivitySource
	68,  // 82: plugin.ActivityEvent.details:type_name -> plugin.ActivityEvent.DetailsEntry
	72,  // 83: plugin.ActivityEvent.created_at:type_name -> google.protobuf.Timestamp
	0,   // 84: plugin.CancelRequest.target_kind:type_name -> plugin.WorkKind
	69,  // 85: plugin.PersistedJobTypeConfig.admin_config_values:type_name -> plugin.PersistedJobTypeConfig.AdminConfigValuesEntry
	70,  // 86: plugin.PersistedJobTypeConfig.worker_config_values:type_name -> plugin.PersistedJobTypeConfig.WorkerConfigValuesEntry
	31,  // 87: plugin.PersistedJobTypeConfig.admin_runtime:type_name -> plugin.AdminRuntimeConfig
	72,  // 88: plugin.PersistedJobTypeConfig.updated_at:type_name -> google.protobuf.Timestamp
	47,  // 89: plugin.WorkerObservations.observations:type_name -> plugin.ObjectObservation
	71,  // 90: plugin.ObjectObservation.attributes:type_name -> plugin.ObjectObservation.AttributesEntry
	72,  // 91: plugin.ObjectObservation.observed_at:type_name -> google.protobuf.Timestamp
	50,  // 92: plugin.ObjectPreviewResponse.rows:type_name -> plugin.PreviewRow
	23,  // 93: plugin.JobTypeDescriptor.WorkerDefaultValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 94: plugin.ConfigForm.DefaultValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 95: plugin.ValueMap.FieldsEntry.value:type_name -> plugin.ConfigValue
	23,  // 96: plugin.RunDetectionRequest.AdminConfigValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 97: plugin.RunDetectionRequest.WorkerConfigValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 98: plugin.JobProposal.ParametersEntry.value:type_name -> plugin.ConfigValue
	23,  // 99: plugin.ExecuteJobRequest.AdminConfigValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 100: plugin.ExecuteJobRequest.WorkerConfigValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 101: plugin.JobSpec.ParametersEntry.value:type_name -> plugin.ConfigValue
	23,  // 102: plugin.JobProgressUpdate.MetricsEntry.value:type_name -> plugin.ConfigValue
	23,  // 103: plugin.JobResult.OutputValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 104: plugin.ActivityEvent.DetailsEntry.value:type_name -> plugin.ConfigValue
	23,  // 105: plugin.PersistedJobTypeConfig.AdminConfigValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 106: plugin.PersistedJobTypeConfig.WorkerConfigValuesEntry.value:type_name -> plugin.ConfigValue
	23,  // 107: plugin.ObjectObservation.AttributesEntry.value:type_name -> plugin.ConfigValue
	7,   // 108: plugin.PluginControlService.WorkerStream:input_type -> plugin.WorkerToAdminMessage
	8,   // 109: plugin.PluginControlService.WorkerStream:output_type -> plugin.AdminToWorkerMessage
	109, // [109:110] is the sub-list for method output_type
	108, // [108:109] is the sub-list for method input_type
	108, // [108:108] is the sub-list for extension type_name
	108, // [108:108] is the sub-list for extension extendee
	0,   // [0:108] is the sub-list for field type_name
}

func init() { file_plugin_proto_init() }
func file_plugin_proto_init() {
	if File_plugin_proto != nil {
		return
	}
	file_plugin_proto_msgTypes[0].OneofWrappers = []any{
		(*WorkerToAdminMessage_Hello)(nil),
		(*WorkerToAdminMessage_Heartbeat)(nil),
		(*WorkerToAdminMessage_Acknowledge)(nil),
		(*WorkerToAdminMessage_ConfigSchemaResponse)(nil),
		(*WorkerToAdminMessage_DetectionProposals)(nil),
		(*WorkerToAdminMessage_DetectionComplete)(nil),
		(*WorkerToAdminMessage_JobProgressUpdate)(nil),
		(*WorkerToAdminMessage_JobCompleted)(nil),
		(*WorkerToAdminMessage_Observations)(nil),
		(*WorkerToAdminMessage_ObjectPreviewResponse)(nil),
	}
	file_plugin_proto_msgTypes[1].OneofWrappers = []any{
		(*AdminToWorkerMessage_Hello)(nil),
		(*AdminToWorkerMessage_RequestConfigSchema)(nil),
		(*AdminToWorkerMessage_RunDetectionRequest)(nil),
		(*AdminToWorkerMessage_ExecuteJobRequest)(nil),
		(*AdminToWorkerMessage_CancelRequest)(nil),
		(*AdminToWorkerMessage_Shutdown)(nil),
		(*AdminToWorkerMessage_RequestObjectPreview)(nil),
	}
	file_plugin_proto_msgTypes[16].OneofWrappers = []any{
		(*ConfigValue_BoolValue)(nil),
		(*ConfigValue_Int64Value)(nil),
		(*ConfigValue_DoubleValue)(nil),
		(*ConfigValue_StringValue)(nil),
		(*ConfigValue_BytesValue)(nil),
		(*ConfigValue_DurationValue)(nil),
		(*ConfigValue_StringList)(nil),
		(*ConfigValue_Int64List)(nil),
		(*ConfigValue_DoubleList)(nil),
		(*ConfigValue_BoolList)(nil),
		(*ConfigValue_ListValue)(nil),
		(*ConfigValue_MapValue)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_plugin_proto_rawDesc), len(file_plugin_proto_rawDesc)),
			NumEnums:      7,
			NumMessages:   65,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_plugin_proto_goTypes,
		DependencyIndexes: file_plugin_proto_depIdxs,
		EnumInfos:         file_plugin_proto_enumTypes,
		MessageInfos:      file_plugin_proto_msgTypes,
	}.Build()
	File_plugin_proto = out.File
	file_plugin_proto_goTypes = nil
	file_plugin_proto_depIdxs = nil
}
