mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-06 17:37:47 +08:00
118 lines
5.0 KiB
Rust
118 lines
5.0 KiB
Rust
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
#[allow(clippy::enum_variant_names)]
|
|
pub enum AiCandidatePersistencePolicyKind {
|
|
StandardDecision,
|
|
SameFormatProviderDecision,
|
|
OpenAiChatDecision,
|
|
OpenAiResponsesDecision,
|
|
ImageDecision,
|
|
GeminiFilesDecision,
|
|
VideoDecision,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
pub struct AiCandidatePersistencePolicySpec {
|
|
pub available_error_context: &'static str,
|
|
pub skipped_error_context: &'static str,
|
|
pub record_runtime_miss_diagnostic: bool,
|
|
}
|
|
|
|
pub fn ai_candidate_persistence_policy_spec(
|
|
kind: AiCandidatePersistencePolicyKind,
|
|
) -> AiCandidatePersistencePolicySpec {
|
|
match kind {
|
|
AiCandidatePersistencePolicyKind::StandardDecision => AiCandidatePersistencePolicySpec {
|
|
available_error_context:
|
|
"gateway local standard decision request candidate upsert failed",
|
|
skipped_error_context:
|
|
"gateway local standard decision failed to persist skipped candidate",
|
|
record_runtime_miss_diagnostic: true,
|
|
},
|
|
AiCandidatePersistencePolicyKind::SameFormatProviderDecision => {
|
|
AiCandidatePersistencePolicySpec {
|
|
available_error_context:
|
|
"gateway local same-format decision request candidate upsert failed",
|
|
skipped_error_context:
|
|
"gateway local same-format decision failed to persist skipped candidate",
|
|
record_runtime_miss_diagnostic: true,
|
|
}
|
|
}
|
|
AiCandidatePersistencePolicyKind::OpenAiChatDecision => AiCandidatePersistencePolicySpec {
|
|
available_error_context:
|
|
"gateway local openai chat decision request candidate upsert failed",
|
|
skipped_error_context:
|
|
"gateway local openai chat decision failed to persist skipped candidate",
|
|
record_runtime_miss_diagnostic: true,
|
|
},
|
|
AiCandidatePersistencePolicyKind::OpenAiResponsesDecision => {
|
|
AiCandidatePersistencePolicySpec {
|
|
available_error_context:
|
|
"gateway local openai responses decision request candidate upsert failed",
|
|
skipped_error_context:
|
|
"gateway local openai responses decision failed to persist skipped candidate",
|
|
record_runtime_miss_diagnostic: true,
|
|
}
|
|
}
|
|
AiCandidatePersistencePolicyKind::ImageDecision => AiCandidatePersistencePolicySpec {
|
|
available_error_context:
|
|
"gateway local openai image decision request candidate upsert failed",
|
|
skipped_error_context:
|
|
"gateway local openai image decision failed to persist skipped candidate",
|
|
record_runtime_miss_diagnostic: false,
|
|
},
|
|
AiCandidatePersistencePolicyKind::GeminiFilesDecision => AiCandidatePersistencePolicySpec {
|
|
available_error_context: "gateway local gemini files request candidate upsert failed",
|
|
skipped_error_context: "gateway local gemini files failed to persist skipped candidate",
|
|
record_runtime_miss_diagnostic: false,
|
|
},
|
|
AiCandidatePersistencePolicyKind::VideoDecision => AiCandidatePersistencePolicySpec {
|
|
available_error_context: "gateway local video decision request candidate upsert failed",
|
|
skipped_error_context:
|
|
"gateway local video decision failed to persist skipped candidate",
|
|
record_runtime_miss_diagnostic: false,
|
|
},
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn decision_policies_define_candidate_persistence_side_effects() {
|
|
let standard = ai_candidate_persistence_policy_spec(
|
|
AiCandidatePersistencePolicyKind::StandardDecision,
|
|
);
|
|
assert_eq!(
|
|
standard.available_error_context,
|
|
"gateway local standard decision request candidate upsert failed"
|
|
);
|
|
assert_eq!(
|
|
standard.skipped_error_context,
|
|
"gateway local standard decision failed to persist skipped candidate"
|
|
);
|
|
assert!(standard.record_runtime_miss_diagnostic);
|
|
|
|
let same_format = ai_candidate_persistence_policy_spec(
|
|
AiCandidatePersistencePolicyKind::SameFormatProviderDecision,
|
|
);
|
|
assert_eq!(
|
|
same_format.available_error_context,
|
|
"gateway local same-format decision request candidate upsert failed"
|
|
);
|
|
assert_eq!(
|
|
same_format.skipped_error_context,
|
|
"gateway local same-format decision failed to persist skipped candidate"
|
|
);
|
|
assert!(same_format.record_runtime_miss_diagnostic);
|
|
|
|
let image =
|
|
ai_candidate_persistence_policy_spec(AiCandidatePersistencePolicyKind::ImageDecision);
|
|
assert_eq!(
|
|
image.available_error_context,
|
|
"gateway local openai image decision request candidate upsert failed"
|
|
);
|
|
assert!(!image.record_runtime_miss_diagnostic);
|
|
}
|
|
}
|