use serde::{Deserialize, Serialize}; use crate::NodeArtifactFile; /// Top-level cfgsync bundle containing per-node file payloads. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct NodeArtifactsBundle { pub nodes: Vec, } impl NodeArtifactsBundle { #[must_use] pub fn new(nodes: Vec) -> Self { Self { nodes } } } /// Artifact set for a single node resolved by identifier. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct NodeArtifactsBundleEntry { /// Stable node identifier used by cfgsync lookup. pub identifier: String, /// Files that should be materialized for the node. #[serde(default)] pub files: Vec, }