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