ldp_protocol/types/
identity.rs1use crate::types::capability::LdpCapability;
7use crate::types::payload::PayloadMode;
8use crate::types::trust::TrustDomain;
9use serde::{Deserialize, Serialize};
10use std::collections::HashMap;
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct LdpIdentityCard {
19 pub delegate_id: String,
21
22 pub name: String,
24
25 pub description: Option<String>,
27
28 pub model_family: String,
30
31 pub model_version: String,
33
34 pub weights_fingerprint: Option<String>,
36
37 pub trust_domain: TrustDomain,
39
40 pub context_window: u64,
42
43 pub reasoning_profile: Option<String>,
45
46 pub cost_profile: Option<String>,
48
49 pub latency_profile: Option<String>,
51
52 pub jurisdiction: Option<String>,
54
55 pub capabilities: Vec<LdpCapability>,
57
58 pub supported_payload_modes: Vec<PayloadMode>,
60
61 pub endpoint: String,
63
64 #[serde(default)]
66 pub metadata: HashMap<String, String>,
67}
68
69impl LdpIdentityCard {
70 pub fn to_labels(&self) -> HashMap<String, String> {
74 let mut labels = HashMap::new();
75 labels.insert("ldp.delegate_id".into(), self.delegate_id.clone());
76 labels.insert("ldp.model_family".into(), self.model_family.clone());
77 labels.insert("ldp.model_version".into(), self.model_version.clone());
78 labels.insert("ldp.trust_domain".into(), self.trust_domain.name.clone());
79 labels.insert("ldp.context_window".into(), self.context_window.to_string());
80
81 if let Some(ref fp) = self.weights_fingerprint {
82 labels.insert("ldp.weights_fingerprint".into(), fp.clone());
83 }
84 if let Some(ref rp) = self.reasoning_profile {
85 labels.insert("ldp.reasoning_profile".into(), rp.clone());
86 }
87 if let Some(ref cp) = self.cost_profile {
88 labels.insert("ldp.cost_profile".into(), cp.clone());
89 }
90 if let Some(ref lp) = self.latency_profile {
91 labels.insert("ldp.latency_profile".into(), lp.clone());
92 }
93 if let Some(ref j) = self.jurisdiction {
94 labels.insert("ldp.jurisdiction".into(), j.clone());
95 }
96
97 let modes: Vec<String> = self
99 .supported_payload_modes
100 .iter()
101 .map(|m| m.to_string())
102 .collect();
103 labels.insert("ldp.payload_modes".into(), modes.join(","));
104
105 labels
106 }
107}