gproxy_protocol/aws/converse/trace/automated_reasoning/
findings.rs1use 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}