switchyard_translation/
policy.rs1use serde::{Deserialize, Serialize};
7
8use crate::format::FormatId;
9
10#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
12pub enum UnknownFieldPolicy {
13 Preserve,
14 DropWithWarning,
15 Reject,
16}
17
18#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
20pub enum LossyConversionPolicy {
21 AllowWithDiagnostics,
22 Reject,
23}
24
25#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
27pub enum DeterministicIdPolicy {
28 Preserve,
29 GenerateStable { prefix: String },
30}
31
32#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
34pub enum PreservationPolicy {
35 InMemory,
37 Embed,
42 Disabled,
44}
45
46#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
48pub struct TargetCapabilities {
49 pub supports_tools: Option<bool>,
50 pub supports_images: Option<bool>,
51 pub supports_audio: Option<bool>,
52 pub supports_video: Option<bool>,
53 pub supports_files: Option<bool>,
54 pub supports_reasoning_effort: Option<bool>,
55 pub supports_json_schema_response_format: Option<bool>,
56 pub supports_parallel_tool_calls: Option<bool>,
57 pub supports_code_execution: Option<bool>,
58 pub supports_safety_settings: Option<bool>,
59 pub openai_compatible: Option<bool>,
60}
61
62#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
64pub struct ProviderProfile {
65 pub format: Option<FormatId>,
66 pub provider: Option<String>,
67 pub capabilities: TargetCapabilities,
68}
69
70#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
72pub struct TranslationPolicy {
73 pub unknown_field_policy: UnknownFieldPolicy,
74 pub lossy_conversion_policy: LossyConversionPolicy,
75 pub deterministic_ids: DeterministicIdPolicy,
76 pub preservation: PreservationPolicy,
77 pub target_capabilities: TargetCapabilities,
78}
79
80impl Default for TranslationPolicy {
81 fn default() -> Self {
82 Self {
83 unknown_field_policy: UnknownFieldPolicy::Preserve,
84 lossy_conversion_policy: LossyConversionPolicy::AllowWithDiagnostics,
85 deterministic_ids: DeterministicIdPolicy::GenerateStable {
86 prefix: "sw".to_string(),
87 },
88 preservation: PreservationPolicy::InMemory,
89 target_capabilities: TargetCapabilities::default(),
90 }
91 }
92}