Skip to main content

cpex_core/extensions/
provenance.rs

1// Location: ./crates/cpex-core/src/extensions/provenance.rs
2// Copyright 2025
3// SPDX-License-Identifier: Apache-2.0
4// Authors: Teryl Taylor
5//
6// ProvenanceExtension — origin and message threading.
7// Mirrors cpex/framework/extensions/provenance.py.
8
9use serde::{Deserialize, Serialize};
10
11/// Origin and message threading.
12///
13/// Immutable — set by the host.
14#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct ProvenanceExtension {
16    /// Source system or service.
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub source: Option<String>,
19
20    /// Unique message identifier.
21    #[serde(default, skip_serializing_if = "Option::is_none")]
22    pub message_id: Option<String>,
23
24    /// Parent message ID (for threading).
25    #[serde(default, skip_serializing_if = "Option::is_none")]
26    pub parent_id: Option<String>,
27}