fn components(&self) -> Option<String> {
        self.components.as_ref().and_then(|components| {
            if components.is_empty() {
                return None;
            }
            Some(components.join(","))
        })
    }
Returns the components as a comma-separated string.
zkstack_cli/crates/common/src/server.rs