Skip to main content

gproxy_protocol/aws/converse/trace/automated_reasoning/
findings.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::aws::{EmptyObject, Rest};
5
6use super::types::{
7    GuardrailAutomatedReasoningLogicWarning, GuardrailAutomatedReasoningRule,
8    GuardrailAutomatedReasoningScenario, GuardrailAutomatedReasoningTranslation,
9    GuardrailAutomatedReasoningTranslationOption,
10};
11
12#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
13#[serde(untagged)]
14#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
15pub enum GuardrailAutomatedReasoningFinding {
16    Impossible {
17        impossible: GuardrailAutomatedReasoningImpossibleFinding,
18        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
19        rest: Rest,
20    },
21    Invalid {
22        invalid: GuardrailAutomatedReasoningInvalidFinding,
23        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
24        rest: Rest,
25    },
26    NoTranslations {
27        #[serde(rename = "noTranslations")]
28        no_translations: GuardrailAutomatedReasoningNoTranslationsFinding,
29        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
30        rest: Rest,
31    },
32    Satisfiable {
33        satisfiable: GuardrailAutomatedReasoningSatisfiableFinding,
34        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
35        rest: Rest,
36    },
37    TooComplex {
38        #[serde(rename = "tooComplex")]
39        too_complex: GuardrailAutomatedReasoningTooComplexFinding,
40        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
41        rest: Rest,
42    },
43    TranslationAmbiguous {
44        #[serde(rename = "translationAmbiguous")]
45        translation_ambiguous: GuardrailAutomatedReasoningTranslationAmbiguousFinding,
46        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
47        rest: Rest,
48    },
49    Valid {
50        valid: GuardrailAutomatedReasoningValidFinding,
51        #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
52        rest: Rest,
53    },
54    Raw(Value),
55}
56
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
58#[serde(rename_all = "camelCase")]
59#[derive(gproxy_protocol_macros::WireBuilder)]
60#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
61pub struct GuardrailAutomatedReasoningImpossibleFinding {
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub contradicting_rules: Option<Vec<GuardrailAutomatedReasoningRule>>,
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub logic_warning: Option<GuardrailAutomatedReasoningLogicWarning>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub translation: Option<GuardrailAutomatedReasoningTranslation>,
68    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
69    pub rest: Rest,
70}
71
72#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
73#[serde(rename_all = "camelCase")]
74#[derive(gproxy_protocol_macros::WireBuilder)]
75#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
76pub struct GuardrailAutomatedReasoningInvalidFinding {
77    #[serde(skip_serializing_if = "Option::is_none")]
78    pub contradicting_rules: Option<Vec<GuardrailAutomatedReasoningRule>>,
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub logic_warning: Option<GuardrailAutomatedReasoningLogicWarning>,
81    #[serde(skip_serializing_if = "Option::is_none")]
82    pub translation: Option<GuardrailAutomatedReasoningTranslation>,
83    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
84    pub rest: Rest,
85}
86
87pub type GuardrailAutomatedReasoningNoTranslationsFinding = EmptyObject;
88pub type GuardrailAutomatedReasoningTooComplexFinding = EmptyObject;
89
90#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
91#[serde(rename_all = "camelCase")]
92#[derive(gproxy_protocol_macros::WireBuilder)]
93#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
94pub struct GuardrailAutomatedReasoningSatisfiableFinding {
95    #[serde(skip_serializing_if = "Option::is_none")]
96    pub claims_false_scenario: Option<GuardrailAutomatedReasoningScenario>,
97    #[serde(skip_serializing_if = "Option::is_none")]
98    pub claims_true_scenario: Option<GuardrailAutomatedReasoningScenario>,
99    #[serde(skip_serializing_if = "Option::is_none")]
100    pub logic_warning: Option<GuardrailAutomatedReasoningLogicWarning>,
101    #[serde(skip_serializing_if = "Option::is_none")]
102    pub translation: Option<GuardrailAutomatedReasoningTranslation>,
103    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
104    pub rest: Rest,
105}
106
107#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
108#[serde(rename_all = "camelCase")]
109#[derive(gproxy_protocol_macros::WireBuilder)]
110#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
111pub struct GuardrailAutomatedReasoningTranslationAmbiguousFinding {
112    #[serde(skip_serializing_if = "Option::is_none")]
113    pub difference_scenarios: Option<Vec<GuardrailAutomatedReasoningScenario>>,
114    #[serde(skip_serializing_if = "Option::is_none")]
115    pub options: Option<Vec<GuardrailAutomatedReasoningTranslationOption>>,
116    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
117    pub rest: Rest,
118}
119
120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
121#[serde(rename_all = "camelCase")]
122#[derive(gproxy_protocol_macros::WireBuilder)]
123#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
124pub struct GuardrailAutomatedReasoningValidFinding {
125    #[serde(skip_serializing_if = "Option::is_none")]
126    pub claims_true_scenario: Option<GuardrailAutomatedReasoningScenario>,
127    #[serde(skip_serializing_if = "Option::is_none")]
128    pub logic_warning: Option<GuardrailAutomatedReasoningLogicWarning>,
129    #[serde(skip_serializing_if = "Option::is_none")]
130    pub supporting_rules: Option<Vec<GuardrailAutomatedReasoningRule>>,
131    #[serde(skip_serializing_if = "Option::is_none")]
132    pub translation: Option<GuardrailAutomatedReasoningTranslation>,
133    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
134    pub rest: Rest,
135}