// ChatCLI gRPC Service Definition
// Copyright (c) 2024 Edilson Freitas
// License: MIT

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.35.2
// 	protoc        v5.29.0
// source: chatcli/v1/chatcli.proto

package chatcliv1

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

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 SessionMessage_Type int32

const (
	SessionMessage_USER_INPUT         SessionMessage_Type = 0
	SessionMessage_ASSISTANT_RESPONSE SessionMessage_Type = 1
	SessionMessage_SYSTEM_MESSAGE     SessionMessage_Type = 2
	SessionMessage_ERROR              SessionMessage_Type = 3
	SessionMessage_COMMAND            SessionMessage_Type = 4 // CLI commands like /agent, /coder, /switch
	SessionMessage_COMMAND_RESULT     SessionMessage_Type = 5
)

// Enum value maps for SessionMessage_Type.
var (
	SessionMessage_Type_name = map[int32]string{
		0: "USER_INPUT",
		1: "ASSISTANT_RESPONSE",
		2: "SYSTEM_MESSAGE",
		3: "ERROR",
		4: "COMMAND",
		5: "COMMAND_RESULT",
	}
	SessionMessage_Type_value = map[string]int32{
		"USER_INPUT":         0,
		"ASSISTANT_RESPONSE": 1,
		"SYSTEM_MESSAGE":     2,
		"ERROR":              3,
		"COMMAND":            4,
		"COMMAND_RESULT":     5,
	}
)

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

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

func (SessionMessage_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_chatcli_v1_chatcli_proto_enumTypes[0].Descriptor()
}

func (SessionMessage_Type) Type() protoreflect.EnumType {
	return &file_chatcli_v1_chatcli_proto_enumTypes[0]
}

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

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

type HealthResponse_Status int32

const (
	HealthResponse_SERVING     HealthResponse_Status = 0
	HealthResponse_NOT_SERVING HealthResponse_Status = 1
)

// Enum value maps for HealthResponse_Status.
var (
	HealthResponse_Status_name = map[int32]string{
		0: "SERVING",
		1: "NOT_SERVING",
	}
	HealthResponse_Status_value = map[string]int32{
		"SERVING":     0,
		"NOT_SERVING": 1,
	}
)

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

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

func (HealthResponse_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_chatcli_v1_chatcli_proto_enumTypes[1].Descriptor()
}

func (HealthResponse_Status) Type() protoreflect.EnumType {
	return &file_chatcli_v1_chatcli_proto_enumTypes[1]
}

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

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

type SendPromptRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prompt         string            `protobuf:"bytes,1,opt,name=prompt,proto3" json:"prompt,omitempty"`
	History        []*ChatMessage    `protobuf:"bytes,2,rep,name=history,proto3" json:"history,omitempty"`
	MaxTokens      int32             `protobuf:"varint,3,opt,name=max_tokens,json=maxTokens,proto3" json:"max_tokens,omitempty"`
	Provider       string            `protobuf:"bytes,4,opt,name=provider,proto3" json:"provider,omitempty"`                                                                                                                           // optional: override server's default provider
	Model          string            `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"`                                                                                                                                 // optional: override server's default model
	ClientApiKey   string            `protobuf:"bytes,6,opt,name=client_api_key,json=clientApiKey,proto3" json:"client_api_key,omitempty"`                                                                                             // optional: client's own API key/OAuth token (overrides server credentials)
	ProviderConfig map[string]string `protobuf:"bytes,7,rep,name=provider_config,json=providerConfig,proto3" json:"provider_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // optional: provider-specific config (StackSpot realm/agent_id/client_id/client_key, Ollama base_url, etc.)
}

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

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

func (*SendPromptRequest) ProtoMessage() {}

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

func (x *SendPromptRequest) GetPrompt() string {
	if x != nil {
		return x.Prompt
	}
	return ""
}

func (x *SendPromptRequest) GetHistory() []*ChatMessage {
	if x != nil {
		return x.History
	}
	return nil
}

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

func (x *SendPromptRequest) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *SendPromptRequest) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *SendPromptRequest) GetClientApiKey() string {
	if x != nil {
		return x.ClientApiKey
	}
	return ""
}

func (x *SendPromptRequest) GetProviderConfig() map[string]string {
	if x != nil {
		return x.ProviderConfig
	}
	return nil
}

type SendPromptResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
	Model    string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
	Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"`
}

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

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

func (*SendPromptResponse) ProtoMessage() {}

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

func (x *SendPromptResponse) GetResponse() string {
	if x != nil {
		return x.Response
	}
	return ""
}

func (x *SendPromptResponse) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *SendPromptResponse) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

type StreamPromptRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prompt         string            `protobuf:"bytes,1,opt,name=prompt,proto3" json:"prompt,omitempty"`
	History        []*ChatMessage    `protobuf:"bytes,2,rep,name=history,proto3" json:"history,omitempty"`
	MaxTokens      int32             `protobuf:"varint,3,opt,name=max_tokens,json=maxTokens,proto3" json:"max_tokens,omitempty"`
	Provider       string            `protobuf:"bytes,4,opt,name=provider,proto3" json:"provider,omitempty"`
	Model          string            `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"`
	ClientApiKey   string            `protobuf:"bytes,6,opt,name=client_api_key,json=clientApiKey,proto3" json:"client_api_key,omitempty"`                                                                                             // optional: client's own API key/OAuth token
	ProviderConfig map[string]string `protobuf:"bytes,7,rep,name=provider_config,json=providerConfig,proto3" json:"provider_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // optional: provider-specific config
}

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

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

func (*StreamPromptRequest) ProtoMessage() {}

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

func (x *StreamPromptRequest) GetPrompt() string {
	if x != nil {
		return x.Prompt
	}
	return ""
}

func (x *StreamPromptRequest) GetHistory() []*ChatMessage {
	if x != nil {
		return x.History
	}
	return nil
}

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

func (x *StreamPromptRequest) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *StreamPromptRequest) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *StreamPromptRequest) GetClientApiKey() string {
	if x != nil {
		return x.ClientApiKey
	}
	return ""
}

func (x *StreamPromptRequest) GetProviderConfig() map[string]string {
	if x != nil {
		return x.ProviderConfig
	}
	return nil
}

type StreamPromptResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Chunk    string `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` // partial response text
	Done     bool   `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"`  // true when stream is complete
	Model    string `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"`
	Provider string `protobuf:"bytes,4,opt,name=provider,proto3" json:"provider,omitempty"`
}

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

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

func (*StreamPromptResponse) ProtoMessage() {}

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

func (x *StreamPromptResponse) GetChunk() string {
	if x != nil {
		return x.Chunk
	}
	return ""
}

func (x *StreamPromptResponse) GetDone() bool {
	if x != nil {
		return x.Done
	}
	return false
}

func (x *StreamPromptResponse) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *StreamPromptResponse) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

type SessionMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type     SessionMessage_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chatcli.v1.SessionMessage_Type" json:"type,omitempty"`
	Content  string              `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
	Metadata map[string]string   `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // extra info (e.g., provider, model, mode)
}

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

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

func (*SessionMessage) ProtoMessage() {}

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

func (x *SessionMessage) GetType() SessionMessage_Type {
	if x != nil {
		return x.Type
	}
	return SessionMessage_USER_INPUT
}

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

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

type MessageMeta struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IsSummary bool   `protobuf:"varint,1,opt,name=is_summary,json=isSummary,proto3" json:"is_summary,omitempty"`
	SummaryOf int32  `protobuf:"varint,2,opt,name=summary_of,json=summaryOf,proto3" json:"summary_of,omitempty"`
	Mode      string `protobuf:"bytes,3,opt,name=mode,proto3" json:"mode,omitempty"` // "chat", "agent", "coder"
}

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

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

func (*MessageMeta) ProtoMessage() {}

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

func (x *MessageMeta) GetIsSummary() bool {
	if x != nil {
		return x.IsSummary
	}
	return false
}

func (x *MessageMeta) GetSummaryOf() int32 {
	if x != nil {
		return x.SummaryOf
	}
	return 0
}

func (x *MessageMeta) GetMode() string {
	if x != nil {
		return x.Mode
	}
	return ""
}

type ChatMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Role    string       `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` // "user" or "assistant"
	Content string       `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
	Meta    *MessageMeta `protobuf:"bytes,3,opt,name=meta,proto3" json:"meta,omitempty"` // optional metadata for history compaction
}

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

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

func (*ChatMessage) ProtoMessage() {}

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

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

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

func (x *ChatMessage) GetMeta() *MessageMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

type SessionDataV2 struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Version      int32          `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
	ChatHistory  []*ChatMessage `protobuf:"bytes,2,rep,name=chat_history,json=chatHistory,proto3" json:"chat_history,omitempty"`
	AgentHistory []*ChatMessage `protobuf:"bytes,3,rep,name=agent_history,json=agentHistory,proto3" json:"agent_history,omitempty"`
	CoderHistory []*ChatMessage `protobuf:"bytes,4,rep,name=coder_history,json=coderHistory,proto3" json:"coder_history,omitempty"`
	SharedMemory []*ChatMessage `protobuf:"bytes,5,rep,name=shared_memory,json=sharedMemory,proto3" json:"shared_memory,omitempty"`
}

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

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

func (*SessionDataV2) ProtoMessage() {}

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

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

func (x *SessionDataV2) GetChatHistory() []*ChatMessage {
	if x != nil {
		return x.ChatHistory
	}
	return nil
}

func (x *SessionDataV2) GetAgentHistory() []*ChatMessage {
	if x != nil {
		return x.AgentHistory
	}
	return nil
}

func (x *SessionDataV2) GetCoderHistory() []*ChatMessage {
	if x != nil {
		return x.CoderHistory
	}
	return nil
}

func (x *SessionDataV2) GetSharedMemory() []*ChatMessage {
	if x != nil {
		return x.SharedMemory
	}
	return nil
}

type ListSessionsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ListSessionsRequest) ProtoMessage() {}

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

type ListSessionsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Sessions []string `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"`
}

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

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

func (*ListSessionsResponse) ProtoMessage() {}

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

func (x *ListSessionsResponse) GetSessions() []string {
	if x != nil {
		return x.Sessions
	}
	return nil
}

type LoadSessionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*LoadSessionRequest) ProtoMessage() {}

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

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

type LoadSessionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Messages    []*ChatMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`                          // v1 compat (always populated with chat_history)
	SessionData *SessionDataV2 `protobuf:"bytes,2,opt,name=session_data,json=sessionData,proto3" json:"session_data,omitempty"` // v2: full scoped histories (takes priority when present)
}

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

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

func (*LoadSessionResponse) ProtoMessage() {}

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

func (x *LoadSessionResponse) GetMessages() []*ChatMessage {
	if x != nil {
		return x.Messages
	}
	return nil
}

func (x *LoadSessionResponse) GetSessionData() *SessionDataV2 {
	if x != nil {
		return x.SessionData
	}
	return nil
}

type SaveSessionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name        string         `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Messages    []*ChatMessage `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"`                          // v1 compat (always populated with chat_history)
	SessionData *SessionDataV2 `protobuf:"bytes,3,opt,name=session_data,json=sessionData,proto3" json:"session_data,omitempty"` // v2: full scoped histories (takes priority when present)
}

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

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

func (*SaveSessionRequest) ProtoMessage() {}

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

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

func (x *SaveSessionRequest) GetMessages() []*ChatMessage {
	if x != nil {
		return x.Messages
	}
	return nil
}

func (x *SaveSessionRequest) GetSessionData() *SessionDataV2 {
	if x != nil {
		return x.SessionData
	}
	return nil
}

type SaveSessionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}

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

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

func (*SaveSessionResponse) ProtoMessage() {}

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

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

type DeleteSessionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*DeleteSessionRequest) ProtoMessage() {}

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

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

type DeleteSessionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}

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

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

func (*DeleteSessionResponse) ProtoMessage() {}

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

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

type GetServerInfoRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*GetServerInfoRequest) ProtoMessage() {}

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

type GetServerInfoResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Version            string   `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
	Provider           string   `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"`
	Model              string   `protobuf:"bytes,3,opt,name=model,proto3" json:"model,omitempty"`
	AvailableProviders []string `protobuf:"bytes,4,rep,name=available_providers,json=availableProviders,proto3" json:"available_providers,omitempty"`
	WatcherActive      bool     `protobuf:"varint,5,opt,name=watcher_active,json=watcherActive,proto3" json:"watcher_active,omitempty"` // true if K8s watcher is running
	WatcherTarget      string   `protobuf:"bytes,6,opt,name=watcher_target,json=watcherTarget,proto3" json:"watcher_target,omitempty"`  // e.g., "namespace/deployment"
	PluginCount        int32    `protobuf:"varint,7,opt,name=plugin_count,json=pluginCount,proto3" json:"plugin_count,omitempty"`       // number of plugins available on server
	AgentCount         int32    `protobuf:"varint,8,opt,name=agent_count,json=agentCount,proto3" json:"agent_count,omitempty"`          // number of agents available on server
	SkillCount         int32    `protobuf:"varint,9,opt,name=skill_count,json=skillCount,proto3" json:"skill_count,omitempty"`          // number of skills available on server
}

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

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

func (*GetServerInfoResponse) ProtoMessage() {}

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

func (x *GetServerInfoResponse) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *GetServerInfoResponse) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *GetServerInfoResponse) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *GetServerInfoResponse) GetAvailableProviders() []string {
	if x != nil {
		return x.AvailableProviders
	}
	return nil
}

func (x *GetServerInfoResponse) GetWatcherActive() bool {
	if x != nil {
		return x.WatcherActive
	}
	return false
}

func (x *GetServerInfoResponse) GetWatcherTarget() string {
	if x != nil {
		return x.WatcherTarget
	}
	return ""
}

func (x *GetServerInfoResponse) GetPluginCount() int32 {
	if x != nil {
		return x.PluginCount
	}
	return 0
}

func (x *GetServerInfoResponse) GetAgentCount() int32 {
	if x != nil {
		return x.AgentCount
	}
	return 0
}

func (x *GetServerInfoResponse) GetSkillCount() int32 {
	if x != nil {
		return x.SkillCount
	}
	return 0
}

type GetWatcherStatusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*GetWatcherStatusRequest) ProtoMessage() {}

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

type GetWatcherStatusResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Active        bool   `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"`
	Deployment    string `protobuf:"bytes,2,opt,name=deployment,proto3" json:"deployment,omitempty"`
	Namespace     string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
	StatusSummary string `protobuf:"bytes,4,opt,name=status_summary,json=statusSummary,proto3" json:"status_summary,omitempty"` // compact one-line status
	AlertCount    int32  `protobuf:"varint,5,opt,name=alert_count,json=alertCount,proto3" json:"alert_count,omitempty"`
	SnapshotCount int32  `protobuf:"varint,6,opt,name=snapshot_count,json=snapshotCount,proto3" json:"snapshot_count,omitempty"`
	PodCount      int32  `protobuf:"varint,7,opt,name=pod_count,json=podCount,proto3" json:"pod_count,omitempty"`
}

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

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

func (*GetWatcherStatusResponse) ProtoMessage() {}

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

func (x *GetWatcherStatusResponse) GetActive() bool {
	if x != nil {
		return x.Active
	}
	return false
}

func (x *GetWatcherStatusResponse) GetDeployment() string {
	if x != nil {
		return x.Deployment
	}
	return ""
}

func (x *GetWatcherStatusResponse) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *GetWatcherStatusResponse) GetStatusSummary() string {
	if x != nil {
		return x.StatusSummary
	}
	return ""
}

func (x *GetWatcherStatusResponse) GetAlertCount() int32 {
	if x != nil {
		return x.AlertCount
	}
	return 0
}

func (x *GetWatcherStatusResponse) GetSnapshotCount() int32 {
	if x != nil {
		return x.SnapshotCount
	}
	return 0
}

func (x *GetWatcherStatusResponse) GetPodCount() int32 {
	if x != nil {
		return x.PodCount
	}
	return 0
}

type HealthRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*HealthRequest) ProtoMessage() {}

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

type HealthResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status  HealthResponse_Status `protobuf:"varint,1,opt,name=status,proto3,enum=chatcli.v1.HealthResponse_Status" json:"status,omitempty"`
	Version string                `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
}

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

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

func (*HealthResponse) ProtoMessage() {}

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

func (x *HealthResponse) GetStatus() HealthResponse_Status {
	if x != nil {
		return x.Status
	}
	return HealthResponse_SERVING
}

func (x *HealthResponse) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

type WatcherAlert struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type          string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`         // e.g., "HighRestartCount", "OOMKilled", "PodNotReady", "DeploymentFailing"
	Severity      string `protobuf:"bytes,2,opt,name=severity,proto3" json:"severity,omitempty"` // "info", "warning", "critical"
	Message       string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
	Object        string `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` // e.g., pod name
	Namespace     string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"`
	Deployment    string `protobuf:"bytes,6,opt,name=deployment,proto3" json:"deployment,omitempty"`
	TimestampUnix int64  `protobuf:"varint,7,opt,name=timestamp_unix,json=timestampUnix,proto3" json:"timestamp_unix,omitempty"`
}

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

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

func (*WatcherAlert) ProtoMessage() {}

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

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

func (x *WatcherAlert) GetSeverity() string {
	if x != nil {
		return x.Severity
	}
	return ""
}

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

func (x *WatcherAlert) GetObject() string {
	if x != nil {
		return x.Object
	}
	return ""
}

func (x *WatcherAlert) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *WatcherAlert) GetDeployment() string {
	if x != nil {
		return x.Deployment
	}
	return ""
}

func (x *WatcherAlert) GetTimestampUnix() int64 {
	if x != nil {
		return x.TimestampUnix
	}
	return 0
}

type GetAlertsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Namespace  string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`   // optional: filter by namespace
	Deployment string `protobuf:"bytes,2,opt,name=deployment,proto3" json:"deployment,omitempty"` // optional: filter by deployment
}

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

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

func (*GetAlertsRequest) ProtoMessage() {}

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

func (x *GetAlertsRequest) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *GetAlertsRequest) GetDeployment() string {
	if x != nil {
		return x.Deployment
	}
	return ""
}

type GetAlertsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Alerts []*WatcherAlert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"`
}

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

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

func (*GetAlertsResponse) ProtoMessage() {}

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

func (x *GetAlertsResponse) GetAlerts() []*WatcherAlert {
	if x != nil {
		return x.Alerts
	}
	return nil
}

type AnalyzeIssueRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IssueName              string `protobuf:"bytes,1,opt,name=issue_name,json=issueName,proto3" json:"issue_name,omitempty"`
	Namespace              string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
	ResourceKind           string `protobuf:"bytes,3,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"`
	ResourceName           string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
	SignalType             string `protobuf:"bytes,5,opt,name=signal_type,json=signalType,proto3" json:"signal_type,omitempty"` // e.g., "error_rate", "oom_kill", "pod_restart"
	Severity               string `protobuf:"bytes,6,opt,name=severity,proto3" json:"severity,omitempty"`                       // "low", "medium", "high", "critical"
	Description            string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
	RiskScore              int32  `protobuf:"varint,8,opt,name=risk_score,json=riskScore,proto3" json:"risk_score,omitempty"`
	Provider               string `protobuf:"bytes,9,opt,name=provider,proto3" json:"provider,omitempty"`                                                              // optional: override LLM provider
	Model                  string `protobuf:"bytes,10,opt,name=model,proto3" json:"model,omitempty"`                                                                   // optional: override LLM model
	KubernetesContext      string `protobuf:"bytes,11,opt,name=kubernetes_context,json=kubernetesContext,proto3" json:"kubernetes_context,omitempty"`                  // deployment status, pods, events, revision history
	PreviousFailureContext string `protobuf:"bytes,12,opt,name=previous_failure_context,json=previousFailureContext,proto3" json:"previous_failure_context,omitempty"` // results from previous remediation attempts (for retries)
}

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

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

func (*AnalyzeIssueRequest) ProtoMessage() {}

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

func (x *AnalyzeIssueRequest) GetIssueName() string {
	if x != nil {
		return x.IssueName
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetResourceKind() string {
	if x != nil {
		return x.ResourceKind
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetResourceName() string {
	if x != nil {
		return x.ResourceName
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetSignalType() string {
	if x != nil {
		return x.SignalType
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetSeverity() string {
	if x != nil {
		return x.Severity
	}
	return ""
}

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

func (x *AnalyzeIssueRequest) GetRiskScore() int32 {
	if x != nil {
		return x.RiskScore
	}
	return 0
}

func (x *AnalyzeIssueRequest) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetKubernetesContext() string {
	if x != nil {
		return x.KubernetesContext
	}
	return ""
}

func (x *AnalyzeIssueRequest) GetPreviousFailureContext() string {
	if x != nil {
		return x.PreviousFailureContext
	}
	return ""
}

type AnalyzeIssueResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Analysis         string             `protobuf:"bytes,1,opt,name=analysis,proto3" json:"analysis,omitempty"`
	Confidence       float32            `protobuf:"fixed32,2,opt,name=confidence,proto3" json:"confidence,omitempty"` // 0.0 to 1.0
	Recommendations  []string           `protobuf:"bytes,3,rep,name=recommendations,proto3" json:"recommendations,omitempty"`
	Model            string             `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"`
	Provider         string             `protobuf:"bytes,5,opt,name=provider,proto3" json:"provider,omitempty"`
	SuggestedActions []*SuggestedAction `protobuf:"bytes,6,rep,name=suggested_actions,json=suggestedActions,proto3" json:"suggested_actions,omitempty"`
}

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

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

func (*AnalyzeIssueResponse) ProtoMessage() {}

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

func (x *AnalyzeIssueResponse) GetAnalysis() string {
	if x != nil {
		return x.Analysis
	}
	return ""
}

func (x *AnalyzeIssueResponse) GetConfidence() float32 {
	if x != nil {
		return x.Confidence
	}
	return 0
}

func (x *AnalyzeIssueResponse) GetRecommendations() []string {
	if x != nil {
		return x.Recommendations
	}
	return nil
}

func (x *AnalyzeIssueResponse) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *AnalyzeIssueResponse) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *AnalyzeIssueResponse) GetSuggestedActions() []*SuggestedAction {
	if x != nil {
		return x.SuggestedActions
	}
	return nil
}

type SuggestedAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name        string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`                                                                                             // human-readable step name, e.g., "Restart pods"
	Action      string            `protobuf:"bytes,2,opt,name=action,proto3" json:"action,omitempty"`                                                                                         // action type: ScaleDeployment, RollbackDeployment, RestartDeployment, PatchConfig, AdjustResources, DeletePod, HelmRollback, ArgoSyncApp, AdjustHPA, RestartStatefulSetPod, CordonNode, DrainNode, ResizePVC, RotateSecret, ExecDiagnostic, UpdateIngress, PatchNetworkPolicy, ApplyManifest, Custom
	Description string            `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`                                                                               // explanation of why this action is recommended
	Params      map[string]string `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // action-specific params, e.g., {"replicas": "3"}
}

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

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

func (*SuggestedAction) ProtoMessage() {}

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

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

func (x *SuggestedAction) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

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

func (x *SuggestedAction) GetParams() map[string]string {
	if x != nil {
		return x.Params
	}
	return nil
}

type AgenticHistoryEntry struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StepNumber  int32             `protobuf:"varint,1,opt,name=step_number,json=stepNumber,proto3" json:"step_number,omitempty"`
	AiMessage   string            `protobuf:"bytes,2,opt,name=ai_message,json=aiMessage,proto3" json:"ai_message,omitempty"`
	Action      string            `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"`                                                                                         // action type executed (e.g., "RestartDeployment")
	Params      map[string]string `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // action params
	Observation string            `protobuf:"bytes,5,opt,name=observation,proto3" json:"observation,omitempty"`                                                                               // result of executing the action
}

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

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

func (*AgenticHistoryEntry) ProtoMessage() {}

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

func (x *AgenticHistoryEntry) GetStepNumber() int32 {
	if x != nil {
		return x.StepNumber
	}
	return 0
}

func (x *AgenticHistoryEntry) GetAiMessage() string {
	if x != nil {
		return x.AiMessage
	}
	return ""
}

func (x *AgenticHistoryEntry) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

func (x *AgenticHistoryEntry) GetParams() map[string]string {
	if x != nil {
		return x.Params
	}
	return nil
}

func (x *AgenticHistoryEntry) GetObservation() string {
	if x != nil {
		return x.Observation
	}
	return ""
}

type AgenticStepRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IssueName         string                 `protobuf:"bytes,1,opt,name=issue_name,json=issueName,proto3" json:"issue_name,omitempty"`
	Namespace         string                 `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
	ResourceKind      string                 `protobuf:"bytes,3,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"`
	ResourceName      string                 `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
	SignalType        string                 `protobuf:"bytes,5,opt,name=signal_type,json=signalType,proto3" json:"signal_type,omitempty"`
	Severity          string                 `protobuf:"bytes,6,opt,name=severity,proto3" json:"severity,omitempty"`
	Description       string                 `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
	RiskScore         int32                  `protobuf:"varint,8,opt,name=risk_score,json=riskScore,proto3" json:"risk_score,omitempty"`
	Provider          string                 `protobuf:"bytes,9,opt,name=provider,proto3" json:"provider,omitempty"`
	Model             string                 `protobuf:"bytes,10,opt,name=model,proto3" json:"model,omitempty"`
	KubernetesContext string                 `protobuf:"bytes,11,opt,name=kubernetes_context,json=kubernetesContext,proto3" json:"kubernetes_context,omitempty"` // fresh K8s snapshot (refreshed each step)
	History           []*AgenticHistoryEntry `protobuf:"bytes,12,rep,name=history,proto3" json:"history,omitempty"`                                              // full conversation history
	MaxSteps          int32                  `protobuf:"varint,13,opt,name=max_steps,json=maxSteps,proto3" json:"max_steps,omitempty"`                           // step budget
	CurrentStep       int32                  `protobuf:"varint,14,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`                  // step number being computed now
	// Primary guidance from the prior AIInsight analysis. Injected as authoritative
	// context so the agentic loop cannot silently contradict its own root-cause analysis.
	// GAP-01 fix (chaos test report 2026-05-23).
	InsightAnalysis         string             `protobuf:"bytes,15,opt,name=insight_analysis,json=insightAnalysis,proto3" json:"insight_analysis,omitempty"`         // AIInsight.Status.Analysis text
	InsightConfidence       float32            `protobuf:"fixed32,16,opt,name=insight_confidence,json=insightConfidence,proto3" json:"insight_confidence,omitempty"` // 0.0–1.0 confidence from AIInsight
	InsightRecommendations  []string           `protobuf:"bytes,17,rep,name=insight_recommendations,json=insightRecommendations,proto3" json:"insight_recommendations,omitempty"`
	InsightSuggestedActions []*SuggestedAction `protobuf:"bytes,18,rep,name=insight_suggested_actions,json=insightSuggestedActions,proto3" json:"insight_suggested_actions,omitempty"`
}

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

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

func (*AgenticStepRequest) ProtoMessage() {}

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

func (x *AgenticStepRequest) GetIssueName() string {
	if x != nil {
		return x.IssueName
	}
	return ""
}

func (x *AgenticStepRequest) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *AgenticStepRequest) GetResourceKind() string {
	if x != nil {
		return x.ResourceKind
	}
	return ""
}

func (x *AgenticStepRequest) GetResourceName() string {
	if x != nil {
		return x.ResourceName
	}
	return ""
}

func (x *AgenticStepRequest) GetSignalType() string {
	if x != nil {
		return x.SignalType
	}
	return ""
}

func (x *AgenticStepRequest) GetSeverity() string {
	if x != nil {
		return x.Severity
	}
	return ""
}

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

func (x *AgenticStepRequest) GetRiskScore() int32 {
	if x != nil {
		return x.RiskScore
	}
	return 0
}

func (x *AgenticStepRequest) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *AgenticStepRequest) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *AgenticStepRequest) GetKubernetesContext() string {
	if x != nil {
		return x.KubernetesContext
	}
	return ""
}

func (x *AgenticStepRequest) GetHistory() []*AgenticHistoryEntry {
	if x != nil {
		return x.History
	}
	return nil
}

func (x *AgenticStepRequest) GetMaxSteps() int32 {
	if x != nil {
		return x.MaxSteps
	}
	return 0
}

func (x *AgenticStepRequest) GetCurrentStep() int32 {
	if x != nil {
		return x.CurrentStep
	}
	return 0
}

func (x *AgenticStepRequest) GetInsightAnalysis() string {
	if x != nil {
		return x.InsightAnalysis
	}
	return ""
}

func (x *AgenticStepRequest) GetInsightConfidence() float32 {
	if x != nil {
		return x.InsightConfidence
	}
	return 0
}

func (x *AgenticStepRequest) GetInsightRecommendations() []string {
	if x != nil {
		return x.InsightRecommendations
	}
	return nil
}

func (x *AgenticStepRequest) GetInsightSuggestedActions() []*SuggestedAction {
	if x != nil {
		return x.InsightSuggestedActions
	}
	return nil
}

type AgenticStepResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Reasoning  string           `protobuf:"bytes,1,opt,name=reasoning,proto3" json:"reasoning,omitempty"`                     // AI's current reasoning (recorded in history)
	Resolved   bool             `protobuf:"varint,2,opt,name=resolved,proto3" json:"resolved,omitempty"`                      // true = AI considers problem fixed
	NextAction *SuggestedAction `protobuf:"bytes,3,opt,name=next_action,json=nextAction,proto3" json:"next_action,omitempty"` // null/empty when resolved=true
	// Fields below only populated when resolved=true:
	PostmortemSummary string   `protobuf:"bytes,4,opt,name=postmortem_summary,json=postmortemSummary,proto3" json:"postmortem_summary,omitempty"`
	RootCause         string   `protobuf:"bytes,5,opt,name=root_cause,json=rootCause,proto3" json:"root_cause,omitempty"`
	Impact            string   `protobuf:"bytes,6,opt,name=impact,proto3" json:"impact,omitempty"`
	LessonsLearned    []string `protobuf:"bytes,7,rep,name=lessons_learned,json=lessonsLearned,proto3" json:"lessons_learned,omitempty"`
	PreventionActions []string `protobuf:"bytes,8,rep,name=prevention_actions,json=preventionActions,proto3" json:"prevention_actions,omitempty"`
	// Divergence signal: set true when next_action contradicts the AIInsight's
	// primary suggested action without an explicit justification. The operator
	// logs this and (when divergence_reason is empty) may decline to execute.
	// GAP-01 fix.
	DivergesFromInsight bool   `protobuf:"varint,9,opt,name=diverges_from_insight,json=divergesFromInsight,proto3" json:"diverges_from_insight,omitempty"`
	DivergenceReason    string `protobuf:"bytes,10,opt,name=divergence_reason,json=divergenceReason,proto3" json:"divergence_reason,omitempty"` // LLM-provided justification when intentionally diverging
}

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

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

func (*AgenticStepResponse) ProtoMessage() {}

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

func (x *AgenticStepResponse) GetReasoning() string {
	if x != nil {
		return x.Reasoning
	}
	return ""
}

func (x *AgenticStepResponse) GetResolved() bool {
	if x != nil {
		return x.Resolved
	}
	return false
}

func (x *AgenticStepResponse) GetNextAction() *SuggestedAction {
	if x != nil {
		return x.NextAction
	}
	return nil
}

func (x *AgenticStepResponse) GetPostmortemSummary() string {
	if x != nil {
		return x.PostmortemSummary
	}
	return ""
}

func (x *AgenticStepResponse) GetRootCause() string {
	if x != nil {
		return x.RootCause
	}
	return ""
}

func (x *AgenticStepResponse) GetImpact() string {
	if x != nil {
		return x.Impact
	}
	return ""
}

func (x *AgenticStepResponse) GetLessonsLearned() []string {
	if x != nil {
		return x.LessonsLearned
	}
	return nil
}

func (x *AgenticStepResponse) GetPreventionActions() []string {
	if x != nil {
		return x.PreventionActions
	}
	return nil
}

func (x *AgenticStepResponse) GetDivergesFromInsight() bool {
	if x != nil {
		return x.DivergesFromInsight
	}
	return false
}

func (x *AgenticStepResponse) GetDivergenceReason() string {
	if x != nil {
		return x.DivergenceReason
	}
	return ""
}

type PluginInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name        string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	Usage       string `protobuf:"bytes,3,opt,name=usage,proto3" json:"usage,omitempty"`
	Version     string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
	Schema      string `protobuf:"bytes,5,opt,name=schema,proto3" json:"schema,omitempty"` // JSON schema describing plugin arguments/subcommands
}

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

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

func (*PluginInfo) ProtoMessage() {}

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

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

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

func (x *PluginInfo) GetUsage() string {
	if x != nil {
		return x.Usage
	}
	return ""
}

func (x *PluginInfo) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *PluginInfo) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

type ListRemotePluginsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ListRemotePluginsRequest) ProtoMessage() {}

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

type ListRemotePluginsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Plugins []*PluginInfo `protobuf:"bytes,1,rep,name=plugins,proto3" json:"plugins,omitempty"`
}

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

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

func (*ListRemotePluginsResponse) ProtoMessage() {}

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

func (x *ListRemotePluginsResponse) GetPlugins() []*PluginInfo {
	if x != nil {
		return x.Plugins
	}
	return nil
}

type AgentInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name        string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Description string   `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	Skills      []string `protobuf:"bytes,3,rep,name=skills,proto3" json:"skills,omitempty"`           // skill names required by this agent
	Plugins     []string `protobuf:"bytes,4,rep,name=plugins,proto3" json:"plugins,omitempty"`         // plugin names required by this agent
	Model       string   `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"`             // preferred model for this agent
	Content     string   `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`         // markdown body (system prompt content)
	Frontmatter string   `protobuf:"bytes,7,opt,name=frontmatter,proto3" json:"frontmatter,omitempty"` // raw YAML frontmatter for client-side parsing
	// Per-agent LLM profile (Fase: multi-agent parity with skills).
	// effort drives extended thinking / reasoning_effort on providers
	// that support it. model already exists above as field 5. Both are
	// honored by the dispatcher's model router when this agent runs as a
	// worker — empty string means "inherit user's active model / send no
	// effort hint".
	Effort string `protobuf:"bytes,8,opt,name=effort,proto3" json:"effort,omitempty"` // "low" | "medium" | "high" | "max" | ""
	// Optional metadata mirroring skill frontmatter — useful for
	// `/agent list`, catalog display, and future registry search.
	Category string   `protobuf:"bytes,9,opt,name=category,proto3" json:"category,omitempty"`
	Version  string   `protobuf:"bytes,10,opt,name=version,proto3" json:"version,omitempty"`
	Author   string   `protobuf:"bytes,11,opt,name=author,proto3" json:"author,omitempty"`
	Tags     []string `protobuf:"bytes,12,rep,name=tags,proto3" json:"tags,omitempty"`
}

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

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

func (*AgentInfo) ProtoMessage() {}

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

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

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

func (x *AgentInfo) GetSkills() []string {
	if x != nil {
		return x.Skills
	}
	return nil
}

func (x *AgentInfo) GetPlugins() []string {
	if x != nil {
		return x.Plugins
	}
	return nil
}

func (x *AgentInfo) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

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

func (x *AgentInfo) GetFrontmatter() string {
	if x != nil {
		return x.Frontmatter
	}
	return ""
}

func (x *AgentInfo) GetEffort() string {
	if x != nil {
		return x.Effort
	}
	return ""
}

func (x *AgentInfo) GetCategory() string {
	if x != nil {
		return x.Category
	}
	return ""
}

func (x *AgentInfo) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *AgentInfo) GetAuthor() string {
	if x != nil {
		return x.Author
	}
	return ""
}

func (x *AgentInfo) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

type ListRemoteAgentsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ListRemoteAgentsRequest) ProtoMessage() {}

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

type ListRemoteAgentsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Agents []*AgentInfo `protobuf:"bytes,1,rep,name=agents,proto3" json:"agents,omitempty"`
}

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

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

func (*ListRemoteAgentsResponse) ProtoMessage() {}

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

func (x *ListRemoteAgentsResponse) GetAgents() []*AgentInfo {
	if x != nil {
		return x.Agents
	}
	return nil
}

type SkillInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name         string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Description  string            `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	Content      string            `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` // markdown body
	AllowedTools []string          `protobuf:"bytes,4,rep,name=allowed_tools,json=allowedTools,proto3" json:"allowed_tools,omitempty"`
	Subskills    map[string]string `protobuf:"bytes,5,rep,name=subskills,proto3" json:"subskills,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // name -> markdown content
	Scripts      map[string]string `protobuf:"bytes,6,rep,name=scripts,proto3" json:"scripts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`     // name -> server-side absolute path
}

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

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

func (*SkillInfo) ProtoMessage() {}

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

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

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

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

func (x *SkillInfo) GetAllowedTools() []string {
	if x != nil {
		return x.AllowedTools
	}
	return nil
}

func (x *SkillInfo) GetSubskills() map[string]string {
	if x != nil {
		return x.Subskills
	}
	return nil
}

func (x *SkillInfo) GetScripts() map[string]string {
	if x != nil {
		return x.Scripts
	}
	return nil
}

type ListRemoteSkillsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ListRemoteSkillsRequest) ProtoMessage() {}

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

type ListRemoteSkillsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Skills []*SkillInfo `protobuf:"bytes,1,rep,name=skills,proto3" json:"skills,omitempty"`
}

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

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

func (*ListRemoteSkillsResponse) ProtoMessage() {}

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

func (x *ListRemoteSkillsResponse) GetSkills() []*SkillInfo {
	if x != nil {
		return x.Skills
	}
	return nil
}

type GetAgentDefinitionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*GetAgentDefinitionRequest) ProtoMessage() {}

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

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

type GetAgentDefinitionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Agent *AgentInfo `protobuf:"bytes,1,opt,name=agent,proto3" json:"agent,omitempty"`
}

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

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

func (*GetAgentDefinitionResponse) ProtoMessage() {}

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

func (x *GetAgentDefinitionResponse) GetAgent() *AgentInfo {
	if x != nil {
		return x.Agent
	}
	return nil
}

type GetSkillContentRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*GetSkillContentRequest) ProtoMessage() {}

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

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

type GetSkillContentResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Skill *SkillInfo `protobuf:"bytes,1,opt,name=skill,proto3" json:"skill,omitempty"`
}

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

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

func (*GetSkillContentResponse) ProtoMessage() {}

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

func (x *GetSkillContentResponse) GetSkill() *SkillInfo {
	if x != nil {
		return x.Skill
	}
	return nil
}

type ExecuteRemotePluginRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PluginName string   `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"`
	Args       []string `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"`
	Stream     bool     `protobuf:"varint,3,opt,name=stream,proto3" json:"stream,omitempty"` // if true, server streams output progressively
}

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

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

func (*ExecuteRemotePluginRequest) ProtoMessage() {}

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

// Deprecated: Use ExecuteRemotePluginRequest.ProtoReflect.Descriptor instead.
func (*ExecuteRemotePluginRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{44}
}

func (x *ExecuteRemotePluginRequest) GetPluginName() string {
	if x != nil {
		return x.PluginName
	}
	return ""
}

func (x *ExecuteRemotePluginRequest) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *ExecuteRemotePluginRequest) GetStream() bool {
	if x != nil {
		return x.Stream
	}
	return false
}

type ExecuteRemotePluginResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"`
	Error  string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	Done   bool   `protobuf:"varint,3,opt,name=done,proto3" json:"done,omitempty"` // true when execution is complete
}

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

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

func (*ExecuteRemotePluginResponse) ProtoMessage() {}

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

// Deprecated: Use ExecuteRemotePluginResponse.ProtoReflect.Descriptor instead.
func (*ExecuteRemotePluginResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{45}
}

func (x *ExecuteRemotePluginResponse) GetOutput() string {
	if x != nil {
		return x.Output
	}
	return ""
}

func (x *ExecuteRemotePluginResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *ExecuteRemotePluginResponse) GetDone() bool {
	if x != nil {
		return x.Done
	}
	return false
}

type DownloadPluginRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"`
	TargetOs   string `protobuf:"bytes,2,opt,name=target_os,json=targetOs,proto3" json:"target_os,omitempty"`       // client's runtime.GOOS
	TargetArch string `protobuf:"bytes,3,opt,name=target_arch,json=targetArch,proto3" json:"target_arch,omitempty"` // client's runtime.GOARCH
}

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

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

func (*DownloadPluginRequest) ProtoMessage() {}

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

// Deprecated: Use DownloadPluginRequest.ProtoReflect.Descriptor instead.
func (*DownloadPluginRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{46}
}

func (x *DownloadPluginRequest) GetPluginName() string {
	if x != nil {
		return x.PluginName
	}
	return ""
}

func (x *DownloadPluginRequest) GetTargetOs() string {
	if x != nil {
		return x.TargetOs
	}
	return ""
}

func (x *DownloadPluginRequest) GetTargetArch() string {
	if x != nil {
		return x.TargetArch
	}
	return ""
}

type DownloadPluginResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Chunk     []byte `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"`                           // binary chunk
	Filename  string `protobuf:"bytes,2,opt,name=filename,proto3" json:"filename,omitempty"`                     // plugin filename (set in first chunk)
	TotalSize int64  `protobuf:"varint,3,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"` // total file size in bytes (set in first chunk)
	Done      bool   `protobuf:"varint,4,opt,name=done,proto3" json:"done,omitempty"`                            // true when download is complete
}

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

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

func (*DownloadPluginResponse) ProtoMessage() {}

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

// Deprecated: Use DownloadPluginResponse.ProtoReflect.Descriptor instead.
func (*DownloadPluginResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{47}
}

func (x *DownloadPluginResponse) GetChunk() []byte {
	if x != nil {
		return x.Chunk
	}
	return nil
}

func (x *DownloadPluginResponse) GetFilename() string {
	if x != nil {
		return x.Filename
	}
	return ""
}

func (x *DownloadPluginResponse) GetTotalSize() int64 {
	if x != nil {
		return x.TotalSize
	}
	return 0
}

func (x *DownloadPluginResponse) GetDone() bool {
	if x != nil {
		return x.Done
	}
	return false
}

// ConversationEvent mirrors models.ConversationEvent: one turn in the shared,
// append-only cross-channel conversation log.
type ConversationEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConvId      string `protobuf:"bytes,1,opt,name=conv_id,json=convId,proto3" json:"conv_id,omitempty"`
	Seq         int64  `protobuf:"varint,2,opt,name=seq,proto3" json:"seq,omitempty"` // server-assigned, monotonic per conversation
	Principal   string `protobuf:"bytes,3,opt,name=principal,proto3" json:"principal,omitempty"`
	Channel     string `protobuf:"bytes,4,opt,name=channel,proto3" json:"channel,omitempty"` // "telegram", "slack", "local", ...
	Role        string `protobuf:"bytes,5,opt,name=role,proto3" json:"role,omitempty"`       // user | assistant | tool_summary | checkpoint
	Content     string `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"`
	ClientMsgId string `protobuf:"bytes,7,opt,name=client_msg_id,json=clientMsgId,proto3" json:"client_msg_id,omitempty"` // idempotency key
	Ts          int64  `protobuf:"varint,8,opt,name=ts,proto3" json:"ts,omitempty"`                                       // unix millis
}

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

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

func (*ConversationEvent) ProtoMessage() {}

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

// Deprecated: Use ConversationEvent.ProtoReflect.Descriptor instead.
func (*ConversationEvent) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{48}
}

func (x *ConversationEvent) GetConvId() string {
	if x != nil {
		return x.ConvId
	}
	return ""
}

func (x *ConversationEvent) GetSeq() int64 {
	if x != nil {
		return x.Seq
	}
	return 0
}

func (x *ConversationEvent) GetPrincipal() string {
	if x != nil {
		return x.Principal
	}
	return ""
}

func (x *ConversationEvent) GetChannel() string {
	if x != nil {
		return x.Channel
	}
	return ""
}

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

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

func (x *ConversationEvent) GetClientMsgId() string {
	if x != nil {
		return x.ClientMsgId
	}
	return ""
}

func (x *ConversationEvent) GetTs() int64 {
	if x != nil {
		return x.Ts
	}
	return 0
}

type ResolveActiveConversationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Principal string `protobuf:"bytes,1,opt,name=principal,proto3" json:"principal,omitempty"` // optional; server falls back to the authenticated principal
}

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

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

func (*ResolveActiveConversationRequest) ProtoMessage() {}

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

// Deprecated: Use ResolveActiveConversationRequest.ProtoReflect.Descriptor instead.
func (*ResolveActiveConversationRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{49}
}

func (x *ResolveActiveConversationRequest) GetPrincipal() string {
	if x != nil {
		return x.Principal
	}
	return ""
}

type ResolveActiveConversationResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConvId    string `protobuf:"bytes,1,opt,name=conv_id,json=convId,proto3" json:"conv_id,omitempty"`
	Principal string `protobuf:"bytes,2,opt,name=principal,proto3" json:"principal,omitempty"`
}

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

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

func (*ResolveActiveConversationResponse) ProtoMessage() {}

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

// Deprecated: Use ResolveActiveConversationResponse.ProtoReflect.Descriptor instead.
func (*ResolveActiveConversationResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{50}
}

func (x *ResolveActiveConversationResponse) GetConvId() string {
	if x != nil {
		return x.ConvId
	}
	return ""
}

func (x *ResolveActiveConversationResponse) GetPrincipal() string {
	if x != nil {
		return x.Principal
	}
	return ""
}

type NewConversationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Principal string `protobuf:"bytes,1,opt,name=principal,proto3" json:"principal,omitempty"` // optional; defaults to authenticated principal
}

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

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

func (*NewConversationRequest) ProtoMessage() {}

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

// Deprecated: Use NewConversationRequest.ProtoReflect.Descriptor instead.
func (*NewConversationRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{51}
}

func (x *NewConversationRequest) GetPrincipal() string {
	if x != nil {
		return x.Principal
	}
	return ""
}

type NewConversationResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConvId string `protobuf:"bytes,1,opt,name=conv_id,json=convId,proto3" json:"conv_id,omitempty"`
}

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

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

func (*NewConversationResponse) ProtoMessage() {}

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

// Deprecated: Use NewConversationResponse.ProtoReflect.Descriptor instead.
func (*NewConversationResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{52}
}

func (x *NewConversationResponse) GetConvId() string {
	if x != nil {
		return x.ConvId
	}
	return ""
}

type AppendEventRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConvId      string `protobuf:"bytes,1,opt,name=conv_id,json=convId,proto3" json:"conv_id,omitempty"`
	Channel     string `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"`
	Role        string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"`
	Content     string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
	ClientMsgId string `protobuf:"bytes,5,opt,name=client_msg_id,json=clientMsgId,proto3" json:"client_msg_id,omitempty"` // optional idempotency key
}

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

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

func (*AppendEventRequest) ProtoMessage() {}

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

// Deprecated: Use AppendEventRequest.ProtoReflect.Descriptor instead.
func (*AppendEventRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{53}
}

func (x *AppendEventRequest) GetConvId() string {
	if x != nil {
		return x.ConvId
	}
	return ""
}

func (x *AppendEventRequest) GetChannel() string {
	if x != nil {
		return x.Channel
	}
	return ""
}

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

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

func (x *AppendEventRequest) GetClientMsgId() string {
	if x != nil {
		return x.ClientMsgId
	}
	return ""
}

type AppendEventResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Event *ConversationEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"`
}

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

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

func (*AppendEventResponse) ProtoMessage() {}

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

// Deprecated: Use AppendEventResponse.ProtoReflect.Descriptor instead.
func (*AppendEventResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{54}
}

func (x *AppendEventResponse) GetEvent() *ConversationEvent {
	if x != nil {
		return x.Event
	}
	return nil
}

type ReadConversationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConvId   string `protobuf:"bytes,1,opt,name=conv_id,json=convId,proto3" json:"conv_id,omitempty"`
	SinceSeq int64  `protobuf:"varint,2,opt,name=since_seq,json=sinceSeq,proto3" json:"since_seq,omitempty"`
	Limit    int32  `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // 0 = no limit
}

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

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

func (*ReadConversationRequest) ProtoMessage() {}

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

// Deprecated: Use ReadConversationRequest.ProtoReflect.Descriptor instead.
func (*ReadConversationRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{55}
}

func (x *ReadConversationRequest) GetConvId() string {
	if x != nil {
		return x.ConvId
	}
	return ""
}

func (x *ReadConversationRequest) GetSinceSeq() int64 {
	if x != nil {
		return x.SinceSeq
	}
	return 0
}

func (x *ReadConversationRequest) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

type ReadConversationResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Events []*ConversationEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
}

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

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

func (*ReadConversationResponse) ProtoMessage() {}

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

// Deprecated: Use ReadConversationResponse.ProtoReflect.Descriptor instead.
func (*ReadConversationResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{56}
}

func (x *ReadConversationResponse) GetEvents() []*ConversationEvent {
	if x != nil {
		return x.Events
	}
	return nil
}

type SubscribeConversationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConvId   string `protobuf:"bytes,1,opt,name=conv_id,json=convId,proto3" json:"conv_id,omitempty"`
	SinceSeq int64  `protobuf:"varint,2,opt,name=since_seq,json=sinceSeq,proto3" json:"since_seq,omitempty"`
}

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

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

func (*SubscribeConversationRequest) ProtoMessage() {}

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

// Deprecated: Use SubscribeConversationRequest.ProtoReflect.Descriptor instead.
func (*SubscribeConversationRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{57}
}

func (x *SubscribeConversationRequest) GetConvId() string {
	if x != nil {
		return x.ConvId
	}
	return ""
}

func (x *SubscribeConversationRequest) GetSinceSeq() int64 {
	if x != nil {
		return x.SinceSeq
	}
	return 0
}

type SetBindingRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Platform  string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"`
	UserId    string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Principal string `protobuf:"bytes,3,opt,name=principal,proto3" json:"principal,omitempty"`
}

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

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

func (*SetBindingRequest) ProtoMessage() {}

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

// Deprecated: Use SetBindingRequest.ProtoReflect.Descriptor instead.
func (*SetBindingRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{58}
}

func (x *SetBindingRequest) GetPlatform() string {
	if x != nil {
		return x.Platform
	}
	return ""
}

func (x *SetBindingRequest) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *SetBindingRequest) GetPrincipal() string {
	if x != nil {
		return x.Principal
	}
	return ""
}

type SetBindingResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}

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

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

func (*SetBindingResponse) ProtoMessage() {}

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

// Deprecated: Use SetBindingResponse.ProtoReflect.Descriptor instead.
func (*SetBindingResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{59}
}

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

type ListBindingsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Principal string `protobuf:"bytes,1,opt,name=principal,proto3" json:"principal,omitempty"` // optional filter (empty = all)
}

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

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

func (*ListBindingsRequest) ProtoMessage() {}

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

// Deprecated: Use ListBindingsRequest.ProtoReflect.Descriptor instead.
func (*ListBindingsRequest) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{60}
}

func (x *ListBindingsRequest) GetPrincipal() string {
	if x != nil {
		return x.Principal
	}
	return ""
}

type HubBinding struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Platform  string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"`
	UserId    string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Principal string `protobuf:"bytes,3,opt,name=principal,proto3" json:"principal,omitempty"`
}

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

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

func (*HubBinding) ProtoMessage() {}

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

// Deprecated: Use HubBinding.ProtoReflect.Descriptor instead.
func (*HubBinding) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{61}
}

func (x *HubBinding) GetPlatform() string {
	if x != nil {
		return x.Platform
	}
	return ""
}

func (x *HubBinding) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *HubBinding) GetPrincipal() string {
	if x != nil {
		return x.Principal
	}
	return ""
}

type ListBindingsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Bindings []*HubBinding `protobuf:"bytes,1,rep,name=bindings,proto3" json:"bindings,omitempty"`
}

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

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

func (*ListBindingsResponse) ProtoMessage() {}

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

// Deprecated: Use ListBindingsResponse.ProtoReflect.Descriptor instead.
func (*ListBindingsResponse) Descriptor() ([]byte, []int) {
	return file_chatcli_v1_chatcli_proto_rawDescGZIP(), []int{62}
}

func (x *ListBindingsResponse) GetBindings() []*HubBinding {
	if x != nil {
		return x.Bindings
	}
	return nil
}

var File_chatcli_v1_chatcli_proto protoreflect.FileDescriptor

var file_chatcli_v1_chatcli_proto_rawDesc = []byte{
	0x0a, 0x18, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x68, 0x61,
	0x74, 0x63, 0x6c, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x63, 0x68, 0x61, 0x74,
	0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x22, 0xf4, 0x02, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x50,
	0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72,
	0x6f, 0x6d, 0x70, 0x74, 0x12, 0x31, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07,
	0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x61, 0x78,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
	0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
	0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x5a,
	0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x76,
	0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x72,
	0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x62, 0x0a,
	0x12, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
	0x72, 0x22, 0xf8, 0x02, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x6d,
	0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f,
	0x6d, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70,
	0x74, 0x12, 0x31, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x68, 0x69, 0x73,
	0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12,
	0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
	0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x0f, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69,
	0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x72, 0x6f,
	0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x72, 0x0a, 0x14,
	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f,
	0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d,
	0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
	0x22, 0xd2, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6e, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a,
	0x0a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x00, 0x12, 0x16, 0x0a,
	0x12, 0x41, 0x53, 0x53, 0x49, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f,
	0x4e, 0x53, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f,
	0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52,
	0x4f, 0x52, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10,
	0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53,
	0x55, 0x4c, 0x54, 0x10, 0x05, 0x22, 0x5f, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61,
	0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x75, 0x6d, 0x6d,
	0x61, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6f,
	0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
	0x4f, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x68, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61,
	0x22, 0x9f, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61,
	0x56, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0c,
	0x63, 0x68, 0x61, 0x74, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61,
	0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e,
	0x74, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61,
	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x48,
	0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5f,
	0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73,
	0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x6d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f,
	0x72, 0x79, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x32, 0x0a, 0x14, 0x4c, 0x69, 0x73,
	0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x28, 0x0a,
	0x12, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x33, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43,
	0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x61,
	0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44,
	0x61, 0x74, 0x61, 0x56, 0x32, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61,
	0x74, 0x61, 0x22, 0x9b, 0x01, 0x0a, 0x12, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a,
	0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61,
	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63,
	0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74,
	0x61, 0x56, 0x32, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61,
	0x22, 0x2f, 0x0a, 0x13, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65,
	0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
	0x73, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a,
	0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc7, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08,
	0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2f,
	0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76,
	0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x76, 0x61,
	0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12,
	0x25, 0x0a, 0x0e, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72,
	0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65,
	0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x21, 0x0a,
	0x0c, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xfc, 0x01,
	0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63,
	0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69,
	0x76, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
	0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61,
	0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x65, 0x72, 0x74,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x6c,
	0x65, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x0f, 0x0a, 0x0d,
	0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8d, 0x01,
	0x0a, 0x0e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65,
	0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b,
	0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x22, 0xd5, 0x01,
	0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x12,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18,
	0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65,
	0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
	0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e,
	0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25,
	0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x55, 0x6e, 0x69, 0x78, 0x22, 0x50, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72,
	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d,
	0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61,
	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f,
	0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70,
	0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x45, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x6c,
	0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06,
	0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63,
	0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65,
	0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x22, 0xb5,
	0x03, 0x0a, 0x13, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75,
	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
	0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a,
	0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a,
	0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a,
	0x72, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x09, 0x72, 0x69, 0x73, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2d, 0x0a,
	0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x78, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72,
	0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x38, 0x0a, 0x18,
	0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16,
	0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x14, 0x41, 0x6e, 0x61, 0x6c, 0x79,
	0x7a, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63,
	0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52,
	0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x72,
	0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x11, 0x73, 0x75, 0x67, 0x67, 0x65,
	0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x10, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x22, 0xdb, 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61,
	0x72, 0x61, 0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
	0x8f, 0x02, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f,
	0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x65, 0x70, 0x5f,
	0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74,
	0x65, 0x70, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x69, 0x5f, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x69,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x43, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x2b, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65,
	0x6e, 0x74, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61,
	0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x62, 0x73, 0x65, 0x72,
	0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0xe1, 0x05, 0x0a, 0x12, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x53, 0x74, 0x65,
	0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75,
	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x73,
	0x73, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x1f, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b,
	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d,
	0x0a, 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x09, 0x72, 0x69, 0x73, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64,
	0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12,
	0x2d, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62,
	0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x39,
	0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x1f, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65,
	0x6e, 0x74, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78,
	0x5f, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x61,
	0x78, 0x53, 0x74, 0x65, 0x70, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
	0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x75,
	0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73,
	0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6e, 0x61, 0x6c,
	0x79, 0x73, 0x69, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x5f,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02,
	0x52, 0x11, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65,
	0x6e, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x17, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x72,
	0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x11,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x63,
	0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x57, 0x0a, 0x19,
	0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65,
	0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x1b, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67,
	0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x69, 0x6e,
	0x73, 0x69, 0x67, 0x68, 0x74, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xac, 0x03, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x69,
	0x63, 0x53, 0x74, 0x65, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a,
	0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72,
	0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72,
	0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63,
	0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
	0x74, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x6f, 0x72,
	0x74, 0x65, 0x6d, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x6f, 0x72, 0x74, 0x65, 0x6d, 0x53, 0x75, 0x6d,
	0x6d, 0x61, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x61, 0x75,
	0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x43, 0x61,
	0x75, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6c,
	0x65, 0x73, 0x73, 0x6f, 0x6e, 0x73, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x07,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x65, 0x73, 0x73, 0x6f, 0x6e, 0x73, 0x4c, 0x65, 0x61,
	0x72, 0x6e, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x73, 0x5f,
	0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d,
	0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x76, 0x65, 0x72,
	0x67, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x0a, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x73, 0x61,
	0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12,
	0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68,
	0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4d, 0x0a,
	0x19, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69,
	0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xbf, 0x02, 0x0a,
	0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20,
	0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67,
	0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69,
	0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x6d, 0x61, 0x74, 0x74, 0x65,
	0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x6d, 0x61,
	0x74, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08,
	0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61,
	0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x19,
	0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e,
	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x18, 0x4c, 0x69, 0x73,
	0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x61, 0x67,
	0x65, 0x6e, 0x74, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x74, 0x6f,
	0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x65, 0x64, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x73, 0x6b,
	0x69, 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x61,
	0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66,
	0x6f, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x09, 0x73, 0x75, 0x62, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63,
	0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x75, 0x62,
	0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x63, 0x72, 0x69, 0x70,
	0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74,
	0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x49,
	0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6c,
	0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x6b,
	0x69, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61,
	0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x22, 0x2f, 0x0a, 0x19, 0x47, 0x65, 0x74,
	0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x1a, 0x47, 0x65,
	0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x61, 0x67, 0x65, 0x6e,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
	0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c,
	0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b,
	0x0a, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x22, 0x69, 0x0a, 0x1a, 0x45,
	0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67,
	0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75,
	0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72,
	0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x16,
	0x0a, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
	0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0x5f, 0x0a, 0x1b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74,
	0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a,
	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x76, 0x0a, 0x15, 0x44, 0x6f, 0x77, 0x6e, 0x6c,
	0x6f, 0x61, 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4f, 0x73, 0x12, 0x1f,
	0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x72, 0x63, 0x68, 0x22,
	0x7d, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69,
	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75,
	0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x12,
	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f,
	0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0xd8,
	0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x76, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x10, 0x0a,
	0x03, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12,
	0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x18, 0x0a,
	0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
	0x6d, 0x73, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x73, 0x22, 0x40, 0x0a, 0x20, 0x52, 0x65, 0x73,
	0x6f, 0x6c, 0x76, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
	0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a,
	0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x5a, 0x0a, 0x21, 0x52,
	0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x76,
	0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69,
	0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72,
	0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x36, 0x0a, 0x16, 0x4e, 0x65, 0x77, 0x43, 0x6f,
	0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22,
	0x32, 0x0a, 0x17, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f,
	0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e,
	0x76, 0x49, 0x64, 0x22, 0x99, 0x01, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76,
	0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f,
	0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e,
	0x76, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a,
	0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x73, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x22,
	0x4a, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x65, 0x0a, 0x17, 0x52,
	0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x76, 0x5f, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x76, 0x49, 0x64, 0x12,
	0x1b, 0x0a, 0x09, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05,
	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d,
	0x69, 0x74, 0x22, 0x51, 0x0a, 0x18, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
	0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35,
	0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76,
	0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65,
	0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x54, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x76, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x1b,
	0x0a, 0x09, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x71, 0x22, 0x66, 0x0a, 0x11, 0x53,
	0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x17, 0x0a, 0x07,
	0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75,
	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
	0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69,
	0x70, 0x61, 0x6c, 0x22, 0x2e, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
	0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63,
	0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x22, 0x33, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69,
	0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72,
	0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
	0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x5f, 0x0a, 0x0a, 0x48, 0x75, 0x62, 0x42,
	0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70,
	0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x22, 0x4a, 0x0a, 0x14, 0x4c, 0x69, 0x73,
	0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x48, 0x75, 0x62, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x62, 0x69, 0x6e,
	0x64, 0x69, 0x6e, 0x67, 0x73, 0x32, 0xdd, 0x12, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x74, 0x43, 0x4c,
	0x49, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x64,
	0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50,
	0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x50, 0x0a, 0x12, 0x49, 0x6e,
	0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x12, 0x1a, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x1a, 0x2e, 0x63,
	0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0c,
	0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x2e, 0x63,
	0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x4e, 0x0a, 0x0b, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x4e, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x76, 0x65,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x61, 0x76, 0x65,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x54, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x12, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63,
	0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x47,
	0x65, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x23, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x48, 0x65,
	0x61, 0x6c, 0x74, 0x68, 0x12, 0x19, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x1a, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61,
	0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x47,
	0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63,
	0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65,
	0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x41, 0x67, 0x65, 0x6e,
	0x74, 0x69, 0x63, 0x53, 0x74, 0x65, 0x70, 0x12, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x53, 0x74, 0x65, 0x70,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x53, 0x74, 0x65, 0x70,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x24, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69,
	0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x4c, 0x69, 0x73,
	0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x73,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41,
	0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25,
	0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41,
	0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x69, 0x6e,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a,
	0x0f, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x13, 0x45, 0x78, 0x65,
	0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x12, 0x26, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78,
	0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69,
	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63,
	0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x6d,
	0x6f, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x59, 0x0a, 0x0e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6c, 0x75,
	0x67, 0x69, 0x6e, 0x12, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6c, 0x75, 0x67,
	0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x78, 0x0a, 0x19,
	0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e,
	0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x63, 0x68, 0x61, 0x74,
	0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x41, 0x63,
	0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x41, 0x63, 0x74, 0x69,
	0x76, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e,
	0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x61, 0x74,
	0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
	0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e,
	0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6f,
	0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e,
	0x74, 0x12, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
	0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x68,
	0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e,
	0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x62, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f,
	0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x61,
	0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
	0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76,
	0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64,
	0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x53, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x53, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
	0x67, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x69, 0x69, 0x6c, 0x6c, 0x73, 0x6f, 0x6e, 0x2f, 0x63, 0x68, 0x61,
	0x74, 0x63, 0x6c, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x63,
	0x6c, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68, 0x61, 0x74, 0x63, 0x6c, 0x69, 0x76, 0x31, 0x62,
	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_chatcli_v1_chatcli_proto_rawDescOnce sync.Once
	file_chatcli_v1_chatcli_proto_rawDescData = file_chatcli_v1_chatcli_proto_rawDesc
)

func file_chatcli_v1_chatcli_proto_rawDescGZIP() []byte {
	file_chatcli_v1_chatcli_proto_rawDescOnce.Do(func() {
		file_chatcli_v1_chatcli_proto_rawDescData = protoimpl.X.CompressGZIP(file_chatcli_v1_chatcli_proto_rawDescData)
	})
	return file_chatcli_v1_chatcli_proto_rawDescData
}

var file_chatcli_v1_chatcli_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_chatcli_v1_chatcli_proto_msgTypes = make([]protoimpl.MessageInfo, 70)
var file_chatcli_v1_chatcli_proto_goTypes = []any{
	(SessionMessage_Type)(0),                  // 0: chatcli.v1.SessionMessage.Type
	(HealthResponse_Status)(0),                // 1: chatcli.v1.HealthResponse.Status
	(*SendPromptRequest)(nil),                 // 2: chatcli.v1.SendPromptRequest
	(*SendPromptResponse)(nil),                // 3: chatcli.v1.SendPromptResponse
	(*StreamPromptRequest)(nil),               // 4: chatcli.v1.StreamPromptRequest
	(*StreamPromptResponse)(nil),              // 5: chatcli.v1.StreamPromptResponse
	(*SessionMessage)(nil),                    // 6: chatcli.v1.SessionMessage
	(*MessageMeta)(nil),                       // 7: chatcli.v1.MessageMeta
	(*ChatMessage)(nil),                       // 8: chatcli.v1.ChatMessage
	(*SessionDataV2)(nil),                     // 9: chatcli.v1.SessionDataV2
	(*ListSessionsRequest)(nil),               // 10: chatcli.v1.ListSessionsRequest
	(*ListSessionsResponse)(nil),              // 11: chatcli.v1.ListSessionsResponse
	(*LoadSessionRequest)(nil),                // 12: chatcli.v1.LoadSessionRequest
	(*LoadSessionResponse)(nil),               // 13: chatcli.v1.LoadSessionResponse
	(*SaveSessionRequest)(nil),                // 14: chatcli.v1.SaveSessionRequest
	(*SaveSessionResponse)(nil),               // 15: chatcli.v1.SaveSessionResponse
	(*DeleteSessionRequest)(nil),              // 16: chatcli.v1.DeleteSessionRequest
	(*DeleteSessionResponse)(nil),             // 17: chatcli.v1.DeleteSessionResponse
	(*GetServerInfoRequest)(nil),              // 18: chatcli.v1.GetServerInfoRequest
	(*GetServerInfoResponse)(nil),             // 19: chatcli.v1.GetServerInfoResponse
	(*GetWatcherStatusRequest)(nil),           // 20: chatcli.v1.GetWatcherStatusRequest
	(*GetWatcherStatusResponse)(nil),          // 21: chatcli.v1.GetWatcherStatusResponse
	(*HealthRequest)(nil),                     // 22: chatcli.v1.HealthRequest
	(*HealthResponse)(nil),                    // 23: chatcli.v1.HealthResponse
	(*WatcherAlert)(nil),                      // 24: chatcli.v1.WatcherAlert
	(*GetAlertsRequest)(nil),                  // 25: chatcli.v1.GetAlertsRequest
	(*GetAlertsResponse)(nil),                 // 26: chatcli.v1.GetAlertsResponse
	(*AnalyzeIssueRequest)(nil),               // 27: chatcli.v1.AnalyzeIssueRequest
	(*AnalyzeIssueResponse)(nil),              // 28: chatcli.v1.AnalyzeIssueResponse
	(*SuggestedAction)(nil),                   // 29: chatcli.v1.SuggestedAction
	(*AgenticHistoryEntry)(nil),               // 30: chatcli.v1.AgenticHistoryEntry
	(*AgenticStepRequest)(nil),                // 31: chatcli.v1.AgenticStepRequest
	(*AgenticStepResponse)(nil),               // 32: chatcli.v1.AgenticStepResponse
	(*PluginInfo)(nil),                        // 33: chatcli.v1.PluginInfo
	(*ListRemotePluginsRequest)(nil),          // 34: chatcli.v1.ListRemotePluginsRequest
	(*ListRemotePluginsResponse)(nil),         // 35: chatcli.v1.ListRemotePluginsResponse
	(*AgentInfo)(nil),                         // 36: chatcli.v1.AgentInfo
	(*ListRemoteAgentsRequest)(nil),           // 37: chatcli.v1.ListRemoteAgentsRequest
	(*ListRemoteAgentsResponse)(nil),          // 38: chatcli.v1.ListRemoteAgentsResponse
	(*SkillInfo)(nil),                         // 39: chatcli.v1.SkillInfo
	(*ListRemoteSkillsRequest)(nil),           // 40: chatcli.v1.ListRemoteSkillsRequest
	(*ListRemoteSkillsResponse)(nil),          // 41: chatcli.v1.ListRemoteSkillsResponse
	(*GetAgentDefinitionRequest)(nil),         // 42: chatcli.v1.GetAgentDefinitionRequest
	(*GetAgentDefinitionResponse)(nil),        // 43: chatcli.v1.GetAgentDefinitionResponse
	(*GetSkillContentRequest)(nil),            // 44: chatcli.v1.GetSkillContentRequest
	(*GetSkillContentResponse)(nil),           // 45: chatcli.v1.GetSkillContentResponse
	(*ExecuteRemotePluginRequest)(nil),        // 46: chatcli.v1.ExecuteRemotePluginRequest
	(*ExecuteRemotePluginResponse)(nil),       // 47: chatcli.v1.ExecuteRemotePluginResponse
	(*DownloadPluginRequest)(nil),             // 48: chatcli.v1.DownloadPluginRequest
	(*DownloadPluginResponse)(nil),            // 49: chatcli.v1.DownloadPluginResponse
	(*ConversationEvent)(nil),                 // 50: chatcli.v1.ConversationEvent
	(*ResolveActiveConversationRequest)(nil),  // 51: chatcli.v1.ResolveActiveConversationRequest
	(*ResolveActiveConversationResponse)(nil), // 52: chatcli.v1.ResolveActiveConversationResponse
	(*NewConversationRequest)(nil),            // 53: chatcli.v1.NewConversationRequest
	(*NewConversationResponse)(nil),           // 54: chatcli.v1.NewConversationResponse
	(*AppendEventRequest)(nil),                // 55: chatcli.v1.AppendEventRequest
	(*AppendEventResponse)(nil),               // 56: chatcli.v1.AppendEventResponse
	(*ReadConversationRequest)(nil),           // 57: chatcli.v1.ReadConversationRequest
	(*ReadConversationResponse)(nil),          // 58: chatcli.v1.ReadConversationResponse
	(*SubscribeConversationRequest)(nil),      // 59: chatcli.v1.SubscribeConversationRequest
	(*SetBindingRequest)(nil),                 // 60: chatcli.v1.SetBindingRequest
	(*SetBindingResponse)(nil),                // 61: chatcli.v1.SetBindingResponse
	(*ListBindingsRequest)(nil),               // 62: chatcli.v1.ListBindingsRequest
	(*HubBinding)(nil),                        // 63: chatcli.v1.HubBinding
	(*ListBindingsResponse)(nil),              // 64: chatcli.v1.ListBindingsResponse
	nil,                                       // 65: chatcli.v1.SendPromptRequest.ProviderConfigEntry
	nil,                                       // 66: chatcli.v1.StreamPromptRequest.ProviderConfigEntry
	nil,                                       // 67: chatcli.v1.SessionMessage.MetadataEntry
	nil,                                       // 68: chatcli.v1.SuggestedAction.ParamsEntry
	nil,                                       // 69: chatcli.v1.AgenticHistoryEntry.ParamsEntry
	nil,                                       // 70: chatcli.v1.SkillInfo.SubskillsEntry
	nil,                                       // 71: chatcli.v1.SkillInfo.ScriptsEntry
}
var file_chatcli_v1_chatcli_proto_depIdxs = []int32{
	8,  // 0: chatcli.v1.SendPromptRequest.history:type_name -> chatcli.v1.ChatMessage
	65, // 1: chatcli.v1.SendPromptRequest.provider_config:type_name -> chatcli.v1.SendPromptRequest.ProviderConfigEntry
	8,  // 2: chatcli.v1.StreamPromptRequest.history:type_name -> chatcli.v1.ChatMessage
	66, // 3: chatcli.v1.StreamPromptRequest.provider_config:type_name -> chatcli.v1.StreamPromptRequest.ProviderConfigEntry
	0,  // 4: chatcli.v1.SessionMessage.type:type_name -> chatcli.v1.SessionMessage.Type
	67, // 5: chatcli.v1.SessionMessage.metadata:type_name -> chatcli.v1.SessionMessage.MetadataEntry
	7,  // 6: chatcli.v1.ChatMessage.meta:type_name -> chatcli.v1.MessageMeta
	8,  // 7: chatcli.v1.SessionDataV2.chat_history:type_name -> chatcli.v1.ChatMessage
	8,  // 8: chatcli.v1.SessionDataV2.agent_history:type_name -> chatcli.v1.ChatMessage
	8,  // 9: chatcli.v1.SessionDataV2.coder_history:type_name -> chatcli.v1.ChatMessage
	8,  // 10: chatcli.v1.SessionDataV2.shared_memory:type_name -> chatcli.v1.ChatMessage
	8,  // 11: chatcli.v1.LoadSessionResponse.messages:type_name -> chatcli.v1.ChatMessage
	9,  // 12: chatcli.v1.LoadSessionResponse.session_data:type_name -> chatcli.v1.SessionDataV2
	8,  // 13: chatcli.v1.SaveSessionRequest.messages:type_name -> chatcli.v1.ChatMessage
	9,  // 14: chatcli.v1.SaveSessionRequest.session_data:type_name -> chatcli.v1.SessionDataV2
	1,  // 15: chatcli.v1.HealthResponse.status:type_name -> chatcli.v1.HealthResponse.Status
	24, // 16: chatcli.v1.GetAlertsResponse.alerts:type_name -> chatcli.v1.WatcherAlert
	29, // 17: chatcli.v1.AnalyzeIssueResponse.suggested_actions:type_name -> chatcli.v1.SuggestedAction
	68, // 18: chatcli.v1.SuggestedAction.params:type_name -> chatcli.v1.SuggestedAction.ParamsEntry
	69, // 19: chatcli.v1.AgenticHistoryEntry.params:type_name -> chatcli.v1.AgenticHistoryEntry.ParamsEntry
	30, // 20: chatcli.v1.AgenticStepRequest.history:type_name -> chatcli.v1.AgenticHistoryEntry
	29, // 21: chatcli.v1.AgenticStepRequest.insight_suggested_actions:type_name -> chatcli.v1.SuggestedAction
	29, // 22: chatcli.v1.AgenticStepResponse.next_action:type_name -> chatcli.v1.SuggestedAction
	33, // 23: chatcli.v1.ListRemotePluginsResponse.plugins:type_name -> chatcli.v1.PluginInfo
	36, // 24: chatcli.v1.ListRemoteAgentsResponse.agents:type_name -> chatcli.v1.AgentInfo
	70, // 25: chatcli.v1.SkillInfo.subskills:type_name -> chatcli.v1.SkillInfo.SubskillsEntry
	71, // 26: chatcli.v1.SkillInfo.scripts:type_name -> chatcli.v1.SkillInfo.ScriptsEntry
	39, // 27: chatcli.v1.ListRemoteSkillsResponse.skills:type_name -> chatcli.v1.SkillInfo
	36, // 28: chatcli.v1.GetAgentDefinitionResponse.agent:type_name -> chatcli.v1.AgentInfo
	39, // 29: chatcli.v1.GetSkillContentResponse.skill:type_name -> chatcli.v1.SkillInfo
	50, // 30: chatcli.v1.AppendEventResponse.event:type_name -> chatcli.v1.ConversationEvent
	50, // 31: chatcli.v1.ReadConversationResponse.events:type_name -> chatcli.v1.ConversationEvent
	63, // 32: chatcli.v1.ListBindingsResponse.bindings:type_name -> chatcli.v1.HubBinding
	2,  // 33: chatcli.v1.ChatCLIService.SendPrompt:input_type -> chatcli.v1.SendPromptRequest
	4,  // 34: chatcli.v1.ChatCLIService.StreamPrompt:input_type -> chatcli.v1.StreamPromptRequest
	6,  // 35: chatcli.v1.ChatCLIService.InteractiveSession:input_type -> chatcli.v1.SessionMessage
	10, // 36: chatcli.v1.ChatCLIService.ListSessions:input_type -> chatcli.v1.ListSessionsRequest
	12, // 37: chatcli.v1.ChatCLIService.LoadSession:input_type -> chatcli.v1.LoadSessionRequest
	14, // 38: chatcli.v1.ChatCLIService.SaveSession:input_type -> chatcli.v1.SaveSessionRequest
	16, // 39: chatcli.v1.ChatCLIService.DeleteSession:input_type -> chatcli.v1.DeleteSessionRequest
	18, // 40: chatcli.v1.ChatCLIService.GetServerInfo:input_type -> chatcli.v1.GetServerInfoRequest
	20, // 41: chatcli.v1.ChatCLIService.GetWatcherStatus:input_type -> chatcli.v1.GetWatcherStatusRequest
	22, // 42: chatcli.v1.ChatCLIService.Health:input_type -> chatcli.v1.HealthRequest
	25, // 43: chatcli.v1.ChatCLIService.GetAlerts:input_type -> chatcli.v1.GetAlertsRequest
	27, // 44: chatcli.v1.ChatCLIService.AnalyzeIssue:input_type -> chatcli.v1.AnalyzeIssueRequest
	31, // 45: chatcli.v1.ChatCLIService.AgenticStep:input_type -> chatcli.v1.AgenticStepRequest
	34, // 46: chatcli.v1.ChatCLIService.ListRemotePlugins:input_type -> chatcli.v1.ListRemotePluginsRequest
	37, // 47: chatcli.v1.ChatCLIService.ListRemoteAgents:input_type -> chatcli.v1.ListRemoteAgentsRequest
	40, // 48: chatcli.v1.ChatCLIService.ListRemoteSkills:input_type -> chatcli.v1.ListRemoteSkillsRequest
	42, // 49: chatcli.v1.ChatCLIService.GetAgentDefinition:input_type -> chatcli.v1.GetAgentDefinitionRequest
	44, // 50: chatcli.v1.ChatCLIService.GetSkillContent:input_type -> chatcli.v1.GetSkillContentRequest
	46, // 51: chatcli.v1.ChatCLIService.ExecuteRemotePlugin:input_type -> chatcli.v1.ExecuteRemotePluginRequest
	48, // 52: chatcli.v1.ChatCLIService.DownloadPlugin:input_type -> chatcli.v1.DownloadPluginRequest
	51, // 53: chatcli.v1.ChatCLIService.ResolveActiveConversation:input_type -> chatcli.v1.ResolveActiveConversationRequest
	53, // 54: chatcli.v1.ChatCLIService.NewConversation:input_type -> chatcli.v1.NewConversationRequest
	55, // 55: chatcli.v1.ChatCLIService.AppendEvent:input_type -> chatcli.v1.AppendEventRequest
	57, // 56: chatcli.v1.ChatCLIService.ReadConversation:input_type -> chatcli.v1.ReadConversationRequest
	59, // 57: chatcli.v1.ChatCLIService.SubscribeConversation:input_type -> chatcli.v1.SubscribeConversationRequest
	60, // 58: chatcli.v1.ChatCLIService.SetBinding:input_type -> chatcli.v1.SetBindingRequest
	62, // 59: chatcli.v1.ChatCLIService.ListBindings:input_type -> chatcli.v1.ListBindingsRequest
	3,  // 60: chatcli.v1.ChatCLIService.SendPrompt:output_type -> chatcli.v1.SendPromptResponse
	5,  // 61: chatcli.v1.ChatCLIService.StreamPrompt:output_type -> chatcli.v1.StreamPromptResponse
	6,  // 62: chatcli.v1.ChatCLIService.InteractiveSession:output_type -> chatcli.v1.SessionMessage
	11, // 63: chatcli.v1.ChatCLIService.ListSessions:output_type -> chatcli.v1.ListSessionsResponse
	13, // 64: chatcli.v1.ChatCLIService.LoadSession:output_type -> chatcli.v1.LoadSessionResponse
	15, // 65: chatcli.v1.ChatCLIService.SaveSession:output_type -> chatcli.v1.SaveSessionResponse
	17, // 66: chatcli.v1.ChatCLIService.DeleteSession:output_type -> chatcli.v1.DeleteSessionResponse
	19, // 67: chatcli.v1.ChatCLIService.GetServerInfo:output_type -> chatcli.v1.GetServerInfoResponse
	21, // 68: chatcli.v1.ChatCLIService.GetWatcherStatus:output_type -> chatcli.v1.GetWatcherStatusResponse
	23, // 69: chatcli.v1.ChatCLIService.Health:output_type -> chatcli.v1.HealthResponse
	26, // 70: chatcli.v1.ChatCLIService.GetAlerts:output_type -> chatcli.v1.GetAlertsResponse
	28, // 71: chatcli.v1.ChatCLIService.AnalyzeIssue:output_type -> chatcli.v1.AnalyzeIssueResponse
	32, // 72: chatcli.v1.ChatCLIService.AgenticStep:output_type -> chatcli.v1.AgenticStepResponse
	35, // 73: chatcli.v1.ChatCLIService.ListRemotePlugins:output_type -> chatcli.v1.ListRemotePluginsResponse
	38, // 74: chatcli.v1.ChatCLIService.ListRemoteAgents:output_type -> chatcli.v1.ListRemoteAgentsResponse
	41, // 75: chatcli.v1.ChatCLIService.ListRemoteSkills:output_type -> chatcli.v1.ListRemoteSkillsResponse
	43, // 76: chatcli.v1.ChatCLIService.GetAgentDefinition:output_type -> chatcli.v1.GetAgentDefinitionResponse
	45, // 77: chatcli.v1.ChatCLIService.GetSkillContent:output_type -> chatcli.v1.GetSkillContentResponse
	47, // 78: chatcli.v1.ChatCLIService.ExecuteRemotePlugin:output_type -> chatcli.v1.ExecuteRemotePluginResponse
	49, // 79: chatcli.v1.ChatCLIService.DownloadPlugin:output_type -> chatcli.v1.DownloadPluginResponse
	52, // 80: chatcli.v1.ChatCLIService.ResolveActiveConversation:output_type -> chatcli.v1.ResolveActiveConversationResponse
	54, // 81: chatcli.v1.ChatCLIService.NewConversation:output_type -> chatcli.v1.NewConversationResponse
	56, // 82: chatcli.v1.ChatCLIService.AppendEvent:output_type -> chatcli.v1.AppendEventResponse
	58, // 83: chatcli.v1.ChatCLIService.ReadConversation:output_type -> chatcli.v1.ReadConversationResponse
	50, // 84: chatcli.v1.ChatCLIService.SubscribeConversation:output_type -> chatcli.v1.ConversationEvent
	61, // 85: chatcli.v1.ChatCLIService.SetBinding:output_type -> chatcli.v1.SetBindingResponse
	64, // 86: chatcli.v1.ChatCLIService.ListBindings:output_type -> chatcli.v1.ListBindingsResponse
	60, // [60:87] is the sub-list for method output_type
	33, // [33:60] is the sub-list for method input_type
	33, // [33:33] is the sub-list for extension type_name
	33, // [33:33] is the sub-list for extension extendee
	0,  // [0:33] is the sub-list for field type_name
}

func init() { file_chatcli_v1_chatcli_proto_init() }
func file_chatcli_v1_chatcli_proto_init() {
	if File_chatcli_v1_chatcli_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_chatcli_v1_chatcli_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   70,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_chatcli_v1_chatcli_proto_goTypes,
		DependencyIndexes: file_chatcli_v1_chatcli_proto_depIdxs,
		EnumInfos:         file_chatcli_v1_chatcli_proto_enumTypes,
		MessageInfos:      file_chatcli_v1_chatcli_proto_msgTypes,
	}.Build()
	File_chatcli_v1_chatcli_proto = out.File
	file_chatcli_v1_chatcli_proto_rawDesc = nil
	file_chatcli_v1_chatcli_proto_goTypes = nil
	file_chatcli_v1_chatcli_proto_depIdxs = nil
}
