1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::super::{ComputerUseEnvironment, DynamicRetrievalMode, ExtraFields};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8#[serde(rename_all = "camelCase")]
9#[derive(gproxy_protocol_macros::WireBuilder)]
10#[non_exhaustive]
11pub struct GoogleSearchRetrieval {
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub dynamic_retrieval_config: Option<DynamicRetrievalConfig>,
14 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
15 pub extra: ExtraFields,
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
19#[serde(rename_all = "camelCase")]
20#[derive(gproxy_protocol_macros::WireBuilder)]
21#[non_exhaustive]
22pub struct DynamicRetrievalConfig {
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub mode: Option<DynamicRetrievalMode>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub dynamic_threshold: Option<f64>,
27 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
28 pub extra: ExtraFields,
29}
30
31#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
32#[serde(rename_all = "camelCase")]
33#[derive(gproxy_protocol_macros::WireBuilder)]
34#[non_exhaustive]
35pub struct GoogleSearch {
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub time_range_filter: Option<Interval>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub search_types: Option<SearchTypes>,
40 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
41 pub extra: ExtraFields,
42}
43
44#[derive(
45 Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
46)]
47#[non_exhaustive]
48pub struct CodeExecution {}
49
50#[derive(
51 Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
52)]
53#[non_exhaustive]
54pub struct UrlContext {}
55
56#[derive(
57 Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
58)]
59#[non_exhaustive]
60pub struct WebSearch {}
61
62#[derive(
63 Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
64)]
65#[non_exhaustive]
66pub struct ImageSearch {}
67
68#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
69#[serde(rename_all = "camelCase")]
70#[derive(gproxy_protocol_macros::WireBuilder)]
71#[non_exhaustive]
72pub struct Interval {
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub start_time: Option<String>,
75 #[serde(skip_serializing_if = "Option::is_none")]
76 pub end_time: Option<String>,
77 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
78 pub extra: ExtraFields,
79}
80
81#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
82#[serde(rename_all = "camelCase")]
83#[derive(gproxy_protocol_macros::WireBuilder)]
84#[non_exhaustive]
85pub struct SearchTypes {
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub web_search: Option<WebSearch>,
88 #[serde(skip_serializing_if = "Option::is_none")]
89 pub image_search: Option<ImageSearch>,
90 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
91 pub extra: ExtraFields,
92}
93
94#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
95#[serde(rename_all = "camelCase")]
96#[derive(gproxy_protocol_macros::WireBuilder)]
97#[non_exhaustive]
98pub struct ComputerUse {
99 #[serde(skip_serializing_if = "Option::is_none")]
100 pub environment: Option<ComputerUseEnvironment>,
101 #[serde(default, skip_serializing_if = "Vec::is_empty")]
102 pub excluded_predefined_functions: Vec<String>,
103 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
104 pub extra: ExtraFields,
105}
106
107#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
108#[serde(rename_all = "camelCase")]
109#[derive(gproxy_protocol_macros::WireBuilder)]
110#[non_exhaustive]
111pub struct FileSearch {
112 #[serde(default, skip_serializing_if = "Vec::is_empty")]
113 pub file_search_store_names: Vec<String>,
114 #[serde(skip_serializing_if = "Option::is_none")]
115 pub metadata_filter: Option<String>,
116 #[serde(skip_serializing_if = "Option::is_none")]
117 pub top_k: Option<i32>,
118 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
119 pub extra: ExtraFields,
120}
121
122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
123#[serde(rename_all = "camelCase")]
124#[derive(gproxy_protocol_macros::WireBuilder)]
125#[non_exhaustive]
126pub struct McpServer {
127 #[serde(skip_serializing_if = "Option::is_none")]
128 pub name: Option<String>,
129 #[serde(skip_serializing_if = "Option::is_none")]
130 pub streamable_http_transport: Option<StreamableHttpTransport>,
131 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
132 pub extra: ExtraFields,
133}
134
135#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
136#[serde(rename_all = "camelCase")]
137#[derive(gproxy_protocol_macros::WireBuilder)]
138#[non_exhaustive]
139pub struct StreamableHttpTransport {
140 #[serde(skip_serializing_if = "Option::is_none")]
141 pub url: Option<String>,
142 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
143 pub headers: BTreeMap<String, String>,
144 #[serde(skip_serializing_if = "Option::is_none")]
145 pub timeout: Option<String>,
146 #[serde(skip_serializing_if = "Option::is_none")]
147 pub sse_read_timeout: Option<String>,
148 #[serde(skip_serializing_if = "Option::is_none")]
149 pub terminate_on_close: Option<bool>,
150 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
151 pub extra: ExtraFields,
152}
153
154#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
155#[serde(rename_all = "camelCase")]
156#[derive(gproxy_protocol_macros::WireBuilder)]
157#[non_exhaustive]
158pub struct GoogleMaps {
159 #[serde(skip_serializing_if = "Option::is_none")]
160 pub enable_widget: Option<bool>,
161 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
162 pub extra: ExtraFields,
163}
164
165#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
166#[serde(rename_all = "camelCase")]
167#[derive(gproxy_protocol_macros::WireBuilder)]
168#[non_exhaustive]
169pub struct RetrievalConfig {
170 #[serde(skip_serializing_if = "Option::is_none")]
171 pub lat_lng: Option<LatLng>,
172 #[serde(skip_serializing_if = "Option::is_none")]
173 pub language_code: Option<String>,
174 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
175 pub extra: ExtraFields,
176}
177
178#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
179#[serde(rename_all = "camelCase")]
180#[derive(gproxy_protocol_macros::WireBuilder)]
181#[non_exhaustive]
182pub struct LatLng {
183 #[serde(skip_serializing_if = "Option::is_none")]
184 pub latitude: Option<f64>,
185 #[serde(skip_serializing_if = "Option::is_none")]
186 pub longitude: Option<f64>,
187 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
188 pub extra: ExtraFields,
189}