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}