1use serde_json::Value;
2
3pub fn get_last_segment(blocks: &Value) -> Option<&Value> {
4 let prompt_left_blocks = blocks
5 .as_array()?
6 .iter()
7 .filter(|block| block["alignment"] == "left" || block["type"] == "prompt")
8 .map(|block| &block["segments"]);
9 prompt_left_blocks.last()?.as_array()?.last()
10}
11
12pub fn alter_omp_json(json: &mut Value) {
13 let last_segment = get_last_segment(&json["blocks"])
14 .expect("Cannot find last segment for given ")
15 .clone();
16 json.as_object_mut()
17 .unwrap()
18 .insert("transient_prompt".to_owned(), last_segment);
19}