@@ -157,14 +157,16 @@ fn strip_total_output_header(output: &str) -> Option<(&str, u32)> {
157157}
158158
159159pub ( crate ) mod tools {
160- use crate :: tools:: spec:: JsonSchema ;
161160 use codex_protocol:: config_types:: WebSearchContextSize ;
162161 use codex_protocol:: config_types:: WebSearchFilters as ConfigWebSearchFilters ;
163162 use codex_protocol:: config_types:: WebSearchUserLocation as ConfigWebSearchUserLocation ;
164163 use codex_protocol:: config_types:: WebSearchUserLocationType ;
165- use serde:: Deserialize ;
164+ pub ( crate ) use codex_tools:: FreeformTool ;
165+ pub ( crate ) use codex_tools:: FreeformToolFormat ;
166+ use codex_tools:: JsonSchema ;
167+ pub ( crate ) use codex_tools:: ResponsesApiTool ;
168+ pub ( crate ) use codex_tools:: ToolSearchOutputTool ;
166169 use serde:: Serialize ;
167- use serde_json:: Value ;
168170
169171 /// When serialized as JSON, this produces a valid "Tool" in the OpenAI
170172 /// Responses API.
@@ -256,59 +258,6 @@ pub(crate) mod tools {
256258 }
257259 }
258260 }
259-
260- #[ derive( Debug , Clone , Serialize , Deserialize , PartialEq ) ]
261- pub struct FreeformTool {
262- pub ( crate ) name : String ,
263- pub ( crate ) description : String ,
264- pub ( crate ) format : FreeformToolFormat ,
265- }
266-
267- #[ derive( Debug , Clone , Serialize , Deserialize , PartialEq ) ]
268- pub struct FreeformToolFormat {
269- pub ( crate ) r#type : String ,
270- pub ( crate ) syntax : String ,
271- pub ( crate ) definition : String ,
272- }
273-
274- #[ derive( Debug , Clone , Serialize , PartialEq ) ]
275- pub struct ResponsesApiTool {
276- pub ( crate ) name : String ,
277- pub ( crate ) description : String ,
278- /// TODO: Validation. When strict is set to true, the JSON schema,
279- /// `required` and `additional_properties` must be present. All fields in
280- /// `properties` must be present in `required`.
281- pub ( crate ) strict : bool ,
282- #[ serde( skip_serializing_if = "Option::is_none" ) ]
283- pub ( crate ) defer_loading : Option < bool > ,
284- pub ( crate ) parameters : JsonSchema ,
285- #[ serde( skip) ]
286- pub ( crate ) output_schema : Option < Value > ,
287- }
288-
289- #[ derive( Debug , Clone , Serialize , PartialEq ) ]
290- #[ serde( tag = "type" ) ]
291- pub ( crate ) enum ToolSearchOutputTool {
292- #[ allow( dead_code) ]
293- #[ serde( rename = "function" ) ]
294- Function ( ResponsesApiTool ) ,
295- #[ serde( rename = "namespace" ) ]
296- Namespace ( ResponsesApiNamespace ) ,
297- }
298-
299- #[ derive( Debug , Clone , Serialize , PartialEq ) ]
300- pub ( crate ) struct ResponsesApiNamespace {
301- pub ( crate ) name : String ,
302- pub ( crate ) description : String ,
303- pub ( crate ) tools : Vec < ResponsesApiNamespaceTool > ,
304- }
305-
306- #[ derive( Debug , Clone , Serialize , PartialEq ) ]
307- #[ serde( tag = "type" ) ]
308- pub ( crate ) enum ResponsesApiNamespaceTool {
309- #[ serde( rename = "function" ) ]
310- Function ( ResponsesApiTool ) ,
311- }
312261}
313262
314263pub struct ResponseStream {
0 commit comments