Skip to main content

mesh_llm_protocol/proto/
node.rs

1// This file is @generated by prost-build.
2/// Stream 0x01 — Gossip
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct GossipFrame {
5    #[prost(uint32, tag = "1")]
6    pub r#gen: u32,
7    #[prost(message, repeated, tag = "2")]
8    pub peers: ::prost::alloc::vec::Vec<PeerAnnouncement>,
9    /// must be exactly 32 bytes; must match QUIC peer identity
10    #[prost(bytes = "vec", tag = "3")]
11    pub sender_id: ::prost::alloc::vec::Vec<u8>,
12}
13#[derive(Clone, PartialEq, ::prost::Message)]
14pub struct PeerAnnouncement {
15    /// exactly 32 bytes
16    #[prost(bytes = "vec", tag = "1")]
17    pub endpoint_id: ::prost::alloc::vec::Vec<u8>,
18    #[prost(enumeration = "NodeRole", tag = "2")]
19    pub role: i32,
20    #[prost(uint32, optional, tag = "3")]
21    pub http_port: ::core::option::Option<u32>,
22    #[prost(string, optional, tag = "4")]
23    pub version: ::core::option::Option<::prost::alloc::string::String>,
24    /// Deprecated in v0.60.0: prefer hardware.gpus\[\].name
25    #[prost(string, optional, tag = "5")]
26    pub gpu_name: ::core::option::Option<::prost::alloc::string::String>,
27    /// Deprecated in v0.60.0: prefer hardware.hostname
28    #[prost(string, optional, tag = "6")]
29    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
30    /// Deprecated in v0.60.0: prefer hardware.is_soc; true for system-on-chip / unified-memory hosts such as Apple Silicon and Jetson
31    #[prost(bool, optional, tag = "7")]
32    pub is_soc: ::core::option::Option<bool>,
33    /// Deprecated in v0.60.0: prefer hardware.gpus\[\].vram_bytes
34    #[prost(string, optional, tag = "8")]
35    pub gpu_vram: ::core::option::Option<::prost::alloc::string::String>,
36    /// Deprecated in v0.55.0 for protobuf gossip; compatibility surface only
37    #[prost(string, repeated, tag = "9")]
38    pub available_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
39    /// Deprecated in v0.55.0: prefer served_model_identities and served_model_runtime
40    #[prost(string, repeated, tag = "10")]
41    pub serving_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
42    #[prost(string, repeated, tag = "11")]
43    pub requested_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
44    #[prost(message, repeated, tag = "12")]
45    pub available_model_metadata: ::prost::alloc::vec::Vec<CompactModelMetadata>,
46    #[prost(message, optional, tag = "13")]
47    pub experts_summary: ::core::option::Option<ExpertsSummary>,
48    #[prost(uint32, optional, tag = "14")]
49    pub rtt_ms: ::core::option::Option<u32>,
50    /// GGUF model names (mesh catalog contribution; was JSON `models`)
51    #[prost(string, repeated, tag = "15")]
52    pub catalog_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
53    /// GPU VRAM in bytes
54    #[prost(uint64, tag = "16")]
55    pub vram_bytes: u64,
56    /// how to obtain this node's model
57    #[prost(string, optional, tag = "17")]
58    pub model_source: ::core::option::Option<::prost::alloc::string::String>,
59    /// primary serving model (backward compat; was JSON `serving`)
60    #[prost(string, optional, tag = "18")]
61    pub primary_serving: ::core::option::Option<::prost::alloc::string::String>,
62    /// stable mesh identity (self entry only)
63    #[prost(string, optional, tag = "19")]
64    pub mesh_id: ::core::option::Option<::prost::alloc::string::String>,
65    /// demand map entries (self entry only)
66    #[prost(message, repeated, tag = "20")]
67    pub demand: ::prost::alloc::vec::Vec<ModelDemandEntry>,
68    /// file sizes (bytes) per GGUF model name
69    #[prost(map = "string, uint64", tag = "21")]
70    pub available_model_sizes: ::std::collections::HashMap<::prost::alloc::string::String, u64>,
71    /// JSON-serialized EndpointAddr (includes network addresses for peer discovery)
72    #[prost(bytes = "vec", tag = "22")]
73    pub serialized_addr: ::prost::alloc::vec::Vec<u8>,
74    /// actually routable / healthy
75    #[prost(string, repeated, tag = "23")]
76    pub hosted_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
77    /// false/absent when relayed from legacy JSON peers
78    #[prost(bool, optional, tag = "24")]
79    pub hosted_models_known: ::core::option::Option<bool>,
80    #[prost(message, repeated, tag = "25")]
81    pub served_model_descriptors: ::prost::alloc::vec::Vec<ServedModelDescriptor>,
82    #[prost(message, repeated, tag = "26")]
83    pub served_model_identities: ::prost::alloc::vec::Vec<ServedModelIdentity>,
84    #[prost(message, repeated, tag = "27")]
85    pub served_model_runtime: ::prost::alloc::vec::Vec<ModelRuntimeDescriptor>,
86    #[prost(message, optional, tag = "28")]
87    pub owner_attestation: ::core::option::Option<SignedNodeOwnership>,
88    /// Deprecated in v0.60.0: prefer hardware.gpus\[\].mem_bandwidth_gbps
89    #[prost(string, optional, tag = "29")]
90    pub gpu_mem_bandwidth_gbps: ::core::option::Option<::prost::alloc::string::String>,
91    /// Deprecated in v0.60.0: prefer hardware.gpus\[\].compute_tflops_fp32
92    #[prost(string, optional, tag = "30")]
93    pub gpu_compute_tflops_fp32: ::core::option::Option<::prost::alloc::string::String>,
94    /// Deprecated in v0.60.0: prefer hardware.gpus\[\].compute_tflops_fp16
95    #[prost(string, optional, tag = "31")]
96    pub gpu_compute_tflops_fp16: ::core::option::Option<::prost::alloc::string::String>,
97    /// Deprecated in v0.60.0: prefer hardware.gpus\[\].reserved_bytes
98    #[prost(string, optional, tag = "32")]
99    pub gpu_reserved_bytes: ::core::option::Option<::prost::alloc::string::String>,
100    /// Introduced in v0.60.0; preferred structured hardware inventory
101    #[prost(message, optional, tag = "33")]
102    pub hardware: ::core::option::Option<HardwareInfo>,
103    #[prost(uint64, optional, tag = "34")]
104    pub first_joined_mesh_ts: ::core::option::Option<u64>,
105    /// Advisory canonical refs this node wants the mesh to consider
106    #[prost(string, repeated, tag = "35")]
107    pub explicit_model_interests: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
108    /// Additive feature discovery for admitted subsystem protocols
109    #[prost(message, repeated, tag = "37")]
110    pub subprotocols: ::prost::alloc::vec::Vec<MeshSubprotocol>,
111    #[prost(uint32, optional, tag = "40")]
112    pub latency_ms: ::core::option::Option<u32>,
113    #[prost(enumeration = "LatencySource", tag = "41")]
114    pub latency_source: i32,
115    #[prost(uint32, optional, tag = "42")]
116    pub latency_age_ms: ::core::option::Option<u32>,
117    #[prost(bytes = "vec", optional, tag = "43")]
118    pub latency_observer_id: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
119    #[prost(message, repeated, tag = "44")]
120    pub advertised_model_throughput: ::prost::alloc::vec::Vec<AdvertisedModelThroughput>,
121    #[prost(string, optional, tag = "45")]
122    pub mesh_policy_hash: ::core::option::Option<::prost::alloc::string::String>,
123    #[prost(message, optional, tag = "46")]
124    pub genesis_policy: ::core::option::Option<SignedMeshGenesisPolicy>,
125    #[prost(message, optional, tag = "47")]
126    pub release_attestation: ::core::option::Option<ReleaseBuildAttestation>,
127    #[prost(message, optional, tag = "48")]
128    pub direct_admission_proof: ::core::option::Option<DirectNodeAdmissionProof>,
129    /// Inference admission state advertised by this peer (additive; older nodes ignore)
130    #[prost(enumeration = "InferenceAdmissionState", optional, tag = "49")]
131    pub inference_admission_state: ::core::option::Option<i32>,
132}
133#[derive(Clone, PartialEq, ::prost::Message)]
134pub struct AdvertisedModelThroughput {
135    #[prost(string, tag = "1")]
136    pub model_name: ::prost::alloc::string::String,
137    #[prost(uint64, tag = "2")]
138    pub avg_tokens_per_second_milli: u64,
139    #[prost(uint64, tag = "3")]
140    pub throughput_samples: u64,
141}
142#[derive(Clone, PartialEq, ::prost::Message)]
143pub struct MeshSubprotocol {
144    /// e.g. "skippy-stage"
145    #[prost(string, tag = "1")]
146    pub name: ::prost::alloc::string::String,
147    /// subprotocol major version
148    #[prost(uint32, tag = "2")]
149    pub major: u32,
150    /// e.g. "artifact-transfer"
151    #[prost(string, repeated, tag = "3")]
152    pub features: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
153}
154#[derive(Clone, PartialEq, ::prost::Message)]
155pub struct MeshSubprotocolOpen {
156    #[prost(uint32, tag = "1")]
157    pub r#gen: u32,
158    /// e.g. "skippy-stage"
159    #[prost(string, tag = "2")]
160    pub name: ::prost::alloc::string::String,
161    /// subprotocol major version
162    #[prost(uint32, tag = "3")]
163    pub major: u32,
164}
165#[derive(Clone, PartialEq, ::prost::Message)]
166pub struct HardwareInfo {
167    /// True for system-on-chip / unified-memory hosts such as Apple Silicon and Jetson
168    #[prost(bool, optional, tag = "1")]
169    pub is_soc: ::core::option::Option<bool>,
170    #[prost(string, optional, tag = "2")]
171    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
172    #[prost(message, repeated, tag = "3")]
173    pub gpus: ::prost::alloc::vec::Vec<GpuInfo>,
174}
175#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
176pub struct GpuInfo {
177    #[prost(string, optional, tag = "1")]
178    pub name: ::core::option::Option<::prost::alloc::string::String>,
179    #[prost(string, optional, tag = "2")]
180    pub vram_bytes: ::core::option::Option<::prost::alloc::string::String>,
181    #[prost(string, optional, tag = "3")]
182    pub reserved_bytes: ::core::option::Option<::prost::alloc::string::String>,
183    #[prost(string, optional, tag = "4")]
184    pub mem_bandwidth_gbps: ::core::option::Option<::prost::alloc::string::String>,
185    #[prost(string, optional, tag = "5")]
186    pub compute_tflops_fp32: ::core::option::Option<::prost::alloc::string::String>,
187    #[prost(string, optional, tag = "6")]
188    pub compute_tflops_fp16: ::core::option::Option<::prost::alloc::string::String>,
189}
190#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
191pub struct SignedNodeOwnership {
192    #[prost(uint32, tag = "1")]
193    pub version: u32,
194    #[prost(string, tag = "2")]
195    pub cert_id: ::prost::alloc::string::String,
196    #[prost(string, tag = "3")]
197    pub owner_id: ::prost::alloc::string::String,
198    /// 32 bytes
199    #[prost(bytes = "vec", tag = "4")]
200    pub owner_sign_public_key: ::prost::alloc::vec::Vec<u8>,
201    /// 32 bytes
202    #[prost(bytes = "vec", tag = "5")]
203    pub node_endpoint_id: ::prost::alloc::vec::Vec<u8>,
204    #[prost(uint64, tag = "6")]
205    pub issued_at_unix_ms: u64,
206    #[prost(uint64, tag = "7")]
207    pub expires_at_unix_ms: u64,
208    #[prost(string, optional, tag = "8")]
209    pub node_label: ::core::option::Option<::prost::alloc::string::String>,
210    #[prost(string, optional, tag = "9")]
211    pub hostname_hint: ::core::option::Option<::prost::alloc::string::String>,
212    /// Ed25519 signature over canonical claim bytes
213    #[prost(bytes = "vec", tag = "10")]
214    pub signature: ::prost::alloc::vec::Vec<u8>,
215}
216#[derive(Clone, PartialEq, ::prost::Message)]
217pub struct ServedModelDescriptor {
218    #[prost(message, optional, tag = "1")]
219    pub identity: ::core::option::Option<ServedModelIdentity>,
220    #[prost(message, optional, tag = "2")]
221    pub capabilities: ::core::option::Option<ModelCapabilities>,
222    #[prost(message, optional, tag = "3")]
223    pub topology: ::core::option::Option<ModelTopology>,
224    #[prost(bool, optional, tag = "4")]
225    pub capabilities_known: ::core::option::Option<bool>,
226    #[prost(message, optional, tag = "5")]
227    pub metadata: ::core::option::Option<ServedModelMetadata>,
228}
229#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct ServedModelMetadata {
231    #[prost(string, optional, tag = "1")]
232    pub architecture: ::core::option::Option<::prost::alloc::string::String>,
233    #[prost(string, optional, tag = "2")]
234    pub parameter_size: ::core::option::Option<::prost::alloc::string::String>,
235    #[prost(double, optional, tag = "3")]
236    pub parameter_count_b: ::core::option::Option<f64>,
237    #[prost(string, optional, tag = "4")]
238    pub quant: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(uint32, optional, tag = "5")]
240    pub native_context_length: ::core::option::Option<u32>,
241    #[prost(string, optional, tag = "6")]
242    pub tokenizer: ::core::option::Option<::prost::alloc::string::String>,
243    #[prost(uint32, optional, tag = "7")]
244    pub layer_count: ::core::option::Option<u32>,
245    #[prost(uint32, optional, tag = "8")]
246    pub embedding_size: ::core::option::Option<u32>,
247    #[prost(uint32, optional, tag = "9")]
248    pub head_count: ::core::option::Option<u32>,
249    #[prost(uint32, optional, tag = "10")]
250    pub kv_head_count: ::core::option::Option<u32>,
251    #[prost(uint32, optional, tag = "11")]
252    pub expert_count: ::core::option::Option<u32>,
253    #[prost(uint32, optional, tag = "12")]
254    pub active_expert_count: ::core::option::Option<u32>,
255}
256#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
257pub struct ServedModelIdentity {
258    #[prost(string, tag = "1")]
259    pub model_name: ::prost::alloc::string::String,
260    #[prost(bool, tag = "2")]
261    pub is_primary: bool,
262    #[prost(enumeration = "ModelSourceKind", tag = "3")]
263    pub source_kind: i32,
264    #[prost(string, optional, tag = "4")]
265    pub canonical_ref: ::core::option::Option<::prost::alloc::string::String>,
266    #[prost(string, optional, tag = "5")]
267    pub repository: ::core::option::Option<::prost::alloc::string::String>,
268    #[prost(string, optional, tag = "6")]
269    pub revision: ::core::option::Option<::prost::alloc::string::String>,
270    #[prost(string, optional, tag = "7")]
271    pub artifact: ::core::option::Option<::prost::alloc::string::String>,
272    #[prost(string, optional, tag = "8")]
273    pub local_file_name: ::core::option::Option<::prost::alloc::string::String>,
274    #[prost(string, optional, tag = "9")]
275    pub identity_hash: ::core::option::Option<::prost::alloc::string::String>,
276}
277#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
278pub struct ModelCapabilities {
279    #[prost(enumeration = "CapabilityLevel", tag = "1")]
280    pub vision: i32,
281    #[prost(enumeration = "CapabilityLevel", tag = "2")]
282    pub reasoning: i32,
283    #[prost(enumeration = "CapabilityLevel", tag = "3")]
284    pub tool_use: i32,
285    #[prost(bool, tag = "4")]
286    pub moe: bool,
287    #[prost(bool, tag = "5")]
288    pub multimodal: bool,
289    #[prost(enumeration = "CapabilityLevel", tag = "6")]
290    pub audio: i32,
291}
292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
293pub struct ModelTopology {
294    #[prost(message, optional, tag = "1")]
295    pub moe: ::core::option::Option<ModelMoeInfo>,
296}
297#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
298pub struct ModelRuntimeDescriptor {
299    #[prost(string, tag = "1")]
300    pub model_name: ::prost::alloc::string::String,
301    #[prost(string, optional, tag = "2")]
302    pub identity_hash: ::core::option::Option<::prost::alloc::string::String>,
303    #[prost(uint32, optional, tag = "3")]
304    pub context_length: ::core::option::Option<u32>,
305    #[prost(bool, tag = "4")]
306    pub ready: bool,
307}
308#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
309pub struct ModelMoeInfo {
310    #[prost(uint32, tag = "1")]
311    pub expert_count: u32,
312    #[prost(uint32, tag = "2")]
313    pub used_expert_count: u32,
314    #[prost(uint32, optional, tag = "3")]
315    pub min_experts_per_node: ::core::option::Option<u32>,
316    #[prost(string, optional, tag = "4")]
317    pub source: ::core::option::Option<::prost::alloc::string::String>,
318    #[prost(string, optional, tag = "5")]
319    pub ranking_source: ::core::option::Option<::prost::alloc::string::String>,
320    #[prost(uint32, repeated, tag = "6")]
321    pub ranking: ::prost::alloc::vec::Vec<u32>,
322    #[prost(uint32, optional, tag = "7")]
323    pub ranking_prompt_count: ::core::option::Option<u32>,
324    #[prost(uint32, optional, tag = "8")]
325    pub ranking_tokens: ::core::option::Option<u32>,
326    #[prost(string, optional, tag = "9")]
327    pub ranking_layer_scope: ::core::option::Option<::prost::alloc::string::String>,
328    #[prost(string, optional, tag = "10")]
329    pub ranking_origin: ::core::option::Option<::prost::alloc::string::String>,
330}
331#[derive(Clone, PartialEq, ::prost::Message)]
332pub struct CompactModelMetadata {
333    #[prost(string, tag = "1")]
334    pub model_key: ::prost::alloc::string::String,
335    #[prost(uint32, tag = "2")]
336    pub context_length: u32,
337    #[prost(uint32, tag = "3")]
338    pub vocab_size: u32,
339    #[prost(uint32, tag = "4")]
340    pub embedding_size: u32,
341    #[prost(uint32, tag = "5")]
342    pub head_count: u32,
343    #[prost(uint32, tag = "6")]
344    pub layer_count: u32,
345    #[prost(uint32, tag = "7")]
346    pub feed_forward_length: u32,
347    #[prost(uint32, tag = "8")]
348    pub key_length: u32,
349    #[prost(uint32, tag = "9")]
350    pub value_length: u32,
351    #[prost(string, tag = "10")]
352    pub architecture: ::prost::alloc::string::String,
353    #[prost(string, tag = "11")]
354    pub tokenizer_model_name: ::prost::alloc::string::String,
355    #[prost(message, repeated, tag = "12")]
356    pub special_tokens: ::prost::alloc::vec::Vec<SpecialToken>,
357    #[prost(float, tag = "13")]
358    pub rope_scale: f32,
359    #[prost(float, tag = "14")]
360    pub rope_freq_base: f32,
361    #[prost(bool, tag = "15")]
362    pub is_moe: bool,
363    #[prost(uint32, tag = "16")]
364    pub expert_count: u32,
365    #[prost(uint32, tag = "17")]
366    pub used_expert_count: u32,
367    /// GGUF quantization type string (e.g. "Q4_K_M")
368    #[prost(string, tag = "18")]
369    pub quantization_type: ::prost::alloc::string::String,
370    #[prost(uint32, tag = "19")]
371    pub kv_head_count: u32,
372    /// GGUF general.size_label when present (e.g. "32B")
373    #[prost(string, optional, tag = "20")]
374    pub parameter_size: ::core::option::Option<::prost::alloc::string::String>,
375}
376#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
377pub struct SpecialToken {
378    #[prost(string, tag = "1")]
379    pub name: ::prost::alloc::string::String,
380    #[prost(uint32, tag = "2")]
381    pub token_id: u32,
382}
383#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
384pub struct ExpertsSummary {
385    #[prost(uint32, tag = "1")]
386    pub total_experts: u32,
387    #[prost(uint32, tag = "2")]
388    pub expert_count_used: u32,
389    #[prost(uint32, repeated, tag = "3")]
390    pub top_expert_ids: ::prost::alloc::vec::Vec<u32>,
391}
392#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
393pub struct ModelDemandEntry {
394    #[prost(string, tag = "1")]
395    pub model_name: ::prost::alloc::string::String,
396    #[prost(uint64, tag = "2")]
397    pub last_active: u64,
398    #[prost(uint64, tag = "3")]
399    pub request_count: u64,
400}
401/// Stream 0x03 — Tunnel Map
402#[derive(Clone, PartialEq, ::prost::Message)]
403pub struct TunnelMap {
404    #[prost(bytes = "vec", tag = "1")]
405    pub owner_peer_id: ::prost::alloc::vec::Vec<u8>,
406    #[prost(message, repeated, tag = "2")]
407    pub entries: ::prost::alloc::vec::Vec<TunnelEntry>,
408}
409#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
410pub struct TunnelEntry {
411    #[prost(bytes = "vec", tag = "1")]
412    pub target_peer_id: ::prost::alloc::vec::Vec<u8>,
413    #[prost(bytes = "vec", optional, tag = "2")]
414    pub relay_peer_id: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
415    #[prost(uint32, tag = "3")]
416    pub tunnel_port: u32,
417}
418/// Stream 0x05 — Route Table
419#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
420pub struct RouteTableRequest {
421    /// 0 or exactly 32 bytes (passive callers may omit)
422    #[prost(bytes = "vec", tag = "1")]
423    pub requester_id: ::prost::alloc::vec::Vec<u8>,
424    /// must equal NODE_PROTOCOL_GENERATION; rejected otherwise
425    #[prost(uint32, tag = "2")]
426    pub r#gen: u32,
427}
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct RouteTable {
430    #[prost(message, repeated, tag = "1")]
431    pub entries: ::prost::alloc::vec::Vec<RouteEntry>,
432    /// stable mesh identity — passive/client callers learn this here
433    #[prost(string, optional, tag = "2")]
434    pub mesh_id: ::core::option::Option<::prost::alloc::string::String>,
435    /// must equal NODE_PROTOCOL_GENERATION; caller rejects mismatches
436    #[prost(uint32, tag = "3")]
437    pub r#gen: u32,
438}
439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
440pub struct RouteEntry {
441    /// exactly 32 bytes (peer public key)
442    #[prost(bytes = "vec", tag = "1")]
443    pub endpoint_id: ::prost::alloc::vec::Vec<u8>,
444    /// model being served (empty if node is not actively serving)
445    #[prost(string, tag = "2")]
446    pub model: ::prost::alloc::string::String,
447}
448/// Stream 0x06 — Peer Down
449#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
450pub struct PeerDown {
451    /// exactly 32 bytes; the peer being reported as unreachable
452    #[prost(bytes = "vec", tag = "1")]
453    pub peer_id: ::prost::alloc::vec::Vec<u8>,
454    /// must equal NODE_PROTOCOL_GENERATION; rejected otherwise
455    #[prost(uint32, tag = "2")]
456    pub r#gen: u32,
457}
458/// Stream 0x07 — Peer Leaving
459#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
460pub struct PeerLeaving {
461    /// exactly 32 bytes; must match the QUIC sender identity
462    #[prost(bytes = "vec", tag = "1")]
463    pub peer_id: ::prost::alloc::vec::Vec<u8>,
464    /// must equal NODE_PROTOCOL_GENERATION; rejected otherwise
465    #[prost(uint32, tag = "2")]
466    pub r#gen: u32,
467}
468/// Stream 0x0e — Direct Path Request
469#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
470pub struct DirectPathRequest {
471    /// exactly 32 bytes; must match the QUIC sender identity
472    #[prost(bytes = "vec", tag = "1")]
473    pub requester_id: ::prost::alloc::vec::Vec<u8>,
474    /// must equal NODE_PROTOCOL_GENERATION; rejected otherwise
475    #[prost(uint32, tag = "2")]
476    pub r#gen: u32,
477    /// JSON-serialized EndpointAddr the receiver should try to dial
478    #[prost(bytes = "vec", tag = "3")]
479    pub serialized_addr: ::prost::alloc::vec::Vec<u8>,
480}
481#[derive(Clone, PartialEq, ::prost::Message)]
482pub struct NodeConfigSnapshot {
483    /// config schema version (currently 1)
484    #[prost(uint32, tag = "1")]
485    pub version: u32,
486    #[prost(message, optional, tag = "2")]
487    pub gpu: ::core::option::Option<NodeGpuConfig>,
488    #[prost(message, repeated, tag = "3")]
489    pub models: ::prost::alloc::vec::Vec<NodeModelEntry>,
490    #[prost(message, repeated, tag = "4")]
491    pub plugins: ::prost::alloc::vec::Vec<NodePluginEntry>,
492    /// canonical persisted config payload for additive owner-control roundtrip
493    #[prost(string, optional, tag = "5")]
494    pub config_toml: ::core::option::Option<::prost::alloc::string::String>,
495    /// Optional, additive: mesh admission requirements snapshot.
496    /// Older nodes ignore this field. Owner-control config get/apply must
497    /// round-trip this so \[mesh_requirements\] is not silently dropped.
498    #[prost(message, optional, tag = "6")]
499    pub mesh_requirements: ::core::option::Option<MeshRequirements>,
500}
501#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
502pub struct NodeGpuConfig {
503    #[prost(enumeration = "GpuAssignment", tag = "1")]
504    pub assignment: i32,
505}
506#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
507pub struct ConfiguredModelRef {
508    #[prost(string, tag = "1")]
509    pub declared_ref: ::prost::alloc::string::String,
510    #[prost(string, optional, tag = "2")]
511    pub source_kind: ::core::option::Option<::prost::alloc::string::String>,
512    #[prost(string, optional, tag = "3")]
513    pub revision: ::core::option::Option<::prost::alloc::string::String>,
514}
515#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
516pub struct NodeModelEntry {
517    #[prost(string, tag = "1")]
518    pub model: ::prost::alloc::string::String,
519    #[prost(string, optional, tag = "2")]
520    pub mmproj: ::core::option::Option<::prost::alloc::string::String>,
521    #[prost(uint32, optional, tag = "3")]
522    pub ctx_size: ::core::option::Option<u32>,
523    #[prost(string, optional, tag = "4")]
524    pub gpu_id: ::core::option::Option<::prost::alloc::string::String>,
525    #[prost(message, optional, tag = "5")]
526    pub model_ref: ::core::option::Option<ConfiguredModelRef>,
527    #[prost(message, optional, tag = "6")]
528    pub mmproj_ref: ::core::option::Option<ConfiguredModelRef>,
529}
530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
531pub struct NodePluginEntry {
532    #[prost(string, tag = "1")]
533    pub name: ::prost::alloc::string::String,
534    #[prost(bool, optional, tag = "2")]
535    pub enabled: ::core::option::Option<bool>,
536    #[prost(string, optional, tag = "3")]
537    pub command: ::core::option::Option<::prost::alloc::string::String>,
538    #[prost(string, repeated, tag = "4")]
539    pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
540}
541#[derive(Clone, PartialEq, ::prost::Message)]
542pub struct OwnerControlEnvelope {
543    /// must equal NODE_PROTOCOL_GENERATION
544    #[prost(uint32, tag = "1")]
545    pub r#gen: u32,
546    #[prost(message, optional, tag = "2")]
547    pub handshake: ::core::option::Option<OwnerControlHandshake>,
548    #[prost(message, optional, tag = "3")]
549    pub request: ::core::option::Option<OwnerControlRequest>,
550    #[prost(message, optional, tag = "4")]
551    pub response: ::core::option::Option<OwnerControlResponse>,
552    #[prost(message, optional, tag = "5")]
553    pub error: ::core::option::Option<OwnerControlError>,
554}
555#[derive(Clone, PartialEq, ::prost::Message)]
556pub struct OwnerControlHandshake {
557    #[prost(message, optional, tag = "1")]
558    pub ownership: ::core::option::Option<SignedNodeOwnership>,
559}
560#[derive(Clone, PartialEq, ::prost::Message)]
561pub struct OwnerControlRequest {
562    #[prost(uint64, tag = "1")]
563    pub request_id: u64,
564    #[prost(message, optional, tag = "2")]
565    pub get_config: ::core::option::Option<OwnerControlGetConfigRequest>,
566    #[prost(message, optional, tag = "3")]
567    pub watch_config: ::core::option::Option<OwnerControlWatchConfigRequest>,
568    #[prost(message, optional, tag = "4")]
569    pub apply_config: ::core::option::Option<OwnerControlApplyConfigRequest>,
570    #[prost(message, optional, tag = "5")]
571    pub refresh_inventory: ::core::option::Option<OwnerControlRefreshInventoryRequest>,
572    #[prost(message, optional, tag = "6")]
573    pub load_model: ::core::option::Option<OwnerControlLoadModelRequest>,
574    #[prost(message, optional, tag = "7")]
575    pub unload_model: ::core::option::Option<OwnerControlUnloadModelRequest>,
576    #[prost(message, optional, tag = "8")]
577    pub ensure_model: ::core::option::Option<OwnerControlEnsureModelRequest>,
578    #[prost(message, optional, tag = "9")]
579    pub drain_model: ::core::option::Option<OwnerControlDrainModelRequest>,
580}
581#[derive(Clone, PartialEq, ::prost::Message)]
582pub struct OwnerControlResponse {
583    #[prost(uint64, tag = "1")]
584    pub request_id: u64,
585    #[prost(message, optional, tag = "2")]
586    pub get_config: ::core::option::Option<OwnerControlGetConfigResponse>,
587    #[prost(message, optional, tag = "3")]
588    pub watch_config: ::core::option::Option<OwnerControlWatchConfigResponse>,
589    #[prost(message, optional, tag = "4")]
590    pub apply_config: ::core::option::Option<OwnerControlApplyConfigResponse>,
591    #[prost(message, optional, tag = "5")]
592    pub refresh_inventory: ::core::option::Option<OwnerControlRefreshInventoryResponse>,
593    #[prost(message, optional, tag = "6")]
594    pub load_model: ::core::option::Option<OwnerControlLoadModelResponse>,
595    #[prost(message, optional, tag = "7")]
596    pub unload_model: ::core::option::Option<OwnerControlUnloadModelResponse>,
597    #[prost(message, optional, tag = "8")]
598    pub ensure_model: ::core::option::Option<OwnerControlEnsureModelResponse>,
599    #[prost(message, optional, tag = "9")]
600    pub drain_model: ::core::option::Option<OwnerControlDrainModelResponse>,
601}
602#[derive(Clone, PartialEq, ::prost::Message)]
603pub struct OwnerControlError {
604    #[prost(enumeration = "OwnerControlErrorCode", tag = "1")]
605    pub code: i32,
606    #[prost(string, tag = "2")]
607    pub message: ::prost::alloc::string::String,
608    #[prost(uint64, optional, tag = "3")]
609    pub request_id: ::core::option::Option<u64>,
610    #[prost(uint64, optional, tag = "4")]
611    pub current_revision: ::core::option::Option<u64>,
612}
613#[derive(Clone, PartialEq, ::prost::Message)]
614pub struct OwnerControlGetConfigRequest {
615    /// exactly 32 bytes
616    #[prost(bytes = "vec", tag = "1")]
617    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
618    /// exactly 32 bytes
619    #[prost(bytes = "vec", tag = "2")]
620    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
621}
622#[derive(Clone, PartialEq, ::prost::Message)]
623pub struct OwnerControlGetConfigResponse {
624    #[prost(message, optional, tag = "1")]
625    pub snapshot: ::core::option::Option<OwnerControlConfigSnapshot>,
626}
627#[derive(Clone, PartialEq, ::prost::Message)]
628pub struct OwnerControlWatchConfigRequest {
629    /// exactly 32 bytes
630    #[prost(bytes = "vec", tag = "1")]
631    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
632    /// exactly 32 bytes
633    #[prost(bytes = "vec", tag = "2")]
634    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
635    #[prost(bool, tag = "3")]
636    pub include_snapshot: bool,
637}
638#[derive(Clone, PartialEq, ::prost::Message)]
639pub struct OwnerControlWatchConfigResponse {
640    #[prost(message, optional, tag = "1")]
641    pub accepted: ::core::option::Option<OwnerControlWatchAccepted>,
642    #[prost(message, optional, tag = "2")]
643    pub snapshot: ::core::option::Option<OwnerControlConfigSnapshot>,
644    #[prost(message, optional, tag = "3")]
645    pub update: ::core::option::Option<OwnerControlConfigUpdate>,
646}
647#[derive(Clone, PartialEq, ::prost::Message)]
648pub struct OwnerControlWatchAccepted {
649    /// exactly 32 bytes
650    #[prost(bytes = "vec", tag = "1")]
651    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
652}
653#[derive(Clone, PartialEq, ::prost::Message)]
654pub struct OwnerControlApplyConfigRequest {
655    /// exactly 32 bytes
656    #[prost(bytes = "vec", tag = "1")]
657    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
658    /// exactly 32 bytes
659    #[prost(bytes = "vec", tag = "2")]
660    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
661    #[prost(uint64, tag = "3")]
662    pub expected_revision: u64,
663    #[prost(message, optional, tag = "4")]
664    pub config: ::core::option::Option<NodeConfigSnapshot>,
665}
666#[derive(Clone, PartialEq, ::prost::Message)]
667pub struct OwnerControlApplyConfigResponse {
668    #[prost(bool, tag = "1")]
669    pub success: bool,
670    #[prost(uint64, tag = "2")]
671    pub current_revision: u64,
672    #[prost(bytes = "vec", tag = "3")]
673    pub config_hash: ::prost::alloc::vec::Vec<u8>,
674    #[prost(string, optional, tag = "4")]
675    pub error: ::core::option::Option<::prost::alloc::string::String>,
676    #[prost(enumeration = "ConfigApplyMode", tag = "5")]
677    pub apply_mode: i32,
678    #[prost(message, repeated, tag = "6")]
679    pub diagnostics: ::prost::alloc::vec::Vec<ConfigDiagnostic>,
680}
681#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
682pub struct ConfigDiagnostic {
683    #[prost(enumeration = "ConfigDiagnosticCode", tag = "1")]
684    pub code: i32,
685    #[prost(enumeration = "ConfigDiagnosticSeverity", tag = "2")]
686    pub severity: i32,
687    #[prost(enumeration = "ConfigDiagnosticSource", tag = "3")]
688    pub source: i32,
689    #[prost(enumeration = "ConfigDiagnosticSchemaSource", optional, tag = "4")]
690    pub schema_source: ::core::option::Option<i32>,
691    #[prost(string, optional, tag = "5")]
692    pub path: ::core::option::Option<::prost::alloc::string::String>,
693    #[prost(string, optional, tag = "6")]
694    pub canonical_path: ::core::option::Option<::prost::alloc::string::String>,
695    #[prost(string, tag = "7")]
696    pub message: ::prost::alloc::string::String,
697    #[prost(string, optional, tag = "8")]
698    pub help: ::core::option::Option<::prost::alloc::string::String>,
699}
700#[derive(Clone, PartialEq, ::prost::Message)]
701pub struct OwnerControlRefreshInventoryRequest {
702    /// exactly 32 bytes
703    #[prost(bytes = "vec", tag = "1")]
704    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
705    /// exactly 32 bytes
706    #[prost(bytes = "vec", tag = "2")]
707    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
708}
709#[derive(Clone, PartialEq, ::prost::Message)]
710pub struct OwnerControlRefreshInventoryResponse {
711    #[prost(message, optional, tag = "1")]
712    pub snapshot: ::core::option::Option<OwnerControlConfigSnapshot>,
713    #[prost(message, optional, tag = "2")]
714    pub inventory: ::core::option::Option<OwnerControlRefreshInventory>,
715}
716#[derive(Clone, PartialEq, ::prost::Message)]
717pub struct OwnerControlModelRef {
718    #[prost(string, tag = "1")]
719    pub canonical_model_ref: ::prost::alloc::string::String,
720    #[prost(string, optional, tag = "2")]
721    pub instance_id: ::core::option::Option<::prost::alloc::string::String>,
722}
723#[derive(Clone, PartialEq, ::prost::Message)]
724pub struct OwnerControlLoadModelRequest {
725    #[prost(bytes = "vec", tag = "1")]
726    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
727    #[prost(bytes = "vec", tag = "2")]
728    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
729    #[prost(message, optional, tag = "3")]
730    pub model: ::core::option::Option<OwnerControlModelRef>,
731    #[prost(string, optional, tag = "4")]
732    pub profile: ::core::option::Option<::prost::alloc::string::String>,
733}
734#[derive(Clone, PartialEq, ::prost::Message)]
735pub struct OwnerControlUnloadModelRequest {
736    #[prost(bytes = "vec", tag = "1")]
737    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
738    #[prost(bytes = "vec", tag = "2")]
739    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
740    #[prost(message, optional, tag = "3")]
741    pub model: ::core::option::Option<OwnerControlModelRef>,
742}
743#[derive(Clone, PartialEq, ::prost::Message)]
744pub struct OwnerControlEnsureModelRequest {
745    #[prost(bytes = "vec", tag = "1")]
746    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
747    #[prost(bytes = "vec", tag = "2")]
748    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
749    #[prost(message, optional, tag = "3")]
750    pub model: ::core::option::Option<OwnerControlModelRef>,
751    #[prost(string, optional, tag = "4")]
752    pub profile: ::core::option::Option<::prost::alloc::string::String>,
753}
754#[derive(Clone, PartialEq, ::prost::Message)]
755pub struct OwnerControlDrainModelRequest {
756    #[prost(bytes = "vec", tag = "1")]
757    pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
758    #[prost(bytes = "vec", tag = "2")]
759    pub target_node_id: ::prost::alloc::vec::Vec<u8>,
760    #[prost(message, optional, tag = "3")]
761    pub model: ::core::option::Option<OwnerControlModelRef>,
762    #[prost(uint64, optional, tag = "4")]
763    pub drain_timeout_secs: ::core::option::Option<u64>,
764}
765#[derive(Clone, PartialEq, ::prost::Message)]
766pub struct OwnerControlLoadModelResponse {
767    #[prost(string, tag = "1")]
768    pub intent_id: ::prost::alloc::string::String,
769    #[prost(string, tag = "2")]
770    pub accepted_state: ::prost::alloc::string::String,
771    #[prost(message, optional, tag = "3")]
772    pub target: ::core::option::Option<OwnerControlModelRef>,
773}
774#[derive(Clone, PartialEq, ::prost::Message)]
775pub struct OwnerControlUnloadModelResponse {
776    #[prost(string, tag = "1")]
777    pub intent_id: ::prost::alloc::string::String,
778    #[prost(string, tag = "2")]
779    pub accepted_state: ::prost::alloc::string::String,
780    #[prost(message, optional, tag = "3")]
781    pub target: ::core::option::Option<OwnerControlModelRef>,
782}
783#[derive(Clone, PartialEq, ::prost::Message)]
784pub struct OwnerControlEnsureModelResponse {
785    #[prost(string, tag = "1")]
786    pub intent_id: ::prost::alloc::string::String,
787    #[prost(string, tag = "2")]
788    pub accepted_state: ::prost::alloc::string::String,
789    #[prost(message, optional, tag = "3")]
790    pub target: ::core::option::Option<OwnerControlModelRef>,
791}
792#[derive(Clone, PartialEq, ::prost::Message)]
793pub struct OwnerControlDrainModelResponse {
794    #[prost(string, tag = "1")]
795    pub intent_id: ::prost::alloc::string::String,
796    #[prost(string, tag = "2")]
797    pub accepted_state: ::prost::alloc::string::String,
798    #[prost(message, optional, tag = "3")]
799    pub target: ::core::option::Option<OwnerControlModelRef>,
800}
801#[derive(Clone, PartialEq, ::prost::Message)]
802pub struct OwnerControlRefreshInventory {
803    #[prost(message, repeated, tag = "1")]
804    pub entries: ::prost::alloc::vec::Vec<OwnerControlInventoryEntry>,
805    #[prost(enumeration = "OwnerControlRefreshInventoryDisposition", tag = "2")]
806    pub disposition: i32,
807}
808#[derive(Clone, PartialEq, ::prost::Message)]
809pub struct OwnerControlInventoryEntry {
810    #[prost(string, tag = "1")]
811    pub canonical_model_ref: ::prost::alloc::string::String,
812    #[prost(string, optional, tag = "2")]
813    pub display_name: ::core::option::Option<::prost::alloc::string::String>,
814    #[prost(uint64, tag = "3")]
815    pub total_size_bytes: u64,
816    #[prost(message, optional, tag = "4")]
817    pub metadata: ::core::option::Option<CompactModelMetadata>,
818}
819#[derive(Clone, PartialEq, ::prost::Message)]
820pub struct OwnerControlConfigSnapshot {
821    /// exactly 32 bytes
822    #[prost(bytes = "vec", tag = "1")]
823    pub node_id: ::prost::alloc::vec::Vec<u8>,
824    #[prost(uint64, tag = "2")]
825    pub revision: u64,
826    /// SHA-256 of canonical proto bytes (32 bytes)
827    #[prost(bytes = "vec", tag = "3")]
828    pub config_hash: ::prost::alloc::vec::Vec<u8>,
829    #[prost(message, optional, tag = "4")]
830    pub config: ::core::option::Option<NodeConfigSnapshot>,
831    #[prost(string, optional, tag = "5")]
832    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
833}
834#[derive(Clone, PartialEq, ::prost::Message)]
835pub struct OwnerControlConfigUpdate {
836    /// exactly 32 bytes
837    #[prost(bytes = "vec", tag = "1")]
838    pub node_id: ::prost::alloc::vec::Vec<u8>,
839    #[prost(uint64, tag = "2")]
840    pub revision: u64,
841    /// SHA-256 of canonical proto bytes (32 bytes)
842    #[prost(bytes = "vec", tag = "3")]
843    pub config_hash: ::prost::alloc::vec::Vec<u8>,
844    #[prost(message, optional, tag = "4")]
845    pub config: ::core::option::Option<NodeConfigSnapshot>,
846}
847#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
848#[repr(i32)]
849pub enum CapabilityLevel {
850    Unspecified = 0,
851    None = 1,
852    Likely = 2,
853    Supported = 3,
854}
855impl CapabilityLevel {
856    /// String value of the enum field names used in the ProtoBuf definition.
857    ///
858    /// The values are not transformed in any way and thus are considered stable
859    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
860    pub fn as_str_name(&self) -> &'static str {
861        match self {
862            Self::Unspecified => "CAPABILITY_LEVEL_UNSPECIFIED",
863            Self::None => "CAPABILITY_LEVEL_NONE",
864            Self::Likely => "CAPABILITY_LEVEL_LIKELY",
865            Self::Supported => "CAPABILITY_LEVEL_SUPPORTED",
866        }
867    }
868    /// Creates an enum from field names used in the ProtoBuf definition.
869    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
870        match value {
871            "CAPABILITY_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
872            "CAPABILITY_LEVEL_NONE" => Some(Self::None),
873            "CAPABILITY_LEVEL_LIKELY" => Some(Self::Likely),
874            "CAPABILITY_LEVEL_SUPPORTED" => Some(Self::Supported),
875            _ => None,
876        }
877    }
878}
879#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
880#[repr(i32)]
881pub enum ModelSourceKind {
882    Unspecified = 0,
883    Catalog = 1,
884    HuggingFace = 2,
885    LocalGguf = 3,
886    DirectUrl = 4,
887    Unknown = 5,
888}
889impl ModelSourceKind {
890    /// String value of the enum field names used in the ProtoBuf definition.
891    ///
892    /// The values are not transformed in any way and thus are considered stable
893    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
894    pub fn as_str_name(&self) -> &'static str {
895        match self {
896            Self::Unspecified => "MODEL_SOURCE_KIND_UNSPECIFIED",
897            Self::Catalog => "MODEL_SOURCE_KIND_CATALOG",
898            Self::HuggingFace => "MODEL_SOURCE_KIND_HUGGING_FACE",
899            Self::LocalGguf => "MODEL_SOURCE_KIND_LOCAL_GGUF",
900            Self::DirectUrl => "MODEL_SOURCE_KIND_DIRECT_URL",
901            Self::Unknown => "MODEL_SOURCE_KIND_UNKNOWN",
902        }
903    }
904    /// Creates an enum from field names used in the ProtoBuf definition.
905    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
906        match value {
907            "MODEL_SOURCE_KIND_UNSPECIFIED" => Some(Self::Unspecified),
908            "MODEL_SOURCE_KIND_CATALOG" => Some(Self::Catalog),
909            "MODEL_SOURCE_KIND_HUGGING_FACE" => Some(Self::HuggingFace),
910            "MODEL_SOURCE_KIND_LOCAL_GGUF" => Some(Self::LocalGguf),
911            "MODEL_SOURCE_KIND_DIRECT_URL" => Some(Self::DirectUrl),
912            "MODEL_SOURCE_KIND_UNKNOWN" => Some(Self::Unknown),
913            _ => None,
914        }
915    }
916}
917/// Shared enum
918#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
919#[repr(i32)]
920pub enum NodeRole {
921    Unspecified = 0,
922    Worker = 1,
923    Host = 2,
924    Client = 3,
925}
926impl NodeRole {
927    /// String value of the enum field names used in the ProtoBuf definition.
928    ///
929    /// The values are not transformed in any way and thus are considered stable
930    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
931    pub fn as_str_name(&self) -> &'static str {
932        match self {
933            Self::Unspecified => "NODE_ROLE_UNSPECIFIED",
934            Self::Worker => "WORKER",
935            Self::Host => "HOST",
936            Self::Client => "CLIENT",
937        }
938    }
939    /// Creates an enum from field names used in the ProtoBuf definition.
940    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
941        match value {
942            "NODE_ROLE_UNSPECIFIED" => Some(Self::Unspecified),
943            "WORKER" => Some(Self::Worker),
944            "HOST" => Some(Self::Host),
945            "CLIENT" => Some(Self::Client),
946            _ => None,
947        }
948    }
949}
950/// Latency source type for peer latency data
951#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
952#[repr(i32)]
953pub enum LatencySource {
954    Unspecified = 0,
955    Direct = 1,
956    Estimated = 2,
957    Unknown = 3,
958}
959#[derive(Clone, PartialEq, ::prost::Message)]
960pub struct SignedMeshGenesisPolicy {
961    #[prost(uint32, tag = "1")]
962    pub version: u32,
963    #[prost(message, optional, tag = "2")]
964    pub policy: ::core::option::Option<MeshGenesisPolicy>,
965    #[prost(bytes = "vec", tag = "3")]
966    pub origin_sign_public_key: ::prost::alloc::vec::Vec<u8>,
967    #[prost(string, tag = "4")]
968    pub signature_algorithm: ::prost::alloc::string::String,
969    #[prost(bytes = "vec", tag = "5")]
970    pub signature: ::prost::alloc::vec::Vec<u8>,
971}
972#[derive(Clone, PartialEq, ::prost::Message)]
973pub struct MeshGenesisPolicy {
974    #[prost(uint32, tag = "1")]
975    pub version: u32,
976    #[prost(string, tag = "2")]
977    pub origin_owner_id: ::prost::alloc::string::String,
978    #[prost(uint64, tag = "3")]
979    pub created_at_unix_ms: u64,
980    #[prost(message, optional, tag = "4")]
981    pub requirements: ::core::option::Option<MeshRequirements>,
982}
983#[derive(Clone, PartialEq, ::prost::Message)]
984pub struct MeshRequirements {
985    #[prost(message, optional, tag = "1")]
986    pub node_version: ::core::option::Option<NodeVersionBounds>,
987    #[prost(message, optional, tag = "2")]
988    pub protocol_generation: ::core::option::Option<ProtocolGenerationBounds>,
989    #[prost(message, optional, tag = "3")]
990    pub release_attestation: ::core::option::Option<ReleaseAttestationRequirement>,
991}
992#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
993pub struct NodeVersionBounds {
994    #[prost(string, optional, tag = "1")]
995    pub min: ::core::option::Option<::prost::alloc::string::String>,
996    #[prost(string, optional, tag = "2")]
997    pub max: ::core::option::Option<::prost::alloc::string::String>,
998}
999#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1000pub struct ProtocolGenerationBounds {
1001    #[prost(uint32, optional, tag = "1")]
1002    pub min: ::core::option::Option<u32>,
1003    #[prost(uint32, optional, tag = "2")]
1004    pub max: ::core::option::Option<u32>,
1005}
1006#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1007pub struct ReleaseAttestationRequirement {
1008    #[prost(bool, optional, tag = "1")]
1009    pub required: ::core::option::Option<bool>,
1010    #[prost(string, repeated, tag = "2")]
1011    pub allowed_signer_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1012}
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct SignedBootstrapToken {
1015    #[prost(uint32, tag = "1")]
1016    pub version: u32,
1017    #[prost(bytes = "vec", repeated, tag = "2")]
1018    pub serialized_addrs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1019    #[prost(string, tag = "3")]
1020    pub mesh_id: ::prost::alloc::string::String,
1021    #[prost(string, tag = "4")]
1022    pub policy_hash: ::prost::alloc::string::String,
1023    #[prost(message, optional, tag = "5")]
1024    pub genesis_policy: ::core::option::Option<MeshGenesisPolicy>,
1025    #[prost(uint64, optional, tag = "6")]
1026    pub expires_at_unix_ms: ::core::option::Option<u64>,
1027    #[prost(bytes = "vec", tag = "7")]
1028    pub origin_sign_public_key: ::prost::alloc::vec::Vec<u8>,
1029    #[prost(string, tag = "8")]
1030    pub signature_algorithm: ::prost::alloc::string::String,
1031    #[prost(bytes = "vec", tag = "9")]
1032    pub signature: ::prost::alloc::vec::Vec<u8>,
1033}
1034#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1035pub struct ReleaseBuildAttestation {
1036    #[prost(uint32, tag = "1")]
1037    pub version: u32,
1038    #[prost(string, tag = "2")]
1039    pub node_version: ::prost::alloc::string::String,
1040    #[prost(string, tag = "3")]
1041    pub build_id: ::prost::alloc::string::String,
1042    #[prost(string, tag = "4")]
1043    pub commit: ::prost::alloc::string::String,
1044    #[prost(string, tag = "5")]
1045    pub target_triple: ::prost::alloc::string::String,
1046    #[prost(uint32, optional, tag = "6")]
1047    pub supported_protocol_generation_min: ::core::option::Option<u32>,
1048    #[prost(uint32, optional, tag = "7")]
1049    pub supported_protocol_generation_max: ::core::option::Option<u32>,
1050    #[prost(string, optional, tag = "8")]
1051    pub artifact_digest: ::core::option::Option<::prost::alloc::string::String>,
1052    #[prost(string, tag = "9")]
1053    pub signer_key_id: ::prost::alloc::string::String,
1054    #[prost(string, tag = "10")]
1055    pub signature_algorithm: ::prost::alloc::string::String,
1056    #[prost(bytes = "vec", tag = "11")]
1057    pub signature: ::prost::alloc::vec::Vec<u8>,
1058}
1059#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1060pub struct DirectNodeAdmissionProof {
1061    #[prost(uint32, tag = "1")]
1062    pub version: u32,
1063    #[prost(bytes = "vec", tag = "2")]
1064    pub sender_id: ::prost::alloc::vec::Vec<u8>,
1065    #[prost(string, tag = "3")]
1066    pub mesh_id: ::prost::alloc::string::String,
1067    #[prost(string, tag = "4")]
1068    pub policy_hash: ::prost::alloc::string::String,
1069    #[prost(string, tag = "5")]
1070    pub attestation_hash: ::prost::alloc::string::String,
1071    #[prost(uint64, tag = "6")]
1072    pub timestamp_unix_ms: u64,
1073    #[prost(string, tag = "7")]
1074    pub signature_algorithm: ::prost::alloc::string::String,
1075    #[prost(bytes = "vec", tag = "8")]
1076    pub signature: ::prost::alloc::vec::Vec<u8>,
1077}
1078impl LatencySource {
1079    pub fn as_str_name(&self) -> &'static str {
1080        match self {
1081            Self::Unspecified => "LATENCY_SOURCE_UNSPECIFIED",
1082            Self::Direct => "DIRECT",
1083            Self::Estimated => "ESTIMATED",
1084            Self::Unknown => "UNKNOWN",
1085        }
1086    }
1087    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1088        match value {
1089            "LATENCY_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
1090            "DIRECT" => Some(Self::Direct),
1091            "ESTIMATED" => Some(Self::Estimated),
1092            "UNKNOWN" => Some(Self::Unknown),
1093            _ => None,
1094        }
1095    }
1096}
1097#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1098#[repr(i32)]
1099pub enum GpuAssignment {
1100    Unspecified = 0,
1101    Auto = 1,
1102    Pinned = 2,
1103}
1104impl GpuAssignment {
1105    /// String value of the enum field names used in the ProtoBuf definition.
1106    ///
1107    /// The values are not transformed in any way and thus are considered stable
1108    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1109    pub fn as_str_name(&self) -> &'static str {
1110        match self {
1111            Self::Unspecified => "GPU_ASSIGNMENT_UNSPECIFIED",
1112            Self::Auto => "GPU_ASSIGNMENT_AUTO",
1113            Self::Pinned => "GPU_ASSIGNMENT_PINNED",
1114        }
1115    }
1116    /// Creates an enum from field names used in the ProtoBuf definition.
1117    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1118        match value {
1119            "GPU_ASSIGNMENT_UNSPECIFIED" => Some(Self::Unspecified),
1120            "GPU_ASSIGNMENT_AUTO" => Some(Self::Auto),
1121            "GPU_ASSIGNMENT_PINNED" => Some(Self::Pinned),
1122            _ => None,
1123        }
1124    }
1125}
1126#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1127#[repr(i32)]
1128pub enum ConfigApplyMode {
1129    Unspecified = 0,
1130    Staged = 1,
1131    Live = 2,
1132    Noop = 3,
1133}
1134impl ConfigApplyMode {
1135    /// String value of the enum field names used in the ProtoBuf definition.
1136    ///
1137    /// The values are not transformed in any way and thus are considered stable
1138    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1139    pub fn as_str_name(&self) -> &'static str {
1140        match self {
1141            Self::Unspecified => "CONFIG_APPLY_MODE_UNSPECIFIED",
1142            Self::Staged => "CONFIG_APPLY_MODE_STAGED",
1143            Self::Live => "CONFIG_APPLY_MODE_LIVE",
1144            Self::Noop => "CONFIG_APPLY_MODE_NOOP",
1145        }
1146    }
1147    /// Creates an enum from field names used in the ProtoBuf definition.
1148    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1149        match value {
1150            "CONFIG_APPLY_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1151            "CONFIG_APPLY_MODE_STAGED" => Some(Self::Staged),
1152            "CONFIG_APPLY_MODE_LIVE" => Some(Self::Live),
1153            "CONFIG_APPLY_MODE_NOOP" => Some(Self::Noop),
1154            _ => None,
1155        }
1156    }
1157}
1158#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1159#[repr(i32)]
1160pub enum ConfigDiagnosticSeverity {
1161    Unspecified = 0,
1162    Error = 1,
1163    Warning = 2,
1164    Info = 3,
1165}
1166impl ConfigDiagnosticSeverity {
1167    pub fn as_str_name(&self) -> &'static str {
1168        match self {
1169            Self::Unspecified => "CONFIG_DIAGNOSTIC_SEVERITY_UNSPECIFIED",
1170            Self::Error => "CONFIG_DIAGNOSTIC_SEVERITY_ERROR",
1171            Self::Warning => "CONFIG_DIAGNOSTIC_SEVERITY_WARNING",
1172            Self::Info => "CONFIG_DIAGNOSTIC_SEVERITY_INFO",
1173        }
1174    }
1175    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1176        match value {
1177            "CONFIG_DIAGNOSTIC_SEVERITY_UNSPECIFIED" => Some(Self::Unspecified),
1178            "CONFIG_DIAGNOSTIC_SEVERITY_ERROR" => Some(Self::Error),
1179            "CONFIG_DIAGNOSTIC_SEVERITY_WARNING" => Some(Self::Warning),
1180            "CONFIG_DIAGNOSTIC_SEVERITY_INFO" => Some(Self::Info),
1181            _ => None,
1182        }
1183    }
1184}
1185#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1186#[repr(i32)]
1187pub enum ConfigDiagnosticSource {
1188    Unspecified = 0,
1189    Validation = 1,
1190    Schema = 2,
1191    Plugin = 3,
1192    Compatibility = 4,
1193}
1194impl ConfigDiagnosticSource {
1195    pub fn as_str_name(&self) -> &'static str {
1196        match self {
1197            Self::Unspecified => "CONFIG_DIAGNOSTIC_SOURCE_UNSPECIFIED",
1198            Self::Validation => "CONFIG_DIAGNOSTIC_SOURCE_VALIDATION",
1199            Self::Schema => "CONFIG_DIAGNOSTIC_SOURCE_SCHEMA",
1200            Self::Plugin => "CONFIG_DIAGNOSTIC_SOURCE_PLUGIN",
1201            Self::Compatibility => "CONFIG_DIAGNOSTIC_SOURCE_COMPATIBILITY",
1202        }
1203    }
1204    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1205        match value {
1206            "CONFIG_DIAGNOSTIC_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
1207            "CONFIG_DIAGNOSTIC_SOURCE_VALIDATION" => Some(Self::Validation),
1208            "CONFIG_DIAGNOSTIC_SOURCE_SCHEMA" => Some(Self::Schema),
1209            "CONFIG_DIAGNOSTIC_SOURCE_PLUGIN" => Some(Self::Plugin),
1210            "CONFIG_DIAGNOSTIC_SOURCE_COMPATIBILITY" => Some(Self::Compatibility),
1211            _ => None,
1212        }
1213    }
1214}
1215#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1216#[repr(i32)]
1217pub enum ConfigDiagnosticSchemaSource {
1218    Unspecified = 0,
1219    BuiltIn = 1,
1220    Engine = 2,
1221    Plugin = 3,
1222}
1223impl ConfigDiagnosticSchemaSource {
1224    pub fn as_str_name(&self) -> &'static str {
1225        match self {
1226            Self::Unspecified => "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_UNSPECIFIED",
1227            Self::BuiltIn => "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_BUILT_IN",
1228            Self::Engine => "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_ENGINE",
1229            Self::Plugin => "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_PLUGIN",
1230        }
1231    }
1232    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1233        match value {
1234            "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
1235            "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_BUILT_IN" => Some(Self::BuiltIn),
1236            "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_ENGINE" => Some(Self::Engine),
1237            "CONFIG_DIAGNOSTIC_SCHEMA_SOURCE_PLUGIN" => Some(Self::Plugin),
1238            _ => None,
1239        }
1240    }
1241}
1242#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1243#[repr(i32)]
1244pub enum ConfigDiagnosticCode {
1245    Unspecified = 0,
1246    InvalidValue = 1,
1247    MissingRequiredValue = 2,
1248    UnsupportedField = 3,
1249    RejectedField = 4,
1250    AliasApplied = 5,
1251    MisplacedField = 6,
1252    UnknownField = 7,
1253    SchemaUnavailable = 8,
1254    LegacyUnvalidatedConfig = 9,
1255    UnsupportedSchemaVersion = 10,
1256}
1257impl ConfigDiagnosticCode {
1258    pub fn as_str_name(&self) -> &'static str {
1259        match self {
1260            Self::Unspecified => "CONFIG_DIAGNOSTIC_CODE_UNSPECIFIED",
1261            Self::InvalidValue => "CONFIG_DIAGNOSTIC_CODE_INVALID_VALUE",
1262            Self::MissingRequiredValue => "CONFIG_DIAGNOSTIC_CODE_MISSING_REQUIRED_VALUE",
1263            Self::UnsupportedField => "CONFIG_DIAGNOSTIC_CODE_UNSUPPORTED_FIELD",
1264            Self::RejectedField => "CONFIG_DIAGNOSTIC_CODE_REJECTED_FIELD",
1265            Self::AliasApplied => "CONFIG_DIAGNOSTIC_CODE_ALIAS_APPLIED",
1266            Self::MisplacedField => "CONFIG_DIAGNOSTIC_CODE_MISPLACED_FIELD",
1267            Self::UnknownField => "CONFIG_DIAGNOSTIC_CODE_UNKNOWN_FIELD",
1268            Self::SchemaUnavailable => "CONFIG_DIAGNOSTIC_CODE_SCHEMA_UNAVAILABLE",
1269            Self::LegacyUnvalidatedConfig => "CONFIG_DIAGNOSTIC_CODE_LEGACY_UNVALIDATED_CONFIG",
1270            Self::UnsupportedSchemaVersion => "CONFIG_DIAGNOSTIC_CODE_UNSUPPORTED_SCHEMA_VERSION",
1271        }
1272    }
1273    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1274        match value {
1275            "CONFIG_DIAGNOSTIC_CODE_UNSPECIFIED" => Some(Self::Unspecified),
1276            "CONFIG_DIAGNOSTIC_CODE_INVALID_VALUE" => Some(Self::InvalidValue),
1277            "CONFIG_DIAGNOSTIC_CODE_MISSING_REQUIRED_VALUE" => Some(Self::MissingRequiredValue),
1278            "CONFIG_DIAGNOSTIC_CODE_UNSUPPORTED_FIELD" => Some(Self::UnsupportedField),
1279            "CONFIG_DIAGNOSTIC_CODE_REJECTED_FIELD" => Some(Self::RejectedField),
1280            "CONFIG_DIAGNOSTIC_CODE_ALIAS_APPLIED" => Some(Self::AliasApplied),
1281            "CONFIG_DIAGNOSTIC_CODE_MISPLACED_FIELD" => Some(Self::MisplacedField),
1282            "CONFIG_DIAGNOSTIC_CODE_UNKNOWN_FIELD" => Some(Self::UnknownField),
1283            "CONFIG_DIAGNOSTIC_CODE_SCHEMA_UNAVAILABLE" => Some(Self::SchemaUnavailable),
1284            "CONFIG_DIAGNOSTIC_CODE_LEGACY_UNVALIDATED_CONFIG" => {
1285                Some(Self::LegacyUnvalidatedConfig)
1286            }
1287            "CONFIG_DIAGNOSTIC_CODE_UNSUPPORTED_SCHEMA_VERSION" => {
1288                Some(Self::UnsupportedSchemaVersion)
1289            }
1290            _ => None,
1291        }
1292    }
1293}
1294#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1295#[repr(i32)]
1296pub enum OwnerControlErrorCode {
1297    Unspecified = 0,
1298    BadRequest = 1,
1299    Unauthorized = 2,
1300    RevisionConflict = 3,
1301    ControlUnsupported = 4,
1302    ControlEndpointRequired = 5,
1303    ControlUnavailable = 6,
1304    UnknownCommand = 7,
1305    LegacyJsonUnsupported = 8,
1306    InvalidHandshake = 9,
1307    TargetNodeMismatch = 10,
1308}
1309impl OwnerControlErrorCode {
1310    pub fn as_str_name(&self) -> &'static str {
1311        match self {
1312            Self::Unspecified => "OWNER_CONTROL_ERROR_CODE_UNSPECIFIED",
1313            Self::BadRequest => "OWNER_CONTROL_ERROR_CODE_BAD_REQUEST",
1314            Self::Unauthorized => "OWNER_CONTROL_ERROR_CODE_UNAUTHORIZED",
1315            Self::RevisionConflict => "OWNER_CONTROL_ERROR_CODE_REVISION_CONFLICT",
1316            Self::ControlUnsupported => "OWNER_CONTROL_ERROR_CODE_CONTROL_UNSUPPORTED",
1317            Self::ControlEndpointRequired => "OWNER_CONTROL_ERROR_CODE_CONTROL_ENDPOINT_REQUIRED",
1318            Self::ControlUnavailable => "OWNER_CONTROL_ERROR_CODE_CONTROL_UNAVAILABLE",
1319            Self::UnknownCommand => "OWNER_CONTROL_ERROR_CODE_UNKNOWN_COMMAND",
1320            Self::LegacyJsonUnsupported => "OWNER_CONTROL_ERROR_CODE_LEGACY_JSON_UNSUPPORTED",
1321            Self::InvalidHandshake => "OWNER_CONTROL_ERROR_CODE_INVALID_HANDSHAKE",
1322            Self::TargetNodeMismatch => "OWNER_CONTROL_ERROR_CODE_TARGET_NODE_MISMATCH",
1323        }
1324    }
1325    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1326        match value {
1327            "OWNER_CONTROL_ERROR_CODE_UNSPECIFIED" => Some(Self::Unspecified),
1328            "OWNER_CONTROL_ERROR_CODE_BAD_REQUEST" => Some(Self::BadRequest),
1329            "OWNER_CONTROL_ERROR_CODE_UNAUTHORIZED" => Some(Self::Unauthorized),
1330            "OWNER_CONTROL_ERROR_CODE_REVISION_CONFLICT" => Some(Self::RevisionConflict),
1331            "OWNER_CONTROL_ERROR_CODE_CONTROL_UNSUPPORTED" => Some(Self::ControlUnsupported),
1332            "OWNER_CONTROL_ERROR_CODE_CONTROL_ENDPOINT_REQUIRED" => {
1333                Some(Self::ControlEndpointRequired)
1334            }
1335            "OWNER_CONTROL_ERROR_CODE_CONTROL_UNAVAILABLE" => Some(Self::ControlUnavailable),
1336            "OWNER_CONTROL_ERROR_CODE_UNKNOWN_COMMAND" => Some(Self::UnknownCommand),
1337            "OWNER_CONTROL_ERROR_CODE_LEGACY_JSON_UNSUPPORTED" => Some(Self::LegacyJsonUnsupported),
1338            "OWNER_CONTROL_ERROR_CODE_INVALID_HANDSHAKE" => Some(Self::InvalidHandshake),
1339            "OWNER_CONTROL_ERROR_CODE_TARGET_NODE_MISMATCH" => Some(Self::TargetNodeMismatch),
1340            _ => None,
1341        }
1342    }
1343}
1344#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1345#[repr(i32)]
1346pub enum OwnerControlRefreshInventoryDisposition {
1347    Unspecified = 0,
1348    Executed = 1,
1349    Coalesced = 2,
1350}
1351impl OwnerControlRefreshInventoryDisposition {
1352    /// String value of the enum field names used in the ProtoBuf definition.
1353    ///
1354    /// The values are not transformed in any way and thus are considered stable
1355    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1356    pub fn as_str_name(&self) -> &'static str {
1357        match self {
1358            Self::Unspecified => "OWNER_CONTROL_REFRESH_INVENTORY_DISPOSITION_UNSPECIFIED",
1359            Self::Executed => "OWNER_CONTROL_REFRESH_INVENTORY_DISPOSITION_EXECUTED",
1360            Self::Coalesced => "OWNER_CONTROL_REFRESH_INVENTORY_DISPOSITION_COALESCED",
1361        }
1362    }
1363    /// Creates an enum from field names used in the ProtoBuf definition.
1364    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1365        match value {
1366            "OWNER_CONTROL_REFRESH_INVENTORY_DISPOSITION_UNSPECIFIED" => Some(Self::Unspecified),
1367            "OWNER_CONTROL_REFRESH_INVENTORY_DISPOSITION_EXECUTED" => Some(Self::Executed),
1368            "OWNER_CONTROL_REFRESH_INVENTORY_DISPOSITION_COALESCED" => Some(Self::Coalesced),
1369            _ => None,
1370        }
1371    }
1372}
1373/// Inference admission state for a peer (additive; older nodes ignore).
1374#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1375#[repr(i32)]
1376pub enum InferenceAdmissionState {
1377    Unspecified = 0,
1378    Accepting = 1,
1379    AcceptingDeprioritized = 2,
1380    RemotePaused = 3,
1381    AllPaused = 4,
1382}
1383impl InferenceAdmissionState {
1384    /// String value of the enum field names used in the ProtoBuf definition.
1385    ///
1386    /// The values are not transformed in any way and thus are considered stable
1387    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1388    pub fn as_str_name(&self) -> &'static str {
1389        match self {
1390            Self::Unspecified => "INFERENCE_ADMISSION_STATE_UNSPECIFIED",
1391            Self::Accepting => "INFERENCE_ADMISSION_STATE_ACCEPTING",
1392            Self::AcceptingDeprioritized => "INFERENCE_ADMISSION_STATE_ACCEPTING_DEPRIORITIZED",
1393            Self::RemotePaused => "INFERENCE_ADMISSION_STATE_REMOTE_PAUSED",
1394            Self::AllPaused => "INFERENCE_ADMISSION_STATE_ALL_PAUSED",
1395        }
1396    }
1397    /// Creates an enum from field names used in the ProtoBuf definition.
1398    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1399        match value {
1400            "INFERENCE_ADMISSION_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1401            "INFERENCE_ADMISSION_STATE_ACCEPTING" => Some(Self::Accepting),
1402            "INFERENCE_ADMISSION_STATE_ACCEPTING_DEPRIORITIZED" => {
1403                Some(Self::AcceptingDeprioritized)
1404            }
1405            "INFERENCE_ADMISSION_STATE_REMOTE_PAUSED" => Some(Self::RemotePaused),
1406            "INFERENCE_ADMISSION_STATE_ALL_PAUSED" => Some(Self::AllPaused),
1407            _ => None,
1408        }
1409    }
1410}