use serde_json::{Map, Value};
pub(crate) fn ensure_field(
object: &mut Map<String, Value>,
key: &str,
default: impl FnOnce() -> Value,
) {
if !object.contains_key(key) {
object.insert(key.to_string(), default());
}
}
pub(crate) fn scrub_request_id_fields_from_extra(extra: &mut Option<Value>) {
let Some(Value::Object(object)) = extra.as_mut() else {
return;
};
for key in [
"id",
"completion_id",
"completionId",
"response_id",
"responseId",
] {
object.remove(key);
}
if object.is_empty() {
*extra = None;
}
}