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(
80 "ldp.context_window".into(),
81 self.context_window.to_string(),
82 );
83
84 if let Some(ref fp) = self.weights_fingerprint {
85 labels.insert("ldp.weights_fingerprint".into(), fp.clone());
86 }
87 if let Some(ref rp) = self.reasoning_profile {
88 labels.insert("ldp.reasoning_profile".into(), rp.clone());
89 }
90 if let Some(ref cp) = self.cost_profile {
91 labels.insert("ldp.cost_profile".into(), cp.clone());
92 }
93 if let Some(ref lp) = self.latency_profile {
94 labels.insert("ldp.latency_profile".into(), lp.clone());
95 }
96 if let Some(ref j) = self.jurisdiction {
97 labels.insert("ldp.jurisdiction".into(), j.clone());
98 }
99
100 let modes: Vec<String> = self
102 .supported_payload_modes
103 .iter()
104 .map(|m| m.to_string())
105 .collect();
106 labels.insert("ldp.payload_modes".into(), modes.join(","));
107
108 labels
109 }
110}