Skip to main content

gproxy_protocol/protocol/openai/generate_content/response_tools/
runtime.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::super::super::common::*;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8#[serde(untagged)]
9#[non_exhaustive]
10pub enum CodeInterpreterContainer {
11    Id(String),
12    Auto(CodeInterpreterAutoContainer),
13}
14
15#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
16#[non_exhaustive]
17pub struct CodeInterpreterAutoContainer {
18    #[serde(rename = "type")]
19    pub type_: CodeInterpreterContainerType,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub file_ids: Option<Vec<String>>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub memory_limit: Option<CodeInterpreterMemoryLimit>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub network_policy: Option<CodeInterpreterNetworkPolicy>,
26    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
27    pub extra: Extra,
28}
29
30#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
31#[serde(tag = "type")]
32#[non_exhaustive]
33pub enum CodeInterpreterNetworkPolicy {
34    #[serde(rename = "disabled")]
35    Disabled {
36        #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
37        extra: Extra,
38    },
39    #[serde(rename = "allowlist")]
40    Allowlist {
41        allowed_domains: Vec<String>,
42        #[serde(skip_serializing_if = "Option::is_none")]
43        domain_secrets: Option<Vec<CodeInterpreterDomainSecret>>,
44        #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
45        extra: Extra,
46    },
47}
48
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
50#[non_exhaustive]
51pub struct CodeInterpreterDomainSecret {
52    pub domain: String,
53    pub name: String,
54    pub value: String,
55    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
56    pub extra: Extra,
57}
58
59#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
60#[non_exhaustive]
61pub struct ImageMask {
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub file_id: Option<String>,
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub image_url: Option<String>,
66    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
67    pub extra: Extra,
68}
69
70#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
71#[serde(tag = "type")]
72#[non_exhaustive]
73pub enum ResponseShellEnvironment {
74    #[serde(rename = "container_auto")]
75    ContainerAuto {
76        #[serde(skip_serializing_if = "Option::is_none")]
77        file_ids: Option<Vec<String>>,
78        #[serde(skip_serializing_if = "Option::is_none")]
79        memory_limit: Option<CodeInterpreterMemoryLimit>,
80        #[serde(skip_serializing_if = "Option::is_none")]
81        network_policy: Option<CodeInterpreterNetworkPolicy>,
82        #[serde(skip_serializing_if = "Option::is_none")]
83        skills: Option<Vec<ResponseShellContainerSkill>>,
84    },
85    #[serde(rename = "local")]
86    Local {
87        #[serde(skip_serializing_if = "Option::is_none")]
88        skills: Option<Vec<ResponseShellLocalSkill>>,
89    },
90    #[serde(rename = "container_reference")]
91    ContainerReference { container_id: String },
92}
93
94#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
95#[serde(untagged)]
96#[non_exhaustive]
97pub enum ResponseShellContainerSkill {
98    Reference(ResponseShellSkillReference),
99    Inline(ResponseShellInlineSkill),
100}
101
102#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
103#[non_exhaustive]
104pub struct ResponseShellSkillReference {
105    pub skill_id: String,
106    #[serde(rename = "type")]
107    pub type_: ResponseShellSkillReferenceType,
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub version: Option<String>,
110    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
111    pub extra: Extra,
112}
113
114#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
115#[non_exhaustive]
116pub enum ResponseShellSkillReferenceType {
117    #[serde(rename = "skill_reference")]
118    SkillReference,
119}
120
121#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
122#[non_exhaustive]
123pub struct ResponseShellInlineSkill {
124    pub description: String,
125    pub name: String,
126    pub source: ResponseShellInlineSkillSource,
127    #[serde(rename = "type")]
128    pub type_: ResponseShellInlineSkillType,
129    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
130    pub extra: Extra,
131}
132
133#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
134#[non_exhaustive]
135pub enum ResponseShellInlineSkillType {
136    #[serde(rename = "inline")]
137    Inline,
138}
139
140#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
141#[non_exhaustive]
142pub struct ResponseShellInlineSkillSource {
143    pub data: String,
144    pub media_type: ResponseShellInlineSkillMediaType,
145    #[serde(rename = "type")]
146    pub type_: ResponseShellInlineSkillSourceType,
147    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
148    pub extra: Extra,
149}
150
151#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
152#[non_exhaustive]
153pub enum ResponseShellInlineSkillMediaType {
154    #[serde(rename = "application/zip")]
155    ApplicationZip,
156}
157
158#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
159#[non_exhaustive]
160pub enum ResponseShellInlineSkillSourceType {
161    #[serde(rename = "base64")]
162    Base64,
163}
164
165#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
166#[non_exhaustive]
167pub struct ResponseShellLocalSkill {
168    pub description: String,
169    pub name: String,
170    pub path: String,
171    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
172    pub extra: Extra,
173}
174
175#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
176#[non_exhaustive]
177pub enum SearchContentType {
178    #[serde(rename = "text")]
179    Text,
180    #[serde(rename = "image")]
181    Image,
182}
183
184#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
185#[non_exhaustive]
186pub struct WebSearchPreviewUserLocation {
187    #[serde(rename = "type")]
188    pub type_: ApproximateLocationType,
189    #[serde(skip_serializing_if = "Option::is_none")]
190    pub city: Option<String>,
191    #[serde(skip_serializing_if = "Option::is_none")]
192    pub country: Option<String>,
193    #[serde(skip_serializing_if = "Option::is_none")]
194    pub region: Option<String>,
195    #[serde(skip_serializing_if = "Option::is_none")]
196    pub timezone: Option<String>,
197    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
198    pub extra: Extra,
199}