runx_contracts/
execution.rs1use serde::{Deserialize, Serialize};
3
4use crate::{JsonObject, JsonValue};
5
6#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "snake_case")]
8pub enum GovernedDisposition {
9 Completed,
10 NeedsAgent,
11 PolicyDenied,
12 ApprovalRequired,
13 Observing,
14 Escalated,
15}
16
17#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
18#[serde(rename_all = "snake_case")]
19pub enum OutcomeState {
20 Pending,
21 Complete,
22 Expired,
23}
24
25#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
26#[serde(deny_unknown_fields)]
27pub struct ReceiptOutcome {
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub code: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub summary: Option<String>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub observed_at: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub data: Option<JsonObject>,
36}
37
38#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
39#[serde(deny_unknown_fields)]
40pub struct ReceiptSurfaceRef {
41 #[serde(rename = "type")]
42 pub surface_type: String,
43 pub uri: String,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub label: Option<String>,
46}
47
48#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
49#[serde(deny_unknown_fields)]
50pub struct InputContextCapture {
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub capture: Option<bool>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub source: Option<String>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub max_bytes: Option<u64>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub snapshot: Option<JsonValue>,
59}
60
61#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
62#[serde(deny_unknown_fields)]
63pub struct ExecutionSemantics {
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub disposition: Option<GovernedDisposition>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub outcome_state: Option<OutcomeState>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub outcome: Option<ReceiptOutcome>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub input_context: Option<InputContextCapture>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub surface_refs: Option<Vec<ReceiptSurfaceRef>>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub evidence_refs: Option<Vec<ReceiptSurfaceRef>>,
76}