1#[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 #[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 #[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 #[prost(string, optional, tag = "5")]
26 pub gpu_name: ::core::option::Option<::prost::alloc::string::String>,
27 #[prost(string, optional, tag = "6")]
29 pub hostname: ::core::option::Option<::prost::alloc::string::String>,
30 #[prost(bool, optional, tag = "7")]
32 pub is_soc: ::core::option::Option<bool>,
33 #[prost(string, optional, tag = "8")]
35 pub gpu_vram: ::core::option::Option<::prost::alloc::string::String>,
36 #[prost(string, repeated, tag = "9")]
38 pub available_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
39 #[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 #[prost(string, repeated, tag = "15")]
52 pub catalog_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
53 #[prost(uint64, tag = "16")]
55 pub vram_bytes: u64,
56 #[prost(string, optional, tag = "17")]
58 pub model_source: ::core::option::Option<::prost::alloc::string::String>,
59 #[prost(string, optional, tag = "18")]
61 pub primary_serving: ::core::option::Option<::prost::alloc::string::String>,
62 #[prost(string, optional, tag = "19")]
64 pub mesh_id: ::core::option::Option<::prost::alloc::string::String>,
65 #[prost(message, repeated, tag = "20")]
67 pub demand: ::prost::alloc::vec::Vec<ModelDemandEntry>,
68 #[prost(map = "string, uint64", tag = "21")]
70 pub available_model_sizes: ::std::collections::HashMap<::prost::alloc::string::String, u64>,
71 #[prost(bytes = "vec", tag = "22")]
73 pub serialized_addr: ::prost::alloc::vec::Vec<u8>,
74 #[prost(string, repeated, tag = "23")]
76 pub hosted_models: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
77 #[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 #[prost(string, optional, tag = "29")]
90 pub gpu_mem_bandwidth_gbps: ::core::option::Option<::prost::alloc::string::String>,
91 #[prost(string, optional, tag = "30")]
93 pub gpu_compute_tflops_fp32: ::core::option::Option<::prost::alloc::string::String>,
94 #[prost(string, optional, tag = "31")]
96 pub gpu_compute_tflops_fp16: ::core::option::Option<::prost::alloc::string::String>,
97 #[prost(string, optional, tag = "32")]
99 pub gpu_reserved_bytes: ::core::option::Option<::prost::alloc::string::String>,
100 #[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 #[prost(string, repeated, tag = "35")]
107 pub explicit_model_interests: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
108 #[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}
122#[derive(Clone, PartialEq, ::prost::Message)]
123pub struct AdvertisedModelThroughput {
124 #[prost(string, tag = "1")]
125 pub model_name: ::prost::alloc::string::String,
126 #[prost(uint64, tag = "2")]
127 pub avg_tokens_per_second_milli: u64,
128 #[prost(uint64, tag = "3")]
129 pub throughput_samples: u64,
130}
131#[derive(Clone, PartialEq, ::prost::Message)]
132pub struct MeshSubprotocol {
133 #[prost(string, tag = "1")]
135 pub name: ::prost::alloc::string::String,
136 #[prost(uint32, tag = "2")]
138 pub major: u32,
139 #[prost(string, repeated, tag = "3")]
141 pub features: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
142}
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct MeshSubprotocolOpen {
145 #[prost(uint32, tag = "1")]
146 pub r#gen: u32,
147 #[prost(string, tag = "2")]
149 pub name: ::prost::alloc::string::String,
150 #[prost(uint32, tag = "3")]
152 pub major: u32,
153}
154#[derive(Clone, PartialEq, ::prost::Message)]
155pub struct HardwareInfo {
156 #[prost(bool, optional, tag = "1")]
158 pub is_soc: ::core::option::Option<bool>,
159 #[prost(string, optional, tag = "2")]
160 pub hostname: ::core::option::Option<::prost::alloc::string::String>,
161 #[prost(message, repeated, tag = "3")]
162 pub gpus: ::prost::alloc::vec::Vec<GpuInfo>,
163}
164#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
165pub struct GpuInfo {
166 #[prost(string, optional, tag = "1")]
167 pub name: ::core::option::Option<::prost::alloc::string::String>,
168 #[prost(string, optional, tag = "2")]
169 pub vram_bytes: ::core::option::Option<::prost::alloc::string::String>,
170 #[prost(string, optional, tag = "3")]
171 pub reserved_bytes: ::core::option::Option<::prost::alloc::string::String>,
172 #[prost(string, optional, tag = "4")]
173 pub mem_bandwidth_gbps: ::core::option::Option<::prost::alloc::string::String>,
174 #[prost(string, optional, tag = "5")]
175 pub compute_tflops_fp32: ::core::option::Option<::prost::alloc::string::String>,
176 #[prost(string, optional, tag = "6")]
177 pub compute_tflops_fp16: ::core::option::Option<::prost::alloc::string::String>,
178}
179#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
180pub struct SignedNodeOwnership {
181 #[prost(uint32, tag = "1")]
182 pub version: u32,
183 #[prost(string, tag = "2")]
184 pub cert_id: ::prost::alloc::string::String,
185 #[prost(string, tag = "3")]
186 pub owner_id: ::prost::alloc::string::String,
187 #[prost(bytes = "vec", tag = "4")]
189 pub owner_sign_public_key: ::prost::alloc::vec::Vec<u8>,
190 #[prost(bytes = "vec", tag = "5")]
192 pub node_endpoint_id: ::prost::alloc::vec::Vec<u8>,
193 #[prost(uint64, tag = "6")]
194 pub issued_at_unix_ms: u64,
195 #[prost(uint64, tag = "7")]
196 pub expires_at_unix_ms: u64,
197 #[prost(string, optional, tag = "8")]
198 pub node_label: ::core::option::Option<::prost::alloc::string::String>,
199 #[prost(string, optional, tag = "9")]
200 pub hostname_hint: ::core::option::Option<::prost::alloc::string::String>,
201 #[prost(bytes = "vec", tag = "10")]
203 pub signature: ::prost::alloc::vec::Vec<u8>,
204}
205#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
206pub struct ServedModelDescriptor {
207 #[prost(message, optional, tag = "1")]
208 pub identity: ::core::option::Option<ServedModelIdentity>,
209 #[prost(message, optional, tag = "2")]
210 pub capabilities: ::core::option::Option<ModelCapabilities>,
211 #[prost(message, optional, tag = "3")]
212 pub topology: ::core::option::Option<ModelTopology>,
213 #[prost(bool, optional, tag = "4")]
214 pub capabilities_known: ::core::option::Option<bool>,
215}
216#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
217pub struct ServedModelIdentity {
218 #[prost(string, tag = "1")]
219 pub model_name: ::prost::alloc::string::String,
220 #[prost(bool, tag = "2")]
221 pub is_primary: bool,
222 #[prost(enumeration = "ModelSourceKind", tag = "3")]
223 pub source_kind: i32,
224 #[prost(string, optional, tag = "4")]
225 pub canonical_ref: ::core::option::Option<::prost::alloc::string::String>,
226 #[prost(string, optional, tag = "5")]
227 pub repository: ::core::option::Option<::prost::alloc::string::String>,
228 #[prost(string, optional, tag = "6")]
229 pub revision: ::core::option::Option<::prost::alloc::string::String>,
230 #[prost(string, optional, tag = "7")]
231 pub artifact: ::core::option::Option<::prost::alloc::string::String>,
232 #[prost(string, optional, tag = "8")]
233 pub local_file_name: ::core::option::Option<::prost::alloc::string::String>,
234 #[prost(string, optional, tag = "9")]
235 pub identity_hash: ::core::option::Option<::prost::alloc::string::String>,
236}
237#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
238pub struct ModelCapabilities {
239 #[prost(enumeration = "CapabilityLevel", tag = "1")]
240 pub vision: i32,
241 #[prost(enumeration = "CapabilityLevel", tag = "2")]
242 pub reasoning: i32,
243 #[prost(enumeration = "CapabilityLevel", tag = "3")]
244 pub tool_use: i32,
245 #[prost(bool, tag = "4")]
246 pub moe: bool,
247 #[prost(bool, tag = "5")]
248 pub multimodal: bool,
249 #[prost(enumeration = "CapabilityLevel", tag = "6")]
250 pub audio: i32,
251}
252#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
253pub struct ModelTopology {
254 #[prost(message, optional, tag = "1")]
255 pub moe: ::core::option::Option<ModelMoeInfo>,
256}
257#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
258pub struct ModelRuntimeDescriptor {
259 #[prost(string, tag = "1")]
260 pub model_name: ::prost::alloc::string::String,
261 #[prost(string, optional, tag = "2")]
262 pub identity_hash: ::core::option::Option<::prost::alloc::string::String>,
263 #[prost(uint32, optional, tag = "3")]
264 pub context_length: ::core::option::Option<u32>,
265 #[prost(bool, tag = "4")]
266 pub ready: bool,
267}
268#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
269pub struct ModelMoeInfo {
270 #[prost(uint32, tag = "1")]
271 pub expert_count: u32,
272 #[prost(uint32, tag = "2")]
273 pub used_expert_count: u32,
274 #[prost(uint32, optional, tag = "3")]
275 pub min_experts_per_node: ::core::option::Option<u32>,
276 #[prost(string, optional, tag = "4")]
277 pub source: ::core::option::Option<::prost::alloc::string::String>,
278 #[prost(string, optional, tag = "5")]
279 pub ranking_source: ::core::option::Option<::prost::alloc::string::String>,
280 #[prost(uint32, repeated, tag = "6")]
281 pub ranking: ::prost::alloc::vec::Vec<u32>,
282 #[prost(uint32, optional, tag = "7")]
283 pub ranking_prompt_count: ::core::option::Option<u32>,
284 #[prost(uint32, optional, tag = "8")]
285 pub ranking_tokens: ::core::option::Option<u32>,
286 #[prost(string, optional, tag = "9")]
287 pub ranking_layer_scope: ::core::option::Option<::prost::alloc::string::String>,
288 #[prost(string, optional, tag = "10")]
289 pub ranking_origin: ::core::option::Option<::prost::alloc::string::String>,
290}
291#[derive(Clone, PartialEq, ::prost::Message)]
292pub struct CompactModelMetadata {
293 #[prost(string, tag = "1")]
294 pub model_key: ::prost::alloc::string::String,
295 #[prost(uint32, tag = "2")]
296 pub context_length: u32,
297 #[prost(uint32, tag = "3")]
298 pub vocab_size: u32,
299 #[prost(uint32, tag = "4")]
300 pub embedding_size: u32,
301 #[prost(uint32, tag = "5")]
302 pub head_count: u32,
303 #[prost(uint32, tag = "6")]
304 pub layer_count: u32,
305 #[prost(uint32, tag = "7")]
306 pub feed_forward_length: u32,
307 #[prost(uint32, tag = "8")]
308 pub key_length: u32,
309 #[prost(uint32, tag = "9")]
310 pub value_length: u32,
311 #[prost(string, tag = "10")]
312 pub architecture: ::prost::alloc::string::String,
313 #[prost(string, tag = "11")]
314 pub tokenizer_model_name: ::prost::alloc::string::String,
315 #[prost(message, repeated, tag = "12")]
316 pub special_tokens: ::prost::alloc::vec::Vec<SpecialToken>,
317 #[prost(float, tag = "13")]
318 pub rope_scale: f32,
319 #[prost(float, tag = "14")]
320 pub rope_freq_base: f32,
321 #[prost(bool, tag = "15")]
322 pub is_moe: bool,
323 #[prost(uint32, tag = "16")]
324 pub expert_count: u32,
325 #[prost(uint32, tag = "17")]
326 pub used_expert_count: u32,
327 #[prost(string, tag = "18")]
329 pub quantization_type: ::prost::alloc::string::String,
330}
331#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
332pub struct SpecialToken {
333 #[prost(string, tag = "1")]
334 pub name: ::prost::alloc::string::String,
335 #[prost(uint32, tag = "2")]
336 pub token_id: u32,
337}
338#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
339pub struct ExpertsSummary {
340 #[prost(uint32, tag = "1")]
341 pub total_experts: u32,
342 #[prost(uint32, tag = "2")]
343 pub expert_count_used: u32,
344 #[prost(uint32, repeated, tag = "3")]
345 pub top_expert_ids: ::prost::alloc::vec::Vec<u32>,
346}
347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
348pub struct ModelDemandEntry {
349 #[prost(string, tag = "1")]
350 pub model_name: ::prost::alloc::string::String,
351 #[prost(uint64, tag = "2")]
352 pub last_active: u64,
353 #[prost(uint64, tag = "3")]
354 pub request_count: u64,
355}
356#[derive(Clone, PartialEq, ::prost::Message)]
358pub struct TunnelMap {
359 #[prost(bytes = "vec", tag = "1")]
360 pub owner_peer_id: ::prost::alloc::vec::Vec<u8>,
361 #[prost(message, repeated, tag = "2")]
362 pub entries: ::prost::alloc::vec::Vec<TunnelEntry>,
363}
364#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
365pub struct TunnelEntry {
366 #[prost(bytes = "vec", tag = "1")]
367 pub target_peer_id: ::prost::alloc::vec::Vec<u8>,
368 #[prost(bytes = "vec", optional, tag = "2")]
369 pub relay_peer_id: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
370 #[prost(uint32, tag = "3")]
371 pub tunnel_port: u32,
372}
373#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
375pub struct RouteTableRequest {
376 #[prost(bytes = "vec", tag = "1")]
378 pub requester_id: ::prost::alloc::vec::Vec<u8>,
379 #[prost(uint32, tag = "2")]
381 pub r#gen: u32,
382}
383#[derive(Clone, PartialEq, ::prost::Message)]
384pub struct RouteTable {
385 #[prost(message, repeated, tag = "1")]
386 pub entries: ::prost::alloc::vec::Vec<RouteEntry>,
387 #[prost(string, optional, tag = "2")]
389 pub mesh_id: ::core::option::Option<::prost::alloc::string::String>,
390 #[prost(uint32, tag = "3")]
392 pub r#gen: u32,
393}
394#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
395pub struct RouteEntry {
396 #[prost(bytes = "vec", tag = "1")]
398 pub endpoint_id: ::prost::alloc::vec::Vec<u8>,
399 #[prost(string, tag = "2")]
401 pub model: ::prost::alloc::string::String,
402}
403#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
405pub struct PeerDown {
406 #[prost(bytes = "vec", tag = "1")]
408 pub peer_id: ::prost::alloc::vec::Vec<u8>,
409 #[prost(uint32, tag = "2")]
411 pub r#gen: u32,
412}
413#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
415pub struct PeerLeaving {
416 #[prost(bytes = "vec", tag = "1")]
418 pub peer_id: ::prost::alloc::vec::Vec<u8>,
419 #[prost(uint32, tag = "2")]
421 pub r#gen: u32,
422}
423#[derive(Clone, PartialEq, ::prost::Message)]
424pub struct NodeConfigSnapshot {
425 #[prost(uint32, tag = "1")]
427 pub version: u32,
428 #[prost(message, optional, tag = "2")]
429 pub gpu: ::core::option::Option<NodeGpuConfig>,
430 #[prost(message, repeated, tag = "3")]
431 pub models: ::prost::alloc::vec::Vec<NodeModelEntry>,
432 #[prost(message, repeated, tag = "4")]
433 pub plugins: ::prost::alloc::vec::Vec<NodePluginEntry>,
434 #[prost(string, optional, tag = "5")]
436 pub config_toml: ::core::option::Option<::prost::alloc::string::String>,
437}
438#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
439pub struct NodeGpuConfig {
440 #[prost(enumeration = "GpuAssignment", tag = "1")]
441 pub assignment: i32,
442}
443#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
444pub struct ConfiguredModelRef {
445 #[prost(string, tag = "1")]
446 pub declared_ref: ::prost::alloc::string::String,
447 #[prost(string, optional, tag = "2")]
448 pub source_kind: ::core::option::Option<::prost::alloc::string::String>,
449 #[prost(string, optional, tag = "3")]
450 pub revision: ::core::option::Option<::prost::alloc::string::String>,
451}
452#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
453pub struct NodeModelEntry {
454 #[prost(string, tag = "1")]
455 pub model: ::prost::alloc::string::String,
456 #[prost(string, optional, tag = "2")]
457 pub mmproj: ::core::option::Option<::prost::alloc::string::String>,
458 #[prost(uint32, optional, tag = "3")]
459 pub ctx_size: ::core::option::Option<u32>,
460 #[prost(string, optional, tag = "4")]
461 pub gpu_id: ::core::option::Option<::prost::alloc::string::String>,
462 #[prost(message, optional, tag = "5")]
463 pub model_ref: ::core::option::Option<ConfiguredModelRef>,
464 #[prost(message, optional, tag = "6")]
465 pub mmproj_ref: ::core::option::Option<ConfiguredModelRef>,
466}
467#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
468pub struct NodePluginEntry {
469 #[prost(string, tag = "1")]
470 pub name: ::prost::alloc::string::String,
471 #[prost(bool, optional, tag = "2")]
472 pub enabled: ::core::option::Option<bool>,
473 #[prost(string, optional, tag = "3")]
474 pub command: ::core::option::Option<::prost::alloc::string::String>,
475 #[prost(string, repeated, tag = "4")]
476 pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
477}
478#[derive(Clone, PartialEq, ::prost::Message)]
479pub struct OwnerControlEnvelope {
480 #[prost(uint32, tag = "1")]
482 pub r#gen: u32,
483 #[prost(message, optional, tag = "2")]
484 pub handshake: ::core::option::Option<OwnerControlHandshake>,
485 #[prost(message, optional, tag = "3")]
486 pub request: ::core::option::Option<OwnerControlRequest>,
487 #[prost(message, optional, tag = "4")]
488 pub response: ::core::option::Option<OwnerControlResponse>,
489 #[prost(message, optional, tag = "5")]
490 pub error: ::core::option::Option<OwnerControlError>,
491}
492#[derive(Clone, PartialEq, ::prost::Message)]
493pub struct OwnerControlHandshake {
494 #[prost(message, optional, tag = "1")]
495 pub ownership: ::core::option::Option<SignedNodeOwnership>,
496}
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct OwnerControlRequest {
499 #[prost(uint64, tag = "1")]
500 pub request_id: u64,
501 #[prost(message, optional, tag = "2")]
502 pub get_config: ::core::option::Option<OwnerControlGetConfigRequest>,
503 #[prost(message, optional, tag = "3")]
504 pub watch_config: ::core::option::Option<OwnerControlWatchConfigRequest>,
505 #[prost(message, optional, tag = "4")]
506 pub apply_config: ::core::option::Option<OwnerControlApplyConfigRequest>,
507 #[prost(message, optional, tag = "5")]
508 pub refresh_inventory: ::core::option::Option<OwnerControlRefreshInventoryRequest>,
509}
510#[derive(Clone, PartialEq, ::prost::Message)]
511pub struct OwnerControlResponse {
512 #[prost(uint64, tag = "1")]
513 pub request_id: u64,
514 #[prost(message, optional, tag = "2")]
515 pub get_config: ::core::option::Option<OwnerControlGetConfigResponse>,
516 #[prost(message, optional, tag = "3")]
517 pub watch_config: ::core::option::Option<OwnerControlWatchConfigResponse>,
518 #[prost(message, optional, tag = "4")]
519 pub apply_config: ::core::option::Option<OwnerControlApplyConfigResponse>,
520 #[prost(message, optional, tag = "5")]
521 pub refresh_inventory: ::core::option::Option<OwnerControlRefreshInventoryResponse>,
522}
523#[derive(Clone, PartialEq, ::prost::Message)]
524pub struct OwnerControlError {
525 #[prost(enumeration = "OwnerControlErrorCode", tag = "1")]
526 pub code: i32,
527 #[prost(string, tag = "2")]
528 pub message: ::prost::alloc::string::String,
529 #[prost(uint64, optional, tag = "3")]
530 pub request_id: ::core::option::Option<u64>,
531 #[prost(uint64, optional, tag = "4")]
532 pub current_revision: ::core::option::Option<u64>,
533}
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct OwnerControlGetConfigRequest {
536 #[prost(bytes = "vec", tag = "1")]
538 pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
539 #[prost(bytes = "vec", tag = "2")]
541 pub target_node_id: ::prost::alloc::vec::Vec<u8>,
542}
543#[derive(Clone, PartialEq, ::prost::Message)]
544pub struct OwnerControlGetConfigResponse {
545 #[prost(message, optional, tag = "1")]
546 pub snapshot: ::core::option::Option<OwnerControlConfigSnapshot>,
547}
548#[derive(Clone, PartialEq, ::prost::Message)]
549pub struct OwnerControlWatchConfigRequest {
550 #[prost(bytes = "vec", tag = "1")]
552 pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
553 #[prost(bytes = "vec", tag = "2")]
555 pub target_node_id: ::prost::alloc::vec::Vec<u8>,
556 #[prost(bool, tag = "3")]
557 pub include_snapshot: bool,
558}
559#[derive(Clone, PartialEq, ::prost::Message)]
560pub struct OwnerControlWatchConfigResponse {
561 #[prost(message, optional, tag = "1")]
562 pub accepted: ::core::option::Option<OwnerControlWatchAccepted>,
563 #[prost(message, optional, tag = "2")]
564 pub snapshot: ::core::option::Option<OwnerControlConfigSnapshot>,
565 #[prost(message, optional, tag = "3")]
566 pub update: ::core::option::Option<OwnerControlConfigUpdate>,
567}
568#[derive(Clone, PartialEq, ::prost::Message)]
569pub struct OwnerControlWatchAccepted {
570 #[prost(bytes = "vec", tag = "1")]
572 pub target_node_id: ::prost::alloc::vec::Vec<u8>,
573}
574#[derive(Clone, PartialEq, ::prost::Message)]
575pub struct OwnerControlApplyConfigRequest {
576 #[prost(bytes = "vec", tag = "1")]
578 pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
579 #[prost(bytes = "vec", tag = "2")]
581 pub target_node_id: ::prost::alloc::vec::Vec<u8>,
582 #[prost(uint64, tag = "3")]
583 pub expected_revision: u64,
584 #[prost(message, optional, tag = "4")]
585 pub config: ::core::option::Option<NodeConfigSnapshot>,
586}
587#[derive(Clone, PartialEq, ::prost::Message)]
588pub struct OwnerControlApplyConfigResponse {
589 #[prost(bool, tag = "1")]
590 pub success: bool,
591 #[prost(uint64, tag = "2")]
592 pub current_revision: u64,
593 #[prost(bytes = "vec", tag = "3")]
594 pub config_hash: ::prost::alloc::vec::Vec<u8>,
595 #[prost(string, optional, tag = "4")]
596 pub error: ::core::option::Option<::prost::alloc::string::String>,
597 #[prost(enumeration = "ConfigApplyMode", tag = "5")]
598 pub apply_mode: i32,
599}
600#[derive(Clone, PartialEq, ::prost::Message)]
601pub struct OwnerControlRefreshInventoryRequest {
602 #[prost(bytes = "vec", tag = "1")]
604 pub requester_node_id: ::prost::alloc::vec::Vec<u8>,
605 #[prost(bytes = "vec", tag = "2")]
607 pub target_node_id: ::prost::alloc::vec::Vec<u8>,
608}
609#[derive(Clone, PartialEq, ::prost::Message)]
610pub struct OwnerControlRefreshInventoryResponse {
611 #[prost(message, optional, tag = "1")]
612 pub snapshot: ::core::option::Option<OwnerControlConfigSnapshot>,
613}
614#[derive(Clone, PartialEq, ::prost::Message)]
615pub struct OwnerControlConfigSnapshot {
616 #[prost(bytes = "vec", tag = "1")]
618 pub node_id: ::prost::alloc::vec::Vec<u8>,
619 #[prost(uint64, tag = "2")]
620 pub revision: u64,
621 #[prost(bytes = "vec", tag = "3")]
623 pub config_hash: ::prost::alloc::vec::Vec<u8>,
624 #[prost(message, optional, tag = "4")]
625 pub config: ::core::option::Option<NodeConfigSnapshot>,
626 #[prost(string, optional, tag = "5")]
627 pub hostname: ::core::option::Option<::prost::alloc::string::String>,
628}
629#[derive(Clone, PartialEq, ::prost::Message)]
630pub struct OwnerControlConfigUpdate {
631 #[prost(bytes = "vec", tag = "1")]
633 pub node_id: ::prost::alloc::vec::Vec<u8>,
634 #[prost(uint64, tag = "2")]
635 pub revision: u64,
636 #[prost(bytes = "vec", tag = "3")]
638 pub config_hash: ::prost::alloc::vec::Vec<u8>,
639 #[prost(message, optional, tag = "4")]
640 pub config: ::core::option::Option<NodeConfigSnapshot>,
641}
642#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
643#[repr(i32)]
644pub enum CapabilityLevel {
645 Unspecified = 0,
646 None = 1,
647 Likely = 2,
648 Supported = 3,
649}
650impl CapabilityLevel {
651 pub fn as_str_name(&self) -> &'static str {
656 match self {
657 Self::Unspecified => "CAPABILITY_LEVEL_UNSPECIFIED",
658 Self::None => "CAPABILITY_LEVEL_NONE",
659 Self::Likely => "CAPABILITY_LEVEL_LIKELY",
660 Self::Supported => "CAPABILITY_LEVEL_SUPPORTED",
661 }
662 }
663 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
665 match value {
666 "CAPABILITY_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
667 "CAPABILITY_LEVEL_NONE" => Some(Self::None),
668 "CAPABILITY_LEVEL_LIKELY" => Some(Self::Likely),
669 "CAPABILITY_LEVEL_SUPPORTED" => Some(Self::Supported),
670 _ => None,
671 }
672 }
673}
674#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
675#[repr(i32)]
676pub enum ModelSourceKind {
677 Unspecified = 0,
678 Catalog = 1,
679 HuggingFace = 2,
680 LocalGguf = 3,
681 DirectUrl = 4,
682 Unknown = 5,
683}
684impl ModelSourceKind {
685 pub fn as_str_name(&self) -> &'static str {
690 match self {
691 Self::Unspecified => "MODEL_SOURCE_KIND_UNSPECIFIED",
692 Self::Catalog => "MODEL_SOURCE_KIND_CATALOG",
693 Self::HuggingFace => "MODEL_SOURCE_KIND_HUGGING_FACE",
694 Self::LocalGguf => "MODEL_SOURCE_KIND_LOCAL_GGUF",
695 Self::DirectUrl => "MODEL_SOURCE_KIND_DIRECT_URL",
696 Self::Unknown => "MODEL_SOURCE_KIND_UNKNOWN",
697 }
698 }
699 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
701 match value {
702 "MODEL_SOURCE_KIND_UNSPECIFIED" => Some(Self::Unspecified),
703 "MODEL_SOURCE_KIND_CATALOG" => Some(Self::Catalog),
704 "MODEL_SOURCE_KIND_HUGGING_FACE" => Some(Self::HuggingFace),
705 "MODEL_SOURCE_KIND_LOCAL_GGUF" => Some(Self::LocalGguf),
706 "MODEL_SOURCE_KIND_DIRECT_URL" => Some(Self::DirectUrl),
707 "MODEL_SOURCE_KIND_UNKNOWN" => Some(Self::Unknown),
708 _ => None,
709 }
710 }
711}
712#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
714#[repr(i32)]
715pub enum NodeRole {
716 Unspecified = 0,
717 Worker = 1,
718 Host = 2,
719 Client = 3,
720}
721impl NodeRole {
722 pub fn as_str_name(&self) -> &'static str {
727 match self {
728 Self::Unspecified => "NODE_ROLE_UNSPECIFIED",
729 Self::Worker => "WORKER",
730 Self::Host => "HOST",
731 Self::Client => "CLIENT",
732 }
733 }
734 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
736 match value {
737 "NODE_ROLE_UNSPECIFIED" => Some(Self::Unspecified),
738 "WORKER" => Some(Self::Worker),
739 "HOST" => Some(Self::Host),
740 "CLIENT" => Some(Self::Client),
741 _ => None,
742 }
743 }
744}
745#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
747#[repr(i32)]
748pub enum LatencySource {
749 Unspecified = 0,
750 Direct = 1,
751 Estimated = 2,
752 Unknown = 3,
753}
754impl LatencySource {
755 pub fn as_str_name(&self) -> &'static str {
756 match self {
757 Self::Unspecified => "LATENCY_SOURCE_UNSPECIFIED",
758 Self::Direct => "DIRECT",
759 Self::Estimated => "ESTIMATED",
760 Self::Unknown => "UNKNOWN",
761 }
762 }
763 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
764 match value {
765 "LATENCY_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
766 "DIRECT" => Some(Self::Direct),
767 "ESTIMATED" => Some(Self::Estimated),
768 "UNKNOWN" => Some(Self::Unknown),
769 _ => None,
770 }
771 }
772}
773#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
774#[repr(i32)]
775pub enum GpuAssignment {
776 Unspecified = 0,
777 Auto = 1,
778 Pinned = 2,
779}
780impl GpuAssignment {
781 pub fn as_str_name(&self) -> &'static str {
786 match self {
787 Self::Unspecified => "GPU_ASSIGNMENT_UNSPECIFIED",
788 Self::Auto => "GPU_ASSIGNMENT_AUTO",
789 Self::Pinned => "GPU_ASSIGNMENT_PINNED",
790 }
791 }
792 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
794 match value {
795 "GPU_ASSIGNMENT_UNSPECIFIED" => Some(Self::Unspecified),
796 "GPU_ASSIGNMENT_AUTO" => Some(Self::Auto),
797 "GPU_ASSIGNMENT_PINNED" => Some(Self::Pinned),
798 _ => None,
799 }
800 }
801}
802#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
803#[repr(i32)]
804pub enum ConfigApplyMode {
805 Unspecified = 0,
806 Staged = 1,
807 Live = 2,
808 Noop = 3,
809}
810impl ConfigApplyMode {
811 pub fn as_str_name(&self) -> &'static str {
816 match self {
817 Self::Unspecified => "CONFIG_APPLY_MODE_UNSPECIFIED",
818 Self::Staged => "CONFIG_APPLY_MODE_STAGED",
819 Self::Live => "CONFIG_APPLY_MODE_LIVE",
820 Self::Noop => "CONFIG_APPLY_MODE_NOOP",
821 }
822 }
823 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
825 match value {
826 "CONFIG_APPLY_MODE_UNSPECIFIED" => Some(Self::Unspecified),
827 "CONFIG_APPLY_MODE_STAGED" => Some(Self::Staged),
828 "CONFIG_APPLY_MODE_LIVE" => Some(Self::Live),
829 "CONFIG_APPLY_MODE_NOOP" => Some(Self::Noop),
830 _ => None,
831 }
832 }
833}
834#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
835#[repr(i32)]
836pub enum OwnerControlErrorCode {
837 Unspecified = 0,
838 BadRequest = 1,
839 Unauthorized = 2,
840 RevisionConflict = 3,
841 ControlUnsupported = 4,
842 ControlEndpointRequired = 5,
843 ControlUnavailable = 6,
844 UnknownCommand = 7,
845 LegacyJsonUnsupported = 8,
846 InvalidHandshake = 9,
847 TargetNodeMismatch = 10,
848}
849impl OwnerControlErrorCode {
850 pub fn as_str_name(&self) -> &'static str {
851 match self {
852 Self::Unspecified => "OWNER_CONTROL_ERROR_CODE_UNSPECIFIED",
853 Self::BadRequest => "OWNER_CONTROL_ERROR_CODE_BAD_REQUEST",
854 Self::Unauthorized => "OWNER_CONTROL_ERROR_CODE_UNAUTHORIZED",
855 Self::RevisionConflict => "OWNER_CONTROL_ERROR_CODE_REVISION_CONFLICT",
856 Self::ControlUnsupported => "OWNER_CONTROL_ERROR_CODE_CONTROL_UNSUPPORTED",
857 Self::ControlEndpointRequired => "OWNER_CONTROL_ERROR_CODE_CONTROL_ENDPOINT_REQUIRED",
858 Self::ControlUnavailable => "OWNER_CONTROL_ERROR_CODE_CONTROL_UNAVAILABLE",
859 Self::UnknownCommand => "OWNER_CONTROL_ERROR_CODE_UNKNOWN_COMMAND",
860 Self::LegacyJsonUnsupported => "OWNER_CONTROL_ERROR_CODE_LEGACY_JSON_UNSUPPORTED",
861 Self::InvalidHandshake => "OWNER_CONTROL_ERROR_CODE_INVALID_HANDSHAKE",
862 Self::TargetNodeMismatch => "OWNER_CONTROL_ERROR_CODE_TARGET_NODE_MISMATCH",
863 }
864 }
865 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
866 match value {
867 "OWNER_CONTROL_ERROR_CODE_UNSPECIFIED" => Some(Self::Unspecified),
868 "OWNER_CONTROL_ERROR_CODE_BAD_REQUEST" => Some(Self::BadRequest),
869 "OWNER_CONTROL_ERROR_CODE_UNAUTHORIZED" => Some(Self::Unauthorized),
870 "OWNER_CONTROL_ERROR_CODE_REVISION_CONFLICT" => Some(Self::RevisionConflict),
871 "OWNER_CONTROL_ERROR_CODE_CONTROL_UNSUPPORTED" => Some(Self::ControlUnsupported),
872 "OWNER_CONTROL_ERROR_CODE_CONTROL_ENDPOINT_REQUIRED" => {
873 Some(Self::ControlEndpointRequired)
874 }
875 "OWNER_CONTROL_ERROR_CODE_CONTROL_UNAVAILABLE" => Some(Self::ControlUnavailable),
876 "OWNER_CONTROL_ERROR_CODE_UNKNOWN_COMMAND" => Some(Self::UnknownCommand),
877 "OWNER_CONTROL_ERROR_CODE_LEGACY_JSON_UNSUPPORTED" => Some(Self::LegacyJsonUnsupported),
878 "OWNER_CONTROL_ERROR_CODE_INVALID_HANDSHAKE" => Some(Self::InvalidHandshake),
879 "OWNER_CONTROL_ERROR_CODE_TARGET_NODE_MISMATCH" => Some(Self::TargetNodeMismatch),
880 _ => None,
881 }
882 }
883}