ext/web-search/src/schema.rs
36 lines
use codex_api::SearchCommands;use schemars::r#gen::SchemaSettings;use serde_json::Map;use serde_json::Value;pub(crate) fn commands_schema() -> Value { let schema = SchemaSettings::draft2019_09() .with(|settings| { settings.inline_subschemas = true; settings.option_add_null_type = false; }) .into_generator() .into_root_schema_for::<SearchCommands>(); let schema = match serde_json::to_value(schema) { Ok(schema) => schema, Err(err) => panic!("search commands schema should serialize: {err}"), }; let Value::Object(mut schema) = schema else { unreachable!("search commands schema must be an object"); }; let mut tool_schema = Map::new(); for key in [ "properties", "required", "type", "additionalProperties", "$defs", "definitions", ] { if let Some(value) = schema.remove(key) { tool_schema.insert(key.to_string(), value); } } Value::Object(tool_schema)}