// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 // protoc v7.35.1 // source: cloud.proto package cloud import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" unsafe "unsafe" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type ToolScope int32 const ( // Default — treated as INSTANCE. Exists so forward-compat clients without // a scope field don't misroute. ToolScope_TOOL_SCOPE_UNSPECIFIED ToolScope = 0 // Applies to the whole Dozzle instance (list_hosts, notifications, etc.). // Requires instance_id in the args. ToolScope_TOOL_SCOPE_INSTANCE ToolScope = 1 // Targets a specific Docker host (deploy_compose, list_deploy_versions). // Requires host_id in the args. ToolScope_TOOL_SCOPE_HOST ToolScope = 2 // Targets a specific container (logs, actions, inspect). Requires // container_id in the args (host_id is typically also present for the // Docker API call inside Dozzle but isn't used for routing). ToolScope_TOOL_SCOPE_CONTAINER ToolScope = 3 ) // Enum value maps for ToolScope. var ( ToolScope_name = map[int32]string{ 0: "TOOL_SCOPE_UNSPECIFIED", 1: "TOOL_SCOPE_INSTANCE", 2: "TOOL_SCOPE_HOST", 3: "TOOL_SCOPE_CONTAINER", } ToolScope_value = map[string]int32{ "TOOL_SCOPE_UNSPECIFIED": 0, "TOOL_SCOPE_INSTANCE": 1, "TOOL_SCOPE_HOST": 2, "TOOL_SCOPE_CONTAINER": 3, } ) func (x ToolScope) Enum() *ToolScope { p := new(ToolScope) *p = x return p } func (x ToolScope) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ToolScope) Descriptor() protoreflect.EnumDescriptor { return file_cloud_proto_enumTypes[0].Descriptor() } func (ToolScope) Type() protoreflect.EnumType { return &file_cloud_proto_enumTypes[0] } func (x ToolScope) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ToolScope.Descriptor instead. func (ToolScope) EnumDescriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{0} } type ToolRequest struct { state protoimpl.MessageState `protogen:"open.v1"` RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` // Types that are valid to be assigned to Type: // // *ToolRequest_ListTools // *ToolRequest_CallTool // *ToolRequest_CancelStream Type isToolRequest_Type `protobuf_oneof:"type"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ToolRequest) Reset() { *x = ToolRequest{} mi := &file_cloud_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ToolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ToolRequest) ProtoMessage() {} func (x *ToolRequest) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ToolRequest.ProtoReflect.Descriptor instead. func (*ToolRequest) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{0} } func (x *ToolRequest) GetRequestId() string { if x != nil { return x.RequestId } return "" } func (x *ToolRequest) GetType() isToolRequest_Type { if x != nil { return x.Type } return nil } func (x *ToolRequest) GetListTools() *ListToolsRequest { if x != nil { if x, ok := x.Type.(*ToolRequest_ListTools); ok { return x.ListTools } } return nil } func (x *ToolRequest) GetCallTool() *CallToolRequest { if x != nil { if x, ok := x.Type.(*ToolRequest_CallTool); ok { return x.CallTool } } return nil } func (x *ToolRequest) GetCancelStream() *CancelStreamRequest { if x != nil { if x, ok := x.Type.(*ToolRequest_CancelStream); ok { return x.CancelStream } } return nil } type isToolRequest_Type interface { isToolRequest_Type() } type ToolRequest_ListTools struct { ListTools *ListToolsRequest `protobuf:"bytes,2,opt,name=list_tools,json=listTools,proto3,oneof"` } type ToolRequest_CallTool struct { CallTool *CallToolRequest `protobuf:"bytes,3,opt,name=call_tool,json=callTool,proto3,oneof"` } type ToolRequest_CancelStream struct { CancelStream *CancelStreamRequest `protobuf:"bytes,4,opt,name=cancel_stream,json=cancelStream,proto3,oneof"` } func (*ToolRequest_ListTools) isToolRequest_Type() {} func (*ToolRequest_CallTool) isToolRequest_Type() {} func (*ToolRequest_CancelStream) isToolRequest_Type() {} type ToolResponse struct { state protoimpl.MessageState `protogen:"open.v1"` RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` // Types that are valid to be assigned to Type: // // *ToolResponse_ListTools // *ToolResponse_CallTool // *ToolResponse_LogBatch // *ToolResponse_StatsBatch Type isToolResponse_Type `protobuf_oneof:"type"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ToolResponse) Reset() { *x = ToolResponse{} mi := &file_cloud_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ToolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ToolResponse) ProtoMessage() {} func (x *ToolResponse) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ToolResponse.ProtoReflect.Descriptor instead. func (*ToolResponse) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{1} } func (x *ToolResponse) GetRequestId() string { if x != nil { return x.RequestId } return "" } func (x *ToolResponse) GetType() isToolResponse_Type { if x != nil { return x.Type } return nil } func (x *ToolResponse) GetListTools() *ListToolsResponse { if x != nil { if x, ok := x.Type.(*ToolResponse_ListTools); ok { return x.ListTools } } return nil } func (x *ToolResponse) GetCallTool() *CallToolResponse { if x != nil { if x, ok := x.Type.(*ToolResponse_CallTool); ok { return x.CallTool } } return nil } func (x *ToolResponse) GetLogBatch() *LogBatch { if x != nil { if x, ok := x.Type.(*ToolResponse_LogBatch); ok { return x.LogBatch } } return nil } func (x *ToolResponse) GetStatsBatch() *StatsBatch { if x != nil { if x, ok := x.Type.(*ToolResponse_StatsBatch); ok { return x.StatsBatch } } return nil } type isToolResponse_Type interface { isToolResponse_Type() } type ToolResponse_ListTools struct { ListTools *ListToolsResponse `protobuf:"bytes,2,opt,name=list_tools,json=listTools,proto3,oneof"` } type ToolResponse_CallTool struct { CallTool *CallToolResponse `protobuf:"bytes,3,opt,name=call_tool,json=callTool,proto3,oneof"` } type ToolResponse_LogBatch struct { // Unsolicited server-push: batched container log lines streamed from // Dozzle to Cloud for ingestion into VictoriaLogs. request_id is empty // for log batches — they are not replies to a ToolRequest. LogBatch *LogBatch `protobuf:"bytes,4,opt,name=log_batch,json=logBatch,proto3,oneof"` } type ToolResponse_StatsBatch struct { // Unsolicited server-push: 30s-windowed container resource metrics. // request_id is empty for stats batches — like log batches, they are not // replies to a ToolRequest. StatsBatch *StatsBatch `protobuf:"bytes,5,opt,name=stats_batch,json=statsBatch,proto3,oneof"` } func (*ToolResponse_ListTools) isToolResponse_Type() {} func (*ToolResponse_CallTool) isToolResponse_Type() {} func (*ToolResponse_LogBatch) isToolResponse_Type() {} func (*ToolResponse_StatsBatch) isToolResponse_Type() {} // Batch of log lines from one or more containers. Dozzle pushes these // continuously while connected. Cloud routes them to VictoriaLogs scoped // to the owning user (derived from the connection's auth). type LogBatch struct { state protoimpl.MessageState `protogen:"open.v1"` Entries []*LogBatchEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LogBatch) Reset() { *x = LogBatch{} mi := &file_cloud_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LogBatch) String() string { return protoimpl.X.MessageStringOf(x) } func (*LogBatch) ProtoMessage() {} func (x *LogBatch) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 LogBatch.ProtoReflect.Descriptor instead. func (*LogBatch) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{2} } func (x *LogBatch) GetEntries() []*LogBatchEntry { if x != nil { return x.Entries } return nil } type LogBatchEntry struct { state protoimpl.MessageState `protogen:"open.v1"` HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` ContainerId string `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` ContainerName string `protobuf:"bytes,3,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` TimestampNs int64 `protobuf:"varint,4,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"` // unix nanoseconds Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` Stream string `protobuf:"bytes,6,opt,name=stream,proto3" json:"stream,omitempty"` // "stdout" or "stderr" Level string `protobuf:"bytes,7,opt,name=level,proto3" json:"level,omitempty"` // "info", "warn", "error", etc. (best-effort) // Deterministic FNV-32a hash of the raw log line, the same id Dozzle // stamps on LogEvent.Id. Cloud indexes this as a non-stream field so // search results can produce a stable permanent link // (/container/:id/time/:datetime?logId=...) that lands the user on // exactly the matching line in the local log viewer. LogId uint32 `protobuf:"varint,8,opt,name=log_id,json=logId,proto3" json:"log_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LogBatchEntry) Reset() { *x = LogBatchEntry{} mi := &file_cloud_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LogBatchEntry) String() string { return protoimpl.X.MessageStringOf(x) } func (*LogBatchEntry) ProtoMessage() {} func (x *LogBatchEntry) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 LogBatchEntry.ProtoReflect.Descriptor instead. func (*LogBatchEntry) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{3} } func (x *LogBatchEntry) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *LogBatchEntry) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *LogBatchEntry) GetContainerName() string { if x != nil { return x.ContainerName } return "" } func (x *LogBatchEntry) GetTimestampNs() int64 { if x != nil { return x.TimestampNs } return 0 } func (x *LogBatchEntry) GetMessage() string { if x != nil { return x.Message } return "" } func (x *LogBatchEntry) GetStream() string { if x != nil { return x.Stream } return "" } func (x *LogBatchEntry) GetLevel() string { if x != nil { return x.Level } return "" } func (x *LogBatchEntry) GetLogId() uint32 { if x != nil { return x.LogId } return 0 } // Batch of windowed container resource metrics. Dozzle aggregates raw ~1Hz // stats into fixed windows and pushes one batch per window while connected. // Cloud writes them to VictoriaMetrics scoped to the owning user (derived // from the connection's auth). type StatsBatch struct { state protoimpl.MessageState `protogen:"open.v1"` Entries []*StatsBatchEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *StatsBatch) Reset() { *x = StatsBatch{} mi := &file_cloud_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *StatsBatch) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatsBatch) ProtoMessage() {} func (x *StatsBatch) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 StatsBatch.ProtoReflect.Descriptor instead. func (*StatsBatch) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{4} } func (x *StatsBatch) GetEntries() []*StatsBatchEntry { if x != nil { return x.Entries } return nil } // One container's metrics for one aggregation window. // // Series identity on the Cloud side is (host_id, container_name) — there is // deliberately no container_id. Container ids churn on every redeploy and each // new value would strand the old time series forever; keying on the name means // a redeploy continues the same series, which is what a resource chart wants. type StatsBatchEntry struct { state protoimpl.MessageState `protogen:"open.v1"` HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` ContainerName string `protobuf:"bytes,2,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` TimestampNs int64 `protobuf:"varint,3,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"` // window END, unix nanoseconds // Gauges — arithmetic mean over the window. CpuPercent float64 `protobuf:"fixed64,4,opt,name=cpu_percent,json=cpuPercent,proto3" json:"cpu_percent,omitempty"` // normalised 0-100 across cores, NOT per-core MemoryPercent float64 `protobuf:"fixed64,5,opt,name=memory_percent,json=memoryPercent,proto3" json:"memory_percent,omitempty"` MemoryUsageBytes float64 `protobuf:"fixed64,6,opt,name=memory_usage_bytes,json=memoryUsageBytes,proto3" json:"memory_usage_bytes,omitempty"` // Peak sample in the window. A 30s mean flattens spikes, and spikes are // exactly what an incident chart is read for. CpuPercentMax float64 `protobuf:"fixed64,7,opt,name=cpu_percent_max,json=cpuPercentMax,proto3" json:"cpu_percent_max,omitempty"` MemoryPercentMax float64 `protobuf:"fixed64,8,opt,name=memory_percent_max,json=memoryPercentMax,proto3" json:"memory_percent_max,omitempty"` // Monotonic counters — the LAST value observed in the window, not a delta. // Cloud stores these as Prometheus counters so PromQL rate()/increase() // handle the reset that happens when a container is recreated. NetworkRxTotal uint64 `protobuf:"varint,9,opt,name=network_rx_total,json=networkRxTotal,proto3" json:"network_rx_total,omitempty"` NetworkTxTotal uint64 `protobuf:"varint,10,opt,name=network_tx_total,json=networkTxTotal,proto3" json:"network_tx_total,omitempty"` DiskReadTotal uint64 `protobuf:"varint,11,opt,name=disk_read_total,json=diskReadTotal,proto3" json:"disk_read_total,omitempty"` DiskWriteTotal uint64 `protobuf:"varint,12,opt,name=disk_write_total,json=diskWriteTotal,proto3" json:"disk_write_total,omitempty"` // Number of raw samples folded into this entry. Windows with zero samples // are never emitted. Samples uint32 `protobuf:"varint,13,opt,name=samples,proto3" json:"samples,omitempty"` // The core count cpu_percent was divided by, so the raw per-core figure // Docker reports stays recoverable downstream. CpuCores float64 `protobuf:"fixed64,14,opt,name=cpu_cores,json=cpuCores,proto3" json:"cpu_cores,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *StatsBatchEntry) Reset() { *x = StatsBatchEntry{} mi := &file_cloud_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *StatsBatchEntry) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatsBatchEntry) ProtoMessage() {} func (x *StatsBatchEntry) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 StatsBatchEntry.ProtoReflect.Descriptor instead. func (*StatsBatchEntry) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{5} } func (x *StatsBatchEntry) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *StatsBatchEntry) GetContainerName() string { if x != nil { return x.ContainerName } return "" } func (x *StatsBatchEntry) GetTimestampNs() int64 { if x != nil { return x.TimestampNs } return 0 } func (x *StatsBatchEntry) GetCpuPercent() float64 { if x != nil { return x.CpuPercent } return 0 } func (x *StatsBatchEntry) GetMemoryPercent() float64 { if x != nil { return x.MemoryPercent } return 0 } func (x *StatsBatchEntry) GetMemoryUsageBytes() float64 { if x != nil { return x.MemoryUsageBytes } return 0 } func (x *StatsBatchEntry) GetCpuPercentMax() float64 { if x != nil { return x.CpuPercentMax } return 0 } func (x *StatsBatchEntry) GetMemoryPercentMax() float64 { if x != nil { return x.MemoryPercentMax } return 0 } func (x *StatsBatchEntry) GetNetworkRxTotal() uint64 { if x != nil { return x.NetworkRxTotal } return 0 } func (x *StatsBatchEntry) GetNetworkTxTotal() uint64 { if x != nil { return x.NetworkTxTotal } return 0 } func (x *StatsBatchEntry) GetDiskReadTotal() uint64 { if x != nil { return x.DiskReadTotal } return 0 } func (x *StatsBatchEntry) GetDiskWriteTotal() uint64 { if x != nil { return x.DiskWriteTotal } return 0 } func (x *StatsBatchEntry) GetSamples() uint32 { if x != nil { return x.Samples } return 0 } func (x *StatsBatchEntry) GetCpuCores() float64 { if x != nil { return x.CpuCores } return 0 } type ListToolsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListToolsRequest) Reset() { *x = ListToolsRequest{} mi := &file_cloud_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListToolsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListToolsRequest) ProtoMessage() {} func (x *ListToolsRequest) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ListToolsRequest.ProtoReflect.Descriptor instead. func (*ListToolsRequest) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{6} } type ListToolsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Tools []*ToolDefinition `protobuf:"bytes,1,rep,name=tools,proto3" json:"tools,omitempty"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListToolsResponse) Reset() { *x = ListToolsResponse{} mi := &file_cloud_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListToolsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListToolsResponse) ProtoMessage() {} func (x *ListToolsResponse) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ListToolsResponse.ProtoReflect.Descriptor instead. func (*ListToolsResponse) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{7} } func (x *ListToolsResponse) GetTools() []*ToolDefinition { if x != nil { return x.Tools } return nil } func (x *ListToolsResponse) GetVersion() string { if x != nil { return x.Version } return "" } type ToolDefinition struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` ParametersJson string `protobuf:"bytes,3,opt,name=parameters_json,json=parametersJson,proto3" json:"parameters_json,omitempty"` // scope tells the cloud router how to multiplex calls to this tool. Dozzle // itself has no notion of "multiple instances"; this field lets the router // decide whether to fan out (default), target a specific container/host // inferred from the existing host_id/container_id params, or target the // whole Dozzle instance (in which case the router injects an instance_id // argument into the LLM-facing schema and strips it before forwarding). Scope ToolScope `protobuf:"varint,4,opt,name=scope,proto3,enum=cloud.ToolScope" json:"scope,omitempty"` // read_only = true means the tool has no side effects and is safe to fan // out across every connected Dozzle instance when the scope's routing // argument is missing (e.g. list_notifications without instance_id queries // all instances and merges results). Mutating tools (create/delete/deploy/ // restart/etc.) must leave this false — the router will require the scope // argument and error if it's missing, so a write never fans out by mistake. ReadOnly bool `protobuf:"varint,5,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ToolDefinition) Reset() { *x = ToolDefinition{} mi := &file_cloud_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ToolDefinition) String() string { return protoimpl.X.MessageStringOf(x) } func (*ToolDefinition) ProtoMessage() {} func (x *ToolDefinition) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ToolDefinition.ProtoReflect.Descriptor instead. func (*ToolDefinition) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{8} } func (x *ToolDefinition) GetName() string { if x != nil { return x.Name } return "" } func (x *ToolDefinition) GetDescription() string { if x != nil { return x.Description } return "" } func (x *ToolDefinition) GetParametersJson() string { if x != nil { return x.ParametersJson } return "" } func (x *ToolDefinition) GetScope() ToolScope { if x != nil { return x.Scope } return ToolScope_TOOL_SCOPE_UNSPECIFIED } func (x *ToolDefinition) GetReadOnly() bool { if x != nil { return x.ReadOnly } return false } type CallToolRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` ArgumentsJson string `protobuf:"bytes,2,opt,name=arguments_json,json=argumentsJson,proto3" json:"arguments_json,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CallToolRequest) Reset() { *x = CallToolRequest{} mi := &file_cloud_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CallToolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CallToolRequest) ProtoMessage() {} func (x *CallToolRequest) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 CallToolRequest.ProtoReflect.Descriptor instead. func (*CallToolRequest) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{9} } func (x *CallToolRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *CallToolRequest) GetArgumentsJson() string { if x != nil { return x.ArgumentsJson } return "" } type CallToolResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` Stream bool `protobuf:"varint,9,opt,name=stream,proto3" json:"stream,omitempty"` EndStream bool `protobuf:"varint,10,opt,name=end_stream,json=endStream,proto3" json:"end_stream,omitempty"` // Types that are valid to be assigned to Result: // // *CallToolResponse_ListHosts // *CallToolResponse_ListContainers // *CallToolResponse_ContainerStats // *CallToolResponse_Action // *CallToolResponse_FetchLogs // *CallToolResponse_InspectContainer // *CallToolResponse_Deploy // *CallToolResponse_Notification Result isCallToolResponse_Result `protobuf_oneof:"result"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CallToolResponse) Reset() { *x = CallToolResponse{} mi := &file_cloud_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CallToolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CallToolResponse) ProtoMessage() {} func (x *CallToolResponse) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 CallToolResponse.ProtoReflect.Descriptor instead. func (*CallToolResponse) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{10} } func (x *CallToolResponse) GetSuccess() bool { if x != nil { return x.Success } return false } func (x *CallToolResponse) GetError() string { if x != nil { return x.Error } return "" } func (x *CallToolResponse) GetStream() bool { if x != nil { return x.Stream } return false } func (x *CallToolResponse) GetEndStream() bool { if x != nil { return x.EndStream } return false } func (x *CallToolResponse) GetResult() isCallToolResponse_Result { if x != nil { return x.Result } return nil } func (x *CallToolResponse) GetListHosts() *ListHostsResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_ListHosts); ok { return x.ListHosts } } return nil } func (x *CallToolResponse) GetListContainers() *ListContainersResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_ListContainers); ok { return x.ListContainers } } return nil } func (x *CallToolResponse) GetContainerStats() *ContainerStatsResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_ContainerStats); ok { return x.ContainerStats } } return nil } func (x *CallToolResponse) GetAction() *ActionResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_Action); ok { return x.Action } } return nil } func (x *CallToolResponse) GetFetchLogs() *FetchLogsResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_FetchLogs); ok { return x.FetchLogs } } return nil } func (x *CallToolResponse) GetInspectContainer() *InspectContainerResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_InspectContainer); ok { return x.InspectContainer } } return nil } func (x *CallToolResponse) GetDeploy() *DeployResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_Deploy); ok { return x.Deploy } } return nil } func (x *CallToolResponse) GetNotification() *NotificationResult { if x != nil { if x, ok := x.Result.(*CallToolResponse_Notification); ok { return x.Notification } } return nil } type isCallToolResponse_Result interface { isCallToolResponse_Result() } type CallToolResponse_ListHosts struct { ListHosts *ListHostsResult `protobuf:"bytes,3,opt,name=list_hosts,json=listHosts,proto3,oneof"` } type CallToolResponse_ListContainers struct { ListContainers *ListContainersResult `protobuf:"bytes,4,opt,name=list_containers,json=listContainers,proto3,oneof"` } type CallToolResponse_ContainerStats struct { ContainerStats *ContainerStatsResult `protobuf:"bytes,5,opt,name=container_stats,json=containerStats,proto3,oneof"` } type CallToolResponse_Action struct { Action *ActionResult `protobuf:"bytes,6,opt,name=action,proto3,oneof"` } type CallToolResponse_FetchLogs struct { FetchLogs *FetchLogsResult `protobuf:"bytes,7,opt,name=fetch_logs,json=fetchLogs,proto3,oneof"` } type CallToolResponse_InspectContainer struct { InspectContainer *InspectContainerResult `protobuf:"bytes,8,opt,name=inspect_container,json=inspectContainer,proto3,oneof"` } type CallToolResponse_Deploy struct { Deploy *DeployResult `protobuf:"bytes,11,opt,name=deploy,proto3,oneof"` } type CallToolResponse_Notification struct { Notification *NotificationResult `protobuf:"bytes,12,opt,name=notification,proto3,oneof"` } func (*CallToolResponse_ListHosts) isCallToolResponse_Result() {} func (*CallToolResponse_ListContainers) isCallToolResponse_Result() {} func (*CallToolResponse_ContainerStats) isCallToolResponse_Result() {} func (*CallToolResponse_Action) isCallToolResponse_Result() {} func (*CallToolResponse_FetchLogs) isCallToolResponse_Result() {} func (*CallToolResponse_InspectContainer) isCallToolResponse_Result() {} func (*CallToolResponse_Deploy) isCallToolResponse_Result() {} func (*CallToolResponse_Notification) isCallToolResponse_Result() {} type CancelStreamRequest struct { state protoimpl.MessageState `protogen:"open.v1"` StreamRequestId string `protobuf:"bytes,1,opt,name=stream_request_id,json=streamRequestId,proto3" json:"stream_request_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CancelStreamRequest) Reset() { *x = CancelStreamRequest{} mi := &file_cloud_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CancelStreamRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CancelStreamRequest) ProtoMessage() {} func (x *CancelStreamRequest) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 CancelStreamRequest.ProtoReflect.Descriptor instead. func (*CancelStreamRequest) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{11} } func (x *CancelStreamRequest) GetStreamRequestId() string { if x != nil { return x.StreamRequestId } return "" } // Host information type HostInfo struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` NCpu int32 `protobuf:"varint,3,opt,name=n_cpu,json=nCpu,proto3" json:"n_cpu,omitempty"` MemTotal int64 `protobuf:"varint,4,opt,name=mem_total,json=memTotal,proto3" json:"mem_total,omitempty"` DockerVersion string `protobuf:"bytes,5,opt,name=docker_version,json=dockerVersion,proto3" json:"docker_version,omitempty"` AgentVersion string `protobuf:"bytes,6,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"` Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` Available bool `protobuf:"varint,8,opt,name=available,proto3" json:"available,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *HostInfo) Reset() { *x = HostInfo{} mi := &file_cloud_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *HostInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*HostInfo) ProtoMessage() {} func (x *HostInfo) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 HostInfo.ProtoReflect.Descriptor instead. func (*HostInfo) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{12} } func (x *HostInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *HostInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *HostInfo) GetNCpu() int32 { if x != nil { return x.NCpu } return 0 } func (x *HostInfo) GetMemTotal() int64 { if x != nil { return x.MemTotal } return 0 } func (x *HostInfo) GetDockerVersion() string { if x != nil { return x.DockerVersion } return "" } func (x *HostInfo) GetAgentVersion() string { if x != nil { return x.AgentVersion } return "" } func (x *HostInfo) GetType() string { if x != nil { return x.Type } return "" } func (x *HostInfo) GetAvailable() bool { if x != nil { return x.Available } return false } type ListHostsResult struct { state protoimpl.MessageState `protogen:"open.v1"` Hosts []*HostInfo `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListHostsResult) Reset() { *x = ListHostsResult{} mi := &file_cloud_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListHostsResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListHostsResult) ProtoMessage() {} func (x *ListHostsResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ListHostsResult.ProtoReflect.Descriptor instead. func (*ListHostsResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{13} } func (x *ListHostsResult) GetHosts() []*HostInfo { if x != nil { return x.Hosts } return nil } // Container information type ContainerInfo struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` Created string `protobuf:"bytes,5,opt,name=created,proto3" json:"created,omitempty"` StartedAt string `protobuf:"bytes,6,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` FinishedAt string `protobuf:"bytes,7,opt,name=finished_at,json=finishedAt,proto3" json:"finished_at,omitempty"` State string `protobuf:"bytes,8,opt,name=state,proto3" json:"state,omitempty"` Health string `protobuf:"bytes,9,opt,name=health,proto3" json:"health,omitempty"` HostName string `protobuf:"bytes,10,opt,name=host_name,json=hostName,proto3" json:"host_name,omitempty"` HostId string `protobuf:"bytes,12,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` Group string `protobuf:"bytes,11,opt,name=group,proto3" json:"group,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ContainerInfo) Reset() { *x = ContainerInfo{} mi := &file_cloud_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ContainerInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContainerInfo) ProtoMessage() {} func (x *ContainerInfo) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ContainerInfo.ProtoReflect.Descriptor instead. func (*ContainerInfo) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{14} } func (x *ContainerInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *ContainerInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *ContainerInfo) GetImage() string { if x != nil { return x.Image } return "" } func (x *ContainerInfo) GetCommand() string { if x != nil { return x.Command } return "" } func (x *ContainerInfo) GetCreated() string { if x != nil { return x.Created } return "" } func (x *ContainerInfo) GetStartedAt() string { if x != nil { return x.StartedAt } return "" } func (x *ContainerInfo) GetFinishedAt() string { if x != nil { return x.FinishedAt } return "" } func (x *ContainerInfo) GetState() string { if x != nil { return x.State } return "" } func (x *ContainerInfo) GetHealth() string { if x != nil { return x.Health } return "" } func (x *ContainerInfo) GetHostName() string { if x != nil { return x.HostName } return "" } func (x *ContainerInfo) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *ContainerInfo) GetGroup() string { if x != nil { return x.Group } return "" } type ListContainersResult struct { state protoimpl.MessageState `protogen:"open.v1"` Containers []*ContainerInfo `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListContainersResult) Reset() { *x = ListContainersResult{} mi := &file_cloud_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ListContainersResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListContainersResult) ProtoMessage() {} func (x *ListContainersResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ListContainersResult.ProtoReflect.Descriptor instead. func (*ListContainersResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{15} } func (x *ListContainersResult) GetContainers() []*ContainerInfo { if x != nil { return x.Containers } return nil } // Container stats type ContainerStatEntry struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Host string `protobuf:"bytes,3,opt,name=host,proto3" json:"host,omitempty"` CpuPercent float64 `protobuf:"fixed64,4,opt,name=cpu_percent,json=cpuPercent,proto3" json:"cpu_percent,omitempty"` MemoryPercent float64 `protobuf:"fixed64,5,opt,name=memory_percent,json=memoryPercent,proto3" json:"memory_percent,omitempty"` MemoryUsage float64 `protobuf:"fixed64,6,opt,name=memory_usage,json=memoryUsage,proto3" json:"memory_usage,omitempty"` MaxCpu_5Min float64 `protobuf:"fixed64,7,opt,name=max_cpu_5min,json=maxCpu5min,proto3" json:"max_cpu_5min,omitempty"` MaxMemory_5Min float64 `protobuf:"fixed64,8,opt,name=max_memory_5min,json=maxMemory5min,proto3" json:"max_memory_5min,omitempty"` HostId string `protobuf:"bytes,9,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` NetworkRxTotal uint64 `protobuf:"varint,10,opt,name=network_rx_total,json=networkRxTotal,proto3" json:"network_rx_total,omitempty"` NetworkTxTotal uint64 `protobuf:"varint,11,opt,name=network_tx_total,json=networkTxTotal,proto3" json:"network_tx_total,omitempty"` NetworkRx_5Min uint64 `protobuf:"varint,12,opt,name=network_rx_5min,json=networkRx5min,proto3" json:"network_rx_5min,omitempty"` NetworkTx_5Min uint64 `protobuf:"varint,13,opt,name=network_tx_5min,json=networkTx5min,proto3" json:"network_tx_5min,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ContainerStatEntry) Reset() { *x = ContainerStatEntry{} mi := &file_cloud_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ContainerStatEntry) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContainerStatEntry) ProtoMessage() {} func (x *ContainerStatEntry) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ContainerStatEntry.ProtoReflect.Descriptor instead. func (*ContainerStatEntry) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{16} } func (x *ContainerStatEntry) GetId() string { if x != nil { return x.Id } return "" } func (x *ContainerStatEntry) GetName() string { if x != nil { return x.Name } return "" } func (x *ContainerStatEntry) GetHost() string { if x != nil { return x.Host } return "" } func (x *ContainerStatEntry) GetCpuPercent() float64 { if x != nil { return x.CpuPercent } return 0 } func (x *ContainerStatEntry) GetMemoryPercent() float64 { if x != nil { return x.MemoryPercent } return 0 } func (x *ContainerStatEntry) GetMemoryUsage() float64 { if x != nil { return x.MemoryUsage } return 0 } func (x *ContainerStatEntry) GetMaxCpu_5Min() float64 { if x != nil { return x.MaxCpu_5Min } return 0 } func (x *ContainerStatEntry) GetMaxMemory_5Min() float64 { if x != nil { return x.MaxMemory_5Min } return 0 } func (x *ContainerStatEntry) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *ContainerStatEntry) GetNetworkRxTotal() uint64 { if x != nil { return x.NetworkRxTotal } return 0 } func (x *ContainerStatEntry) GetNetworkTxTotal() uint64 { if x != nil { return x.NetworkTxTotal } return 0 } func (x *ContainerStatEntry) GetNetworkRx_5Min() uint64 { if x != nil { return x.NetworkRx_5Min } return 0 } func (x *ContainerStatEntry) GetNetworkTx_5Min() uint64 { if x != nil { return x.NetworkTx_5Min } return 0 } type ContainerStatsResult struct { state protoimpl.MessageState `protogen:"open.v1"` Stats []*ContainerStatEntry `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ContainerStatsResult) Reset() { *x = ContainerStatsResult{} mi := &file_cloud_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ContainerStatsResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContainerStatsResult) ProtoMessage() {} func (x *ContainerStatsResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ContainerStatsResult.ProtoReflect.Descriptor instead. func (*ContainerStatsResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{17} } func (x *ContainerStatsResult) GetStats() []*ContainerStatEntry { if x != nil { return x.Stats } return nil } // Container logs type LogEntry struct { state protoimpl.MessageState `protogen:"open.v1"` Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` Stream string `protobuf:"bytes,3,opt,name=stream,proto3" json:"stream,omitempty"` // "stdout" or "stderr" Level string `protobuf:"bytes,4,opt,name=level,proto3" json:"level,omitempty"` // "info", "warn", "error", etc. unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LogEntry) Reset() { *x = LogEntry{} mi := &file_cloud_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LogEntry) String() string { return protoimpl.X.MessageStringOf(x) } func (*LogEntry) ProtoMessage() {} func (x *LogEntry) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 LogEntry.ProtoReflect.Descriptor instead. func (*LogEntry) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{18} } func (x *LogEntry) GetTimestamp() int64 { if x != nil { return x.Timestamp } return 0 } func (x *LogEntry) GetMessage() string { if x != nil { return x.Message } return "" } func (x *LogEntry) GetStream() string { if x != nil { return x.Stream } return "" } func (x *LogEntry) GetLevel() string { if x != nil { return x.Level } return "" } type FetchLogsResult struct { state protoimpl.MessageState `protogen:"open.v1"` ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` Entries []*LogEntry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FetchLogsResult) Reset() { *x = FetchLogsResult{} mi := &file_cloud_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FetchLogsResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*FetchLogsResult) ProtoMessage() {} func (x *FetchLogsResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 FetchLogsResult.ProtoReflect.Descriptor instead. func (*FetchLogsResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{19} } func (x *FetchLogsResult) GetContainerName() string { if x != nil { return x.ContainerName } return "" } func (x *FetchLogsResult) GetEntries() []*LogEntry { if x != nil { return x.Entries } return nil } // Container inspect result type InspectContainerResult struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` Created string `protobuf:"bytes,5,opt,name=created,proto3" json:"created,omitempty"` StartedAt string `protobuf:"bytes,6,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` FinishedAt string `protobuf:"bytes,7,opt,name=finished_at,json=finishedAt,proto3" json:"finished_at,omitempty"` State string `protobuf:"bytes,8,opt,name=state,proto3" json:"state,omitempty"` Health string `protobuf:"bytes,9,opt,name=health,proto3" json:"health,omitempty"` HostName string `protobuf:"bytes,10,opt,name=host_name,json=hostName,proto3" json:"host_name,omitempty"` HostId string `protobuf:"bytes,19,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` Labels map[string]string `protobuf:"bytes,11,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` MemoryLimit uint64 `protobuf:"varint,12,opt,name=memory_limit,json=memoryLimit,proto3" json:"memory_limit,omitempty"` CpuLimit float64 `protobuf:"fixed64,13,opt,name=cpu_limit,json=cpuLimit,proto3" json:"cpu_limit,omitempty"` Ports []string `protobuf:"bytes,15,rep,name=ports,proto3" json:"ports,omitempty"` Mounts []string `protobuf:"bytes,16,rep,name=mounts,proto3" json:"mounts,omitempty"` RestartPolicy string `protobuf:"bytes,17,opt,name=restart_policy,json=restartPolicy,proto3" json:"restart_policy,omitempty"` NetworkMode string `protobuf:"bytes,18,opt,name=network_mode,json=networkMode,proto3" json:"network_mode,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *InspectContainerResult) Reset() { *x = InspectContainerResult{} mi := &file_cloud_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *InspectContainerResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*InspectContainerResult) ProtoMessage() {} func (x *InspectContainerResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 InspectContainerResult.ProtoReflect.Descriptor instead. func (*InspectContainerResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{20} } func (x *InspectContainerResult) GetId() string { if x != nil { return x.Id } return "" } func (x *InspectContainerResult) GetName() string { if x != nil { return x.Name } return "" } func (x *InspectContainerResult) GetImage() string { if x != nil { return x.Image } return "" } func (x *InspectContainerResult) GetCommand() string { if x != nil { return x.Command } return "" } func (x *InspectContainerResult) GetCreated() string { if x != nil { return x.Created } return "" } func (x *InspectContainerResult) GetStartedAt() string { if x != nil { return x.StartedAt } return "" } func (x *InspectContainerResult) GetFinishedAt() string { if x != nil { return x.FinishedAt } return "" } func (x *InspectContainerResult) GetState() string { if x != nil { return x.State } return "" } func (x *InspectContainerResult) GetHealth() string { if x != nil { return x.Health } return "" } func (x *InspectContainerResult) GetHostName() string { if x != nil { return x.HostName } return "" } func (x *InspectContainerResult) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *InspectContainerResult) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } func (x *InspectContainerResult) GetMemoryLimit() uint64 { if x != nil { return x.MemoryLimit } return 0 } func (x *InspectContainerResult) GetCpuLimit() float64 { if x != nil { return x.CpuLimit } return 0 } func (x *InspectContainerResult) GetPorts() []string { if x != nil { return x.Ports } return nil } func (x *InspectContainerResult) GetMounts() []string { if x != nil { return x.Mounts } return nil } func (x *InspectContainerResult) GetRestartPolicy() string { if x != nil { return x.RestartPolicy } return "" } func (x *InspectContainerResult) GetNetworkMode() string { if x != nil { return x.NetworkMode } return "" } // Container action result type ActionResult struct { state protoimpl.MessageState `protogen:"open.v1"` Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` ContainerId string `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ActionResult) Reset() { *x = ActionResult{} mi := &file_cloud_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ActionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActionResult) ProtoMessage() {} func (x *ActionResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 ActionResult.ProtoReflect.Descriptor instead. func (*ActionResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{21} } func (x *ActionResult) GetSuccess() bool { if x != nil { return x.Success } return false } func (x *ActionResult) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *ActionResult) GetAction() string { if x != nil { return x.Action } return "" } func (x *ActionResult) GetMessage() string { if x != nil { return x.Message } return "" } // Deploy compose result type DeployResult struct { state protoimpl.MessageState `protogen:"open.v1"` Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DeployResult) Reset() { *x = DeployResult{} mi := &file_cloud_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DeployResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeployResult) ProtoMessage() {} func (x *DeployResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 DeployResult.ProtoReflect.Descriptor instead. func (*DeployResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{22} } func (x *DeployResult) GetSuccess() bool { if x != nil { return x.Success } return false } func (x *DeployResult) GetProject() string { if x != nil { return x.Project } return "" } func (x *DeployResult) GetMessage() string { if x != nil { return x.Message } return "" } // Notification/alert tool result (list, create). type NotificationResult struct { state protoimpl.MessageState `protogen:"open.v1"` Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NotificationResult) Reset() { *x = NotificationResult{} mi := &file_cloud_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *NotificationResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*NotificationResult) ProtoMessage() {} func (x *NotificationResult) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 NotificationResult.ProtoReflect.Descriptor instead. func (*NotificationResult) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{23} } func (x *NotificationResult) GetSuccess() bool { if x != nil { return x.Success } return false } func (x *NotificationResult) GetMessage() string { if x != nil { return x.Message } return "" } // Cloud log search. type SearchLogsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Substring/word-filter query. Empty -> empty result. Whitespace-only // is rejected client-side; server treats as empty. Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` // Result cap. Default 20, server-capped at 50. Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Pagination cursor: return only hits with timestamp_ns < this value. // 0 = newest. Reserved for future use. BeforeTsNs int64 `protobuf:"varint,3,opt,name=before_ts_ns,json=beforeTsNs,proto3" json:"before_ts_ns,omitempty"` // Optional filter — narrow to a specific Docker host inside the instance. // Empty = all hosts under this instance. HostId string `protobuf:"bytes,4,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // Optional filter — narrow to a specific container. ContainerId string `protobuf:"bytes,5,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchLogsRequest) Reset() { *x = SearchLogsRequest{} mi := &file_cloud_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchLogsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchLogsRequest) ProtoMessage() {} func (x *SearchLogsRequest) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 SearchLogsRequest.ProtoReflect.Descriptor instead. func (*SearchLogsRequest) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{24} } func (x *SearchLogsRequest) GetQuery() string { if x != nil { return x.Query } return "" } func (x *SearchLogsRequest) GetLimit() int32 { if x != nil { return x.Limit } return 0 } func (x *SearchLogsRequest) GetBeforeTsNs() int64 { if x != nil { return x.BeforeTsNs } return 0 } func (x *SearchLogsRequest) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *SearchLogsRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } type SearchLogsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Hits []*SearchLogHit `protobuf:"bytes,1,rep,name=hits,proto3" json:"hits,omitempty"` HasMore bool `protobuf:"varint,2,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` // For pagination: pass back as before_ts_ns to fetch the next page. NextBeforeTsNs int64 `protobuf:"varint,3,opt,name=next_before_ts_ns,json=nextBeforeTsNs,proto3" json:"next_before_ts_ns,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchLogsResponse) Reset() { *x = SearchLogsResponse{} mi := &file_cloud_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchLogsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchLogsResponse) ProtoMessage() {} func (x *SearchLogsResponse) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 SearchLogsResponse.ProtoReflect.Descriptor instead. func (*SearchLogsResponse) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{25} } func (x *SearchLogsResponse) GetHits() []*SearchLogHit { if x != nil { return x.Hits } return nil } func (x *SearchLogsResponse) GetHasMore() bool { if x != nil { return x.HasMore } return false } func (x *SearchLogsResponse) GetNextBeforeTsNs() int64 { if x != nil { return x.NextBeforeTsNs } return 0 } type SearchLogHit struct { state protoimpl.MessageState `protogen:"open.v1"` TimestampNs int64 `protobuf:"varint,1,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"` HostId string `protobuf:"bytes,2,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` ContainerId string `protobuf:"bytes,3,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` ContainerName string `protobuf:"bytes,4,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` // Full log line as indexed. Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` Stream string `protobuf:"bytes,6,opt,name=stream,proto3" json:"stream,omitempty"` Level string `protobuf:"bytes,7,opt,name=level,proto3" json:"level,omitempty"` // FNV-32a hash of the raw log line — same id Dozzle assigns LogEvent.Id // and exposes via "Copy permalink". Lets the search-result row deep-link // straight to the matching line. LogId uint32 `protobuf:"varint,8,opt,name=log_id,json=logId,proto3" json:"log_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchLogHit) Reset() { *x = SearchLogHit{} mi := &file_cloud_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchLogHit) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchLogHit) ProtoMessage() {} func (x *SearchLogHit) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 SearchLogHit.ProtoReflect.Descriptor instead. func (*SearchLogHit) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{26} } func (x *SearchLogHit) GetTimestampNs() int64 { if x != nil { return x.TimestampNs } return 0 } func (x *SearchLogHit) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *SearchLogHit) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *SearchLogHit) GetContainerName() string { if x != nil { return x.ContainerName } return "" } func (x *SearchLogHit) GetMessage() string { if x != nil { return x.Message } return "" } func (x *SearchLogHit) GetStream() string { if x != nil { return x.Stream } return "" } func (x *SearchLogHit) GetLevel() string { if x != nil { return x.Level } return "" } func (x *SearchLogHit) GetLogId() uint32 { if x != nil { return x.LogId } return 0 } // Cloud alert history, merged into the local log stream on scrollback. type GetAlertsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Containers currently in the viewer. Batched into one call because the // viewer fans out over N containers per scroll and must not pay N round // trips to cloud. Empty -> empty result. ContainerIds []string `protobuf:"bytes,1,rep,name=container_ids,json=containerIds,proto3" json:"container_ids,omitempty"` // Optional filter — narrow to a specific Docker host inside the instance. // Empty = all hosts under this instance. HostId string `protobuf:"bytes,2,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // Window to fetch, matching the [from, to] the viewer just loaded logs for. FromTsNs int64 `protobuf:"varint,3,opt,name=from_ts_ns,json=fromTsNs,proto3" json:"from_ts_ns,omitempty"` ToTsNs int64 `protobuf:"varint,4,opt,name=to_ts_ns,json=toTsNs,proto3" json:"to_ts_ns,omitempty"` // Result cap. Default 50, server-capped at 200. A single scroll window // covering a noisy incident can legitimately hold many alerts, so this // ceiling is higher than the log-search one. Limit int32 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` // Include follow-up anchors — points where an already-open incident was // still firing, as opposed to where it first fired. See AlertHit.is_origin. // Default false keeps a long-running incident to a single card. IncludeFollowUps bool `protobuf:"varint,6,opt,name=include_follow_ups,json=includeFollowUps,proto3" json:"include_follow_ups,omitempty"` // Also return the individual matched events in the window, not just the // alerts they were aggregated into. An alert means a notification was // delivered; an event on its own may have been held back. IncludeEvents bool `protobuf:"varint,7,opt,name=include_events,json=includeEvents,proto3" json:"include_events,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetAlertsRequest) Reset() { *x = GetAlertsRequest{} mi := &file_cloud_proto_msgTypes[27] 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_cloud_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 GetAlertsRequest.ProtoReflect.Descriptor instead. func (*GetAlertsRequest) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{27} } func (x *GetAlertsRequest) GetContainerIds() []string { if x != nil { return x.ContainerIds } return nil } func (x *GetAlertsRequest) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *GetAlertsRequest) GetFromTsNs() int64 { if x != nil { return x.FromTsNs } return 0 } func (x *GetAlertsRequest) GetToTsNs() int64 { if x != nil { return x.ToTsNs } return 0 } func (x *GetAlertsRequest) GetLimit() int32 { if x != nil { return x.Limit } return 0 } func (x *GetAlertsRequest) GetIncludeFollowUps() bool { if x != nil { return x.IncludeFollowUps } return false } func (x *GetAlertsRequest) GetIncludeEvents() bool { if x != nil { return x.IncludeEvents } return false } type AlertHit struct { state protoimpl.MessageState `protogen:"open.v1"` // Opaque, sqids-encoded — never the raw BIGSERIAL, which would leak total // alert counts to anything reading a response or a deep link. Decoding it is // Cloud's business; to Dozzle it is a string to compare and nothing more. AlertId string `protobuf:"bytes,1,opt,name=alert_id,json=alertId,proto3" json:"alert_id,omitempty"` ContainerId string `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` HostId string `protobuf:"bytes,3,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // FNV-32a hash of the log line that triggered this alert — the same id // Dozzle stamps on LogEvent.Id. Lets the viewer splice the alert in // directly after its trigger line instead of guessing from a timestamp. // 0 when the alert is not log-anchored (metric and event alerts). LogId uint32 `protobuf:"varint,4,opt,name=log_id,json=logId,proto3" json:"log_id,omitempty"` // Timestamp to anchor on when log_id is 0, or when the trigger line isn't // in the loaded window. AnchorTsNs int64 `protobuf:"varint,5,opt,name=anchor_ts_ns,json=anchorTsNs,proto3" json:"anchor_ts_ns,omitempty"` // Triage's one-line summary. Falls back to the alert title when no // summarizer LLM was involved. Headline string `protobuf:"bytes,6,opt,name=headline,proto3" json:"headline,omitempty"` Level string `protobuf:"bytes,7,opt,name=level,proto3" json:"level,omitempty"` // Raw events folded into this alert, and follow-up batches triage absorbed // silently after it was first sent. EventCount int32 `protobuf:"varint,8,opt,name=event_count,json=eventCount,proto3" json:"event_count,omitempty"` SuppressedCount int32 `protobuf:"varint,9,opt,name=suppressed_count,json=suppressedCount,proto3" json:"suppressed_count,omitempty"` // Distinct containers this alert spans. > 1 means the incident is wider // than the container currently being viewed. ContainerCount int32 `protobuf:"varint,10,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` // Triage's longer write-up. May be empty. Rendered collapsed. Investigation string `protobuf:"bytes,11,opt,name=investigation,proto3" json:"investigation,omitempty"` // 'send_new' | 'fallback' | ”. Never 'suppress' or 'update_existing': // cloud folds those into the incident's original row rather than inserting // one, so every hit is an incident, not a triage decision. TriageAction string `protobuf:"bytes,12,opt,name=triage_action,json=triageAction,proto3" json:"triage_action,omitempty"` // The alert's description — the same prose the Cloud alert page shows under // the headline. Present even when triage wrote no investigation, so it is // usually the only detail a non-triaged alert can offer. Summary string `protobuf:"bytes,17,opt,name=summary,proto3" json:"summary,omitempty"` // True when this hit anchors where the incident FIRST fired. False for a // follow-up anchor: cloud appends every folded batch's events to the // original alert, so one incident can have activity in many scroll windows. // The viewer renders a full card at the origin and a compact "still // happening" marker at follow-ups. IsOrigin bool `protobuf:"varint,16,opt,name=is_origin,json=isOrigin,proto3" json:"is_origin,omitempty"` CreatedAtNs int64 `protobuf:"varint,13,opt,name=created_at_ns,json=createdAtNs,proto3" json:"created_at_ns,omitempty"` // Bumped every time a follow-up batch folds into this alert. Drives the // "still happening" state on the card. LastActivityAtNs int64 `protobuf:"varint,14,opt,name=last_activity_at_ns,json=lastActivityAtNs,proto3" json:"last_activity_at_ns,omitempty"` // Deep link to the alert page in Dozzle Cloud, built from the API key's // app_url. Empty when the key has no app_url configured. Url string `protobuf:"bytes,15,opt,name=url,proto3" json:"url,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AlertHit) Reset() { *x = AlertHit{} mi := &file_cloud_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AlertHit) String() string { return protoimpl.X.MessageStringOf(x) } func (*AlertHit) ProtoMessage() {} func (x *AlertHit) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 AlertHit.ProtoReflect.Descriptor instead. func (*AlertHit) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{28} } func (x *AlertHit) GetAlertId() string { if x != nil { return x.AlertId } return "" } func (x *AlertHit) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *AlertHit) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *AlertHit) GetLogId() uint32 { if x != nil { return x.LogId } return 0 } func (x *AlertHit) GetAnchorTsNs() int64 { if x != nil { return x.AnchorTsNs } return 0 } func (x *AlertHit) GetHeadline() string { if x != nil { return x.Headline } return "" } func (x *AlertHit) GetLevel() string { if x != nil { return x.Level } return "" } func (x *AlertHit) GetEventCount() int32 { if x != nil { return x.EventCount } return 0 } func (x *AlertHit) GetSuppressedCount() int32 { if x != nil { return x.SuppressedCount } return 0 } func (x *AlertHit) GetContainerCount() int32 { if x != nil { return x.ContainerCount } return 0 } func (x *AlertHit) GetInvestigation() string { if x != nil { return x.Investigation } return "" } func (x *AlertHit) GetTriageAction() string { if x != nil { return x.TriageAction } return "" } func (x *AlertHit) GetSummary() string { if x != nil { return x.Summary } return "" } func (x *AlertHit) GetIsOrigin() bool { if x != nil { return x.IsOrigin } return false } func (x *AlertHit) GetCreatedAtNs() int64 { if x != nil { return x.CreatedAtNs } return 0 } func (x *AlertHit) GetLastActivityAtNs() int64 { if x != nil { return x.LastActivityAtNs } return 0 } func (x *AlertHit) GetUrl() string { if x != nil { return x.Url } return "" } // One matched event — a notification Dozzle raised because it matched a // subscription. Many events aggregate into one alert, so these are far more // numerous than hits and the viewer collapses runs of them. type EventHit struct { state protoimpl.MessageState `protogen:"open.v1"` TsNs int64 `protobuf:"varint,1,opt,name=ts_ns,json=tsNs,proto3" json:"ts_ns,omitempty"` // FNV-32a hash of the line that matched, 0 for metric and event types. LogId uint32 `protobuf:"varint,2,opt,name=log_id,json=logId,proto3" json:"log_id,omitempty"` ContainerId string `protobuf:"bytes,3,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` HostId string `protobuf:"bytes,4,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` Level string `protobuf:"bytes,5,opt,name=level,proto3" json:"level,omitempty"` Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` // 'log' | 'metric' | 'event' — the notification's own type. Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` // The incident that absorbed this event; 0 when it never reached an alert. // Opaque, sqids-encoded — see AlertHit.alert_id. Empty when the event never // reached an alert. AlertId string `protobuf:"bytes,8,opt,name=alert_id,json=alertId,proto3" json:"alert_id,omitempty"` // True when this event produced no delivered notification of its own: it // arrived after its alert had already been sent and was folded in silently, // or it never became an alert at all. Suppressed bool `protobuf:"varint,9,opt,name=suppressed,proto3" json:"suppressed,omitempty"` // Human-readable summary Dozzle wrote when it raised the notification: the // log line for a log event, "CPU: 45.2%, Memory: 61.0%" for a metric, the // lifecycle description for a container event. The only renderable text a // metric or event notification has, since neither carries a log line. Detail string `protobuf:"bytes,10,opt,name=detail,proto3" json:"detail,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *EventHit) Reset() { *x = EventHit{} mi := &file_cloud_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *EventHit) String() string { return protoimpl.X.MessageStringOf(x) } func (*EventHit) ProtoMessage() {} func (x *EventHit) ProtoReflect() protoreflect.Message { mi := &file_cloud_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 EventHit.ProtoReflect.Descriptor instead. func (*EventHit) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{29} } func (x *EventHit) GetTsNs() int64 { if x != nil { return x.TsNs } return 0 } func (x *EventHit) GetLogId() uint32 { if x != nil { return x.LogId } return 0 } func (x *EventHit) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *EventHit) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *EventHit) GetLevel() string { if x != nil { return x.Level } return "" } func (x *EventHit) GetMessage() string { if x != nil { return x.Message } return "" } func (x *EventHit) GetType() string { if x != nil { return x.Type } return "" } func (x *EventHit) GetAlertId() string { if x != nil { return x.AlertId } return "" } func (x *EventHit) GetSuppressed() bool { if x != nil { return x.Suppressed } return false } func (x *EventHit) GetDetail() string { if x != nil { return x.Detail } return "" } type GetAlertsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Hits []*AlertHit `protobuf:"bytes,1,rep,name=hits,proto3" json:"hits,omitempty"` // Populated only when include_events is set. Events []*EventHit `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` // The window held more alerts than the limit allowed. The viewer shows a // "more alerts in this range" affordance rather than paginating — unlike // log search, scrollback windows are already small and bounded. Truncated bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetAlertsResponse) Reset() { *x = GetAlertsResponse{} mi := &file_cloud_proto_msgTypes[30] 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_cloud_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 GetAlertsResponse.ProtoReflect.Descriptor instead. func (*GetAlertsResponse) Descriptor() ([]byte, []int) { return file_cloud_proto_rawDescGZIP(), []int{30} } func (x *GetAlertsResponse) GetHits() []*AlertHit { if x != nil { return x.Hits } return nil } func (x *GetAlertsResponse) GetEvents() []*EventHit { if x != nil { return x.Events } return nil } func (x *GetAlertsResponse) GetTruncated() bool { if x != nil { return x.Truncated } return false } var File_cloud_proto protoreflect.FileDescriptor const file_cloud_proto_rawDesc = "" + "\n" + "\vcloud.proto\x12\x05cloud\"\xe8\x01\n" + "\vToolRequest\x12\x1d\n" + "\n" + "request_id\x18\x01 \x01(\tR\trequestId\x128\n" + "\n" + "list_tools\x18\x02 \x01(\v2\x17.cloud.ListToolsRequestH\x00R\tlistTools\x125\n" + "\tcall_tool\x18\x03 \x01(\v2\x16.cloud.CallToolRequestH\x00R\bcallTool\x12A\n" + "\rcancel_stream\x18\x04 \x01(\v2\x1a.cloud.CancelStreamRequestH\x00R\fcancelStreamB\x06\n" + "\x04type\"\x8e\x02\n" + "\fToolResponse\x12\x1d\n" + "\n" + "request_id\x18\x01 \x01(\tR\trequestId\x129\n" + "\n" + "list_tools\x18\x02 \x01(\v2\x18.cloud.ListToolsResponseH\x00R\tlistTools\x126\n" + "\tcall_tool\x18\x03 \x01(\v2\x17.cloud.CallToolResponseH\x00R\bcallTool\x12.\n" + "\tlog_batch\x18\x04 \x01(\v2\x0f.cloud.LogBatchH\x00R\blogBatch\x124\n" + "\vstats_batch\x18\x05 \x01(\v2\x11.cloud.StatsBatchH\x00R\n" + "statsBatchB\x06\n" + "\x04type\":\n" + "\bLogBatch\x12.\n" + "\aentries\x18\x01 \x03(\v2\x14.cloud.LogBatchEntryR\aentries\"\xf4\x01\n" + "\rLogBatchEntry\x12\x17\n" + "\ahost_id\x18\x01 \x01(\tR\x06hostId\x12!\n" + "\fcontainer_id\x18\x02 \x01(\tR\vcontainerId\x12%\n" + "\x0econtainer_name\x18\x03 \x01(\tR\rcontainerName\x12!\n" + "\ftimestamp_ns\x18\x04 \x01(\x03R\vtimestampNs\x12\x18\n" + "\amessage\x18\x05 \x01(\tR\amessage\x12\x16\n" + "\x06stream\x18\x06 \x01(\tR\x06stream\x12\x14\n" + "\x05level\x18\a \x01(\tR\x05level\x12\x15\n" + "\x06log_id\x18\b \x01(\rR\x05logId\">\n" + "\n" + "StatsBatch\x120\n" + "\aentries\x18\x01 \x03(\v2\x16.cloud.StatsBatchEntryR\aentries\"\x9d\x04\n" + "\x0fStatsBatchEntry\x12\x17\n" + "\ahost_id\x18\x01 \x01(\tR\x06hostId\x12%\n" + "\x0econtainer_name\x18\x02 \x01(\tR\rcontainerName\x12!\n" + "\ftimestamp_ns\x18\x03 \x01(\x03R\vtimestampNs\x12\x1f\n" + "\vcpu_percent\x18\x04 \x01(\x01R\n" + "cpuPercent\x12%\n" + "\x0ememory_percent\x18\x05 \x01(\x01R\rmemoryPercent\x12,\n" + "\x12memory_usage_bytes\x18\x06 \x01(\x01R\x10memoryUsageBytes\x12&\n" + "\x0fcpu_percent_max\x18\a \x01(\x01R\rcpuPercentMax\x12,\n" + "\x12memory_percent_max\x18\b \x01(\x01R\x10memoryPercentMax\x12(\n" + "\x10network_rx_total\x18\t \x01(\x04R\x0enetworkRxTotal\x12(\n" + "\x10network_tx_total\x18\n" + " \x01(\x04R\x0enetworkTxTotal\x12&\n" + "\x0fdisk_read_total\x18\v \x01(\x04R\rdiskReadTotal\x12(\n" + "\x10disk_write_total\x18\f \x01(\x04R\x0ediskWriteTotal\x12\x18\n" + "\asamples\x18\r \x01(\rR\asamples\x12\x1b\n" + "\tcpu_cores\x18\x0e \x01(\x01R\bcpuCores\"\x12\n" + "\x10ListToolsRequest\"Z\n" + "\x11ListToolsResponse\x12+\n" + "\x05tools\x18\x01 \x03(\v2\x15.cloud.ToolDefinitionR\x05tools\x12\x18\n" + "\aversion\x18\x02 \x01(\tR\aversion\"\xb4\x01\n" + "\x0eToolDefinition\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12 \n" + "\vdescription\x18\x02 \x01(\tR\vdescription\x12'\n" + "\x0fparameters_json\x18\x03 \x01(\tR\x0eparametersJson\x12&\n" + "\x05scope\x18\x04 \x01(\x0e2\x10.cloud.ToolScopeR\x05scope\x12\x1b\n" + "\tread_only\x18\x05 \x01(\bR\breadOnly\"L\n" + "\x0fCallToolRequest\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12%\n" + "\x0earguments_json\x18\x02 \x01(\tR\rargumentsJson\"\xf2\x04\n" + "\x10CallToolResponse\x12\x18\n" + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x14\n" + "\x05error\x18\x02 \x01(\tR\x05error\x12\x16\n" + "\x06stream\x18\t \x01(\bR\x06stream\x12\x1d\n" + "\n" + "end_stream\x18\n" + " \x01(\bR\tendStream\x127\n" + "\n" + "list_hosts\x18\x03 \x01(\v2\x16.cloud.ListHostsResultH\x00R\tlistHosts\x12F\n" + "\x0flist_containers\x18\x04 \x01(\v2\x1b.cloud.ListContainersResultH\x00R\x0elistContainers\x12F\n" + "\x0fcontainer_stats\x18\x05 \x01(\v2\x1b.cloud.ContainerStatsResultH\x00R\x0econtainerStats\x12-\n" + "\x06action\x18\x06 \x01(\v2\x13.cloud.ActionResultH\x00R\x06action\x127\n" + "\n" + "fetch_logs\x18\a \x01(\v2\x16.cloud.FetchLogsResultH\x00R\tfetchLogs\x12L\n" + "\x11inspect_container\x18\b \x01(\v2\x1d.cloud.InspectContainerResultH\x00R\x10inspectContainer\x12-\n" + "\x06deploy\x18\v \x01(\v2\x13.cloud.DeployResultH\x00R\x06deploy\x12?\n" + "\fnotification\x18\f \x01(\v2\x19.cloud.NotificationResultH\x00R\fnotificationB\b\n" + "\x06result\"A\n" + "\x13CancelStreamRequest\x12*\n" + "\x11stream_request_id\x18\x01 \x01(\tR\x0fstreamRequestId\"\xde\x01\n" + "\bHostInfo\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x13\n" + "\x05n_cpu\x18\x03 \x01(\x05R\x04nCpu\x12\x1b\n" + "\tmem_total\x18\x04 \x01(\x03R\bmemTotal\x12%\n" + "\x0edocker_version\x18\x05 \x01(\tR\rdockerVersion\x12#\n" + "\ragent_version\x18\x06 \x01(\tR\fagentVersion\x12\x12\n" + "\x04type\x18\a \x01(\tR\x04type\x12\x1c\n" + "\tavailable\x18\b \x01(\bR\tavailable\"8\n" + "\x0fListHostsResult\x12%\n" + "\x05hosts\x18\x01 \x03(\v2\x0f.cloud.HostInfoR\x05hosts\"\xb7\x02\n" + "\rContainerInfo\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" + "\x05image\x18\x03 \x01(\tR\x05image\x12\x18\n" + "\acommand\x18\x04 \x01(\tR\acommand\x12\x18\n" + "\acreated\x18\x05 \x01(\tR\acreated\x12\x1d\n" + "\n" + "started_at\x18\x06 \x01(\tR\tstartedAt\x12\x1f\n" + "\vfinished_at\x18\a \x01(\tR\n" + "finishedAt\x12\x14\n" + "\x05state\x18\b \x01(\tR\x05state\x12\x16\n" + "\x06health\x18\t \x01(\tR\x06health\x12\x1b\n" + "\thost_name\x18\n" + " \x01(\tR\bhostName\x12\x17\n" + "\ahost_id\x18\f \x01(\tR\x06hostId\x12\x14\n" + "\x05group\x18\v \x01(\tR\x05group\"L\n" + "\x14ListContainersResult\x124\n" + "\n" + "containers\x18\x01 \x03(\v2\x14.cloud.ContainerInfoR\n" + "containers\"\xbe\x03\n" + "\x12ContainerStatEntry\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + "\x04host\x18\x03 \x01(\tR\x04host\x12\x1f\n" + "\vcpu_percent\x18\x04 \x01(\x01R\n" + "cpuPercent\x12%\n" + "\x0ememory_percent\x18\x05 \x01(\x01R\rmemoryPercent\x12!\n" + "\fmemory_usage\x18\x06 \x01(\x01R\vmemoryUsage\x12 \n" + "\fmax_cpu_5min\x18\a \x01(\x01R\n" + "maxCpu5min\x12&\n" + "\x0fmax_memory_5min\x18\b \x01(\x01R\rmaxMemory5min\x12\x17\n" + "\ahost_id\x18\t \x01(\tR\x06hostId\x12(\n" + "\x10network_rx_total\x18\n" + " \x01(\x04R\x0enetworkRxTotal\x12(\n" + "\x10network_tx_total\x18\v \x01(\x04R\x0enetworkTxTotal\x12&\n" + "\x0fnetwork_rx_5min\x18\f \x01(\x04R\rnetworkRx5min\x12&\n" + "\x0fnetwork_tx_5min\x18\r \x01(\x04R\rnetworkTx5min\"G\n" + "\x14ContainerStatsResult\x12/\n" + "\x05stats\x18\x01 \x03(\v2\x19.cloud.ContainerStatEntryR\x05stats\"p\n" + "\bLogEntry\x12\x1c\n" + "\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x18\n" + "\amessage\x18\x02 \x01(\tR\amessage\x12\x16\n" + "\x06stream\x18\x03 \x01(\tR\x06stream\x12\x14\n" + "\x05level\x18\x04 \x01(\tR\x05level\"c\n" + "\x0fFetchLogsResult\x12%\n" + "\x0econtainer_name\x18\x01 \x01(\tR\rcontainerName\x12)\n" + "\aentries\x18\x02 \x03(\v2\x0f.cloud.LogEntryR\aentries\"\xeb\x04\n" + "\x16InspectContainerResult\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" + "\x05image\x18\x03 \x01(\tR\x05image\x12\x18\n" + "\acommand\x18\x04 \x01(\tR\acommand\x12\x18\n" + "\acreated\x18\x05 \x01(\tR\acreated\x12\x1d\n" + "\n" + "started_at\x18\x06 \x01(\tR\tstartedAt\x12\x1f\n" + "\vfinished_at\x18\a \x01(\tR\n" + "finishedAt\x12\x14\n" + "\x05state\x18\b \x01(\tR\x05state\x12\x16\n" + "\x06health\x18\t \x01(\tR\x06health\x12\x1b\n" + "\thost_name\x18\n" + " \x01(\tR\bhostName\x12\x17\n" + "\ahost_id\x18\x13 \x01(\tR\x06hostId\x12A\n" + "\x06labels\x18\v \x03(\v2).cloud.InspectContainerResult.LabelsEntryR\x06labels\x12!\n" + "\fmemory_limit\x18\f \x01(\x04R\vmemoryLimit\x12\x1b\n" + "\tcpu_limit\x18\r \x01(\x01R\bcpuLimit\x12\x14\n" + "\x05ports\x18\x0f \x03(\tR\x05ports\x12\x16\n" + "\x06mounts\x18\x10 \x03(\tR\x06mounts\x12%\n" + "\x0erestart_policy\x18\x11 \x01(\tR\rrestartPolicy\x12!\n" + "\fnetwork_mode\x18\x12 \x01(\tR\vnetworkMode\x1a9\n" + "\vLabelsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01J\x04\b\x0e\x10\x0fR\x03env\"}\n" + "\fActionResult\x12\x18\n" + "\asuccess\x18\x01 \x01(\bR\asuccess\x12!\n" + "\fcontainer_id\x18\x02 \x01(\tR\vcontainerId\x12\x16\n" + "\x06action\x18\x03 \x01(\tR\x06action\x12\x18\n" + "\amessage\x18\x04 \x01(\tR\amessage\"\\\n" + "\fDeployResult\x12\x18\n" + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + "\aproject\x18\x02 \x01(\tR\aproject\x12\x18\n" + "\amessage\x18\x03 \x01(\tR\amessage\"H\n" + "\x12NotificationResult\x12\x18\n" + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + "\amessage\x18\x02 \x01(\tR\amessage\"\x9d\x01\n" + "\x11SearchLogsRequest\x12\x14\n" + "\x05query\x18\x01 \x01(\tR\x05query\x12\x14\n" + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12 \n" + "\fbefore_ts_ns\x18\x03 \x01(\x03R\n" + "beforeTsNs\x12\x17\n" + "\ahost_id\x18\x04 \x01(\tR\x06hostId\x12!\n" + "\fcontainer_id\x18\x05 \x01(\tR\vcontainerId\"\x83\x01\n" + "\x12SearchLogsResponse\x12'\n" + "\x04hits\x18\x01 \x03(\v2\x13.cloud.SearchLogHitR\x04hits\x12\x19\n" + "\bhas_more\x18\x02 \x01(\bR\ahasMore\x12)\n" + "\x11next_before_ts_ns\x18\x03 \x01(\x03R\x0enextBeforeTsNs\"\xf3\x01\n" + "\fSearchLogHit\x12!\n" + "\ftimestamp_ns\x18\x01 \x01(\x03R\vtimestampNs\x12\x17\n" + "\ahost_id\x18\x02 \x01(\tR\x06hostId\x12!\n" + "\fcontainer_id\x18\x03 \x01(\tR\vcontainerId\x12%\n" + "\x0econtainer_name\x18\x04 \x01(\tR\rcontainerName\x12\x18\n" + "\amessage\x18\x05 \x01(\tR\amessage\x12\x16\n" + "\x06stream\x18\x06 \x01(\tR\x06stream\x12\x14\n" + "\x05level\x18\a \x01(\tR\x05level\x12\x15\n" + "\x06log_id\x18\b \x01(\rR\x05logId\"\xf3\x01\n" + "\x10GetAlertsRequest\x12#\n" + "\rcontainer_ids\x18\x01 \x03(\tR\fcontainerIds\x12\x17\n" + "\ahost_id\x18\x02 \x01(\tR\x06hostId\x12\x1c\n" + "\n" + "from_ts_ns\x18\x03 \x01(\x03R\bfromTsNs\x12\x18\n" + "\bto_ts_ns\x18\x04 \x01(\x03R\x06toTsNs\x12\x14\n" + "\x05limit\x18\x05 \x01(\x05R\x05limit\x12,\n" + "\x12include_follow_ups\x18\x06 \x01(\bR\x10includeFollowUps\x12%\n" + "\x0einclude_events\x18\a \x01(\bR\rincludeEvents\"\xa8\x04\n" + "\bAlertHit\x12\x19\n" + "\balert_id\x18\x01 \x01(\tR\aalertId\x12!\n" + "\fcontainer_id\x18\x02 \x01(\tR\vcontainerId\x12\x17\n" + "\ahost_id\x18\x03 \x01(\tR\x06hostId\x12\x15\n" + "\x06log_id\x18\x04 \x01(\rR\x05logId\x12 \n" + "\fanchor_ts_ns\x18\x05 \x01(\x03R\n" + "anchorTsNs\x12\x1a\n" + "\bheadline\x18\x06 \x01(\tR\bheadline\x12\x14\n" + "\x05level\x18\a \x01(\tR\x05level\x12\x1f\n" + "\vevent_count\x18\b \x01(\x05R\n" + "eventCount\x12)\n" + "\x10suppressed_count\x18\t \x01(\x05R\x0fsuppressedCount\x12'\n" + "\x0fcontainer_count\x18\n" + " \x01(\x05R\x0econtainerCount\x12$\n" + "\rinvestigation\x18\v \x01(\tR\rinvestigation\x12#\n" + "\rtriage_action\x18\f \x01(\tR\ftriageAction\x12\x18\n" + "\asummary\x18\x11 \x01(\tR\asummary\x12\x1b\n" + "\tis_origin\x18\x10 \x01(\bR\bisOrigin\x12\"\n" + "\rcreated_at_ns\x18\r \x01(\x03R\vcreatedAtNs\x12-\n" + "\x13last_activity_at_ns\x18\x0e \x01(\x03R\x10lastActivityAtNs\x12\x10\n" + "\x03url\x18\x0f \x01(\tR\x03url\"\x89\x02\n" + "\bEventHit\x12\x13\n" + "\x05ts_ns\x18\x01 \x01(\x03R\x04tsNs\x12\x15\n" + "\x06log_id\x18\x02 \x01(\rR\x05logId\x12!\n" + "\fcontainer_id\x18\x03 \x01(\tR\vcontainerId\x12\x17\n" + "\ahost_id\x18\x04 \x01(\tR\x06hostId\x12\x14\n" + "\x05level\x18\x05 \x01(\tR\x05level\x12\x18\n" + "\amessage\x18\x06 \x01(\tR\amessage\x12\x12\n" + "\x04type\x18\a \x01(\tR\x04type\x12\x19\n" + "\balert_id\x18\b \x01(\tR\aalertId\x12\x1e\n" + "\n" + "suppressed\x18\t \x01(\bR\n" + "suppressed\x12\x16\n" + "\x06detail\x18\n" + " \x01(\tR\x06detail\"\x7f\n" + "\x11GetAlertsResponse\x12#\n" + "\x04hits\x18\x01 \x03(\v2\x0f.cloud.AlertHitR\x04hits\x12'\n" + "\x06events\x18\x03 \x03(\v2\x0f.cloud.EventHitR\x06events\x12\x1c\n" + "\ttruncated\x18\x02 \x01(\bR\ttruncated*o\n" + "\tToolScope\x12\x1a\n" + "\x16TOOL_SCOPE_UNSPECIFIED\x10\x00\x12\x17\n" + "\x13TOOL_SCOPE_INSTANCE\x10\x01\x12\x13\n" + "\x0fTOOL_SCOPE_HOST\x10\x02\x12\x18\n" + "\x14TOOL_SCOPE_CONTAINER\x10\x032\xd0\x01\n" + "\x10CloudToolService\x129\n" + "\n" + "ToolStream\x12\x13.cloud.ToolResponse\x1a\x12.cloud.ToolRequest(\x010\x01\x12A\n" + "\n" + "SearchLogs\x12\x18.cloud.SearchLogsRequest\x1a\x19.cloud.SearchLogsResponse\x12>\n" + "\tGetAlerts\x12\x17.cloud.GetAlertsRequest\x1a\x18.cloud.GetAlertsResponseB&Z$github.com/amir20/dozzle/proto/cloudb\x06proto3" var ( file_cloud_proto_rawDescOnce sync.Once file_cloud_proto_rawDescData []byte ) func file_cloud_proto_rawDescGZIP() []byte { file_cloud_proto_rawDescOnce.Do(func() { file_cloud_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cloud_proto_rawDesc), len(file_cloud_proto_rawDesc))) }) return file_cloud_proto_rawDescData } var file_cloud_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_cloud_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_cloud_proto_goTypes = []any{ (ToolScope)(0), // 0: cloud.ToolScope (*ToolRequest)(nil), // 1: cloud.ToolRequest (*ToolResponse)(nil), // 2: cloud.ToolResponse (*LogBatch)(nil), // 3: cloud.LogBatch (*LogBatchEntry)(nil), // 4: cloud.LogBatchEntry (*StatsBatch)(nil), // 5: cloud.StatsBatch (*StatsBatchEntry)(nil), // 6: cloud.StatsBatchEntry (*ListToolsRequest)(nil), // 7: cloud.ListToolsRequest (*ListToolsResponse)(nil), // 8: cloud.ListToolsResponse (*ToolDefinition)(nil), // 9: cloud.ToolDefinition (*CallToolRequest)(nil), // 10: cloud.CallToolRequest (*CallToolResponse)(nil), // 11: cloud.CallToolResponse (*CancelStreamRequest)(nil), // 12: cloud.CancelStreamRequest (*HostInfo)(nil), // 13: cloud.HostInfo (*ListHostsResult)(nil), // 14: cloud.ListHostsResult (*ContainerInfo)(nil), // 15: cloud.ContainerInfo (*ListContainersResult)(nil), // 16: cloud.ListContainersResult (*ContainerStatEntry)(nil), // 17: cloud.ContainerStatEntry (*ContainerStatsResult)(nil), // 18: cloud.ContainerStatsResult (*LogEntry)(nil), // 19: cloud.LogEntry (*FetchLogsResult)(nil), // 20: cloud.FetchLogsResult (*InspectContainerResult)(nil), // 21: cloud.InspectContainerResult (*ActionResult)(nil), // 22: cloud.ActionResult (*DeployResult)(nil), // 23: cloud.DeployResult (*NotificationResult)(nil), // 24: cloud.NotificationResult (*SearchLogsRequest)(nil), // 25: cloud.SearchLogsRequest (*SearchLogsResponse)(nil), // 26: cloud.SearchLogsResponse (*SearchLogHit)(nil), // 27: cloud.SearchLogHit (*GetAlertsRequest)(nil), // 28: cloud.GetAlertsRequest (*AlertHit)(nil), // 29: cloud.AlertHit (*EventHit)(nil), // 30: cloud.EventHit (*GetAlertsResponse)(nil), // 31: cloud.GetAlertsResponse nil, // 32: cloud.InspectContainerResult.LabelsEntry } var file_cloud_proto_depIdxs = []int32{ 7, // 0: cloud.ToolRequest.list_tools:type_name -> cloud.ListToolsRequest 10, // 1: cloud.ToolRequest.call_tool:type_name -> cloud.CallToolRequest 12, // 2: cloud.ToolRequest.cancel_stream:type_name -> cloud.CancelStreamRequest 8, // 3: cloud.ToolResponse.list_tools:type_name -> cloud.ListToolsResponse 11, // 4: cloud.ToolResponse.call_tool:type_name -> cloud.CallToolResponse 3, // 5: cloud.ToolResponse.log_batch:type_name -> cloud.LogBatch 5, // 6: cloud.ToolResponse.stats_batch:type_name -> cloud.StatsBatch 4, // 7: cloud.LogBatch.entries:type_name -> cloud.LogBatchEntry 6, // 8: cloud.StatsBatch.entries:type_name -> cloud.StatsBatchEntry 9, // 9: cloud.ListToolsResponse.tools:type_name -> cloud.ToolDefinition 0, // 10: cloud.ToolDefinition.scope:type_name -> cloud.ToolScope 14, // 11: cloud.CallToolResponse.list_hosts:type_name -> cloud.ListHostsResult 16, // 12: cloud.CallToolResponse.list_containers:type_name -> cloud.ListContainersResult 18, // 13: cloud.CallToolResponse.container_stats:type_name -> cloud.ContainerStatsResult 22, // 14: cloud.CallToolResponse.action:type_name -> cloud.ActionResult 20, // 15: cloud.CallToolResponse.fetch_logs:type_name -> cloud.FetchLogsResult 21, // 16: cloud.CallToolResponse.inspect_container:type_name -> cloud.InspectContainerResult 23, // 17: cloud.CallToolResponse.deploy:type_name -> cloud.DeployResult 24, // 18: cloud.CallToolResponse.notification:type_name -> cloud.NotificationResult 13, // 19: cloud.ListHostsResult.hosts:type_name -> cloud.HostInfo 15, // 20: cloud.ListContainersResult.containers:type_name -> cloud.ContainerInfo 17, // 21: cloud.ContainerStatsResult.stats:type_name -> cloud.ContainerStatEntry 19, // 22: cloud.FetchLogsResult.entries:type_name -> cloud.LogEntry 32, // 23: cloud.InspectContainerResult.labels:type_name -> cloud.InspectContainerResult.LabelsEntry 27, // 24: cloud.SearchLogsResponse.hits:type_name -> cloud.SearchLogHit 29, // 25: cloud.GetAlertsResponse.hits:type_name -> cloud.AlertHit 30, // 26: cloud.GetAlertsResponse.events:type_name -> cloud.EventHit 2, // 27: cloud.CloudToolService.ToolStream:input_type -> cloud.ToolResponse 25, // 28: cloud.CloudToolService.SearchLogs:input_type -> cloud.SearchLogsRequest 28, // 29: cloud.CloudToolService.GetAlerts:input_type -> cloud.GetAlertsRequest 1, // 30: cloud.CloudToolService.ToolStream:output_type -> cloud.ToolRequest 26, // 31: cloud.CloudToolService.SearchLogs:output_type -> cloud.SearchLogsResponse 31, // 32: cloud.CloudToolService.GetAlerts:output_type -> cloud.GetAlertsResponse 30, // [30:33] is the sub-list for method output_type 27, // [27:30] is the sub-list for method input_type 27, // [27:27] is the sub-list for extension type_name 27, // [27:27] is the sub-list for extension extendee 0, // [0:27] is the sub-list for field type_name } func init() { file_cloud_proto_init() } func file_cloud_proto_init() { if File_cloud_proto != nil { return } file_cloud_proto_msgTypes[0].OneofWrappers = []any{ (*ToolRequest_ListTools)(nil), (*ToolRequest_CallTool)(nil), (*ToolRequest_CancelStream)(nil), } file_cloud_proto_msgTypes[1].OneofWrappers = []any{ (*ToolResponse_ListTools)(nil), (*ToolResponse_CallTool)(nil), (*ToolResponse_LogBatch)(nil), (*ToolResponse_StatsBatch)(nil), } file_cloud_proto_msgTypes[10].OneofWrappers = []any{ (*CallToolResponse_ListHosts)(nil), (*CallToolResponse_ListContainers)(nil), (*CallToolResponse_ContainerStats)(nil), (*CallToolResponse_Action)(nil), (*CallToolResponse_FetchLogs)(nil), (*CallToolResponse_InspectContainer)(nil), (*CallToolResponse_Deploy)(nil), (*CallToolResponse_Notification)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_cloud_proto_rawDesc), len(file_cloud_proto_rawDesc)), NumEnums: 1, NumMessages: 32, NumExtensions: 0, NumServices: 1, }, GoTypes: file_cloud_proto_goTypes, DependencyIndexes: file_cloud_proto_depIdxs, EnumInfos: file_cloud_proto_enumTypes, MessageInfos: file_cloud_proto_msgTypes, }.Build() File_cloud_proto = out.File file_cloud_proto_goTypes = nil file_cloud_proto_depIdxs = nil }