MCPcopy Create free account
hub / github.com/ScriptedAlchemy/tracedecay / flush_turn_usage

Function flush_turn_usage

src/sessions/codex.rs:950–976  ·  view source on GitHub ↗

Attach the finished turn's summed usage to the most recent assistant message of the batch (the reply the turn's `token_count` events report on), merging additively when that message already carries usage.

(messages: &mut [SessionMessageRecord], turn_usage: &mut CodexTurnUsage)

Source from the content-addressed store, hash-verified

948/// message of the batch (the reply the turn's `token_count` events report
949/// on), merging additively when that message already carries usage.
950fn flush_turn_usage(messages: &mut [SessionMessageRecord], turn_usage: &mut CodexTurnUsage) {
951 let Some(usage) = turn_usage.take() else {
952 return;
953 };
954 let Some(message) = messages
955 .iter_mut()
956 .rev()
957 .find(|message| message.role == "assistant")
958 else {
959 return;
960 };
961 let mut metadata = message
962 .metadata_json
963 .as_deref()
964 .and_then(|raw| serde_json::from_str::<Value>(raw).ok())
965 .and_then(|value| value.as_object().cloned())
966 .unwrap_or_default();
967 match metadata.get_mut("usage") {
968 Some(existing) => merge_usage_counters(existing, &usage),
969 None => {
970 metadata.insert("usage".to_string(), usage);
971 }
972 }
973 if let Ok(serialized) = serde_json::to_string(&Value::Object(metadata)) {
974 message.metadata_json = Some(serialized);
975 }
976}

Callers 1

parse_newMethod · 0.85

Calls 3

merge_usage_countersFunction · 0.85
insertMethod · 0.80
takeMethod · 0.45

Tested by

no test coverage detected