Skip to main content

ahri_tre_protocol/
readiness.rs

1use crate::version::ProtocolCompatibility;
2use serde::{Deserialize, Serialize};
3
4/// Request daemon build identity and protocol compatibility.
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
6pub struct DaemonVersionRequest {}
7
8/// Request daemon readiness diagnostics.
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
10pub struct DaemonDoctorRequest {}
11
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13pub struct DaemonVersionResponse {
14    pub daemon: DaemonBuildIdentity,
15    pub protocol: ProtocolCompatibility,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
19pub struct DaemonBuildIdentity {
20    pub package_name: String,
21    pub package_version: String,
22    pub target_triple: String,
23    pub build_profile: String,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub commit_sha: Option<String>,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub build_timestamp: Option<String>,
28}
29
30#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
31pub struct DaemonDoctorResponse {
32    pub status: DaemonReadinessStatus,
33    pub summary: DaemonReadinessSummary,
34    pub protocol: ProtocolCompatibility,
35    pub checks: Vec<DaemonReadinessCheck>,
36    /// Optional owner-scoped evidence; excluded from local readiness aggregation.
37    #[serde(default, skip_serializing_if = "Vec::is_empty")]
38    pub adapter_observations: Vec<DaemonReadinessCheck>,
39}
40
41#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
42#[serde(rename_all = "snake_case")]
43pub enum DaemonReadinessStatus {
44    Ready,
45    Degraded,
46    Unready,
47    Unknown,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
51pub struct DaemonReadinessSummary {
52    pub total: u32,
53    pub passed: u32,
54    pub warnings: u32,
55    pub failed: u32,
56    pub skipped: u32,
57}
58
59pub use crate::diagnostics::{
60    DiagnosticEvidence as DaemonReadinessEvidence, DiagnosticFinding as DaemonReadinessCheck,
61    DiagnosticFindingSeverity as DaemonReadinessCheckSeverity,
62    DiagnosticFindingStatus as DaemonReadinessCheckStatus,
63};